14. Protocols
14.1. HTTP
Module Protocols.HTTP
- Constant
response_codes
constantProtocols.HTTP.response_codes- Description
Mapping from
StatusCodeto descriptive string.- See also
StatusCode
- Method
delete_url
.Querydelete_url(string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Sends a HTTP DELETE request to the server in the URL and returns the created and initialized
Queryobject.0is returned upon failure. If a query object havingrequest_headers->Connection=="Keep-Alive"from a previous request is provided and the already established server connection can be used for the next request, you may gain some performance.
- Method
do_async_method
voiddo_async_method(stringmethod,string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,Protocols.HTTP.Querycon,void|stringdata)- Description
Low level asynchronous HTTP call method.
- Parameter
method The HTTP method to use, e.g.
"GET".- Parameter
url The URL to perform
methodon. Should be a complete URL, including protocol, e.g."https://pike.lysator.liu.se/".- Parameter
query_variables Calls
http_encode_queryand appends the result to the URL.- Parameter
request_headers The HTTP headers to be added to the request. By default the headers User-agent, Host and, if needed by the url, Authorization will be added, with generated contents. Providing these headers will override the default. Setting the value to 0 will remove that header from the request.
- Parameter
con Previously initialized connection object. In particular the callbacks must have been set (
Query.set_callbacks()).- Parameter
data Data payload to be transmitted in the request.
- See also
do_method(),Query.set_callbacks()
- Method
do_async_proxied_method
voiddo_async_proxied_method(string|Standards.URIproxy,stringuser,stringpassword,stringmethod,string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,Protocols.HTTP.Querycon,void|stringdata)- Description
Low level asynchronous proxied HTTP call method.
Makes an HTTP request through a proxy.
- Parameter
proxy URL for the proxy.
- Parameter
user - Parameter
password Proxy authentication credentials.
- Parameter
method The HTTP method to use, e.g.
"GET".- Parameter
url The URL to perform
methodon. Should be a complete URL, including protocol, e.g."https://pike.lysator.liu.se/".- Parameter
query_variables Calls
http_encode_queryand appends the result to the URL.- Parameter
request_headers The HTTP headers to be added to the request. By default the headers User-agent, Host and, if needed by the url, Authorization will be added, with generated contents. Providing these headers will override the default. Setting the value to 0 will remove that header from the request.
- Parameter
con Previously initialized connection object. In particular the callbacks must have been set (
Query.set_callbacks()).- Parameter
data Data payload to be transmitted in the request.
- See also
do_async_method(),do_proxied_method(),Query.set_callbacks()
- Method
do_method
.Query|zerodo_method(stringmethod,string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon,void|stringdata)- Description
Low level HTTP call method.
- Parameter
method The HTTP method to use, e.g.
"GET".- Parameter
url The URL to perform
methodon. Should be a complete URL, including protocol, e.g."https://pike.lysator.liu.se/".- Parameter
query_variables Calls
http_encode_queryand appends the result to the URL.- Parameter
request_headers The HTTP headers to be added to the request. By default the headers User-agent, Host and, if needed by the url, Authorization will be added, with generated contents. Providing these headers will override the default. Setting the value to 0 will remove that header from the request.
- Parameter
con Old connection object.
- Parameter
data Data payload to be transmitted in the request.
- See also
do_sync_method()
- Method
do_proxied_method
.Querydo_proxied_method(string|Standards.URIproxy,stringuser,stringpassword,stringmethod,string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon,void|stringdata)- Description
Makes an HTTP request through a proxy.
- Parameter
proxy URL for the proxy.
- Parameter
user - Parameter
password Proxy authentication credentials.
- Parameter
method - Parameter
url - Parameter
query_variables - Parameter
request_headers - Parameter
con - Parameter
data The remaining arguments are identical to
do_method().- See also
do_method(),do_async_proxied_method()
- Method
get_url
.Queryget_url(string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Sends a HTTP GET request to the server in the URL and returns the created and initialized
Queryobject.0is returned upon failure. If a query object havingrequest_headers->Connection=="Keep-Alive"from a previous request is provided and the already established server connection can be used for the next request, you may gain some performance.
- Method
get_url_data
stringget_url_data(string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Returns the returned data after calling the requested server for information through HTTP GET.
0is returned upon failure. Redirects (HTTP 302) are automatically followed.
- Method
get_url_nice
array(string)|zeroget_url_nice(string|Standards.URIurl,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Returns an array of
({content_type, data})after calling the requested server for the information.0is returned upon failure. Redirects (HTTP 302) are automatically followed.
- Method
http_encode_query
stringhttp_encode_query(mapping(string:int|string|array(string))variables)- Description
Encodes a query mapping to a string; this protects odd - in http perspective - characters like '&' and '#' and control characters, and packs the result together in a HTTP query string.
Example:
> Protocols.HTTP.http_encode_query( (["anna":"eva","lilith":"blue"]) ); Result: "lilith=blue&anna=eva" > Protocols.HTTP.http_encode_query( (["&":"&","'=\"":"\0\0\0\u0434"]) ); Result: "%27%3D%22=%00%00%00%D0%B4&%26amp%3B=%26"
- Method
iri_encode
stringiri_encode(strings)- Description
Encodes the given string using %XX encoding to be used as a component part in an IRI (Internationalized Resource Identifier, see RFC 3987). This means that all chars outside the IRI iunreserved set are encoded, i.e. this function encodes equivalently to
uri_encodeexcept that all 8-bit and wider characters are left as-is.- Bugs
This function currently does not encode chars in the Unicode private ranges, although that is strictly speaking required in some but not all IRI components. That could change if it turns out to be a problem.
- See also
percent_decode,uri_encode
- Method
percent_decode
stringpercent_decode(strings)- Description
Decodes URI-style %XX encoded chars in the given string.
- See also
percent_encode,uri_decode- Bugs
This function currently does not accept wide string input, which is necessary to work as the reverse of
iri_encode.
- Method
percent_encode
stringpercent_encode(strings)- Description
Encodes the given string using %XX encoding, except that URI unreserved chars are not encoded. The unreserved chars are A-Z, a-z, 0-9, -, ., _, and ~ (see RFC 2396 section 2.3).
8-bit chars are encoded straight, and wider chars are not allowed. That means this encoding is applicable if
sis a binary octet string. If it is a character string thenuri_encodeshould be used instead.It is also slightly faster than
uri_encodeifsis known to contain only US-ASCII.
- Method
post_url
.Querypost_url(string|Standards.URIurl,mapping(string:int|string|array(string))|stringquery_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Similar to
get_url, except that query variables is sent as a POST request instead of a GET request. If query_variables is a simple string, it is assumed to contain the verbatim body of the POST request; Content-Type must be properly specified manually, in this case.
- Method
post_url_data
stringpost_url_data(string|Standards.URIurl,mapping(string:int|string|array(string))|stringquery_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Similar to
get_url_data, except that query variables is sent as a POST request instead of a GET request.
- Method
post_url_nice
array(string) post_url_nice(string|Standards.URIurl,mapping(string:int|string|array(string))|stringquery_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Similar to
get_url_nice, except that query variables is sent as a POST request instead of a GET request.
- Method
put_url
.Queryput_url(string|Standards.URIurl,void|stringfile,void|mapping(string:int|string|array(string))query_variables,void|mapping(string:string|array(string)|int)request_headers,void|Protocols.HTTP.Querycon)- Description
Sends a HTTP PUT request to the server in the URL and returns the created and initialized
Queryobject.0is returned upon failure. If a query object havingrequest_headers->Connection=="Keep-Alive"from a previous request is provided and the already established server connection can be used for the next request, you may gain some performance.
- Method
quoted_string_decode
stringquoted_string_decode(strings)- Description
Decodes the given string which has been encoded as a quoted-string according to RFC 2616 section 2.2.
sis assumed to not include the surrounding " chars.- See also
quoted_string_encode
- Method
quoted_string_encode
stringquoted_string_encode(strings)- Description
Encodes the given string quoted to be used as content inside a quoted-string according to RFC 2616 section 2.2. The returned string does not include the surrounding " chars.
- Note
The quoted-string quoting rules in RFC 2616 have several problems:
Quoting is inconsistent since " is quoted as \", but \ does not need to be quoted. This is resolved in the HTTP bis update to mandate quoting of \ too, which this function performs.
Many characters are not quoted sufficiently to make the result safe to use in an HTTP header, so this quoting is not enough if
scontains NUL, CR, LF, or any 8-bit or wider character.
- See also
quoted_string_decode
- Method
uri_decode
stringuri_decode(strings)- Description
Decodes URI-style %XX encoded chars in the given string, and then UTF-8 decodes the result. This is the reverse of
uri_encodeanduri_encode_invalids.- See also
uri_encode,uri_encode_invalids
- Method
uri_encode
stringuri_encode(strings)- Description
Encodes the given string using %XX encoding to be used as a component part in a URI. This means that all URI reserved and excluded characters are encoded, i.e. everything except A-Z, a-z, 0-9, -, ., _, and ~ (see RFC 2396 section 2.3).
8-bit chars and wider are encoded using UTF-8 followed by percent-encoding. This follows RFC 3986 section 2.5, the IRI-to-URI conversion method in the IRI standard (RFC 3987) and appendix B.2 in the HTML 4.01 standard. It should work regardless of the charset used in the XML document the URI might be inserted into.
- See also
uri_decode,uri_encode_invalids,iri_encode
- Method
uri_encode_invalids
stringuri_encode_invalids(strings)- Description
Encodes all "dangerous" chars in the given string using %XX encoding, so that it can be included as a URI in an HTTP message or header field. This includes control chars, space and various delimiter chars except those in the URI reserved set (RFC 2396 section 2.2).
Since this function doesn't touch the URI reserved chars nor the escape char %, it can be used on a complete formatted URI or IRI.
8-bit chars and wider are encoded using UTF-8 followed by percent-encoding. This follows RFC 3986 section 2.5, the IRI standard (RFC 3987) and appendix B.2 in the HTML 4.01 standard.
- Note
The characters in the URI reserved set are: :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =. In addition, this function doesn't touch the escape char %.
- See also
uri_decode,uri_encode
Enum Protocols.HTTP.StatusCode
- Description
HTTP Status codes.
- See also
response_codes, https://www.iana.org/assignments/http-status-codes/http-status-codes.txt
- Constant
DAV_ALREADY_REPORTED
constantProtocols.HTTP.DAV_ALREADY_REPORTED- Description
RFC 5842 section 7.1: 208 Already Reported
- Constant
DAV_FAILED_DEP
constantProtocols.HTTP.DAV_FAILED_DEP- Description
RFC 2518 section 10.5: 424 Failed Dependency
- Constant
DAV_LOCKED
constantProtocols.HTTP.DAV_LOCKED- Description
RFC 2518 section 10.4: 423 Locked
- Constant
DAV_LOOP_DETECTED
constantProtocols.HTTP.DAV_LOOP_DETECTED- Description
RFC 5842 section 7.2: 508 Loop Detected
- Constant
DAV_MULTISTATUS
constantProtocols.HTTP.DAV_MULTISTATUS- Description
RFC 2518 section 10.2: 207 Multi-Status
- Constant
DAV_PROCESSING
constantProtocols.HTTP.DAV_PROCESSING- Description
RFC 2518 section 10.1: 102 Processing
- Constant
DAV_STORAGE_FULL
constantProtocols.HTTP.DAV_STORAGE_FULL- Description
RFC 2518 section 10.6: 507 Insufficient Storage
- Constant
DAV_UNPROCESSABLE
constantProtocols.HTTP.DAV_UNPROCESSABLE- Description
RFC 2518 section 10.3: 422 Unprocessable Entry
- Constant
DELTA_HTTP_IM_USED
constantProtocols.HTTP.DELTA_HTTP_IM_USED- Description
RFC 3229 section 10.4.1: 226 IM Used
- Constant
HTCPCP_TEAPOT
constantProtocols.HTTP.HTCPCP_TEAPOT- Description
RFC 2324 section 2.3.2: 418 I'm a teapot
- Constant
HTTP_ACCEPTED
constantProtocols.HTTP.HTTP_ACCEPTED- Description
RFC 2616 section 10.2.3: 202 Accepted
- Constant
HTTP_BAD
constantProtocols.HTTP.HTTP_BAD- Description
RFC 2616 section 10.4.1: 400 Bad Request
- Constant
HTTP_BAD_GW
constantProtocols.HTTP.HTTP_BAD_GW- Description
RFC 2616 section 10.5.3: 502 Bad Gateway
- Constant
HTTP_BAD_RANGE
constantProtocols.HTTP.HTTP_BAD_RANGE- Description
RFC 2616 section 10.4.17: 416 Requested Range Not Satisfiable
- Constant
HTTP_CONFLICT
constantProtocols.HTTP.HTTP_CONFLICT- Description
RFC 2616 section 10.4.10: 409 Conflict
- Constant
HTTP_CONTINUE
constantProtocols.HTTP.HTTP_CONTINUE- Description
RFC 2616 section 10.1.1: 100 Continue
- Constant
HTTP_CREATED
constantProtocols.HTTP.HTTP_CREATED- Description
RFC 2616 section 10.2.2: 201 Created
- Constant
HTTP_EARLY_HINTS
constantProtocols.HTTP.HTTP_EARLY_HINTS- Description
RFC 8297 section 2: 103 Early Hints
- Constant
HTTP_EXPECT_FAILED
constantProtocols.HTTP.HTTP_EXPECT_FAILED- Description
RFC 2616 section 10.4.18: 417 Expectation Failed
- Constant
HTTP_FORBIDDEN
constantProtocols.HTTP.HTTP_FORBIDDEN- Description
RFC 2616 section 10.4.4: 403 Forbidden
- Constant
HTTP_FOUND
constantProtocols.HTTP.HTTP_FOUND- Description
RFC 2616 section 10.3.3: 302 Found
- Constant
HTTP_GONE
constantProtocols.HTTP.HTTP_GONE- Description
RFC 2616 section 10.4.11: 410 Gone
- Constant
HTTP_GW_TIMEOUT
constantProtocols.HTTP.HTTP_GW_TIMEOUT- Description
RFC 2616 section 10.5.5: 504 Gateway Timeout
- Constant
HTTP_HEADERS_TOO_LARGE
constantProtocols.HTTP.HTTP_HEADERS_TOO_LARGE- Description
RFC 6585 section 5: 431 Request Header Fields Too Large
- Constant
HTTP_INTERNAL_ERR
constantProtocols.HTTP.HTTP_INTERNAL_ERR- Description
RFC 2616 section 10.5.1: 500 Internal Server Error
- Constant
HTTP_LEGALLY_RESTRICTED
constantProtocols.HTTP.HTTP_LEGALLY_RESTRICTED- Description
RFC 7725 section 3: 451 Unavailable For Legal Reasons
- Constant
HTTP_LENGTH_REQ
constantProtocols.HTTP.HTTP_LENGTH_REQ- Description
RFC 2616 section 10.4.12: 411 Length Required
- Constant
HTTP_METHOD_INVALID
constantProtocols.HTTP.HTTP_METHOD_INVALID- Description
RFC 2616 section 10.4.6: 405 Method Not Allowed
- Constant
HTTP_MISDIRECTED_REQ
constantProtocols.HTTP.HTTP_MISDIRECTED_REQ- Description
RFC 7540 section 9.1.2: 421 Misdirected Request
- Constant
HTTP_MOVED_PERM
constantProtocols.HTTP.HTTP_MOVED_PERM- Description
RFC 2616 section 10.3.2: 301 Moved Permanently
- Constant
HTTP_MULTIPLE
constantProtocols.HTTP.HTTP_MULTIPLE- Description
RFC 2616 section 10.3.1: 300 Multiple Choices
- Constant
HTTP_NET_AUTH_REQUIRED
constantProtocols.HTTP.HTTP_NET_AUTH_REQUIRED- Description
RFC 6585 section 6: 511 Network Authentication Required
- Constant
HTTP_NONAUTHORATIVE
constantProtocols.HTTP.HTTP_NONAUTHORATIVE- Description
RFC 2616 section 10.2.4: 203 Non-Authorative Information
- Constant
HTTP_NOT_ACCEPTABLE
constantProtocols.HTTP.HTTP_NOT_ACCEPTABLE- Description
RFC 2616 section 10.4.7: 406 Not Acceptable
- Constant
HTTP_NOT_EXTENDED
constantProtocols.HTTP.HTTP_NOT_EXTENDED- Description
RFC 2774 section 7: 510 Not Extended (obsolete)
- Constant
HTTP_NOT_FOUND
constantProtocols.HTTP.HTTP_NOT_FOUND- Description
RFC 2616 section 10.4.5: 404 Not Found
- Constant
HTTP_NOT_IMPL
constantProtocols.HTTP.HTTP_NOT_IMPL- Description
RFC 2616 section 10.5.2: 501 Not Implemented
- Constant
HTTP_NOT_MODIFIED
constantProtocols.HTTP.HTTP_NOT_MODIFIED- Description
RFC 2616 section 10.3.5: 304 Not Modified
- Constant
HTTP_NO_CONTENT
constantProtocols.HTTP.HTTP_NO_CONTENT- Description
RFC 2616 section 10.2.5: 204 No Content
- Constant
HTTP_OK
constantProtocols.HTTP.HTTP_OK- Description
RFC 2616 section 10.2.1: 200 OK
- Constant
HTTP_PARTIAL_CONTENT
constantProtocols.HTTP.HTTP_PARTIAL_CONTENT- Description
RFC 2616 section 10.2.7: 206 Partial Content
- Constant
HTTP_PAY
constantProtocols.HTTP.HTTP_PAY- Description
RFC 2616 section 10.4.3: 402 Payment Required
- Constant
HTTP_PERM_REDIRECT
constantProtocols.HTTP.HTTP_PERM_REDIRECT- Description
RFC 7538 section 3: 308 Permanent Redirect
- Constant
HTTP_PRECOND_FAILED
constantProtocols.HTTP.HTTP_PRECOND_FAILED- Description
RFC 2616 section 10.4.13: 412 Precondition Failed
- Constant
HTTP_PRECOND_REQUIRED
constantProtocols.HTTP.HTTP_PRECOND_REQUIRED- Description
RFC 6585 section 3: 428 Precondition required
- Constant
HTTP_PROXY_AUTH_REQ
constantProtocols.HTTP.HTTP_PROXY_AUTH_REQ- Description
RFC 2616 section 10.4.8: 407 Proxy Authentication Required
- Constant
HTTP_REQ_TOO_LARGE
constantProtocols.HTTP.HTTP_REQ_TOO_LARGE- Description
RFC 2616 section 10.4.14: 413 Request Entity Too Large
- Constant
HTTP_RESET_CONTENT
constantProtocols.HTTP.HTTP_RESET_CONTENT- Description
RFC 2616 section 10.2.6: 205 Reset Content
- Constant
HTTP_SEE_OTHER
constantProtocols.HTTP.HTTP_SEE_OTHER- Description
RFC 2616 section 10.3.4: 303 See Other
- Constant
HTTP_SWITCH_PROT
constantProtocols.HTTP.HTTP_SWITCH_PROT- Description
RFC 2616 section 10.1.2: 101 Switching protocols
- Constant
HTTP_TEMP_REDIRECT
constantProtocols.HTTP.HTTP_TEMP_REDIRECT- Description
RFC 2616 section 10.3.8: 307 Temporary Redirect
- Constant
HTTP_TIMEOUT
constantProtocols.HTTP.HTTP_TIMEOUT- Description
RFC 2616 section 10.4.9: 408 Request Timeout
- Constant
HTTP_TOO_MANY_REQUESTS
constantProtocols.HTTP.HTTP_TOO_MANY_REQUESTS- Description
RFC 6585 section 4: 429 Too Many Requests
- Constant
HTTP_UNAUTH
constantProtocols.HTTP.HTTP_UNAUTH- Description
RFC 2616 section 10.4.2: 401 Unauthorized
- Constant
HTTP_UNAVAIL
constantProtocols.HTTP.HTTP_UNAVAIL- Description
RFC 2616 section 10.5.4: 503 Service Unavailable
- Constant
HTTP_UNSUPP_MEDIA
constantProtocols.HTTP.HTTP_UNSUPP_MEDIA- Description
RFC 2616 section 10.4.16: 415 Unsupported Media Type
- Constant
HTTP_UNSUPP_VERSION
constantProtocols.HTTP.HTTP_UNSUPP_VERSION- Description
RFC 2616 section 10.5.6: 505 HTTP Version Not Supported
- Constant
HTTP_URI_TOO_LONG
constantProtocols.HTTP.HTTP_URI_TOO_LONG- Description
RFC 2616 section 10.4.15: 414 Request-URI Too Long
- Constant
HTTP_USE_PROXY
constantProtocols.HTTP.HTTP_USE_PROXY- Description
RFC 2616 section 10.3.6: 305 Use Proxy
- Constant
TCN_VARIANT_NEGOTIATES
constantProtocols.HTTP.TCN_VARIANT_NEGOTIATES- Description
RFC 2295 section 8.1: 506 Variant Also Negotiates
- Constant
TLS_TOO_EARLY
constantProtocols.HTTP.TLS_TOO_EARLY- Description
RFC 8470 section 5.2: 425 Too Early
- Constant
TLS_UPGRADE_REQUIRED
constantProtocols.HTTP.TLS_UPGRADE_REQUIRED- Description
RFC 2817 section 4.2: 426 Upgrade Required
Class Protocols.HTTP.Query
- Description
Open and execute an HTTP query.
- Example
HTTP.Query o=HTTP.Query();
void ok() { write("ok...\n"); write("%O\n", o->headers); exit(0); }
void fail() { write("fail\n"); exit(0); }
int main() { o->set_callbacks(ok, fail); o->async_request("pike.lysator.liu.se", 80, "HEAD / HTTP/1.0"); return -1; }
- Variable
errno
intProtocols.HTTP.Query.errno- Description
Errno copied from the connection or simulated for async operations.
- Note
In Pike 7.8 and earlier hardcoded Linux values were used in async operations, 110 instead of
System.ETIMEDOUTand 113 instead ofSystem.EHOSTUNREACH.
- Variable
headers
mappingProtocols.HTTP.Query.headers- Description
Headers as a mapping. All header names are in lower case, for convinience.
- Variable
host
Variable real_host
Variable port stringProtocols.HTTP.Query.hoststringProtocols.HTTP.Query.real_hostintProtocols.HTTP.Query.port- Description
Connected host and port.
Used to detect whether keep-alive can be used.
- Variable
hostname_cache
mapping(string:array(string)) Protocols.HTTP.Query.hostname_cache- Description
Set this to a global mapping if you want to use a cache, prior of calling *request().
- Variable
timeout
Variable maxtime intProtocols.HTTP.Query.timeoutintProtocols.HTTP.Query.maxtime- Description
timeoutis the time to wait in seconds on connection and/or data. If data is fetched asynchronously the watchdog will be reset every time data is received. Defaults to 120 seconds.maxtimeis the time the entire operation is allowed to take, no matter if the connection and data fetching is successful. This is by default indefinitely.- Note
These values only have effect in asynchroneous calls
- Variable
status
Variable status_desc intProtocols.HTTP.Query.statusstringProtocols.HTTP.Query.status_desc- Description
Status number and description (eg
200and"ok").
- Method
`()
intres =Protocols.HTTP.Query()()- Description
Wait for connection to complete.
- Returns
Returns
1on successfull connection,0on failure.
- Method
async_fetch
voidasync_fetch(function(:void)callback,mixed...extra)- Description
Fetch all data in background.
- See also
timed_async_fetch(),async_request(),set_callbacks()
- Method
set_callbacks
Method async_request Protocols.HTTP.Queryset_callbacks(function(:void)|zerorequest_ok,function(:void)|zerorequest_fail,mixed...extra)Protocols.HTTP.Queryasync_request(stringserver,intport,stringquery)Protocols.HTTP.Queryasync_request(stringserver,intport,stringquery,mappingheaders,string|voiddata)- Description
Setup and run an asynchronous request, otherwise similar to
thread_request().request_ok(Protocols.HTTP.Query httpquery,...extra args) will be called when connection is complete, and headers are parsed.request_fail(Protocols.HTTP.Query httpquery,...extra args) is called if the connection fails.- Returns
Returns the called object
- Method
cast
(array)Protocols.HTTP.Query()- Returns
Array mapping0Headers
string1Data
string2Protocol
int3Status
string4Status description
- Method
cast
(mapping)Protocols.HTTP.Query()- Returns
The header mapping ORed with the following mapping.
"protocol":stringThe protocol.
"status":intThe status code.
"status_desc":stringThe status description.
"data":stringThe returned data.
- Method
datafile
Protocols.HTTP.Query.PseudoFiledatafile()- Description
Gives back a pseudo-file object, with the methods
read()andclose(). This could be used to copy the file to disc at a proper tempo.datafile()doesn't give the complete request, just the data.- See also
file()
- Method
file
Protocols.HTTP.Query.PseudoFilefile()Protocols.HTTP.Query.PseudoFilefile(mappingnewheaders,void|mappingremoveheaders)- Description
Gives back a pseudo-file object, with the methods
read()andclose(). This could be used to copy the file to disc at a proper tempo.newheaders,removeheadersis applied as:(oldheaders|newheaders))-removeheadersMake sure all new and remove-header indices are lower case.- See also
datafile()
- Method
ponder_answer
protectedintponder_answer(int|voidstart_position)- Description
Attempt to read the result header block from
bufandcon.- Returns
0Returns
0if the header block has not yet been received.1Sets
headerbufto the raw header block andheadersto the parsed header block, calls therequest_okcallback (if any) and returns1on successful read of the header block.- Note
The data part of the result may still be pending on
1return.
- Method
thread_request
Protocols.HTTP.Querythread_request(stringserver,intport,stringquery)Protocols.HTTP.Querythread_request(stringserver,intport,stringquery,mappingheaders,void|stringdata)- Description
Create a new query object and begin the query.
The query is executed in a background thread; call
`()in the object to wait for the request to complete.queryis the first line sent to the HTTP server; for instance"GET /index.html HTTP/1.1".headerswill be encoded and sent after the first line, anddatawill be sent after the headers.- Returns
Returns the called object.
- Method
timed_async_fetch
voidtimed_async_fetch(function(this_program,__unknown__... :void)ok_callback,function(this_program,__unknown__... :void)fail_callback,mixed...extra)- Description
Like
async_fetch(), except with a timeout and a corresponding fail callback function.- See also
async_fetch(),async_request(),set_callbacks()
- Method
total_bytes
inttotal_bytes()- Description
Gives back the size of a file if a content-length header is present and parsed at the time of evaluation. Otherwise returns -1.
- Method
unicode_data
stringunicode_data()- Description
Gives back data, but decoded according to the content-type character set.
- See also
data
Class Protocols.HTTP.Query.PseudoFile
- Description
Minimal simulation of a
Stdio.Fileobject.Objects of this class are returned by
file()anddatafile().- Note
Do not attempt further queries using this
Queryobject before having read all data.
Class Protocols.HTTP.Session
- Typedef
URL
typedefstring|Standards.URI|SessionURLProtocols.HTTP.Session.URL- Description
A URL which is either a string a
Standards.URIor aSessionURL.
- Variable
default_headers
mappingProtocols.HTTP.Session.default_headers- Description
Default HTTP headers.
- Variable
follow_redirects
intProtocols.HTTP.Session.follow_redirects- Description
The number of redirects to follow, if any. This is the default to the created Request objects.
A redirect automatically turns into a GET request, and all header, query, post or put information is dropped.
Default is 20 redirects. A negative number will mean infinity.
- Bugs
Loops will currently not be detected, only the limit works to stop loops.
- See also
Request.follow_redirects
- Variable
hostname_cache
mappingProtocols.HTTP.Session.hostname_cache- Description
Cache of hostname to IP lookups. Given to and used by the
Queryobjects.
- Variable
maximum_connection_reuse
intProtocols.HTTP.Session.maximum_connection_reuse- Description
Maximum times a connection is reused. Defaults to 1000000. <2 means no reuse at all.
- Variable
maximum_connections_per_server
intProtocols.HTTP.Session.maximum_connections_per_server- Description
Maximum number of connections to the same server. Used only by async requests. Defaults to 10 connections.
- Variable
maximum_total_connections
intProtocols.HTTP.Session.maximum_total_connections- Description
Maximum total number of connections. Limits only async requests, and the number of kept-alive connections (live connections + kept-alive connections <= this number) Defaults to 50 connections.
- Variable
time_to_keep_unused_connections
int|floatProtocols.HTTP.Session.time_to_keep_unused_connections- Description
The time to keep unused connections in seconds. Set to zero to never save any kept-alive connections. (Might be good in a for instance totaly synchroneous script that keeps the backend thread busy and never will get call_outs.) Defaults to 10 seconds.
- Method
async_get_url
Method async_put_url
Method async_delete_url
Method async_post_url Requestasync_get_url(URLurl,void|mappingquery_variables,function(:void)|zerocallback_headers_ok,function(:void)|zerocallback_data_ok,function(:void)|zerocallback_fail,mixed...callback_arguments)Requestasync_put_url(URLurl,void|stringfile,void|mappingquery_variables,function(:void)|zerocallback_headers_ok,function(:void)|zerocallback_data_ok,function(:void)|zerocallback_fail,mixed...callback_arguments)Requestasync_delete_url(URLurl,void|mappingquery_variables,function(:void)|zerocallback_headers_ok,function(:void)|zerocallback_data_ok,function(:void)|zerocallback_fail,mixed...callback_arguments)Requestasync_post_url(URLurl,mappingquery_variables,function(:void)|zerocallback_headers_ok,function(:void)|zerocallback_data_ok,function(:void)|zerocallback_fail,mixed...callback_arguments)- Description
Sends a HTTP GET, POST, PUT or DELETE request to the server in the URL asynchroneously, and call the corresponding callbacks when result arrives (or not). The callbacks will receive the created Request object as first argument, then the given
callback_arguments, if any.callback_headers_okis called when the HTTP request has received headers.callback_data_okis called when the HTTP request has been received completely, data and all.callback_failis called when the HTTP request has failed, on a TCP/IP or DNS level, or has received a forced timeout.The created Request object is returned.
- Method
encode_cookies
Method decode_cookies stringencode_cookies()voiddecode_cookies(stringdata,voidno_clear)- Description
Dump all cookies to a string and read them back. This is useful to store cookies in between sessions (on disk, for instance).
decode_cookieswill throw an error upon parse failures. Also note,decode_cookieswill clear out any previously learned cookies from theSessionobject, unless no_clear is given and true.
- Method
get_url
Method post_url
Method put_url
Method delete_url Requestget_url(URLurl,void|mappingquery_variables)Requestpost_url(URLurl,mapping|stringquery_variables)Requestput_url(URLurl,stringfile,void|mappingquery_variables)Requestdelete_url(URLurl,void|mappingquery_variables)- Description
Sends a HTTP GET, POST, PUT or DELETE request to the server in the URL and returns the created and initialized
Requestobject. 0 is returned upon failure.
- Method
get_cookies
array(string) get_cookies(Standards.URI|SessionURLfor_url,void|boolno_delete)- Description
Get the cookies that we should send to this server, for this url. They are presented in the form suitable for HTTP headers (as an array). This will also take in count expiration of cookies, and delete expired cookies from the
Sessionunlessno_deleteis true.
- Method
get_url_nice
Method get_url_data
Method post_url_nice
Method post_url_data array(string) get_url_nice(URLurl,mappingquery_variables)stringget_url_data(URLurl,mappingquery_variables)array(string) post_url_nice(URLurl,mapping|stringquery_variables)stringpost_url_data(URLurl,mapping|stringquery_variables)- Description
Returns an array of
({content_type,data})and just the data string respective, after calling the requested server for the information.0is returned upon failure.post* is similar to the
get_url()class of functions, except that the query variables is sent as a POST request instead of as a GET.
- Method
give_me_connection
Querygive_me_connection(Standards.URIurl)- Description
Request a
Queryobject suitable to use for the given URL. This may be a reused object from a keep-alive connection.
- Method
return_connection
voidreturn_connection(Standards.URIurl,Queryquery)- Description
Return a previously used Query object to the keep-alive storage. This function will determine if the given object is suitable to keep or not by checking status and headers.
- Method
set_cookie
voidset_cookie(Cookiecookie,Standards.URI|zerowho)- Description
Set a cookie. The cookie will be checked against current security levels et al, using the parameter
who. Ifwhois zero, no security checks will be performed.
- Method
set_http_cookie
voidset_http_cookie(stringcookie,Standards.URIat)- Description
Parse and set a cookie received in the HTTP protocol. The cookie will be checked against current security levels et al.
Class Protocols.HTTP.Session.Request
- Description
Request
- Variable
cookie_encountered
function(string,Standards.URI:mixed|void) Protocols.HTTP.Session.Request.cookie_encountered- Description
Cookie callback. When a request is performed, the result is checked for cookie changes and additions. If a cookie is encountered, this function is called. Default is to call
set_http_cookiein theSessionobject.
- Variable
follow_redirects
intProtocols.HTTP.Session.Request.follow_redirects- Description
Number of redirects to follow; the request will perform another request if the HTTP answer is a 3xx redirect. Default from the parent
Session.follow_redirects.A redirect automatically turns into a GET request, and all header, query, post or put information is dropped.
- Bugs
Loops will currently not be detected, only the limit works to stop loops.
- Variable
url_requested
Standards.URIProtocols.HTTP.Session.Request.url_requested- Description
URL requested (set by prepare_method). This will update according to followed redirects.
- Method
_destruct
protectedvoid_destruct()- Description
_destructis called when an object is destructed.
- Method
destroy
voiddestroy()- Description
But since this clears the HTTP connection from the Request object, it can also be used to reuse a
Requestobject.
- Method
do_async
Requestdo_async(array(string|int|mapping)args)- Description
Start a request asyncroneously. It will perform in the background using callbacks (make sure the backend thread is free). Call
set_callbacksto setup the callbacks. Get arguments fromprepare_method.- Returns
The called object.
- See also
set_callbacks,prepare_method,do_sync,do_thread
- Method
do_sync
Request|zerodo_sync(array(string|int|mapping)args)- Description
Perform a request synchronously. Get arguments from
prepare_method.- Returns
0 upon failure, this object upon success
- See also
prepare_method,do_async,do_thread
- Method
do_thread
Requestdo_thread(array(string|int|mapping)args)- Description
Start a request in the background, using a thread. Call
waitto wait for the thread to finish. Get arguments fromprepare_method.- Returns
The called object.
- See also
prepare_method,do_sync,do_async,wait- Note
do_threaddoes not rerun redirections automatically
- Method
prepare_method
array(string|int|mapping) prepare_method(stringmethod,URLurl,void|mappingquery_variables,void|mappingextra_headers,void|stringdata)- Description
Prepares the HTTP Query object for the connection, and returns the parameters to use with
do_sync,do_asyncordo_thread.This method will also use cookie information from the parent
Session, and may reuse connections (keep-alive).
- Method
set_callbacks
voidset_callbacks(function(mixed... :mixed)|zeroheaders,function(mixed... :mixed)|zerodata,function(mixed... :mixed)|zerofail,mixed...callback_arguments)- Description
Setup callbacks for async mode,
headerswill be called when the request got connected, and got data headers;datawill be called when the request got the amount of data it's supposed to get andfailis called whenever the request failed.Note here that an error message from the server isn't considered a failure, only a failed TCP connection.
Class Protocols.HTTP.Session.SessionURL
- Description
Class to store URL+referer
- Typedef
URL
Module Protocols.HTTP.Authentication
- Description
This module contains various HTTP Authentication implementations for both server and client use. A Client implementation would typically call the
make_authenticatormethod with the incoming WWW-Authenticate header to get aClientobject. For each HTTP request the auth() method of the object can be called to get an appropriate Authorization header.Server code should create an authentication class and inherit the concrete authentication scheme implementation. To add an actual user lookup, overload
get_passwordorget_hashed_password. Hashed passwords must be hashed with the scheme appropriate digest.- Example
class Auth { inherit Protocols.HTTP.Authentication.DigestMD5Server; Concurrent.Future get_password(string user) { Promise p = Concurrent.Promise(); if( user == "bob" ) return p->success("builder"); return p->failure(sprintf("No user %O", user)); } }
Auth auth = Auth("apps@pike.org"); Concurrent.Future authenticate(Protocols.HTTP.Server.Request req) { Concurrent.Future authenticated = Concurrent.Promise(); auth->auth(req->request_headers->authorization, req->request_method, request->not_query) ->then(lambda(string user) { authenticated->success(user); }, lambda(string reason) { authenticated->failure(reason); string c = auth->challenge(); request->response_and_finish( ([ "error":401, "extra_heads" : ([ "WWW-Authenticate":c, ]) ]) ); }); return authenticated; }
- Method
make_authenticator
Clientmake_authenticator(string|array(string)hdrs,stringuser,stringpassword,void|stringrealm)- Description
Create an authenticator for a server responding with the given HTTP authentication header. Currently only works for one realm.
- Parameter
hdrs The WWW-Authenticate HTTP header or headers.
- Parameter
user The username to use.
- Parameter
password The plaintext password.
- Parameter
realm Optionally the realm the user and password is valid in. If omitted, the authentication will happen in whatever realm the server is presenting.
- Method
split_header
mapping(string:string) split_header(stringhdr)- Description
Split client generated Authorization header into its parts.
Class Protocols.HTTP.Authentication.BasicClient
- Description
HTTP Basic authentication client.
Class Protocols.HTTP.Authentication.Client
- Description
Abstract Client class.
Class Protocols.HTTP.Authentication.DigestClient
- Description
Abstract HTTP Digest authentication client.
Class Protocols.HTTP.Authentication.DigestMD5Client
- Description
HTTP Digest authentication client using MD5.
Class Protocols.HTTP.Authentication.DigestMD5Server
- Description
HTTP Digest server implementation using MD5.
Class Protocols.HTTP.Authentication.DigestMD5sessServer
- Description
Implements the session version "MD5-sess" of the MD5 HTTP Digest authentication. Used identically to
DigestMD5Server.
Class Protocols.HTTP.Authentication.DigestSHA256Client
- Description
HTTP Digest authentication client using SHA256.
Class Protocols.HTTP.Authentication.DigestSHA256Server
- Description
HTTP Digest server implementation using SHA256.
Class Protocols.HTTP.Authentication.DigestSHA256sessServer
- Description
Implements the session version "SHA256-sess" of the SHA256 HTTP Digest authentication. Used identically to
DigestSHA256Server.
Class Protocols.HTTP.Authentication.DigestSHA512256Client
- Description
HTTP Digest authentication client using SHA512/256.
Class Protocols.HTTP.Authentication.DigestSHA512256Server
- Description
HTTP Digest server implementation using SHA512/256.
Class Protocols.HTTP.Authentication.DigestSHA512256sessServer
- Description
Implements the session version "SHA-512-256-sess" of the SHA512/256 HTTP Digest authentication. Used identically to
DigestSHA512256Server.
Class Protocols.HTTP.Authentication.DigestServer
- Description
Abstract HTTP Digest implementation.
- Variable
realm
stringProtocols.HTTP.Authentication.DigestServer.realm- Description
The current realm of the authentication.
- Method
auth
Concurrent.Futureauth(stringhdr,stringmethod,stringpath)- Description
Authenticate a request.
- Parameter
hdr The value of the Authorization header. Zero is acceptable, but will produce an unconditional rejection.
- Parameter
method This is the HTTP method used, typically "GET" or "POST".
- Parameter
path This is the path of the request.
- Method
challenge
string(7bit)challenge()- Description
Creates a challenge header value for the WWW-Authenticate header in 401 responses.
- Method
create
Protocols.HTTP.Authentication.DigestServerProtocols.HTTP.Authentication.DigestServer(void|string(8bit)realm,void|string(8bit)key)- Parameter
realm The realm to be authenticated.
- Parameter
key If this key is set all challanges are verified against signature using this key. The key can be any 8-bit string, but should be the same across multiple instances on the same domain, and over time.
- Method
get_hashed_password
Concurrent.Futureget_hashed_password(stringuser)- Description
Function intended to be overloaded that returns a future that will resolved to the given users hashed password. Overloading this function will prevent
get_passwordfrom being called.
Module Protocols.HTTP.Promise
- Description
This HTTP client module utilises the
Concurrent.PromiseandConcurrent.Futureclasses and only does asynchronous calls.- Example
Protocols.HTTP.Promise.Arguments a1, a2; a1 =Protocols.HTTP.Promise.Arguments((["extra_args":({"Extra arg for Roxen request"}),"headers":(["User-Agent":"My Special HTTP Client"])])); a2 =Protocols.HTTP.Promise.Arguments((["variables":(["q":"Pike programming language"]),"maxtime": 10 ]));Concurrent.Future q1 =Protocols.HTTP.Promise.get_url("http://www.roxen.com", a1);Concurrent.Future q2 =Protocols.HTTP.Promise.get_url("http://www.google.com", a2);array(Concurrent.Future) all =({ q1, q2 });/* To get a callback for each of the requests */ all->on_success(lambda(Protocols.HTTP.Promise.Result ok_resp){ werror("Got successful response for %O\n", ok_resp->host);}); all->on_failure(lambda(Protocols.HTTP.Promise.Result failed_resp){ werror("Request for %O failed!\n", failed_resp->host);});/* To get a callback when all of the requests are done. In this case on_failure will be called if any of the request fails. */Concurrent.Future all2 =Concurrent.results(all); all2->on_success(lambda(array(Protocols.HTTP.Promise.Result) ok_resp){ werror("All request were successful: %O\n", ok_resp);}); all->on_failure(lambda(Protocols.HTTP.Promise.Result failed_resp){ werror("The request to %O failed.\n", failed_resp->host);});
- Method
get_url
Method post_url
Method put_url
Method delete_url Concurrent.Futureget_url(Protocols.HTTP.Session.URLurl,void|Argumentsargs)Concurrent.Futurepost_url(Protocols.HTTP.Session.URLurl,void|Argumentsargs)Concurrent.Futureput_url(Protocols.HTTP.Session.URLurl,void|Argumentsargs)Concurrent.Futuredelete_url(Protocols.HTTP.Session.URLurl,void|Argumentsargs)- Description
Sends a GET, POST, PUT or DELETE request to
urlasynchronously. AConcurrent.Futureobject is returned on which you can register callbacks viaConcurrent.Future->on_success()andConcurrent.Future.on_failure()which will get aResultobject as argument.For an example of usage see
Protocols.HTTP.Promise
- Method
do_method
Concurrent.Futuredo_method(stringhttp_method,Protocols.HTTP.Session.URLurl,void|Argumentsargs)- Description
Fetch an URL with the
http_methodmethod.
- Method
set_timeout
Method set_maxtime voidset_timeout(intt)voidset_maxtime(intt)- Description
set_timeout()sets the default timeout for connecting and data fetching. The watchdog will be reset each time data is fetched.set_maxtime()sets the timeout for the entire operation. If this is set to 30 seconds for instance, the request will be aborted after 30 seconds event if data is still being received. By default this is indefinitely.tis the timeout in seconds.- See also
Arguments
Class Protocols.HTTP.Promise.Arguments
- Description
Class representing the arguments to give to
get_url(),post_url()put_url(),delete_url()anddo_method().
- Variable
extra_args
array(mixed) Protocols.HTTP.Promise.Arguments.extra_args- Description
Extra arguments that will end up in the
Resultobject
- Variable
follow_redirects
boolProtocols.HTTP.Promise.Arguments.follow_redirects- Description
Should redirects be followed. Default is true.
- Variable
headers
mapping(string:string) Protocols.HTTP.Promise.Arguments.headers- Description
Additional request headers
- Variable
variables
mapping(string:mixed) Protocols.HTTP.Promise.Arguments.variables- Description
Query variables
Class Protocols.HTTP.Promise.Result
- Description
HTTP result class.
A class representing a request and its response. An instance of this class will be given as argument to the
Concurrent.Future()->on_success()andConcurrent.Future()->on_failure()callbacks registered on the returnedConcurrent.Futureobject fromget_url(),post_url(),delete_url(),put_url()ordo_method().
- Variable
charset
string|zeroProtocols.HTTP.Promise.Result.charset- Description
Returns the charset of the requested document, if given by the response headers.
- Note
Read only
- Variable
content_encoding
stringProtocols.HTTP.Promise.Result.content_encoding- Description
Returns the content encoding of the response if set by the remote server.
- Note
Read only
- Variable
content_type
stringProtocols.HTTP.Promise.Result.content_type- Description
Returns the content type of the requested document
- Note
Read only
- Variable
data
stringProtocols.HTTP.Promise.Result.data- Description
Raw data body of the request
- See also
get()
- Variable
extra_args
array(mixed) Protocols.HTTP.Promise.Result.extra_args- Description
Extra arguments set in the
Argumentsobject.
- Variable
host
stringProtocols.HTTP.Promise.Result.host- Description
The host that was called in the request
- Variable
length
intProtocols.HTTP.Promise.Result.length- Description
Returns the value of the content-length header.
- Note
Read only
- Variable
status
intProtocols.HTTP.Promise.Result.status- Description
The HTTP status of the response, e.g 200, 201, 404 and so on.
- Variable
status_description
stringProtocols.HTTP.Promise.Result.status_description- Description
The textual representation of
status.
Module Protocols.HTTP.Server
- Method
extension_to_type
stringextension_to_type(stringextension)- Description
Looks up the file extension in a table to return a suitable MIME type.
- Method
filename_to_extension
stringfilename_to_extension(stringfilename)- Description
Determine the extension for a given filename.
- Method
filename_to_type
stringfilename_to_type(stringfilename)- Description
Looks up the file extension in a table to return a suitable MIME type.
- Method
http_date
stringhttp_date(inttime)- Description
Makes a time notification suitable for the HTTP protocol.
- Parameter
time The time in seconds since the 00:00:00 UTC, January 1, 1970
- Returns
The date in the HTTP standard date format. Example : Thu, 03 Aug 2000 05:40:39 GMT
- Method
http_decode_date
inthttp_decode_date(stringdata)- Description
Decode a HTTP date to seconds since 1970 (UTC)
- Returns
zero (UNDEFINED) if the given string isn't a HTTP date
- Method
http_decode_urlencoded_query
mapping(string:string|array(string)) http_decode_urlencoded_query(stringquery,void|mappingdest)- Description
Decodes an URL-encoded query into a mapping.
Class Protocols.HTTP.Server.Port
- Description
The simplest server possible. Binds a port and calls a callback with
request_programobjects.
Class Protocols.HTTP.Server.Request
- Description
This class represents a connection from a client to the server.
There are three different read callbacks that can be active, which have the following call graphs.
read_cbis the default read callback, installed byattach_fd.| (Incoming data) v read_cb | When complete headers are read v parse_request v parse_variables | If callback isn't changed to read_cb_chunked or read_cb_post v finalize| (Incoming data) v read_cb_post | When enough data has been received v finalize| (Incoming data) v read_cb_chunked | If all data chunked transfer-encoding needs v finalize
- Variable
body_raw
stringProtocols.HTTP.Server.Request.body_raw- Description
raw unparsed body of the request (
rawminus request line and headers)
- Variable
connection_timeout_delay
intProtocols.HTTP.Server.Request.connection_timeout_delay- Description
connection timeout, delay until connection is closed while waiting for the correct headers:
- Variable
cookies
mapping(string:string) Protocols.HTTP.Server.Request.cookies- Description
cookies set by client
- Variable
full_query
stringProtocols.HTTP.Server.Request.full_query- Description
full resource requested, including attached GET query
- Variable
my_fd
Stdio.NonblockingStreamProtocols.HTTP.Server.Request.my_fd- Description
The socket that this request came in on.
- Variable
not_query
stringProtocols.HTTP.Server.Request.not_query- Description
resource requested minus any attached query
- Variable
protocol
stringProtocols.HTTP.Server.Request.protocol- Description
request protocol and version, eg. HTTP/1.0
- Variable
query
stringProtocols.HTTP.Server.Request.query- Description
query portion of requested resource, starting after the first "?"
- Variable
raw
stringProtocols.HTTP.Server.Request.raw- Description
raw unparsed full request (headers and body)
- Variable
request_headers
mapping(string:string|array(string)) Protocols.HTTP.Server.Request.request_headers- Description
all headers included as part of the HTTP request, ie content-type.
- Variable
request_raw
stringProtocols.HTTP.Server.Request.request_raw- Description
full request line (
request_type+full_query+protocol)
- Variable
request_type
stringProtocols.HTTP.Server.Request.request_type- Description
HTTP request method, eg. POST, GET, etc.
- Variable
response
mappingProtocols.HTTP.Server.Request.response- Description
the response sent to the client (for use in the log_cb)
- Variable
send_timeout_delay
intProtocols.HTTP.Server.Request.send_timeout_delay- Description
send timeout (no activity for this period with data in send buffer) in seconds, default is 180
- Variable
variables
mapping(string:string|array(string)) Protocols.HTTP.Server.Request.variables- Description
all variables included as part of a GET or POST request.
- Method
attach_fd
voidattach_fd(Stdio.NonblockingStream_fd,Port|zeroserver,function(this_program:void)_request_callback,void|stringalready_data,void|function(this_program,array:void)_error_callback)- Description
Main entry point for the class.
- Parameter
_fd Newly accepted connection.
- Parameter
server Protocols.HTTP.Server.Portthat accepted the connection.- Parameter
_request_callback Callback function registered with
Protocols.HTTP.Server.Port().- Parameter
already_data Data that has already been received from
_fd.- Parameter
_error_callback Callback function called when an error is detected.
Typically called from
Protocols.HTTP.Server.Port()->new_connection().
- Method
finish
voidfinish(intclean)- Description
Finishes this request, as in removing timeouts, calling the logging callback etc. If
cleanis given, then the processing of this request went fine and all data was sent properly, in which case the connection will be reused if keep-alive was negotiated. Otherwise the connection will be closed and destructed.
- Method
get_ip
string|zeroget_ip()- Description
Return the IP address that originated the request, or 0 if the IP address could not be determined. In the event of an error,
my_fd->errno() will be set.
- Method
make_response_header
stringmake_response_header(mappingm)- Description
Make an HTTP header block from a response mapping.
- Parameter
m Contains elements for generating a response to the client.
"data":stringData to be returned to the client.
"file":objectFile object, the contents of which will be returned to the client.
"error":intHTTP error code
"size":intLength of content to be returned. If file is provided, size bytes will be returned to client.
"modified":stringContains optional modification date.
"type":stringContains optional content-type
"extra_heads":mappingContains a mapping of additional headers to be returned to client.
"server":stringContains the server identification header.
- See also
response_and_finish()
- Method
opportunistic_tls
voidopportunistic_tls(strings)- Description
Called when the client is attempting opportunistic TLS on this HTTP port. Overload to handle, i.e. send the data to a TLS port. By default the connection is simply closed.
- Method
response_and_finish
voidresponse_and_finish(mappingm,function(:void)|void_log_cb)- Description
Return a properly formatted response to the HTTP client
- Parameter
m Contains elements for generating a response to the client.
"data":string|array(string|object)Data to be returned to the client. Can be an array of objects which are concatenated and sent to the client.
"file":objectFile object, the contents of which will be returned to the client.
"error":intHTTP error code
"size":intLength of content to be returned. If file is provided, size bytes will be returned to client.
"modified":stringContains optional modification date.
"type":stringContains optional content-type
"extra_heads":mappingContains a mapping of additional headers to be returned to client.
"server":stringContains the server identification header.
- Method
set_mode
voidset_mode(intmode)- Parameter
mode A number of integer flags bitwise ored together to determine the mode of operation.
SHUFFLER: Use the Shuffler to send out the data.
Enum Protocols.HTTP.Server.Request.ChunkedState
- Constant
READ_SIZE
Constant READ_CHUNK
Constant READ_POSTNL
Constant READ_TRAILER
Constant FINISHED constantProtocols.HTTP.Server.Request.READ_SIZEconstantProtocols.HTTP.Server.Request.READ_CHUNKconstantProtocols.HTTP.Server.Request.READ_POSTNLconstantProtocols.HTTP.Server.Request.READ_TRAILERconstantProtocols.HTTP.Server.Request.FINISHED
- Constant
READ_SIZE
Class Protocols.HTTP.Server.SSLPort
- Description
A very simple SSL server. Binds a port and calls a callback with
request_programobjects.
- Variable
request_program
object|function(:void)|programProtocols.HTTP.Server.SSLPort.request_program
- Method
create
Protocols.HTTP.Server.SSLPortProtocols.HTTP.Server.SSLPort(function(Request:void)callback,int(1..)|voidport,void|stringinterface,void|string|Crypto.Sign.Statekey,void|string|array(string)certificate,void|intreuse_port)- Description
Create a HTTPS (HTTP over SSL) server.
- Parameter
callback The function run when a request is received. takes one argument of type
Request.- Parameter
port The port number to bind to, defaults to 443.
- Parameter
interface The interface address to bind to.
- Parameter
key An optional SSL secret key, provided in binary format, such as that created by
Standards.PKCS.RSA.private_key().- Parameter
certificate An optional SSL certificate or chain of certificates with the host certificate first, provided in binary format.
- Parameter
reuse_port If true, enable SO_REUSEPORT if the OS supports it. See
Stdio.Port.bindfor more information
- Method
extension_to_type
- Constant
response_codes
14.2. TLS/SSL
Module SSL
- Description
Secure Socket Layer (SSL) version 3.0 and Transport Layer Security (TLS) versions 1.0 - 1.2.
RFC 2246 (TLS 1.0): "The primary goal of the TLS Protocol is to provide privacy and data integrity between two communicating applications."
The classes that typical users need to use are
This is an object that attempts to behave as a
Stdio.Fileas much as possible.This is an object that attempts to behave as a
Stdio.Portas much as possible, withPort()->accept()returningFileobjects.The configurated context for the
File.A class for keeping track of certificate chains and their private keys.
FilePortContextConstants.CertificatePairThe
Constantsmodule also contains lots of constants that are used by the various APIs, as well as functions for formatting the constants for output.- See also
File,Port,Context,Constants.CertificatePair,Constants
Class SSL.Alert
- Description
Alert packet.
Class SSL.Buffer
- Description
String buffer with the possibility to read and write data as they would be formatted in structs.
- Method
add_int_array
this_programadd_int_array(array(int)data,int(8bit)item_size,int(0..)len)- Description
Appends an array of unsigned integers of width
item_sizeto the buffer, preceded with an unsigned integerlendeclaring the size of the array in bytes.
- Method
add_string_array
this_programadd_string_array(array(string(8bit))data,int(0..)item_size,int(0..)len)- Description
Appends an array of variable length strings with
item_sizebytes hollerith coding, prefixed by alenbytes large integer declaring the total size of the array in bytes.
- Method
create
SSL.BufferSSL.Buffer(void|string(8bit)|Stdio.Buffers)- Description
Create a new buffer, optionally initialized with the value
s.
- Method
read_int_array
array(int) read_int_array(int(8bit)item_size,int(0..)len)- Description
Reads an array of integers as written by
add_int_arrayfrom the buffer.
Class SSL.ClientConnection
- Description
Client-side connection state.
- Variable
client_cert_types
Variable client_cert_distinguished_names array(int)|zeroSSL.ClientConnection.client_cert_typesarray(string(8bit))|zeroSSL.ClientConnection.client_cert_distinguished_names- Description
A few storage variables for client certificate handling on the client side.
- Method
create
SSL.ClientConnectionSSL.ClientConnection(Contextctx,string(8bit)|voidserver_name,Session|voidsession)- Description
Initialize a new
ClientConnection.- Parameter
ctx Contextto use.- Parameter
server_name Optional host name of the server.
- Parameter
session Optional
Sessionto resume.
- Method
handle_handshake
int(-1..1)handle_handshake(inttype,Bufferinput,Stdio.Bufferraw)- Description
Do handshake processing.
- Parameter
type One of HANDSHAKE_*.
- Parameter
input The contents of the packet.
- Parameter
raw The raw packet received (needed for supporting SSLv2 hello messages).
- Returns
This function returns:
0If handshaking is in progress.
1If handshaking has completed.
-1If a fatal error occurred.
It uses the
send_packet()function to transmit packets.
Class SSL.Connection
- Description
SSL.Connection keeps the state relevant for a single SSL connection. This includes the
Contextobject (which doesn't change), various buffers, theSessionobject (reused or created as appropriate), and pending read and write states being negotiated.Each connection will have two sets of read and write
States: The current read and write states used for encryption, and pending read and write states to be taken into use when the current keyexchange handshake is finished.This object is also responsible for managing incoming and outgoing packets. Outgoing packets are stored in queue objects and sent in priority order.
- Note
This class should never be created directly, instead one of the classes that inherits it should be used (ie either
ClientConnectionorServerConnection) depending on whether this is to be a client-side or server-side connection. These in turn are typically created byFile()->create().- See also
ClientConnection,ServerConnection,Context,Session,File,State
- Constant
window_size
privateconstantintSSL.Connection.window_size- Description
Number of passed sequence numbers to keep track of. RFC 4347 section 4.1.2.5: A minimum window size of 32 MUST be supported, but a window size of 64 is preferred and SHOULD be employed as the default. Another window size (larger than the minimum) MAY be chosen by the receiver.
- Variable
application_protocol
string(8bit)|zeroSSL.Connection.application_protocol- Description
Selected ALPN (RFC 7301) protocol (if any).
- Note
Note that this is a connection property, and needs to be renegotiated on session resumption.
- Variable
client_random
Variable server_random string(8bit)|zeroSSL.Connection.client_randomstring(8bit)|zeroSSL.Connection.server_random- Description
Random cookies, sent and received with the hello-messages.
- Variable
ke
.Cipher.KeyExchange|zeroSSL.Connection.ke- Description
The active
Cipher.KeyExchange(if any).
- Variable
sequence_mask
privateintSSL.Connection.sequence_mask- Description
Bitmask representing sequence numbers for accepted received packets in the interval [
next_seq_num-window_size..next_seq_num-2].- Note
The packet with seqence number
next_seq_num-1is implicitly known to have been received.
- Variable
state
ConnectionStateSSL.Connection.state- Description
Bitfield with the current connection state.
- Method
create
SSL.ConnectionSSL.Connection(Contextctx)- Description
Initialize the connection state.
- Parameter
ctx The context for the connection.
- Method
derive_master_secret
voidderive_master_secret(string(8bit)premaster_secret)- Description
Derive the master secret from the premaster_secret and the random seeds, and configure the keys.
- Method
describe_state
stringdescribe_state()- Description
Returns a string describing the current connection state.
- Method
got_data
string(8bit)|int(-1..1)got_data(string(8bit)data)- Description
Main receive handler.
- Parameter
data String of data received from the peer.
- Returns
Returns one of:
string(0)Returns an empty string if there's neither application data nor errors (eg during the initial handshake).
string(8bit)Returns a string of received application data.
int(1)Returns
1if the peer has closed the connection.int(-1)Returns
-1if an error has occurred.These are the main cases of errors:
There was a low-level protocol communications failure (the data didn't look like an SSL packet), in which case the alert_callback will be called with the raw packet data. This can eg be used to detect HTTP clients connecting to an HTTPS server and similar.
The peer has sent an
Alertpacket, andhandle_alert()for it has returned -1.The peer has sent an unsupported/illegal sequence of packets, in which case a suitable
Alertwill have been generated and queued for sending to the peer.
This function is intended to be called from an i/o read callback.
- Method
handle_alert
int(-1..1)handle_alert(intlevel,intdescription)- Description
Handle an alert received from the peer.
- Parameter
level Alert level; either
ALERT_warningorALERT_fatal.- Parameter
description Alert description code; one of
indices(SSL.Constants.ALERT_descriptions).- Returns
-1A Fatal error occurred and processing should stop.
0Processing can continue.
1Connection should close.
- Method
handle_handshake
int(-1..1)handle_handshake(inttype,Bufferinput,Stdio.Bufferraw)- Description
Do handshake processing. Type is one of HANDSHAKE_*, data is the contents of the packet, and raw is the raw packet received (needed for supporting SSLv2 hello messages).
This function returns 0 if handshake is in progress, 1 if handshake is finished, and -1 if a fatal error occurred. It uses the send_packet() function to transmit packets.
- Method
mark_seq_num
voidmark_seq_num(intnum)- Description
Mark seqence number
numas seen and accepted.This will cause
valid_seq_nump()to return0for it if it shows up again.
- Method
query_write_queue_size
intquery_write_queue_size()- Description
Returns the number of packets queued for writing.
- Returns
Returns the number of times
to_write()can be called before it stops returning non-empty strings.
- Method
recv_packet
protectedPacket|zerorecv_packet()- Description
Low-level receive handler. Returns a packet, an alert, or zero if more data is needed to get a complete packet.
- Method
send_packet
voidsend_packet(Packetpacket,int|voidpriority)- Description
Queues a packet for write. Handshake and and change cipher must use the same priority, so must application data and close_notifies.
- Method
send_streaming_data
intsend_streaming_data(string(8bit)data)- Description
Send an application data packet. If the data block is too large then as much as possible of the beginning of it is sent. The size of the sent data is returned.
- Method
set_alert_callback
voidset_alert_callback(function(object,int|object,string:void)callback)- Description
Called with alert object, sequence number of bad packet, and raw data as arguments, if a bad packet is received.
Can be used to support a fallback redirect https->http.
- Method
to_write
int(-1..2)to_write(Stdio.Bufferoutput)- Description
Extracts data from the packet queues. Returns 2 if data has been written, 0 if there are no pending packets, 1 of the connection is being closed politely, and -1 if the connection died unexpectedly.
This function is intended to be called from an i/o write callback.
- See also
query_write_queue_size(),send_streaming_data().
- Method
valid_seq_nump
intvalid_seq_nump(intnum)- Description
Check whether
numis a valid seqence number for a new packet.
Class SSL.Context
- Description
Keeps the state that is shared by all SSL-connections on a client, or for one port on a server. It includes policy configuration, the server or client certificate(s), the corresponding private key(s), etc. It also includes the session cache.
The defaults are usually suitable for a client, but for a server some configuration is necessary.
Typical use is to:
Call
add_cert()with the certificates belonging to the server or client. Note that clients often don't have or need any certificates, and also that certificate-less server operation is possible, albeit discouraged and not enabled by default.Suitable self-signed certificates can be created with
Standards.X509.make_selfsigned_certificate().Optionally call
get_suites()to get a set of cipher_suites to assign topreferred_suites. This is only needed if the default set of suites fromget_suites(128, 1)isn't satisfactory.
The initialized
Contextobject is then passed toFile()->create()or used as is embedded inPort.- See also
File,Port,Standards.X509
- Variable
advertised_protocols
array(string(8bit))|zeroSSL.Context.advertised_protocols- Description
List of advertised protocols using using TLS application level protocol negotiation.
- Variable
auth_level
intSSL.Context.auth_level- Description
Policy for client authentication. One of
SSL.Constants.AUTHLEVEL_none,SSL.Constants.AUTHLEVEL_verify,SSL.Constants.AUTHLEVEL_askandSSL.Constants.AUTHLEVEL_require.Defaults to SSL.Constants.AUTHLEVEL_none.
- Variable
client_auth_methods
array(int) SSL.Context.client_auth_methods- Description
The possible client authentication methods. Used only if auth_level is AUTH_ask or AUTH_require. Generated by
set_authorities.
- Variable
ecc_curves
array(int) SSL.Context.ecc_curves- Description
Supported elliptical curve cipher curves in order of preference. Defaults to all supported curves, ordered with the largest curves first.
- Variable
enable_renegotiation
boolSSL.Context.enable_renegotiation- Description
If set enable SSL/TLS protocol renegotiation.
Defaults to
1(enabled).- Note
RFC 7540 section 9.2.1 requires this to be turned off after
Protocols.HTTP2communication has started.
- Variable
encrypt_then_mac
boolSSL.Context.encrypt_then_mac- Description
Attempt to enable encrypt-then-mac mode. Defaults to
1.- Deprecated
Replaced by
extensions.
- Variable
extensions
multiset(int) SSL.Context.extensions- Description
A list of all extensions that will be considered in the handshake process. Extensions not listed will not be sent, and will be ignored if received.
The following values are included by default.
Constants.EXTENSION_renegotiation_infoProtection against renegotiation attack (RFC 5746).
Constants.EXTENSION_max_fragment_lengthAllows negotiation of the maximum fragment size (RFC 6066 section 4).
Constants.EXTENSION_encrypt_then_macAttempts to address attacks against block ciphers (RFC 7366).
Constants.EXTENSION_application_layer_protocol_negotiationRequired to support more than one protocol on the same TLS port (RFC 7639).
Constants.EXTENSION_signature_algorithmsRequired to select which out of several certificates to use (RFC 5246 section 7.4.1.4.1).
Constants.EXTENSION_ec_point_formatsRequired for elliptic curve key exchange (RFC 4492 section 5.1.2).
Constants.EXTENSION_elliptic_curvesRequired for elliptic curve key exchange (RFC 4492 section 5.1.1).
Constants.EXTENSION_server_nameAllows the client to select which of several domains hosted on the same server it wants to connect to. Required by many websites (RFC 6066 section 3).
Constants.EXTENSION_session_ticketSupport session resumption without server-side state (RFC 4507 and RFC 5077).
Constants.EXTENSION_next_protocol_negotiationNot supported by Pike. The server side will just check that the client packets are correctly formatted.
Constants.EXTENSION_signed_certificate_timestampNot supported by Pike. The server side will just check that the client packets are correctly formatted.
Constants.EXTENSION_early_dataNeeded for TLS 1.3 0-RTT handshake. EXPERIMENTAL.
Constants.EXTENSION_paddingThis extension is required to avoid a bug in some f5 SSL terminators for certain sizes of client handshake messages.
The following supported values are not included by default.
Constants.EXTENSION_truncated_hmacThis extension allows for the HMAC to be truncated for a small win in payload size. Not widely implemented and may be a security risk (RFC 6066 section 7).
Constants.EXTENSION_heartbeatThis extension allows the client and server to send heartbeats over the connection. Intended to keep TCP connections alive. Required to be set to use
heartbleed_probe(RFC 6520).Constants.EXTENSION_extended_master_secretBinds the master secret to important session parameters to protect against man in the middle attacks (RFC 7627).
- See also
- Variable
ffdhe_groups
array(int) SSL.Context.ffdhe_groups- Description
Supported FFDHE groups for DHE key exchanges, in order of preference, most preferred first.
Defaults to the full set of supported FFDHE groups from the FFDHE draft, in order of size with the smallest group (2048 bits) first.
Server-side the first group in the list that satisfies the NIST guide lines for key strength (NIST SP800-57 5.6.1) (if any) for the selected cipher suite will be selected, and otherwise the largest group.
Client-side the list will be reversed (as a precaution if the server actually follows the clients preferences).
- Variable
heartbleed_probe
boolSSL.Context.heartbleed_probe- Description
If set, the other peer will be probed for the heartbleed bug during handshake. If heartbleed is found the connection is closed with insufficient security fatal error. Requires
Constants.EXTENSION_heartbeatto be set inextensions.
- Variable
max_sessions
intSSL.Context.max_sessions- Description
Maximum number of sessions to keep in the cache.
- Variable
min_version
Variable max_version intSSL.Context.min_versionintSSL.Context.max_version- Description
The accepted range of versions for the client/server. List specific versions in
supported_versionsinstead.- Deprecated
Replaced by
supported_versions.
- Variable
packet_max_size
intSSL.Context.packet_max_size- Description
The maximum amount of data that is sent in each SSL packet by
File. A value between 1 andConstants.PACKET_MAX_SIZE.
- Variable
preferred_compressors
array(int) SSL.Context.preferred_compressors- Description
Lists the supported compression algorithms in order of preference.
Defaults to
({ COMPRESSION_null })due to SSL attacks that target compression.
- Variable
preferred_suites
array(int)|zeroSSL.Context.preferred_suites- Description
Cipher suites we want to support, in order of preference, best first. By default set to all suites with at least 128 bits cipher key length, excluding RC4, and ephemeral and non-ephemeral certificate based key exchange.
- Variable
private_ffdhe_groups
mapping(int(508..511):Crypto.DH.Parameters) SSL.Context.private_ffdhe_groups- Description
DHE parameter lookup for the FFDHE private range.
Add any custom FFDHE-groups here.
Defaults to the empty mapping.
- Note
If you add any groups here, you will also need to update
ffdhe_groupsaccordingly.
- Variable
random
function(int(0..):string(8bit)) SSL.Context.random- Description
Used to generate random cookies for the hello-message. If we use the RSA keyexchange method, and this is a server, this random number generator is not used for generating the master_secret. By default set to
random_string.
- Variable
require_trust
intSSL.Context.require_trust- Description
When set, require the chain to be known, even if the root is self signed.
Note that if set, and certificates are set to be verified, trusted issuers must be provided, or no connections will be accepted.
- Deprecated
Replaced by
auth_level.
- Variable
session_lifetime
intSSL.Context.session_lifetime- Description
Sessions are removed from the cache when they have been inactive more than this number of seconds. Sessions are also removed from the cache if a connection using the session dies unexpectedly.
- Variable
signature_algorithms
array(int) SSL.Context.signature_algorithms- Description
The set of <hash, signature> combinations to use by us.
Only used with TLS 1.2 and later.
Defaults to all combinations supported by Pike except for MD5.
This list is typically filtered by
get_signature_algorithms()to get rid of combinations not supported by the runtime.- Note
According to RFC 5246 section 7.4.2 all certificates need to be signed by any of the supported signature algorithms. To be forward compatible this list needs to be limited to the combinations that have existing PKCS identifiers.
- See also
get_signature_algorithms()
- Variable
supported_versions
array(ProtocolVersion) SSL.Context.supported_versions- Description
List of supported versions, in order of preference. Defaults to
PROTOCOL_TLS_1_2,PROTOCOL_TLS_1_1andPROTOCOL_TLS_1_0.
- Variable
trusted_issuers_cache
mapping(string(8bit):array(Standards.X509.Verifier)) SSL.Context.trusted_issuers_cache- Description
Mapping from DER-encoded issuer to
Standards.X509.Verifiers compatible with egStandards.X509.verify_certificate()andStandards.X509.load_authorities().- See also
get_trusted_issuers(),set_trusted_issuers()
- Variable
verifier_algorithms
mapping(Standards.ASN1.Types.Identifier:Crypto.Hash) SSL.Context.verifier_algorithms- Description
Mapping of supported verifier algorithms to hash implementation.
- See also
Standards.X509.get_algorithms()
- Variable
verify_certificates
intSSL.Context.verify_certificates- Description
Determines whether certificates presented by the peer are verified, or just accepted as being valid.
- Deprecated
Replaced by
auth_level.
- Method
add_cert
voidadd_cert(Crypto.Sign.Statekey,array(string(8bit))certs,array(string(8bit))|voidextra_name_globs)variantvoidadd_cert(string(8bit)key,array(string(8bit))certs,array(string(8bit))|voidextra_name_globs)variantvoidadd_cert(CertificatePaircp)- Description
Add a certificate.
This function is used on both servers and clients to add a key and chain of certificates to the set of certificate candidates to use in
find_cert().On a server these are used in the normal initial handshake, while on a client they are only used if a server requests client certificate authentication.
- Parameter
key Private key matching the first certificate in
certs.Supported key types are currently:
Crypto.RSA.StateRivest-Shamir-Adelman.
Crypto.DSA.StateDigital Signing Algorithm.
Crypto.ECC.Curve.ECDSAElliptic Curve Digital Signing Algorithm.
This key MUST match the public key in the first certificate in
certs.- Parameter
certs A chain of X509.v1 or X509.v3 certificates, with the local certificate first and root-most certificate last.
- Parameter
extra_name_globs Further SNI globs (than the ones in the first certificate), that this certificate should be selected for. Typically used to set the default certificate(s) by specifying
({ "*" }).The SNI globs are only relevant for server-side certificates.
- Parameter
cp An alternative is to send an initialized
CertificatePair.- Throws
The function performs various validations of the
keyandcerts, and throws errors if the validation fails.- See also
find_cert()
- Method
alert_factory
Alertalert_factory(SSL.Connectioncon,intlevel,intdescription,ProtocolVersionversion,string|voidmessage,mixed|voidtrace)- Description
Alert factory.
This function may be overloaded to eg obtain logging of generated alerts.
- Parameter
con Connection which caused the alert.
- Parameter
level Level of alert.
- Parameter
description Description code for the alert.
- Parameter
message Optional log message for the alert.
- Note
Not all alerts are fatal, and some (eg
ALERT_close_notify) are used during normal operation.
- Method
configure_suite_b
voidconfigure_suite_b(int(128..)|voidmin_keylength,int(0..)|voidstrictness_level)- Description
Configure the context for Suite B compliant operation.
This restricts the context to the cipher suites specified by RFC 6460 in strict mode.
Additional suites may be enabled, but they will only be selected if a Suite B suite isn't available.
- Parameter
min_keylength Minimum supported key length in bits. Either
128or192.- Parameter
strictness_level Allow additional suites.
(2..)Strict mode.
Allow only the Suite B suites from RFC 6460 and TLS 1.2.
1Transitional mode.
Also allow the transitional suites from RFC 5430 for use with TLS 1.0 and 1.1.
0Permissive mode (default).
Also allow other suites that conform to the minimum key length.
- Note
This function is only present when Suite B compliant operation is possible (ie both elliptic curves and GCM are available).
- Note
Note also that for Suite B server operation compliant certificates need to be added with
add_cert().- See also
get_suites()
- Method
decode_ticket
Session|zerodecode_ticket(string(8bit)ticket)- Description
Decode a session ticket and return the corresponding session if valid or zero if invalid.
- Note
The default implementation just calls
lookup_session().Override this function (and
encode_ticket()) to implement server-side state-less session resumption.- See also
encode_ticket(),lookup_session()
- Method
encode_ticket
array(string(8bit)|int)|zeroencode_ticket(Sessionsession)- Description
Generate a session ticket for a session.
- Note
The default implementation just generates a random ticket and calls
record_session()to store it.Over-ride this function (and
decode_ticket()) to implement server-side state-less session resumption.- Returns
Array string(8bit)0Non-empty string with the ticket.
int1Lifetime hint for the ticket.
- Note
If the context signals that it does offer tickets via
offers_tickets(), this function must offer an encoded ticket for the session as the connection may have signalled to the client that a ticket will be offered. However, tickets are not guaranteed to be actually usable, so if you cannot offer a ticket when you must,"INVALID"might be an option...- See also
decode_ticket(),record_session(), RFC 4507 section 3.3
- Method
filter_weak_suites
voidfilter_weak_suites(intmin_keylength)- Description
Filter cipher suites from
preferred_suitesthat don't have a key with an effective length of at leastmin_keylengthbits.
- Method
find_cert_domain
array(CertificatePair)|zerofind_cert_domain(string(8bit)domain)- Description
Look up a suitable set of certificates for the specified domain.
UNDEFINEDif no certificate was found. Called only by the Server.
- Method
find_cert_issuer
array(CertificatePair)|zerofind_cert_issuer(array(string)ders)- Description
Look up a suitable set of certificates for the specified issuer.
UNDEFIENDif no certificate was found. Called only by the ClientConnection as a response to a certificate request.
- Method
get_authorities
array(string) get_authorities()- Description
Get the list of allowed authorities. See
set_authorities.
- Method
get_certificates
array(CertificatePair) get_certificates()- Description
Returns a list of all server certificates added with
add_cert.
- Method
get_export_rsa_key
Crypto.RSAget_export_rsa_key()- Description
Called by the KeyExchangeExportRSA during KE_rsa_export key exchanges to get the weak RSA key. By default a new 512 bit key is generated for each key exchange. This method can be overloaded to provide caching or alternative means to generate keys.
- Method
get_psk
optionalstring(8bit)get_psk(string(8bit)id)- Description
A context created for PSK use must implement a get_psk method, which will be called with the key id, and should return the key to be used for the connection. If the id is not valid, 0 should be returned.
- Method
get_psk_hint
optionalstring(8bit)get_psk_hint()- Description
A context created for server side PSK use can optionally implement get_psk_hint to return a hint string to be sent to the client. If not implemented, or returning 0, no PSK hint will be sent.
- Method
get_psk_id
optionalstring(8bit)get_psk_id(string(8bit)hint)- Description
A context created for client side PSK use must implement a get_psk_id method, which will be called with the server provided hint, or 0 if no hint was sent. Note that while there is an API difference between no hint and a zero length hint, some PSK modes are unable to send no hints.
The method should return a key id for the PSK, which will be sent to the server. If the hint is not valid, 0 should be returned.
- Method
get_signature_algorithms
array(int) get_signature_algorithms(array(int)|voidsignature_algorithms)- Description
Get the (filtered) set of locally supported signature algorithms.
- See also
signature_algorithms
- Method
get_suites
array(int) get_suites(int(-1..)|voidmin_keylength,int(0..2)|voidke_mode,multiset(int)|voidblacklisted_ciphers,multiset(KeyExchangeType)|voidblacklisted_kes,multiset(HashAlgorithm)|voidblacklisted_hashes,multiset(CipherModes)|voidblacklisted_ciphermodes)- Description
Get the prioritized list of supported cipher suites that satisfy the requirements.
- Parameter
min_keylength Minimum supported effective keylength in bits. Defaults to
128. Specify-1to enable null ciphers.- Parameter
ke_mode Level of protection for the key exchange.
0Require forward secrecy (ephemeral keys).
1Also allow certificate based key exchanges.
2Also allow anonymous server key exchange. Note that this allows for man in the middle attacks.
- Parameter
blacklisted_ciphers Multiset of ciphers that are NOT to be used. By default RC4, DES and export ciphers are blacklisted. An empty multiset needs to be given to unlock these.
- Parameter
blacklisted_kes Multiset of key exchange methods that are NOT to be used.
- Parameter
blacklisted_hashes Multiset of hash algoriths that are NOT to be used.
- Parameter
blacklisted_ciphermodes Multiset of cipher modes that are NOT to be used.
- Note
The list of suites is also filtered on the current settings of
supported_versions.- Note
Note that the effective keylength may differ from the actual keylength for old ciphers where there are known attacks.
- Method
get_trusted_issuers
array(array(string(8bit))) get_trusted_issuers()- Description
Get the list of trusted issuers. See
set_trusted_issuers.
- Method
get_versions
array(ProtocolVersion) get_versions(ProtocolVersionclient)- Description
Returns a list of possible versions to use, given the version in the client hello header.
- Method
lookup_session
Session|zerolookup_session(stringid)- Description
Lookup a session identifier in the cache. Returns the corresponding session, or zero if it is not found or caching is disabled.
- Method
offers_tickets
booloffers_tickets()- Description
Signals if the context will offer a session ticket via
encode_ticket().
- Method
purge_session
voidpurge_session(Sessions)- Description
Invalidate a session for resumption and remove it from the cache.
- Method
record_session
voidrecord_session(Sessions)- Description
Add a session to the cache (if caching is enabled).
- Method
set_authorities
voidset_authorities(array(string)a)- Description
Array of authorities that are accepted for client certificates. The server will only accept connections from clients whose certificate is signed by one of these authorities. The string is a DER-encoded certificate, which typically must be decoded using
MIME.decode_base64orStandards.PEM.Messagesfirst.Note that it is presumed that the issuer will also be trusted by the server. See
trusted_issuersfor details on specifying trusted issuers.If empty, the server will accept any client certificate whose issuer is trusted by the server.
- Method
set_trusted_issuers
voidset_trusted_issuers(array(array(string(8bit)))issuers)- Description
Sets the list of trusted certificate issuers.
- Parameter
issuers An array of certificate chains whose root is self signed (ie a root issuer), and whose final certificate is an issuer that we trust. The root of the certificate should be first certificate in the chain. The string is a DER-encoded certificate, which typically must be decoded using
MIME.decode_base64orStandards.PEM.Messagesfirst.If this array is left empty, and the context is set to verify certificates, a certificate chain must have a root that is self signed.
- Method
sort_suites
array(int) sort_suites(array(int)suites)- Description
Sort a set of cipher suites according to our preferences.
- Returns
Returns the array sorted with the most preferrable (aka "best") cipher suite first.
- Note
The original array (
suites) is modified destructively, but is not the same array as the result.
Class SSL.File
- Description
Interface similar to
Stdio.File.Handles blocking and nonblocking mode.
Handles callback mode in an arbitrary backend (also in blocking mode).
Read and write operations may each do both reading and writing. In callback mode that means that installing either a read or a write callback may install both internally.
In Pike 8.0 and later, blocking read and write in concurrent threads is supported.
Callback changing operations like
set_blockingandset_nonblockingaren't atomic.Apart from the above, thread safety/atomicity characteristics are retained.
Blocking characterstics are retained for all functions.
is_open, connection init (create) and close (close) can do both reading and writing._destructattempts to close the stream properly by sending the close packet, but since it can't do blocking I/O it's not certain that it will succeed. The stream should therefore always be closed with an explicitclosecall.Abrupt remote close without the proper handshake gets the errno
System.EPIPE.Objects do not contain cyclic references, so they are closed and destructed timely when dropped.
- Variable
application_protocol
stringSSL.File.application_protocol- Description
The application protocol chosen by the client during application layer protocol negotiation (ALPN).
- Note
Read only
- Variable
fragment_max_size
protectedintSSL.File.fragment_max_size- Description
The max amount of data to send in each packet. Initialized from the context when the object is created.
- Method
_destruct
protectedvoid_destruct()- Description
Try to close down the connection properly since it's customary to close files just by dropping them. No guarantee can be made that the close packet gets sent successfully though, because we can't risk blocking I/O here. You should call
closeexplicitly.- See also
close
- Method
accept
boolaccept(string|voidpending_data)- Description
Configure as server and set up the connection.
- Parameter
pending_data Any data that has already been read from the stream. This is typically used with protocols that use START TLS or similar, where there's a risk that "too much" data (ie part of the TLS ClientHello) has been read from the stream before deciding that the connection is to enter TLS-mode.
- Returns
Returns
0on handshaking failure in blocking mode, and otherwise1.- See also
connect()
- Method
backend_once
protectedint(0)|floatbackend_once(int|voidnonwaiting_mode)- Description
Run one pass of the backend.
- Method
close
intclose(void|stringhow,void|intclean_close,void|intdont_throw)- Description
Close the connection. Both the read and write ends are always closed
- Parameter
how This argument is only for
Stdio.Filecompatibility and must be either"rw"or0.- Parameter
clean_close If set then close messages are exchanged to shut down the SSL connection but not the underlying stream. It may then continue to be used for other communication afterwards. The default is to send a close message and then close the stream without waiting for a response.
- Parameter
dont_throw I/O errors are normally thrown, but that can be turned off with
dont_throw. In that caseerrnois set instead and0is returned.1is always returned otherwise. It's not an error to close an already closed connection.- Note
If a clean close is requested in nonblocking mode then the stream is most likely not closed right away, and the backend is then still needed for a while afterwards to exchange the close packets.
is_openreturns 2 in that time window.- Note
I/O errors from both reading and writing might occur in blocking mode.
- Note
If a clean close is requested and data following the close message is received at the same time, then this object will read it and has no way to undo that. That data can be retrieved with
readafterwards.- See also
shutdown
- Method
connect
SSL.Session|zeroconnect(string|voiddest_addr,SSL.Session|voidsession)- Description
Configure as client and set up the connection.
- Parameter
dest_addr Optional name of the server that we are connected to.
- Parameter
session Session to resume (if any).
- Returns
Returns
0on handshaking failure in blocking mode, and otherwise theSessionobject for the connection.- Throws
Throws an error if a connection already has been established.
- See also
accept()
- Method
create
SSL.FileSSL.File(Stdio.Filestream,SSL.Contextctx)- Description
Create an SSL connection over an open
stream.- Parameter
stream Open socket or pipe to create the connection over.
- Parameter
ctx The SSL context.
The backend used by
streamis taken over and restored after the connection is closed (seecloseandshutdown). The callbacks and id instreamare overwritten.- Note
The operation mode defaults to nonblocking mode.
- See also
accept(),connect()
- Method
errno
interrno()- Returns
Returns the current error number for the connection. Notable values are:
0No error
System.EPIPEConnection closed by other end.
- Method
get_peer_certificate_info
mappingget_peer_certificate_info()- Returns
Returns peer certificate information, if any.
- Method
get_peer_certificates
arrayget_peer_certificates()- Returns
Returns the peer certificate chain, if any.
- Method
get_server_name
mixedget_server_name()- Returns
Returns the server name indication value for the connection.
- Method
internal_poll
protectedvoidinternal_poll()- Description
Check whether any callbacks may need to be called.
Always run via the
real_backend.- See also
schedule_poll()
- Method
is_open
intis_open()- Returns
Returns nonzero if the stream currently is open, zero otherwise.
This function does nonblocking I/O to check for a close packet in the input buffer.
If a clean close has been requested in nonblocking mode, then 2 is returned until the close packet exchanged has been completed.
- Note
In Pike 7.8 and earlier, this function returned zero in the case above where it now returns 2.
- Method
query_accept_callback
function(void|object,void|mixed:int)|zeroquery_accept_callback()- Returns
Returns the current accept callback.
- See also
set_accept_callback
- Method
query_address
stringquery_address(int|voidarg)- Returns
Returns the address and port of the connection.
See
Stdio.File.query_addressfor details.- See also
Stdio.File.query_address
- Method
query_alert_callback
function(object,int|object,string:void)|zeroquery_alert_callback()- Returns
Returns the current alert callback.
- See also
set_alert_callback
- Method
query_application_protocol
string(8bit)query_application_protocol()- Returns
Returns the negotiated application level protocol (ALPN) if any, and otherwise
0(zero).- See also
Context.advertised_protocols
- Method
query_backend
Pike.Backendquery_backend()- Description
Return the backend used for the file callbacks.
- See also
set_backend
- Method
query_buffer_mode
array(Stdio.Buffer|int(0)) query_buffer_mode()- Description
Get the active input and output buffers that have been set with
set_buffer_mode()(if any).- Returns
Returns an array with two elements:
Array Stdio.Buffer0The current input buffer.
Stdio.Buffer1The current output buffer.
- See also
set_buffer_mode()
- Method
query_callbacks
array(function(mixed,void|string:int)|zero) query_callbacks()- Returns
Returns the currently set callbacks in the same order as the arguments to
set_callbacks.- See also
set_callbacks,set_nonblocking
- Method
query_close_callback
function(void|mixed:int)|zeroquery_close_callback()- Returns
Returns the current close callback.
- See also
set_close_callback,set_nonblocking,query_callbacks
- Method
query_connection
.Connectionquery_connection()- Description
Return the SSL connection object.
This returns the low-level
SSL.connectionobject.
- Method
query_read_callback
Stdio.read_callback_t|zeroquery_read_callback()- Returns
Returns the current read callback.
- See also
set_read_callback,set_nonblocking,query_callbacks
- Method
query_stream
Stdio.Filequery_stream()- Description
Return the underlying stream.
- Note
Avoid any temptation to do
destruct(file_obj->query_stream()). That almost certainly creates more problems than it solves.You probably want to use
shutdown.- See also
shutdown
- Method
query_timeout
int(0)|floatquery_timeout()- Description
Get the timeout for blocking operations.
- See also
set_timeout()
- Method
query_version
ProtocolVersionquery_version()- Description
Return the currently active SSL/TLS version.
- Method
query_write_callback
Stdio.write_callback_t|zeroquery_write_callback()- Returns
Returns the current write callback.
- See also
set_write_callback,set_nonblocking,query_callbacks
- Method
read
stringread(void|intlength,void|boolnot_all)- Description
Read some (decrypted) data from the connection. Works like
Stdio.File.read.- Note
I/O errors from both reading and writing might occur in blocking mode.
- See also
write
- Method
renegotiate
intrenegotiate()- Description
Renegotiate the connection by starting a new handshake. Note that the accept callback will be called again when the handshake is finished.
Returns zero if there are any I/O errors.
errno()will give the details.- Note
The read buffer is not cleared - a
read()afterwards will return data from both before and after the renegotiation.- Bugs
Data in the write queue in nonblocking mode is not properly written before resetting the connection. Do a blocking
write("")first to avoid problems with that.
- Method
schedule_poll
protectedvoidschedule_poll()- Description
Schedule calling of any relevant callbacks the next time the
real_backendis run.- See also
internal_poll()
- Method
set_accept_callback
voidset_accept_callback(function(void|object,void|mixed:int)|zeroaccept)- Description
Install a function that will be called when the handshake is finished and the connection is ready for use.
The callback function will be called with the File object and the additional id arguments (set with
set_id).- Note
Like the read, write and close callbacks, installing this callback implies callback mode, even after the handshake is done.
- See also
set_nonblocking,set_callbacks,query_accept_callback,query_callbacks
- Method
set_alert_callback
voidset_alert_callback(function(object,int|object,string:void)|zeroalert)- Description
Install a function that will be called when an alert packet is about to be sent. It doesn't affect the callback mode - it's called both from backends and from within normal function calls like
readandwrite.This callback can be used to implement fallback to other protocols when used on the server side together with
shutdown().- Note
This object is part of a cyclic reference whenever this is set, just like setting any other callback.
- Note
This callback is not cleared by
set_blocking, or settable byset_callbacksorset_nonblocking. It is also not part of the set returned byquery_callbacks.- See also
query_alert_callback
- Method
set_backend
voidset_backend(Pike.Backendbackend)- Description
Set the backend used for the file callbacks.
- See also
query_backend
- Method
set_blocking
voidset_blocking()- Description
Set the stream in blocking mode. All but the alert callback are zapped.
- Note
There might be some data still waiting to be written to the stream. That will be written in the next blocking call, regardless what it is.
- Note
This function doesn't solve the case when the connection is used nonblocking in some backend thread and another thread switches it to blocking and starts using it. To solve that, put a call out in the backend from the other thread that switches it to blocking, and then wait until that call out has run.
- Note
Prior to version 7.5.12, this function didn't clear the accept callback.
- See also
set_nonblocking,set_blocking_keep_callbacks,set_nonblocking_keep_callbacks
- Method
set_blocking_keep_callbacks
voidset_blocking_keep_callbacks()- Description
Set blocking mode like
set_blocking, but don't alter any callbacks.- See also
set_blocking,set_nonblocking
- Method
set_buffer_mode
voidset_buffer_mode(Stdio.Buffer|int(0)in,Stdio.Buffer|int(0)out)- Description
Toggle the file to Buffer mode.
In this mode reading and writing will be done via Buffer objects, in the directions you included buffers.
- Parameter
in Input buffer. If this buffer is non-empty, its contents will be returned after any already received data.
- Parameter
out Output buffer. If this buffer is non-empty, its contents will be sent after any data already queued for sending.
- See also
query_buffer_mode()
- Method
set_callbacks
voidset_callbacks(void|Stdio.read_callback_tread,void|Stdio.write_callback_twrite,void|function(mixed:int)close,void|function(mixed,string:int)read_oob,void|function(mixed:int)write_oob,void|function(void|mixed:int)accept)- Description
Installs all the specified callbacks at once. Use
UNDEFINEDto keep the current setting for a callback.Like
set_nonblocking, the callbacks are installed atomically. As opposed toset_nonblocking, this function does not do anything with the stream, and it doesn't even have to be open.- Bugs
read_oobandwrite_oobare currently ignored.- See also
set_read_callback,set_write_callback,set_close_callback,set_accept_callback,query_callbacks
- Method
set_close_callback
voidset_close_callback(function(void|mixed:int)|zeroclose)- Description
Install a function to be called when the connection is closed, either normally or due to an error (use
errnoto retrieve it).- See also
query_close_callback,set_nonblocking,query_callbacks
- Method
set_id
voidset_id(mixedid)- Description
Set the value to be sent as the first argument to the callbacks installed by
set_callbacks.- See also
query_id
- Method
set_nonblocking
voidset_nonblocking(void|Stdio.read_callback_tread,void|Stdio.write_callback_twrite,void|function(void|mixed:int)close,void|function(void|mixed:int)read_oob,void|function(void|mixed:int)write_oob,void|function(void|mixed:int)accept)- Description
Set the stream in nonblocking mode, installing the specified callbacks. The alert callback isn't touched.
- Note
Prior to version 7.5.12, this function didn't set the accept callback.
- Bugs
read_oobandwrite_oobare currently ignored.- See also
set_callbacks,query_callbacks,set_nonblocking_keep_callbacks,set_blocking
- Method
set_nonblocking_keep_callbacks
voidset_nonblocking_keep_callbacks()- Description
Set nonblocking mode like
set_nonblocking, but don't alter any callbacks.- See also
set_nonblocking,set_blocking,set_blocking_keep_callbacks
- Method
set_read_callback
voidset_read_callback(Stdio.read_callback_t|zeroread)- Description
Install a function to be called when data is available.
- See also
query_read_callback,set_nonblocking,query_callbacks
- Method
set_timeout
voidset_timeout(int(0)|floatseconds)- Description
Set timeout for blocking operations.
- Parameter
seconds Time in seconds allowed for blocking operations before triggering a timeout. Set to
0(zero) to disable.By default there is no timeout.
- See also
query_timeout()
- Method
set_write_callback
voidset_write_callback(Stdio.write_callback_t|zerowrite)- Description
Install a function to be called when data can be written.
- See also
query_write_callback,set_nonblocking,query_callbacks
- Method
shutdown
Stdio.Fileshutdown()- Description
Shut down the SSL connection without sending any more packets.
If the connection is open then the underlying (still open) stream is returned.
If a nonclean (i.e. normal) close has been requested then the underlying stream is closed now if it wasn't closed already, and zero is returned.
If a clean close has been requested (see the second argument to
close) then the behavior depends on the state of the close packet exchange: The firstshutdowncall after a successful exchange returns the (still open) underlying stream, and later calls return zero and clearserrno. If the exchange hasn't finished then the stream is closed, zero is returned, anderrnowill returnSystem.EPIPE.- See also
close,set_alert_callback
- Method
write
intwrite(string|array(string)data,mixed...args)- Description
Write some (unencrypted) data to the connection. Works like
Stdio.File.writeexcept that this function often buffers some data internally, so there's no guarantee that all the consumed data has been successfully written to the stream in nonblocking mode. It keeps the internal buffering to a minimum, however.- Note
This function returns zero if attempts are made to write data during the handshake phase and the mode is nonblocking.
- Note
I/O errors from both reading and writing might occur in blocking mode.
- See also
read
Class SSL.Packet
- Description
SSL Record Layer. Handle formatting and parsing of packets.
- Variable
marginal_size
protectedintSSL.Packet.marginal_size- Description
The fragment max size is 2^14 (RFC 5246 6.2.1). Compressed fragments are however allowed to be 1024 bytes over (6.2.2), and Ciphertexts 2048 bytes (6.2.3). State the additional headroom in this variable.
- Method
create
SSL.PacketSSL.Packet(ProtocolVersionversion,void|intextra)- Parameter
version The version sent packets will be created for.
- Parameter
extra Additional fragment size, over the 2^14 bytes for a plaintext TLS fragment.
- Method
recv
int(-1..1)recv(Stdio.Bufferdata)- Description
Receive data read from the network.
- Parameter
data Raw data from the network.
- Returns
Returns a
1data if packet is complete, otherwise0.If there's an error, an alert object is returned.
Class SSL.Port
- Description
Interface similar to
Stdio.Port.
- Variable
accept_queue
protectedADT.Queue(<SSL.File>) SSL.Port.accept_queue- Description
Queue of new
SSL.Files that have been negotiated.
- Variable
ctx
ContextSSL.Port.ctx- Description
Contextto use for the connections.- Note
The
Contextis created (by callingcontext_factory()) on first access to the variable.- Note
Read only
- Method
accept
Fileaccept()- Description
Get the next pending
Filefrom theaccept_queue.- Returns
Returns the next pending
Fileif any, and0(zero) if there are none.
- Method
bind
intbind(intport,function(mixed|void:int)|voidcallback,string|voidip,int|voidreuse_port)- Description
Bind an SSL port.
- Parameter
port Port number to bind.
- Parameter
callback Callback to call when an SSL connection has been negotiated.
The callback is called with the
_idas the argument. The newSSL.Fileis then typically retrieved by callingaccept().If the
callbackis0(zero), then connections will not be accepted until the first call ofaccept(), or a callback has been installed withset_accept_callback().- Parameter
ip Optional IP-number to bind.
- Parameter
reuse_port If true, enable SO_REUSEPORT if the OS supports it.
- Returns
Returns
1if binding of the port succeeded, and0(zero) on failure.- See also
Stdio.Port()->bind(),File()->set_accept_callback(),listen_fd()
- Method
context_factory
Contextcontext_factory()- Description
Function called to create the
Contextobject for thisPort.By overriding this function the setup of certificates, etc for the port can be delayed until the first access to the port.
- Returns
Returns the
Contextto be used with thisPort.
- Method
create
SSL.PortSSL.Port(Context|voidctx)- Description
Create a new port for accepting SSL connections.
- Parameter
ctx Contextto be used with thisPort.If left out, it will be created on demand on first access by calling
context_factory().- See also
bind(),listen_fd()
- Method
finished_callback
voidfinished_callback(SSL.Filef,mixed|voidid)- Description
SSL connection accept callback.
- Parameter
f The
Filethat just finished negotiation.This function is installed as the
Fileaccept callback byssl_callback(), and enqueues the newly negotiatedFileon the accept queue.If there has been an
accept_callbackinstalled bybind()orlisten_fd(), it will be called with all pendingFiles on the accept queue.If there's no
accept_callback, then theFilewill have to be retrieved from the queue by callingaccept().
- Method
listen_fd
intlisten_fd(intfd,function(mixed|void:int)|voidcallback)- Description
Set up listening for SSL connections on an already opened fd.
- Parameter
fd File descriptor to listen on.
- Parameter
callback Callback to call when the SSL connection has been negotiated.
The callback is called with an
Fileas the first argument, and the id for theFileas the second.If the
callbackis0(zero), then negotiatedFiles will be enqueued for later retrieval withaccept().- Returns
Returns
1if listening on the fd succeeded, and0(zero) on failure.- See also
Stdio.Port()->listen_fd(),File()->set_accept_callback(),bind()
- Method
set_accept_callback
voidset_accept_callback(function(:void)|voidaccept_callback)- Description
Set the accept callback.
- Method
socket_accept
Stdio.Filesocket_accept()- Description
Low-level accept.
- See also
Stdio.Port()->accept()
- Method
ssl_callback
voidssl_callback(mixedid)- Description
Connection accept callback.
This function is installed as the
Stdio.Portcallback, and accepts the connection and creates a correspondingFilewithfinished_callback()as the accept callback.- Note
If no
accept_callbackhas been installed viabind(),listen_fd()orset_accept_callback(), installation of this function as theStdio.Portcallback will be delayed until the first call ofaccept().- See also
bind(),finished_callback(),set_accept_callback()
Class SSL.ServerConnection
- Description
Server-side connection state.
- Method
handle_handshake
int(-1..1)handle_handshake(inttype,Bufferinput,Stdio.Bufferraw)- Description
Do handshake processing. Type is one of HANDSHAKE_*, data is the contents of the packet, and raw is the raw packet received (needed for supporting SSLv2 hello messages).
This function returns 0 if handshake is in progress, 1 if handshake is finished, and -1 if a fatal error occurred. It uses the send_packet() function to transmit packets.
- Note
On entry the handshake header has been removed from
input.
- Method
send_renegotiate
voidsend_renegotiate()- Description
Renegotiate the connection (server initiated).
Sends a
hello_requestto force a new round of handshaking.
- Method
server_derive_master_secret
protectedboolserver_derive_master_secret(Bufferdata)- Description
Derive the new master secret from the state of
keand the payloaddatareceived fron the client in itsHANDSHAKE_client_key_exchangepacket.
Class SSL.Session
- Description
The most important information in a session object is a choice of encryption algorithms and a "master secret" created by keyexchange with a client. Each connection can either do a full key exchange to established a new session, or reuse a previously established session. That is why we have the session abstraction and the session cache. Each session is used by one or more connections, in sequence or simultaneously.
It is also possible to change to a new session in the middle of a connection.
- Variable
cert_data
mapping|zeroSSL.Session.cert_data- Description
Information about the certificate in use by the peer, such as issuing authority, and verification status.
- Variable
certificate_chain
array(string(8bit))|zeroSSL.Session.certificate_chain- Description
Our certificate chain
- Variable
cipher_spec
Cipher.CipherSpec|zeroSSL.Session.cipher_spec- Description
Information about the encryption method derived from the cipher_suite.
- Variable
cipher_suite
intSSL.Session.cipher_suite- Description
Constant defining a choice of keyexchange, encryption and mac algorithm.
- Variable
compression_algorithm
int|zeroSSL.Session.compression_algorithm- Description
Always COMPRESSION_null.
- Variable
curve
Crypto.ECC.Curve|zeroSSL.Session.curve- Description
The ECC curve selected by the key exchange.
KE_ecdh_ecdsaThe curve from the server certificate.
KE_ecdh_rsaKE_ecdhe_ecdsaThe curve selected for the ECDHE key exchange (typically the largest curve supported by both the client and the server).
KE_ecdhe_rsaKE_ecdh_anon
- Variable
ecc_curves
array(int) SSL.Session.ecc_curves- Description
Supported elliptical curve cipher curves in order of preference.
- Variable
ecc_point_format
intSSL.Session.ecc_point_format- Description
The selected elliptical curve point format.
- Note
May be
-1to indicate that there's no supported overlap between the server and client.
- Variable
encrypt_then_mac
intSSL.Session.encrypt_then_mac- Description
Negotiated encrypt-then-mac mode.
- Variable
extended_master_secret
boolSSL.Session.extended_master_secret- Description
Indicates that the connection uses the Extended Master Secret method of deriving the master secret.
This setting is only relevant for TLS 1.2 and earlier.
- Variable
ffdhe_groups
array(int)|zeroSSL.Session.ffdhe_groups- Description
Supported finite field diffie-hellman groups in order of preference.
int(0)Zero indicates that none have been specified.
array(zero)The empty array indicates that none are supported.
array(int)List of supported groups, with the most preferred first.
- Variable
identity
string(8bit)|zeroSSL.Session.identity- Description
Identifies the session to the server
- Variable
last_activity
intSSL.Session.last_activity- Description
When this session object was used last.
- Variable
master_secret
string(8bit)|zeroSSL.Session.master_secret- Description
48 byte secret shared between the client and the server. Used for deriving the actual keys.
- Variable
max_packet_size
intSSL.Session.max_packet_size- Description
The max fragment size requested by the client.
- Variable
peer_certificate_chain
array(string(8bit))|zeroSSL.Session.peer_certificate_chain- Description
The peer certificate chain
- Variable
peer_public_key
Crypto.Sign.State|zeroSSL.Session.peer_public_key- Description
The peer's public key (from the certificate).
- Variable
server_name
string(8bit)|zeroSSL.Session.server_name- Description
RFC 6066 section 3.1 (SNI)
- Variable
signature_algorithms
array(int) SSL.Session.signature_algorithms- Description
The set of <hash, signature> combinations supported by the peer.
Only used with TLS 1.2 and later.
Defaults to the settings from RFC 5246 section 7.4.1.4.1.
- Variable
ticket
string(8bit)|zeroSSL.Session.ticket- Description
Alternative identification of the session to the server.
- See also
- Variable
ticket_expiry_time
int|zeroSSL.Session.ticket_expiry_time- Description
Expiry time for
ticket.
- Variable
truncated_hmac
boolSSL.Session.truncated_hmac- Description
Indicates that the packet HMACs should be truncated to the first 10 bytes (80 bits). Cf RFC 3546 section 3.5.
- Method
generate_keys
array(string(8bit)) generate_keys(string(8bit)client_random,string(8bit)server_random,ProtocolVersionversion)- Description
Generates keys appropriate for the SSL version given in
version, based on theclient_randomandserver_random.- Returns
Array string0Client write MAC secret
string1Server write MAC secret
string2Client write key
string3Server write key
string4Client write IV
string5Server write IV
- Method
has_required_certificates
boolhas_required_certificates()- Description
Indicates if this session has the required server certificate keys set. No means that no or the wrong type of certificate was sent from the server.
- Method
is_supported_cert
protectedboolis_supported_cert(CertificatePaircp,intke_mask,inth_max,ProtocolVersionversion,array(int)ecc_curves)- Description
Used to filter certificates not supported by the peer.
- Parameter
cp Candidate
CertificatePair.- Parameter
version Negotiated version of SSL.
- Parameter
ecc_curves The set of ecc_curves supported by the peer.
- Method
is_supported_suite
boolis_supported_suite(intsuite,intke_mask,ProtocolVersionversion)- Description
Used to filter the set of cipher suites suggested by the peer based on our available certificates.
- Parameter
suite Candidate cipher suite.
- Parameter
ke_mask The bit mask of the key exchange algorithms supported by the set of available certificates.
- Parameter
version The negotiated version of SSL/TLS.
- Method
new_client_states
array(State) new_client_states(.Connectioncon,string(8bit)client_random,string(8bit)server_random,ProtocolVersionversion)- Description
Computes a new set of encryption states, derived from the client_random, server_random and master_secret strings.
- Returns
Array SSL.Stateread_stateRead state
SSL.Statewrite_stateWrite state
- Method
new_server_states
array(State) new_server_states(.Connectioncon,string(8bit)client_random,string(8bit)server_random,ProtocolVersionversion)- Description
Computes a new set of encryption states, derived from the client_random, server_random and master_secret strings.
- Returns
Array SSL.Stateread_stateRead state
SSL.Statewrite_stateWrite state
- Method
reusable_as
boolreusable_as(Sessionother)- Description
Returns true if this session object can be used in place of the session object
other.
- Method
select_cipher_suite
intselect_cipher_suite(array(CertificatePair)certs,array(int)cipher_suites,ProtocolVersionversion)- Description
Selects an apropriate certificate, authentication method and cipher suite for the parameters provided by the client.
- Parameter
certs The list of
CertificatePairs that are applicable to theserver_nameof this session.- Parameter
cipher_suites The set of cipher suites that the client and server have in common.
- Parameter
version The SSL protocol version to use.
Typical client extensions that also are used:
The set of signature algorithm tuples that the client claims to support.
signature_algorithms
- Method
set_cipher_suite
intset_cipher_suite(intsuite,ProtocolVersionversion,array(int)|zerosignature_algorithms,intmax_hash_size)- Description
Sets the proper authentication method and cipher specification for the given parameters.
- Parameter
suite The cipher suite to use, selected from the set that the client claims to support.
- Parameter
version The SSL protocol version to use.
- Parameter
signature_algorithms The set of signature algorithms tuples that the client claims to support.
- Parameter
max_hash_size
- Method
set_compression_method
voidset_compression_method(intcompr)- Description
Sets the compression method. Currently only
COMPRESSION_nullandCOMPRESSION_deflateare supported.
Class SSL.State
- Description
The state object handles a one-way stream of packets, and operates in either decryption or encryption mode. A connection switches from one set of state objects to another, one or more times during its lifetime.
- Variable
salt
stringSSL.State.salt- Description
TLS 1.2 IV salt. This is used as a prefix for the IV for the AEAD cipher algorithms.
- Method
decrypt_packet
Alert|Packetdecrypt_packet(Packetpacket)- Description
Destructively decrypts a packet (including inflating and MAC-verification, if needed). On success, returns the decrypted packet. On failure, returns an alert packet. These cases are distinguished by looking at the is_alert attribute of the returned packet.
Class SSL.https
- Description
Dummy HTTPS server/client
Module SSL.Cipher
- Description
Encryption and MAC algorithms used in SSL.
- Method
P_hash
protectedstring(8bit)P_hash(Crypto.Hashhashfn,string(8bit)secret,string(8bit)seed,intlen)- Description
Hashfn is either a
Crypto.MD5,Crypto.SHAorCrypto.SHA256.
- Method
lookup
CipherSpec|zerolookup(intsuite,ProtocolVersion|intversion,array(int)|zerosignature_algorithms,intmax_hash_size)- Description
Lookup the crypto parameters for a cipher suite.
- Parameter
suite Cipher suite to lookup.
- Parameter
version Version of the SSL/TLS protocol to support.
- Parameter
signature_algorithms The set of
SignatureSchemevalues that are supported by the other end.- Parameter
max_hash_size The maximum hash size supported for the signature algorithm.
- Returns
Returns
0(zero) for unsupported combinations, otherwise returns an initializedCipherSpecfor thesuite.
- Method
prf_sha384
string(8bit)prf_sha384(string(8bit)secret,string(8bit)label,string(8bit)seed,intlen)- Description
This Pseudo Random Function is used to derive secret keys for some ciphers suites defined after TLS 1.2.
- Method
prf_sha512
string(8bit)prf_sha512(string(8bit)secret,string(8bit)label,string(8bit)seed,intlen)- Description
This Pseudo Random Function could be used to derive secret keys for some ciphers suites defined after TLS 1.2.
- Method
prf_ssl_3_0
string(8bit)prf_ssl_3_0(string(8bit)secret,string(8bit)label,string(8bit)seed,intlen)- Description
This Pseudo Random Function is used to derive secret keys in SSL 3.0.
- Note
The argument
labelis ignored.
- Method
prf_tls_1_0
string(8bit)prf_tls_1_0(string(8bit)secret,string(8bit)label,string(8bit)seed,intlen)- Description
This Pseudo Random Function is used to derive secret keys in TLS 1.0 and 1.1.
- Method
prf_tls_1_2
string(8bit)prf_tls_1_2(string(8bit)secret,string(8bit)label,string(8bit)seed,intlen)- Description
This Pseudo Random Function is used to derive secret keys in TLS 1.2.
Class SSL.Cipher.CipherAlgorithm
- Description
Cipher algorithm interface.
Class SSL.Cipher.CipherSpec
- Description
Cipher specification.
- Variable
bulk_cipher_algorithm
programSSL.Cipher.CipherSpec.bulk_cipher_algorithm- Description
The algorithm to use for the bulk of the transfered data.
- Variable
explicit_iv_size
intSSL.Cipher.CipherSpec.explicit_iv_size- Description
The number of bytes of explicit data needed for initialization vectors. This is used by AEAD ciphers in TLS 1.2, where there's a secret part of the iv "salt" of length
iv_size, and an explicit part that is sent in the clear.This is usually
bulk_cipher_algorithm->iv_size() - iv_size, but may be set to zero to just have the sequence number expanded to the same size as an implicit iv. This is used by the suites withCrypto.ChaCha20.POLY1305.
- Variable
hash
Crypto.HashSSL.Cipher.CipherSpec.hash- Description
The hash algorithm for signing the handshake.
Usually the same hash as is the base for the
prf.- Note
Only used in TLS 1.2 and later.
- Variable
hash_size
intSSL.Cipher.CipherSpec.hash_size- Description
The number of bytes in the MAC hashes.
- Variable
is_exportable
intSSL.Cipher.CipherSpec.is_exportable- Description
Indication whether the combination uses strong or weak (aka exportable) crypto.
- Variable
iv_size
intSSL.Cipher.CipherSpec.iv_size- Description
The number of bytes of random data needed for initialization vectors.
- Variable
key_bits
intSSL.Cipher.CipherSpec.key_bits- Description
The effective number of bits in
key_material.This is typically
key_material * 8, but for egDESthis iskey_material * 7.
- Variable
key_material
intSSL.Cipher.CipherSpec.key_material- Description
The number of bytes of key material used on initialization.
- Variable
mac_algorithm
programSSL.Cipher.CipherSpec.mac_algorithm- Description
The Message Authentication Code to use for the packets.
- Variable
max_bytes
intSSL.Cipher.CipherSpec.max_bytes- Description
The number of bytes that is safe to send before we must renegotiate the keys.
- Variable
prf
function(string(8bit),string(8bit),string(8bit),int:string(8bit)) SSL.Cipher.CipherSpec.prf- Description
The Pseudo Random Function to use.
- See also
prf_ssl_3_0(),prf_tls_1_0(),prf_tls_1_2()
- Variable
signature_alg
SignatureAlgorithmSSL.Cipher.CipherSpec.signature_alg- Description
The signature algorithm used for key exchange signatures.
- Variable
signature_hash
HashAlgorithmSSL.Cipher.CipherSpec.signature_hash- Description
The hash algorithm used for key exchange signatures.
- Method
sign
Stdio.Buffersign(objectsession,string(8bit)cookie,Stdio.Bufferstruct)- Description
The function used to sign packets.
Class SSL.Cipher.KeyExchange
- Description
KeyExchange method base class.
- Variable
anonymous
intSSL.Cipher.KeyExchange.anonymous- Description
Indicates whether a certificate isn't required.
- Variable
context
Variable session
Variable connection
Variable client_version objectSSL.Cipher.KeyExchange.contextobjectSSL.Cipher.KeyExchange.sessionobjectSSL.Cipher.KeyExchange.connectionProtocolVersionSSL.Cipher.KeyExchange.client_version
- Variable
message_was_bad
intSSL.Cipher.KeyExchange.message_was_bad- Description
Indicates whether the key exchange has failed due to bad MACs.
- Method
__create__
protectedlocalvoid__create__(objectcontext,objectsession,objectconnection,ProtocolVersionclient_version)
- Method
client_key_exchange_packet
string(8bit)client_key_exchange_packet(Stdio.Bufferpacket_data,ProtocolVersionversion)- Returns
Returns the premaster secret, and fills in the payload for a
HANDSHAKE_client_key_exchangepacket in the submitted buffer.May return
0(zero) to generate anALERT_unexpected_message.
- Method
create
SSL.Cipher.KeyExchangeSSL.Cipher.KeyExchange(objectcontext,objectsession,objectconnection,ProtocolVersionclient_version)
- Method
got_client_key_exchange
string(8bit)|int(8bit)got_client_key_exchange(Stdio.Bufferdata,ProtocolVersionversion)- Parameter
data Payload from a
HANDSHAKE_client_key_exchange.- Returns
Premaster secret or alert number.
- Note
May set
message_was_badand return a fake premaster secret.
- Method
got_server_key_exchange
intgot_server_key_exchange(Stdio.Bufferinput,stringclient_random,stringserver_random)- Parameter
input Stdio.Bufferwith the content of aHANDSHAKE_server_key_exchange.The default implementation calls
parse_server_key_exchange(), and then verifies the signature.- Returns
0Returns zero on success.
-1Returns negative on verification failure.
- Method
init_client
boolinit_client()- Description
Initialize for client side use.
- Returns
Returns
1on success, and0(zero) on failure.
- Method
init_server
boolinit_server()- Description
Initialize for server side use.
- Returns
Returns
1on success, and0(zero) on failure.
- Method
make_key_share_offer
optionalvoidmake_key_share_offer(Stdio.Bufferoffer)- Description
TLS 1.3 and later.
Generate a key share offer for the configured named group (currently only implemented in
KeyShareECDHEandKeyShareDHE).
- Method
parse_server_key_exchange
Stdio.Bufferparse_server_key_exchange(Stdio.Bufferinput)- Parameter
input Stdio.Bufferwith the content of aHANDSHAKE_server_key_exchange.- Returns
The key exchange information should be extracted from
input, so that it is positioned at the signature.Returns a new
Stdio.Bufferwith the unsigned payload ofinput.
- Method
receive_key_share_offer
optionalstring(8bit)receive_key_share_offer(string(8bit)offer)- Description
TLS 1.3 and later.
Receive a key share offer key exchange for the configured group (currently only implemented in
KeyShareECDHEandKeyShareDHE).- Note
Clears the secret state.
- Returns
Returns the shared pre-master key.
- Method
server_key_exchange_packet
string(8bit)|zeroserver_key_exchange_packet(stringclient_random,stringserver_random)- Description
The default implementation calls
server_key_params()to generate the base payload.- Returns
Returns the signed payload for a
HANDSHAKE_server_key_exchange.
- Method
server_key_params
Stdio.Bufferserver_key_params()- Returns
Returns an
Stdio.Bufferwith theHANDSHAKE_server_key_exchangepayload.
Class SSL.Cipher.KeyExchangeDH
- Description
Key exchange for
KE_dh_dssandKE_dh_dss.KeyExchangethat uses Diffie-Hellman with a key from a DSS certificate.
Class SSL.Cipher.KeyExchangeDHE
- Description
KeyExchange for
KE_dhe_rsa,KE_dhe_dssandKE_dh_anon.KeyExchange that uses Diffie-Hellman to generate an Ephemeral key.
- Variable
parameters
Crypto.DH.ParametersSSL.Cipher.KeyExchangeDHE.parameters- Description
Finite field Diffie-Hellman parameters.
- Method
got_client_key_exchange
string(8bit)|int(8bit)got_client_key_exchange(Stdio.Bufferinput,ProtocolVersionversion)- Returns
Premaster secret or alert number.
Class SSL.Cipher.KeyExchangeDHEPSK
- Description
Key exchange for
KE_dhe_psk.
Class SSL.Cipher.KeyExchangeECDH
- Description
KeyExchange for
KE_ecdh_rsaandKE_ecdh_ecdsa.NB: The only difference between the two is whether the certificate is signed with RSA or ECDSA.
This KeyExchange uses the Elliptic Curve parameters from the ECDSA certificate on the server side, and ephemeral parameters on the client side.
- Note
Deprecated in RFC 8422 section 5.5.
Class SSL.Cipher.KeyExchangeECDHE
- Description
KeyExchange for
KE_ecdhe_rsa,KE_ecdhe_ecdsaandKE_ecdh_anon.KeyExchange that uses Elliptic Curve Diffie-Hellman or Edwards Curve Diffie-Hellman to generate an Ephemeral key.
Class SSL.Cipher.KeyExchangeECDHEPSK
- Description
Key exchange for
KE_ecdhe_psk.
Class SSL.Cipher.KeyExchangeExportRSA
- Description
Key exchange for
KE_rsa_export.KeyExchangethat uses the Rivest Shamir Adelman algorithm, but limited to 512 bits for encryption and decryption.
Class SSL.Cipher.KeyExchangeKRB
- Description
Key exchange for
KE_krb.KeyExchangethat uses Kerberos (RFC 2712).
Class SSL.Cipher.KeyExchangeNULL
- Description
Key exchange for
KE_null.This is the NULL
KeyExchange, which is only used for theSSL_null_with_null_nullcipher suite, which is usually disabled.
Class SSL.Cipher.KeyExchangePSK
- Description
Key exchange for
KE_psk, pre shared keys.
Class SSL.Cipher.KeyExchangeRSA
- Description
Key exchange for
KE_rsa.KeyExchangethat uses the Rivest Shamir Adelman algorithm.
Class SSL.Cipher.KeyExchangeRSAPSK
- Description
Key exchange for
KE_rsa_psk.
Class SSL.Cipher.MACAlgorithm
- Description
Message Authentication Code interface.
- Constant
hash_header_size
constantintSSL.Cipher.MACAlgorithm.hash_header_size- Description
The length of the header prefixed by
hash().
- Method
hash
stringhash(stringdata)- Description
Creates a HMAC hash of the
datawith the underlying hash algorithm.
- Method
hash_packet
stringhash_packet(objectpacket,int|voidadjust_len)- Description
Generates a header and creates a HMAC hash for the given
packet.- Parameter
packet Packetto generate a MAC hash for.- Parameter
adjust_len Added to sizeof(packet) to get the packet length.
- Returns
Returns the MAC hash for the
packet.
Class SSL.Cipher.MAChmac_md5
- Description
HMAC using MD5.
This is the MAC algorithm used by TLS 1.0 and later.
Class SSL.Cipher.MAChmac_sha
- Description
HMAC using SHA.
This is the MAC algorithm used by TLS 1.0 and later.
Class SSL.Cipher.MAChmac_sha256
- Description
HMAC using SHA256.
This is the MAC algorithm used by some cipher suites in TLS 1.2 and later.
Class SSL.Cipher.MAChmac_sha384
- Description
HMAC using SHA384.
This is a MAC algorithm used by some cipher suites in TLS 1.2 and later.
Class SSL.Cipher.MAChmac_sha512
- Description
HMAC using SHA512.
This is a MAC algorithm used by some cipher suites in TLS 1.2 and later.
Class SSL.Cipher.MACmd5
- Description
MAC using MD5.
- Note
Note: This uses the algorithm from the SSL 3.0 draft.
Class SSL.Cipher.MACsha
- Description
MAC using SHA.
- Note
Note: This uses the algorithm from the SSL 3.0 draft.
Module SSL.Constants
- Description
Protocol constants
- Constant
AUTHLEVEL_ask
constantintSSL.Constants.AUTHLEVEL_ask- Description
As a server, request a certificate, but don't require a response. This AUTHLEVEL is not relevant for clients.
- Constant
AUTHLEVEL_none
constantintSSL.Constants.AUTHLEVEL_none- Description
Don't request nor check any certificate.
- Constant
AUTHLEVEL_require
constantintSSL.Constants.AUTHLEVEL_require- Description
Require other party to send a valid certificate.
- Constant
AUTHLEVEL_verify
constantintSSL.Constants.AUTHLEVEL_verify- Description
Don't request, but verify any certificate.
- Constant
CIPHER_SUITES
constantSSL.Constants.CIPHER_SUITES- Description
A mapping from cipher suite identifier to an array defining the algorithms to be used in that suite.
Array KeyExchangeType0The key exchange algorithm to be used for this suite, or 0. E.g.
KE_rsa.int1The cipher algorithm to be used for this suite, or 0. E.g.
CIPHER_aes.HashAlgorithm2The hash algorithm to be used for this suite, or 0. E.g.
HASH_sha1.CipherModes3Optionally for TLS 1.2 and later cipher suites the mode of operation. E.g.
MODE_cbc.
- Constant
CIPHER_effective_keylengths
constantSSL.Constants.CIPHER_effective_keylengths- Description
Mapping from cipher algorithm to effective key length.
- Constant
ECC_NAME_TO_CURVE
constantSSL.Constants.ECC_NAME_TO_CURVE- Description
Lookup for Pike ECC name to
NamedGroup.
- Constant
HASH_lookup
constantSSL.Constants.HASH_lookup- Description
Lookup from
HashAlgorithmto correspondingCrypto.Hash.
- Constant
KE_Anonymous
constantSSL.Constants.KE_Anonymous- Description
Lists
KeyExchangeTypethat doesn't require certificates.
- Constant
PROTOCOL_TLS_MAX
constantSSL.Constants.PROTOCOL_TLS_MAX- Description
Max supported TLS version.
- Method
fmt_cipher_suite
stringfmt_cipher_suite(intsuite)- Description
Return a descriptive name for a cipher suite.
- Parameter
suite Cipher suite to format.
- Method
fmt_cipher_suites
stringfmt_cipher_suites(array(int)s)- Description
Pretty-print an array of cipher suites.
- Parameter
s Array of cipher suites to format.
- Method
fmt_constant
stringfmt_constant(intc,stringprefix)- Description
Return a descriptive name for a constant value.
- Parameter
c Value to format.
- Parameter
prefix Constant name prefix. Eg
"CONNECTION".
- Method
fmt_signature_pairs
stringfmt_signature_pairs(array(int)pairs)- Description
Pretty-print an array of
SignatureSchemes.- Parameter
pairs Array of signature pairs to format.
- Method
fmt_version
stringfmt_version(ProtocolVersionversion)- Description
Pretty-print a
ProtocolVersion.- Parameter
version ProtocolVersionto format.
Enum SSL.Constants.ALPNProtocol
- Description
Application Level Protocol Negotiation protocol identifiers.
- See also
EXTENSION_application_layer_protocol_negotiation
- Constant
ALPN_http_1_1
Constant ALPN_spdy_1
Constant ALPN_spdy_2
Constant ALPN_spdy_3
Constant ALPN_turn
Constant ALPN_stun
Constant ALPN_http_2
Constant ALPN_http_2_reserved constantSSL.Constants.ALPN_http_1_1constantSSL.Constants.ALPN_spdy_1constantSSL.Constants.ALPN_spdy_2constantSSL.Constants.ALPN_spdy_3constantSSL.Constants.ALPN_turnconstantSSL.Constants.ALPN_stunconstantSSL.Constants.ALPN_http_2constantSSL.Constants.ALPN_http_2_reserved
Enum SSL.Constants.AuthzDataFormat
Enum SSL.Constants.CertificateType
Enum SSL.Constants.CipherModes
- Description
Cipher operation modes.
- Constant
MODE_ccm_8
constantSSL.Constants.MODE_ccm_8- Description
CCM - Counter with 8 bit CBC-MAC mode.
Enum SSL.Constants.CipherSuite
- Constant
SSL_invalid_suite
Constant SSL_null_with_null_null
Constant SSL_rsa_with_null_md5
Constant SSL_rsa_with_null_sha
Constant SSL_rsa_export_with_rc4_40_md5
Constant SSL_rsa_with_rc4_128_md5
Constant SSL_rsa_with_rc4_128_sha
Constant SSL_rsa_export_with_rc2_cbc_40_md5
Constant SSL_rsa_with_idea_cbc_sha
Constant TLS_rsa_with_idea_cbc_sha
Constant SSL_rsa_export_with_des40_cbc_sha
Constant SSL_rsa_with_des_cbc_sha
Constant TLS_rsa_with_des_cbc_sha
Constant SSL_rsa_with_3des_ede_cbc_sha
Constant SSL_dh_dss_export_with_des40_cbc_sha
Constant SSL_dh_dss_with_des_cbc_sha
Constant TLS_dh_dss_with_des_cbc_sha
Constant SSL_dh_dss_with_3des_ede_cbc_sha
Constant SSL_dh_rsa_export_with_des40_cbc_sha
Constant SSL_dh_rsa_with_des_cbc_sha
Constant TLS_dh_rsa_with_des_cbc_sha
Constant SSL_dh_rsa_with_3des_ede_cbc_sha
Constant SSL_dhe_dss_export_with_des40_cbc_sha
Constant SSL_dhe_dss_with_des_cbc_sha
Constant TLS_dhe_dss_with_des_cbc_sha
Constant SSL_dhe_dss_with_3des_ede_cbc_sha
Constant SSL_dhe_rsa_export_with_des40_cbc_sha
Constant SSL_dhe_rsa_with_des_cbc_sha
Constant TLS_dhe_rsa_with_des_cbc_sha
Constant SSL_dhe_rsa_with_3des_ede_cbc_sha
Constant SSL_dh_anon_export_with_rc4_40_md5
Constant SSL_dh_anon_with_rc4_128_md5
Constant SSL_dh_anon_export_with_des40_cbc_sha
Constant SSL_dh_anon_with_des_cbc_sha
Constant TLS_dh_anon_with_des_cbc_sha
Constant SSL_dh_anon_with_3des_ede_cbc_sha constantSSL.Constants.SSL_invalid_suiteconstantSSL.Constants.SSL_null_with_null_nullconstantSSL.Constants.SSL_rsa_with_null_md5constantSSL.Constants.SSL_rsa_with_null_shaconstantSSL.Constants.SSL_rsa_export_with_rc4_40_md5constantSSL.Constants.SSL_rsa_with_rc4_128_md5constantSSL.Constants.SSL_rsa_with_rc4_128_shaconstantSSL.Constants.SSL_rsa_export_with_rc2_cbc_40_md5constantSSL.Constants.SSL_rsa_with_idea_cbc_shaconstantSSL.Constants.TLS_rsa_with_idea_cbc_shaconstantSSL.Constants.SSL_rsa_export_with_des40_cbc_shaconstantSSL.Constants.SSL_rsa_with_des_cbc_shaconstantSSL.Constants.TLS_rsa_with_des_cbc_shaconstantSSL.Constants.SSL_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.SSL_dh_dss_export_with_des40_cbc_shaconstantSSL.Constants.SSL_dh_dss_with_des_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_des_cbc_shaconstantSSL.Constants.SSL_dh_dss_with_3des_ede_cbc_shaconstantSSL.Constants.SSL_dh_rsa_export_with_des40_cbc_shaconstantSSL.Constants.SSL_dh_rsa_with_des_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_des_cbc_shaconstantSSL.Constants.SSL_dh_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.SSL_dhe_dss_export_with_des40_cbc_shaconstantSSL.Constants.SSL_dhe_dss_with_des_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_des_cbc_shaconstantSSL.Constants.SSL_dhe_dss_with_3des_ede_cbc_shaconstantSSL.Constants.SSL_dhe_rsa_export_with_des40_cbc_shaconstantSSL.Constants.SSL_dhe_rsa_with_des_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_des_cbc_shaconstantSSL.Constants.SSL_dhe_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.SSL_dh_anon_export_with_rc4_40_md5constantSSL.Constants.SSL_dh_anon_with_rc4_128_md5constantSSL.Constants.SSL_dh_anon_export_with_des40_cbc_shaconstantSSL.Constants.SSL_dh_anon_with_des_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_des_cbc_shaconstantSSL.Constants.SSL_dh_anon_with_3des_ede_cbc_sha
- Constant
SSL_rsa_fips_with_des_cbc_sha
Constant SSL_rsa_fips_with_3des_ede_cbc_sha constantSSL.Constants.SSL_rsa_fips_with_des_cbc_shaconstantSSL.Constants.SSL_rsa_fips_with_3des_ede_cbc_sha
- Constant
SSL_rsa_oldfips_with_des_cbc_sha
Constant SSL_rsa_oldfips_with_3des_ede_cbc_sha constantSSL.Constants.SSL_rsa_oldfips_with_des_cbc_shaconstantSSL.Constants.SSL_rsa_oldfips_with_3des_ede_cbc_sha
- Constant
SSL_rsa_with_rc2_cbc_md5
Constant SSL_rsa_with_idea_cbc_md5
Constant SSL_rsa_with_des_cbc_md5
Constant SSL_rsa_with_3des_ede_cbc_md5 constantSSL.Constants.SSL_rsa_with_rc2_cbc_md5constantSSL.Constants.SSL_rsa_with_idea_cbc_md5constantSSL.Constants.SSL_rsa_with_des_cbc_md5constantSSL.Constants.SSL_rsa_with_3des_ede_cbc_md5
- Constant
TLS_aes_128_gcm_sha256
Constant TLS_aes_256_gcm_sha384
Constant TLS_chacha20_poly1305_sha256
Constant TLS_aes_128_ccm_sha256
Constant TLS_aes_128_ccm_8_sha256 constantSSL.Constants.TLS_aes_128_gcm_sha256constantSSL.Constants.TLS_aes_256_gcm_sha384constantSSL.Constants.TLS_chacha20_poly1305_sha256constantSSL.Constants.TLS_aes_128_ccm_sha256constantSSL.Constants.TLS_aes_128_ccm_8_sha256
- Constant
TLS_krb5_with_des_cbc_sha
Constant TLS_krb5_with_3des_ede_cbc_sha
Constant TLS_krb5_with_rc4_128_sha
Constant TLS_krb5_with_idea_cbc_sha
Constant TLS_krb5_with_des_cbc_md5
Constant TLS_krb5_with_3des_ede_cbc_md5
Constant TLS_krb5_with_rc4_128_md5
Constant TLS_krb5_with_idea_cbc_md5
Constant TLS_krb5_export_with_des_cbc_40_sha
Constant TLS_krb5_export_with_rc2_cbc_40_sha
Constant TLS_krb5_export_with_rc4_40_sha
Constant TLS_krb5_export_with_des_cbc_40_md5
Constant TLS_krb5_export_with_rc2_cbc_40_md5
Constant TLS_krb5_export_with_rc4_40_md5
Constant TLS_psk_with_null_sha
Constant TLS_dhe_psk_with_null_sha
Constant TLS_rsa_psk_with_null_sha
Constant TLS_rsa_with_aes_128_cbc_sha
Constant TLS_dh_dss_with_aes_128_cbc_sha
Constant TLS_dh_rsa_with_aes_128_cbc_sha
Constant TLS_dhe_dss_with_aes_128_cbc_sha
Constant TLS_dhe_rsa_with_aes_128_cbc_sha
Constant TLS_dh_anon_with_aes_128_cbc_sha
Constant TLS_rsa_with_aes_256_cbc_sha
Constant TLS_dh_dss_with_aes_256_cbc_sha
Constant TLS_dh_rsa_with_aes_256_cbc_sha
Constant TLS_dhe_dss_with_aes_256_cbc_sha
Constant TLS_dhe_rsa_with_aes_256_cbc_sha
Constant TLS_dh_anon_with_aes_256_cbc_sha
Constant TLS_rsa_with_null_sha256
Constant TLS_rsa_with_aes_128_cbc_sha256
Constant TLS_rsa_with_aes_256_cbc_sha256
Constant TLS_dh_dss_with_aes_128_cbc_sha256
Constant TLS_dh_rsa_with_aes_128_cbc_sha256
Constant TLS_dhe_dss_with_aes_128_cbc_sha256
Constant TLS_rsa_with_camellia_128_cbc_sha
Constant TLS_dh_dss_with_camellia_128_cbc_sha
Constant TLS_dh_rsa_with_camellia_128_cbc_sha
Constant TLS_dhe_dss_with_camellia_128_cbc_sha
Constant TLS_dhe_rsa_with_camellia_128_cbc_sha
Constant TLS_dh_anon_with_camellia_128_cbc_sha constantSSL.Constants.TLS_krb5_with_des_cbc_shaconstantSSL.Constants.TLS_krb5_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_krb5_with_rc4_128_shaconstantSSL.Constants.TLS_krb5_with_idea_cbc_shaconstantSSL.Constants.TLS_krb5_with_des_cbc_md5constantSSL.Constants.TLS_krb5_with_3des_ede_cbc_md5constantSSL.Constants.TLS_krb5_with_rc4_128_md5constantSSL.Constants.TLS_krb5_with_idea_cbc_md5constantSSL.Constants.TLS_krb5_export_with_des_cbc_40_shaconstantSSL.Constants.TLS_krb5_export_with_rc2_cbc_40_shaconstantSSL.Constants.TLS_krb5_export_with_rc4_40_shaconstantSSL.Constants.TLS_krb5_export_with_des_cbc_40_md5constantSSL.Constants.TLS_krb5_export_with_rc2_cbc_40_md5constantSSL.Constants.TLS_krb5_export_with_rc4_40_md5constantSSL.Constants.TLS_psk_with_null_shaconstantSSL.Constants.TLS_dhe_psk_with_null_shaconstantSSL.Constants.TLS_rsa_psk_with_null_shaconstantSSL.Constants.TLS_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_aes_128_cbc_shaconstantSSL.Constants.TLS_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_aes_256_cbc_shaconstantSSL.Constants.TLS_rsa_with_null_sha256constantSSL.Constants.TLS_rsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_rsa_with_aes_256_cbc_sha256constantSSL.Constants.TLS_dh_dss_with_aes_128_cbc_sha256constantSSL.Constants.TLS_dh_rsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_dhe_dss_with_aes_128_cbc_sha256constantSSL.Constants.TLS_rsa_with_camellia_128_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_camellia_128_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_camellia_128_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_camellia_128_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_camellia_128_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_camellia_128_cbc_sha
- Constant
TLS_dhe_rsa_with_aes_128_cbc_sha256
Constant TLS_dh_dss_with_aes_256_cbc_sha256
Constant TLS_dh_rsa_with_aes_256_cbc_sha256
Constant TLS_dhe_dss_with_aes_256_cbc_sha256
Constant TLS_dhe_rsa_with_aes_256_cbc_sha256
Constant TLS_dh_anon_with_aes_128_cbc_sha256
Constant TLS_dh_anon_with_aes_256_cbc_sha256 constantSSL.Constants.TLS_dhe_rsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_dh_dss_with_aes_256_cbc_sha256constantSSL.Constants.TLS_dh_rsa_with_aes_256_cbc_sha256constantSSL.Constants.TLS_dhe_dss_with_aes_256_cbc_sha256constantSSL.Constants.TLS_dhe_rsa_with_aes_256_cbc_sha256constantSSL.Constants.TLS_dh_anon_with_aes_128_cbc_sha256constantSSL.Constants.TLS_dh_anon_with_aes_256_cbc_sha256
- Constant
TLS_rsa_with_camellia_256_cbc_sha
Constant TLS_dh_dss_with_camellia_256_cbc_sha
Constant TLS_dh_rsa_with_camellia_256_cbc_sha
Constant TLS_dhe_dss_with_camellia_256_cbc_sha
Constant TLS_dhe_rsa_with_camellia_256_cbc_sha
Constant TLS_dh_anon_with_camellia_256_cbc_sha
Constant TLS_psk_with_rc4_128_sha
Constant TLS_psk_with_3des_ede_cbc_sha
Constant TLS_psk_with_aes_128_cbc_sha
Constant TLS_psk_with_aes_256_cbc_sha
Constant TLS_dhe_psk_with_rc4_128_sha
Constant TLS_dhe_psk_with_3des_ede_cbc_sha
Constant TLS_dhe_psk_with_aes_128_cbc_sha
Constant TLS_dhe_psk_with_aes_256_cbc_sha
Constant TLS_rsa_psk_with_rc4_128_sha
Constant TLS_rsa_psk_with_3des_ede_cbc_sha
Constant TLS_rsa_psk_with_aes_128_cbc_sha
Constant TLS_rsa_psk_with_aes_256_cbc_sha
Constant TLS_rsa_with_seed_cbc_sha
Constant TLS_dh_dss_with_seed_cbc_sha
Constant TLS_dh_rsa_with_seed_cbc_sha
Constant TLS_dhe_dss_with_seed_cbc_sha
Constant TLS_dhe_rsa_with_seed_cbc_sha
Constant TLS_dh_anon_with_seed_cbc_sha
Constant TLS_rsa_with_aes_128_gcm_sha256
Constant TLS_rsa_with_aes_256_gcm_sha384
Constant TLS_dhe_rsa_with_aes_128_gcm_sha256
Constant TLS_dhe_rsa_with_aes_256_gcm_sha384
Constant TLS_dh_rsa_with_aes_128_gcm_sha256
Constant TLS_dh_rsa_with_aes_256_gcm_sha384
Constant TLS_dhe_dss_with_aes_128_gcm_sha256
Constant TLS_dhe_dss_with_aes_256_gcm_sha384
Constant TLS_dh_dss_with_aes_128_gcm_sha256
Constant TLS_dh_dss_with_aes_256_gcm_sha384
Constant TLS_dh_anon_with_aes_128_gcm_sha256
Constant TLS_dh_anon_with_aes_256_gcm_sha384
Constant TLS_psk_with_aes_128_gcm_sha256
Constant TLS_psk_with_aes_256_gcm_sha384
Constant TLS_dhe_psk_with_aes_128_gcm_sha256
Constant TLS_dhe_psk_with_aes_256_gcm_sha384
Constant TLS_rsa_psk_with_aes_128_gcm_sha256
Constant TLS_rsa_psk_with_aes_256_gcm_sha384
Constant TLS_psk_with_aes_128_cbc_sha256
Constant TLS_psk_with_aes_256_cbc_sha384
Constant TLS_psk_with_null_sha256
Constant TLS_psk_with_null_sha384
Constant TLS_dhe_psk_with_aes_128_cbc_sha256
Constant TLS_dhe_psk_with_aes_256_cbc_sha384
Constant TLS_dhe_psk_with_null_sha256
Constant TLS_dhe_psk_with_null_sha384
Constant TLS_rsa_psk_with_aes_128_cbc_sha256
Constant TLS_rsa_psk_with_aes_256_cbc_sha384
Constant TLS_rsa_psk_with_null_sha256
Constant TLS_rsa_psk_with_null_sha384
Constant TLS_rsa_with_camellia_128_cbc_sha256
Constant TLS_dh_dss_with_camellia_128_cbc_sha256
Constant TLS_dh_rsa_with_camellia_128_cbc_sha256
Constant TLS_dhe_dss_with_camellia_128_cbc_sha256
Constant TLS_dhe_rsa_with_camellia_128_cbc_sha256
Constant TLS_dh_anon_with_camellia_128_cbc_sha256
Constant TLS_rsa_with_camellia_256_cbc_sha256
Constant TLS_dh_dss_with_camellia_256_cbc_sha256
Constant TLS_dh_rsa_with_camellia_256_cbc_sha256
Constant TLS_dhe_dss_with_camellia_256_cbc_sha256
Constant TLS_dhe_rsa_with_camellia_256_cbc_sha256
Constant TLS_dh_anon_with_camellia_256_cbc_sha256
Constant TLS_sm4_gcm_sm3
Constant TLS_sm4_ccm_sm3 constantSSL.Constants.TLS_rsa_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_camellia_256_cbc_shaconstantSSL.Constants.TLS_psk_with_rc4_128_shaconstantSSL.Constants.TLS_psk_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_psk_with_aes_128_cbc_shaconstantSSL.Constants.TLS_psk_with_aes_256_cbc_shaconstantSSL.Constants.TLS_dhe_psk_with_rc4_128_shaconstantSSL.Constants.TLS_dhe_psk_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_dhe_psk_with_aes_128_cbc_shaconstantSSL.Constants.TLS_dhe_psk_with_aes_256_cbc_shaconstantSSL.Constants.TLS_rsa_psk_with_rc4_128_shaconstantSSL.Constants.TLS_rsa_psk_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_rsa_psk_with_aes_128_cbc_shaconstantSSL.Constants.TLS_rsa_psk_with_aes_256_cbc_shaconstantSSL.Constants.TLS_rsa_with_seed_cbc_shaconstantSSL.Constants.TLS_dh_dss_with_seed_cbc_shaconstantSSL.Constants.TLS_dh_rsa_with_seed_cbc_shaconstantSSL.Constants.TLS_dhe_dss_with_seed_cbc_shaconstantSSL.Constants.TLS_dhe_rsa_with_seed_cbc_shaconstantSSL.Constants.TLS_dh_anon_with_seed_cbc_shaconstantSSL.Constants.TLS_rsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_rsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dhe_rsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dhe_rsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dh_rsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dh_rsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dhe_dss_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dhe_dss_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dh_dss_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dh_dss_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dh_anon_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dh_anon_with_aes_256_gcm_sha384constantSSL.Constants.TLS_psk_with_aes_128_gcm_sha256constantSSL.Constants.TLS_psk_with_aes_256_gcm_sha384constantSSL.Constants.TLS_dhe_psk_with_aes_128_gcm_sha256constantSSL.Constants.TLS_dhe_psk_with_aes_256_gcm_sha384constantSSL.Constants.TLS_rsa_psk_with_aes_128_gcm_sha256constantSSL.Constants.TLS_rsa_psk_with_aes_256_gcm_sha384constantSSL.Constants.TLS_psk_with_aes_128_cbc_sha256constantSSL.Constants.TLS_psk_with_aes_256_cbc_sha384constantSSL.Constants.TLS_psk_with_null_sha256constantSSL.Constants.TLS_psk_with_null_sha384constantSSL.Constants.TLS_dhe_psk_with_aes_128_cbc_sha256constantSSL.Constants.TLS_dhe_psk_with_aes_256_cbc_sha384constantSSL.Constants.TLS_dhe_psk_with_null_sha256constantSSL.Constants.TLS_dhe_psk_with_null_sha384constantSSL.Constants.TLS_rsa_psk_with_aes_128_cbc_sha256constantSSL.Constants.TLS_rsa_psk_with_aes_256_cbc_sha384constantSSL.Constants.TLS_rsa_psk_with_null_sha256constantSSL.Constants.TLS_rsa_psk_with_null_sha384constantSSL.Constants.TLS_rsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dh_dss_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dh_rsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dhe_dss_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dhe_rsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dh_anon_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_rsa_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_dh_dss_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_dh_rsa_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_dhe_dss_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_dhe_rsa_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_dh_anon_with_camellia_256_cbc_sha256constantSSL.Constants.TLS_sm4_gcm_sm3constantSSL.Constants.TLS_sm4_ccm_sm3
- Constant
TLS_ecdh_ecdsa_with_null_sha
Constant TLS_ecdh_ecdsa_with_rc4_128_sha
Constant TLS_ecdh_ecdsa_with_3des_ede_cbc_sha
Constant TLS_ecdh_ecdsa_with_aes_128_cbc_sha
Constant TLS_ecdh_ecdsa_with_aes_256_cbc_sha
Constant TLS_ecdhe_ecdsa_with_null_sha
Constant TLS_ecdhe_ecdsa_with_rc4_128_sha
Constant TLS_ecdhe_ecdsa_with_3des_ede_cbc_sha
Constant TLS_ecdhe_ecdsa_with_aes_128_cbc_sha
Constant TLS_ecdhe_ecdsa_with_aes_256_cbc_sha
Constant TLS_ecdh_rsa_with_null_sha
Constant TLS_ecdh_rsa_with_rc4_128_sha
Constant TLS_ecdh_rsa_with_3des_ede_cbc_sha
Constant TLS_ecdh_rsa_with_aes_128_cbc_sha
Constant TLS_ecdh_rsa_with_aes_256_cbc_sha
Constant TLS_ecdhe_rsa_with_null_sha
Constant TLS_ecdhe_rsa_with_rc4_128_sha
Constant TLS_ecdhe_rsa_with_3des_ede_cbc_sha
Constant TLS_ecdhe_rsa_with_aes_128_cbc_sha
Constant TLS_ecdhe_rsa_with_aes_256_cbc_sha
Constant TLS_ecdh_anon_with_null_sha
Constant TLS_ecdh_anon_with_rc4_128_sha
Constant TLS_ecdh_anon_with_3des_ede_cbc_sha
Constant TLS_ecdh_anon_with_aes_128_cbc_sha
Constant TLS_ecdh_anon_with_aes_256_cbc_sha
Constant TLS_srp_sha_with_3des_ede_cbc_sha
Constant TLS_srp_sha_rsa_with_3des_ede_cbc_sha
Constant TLS_srp_sha_dss_with_3des_ede_cbc_sha
Constant TLS_srp_sha_with_aes_128_cbc_sha
Constant TLS_srp_sha_rsa_with_aes_128_cbc_sha
Constant TLS_srp_sha_dss_with_aes_128_cbc_sha
Constant TLS_srp_sha_with_aes_256_cbc_sha
Constant TLS_srp_sha_rsa_with_aes_256_cbc_sha
Constant TLS_srp_sha_dss_with_aes_256_cbc_sha
Constant TLS_ecdhe_ecdsa_with_aes_128_cbc_sha256
Constant TLS_ecdhe_ecdsa_with_aes_256_cbc_sha384
Constant TLS_ecdh_ecdsa_with_aes_128_cbc_sha256
Constant TLS_ecdh_ecdsa_with_aes_256_cbc_sha384
Constant TLS_ecdhe_rsa_with_aes_128_cbc_sha256
Constant TLS_ecdhe_rsa_with_aes_256_cbc_sha384
Constant TLS_ecdh_rsa_with_aes_128_cbc_sha256
Constant TLS_ecdh_rsa_with_aes_256_cbc_sha384
Constant TLS_ecdhe_ecdsa_with_aes_128_gcm_sha256
Constant TLS_ecdhe_ecdsa_with_aes_256_gcm_sha384
Constant TLS_ecdh_ecdsa_with_aes_128_gcm_sha256
Constant TLS_ecdh_ecdsa_with_aes_256_gcm_sha384
Constant TLS_ecdhe_rsa_with_aes_128_gcm_sha256
Constant TLS_ecdhe_rsa_with_aes_256_gcm_sha384
Constant TLS_ecdh_rsa_with_aes_128_gcm_sha256
Constant TLS_ecdh_rsa_with_aes_256_gcm_sha384
Constant TLS_ecdhe_psk_with_rc4_128_sha
Constant TLS_ecdhe_psk_with_3des_ede_cbc_sha
Constant TLS_ecdhe_psk_with_aes_128_cbc_sha
Constant TLS_ecdhe_psk_with_aes_256_cbc_sha
Constant TLS_ecdhe_psk_with_aes_128_cbc_sha256
Constant TLS_ecdhe_psk_with_aes_256_cbc_sha384
Constant TLS_ecdhe_psk_with_null_sha
Constant TLS_ecdhe_psk_with_null_sha256
Constant TLS_ecdhe_psk_with_null_sha384
Constant TLS_rsa_with_aria_128_cbc_sha256
Constant TLS_rsa_with_aria_256_cbc_sha384
Constant TLS_dh_dss_with_aria_128_cbc_sha256
Constant TLS_dh_dss_with_aria_256_cbc_sha384
Constant TLS_dh_rsa_with_aria_128_cbc_sha256
Constant TLS_dh_rsa_with_aria_256_cbc_sha384
Constant TLS_dhe_dss_with_aria_128_cbc_sha256
Constant TLS_dhe_dss_with_aria_256_cbc_sha384
Constant TLS_dhe_rsa_with_aria_128_cbc_sha256
Constant TLS_dhe_rsa_with_aria_256_cbc_sha384
Constant TLS_dh_anon_with_aria_128_cbc_sha256
Constant TLS_dh_anon_with_aria_256_cbc_sha384
Constant TLS_ecdhe_ecdsa_with_aria_128_cbc_sha256
Constant TLS_ecdhe_ecdsa_with_aria_256_cbc_sha384
Constant TLS_ecdh_ecdsa_with_aria_128_cbc_sha256
Constant TLS_ecdh_ecdsa_with_aria_256_cbc_sha384
Constant TLS_ecdhe_rsa_with_aria_128_cbc_sha256
Constant TLS_ecdhe_rsa_with_aria_256_cbc_sha384
Constant TLS_ecdh_rsa_with_aria_128_cbc_sha256
Constant TLS_ecdh_rsa_with_aria_256_cbc_sha384
Constant TLS_rsa_with_aria_128_gcm_sha256
Constant TLS_rsa_with_aria_256_gcm_sha384
Constant TLS_dhe_rsa_with_aria_128_gcm_sha256
Constant TLS_dhe_rsa_with_aria_256_gcm_sha384
Constant TLS_dh_rsa_with_aria_128_gcm_sha256
Constant TLS_dh_rsa_with_aria_256_gcm_sha384
Constant TLS_dhe_dss_with_aria_128_gcm_sha256
Constant TLS_dhe_dss_with_aria_256_gcm_sha384
Constant TLS_dh_dss_with_aria_128_gcm_sha256
Constant TLS_dh_dss_with_aria_256_gcm_sha384
Constant TLS_dh_anon_with_aria_128_gcm_sha256
Constant TLS_dh_anon_with_aria_256_gcm_sha384
Constant TLS_ecdhe_ecdsa_with_aria_128_gcm_sha256
Constant TLS_ecdhe_ecdsa_with_aria_256_gcm_sha384
Constant TLS_ecdh_ecdsa_with_aria_128_gcm_sha256
Constant TLS_ecdh_ecdsa_with_aria_256_gcm_sha384
Constant TLS_ecdhe_rsa_with_aria_128_gcm_sha256
Constant TLS_ecdhe_rsa_with_aria_256_gcm_sha384
Constant TLS_ecdh_rsa_with_aria_128_gcm_sha256
Constant TLS_ecdh_rsa_with_aria_256_gcm_sha384
Constant TLS_psk_with_aria_128_cbc_sha256
Constant TLS_psk_with_aria_256_cbc_sha384
Constant TLS_dhe_psk_with_aria_128_cbc_sha256
Constant TLS_dhe_psk_with_aria_256_cbc_sha384
Constant TLS_rsa_psk_with_aria_128_cbc_sha256
Constant TLS_rsa_psk_with_aria_256_cbc_sha384
Constant TLS_psk_with_aria_128_gcm_sha256
Constant TLS_psk_with_aria_256_gcm_sha384
Constant TLS_dhe_psk_with_aria_128_gcm_sha256
Constant TLS_dhe_psk_with_aria_256_gcm_sha384
Constant TLS_rsa_psk_with_aria_128_gcm_sha256
Constant TLS_rsa_psk_with_aria_256_gcm_sha384
Constant TLS_ecdhe_psk_with_aria_128_cbc_sha256
Constant TLS_ecdhe_psk_with_aria_256_cbc_sha384
Constant TLS_ecdhe_ecdsa_with_camellia_128_cbc_sha256
Constant TLS_ecdhe_ecdsa_with_camellia_256_cbc_sha384
Constant TLS_ecdh_ecdsa_with_camellia_128_cbc_sha256
Constant TLS_ecdh_ecdsa_with_camellia_256_cbc_sha384
Constant TLS_ecdhe_rsa_with_camellia_128_cbc_sha256
Constant TLS_ecdhe_rsa_with_camellia_256_cbc_sha384
Constant TLS_ecdh_rsa_with_camellia_128_cbc_sha256
Constant TLS_ecdh_rsa_with_camellia_256_cbc_sha384
Constant TLS_rsa_with_camellia_128_gcm_sha256
Constant TLS_rsa_with_camellia_256_gcm_sha384
Constant TLS_dhe_rsa_with_camellia_128_gcm_sha256
Constant TLS_dhe_rsa_with_camellia_256_gcm_sha384
Constant TLS_dh_rsa_with_camellia_128_gcm_sha256
Constant TLS_dh_rsa_with_camellia_256_gcm_sha384
Constant TLS_dhe_dss_with_camellia_128_gcm_sha256
Constant TLS_dhe_dss_with_camellia_256_gcm_sha384
Constant TLS_dh_dss_with_camellia_128_gcm_sha256
Constant TLS_dh_dss_with_camellia_256_gcm_sha384
Constant TLS_dh_anon_with_camellia_128_gcm_sha256
Constant TLS_dh_anon_with_camellia_256_gcm_sha384
Constant TLS_ecdhe_ecdsa_with_camellia_128_gcm_sha256
Constant TLS_ecdhe_ecdsa_with_camellia_256_gcm_sha384
Constant TLS_ecdh_ecdsa_with_camellia_128_gcm_sha256
Constant TLS_ecdh_ecdsa_with_camellia_256_gcm_sha384
Constant TLS_ecdhe_rsa_with_camellia_128_gcm_sha256
Constant TLS_ecdhe_rsa_with_camellia_256_gcm_sha384
Constant TLS_ecdh_rsa_with_camellia_128_gcm_sha256
Constant TLS_ecdh_rsa_with_camellia_256_gcm_sha384
Constant TLS_psk_with_camellia_128_gcm_sha256
Constant TLS_psk_with_camellia_256_gcm_sha384
Constant TLS_dhe_psk_with_camellia_128_gcm_sha256
Constant TLS_dhe_psk_with_camellia_256_gcm_sha384
Constant TLS_rsa_psk_with_camellia_128_gcm_sha256
Constant TLS_rsa_psk_with_camellia_256_gcm_sha384
Constant TLS_psk_with_camellia_128_cbc_sha256
Constant TLS_psk_with_camellia_256_cbc_sha384
Constant TLS_dhe_psk_with_camellia_128_cbc_sha256
Constant TLS_dhe_psk_with_camellia_256_cbc_sha384
Constant TLS_rsa_psk_with_camellia_128_cbc_sha256
Constant TLS_rsa_psk_with_camellia_256_cbc_sha384
Constant TLS_ecdhe_psk_with_camellia_128_cbc_sha256
Constant TLS_ecdhe_psk_with_camellia_256_cbc_sha384
Constant TLS_rsa_with_aes_128_ccm
Constant TLS_rsa_with_aes_256_ccm
Constant TLS_dhe_rsa_with_aes_128_ccm
Constant TLS_dhe_rsa_with_aes_256_ccm
Constant TLS_rsa_with_aes_128_ccm_8
Constant TLS_rsa_with_aes_256_ccm_8
Constant TLS_dhe_rsa_with_aes_128_ccm_8
Constant TLS_dhe_rsa_with_aes_256_ccm_8
Constant TLS_psk_with_aes_128_ccm
Constant TLS_psk_with_aes_256_ccm
Constant TLS_dhe_psk_with_aes_128_ccm
Constant TLS_dhe_psk_with_aes_256_ccm
Constant TLS_psk_with_aes_128_ccm_8
Constant TLS_psk_with_aes_256_ccm_8
Constant TLS_psk_dhe_with_aes_128_ccm_8
Constant TLS_psk_dhe_with_aes_256_ccm_8
Constant TLS_ecdhe_ecdsa_with_aes_128_ccm
Constant TLS_ecdhe_ecdsa_with_aes_256_ccm
Constant TLS_ecdhe_ecdsa_with_aes_128_ccm_8
Constant TLS_ecdhe_ecdsa_with_aes_256_ccm_8
Constant TLS_eccpwd_with_aes_128_gcm_sha256
Constant TLS_eccpwd_with_aes_256_gcm_sha384
Constant TLS_eccpwd_with_aes_128_ccm_sha256
Constant TLS_eccpwd_with_aes_256_ccm_sha384 constantSSL.Constants.TLS_ecdh_ecdsa_with_null_shaconstantSSL.Constants.TLS_ecdh_ecdsa_with_rc4_128_shaconstantSSL.Constants.TLS_ecdh_ecdsa_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdh_ecdsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdh_ecdsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_null_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_rc4_128_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdh_rsa_with_null_shaconstantSSL.Constants.TLS_ecdh_rsa_with_rc4_128_shaconstantSSL.Constants.TLS_ecdh_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdh_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdh_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdhe_rsa_with_null_shaconstantSSL.Constants.TLS_ecdhe_rsa_with_rc4_128_shaconstantSSL.Constants.TLS_ecdhe_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdhe_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdhe_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdh_anon_with_null_shaconstantSSL.Constants.TLS_ecdh_anon_with_rc4_128_shaconstantSSL.Constants.TLS_ecdh_anon_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdh_anon_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdh_anon_with_aes_256_cbc_shaconstantSSL.Constants.TLS_srp_sha_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_srp_sha_rsa_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_srp_sha_dss_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_srp_sha_with_aes_128_cbc_shaconstantSSL.Constants.TLS_srp_sha_rsa_with_aes_128_cbc_shaconstantSSL.Constants.TLS_srp_sha_dss_with_aes_128_cbc_shaconstantSSL.Constants.TLS_srp_sha_with_aes_256_cbc_shaconstantSSL.Constants.TLS_srp_sha_rsa_with_aes_256_cbc_shaconstantSSL.Constants.TLS_srp_sha_dss_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_256_cbc_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_aes_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_aes_256_cbc_sha384constantSSL.Constants.TLS_ecdh_rsa_with_aes_128_cbc_sha256constantSSL.Constants.TLS_ecdh_rsa_with_aes_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_ecdh_rsa_with_aes_128_gcm_sha256constantSSL.Constants.TLS_ecdh_rsa_with_aes_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_psk_with_rc4_128_shaconstantSSL.Constants.TLS_ecdhe_psk_with_3des_ede_cbc_shaconstantSSL.Constants.TLS_ecdhe_psk_with_aes_128_cbc_shaconstantSSL.Constants.TLS_ecdhe_psk_with_aes_256_cbc_shaconstantSSL.Constants.TLS_ecdhe_psk_with_aes_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_psk_with_aes_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_psk_with_null_shaconstantSSL.Constants.TLS_ecdhe_psk_with_null_sha256constantSSL.Constants.TLS_ecdhe_psk_with_null_sha384constantSSL.Constants.TLS_rsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_rsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dh_dss_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dh_dss_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dh_rsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dh_rsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dhe_dss_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dhe_dss_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dhe_rsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dhe_rsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dh_anon_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dh_anon_with_aria_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_ecdsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_ecdh_rsa_with_aria_128_cbc_sha256constantSSL.Constants.TLS_ecdh_rsa_with_aria_256_cbc_sha384constantSSL.Constants.TLS_rsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_rsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dhe_rsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dhe_rsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dh_rsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dh_rsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dhe_dss_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dhe_dss_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dh_dss_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dh_dss_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dh_anon_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dh_anon_with_aria_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_ecdsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_ecdh_rsa_with_aria_128_gcm_sha256constantSSL.Constants.TLS_ecdh_rsa_with_aria_256_gcm_sha384constantSSL.Constants.TLS_psk_with_aria_128_cbc_sha256constantSSL.Constants.TLS_psk_with_aria_256_cbc_sha384constantSSL.Constants.TLS_dhe_psk_with_aria_128_cbc_sha256constantSSL.Constants.TLS_dhe_psk_with_aria_256_cbc_sha384constantSSL.Constants.TLS_rsa_psk_with_aria_128_cbc_sha256constantSSL.Constants.TLS_rsa_psk_with_aria_256_cbc_sha384constantSSL.Constants.TLS_psk_with_aria_128_gcm_sha256constantSSL.Constants.TLS_psk_with_aria_256_gcm_sha384constantSSL.Constants.TLS_dhe_psk_with_aria_128_gcm_sha256constantSSL.Constants.TLS_dhe_psk_with_aria_256_gcm_sha384constantSSL.Constants.TLS_rsa_psk_with_aria_128_gcm_sha256constantSSL.Constants.TLS_rsa_psk_with_aria_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_psk_with_aria_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_psk_with_aria_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_ecdsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_ecdh_rsa_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_ecdh_rsa_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_rsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_rsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dhe_rsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dhe_rsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dh_rsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dh_rsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dhe_dss_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dhe_dss_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dh_dss_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dh_dss_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dh_anon_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dh_anon_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_ecdsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_ecdh_ecdsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_ecdh_ecdsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_rsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_rsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_ecdh_rsa_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_ecdh_rsa_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_psk_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_psk_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_dhe_psk_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_dhe_psk_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_rsa_psk_with_camellia_128_gcm_sha256constantSSL.Constants.TLS_rsa_psk_with_camellia_256_gcm_sha384constantSSL.Constants.TLS_psk_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_psk_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_dhe_psk_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_dhe_psk_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_rsa_psk_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_rsa_psk_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_ecdhe_psk_with_camellia_128_cbc_sha256constantSSL.Constants.TLS_ecdhe_psk_with_camellia_256_cbc_sha384constantSSL.Constants.TLS_rsa_with_aes_128_ccmconstantSSL.Constants.TLS_rsa_with_aes_256_ccmconstantSSL.Constants.TLS_dhe_rsa_with_aes_128_ccmconstantSSL.Constants.TLS_dhe_rsa_with_aes_256_ccmconstantSSL.Constants.TLS_rsa_with_aes_128_ccm_8constantSSL.Constants.TLS_rsa_with_aes_256_ccm_8constantSSL.Constants.TLS_dhe_rsa_with_aes_128_ccm_8constantSSL.Constants.TLS_dhe_rsa_with_aes_256_ccm_8constantSSL.Constants.TLS_psk_with_aes_128_ccmconstantSSL.Constants.TLS_psk_with_aes_256_ccmconstantSSL.Constants.TLS_dhe_psk_with_aes_128_ccmconstantSSL.Constants.TLS_dhe_psk_with_aes_256_ccmconstantSSL.Constants.TLS_psk_with_aes_128_ccm_8constantSSL.Constants.TLS_psk_with_aes_256_ccm_8constantSSL.Constants.TLS_psk_dhe_with_aes_128_ccm_8constantSSL.Constants.TLS_psk_dhe_with_aes_256_ccm_8constantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_128_ccmconstantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_256_ccmconstantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_128_ccm_8constantSSL.Constants.TLS_ecdhe_ecdsa_with_aes_256_ccm_8constantSSL.Constants.TLS_eccpwd_with_aes_128_gcm_sha256constantSSL.Constants.TLS_eccpwd_with_aes_256_gcm_sha384constantSSL.Constants.TLS_eccpwd_with_aes_128_ccm_sha256constantSSL.Constants.TLS_eccpwd_with_aes_256_ccm_sha384
- Constant
TLS_rsa_export1024_with_rc4_56_md5
Constant TLS_rsa_export1024_with_rc2_cbc_56_md5
Constant TLS_rsa_export1024_with_des_cbc_sha
Constant TLS_dhe_dss_export1024_with_des_cbc_sha
Constant TLS_rsa_export1024_with_rc4_56_sha
Constant TLS_dhe_dss_export1024_with_rc4_56_sha
Constant TLS_dhe_dss_with_rc4_128_sha constantSSL.Constants.TLS_rsa_export1024_with_rc4_56_md5constantSSL.Constants.TLS_rsa_export1024_with_rc2_cbc_56_md5constantSSL.Constants.TLS_rsa_export1024_with_des_cbc_shaconstantSSL.Constants.TLS_dhe_dss_export1024_with_des_cbc_shaconstantSSL.Constants.TLS_rsa_export1024_with_rc4_56_shaconstantSSL.Constants.TLS_dhe_dss_export1024_with_rc4_56_shaconstantSSL.Constants.TLS_dhe_dss_with_rc4_128_sha
- Constant
TLS_ecdhe_rsa_with_chacha20_poly1305_sha256
Constant TLS_ecdhe_ecdsa_with_chacha20_poly1305_sha256
Constant TLS_dhe_rsa_with_chacha20_poly1305_sha256
Constant TLS_psk_with_chacha20_poly1305_sha256
Constant TLS_ecdhe_psk_with_chacha20_poly1305_sha256
Constant TLS_dhe_psk_with_chacha20_poly1305_sha256
Constant TLS_rsa_psk_with_chacha20_poly1305_sha256 constantSSL.Constants.TLS_ecdhe_rsa_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_dhe_rsa_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_psk_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_ecdhe_psk_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_dhe_psk_with_chacha20_poly1305_sha256constantSSL.Constants.TLS_rsa_psk_with_chacha20_poly1305_sha256
- Constant
TLS_ecdhe_rsa_with_oldchacha20_poly1305_sha256
Constant TLS_ecdhe_ecdsa_with_oldchacha20_poly1305_sha256
Constant TLS_dhe_rsa_with_oldchacha20_poly1305_sha256 constantSSL.Constants.TLS_ecdhe_rsa_with_oldchacha20_poly1305_sha256constantSSL.Constants.TLS_ecdhe_ecdsa_with_oldchacha20_poly1305_sha256constantSSL.Constants.TLS_dhe_rsa_with_oldchacha20_poly1305_sha256
- Constant
TLS_ecdhe_psk_with_aes_128_gcm_sha256
Constant TLS_ecdhe_psk_with_aes_256_gcm_sha384
Constant TLS_ecdhe_psk_with_aes_128_ccm_8_sha256 constantSSL.Constants.TLS_ecdhe_psk_with_aes_128_gcm_sha256constantSSL.Constants.TLS_ecdhe_psk_with_aes_256_gcm_sha384constantSSL.Constants.TLS_ecdhe_psk_with_aes_128_ccm_8_sha256
- Constant
TLS_ecdhe_psk_with_aes_128_ccm_sha256
constantSSL.Constants.TLS_ecdhe_psk_with_aes_128_ccm_sha256
- Constant
SSL_invalid_suite
Enum SSL.Constants.CipherSuite_2_0
- Constant
SSL2_ck_rc4_128_with_md5
Constant SSL2_ck_rc4_128_export40_with_md5
Constant SSL2_ck_rc2_128_cbc_with_md5
Constant SSL2_ck_rc2_128_cbc_export40_with_md5
Constant SSL2_ck_idea_128_cbc_with_md5
Constant SSL2_ck_des_64_cbc_with_md5
Constant SSL2_ck_des_192_ede3_cbc_with_md5 constantSSL.Constants.SSL2_ck_rc4_128_with_md5constantSSL.Constants.SSL2_ck_rc4_128_export40_with_md5constantSSL.Constants.SSL2_ck_rc2_128_cbc_with_md5constantSSL.Constants.SSL2_ck_rc2_128_cbc_export40_with_md5constantSSL.Constants.SSL2_ck_idea_128_cbc_with_md5constantSSL.Constants.SSL2_ck_des_64_cbc_with_md5constantSSL.Constants.SSL2_ck_des_192_ede3_cbc_with_md5
- Constant
SSL2_ck_rc4_128_with_md5
Enum SSL.Constants.CompressionType
- Description
Compression methods.
- Constant
COMPRESSION_deflate
constantSSL.Constants.COMPRESSION_deflate- Description
Deflate compression. RFC 3749
- Constant
COMPRESSION_lzs
constantSSL.Constants.COMPRESSION_lzs- Description
LZS compression. RFC 3943
Enum SSL.Constants.ConnectionState
- Description
Connection states.
These are the states that a [Connection] may have.
Queueing of more application data is only allowed in the states
CONNECTION_readyandCONNECTION_handshaking.
- Constant
CONNECTION_closing
constantSSL.Constants.CONNECTION_closing- Description
Connection closing mask.
- Constant
CONNECTION_failing
constantSSL.Constants.CONNECTION_failing- Description
Connection failing mask.
- Constant
CONNECTION_handshaking
constantSSL.Constants.CONNECTION_handshaking- Description
Handshaking not done.
- Constant
CONNECTION_local_closed
constantSSL.Constants.CONNECTION_local_closed- Description
Local close packet sent.
- Constant
CONNECTION_local_closing
constantSSL.Constants.CONNECTION_local_closing- Description
Local close packet pending.
- Constant
CONNECTION_local_failing
constantSSL.Constants.CONNECTION_local_failing- Description
Fatal alert pending.
- Constant
CONNECTION_local_fatal
constantSSL.Constants.CONNECTION_local_fatal- Description
Fatal alert sent.
- Constant
CONNECTION_peer_closed
constantSSL.Constants.CONNECTION_peer_closed- Description
Peer has closed the connection.
- Constant
CONNECTION_peer_fatal
constantSSL.Constants.CONNECTION_peer_fatal- Description
Peer has issued a fatal alert.
Enum SSL.Constants.CurveType
- Description
ECC curve types from RFC 4492 section 5.4 (ECCurveType).
- Constant
CURVETYPE_explicit_char2
constantSSL.Constants.CURVETYPE_explicit_char2- Description
Deprecated RFC 8422 section 5.4
- Constant
CURVETYPE_explicit_prime
constantSSL.Constants.CURVETYPE_explicit_prime- Description
Deprecated RFC 8422 section 5.4
Enum SSL.Constants.ECBasisType
Enum SSL.Constants.Extension
- Description
Client Hello extensions.
- Constant
EXTENSION_server_name
Constant EXTENSION_max_fragment_length
Constant EXTENSION_client_certificate_url
Constant EXTENSION_trusted_ca_keys
Constant EXTENSION_truncated_hmac
Constant EXTENSION_status_request
Constant EXTENSION_user_mapping
Constant EXTENSION_client_authz
Constant EXTENSION_server_authz
Constant EXTENSION_cert_type
Constant EXTENSION_elliptic_curves
Constant EXTENSION_ec_point_formats
Constant EXTENSION_srp
Constant EXTENSION_signature_algorithms
Constant EXTENSION_use_srtp
Constant EXTENSION_heartbeat
Constant EXTENSION_application_layer_protocol_negotiation
Constant EXTENSION_status_request_v2
Constant EXTENSION_signed_certificate_timestamp
Constant EXTENSION_client_certificate_type
Constant EXTENSION_server_certificate_type
Constant EXTENSION_padding
Constant EXTENSION_encrypt_then_mac
Constant EXTENSION_extended_master_secret
Constant EXTENSION_token_binding
Constant EXTENSION_cached_info
Constant EXTENSION_tls_lts
Constant EXTENSION_compress_certificate
Constant EXTENSION_record_size_limit
Constant EXTENSION_pwd_protect
Constant EXTENSION_pwd_clear
Constant EXTENSION_password_salt
Constant EXTENSION_ticket_pinning
Constant EXTENSION_tls_cert_with_extern_psk
Constant EXTENSION_delegated_credential
Constant EXTENSION_session_ticket
Constant EXTENSION_TLMSP
Constant EXTENSION_TLMSP_proxying
Constant EXTENSION_TLMSP_delegate
Constant EXTENSION_supported_skt_ciphers constantSSL.Constants.EXTENSION_server_nameconstantSSL.Constants.EXTENSION_max_fragment_lengthconstantSSL.Constants.EXTENSION_client_certificate_urlconstantSSL.Constants.EXTENSION_trusted_ca_keysconstantSSL.Constants.EXTENSION_truncated_hmacconstantSSL.Constants.EXTENSION_status_requestconstantSSL.Constants.EXTENSION_user_mappingconstantSSL.Constants.EXTENSION_client_authzconstantSSL.Constants.EXTENSION_server_authzconstantSSL.Constants.EXTENSION_cert_typeconstantSSL.Constants.EXTENSION_elliptic_curvesconstantSSL.Constants.EXTENSION_ec_point_formatsconstantSSL.Constants.EXTENSION_srpconstantSSL.Constants.EXTENSION_signature_algorithmsconstantSSL.Constants.EXTENSION_use_srtpconstantSSL.Constants.EXTENSION_heartbeatconstantSSL.Constants.EXTENSION_application_layer_protocol_negotiationconstantSSL.Constants.EXTENSION_status_request_v2constantSSL.Constants.EXTENSION_signed_certificate_timestampconstantSSL.Constants.EXTENSION_client_certificate_typeconstantSSL.Constants.EXTENSION_server_certificate_typeconstantSSL.Constants.EXTENSION_paddingconstantSSL.Constants.EXTENSION_encrypt_then_macconstantSSL.Constants.EXTENSION_extended_master_secretconstantSSL.Constants.EXTENSION_token_bindingconstantSSL.Constants.EXTENSION_cached_infoconstantSSL.Constants.EXTENSION_tls_ltsconstantSSL.Constants.EXTENSION_compress_certificateconstantSSL.Constants.EXTENSION_record_size_limitconstantSSL.Constants.EXTENSION_pwd_protectconstantSSL.Constants.EXTENSION_pwd_clearconstantSSL.Constants.EXTENSION_password_saltconstantSSL.Constants.EXTENSION_ticket_pinningconstantSSL.Constants.EXTENSION_tls_cert_with_extern_pskconstantSSL.Constants.EXTENSION_delegated_credentialconstantSSL.Constants.EXTENSION_session_ticketconstantSSL.Constants.EXTENSION_TLMSPconstantSSL.Constants.EXTENSION_TLMSP_proxyingconstantSSL.Constants.EXTENSION_TLMSP_delegateconstantSSL.Constants.EXTENSION_supported_skt_ciphers
- Constant
EXTENSION_certificate_authorities
Constant EXTENSION_oid_filters
Constant EXTENSION_post_handshake_auth
Constant EXTENSION_signature_algorithms_cert
Constant EXTENSION_key_share
Constant EXTENSION_transparency_info
Constant EXTENSION_connection_id_deprecated
Constant EXTENSION_connection_id
Constant EXTENSION_external_id_hash
Constant EXTENSION_external_session_id
Constant EXTENSION_quic_transport_parameters
Constant EXTENSION_ticket_request
Constant EXTENSION_dnssec_chain
Constant EXTENSION_grease_0a0a
Constant EXTENSION_grease_1a1a
Constant EXTENSION_grease_2a2a
Constant EXTENSION_grease_3a3a
Constant EXTENSION_grease_4a4a
Constant EXTENSION_grease_5a5a
Constant EXTENSION_grease_6a6a
Constant EXTENSION_grease_7a7a
Constant EXTENSION_grease_8a8a
Constant EXTENSION_grease_9a9a
Constant EXTENSION_grease_aaaa
Constant EXTENSION_grease_baba
Constant EXTENSION_grease_caca
Constant EXTENSION_grease_dada
Constant EXTENSION_grease_eaea
Constant EXTENSION_grease_fafa
Constant EXTENSION_encrypted_client_hello
Constant EXTENSION_renegotiation_info
Constant EXTENSION_draft_version
Constant EXTENSION_next_protocol_negotiation constantSSL.Constants.EXTENSION_certificate_authoritiesconstantSSL.Constants.EXTENSION_oid_filtersconstantSSL.Constants.EXTENSION_post_handshake_authconstantSSL.Constants.EXTENSION_signature_algorithms_certconstantSSL.Constants.EXTENSION_key_shareconstantSSL.Constants.EXTENSION_transparency_infoconstantSSL.Constants.EXTENSION_connection_id_deprecatedconstantSSL.Constants.EXTENSION_connection_idconstantSSL.Constants.EXTENSION_external_id_hashconstantSSL.Constants.EXTENSION_external_session_idconstantSSL.Constants.EXTENSION_quic_transport_parametersconstantSSL.Constants.EXTENSION_ticket_requestconstantSSL.Constants.EXTENSION_dnssec_chainconstantSSL.Constants.EXTENSION_grease_0a0aconstantSSL.Constants.EXTENSION_grease_1a1aconstantSSL.Constants.EXTENSION_grease_2a2aconstantSSL.Constants.EXTENSION_grease_3a3aconstantSSL.Constants.EXTENSION_grease_4a4aconstantSSL.Constants.EXTENSION_grease_5a5aconstantSSL.Constants.EXTENSION_grease_6a6aconstantSSL.Constants.EXTENSION_grease_7a7aconstantSSL.Constants.EXTENSION_grease_8a8aconstantSSL.Constants.EXTENSION_grease_9a9aconstantSSL.Constants.EXTENSION_grease_aaaaconstantSSL.Constants.EXTENSION_grease_babaconstantSSL.Constants.EXTENSION_grease_cacaconstantSSL.Constants.EXTENSION_grease_dadaconstantSSL.Constants.EXTENSION_grease_eaeaconstantSSL.Constants.EXTENSION_grease_fafaconstantSSL.Constants.EXTENSION_encrypted_client_helloconstantSSL.Constants.EXTENSION_renegotiation_infoconstantSSL.Constants.EXTENSION_draft_versionconstantSSL.Constants.EXTENSION_next_protocol_negotiation
- Constant
EXTENSION_pre_shared_key
Constant EXTENSION_early_data
Constant EXTENSION_supported_versions
Constant EXTENSION_cookie
Constant EXTENSION_psk_key_exchange_modes constantSSL.Constants.EXTENSION_pre_shared_keyconstantSSL.Constants.EXTENSION_early_dataconstantSSL.Constants.EXTENSION_supported_versionsconstantSSL.Constants.EXTENSION_cookieconstantSSL.Constants.EXTENSION_psk_key_exchange_modes
Enum SSL.Constants.FragmentLength
- Description
Fragment lengths for
EXTENSION_max_fragment_length.
Enum SSL.Constants.HashAlgorithm
- Description
Hash algorithms as per RFC 5246 section 7.4.1.4.1.
- Constant
HASH_none
Constant HASH_md5
Constant HASH_sha1
Constant HASH_sha224
Constant HASH_sha256
Constant HASH_sha384
Constant HASH_sha512
Constant HASH_intrinsic constantSSL.Constants.HASH_noneconstantSSL.Constants.HASH_md5constantSSL.Constants.HASH_sha1constantSSL.Constants.HASH_sha224constantSSL.Constants.HASH_sha256constantSSL.Constants.HASH_sha384constantSSL.Constants.HASH_sha512constantSSL.Constants.HASH_intrinsic
Enum SSL.Constants.HeartBeatMessageType
Enum SSL.Constants.HeartBeatModeType
Enum SSL.Constants.KeyExchangeType
- Description
Key exchange methods.
- Constant
KE_ecdh_ecdsa
constantSSL.Constants.KE_ecdh_ecdsa- Description
Elliptic Curve DH cert signed with ECDSA
- Constant
KE_ecdh_rsa
constantSSL.Constants.KE_ecdh_rsa- Description
Elliptic Curve DH cert signed with RSA
- Constant
KE_ecdhe_ecdsa
constantSSL.Constants.KE_ecdhe_ecdsa- Description
Elliptic Curve DH Ephemeral with ECDSA
- Constant
KE_ecdhe_rsa
constantSSL.Constants.KE_ecdhe_rsa- Description
Elliptic Curve DH Ephemeral with RSA
- Constant
KE_rsa_fips
constantSSL.Constants.KE_rsa_fips- Description
Rivest-Shamir-Adelman with FIPS keys.
Enum SSL.Constants.NamedGroup
- Description
Groups used for elliptic curves DHE (ECDHE) and finite field DH (FFDHE).
- See also
RFC 4492 section 5.1.1 (NamedCurve) / TLS 1.3 7.4.2.5.2. */
- Constant
GROUP_arbitrary_explicit_char2_curves
constantSSL.Constants.GROUP_arbitrary_explicit_char2_curves- Description
Deprecated RFC 8422 section 5.1.1
- Constant
GROUP_arbitrary_explicit_prime_curves
constantSSL.Constants.GROUP_arbitrary_explicit_prime_curves- Description
Deprecated RFC 8422 section 5.1.1
Enum SSL.Constants.PointFormat
Enum SSL.Constants.ProtocolVersion
- Description
Constants for specifying the versions of SSL/TLS to use.
- See also
Context
- Constant
PROTOCOL_DTLS_1_0
constantSSL.Constants.PROTOCOL_DTLS_1_0- Description
DTLS 1.0 - The RFC 4347 version of DTLS. This is essentially TLS 1.1 over UDP.
- Constant
PROTOCOL_DTLS_1_2
constantSSL.Constants.PROTOCOL_DTLS_1_2- Description
DTLS 1.2 - The RFC 6347 version of DTLS. This is essentially TLS 1.2 over UDP.
- Constant
PROTOCOL_IN_EXTENSION
constantSSL.Constants.PROTOCOL_IN_EXTENSION- Description
Pike internal marker
- Constant
PROTOCOL_SSL_3_0
constantSSL.Constants.PROTOCOL_SSL_3_0- Description
SSL 3.0 - The original SSL3 draft version.
- Constant
PROTOCOL_TLS_1_0
constantSSL.Constants.PROTOCOL_TLS_1_0- Description
TLS 1.0 - The RFC 2246 version of TLS.
- Constant
PROTOCOL_TLS_1_1
constantSSL.Constants.PROTOCOL_TLS_1_1- Description
TLS 1.1 - The RFC 4346 version of TLS.
- Constant
PROTOCOL_TLS_1_2
constantSSL.Constants.PROTOCOL_TLS_1_2- Description
TLS 1.2 - The RFC 5246 version of TLS.
- Constant
PROTOCOL_TLS_1_3
constantSSL.Constants.PROTOCOL_TLS_1_3- Description
TLS 1.3 - The RFC 8446 version of TLS.
Enum SSL.Constants.SignatureAlgorithm
- Description
Signature algorithms from TLS 1.2.
- Constant
SIGNATURE_rsa_pss_256
constantSSL.Constants.SIGNATURE_rsa_pss_256- Description
RSA PSS signature with 256 bit hash.
- Constant
SIGNATURE_rsa_pss_384
constantSSL.Constants.SIGNATURE_rsa_pss_384- Description
RSA PSS signature with 384 bit hash.
Enum SSL.Constants.SignatureScheme
- Description
Signature algorithms from TLS 1.3
- Constant
SIGNATURE_ecdsa_secp256r1_sha256
Constant SIGNATURE_ecdsa_secp384r1_sha384
Constant SIGNATURE_ecdsa_secp521r1_sha512 constantSSL.Constants.SIGNATURE_ecdsa_secp256r1_sha256constantSSL.Constants.SIGNATURE_ecdsa_secp384r1_sha384constantSSL.Constants.SIGNATURE_ecdsa_secp521r1_sha512
- Constant
SIGNATURE_rsa_pkcs1_sha1
Constant SIGNATURE_ecdsa_sha1 constantSSL.Constants.SIGNATURE_rsa_pkcs1_sha1constantSSL.Constants.SIGNATURE_ecdsa_sha1
- Constant
SIGNATURE_ed25519_intrinsic
Constant SIGNATURE_ed448_intrinsic constantSSL.Constants.SIGNATURE_ed25519_intrinsicconstantSSL.Constants.SIGNATURE_ed448_intrinsic
- Constant
SIGNATURE_rsa_pkcs1_sha256
Constant SIGNATURE_rsa_pkcs1_sha384
Constant SIGNATURE_rsa_pkcs1_sha512 constantSSL.Constants.SIGNATURE_rsa_pkcs1_sha256constantSSL.Constants.SIGNATURE_rsa_pkcs1_sha384constantSSL.Constants.SIGNATURE_rsa_pkcs1_sha512
Enum SSL.Constants.SupplementalDataType
- Description
Values used for supp_data_type in SupplementalDataEntry (cf RFC 4681 section 3).
Enum SSL.Constants.UserMappingType
- Description
Class SSL.Constants.CertificatePair
- Description
A chain of X509 certificates with corresponding private key.
It also contains some derived metadata.
- Variable
cert_type
intSSL.Constants.CertificatePair.cert_type- Description
Cerificate type for the leaf cert.
One of the
AUTH_*constants.
- Variable
certs
array(string(8bit)) SSL.Constants.CertificatePair.certs- Description
Chain of certificates, root cert last.
- Variable
globs
array(string(8bit)) SSL.Constants.CertificatePair.globs- Description
Array of commonName globs from the first certificate in
certs.
- Variable
issuers
array(string(8bit)) SSL.Constants.CertificatePair.issuers- Description
Array of DER for the issuers matching
certs.
- Variable
ke_mask
int(0..)SSL.Constants.CertificatePair.ke_mask- Description
Bitmask of the key exchange algorithms supported by the main certificate. This is used for TLS 1.1 and earlier.
- See also
ke_mask_invariant
- Variable
ke_mask_invariant
int(0..)SSL.Constants.CertificatePair.ke_mask_invariant- Description
Bitmask of the key exchange algorithms supported by the main certificate. This is the same as
ke_mask, but unified with respect toKE_dh_dss/KE_dh_rsaandKE_ecdh_ecdsa/KE_ecdh_rsa, as supported by TLS 1.2 and later.
- Variable
sign_algs
array(SignatureScheme) SSL.Constants.CertificatePair.sign_algs- Description
TLS 1.2-style hash and signature pairs matching the
certs.
- Method
create
SSL.Constants.CertificatePairSSL.Constants.CertificatePair(Crypto.Sign.Statekey,array(string(8bit))certs,array(string(8bit))|voidextra_name_globs)- Description
Initializa a new
CertificatePair.- Parameter
key Private key.
- Parameter
certs Chain of certificates, root cert last.
- Parameter
extra_globs The set of
globsfrom the first certificate is optionally extended with these.- Note
Performs various validation checks.
14.3. DNS
Module Protocols.DNS
- Constant
FORMERR
finalconstantintProtocols.DNS.FORMERR- Description
The name server was unable to interpret the request due to a format error.
- Constant
NOTAUTH
finalconstantintProtocols.DNS.NOTAUTH- Description
Server not authoritative for zone.
- Constant
NOTIMP
Constant NOTIMPL finalconstantintProtocols.DNS.NOTIMPfinalconstantintProtocols.DNS.NOTIMPL- Description
The name server does not support the specified Opcode.
- Constant
NXDOMAIN
finalconstantintProtocols.DNS.NXDOMAIN- Description
Some name that ought to exist, does not exist.
- Constant
NXRRSET
finalconstantintProtocols.DNS.NXRRSET- Description
Some RRset that ought to exist, does not exist.
- Constant
REFUSED
finalconstantintProtocols.DNS.REFUSED- Description
The name server refuses to perform the specified operation for policy or security reasons.
- Constant
SERVFAIL
finalconstantintProtocols.DNS.SERVFAIL- Description
The name server encountered an internal failure while processing this request, for example an operating system error or a forwarding timeout.
- Constant
YXDOMAIN
finalconstantintProtocols.DNS.YXDOMAIN- Description
Name that should not exist, does exist.
- Constant
YXRRSET
finalconstantintProtocols.DNS.YXRRSET- Description
RRset that should not exist, does exist.
- Method
async_get_mx
client.Requestasync_get_mx(stringhost,function(:void)cb,mixed...cba)Concurrent.Futureasync_get_mx(stringhost)- Description
Calls get_mx in a global async_client created on demand.
- See also
async_client.get_mx()
- Method
async_get_mx_all
client.Requestasync_get_mx_all(stringhost,function(:void)cb,mixed...cba)Concurrent.Futureasync_get_mx_all(stringhost)- Description
Calls get_mx_all in a global async_client created on demand.
- See also
async_client.get_mx_all()
- Method
async_host_to_ip
client.Requestasync_host_to_ip(stringhost,function(:void)cb,mixed...cba)Concurrent.Futureasync_host_to_ip(stringhost)- Description
Calls host_to_ip in a global async_client created on demand.
- See also
async_client.host_to_ip()
- Method
async_host_to_ips
client.Requestasync_host_to_ips(stringhost,function(:void)cb,mixed...cba)Concurrent.Futureasync_host_to_ips(stringhost)- Description
Calls host_to_ips in a global async_client created on demand.
- See also
async_client.host_to_ips()
- Method
async_ip_to_host
client.Requestasync_ip_to_host(stringip,function(:void)cb,mixed...cba)Concurrent.Futureasync_ip_to_host(stringip)- Description
Calls ip_to_host in a global async_client created on demand.
- See also
async_client.ip_to_host()
- Method
get_async_client
async_clientget_async_client()- Description
Returns an asynchronous DNS client object.
Enum Protocols.DNS.DNSKEY_Flags
- Description
Flag bits used in
T_DNSKEYRRs.
Enum Protocols.DNS.DNSSEC_Digests
- Description
DNSSEC Digest types.
- Constant
DNSSEC_SHA1
constantProtocols.DNS.DNSSEC_SHA1- Description
SHA1 digest RFC 4035 appendix A.2.
Enum Protocols.DNS.DNSSEC_Protocol
- Description
DNSSEC Protocol types.
- Note
RFC 4034 obsoleted all but
DNSSEC_DNSSEC.
- Constant
DNSSEC_DNSSEC
constantProtocols.DNS.DNSSEC_DNSSEC- Description
Key for use by DNSSEC. RFC 4034 section 2.1.2.
Enum Protocols.DNS.DNSSES_Algorithm
- Description
DNSSEC Algorithm types.
- Constant
DNSSEC_DH
constantProtocols.DNS.DNSSEC_DH- Description
Diffie-Hellman RFC 2539.
- Constant
DNSSEC_DSA
constantProtocols.DNS.DNSSEC_DSA- Description
DSA/SHA1 RFC 2536.
- Constant
DNSSEC_ECC
Constant DNSSEC_RSASHA1 constantProtocols.DNS.DNSSEC_ECCconstantProtocols.DNS.DNSSEC_RSASHA1- Description
RSA/SHA1 RFC 3110.
- Constant
DNSSEC_INDIRECT
Constant DNSSEC_PRIVATEDNS constantProtocols.DNS.DNSSEC_INDIRECTconstantProtocols.DNS.DNSSEC_PRIVATEDNS- Description
Private algorithm DNS-based RFC 4035 appendix A.1.1.
- Constant
DNSSEC_PRIVATEOID
constantProtocols.DNS.DNSSEC_PRIVATEOID- Description
Private algorithm OID-based RFC 4035 appendix A.1.1.
- Constant
DNSSEC_RSAMD5
constantProtocols.DNS.DNSSEC_RSAMD5- Description
RSA/MD5 RFC 2537.
Enum Protocols.DNS.EntryType
- Description
Entry types
- Constant
T_AAAA
constantProtocols.DNS.T_AAAA- Description
Type - IPv6 address record (RFC 1886)
- Constant
T_AFSDB
constantProtocols.DNS.T_AFSDB- Description
Type - AFC database record (RFC 1183)
- Constant
T_APL
constantProtocols.DNS.T_APL- Description
Type - Address Prefix List (RFC 3123)
- Constant
T_ATMA
constantProtocols.DNS.T_ATMA- Description
Type - ATM End System Address (af-saa-0069.000)
- Constant
T_AXFR
constantProtocols.DNS.T_AXFR- Description
Type - Authoritative Zone Transfer (RFC 1035)
- Constant
T_CAA
constantProtocols.DNS.T_CAA- Description
Type - Certificate Authority Authorization (RFC 6844)
- Constant
T_CERT
constantProtocols.DNS.T_CERT- Description
Type - Certificate Record (RFC 4398)
- Constant
T_DHCID
constantProtocols.DNS.T_DHCID- Description
Type - DHCP identifier (RFC 4701)
- Constant
T_DLV
constantProtocols.DNS.T_DLV- Description
Type - DNSSEC Lookaside Validation Record (RFC 4431)
- Constant
T_DNAME
constantProtocols.DNS.T_DNAME- Description
Type - Delegation Name (RFC 2672)
- Constant
T_DNSKEY
constantProtocols.DNS.T_DNSKEY- Description
Type - DNS Key record (RFC 4034)
- Constant
T_DS
constantProtocols.DNS.T_DS- Description
Type - Delegation Signer (RFC 4034)
- Constant
T_UINFO
Constant T_UID
Constant T_GID
Constant T_UNSPEC constantProtocols.DNS.T_UINFOconstantProtocols.DNS.T_UIDconstantProtocols.DNS.T_GIDconstantProtocols.DNS.T_UNSPEC
- Constant
T_GPOS
constantProtocols.DNS.T_GPOS- Description
Type - Global Position (RFC 1712 Obsolete use LOC).
- Constant
T_HIP
constantProtocols.DNS.T_HIP- Description
Type - Host Identity Protocol (RFC 5205)
- Constant
T_IPSECKEY
constantProtocols.DNS.T_IPSECKEY- Description
Type - IPsec Key (RFC 4025)
- Constant
T_ISDN
constantProtocols.DNS.T_ISDN- Description
Type - ISDN address (RFC 1183)
- Constant
T_IXFR
constantProtocols.DNS.T_IXFR- Description
Type - Incremental Zone Transfer (RFC 1996)
- Constant
T_KX
constantProtocols.DNS.T_KX- Description
Type - Key eXchanger record (RFC 2230)
- Constant
T_LOC
constantProtocols.DNS.T_LOC- Description
Type - Location Record (RFC 1876)
- Constant
T_MAILA
constantProtocols.DNS.T_MAILA- Description
Type - Mail Agent (both MD and MF) (Obsolete - use MX)
- Constant
T_MAILB
constantProtocols.DNS.T_MAILB- Description
Type - Mail Box (MB, MG or MR) (Obsolete - use MX)
- Constant
T_MINFO
constantProtocols.DNS.T_MINFO- Description
Type - mailbox or mail list information (Obsolete)
- Constant
T_NAPTR
constantProtocols.DNS.T_NAPTR- Description
Type - NAPTR (RFC 3403)
- Constant
T_NSAP
constantProtocols.DNS.T_NSAP- Description
Type - OSI Network Service Access Protocol (RFC 1348, RFC 1637 and RFC 1706)
- Constant
T_NSEC
constantProtocols.DNS.T_NSEC- Description
Type - Next-Secure record (RFC 4034)
- Constant
T_NSEC3
constantProtocols.DNS.T_NSEC3- Description
Type - NSEC record version 3 (RFC 5155)
- Constant
T_NSEC3PARAM
constantProtocols.DNS.T_NSEC3PARAM- Description
Type - NSEC3 parameters (RFC 5155)
- Constant
T_NULL
constantProtocols.DNS.T_NULL- Description
Type - null RR (Obsolete RFC 1035)
- Constant
T_OPT
constantProtocols.DNS.T_OPT- Description
Type - Option (RFC 2671)
- Constant
T_PX
constantProtocols.DNS.T_PX- Description
Type - Pointer to X.400 mapping information (RFC 1664)
- Constant
T_RRSIG
constantProtocols.DNS.T_RRSIG- Description
Type - DNSSEC signature (RFC 4034)
- Constant
T_RT
constantProtocols.DNS.T_RT- Description
Type - Route Through (RFC 1183)
- Constant
T_SIG
constantProtocols.DNS.T_SIG- Description
Type - Signature (RFC 2535)
- Constant
T_SPF
constantProtocols.DNS.T_SPF- Description
Type - SPF - Sender Policy Framework (RFC 4408)
- Constant
T_SRV
constantProtocols.DNS.T_SRV- Description
Type - Service location record (RFC 2782)
- Constant
T_SSHFP
constantProtocols.DNS.T_SSHFP- Description
Type - SSH Public Key Fingerprint (RFC 4255)
- Constant
T_TKEY
constantProtocols.DNS.T_TKEY- Description
Type - Secret key record (RFC 2930)
- Constant
T_TLSA
constantProtocols.DNS.T_TLSA- Description
Type - TLSA certificate association (RFC 6698)
- Constant
T_TSIG
constantProtocols.DNS.T_TSIG- Description
Type - Transaction Signature (RFC 2845)
- Constant
T_WKS
constantProtocols.DNS.T_WKS- Description
Type - well known service description (Obsolete RFC 1123 and RFC 1127)
- Constant
T_X25
constantProtocols.DNS.T_X25- Description
Type - X25 PSDN address (RFC 1183)
Enum Protocols.DNS.ResourceClass
- Description
Resource classes
Class Protocols.DNS.async_client
- Description
Asynchronous DNS client.
- Method
create
Protocols.DNS.async_clientProtocols.DNS.async_client(void|string|array(string)server,void|string|array(string)domain)
- Method
do_query
Requestdo_query(stringdomain,intcl,inttype,function(string,mapping,__unknown__... :void)callback,mixed...args)- Description
Enqueue a new raw DNS request.
- Returns
Returns a
Requestobject.- Note
Pike versions prior to 8.0 did not return the
Requestobject.
- Method
generic_query
voidgeneric_query(stringtype,stringdomain,function(array(string)|zero,__unknown__... :void)callback,mixed...restargs)- Description
Asynchronous DNS query with multiple results and a distinction between failure and empty results.
- Parameter
type DNS query type. Currenlty supported:
"A"Return just IPv4 records.
"AAAA"Return both IPv6 and IPv4 records.
"PTR"Reverse lookup for IP addresses, it expects normal IP addresses for
domain."TXT"Return TXT records.
"MX"Return MX records sorted by
preference, lowest numbers first."MXIP"Like querying for
MX, except it returns IP addresses instead of the MX records themselves.- Parameter
domain The domain name we are querying. Add a trailing dot to prohibit domain-postfix searching.
- Parameter
callback The callback function that receives the result of the DNS query. It should be declared as follows:
void callback(array(string)|zero results, mixed ... restargs);If the request fails it will returnzeroforresults.- Parameter
restargs They are passed unaltered to the
callbackfunction.- Note
There is a notable difference between
resultsequal tozero(= request failed and can be retried) and({})(= request definitively answered the record does not exist; retries are pointless).- Note
This method uses the exact same heuristics as the standard DNS resolver library (regarding the use of /etc/hosts, and when to perform a domain-postfix search, and when not to (i.e. trailing dot)).
- Note
All queries sort automatically by preference (lowest numbers first).
- Method
get_mx
Requestget_mx(stringhost,function(array(string),__unknown__... :void)callback,mixed...args)- Description
Looks up the mx pointers for a host, and when done calls the function callback with the results as an array of strings. These can be host names, IP numbers, or a mix.
- Returns
Returns a
Requestobject where progress can be observed from the retries variable and the request can be cancelled using thecancelmethod.
- Method
get_mx
variantConcurrent.Futureget_mx(stringhost)- Description
Looks up the mx pointers for a host. Returns a
Concurrent.Futureobject that resolves into an array of strings.
- Method
get_mx_all
Requestget_mx_all(stringhost,function(string,array(mapping(string:string|int)),__unknown__... :void)callback,mixed...args)- Description
Looks up the mx pointers for a host, and when done calls the function callback with the results as an array of mappings.
- Returns
Returns a
Requestobject where progress can be observed from the retries variable and the request can be cancelled using thecancelmethod.
- Method
get_mx_all
variantConcurrent.Futureget_mx_all(stringhost)- Description
Looks up the mx pointers for a host. Returns a
Concurrent.Futureobject that resolves into an array of mappings.
- Method
host_to_ip
Requesthost_to_ip(stringhost,function(string,string,__unknown__... :void)callback,mixed...args)- Description
Looks up the IPv4 address for a host, and when done calls the function callback with the host name and IP number as arguments.
- Returns
Returns a
Requestobject where progress can be observed from the retries variable and the request can be cancelled using thecancelmethod.- See also
host_to_ips
- Method
host_to_ip
variantConcurrent.Futurehost_to_ip(stringhost)- Description
Looks up the IPv4 address for a host. Returns a
Concurrent.Futureobject that resolves into the IP number as a string, or 0 if it is missing.- See also
host_to_ips
- Method
host_to_ips
Requesthost_to_ips(stringhost,function(string,array,__unknown__... :void)callback,mixed...args)- Description
Looks up the IP number(s) for a host, and when done calls the function callback with the host name and array of IP addresses as arguments. If IPv6 and IPv4 addresses are both available, IPv6 addresses will be earlier in the array.
- Returns
Returns a
Requestobject where progress can be observed from the retries variable and the request can be cancelled using thecancelmethod.
- Method
host_to_ips
variantConcurrent.Futurehost_to_ips(stringhost)- Description
Looks up the IP number for a host. Returns a
Concurrent.Futureobject that resolves into an array of IP addresses as strings, or an empty array if it is missing.
- Method
ip_to_host
Requestip_to_host(stringip,function(string,string,__unknown__... :void)callback,mixed...args)- Description
Looks up the host name for an IP number, and when done calls the function callback with the IP number adn host name as arguments.
- Returns
Returns a
Requestobject where progress can be observed from the retries variable and the request can be cancelled using thecancelmethod.
- Method
ip_to_host
variantConcurrent.Futureip_to_host(stringip)- Description
Looks up the host name for an IP number. Returns a
Concurrent.Futureobject that resolves into the host name, or 0 if it is missing.
- Method
low_generic_query
privatevoidlow_generic_query(intrestrictsearch,stringtype,stringdomain,function(array(string)|zero,__unknown__... :void)callback,mixed...restargs)- Parameter
restrictsearch 0Try
/etc/hostsfirst, then try all configured domain-postfixes when querying the DNS servers (default).1Try
/etc/hostsfirst, then try an unaltered query on the DNS servers.2Just try an unaltered query on the DNS servers.
Class Protocols.DNS.async_dual_client
- Description
Both an
async_clientand anasync_tcp_client.
Class Protocols.DNS.async_tcp_client
- Description
Asynchronous DNS client using TCP
Class Protocols.DNS.client
- Description
Synchronous DNS client.
- Method
create
Protocols.DNS.clientProtocols.DNS.client()Protocols.DNS.clientProtocols.DNS.client(void|string|arrayserver,void|int|arraydomain)
- Method
do_sync_query
mapping|zerodo_sync_query(strings)- Description
Perform a synchronous DNS query.
- Parameter
s Result of
Protocols.DNS.protocol.mkquery- Returns
mapping containing query result or 0 on failure/timeout
- Example
// Perform a hostname lookup, results stored in r->anobject d=Protocols.DNS.client();mapping r=d->do_sync_query(d->mkquery("pike.lysator.liu.se", C_IN, T_A));
- Method
get_primary_mx
stringget_primary_mx(stringhostname)- Description
Queries the primary mx for the host.
- Returns
Returns the hostname of the primary mail exchanger.
- Method
gethostbyaddr
arraygethostbyaddr(stringhostip)- Description
Queries the host name or ip from the default or given DNS server. The result is an array with three elements,
- Returns
The requested data about the specified host.
Array stringhostipThe host IP.
array(string)ipIP number(s).
array(string)aliasesDNS name(s).
- Method
gethostbyname
arraygethostbyname(stringhostname)- Description
Queries the host name from the default or given DNS server. The result is an array with three elements,
- Returns
An array with the requested information about the specified host.
Array stringhostnameHostname.
array(string)ipIP number(s).
array(string)aliasesDNS name(s).
- Note
Prior to Pike 7.7 this function only returned IPv4 addresses.
- Method
getsrvbyname
arraygetsrvbyname(stringservice,stringprotocol,string|voidname)- Description
Queries the service record (RFC 2782) from the default or given DNS server. The result is an array of arrays with the following six elements for each record. The array is sorted according to the priority of each record.
Each element of the array returned represents a service record. Each service record contains the following:
- Returns
An array with the requested information about the specified service.
Array intpriorityPriority
intweightWeight in event of multiple records with same priority.
intportport number
stringtargettarget dns name
- Method
match_etc_hosts
array(string)|zeromatch_etc_hosts(stringhost)- Description
Return /etc/hosts records
Class Protocols.DNS.client.Request
- Variable
domain
Variable req
Variable callback
Variable args stringProtocols.DNS.client.Request.domainstringProtocols.DNS.client.Request.reqfunction(string,mapping|zero,__unknown__... :void)|zeroProtocols.DNS.client.Request.callbackarray(mixed) Protocols.DNS.client.Request.args
- Method
__create__
protectedlocalvoid__create__(stringdomain,stringreq,function(string,mapping|zero,__unknown__... :void)|zerocallback,array(mixed)args)
- Syntax
voidcancel()mixedProtocols.DNS.client.Request.retry_co- Description
Cancel the current request.
- Variable
domain
Class Protocols.DNS.dual_client
- Description
Both a
clientand atcp_client.
Class Protocols.DNS.dual_server
- Description
This is both a
serverandtcp_server.
Class Protocols.DNS.protocol
- Description
Low level DNS protocol
- Method
decode_entries
arraydecode_entries(strings,intnum,array(int)next)- Description
Decode a set of entries from an answer.
- Parameter
s Encoded entries.
- Parameter
num Number of entires in
s.- Parameter
next Array with a single element containing the start position in
son entry and the continuation position on return.- Returns
Returns an array of mappings describing the decoded entires:
Array mapping0..Mapping describing a single entry:
"name":stringName the entry concerns.
"type":EntryTypeType of entry.
"cl":ResourceClassResource class. Typically
C_IN."ttl":intTime to live for the entry in seconds.
"len":intLength in bytes of the encoded data section.
Depending on the type of entry the mapping may contain different additional fields:
T_CNAME"cname":stringT_PTR"ptr":stringT_NS"ns":stringT_MX"preference":int"mx":stringT_HINFO"cpu":string"os":stringT_SRV"priority":int"weight":int"port":int"target":string"service":string"proto":string"name":stringT_A"a":stringIPv4-address in dotted-decimal format.
T_AAAA"aaaa":stringIPv6-address in colon-separated hexadecimal format.
T_LOC"version":intVersion, currently only version
0(zero) is supported."size":float"h_perc":float"v_perc":float"lat":float"long":float"alt":floatT_SOA"mname":string"rname":string"serial":int"refresh":int"retry":int"expire":int"minimum":intNote: For historical reasons this entry is named
"minimum", but it contains the TTL for negative answers (RFC 2308).T_NAPTR"order":int"preference":int"flags":string"service":string"regexp":string"replacement":stringT_TXT"txt":stringNote: For historical reasons, when receiving decoded DNS entries from a client, this will be the first string in the TXT record only.
"txta":stringWhen receiving decoded DNS data from a client, txta is the array of all strings in the record. When sending multiple strings in a TXT record in a server, please supply an array as "txt" containing the strings, txta will be ignored.
T_SPF"spf":stringT_CAA"critical":intSets the critical bit of the flag field.
"flags":int"tag":stringCannot be empty.
"value":string
- Method
mkquery
stringmkquery(string|mappingdnameorquery,int|voidcl,int|voidtype)- Description
create a DNS query PDU
- Parameter
dnameorquery - Parameter
cl record class such as Protocols.DNS.C_IN
- Parameter
type query type such Protocols.DNS.T_A
- Returns
data suitable for use with
Protocols.DNS.client.do_sync_query- Example
// generate a query PDU for a address lookup on the hostname pike.lysator.liu.se string q=Protocols.DNS.protocol()->mkquery("pike.lysator.liu.se", Protocols.DNS.C_IN, Protocols.DNS.T_A);
Class Protocols.DNS.server
- Description
Base class for implementing a Domain Name Service (DNS) server operating over UDP.
This class is typically used by inheriting it, and overloading
reply_query()andhandle_response().- See also
dual_server
- Method
create
Protocols.DNS.serverProtocols.DNS.server()Protocols.DNS.serverProtocols.DNS.server(intport)Protocols.DNS.serverProtocols.DNS.server(stringip)Protocols.DNS.serverProtocols.DNS.server(stringip,intport)Protocols.DNS.serverProtocols.DNS.server(stringip,intport,string|int...more)- Description
Open one or more new DNS server ports.
- Parameter
ip The IP to bind to. Defaults to
"::"or0(ie ANY) depending on whether IPv6 support is present or not.- Parameter
port The port number to bind to. Defaults to
53.- Parameter
more Optional further DNS server ports to open. Must be a set of
ip,portargument pairs.
Class Protocols.DNS.server_base
- Description
Base class for
server,tcp_server.
- Method
handle_decode_error
protectedvoidhandle_decode_error(mappingerr,mappingm,Stdio.UDP|objectudp)- Description
Respond to a query that cannot be decoded.
This method exists so that servers can override the default behaviour.
- Method
handle_query
protectedvoidhandle_query(mappingq,mappingm,Stdio.UDP|objectudp)- Description
Handle a query.
This function calls
reply_query(), and dispatches the result tosend_reply().
- Method
handle_response
protectedvoidhandle_response(mappingr,mappingm,Stdio.UDP|objectudp)- Description
Handle a query response (stub).
Overload this function to handle responses to possible recursive queries.
- Method
rec_data
protectedvoidrec_data(mappingm,Stdio.UDP|objectudp)- Description
Low-level DNS-data receiver.
This function receives the raw DNS-data from the
Stdio.UDPsocket or TCP connection objectudp, decodes it, and dispatches the decoded DNS request tohandle_query()andhandle_response().
- Method
reply_query
protectedmapping|zeroreply_query(mappingquery,mappingudp_data,function(mapping:void)cb)- Description
Reply to a query (stub).
- Parameter
query Parsed query.
- Parameter
udp_data Raw UDP data. If the server operates in TCP mode (
tcp_server), it will contain an additional tcp_con entry. In that case,udp_data->tcp_con->conwill contain the TCP connection the request was received on asStdio.Fileobject.- Parameter
cb Callback you can call with the result instead of returning it. In that case, return
0(zero).Overload this function to implement the proper lookup.
- Note
To indicate the default failure
cbmust be called with an argument of0(zero), and0(zero) be returned.- Returns
Returns
0(zero) when thecbcallback will be used, or a result mapping if not:"rcode":int0 (or omit) for success, otherwise one of the Protocols.DNS.* constants
"an":array(mapping(string:string|int))|voidAnswer section:
Array mapping(string:string|int)entry"name":string|array(string)"type":int"cl":int"qd":array|voidQuestion section, same format as
an; omit to return the original question"ns":array|voidAuthority section (usually NS records), same format as
an"ar":array|voidAdditional section, same format as
an"aa":intSet to 1 to include the Authoritative Answer bit in the response
"tc":intSet to 1 to include the TrunCated bit in the response
"rd":intSet to 1 to include the Recursion Desired bit in the response
"ra":intSet to 1 to include the Recursion Available bit in the response
"cd":intSet to 1 to include the Checking Disabled bit in the response
"ad":intSet to 1 to include the Authenticated Data bit in the response
- Method
report_decode_error
protectedvoidreport_decode_error(mixederr,mappingm,Stdio.UDP|objectudp)- Description
Report a failure to decode a DNS request.
The default implementation writes a backtrace to stderr. This method exists so that derived servers can replace it with more appropriate error handling for their environment.
Class Protocols.DNS.tcp_client
- Description
Synchronous DNS client using TCP Can handle larger responses than
clientcan.
- Method
do_sync_query
mapping|zerodo_sync_query(strings)- Description
Perform a synchronous DNS query.
- Parameter
s Result of
Protocols.DNS.protocol.mkquery- Returns
mapping containing query result or 0 on failure/timeout
- Example
// Perform a hostname lookup, results stored in r->anobject d=Protocols.DNS.tcp_client();mapping r=d->do_sync_query(d->mkquery("pike.lysator.liu.se", C_IN, T_A));
Class Protocols.DNS.tcp_server
- Description
Base class for implementing a Domain Name Service (DNS) server operating over TCP.
This class is typically used by inheriting it, and overloading
reply_query()andhandle_response().
- Method
create
Protocols.DNS.tcp_serverProtocols.DNS.tcp_server()Protocols.DNS.tcp_serverProtocols.DNS.tcp_server(intport)Protocols.DNS.tcp_serverProtocols.DNS.tcp_server(stringip)Protocols.DNS.tcp_serverProtocols.DNS.tcp_server(stringip,intport)Protocols.DNS.tcp_serverProtocols.DNS.tcp_server(stringip,intport,string|int...more)- Description
Open one or more new DNS server ports.
- Parameter
ip The IP to bind to. Defaults to
"::"or0(ie ANY) depending on whether IPv6 support is present or not.- Parameter
port The port number to bind to. Defaults to
53.- Parameter
more Optional further DNS server ports to open. Must be a set of
ip,portargument pairs.
- Constant
FORMERR
14.4. LysKOM
Module Protocols.LysKOM
Class Protocols.LysKOM.Connection
- Description
This class contains nice abstractions for calls into the server. They are named "call", "async_call" or "async_cb_call", depending on how you want the call to be done.
- Variable
protocol_level
Variable session_software
Variable software_version intProtocols.LysKOM.Connection.protocol_levelstringProtocols.LysKOM.Connection.session_softwarestringProtocols.LysKOM.Connection.software_version- Description
Description of the connected server.
- Method
XXX
Method async_XXX
Method async_cb_XXX mixedXXX(mixed...args)objectasync_XXX(mixed...args)objectasync_cb_XXX(function(:void)callback,mixed...args)- Description
Perform a call to the server. This actually clones a
Protocols.LysKOM.Requestobject, and initializes it. XXX is to be read as one of the calls in the lyskom protocol. ('-' is replaced with '_'.) (ie, logout, async_login or async_cb_get_conf_stat.)The first variant is a synchronous call. This will send the command, wait for the server to execute it, and then return the result.
The last two are asynchronous calls, returning an initialized
Protocols.LysKOM.Requestobject.
- Method
create
Protocols.LysKOM.ConnectionProtocols.LysKOM.Connection(stringserver)Protocols.LysKOM.ConnectionProtocols.LysKOM.Connection(stringserver,mappingoptions)- Description
The
optionsargument is a mapping with the following members:"login":int|stringlogin as this person number (get number from name).
"password":stringsend this login password.
"invisible":boolif set, login invisible.
"port":int(16bit)server port (default is 4894).
"whoami":stringpresent as this user (default is from uid/getpwent and hostname).
Class Protocols.LysKOM.Session
- Variable
user
objectProtocols.LysKOM.Session.user- Description
This variable contains the
Protocols.LysKOM.Session.Personthat is logged in.
- Method
create
Protocols.LysKOM.SessionProtocols.LysKOM.Session(stringserver)Protocols.LysKOM.SessionProtocols.LysKOM.Session(stringserver,mappingoptions)- Description
Initializes the session object, and opens a connection to that server.
optionsis a mapping of options:"login":int|stringlogin as this person number (get number from name).
"create":stringcreate a new person and login with it.
"password":stringsend this login password.
"invisible":boolif set, login invisible.
"port":int(16bit)server port (default is 4894).
"whoami":stringpresent as this user (default is from uid/getpwent and hostname).
- See also
Connection
- Method
create_person
objectcreate_person(stringname,stringpassword)- Description
Create a person, which will be logged in. returns the new person object
- Method
create_text
objectcreate_text(stringsubject,stringbody,mappingoptions)objectcreate_text(stringsubject,stringbody,mappingoptions,function(:void)callback,mixed...extra)- Description
Creates a new text.
if
callbackis given, the function will be called when the text has been created, with the text as first argument. Otherwise, the new text is returned.optionsis a mapping that may contain:"recpt":Conference|array(Conference)recipient conferences.
"cc":Conference|array(Conference)cc-recipient conferences.
"bcc":Conference|array(Conference)bcc-recipient conferences*.
"comm_to":Text|array(Text)The text(s) to be commented.
"foot_to":Text|array(Text)The text(s) to be footnoted.
"anonymous":boolsend text anonymously.
"aux_items":array(AuxItemInput)AuxItems you want to set for the text*.
- Note
The items above marked with '*' are only available on protocol 10 servers. A LysKOM error will be thrown if the call fails.
- See also
Conference.create_text(),Text.comment(),Text.footnote()
- Method
login
objectlogin(intuser_no,stringpassword)objectlogin(intuser_no,stringpassword,intinvisible)- Description
Performs a login. Throws a lyskom error if unsuccessful.
- Returns
The session object logged in.
- Method
register_async_message_callback
voidregister_async_message_callback(function(int,int,string:void)cb)
- Method
send_message
object|voidsend_message(stringtextstring,mappingoptions)- Description
Sends a message.
optionsis a mapping that may contain:"recpt":Conferencerecipient conference.
- Method
try_complete_person
array(ProtocolTypes.ConfZInfo) try_complete_person(stringorig)- Description
Runs a LysKOM completion on the given string, returning an array of confzinfos of the match.
Class Protocols.LysKOM.Session.AuxItemInput
- FIXME
Undocumented
Class Protocols.LysKOM.Session.AuxItems
- FIXME
Undocumented
Class Protocols.LysKOM.Session.Conference
- Variable
prefetch_stat
Variable no
Variable error
Variable msg_of_day
Variable supervisor
Variable permitted_submitters
Variable super_conf
Variable creator
Variable aux_items
Variable name
Variable type
Variable creation_time
Variable last_written
Variable nice
Variable no_of_members
Variable first_local_no
Variable no_of_texts
Variable presentation mixedProtocols.LysKOM.Session.Conference.prefetch_statintProtocols.LysKOM.Session.Conference.noobjectProtocols.LysKOM.Session.Conference.errorTextProtocols.LysKOM.Session.Conference.msg_of_dayConferenceProtocols.LysKOM.Session.Conference.supervisorConferenceProtocols.LysKOM.Session.Conference.permitted_submittersConferenceProtocols.LysKOM.Session.Conference.super_confPersonProtocols.LysKOM.Session.Conference.creatormixedProtocols.LysKOM.Session.Conference.aux_itemsmixedProtocols.LysKOM.Session.Conference.namemixedProtocols.LysKOM.Session.Conference.typemixedProtocols.LysKOM.Session.Conference.creation_timemixedProtocols.LysKOM.Session.Conference.last_writtenmixedProtocols.LysKOM.Session.Conference.nicemixedProtocols.LysKOM.Session.Conference.no_of_membersmixedProtocols.LysKOM.Session.Conference.first_local_nomixedProtocols.LysKOM.Session.Conference.no_of_textsmixedProtocols.LysKOM.Session.Conference.presentation- FIXME
Undocumented
- Variable
prefetch_stat
Class Protocols.LysKOM.Session.Membership
- Description
All variables in this class is read only.
Class Protocols.LysKOM.Session.Person
- Variable
error
Variable user_area
Variable username
Variable privileges
Variable flags
Variable last_login
Variable total_time_present
Variable sessions
Variable created_lines
Variable created_bytes
Variable read_texts
Variable no_of_text_fetches
Variable created_persons
Variable created_confs
Variable first_created_local_no
Variable no_of_created_texts
Variable no_of_marks
Variable no_of_confs
Variable unread
Variable clear_membership
Variable membership objectProtocols.LysKOM.Session.Person.errorTextProtocols.LysKOM.Session.Person.user_areamixedProtocols.LysKOM.Session.Person.usernamemixedProtocols.LysKOM.Session.Person.privilegesmixedProtocols.LysKOM.Session.Person.flagsmixedProtocols.LysKOM.Session.Person.last_loginmixedProtocols.LysKOM.Session.Person.total_time_presentmixedProtocols.LysKOM.Session.Person.sessionsmixedProtocols.LysKOM.Session.Person.created_linesmixedProtocols.LysKOM.Session.Person.created_bytesmixedProtocols.LysKOM.Session.Person.read_textsmixedProtocols.LysKOM.Session.Person.no_of_text_fetchesmixedProtocols.LysKOM.Session.Person.created_personsmixedProtocols.LysKOM.Session.Person.created_confsmixedProtocols.LysKOM.Session.Person.first_created_local_nomixedProtocols.LysKOM.Session.Person.no_of_created_textsmixedProtocols.LysKOM.Session.Person.no_of_marksmixedProtocols.LysKOM.Session.Person.no_of_confsmixedProtocols.LysKOM.Session.Person.unreadint(0)Protocols.LysKOM.Session.Person.clear_membershipmixedProtocols.LysKOM.Session.Person.membership- FIXME
Undocumented
- Variable
prefetch_stat
Variable prefetch_conf
Variable prefetch_membership mixedProtocols.LysKOM.Session.Person.prefetch_statmixedProtocols.LysKOM.Session.Person.prefetch_confmixedProtocols.LysKOM.Session.Person.prefetch_membership- FIXME
Undocumented
- Variable
error
Class Protocols.LysKOM.Session.Text
- Description
All variables in this class is read only.
- FIXME
Undocumented
- Variable
prefetch_text
Variable prefetch_stat
Variable lines
Variable characters
Variable clear_stat
Variable aux_items mixedProtocols.LysKOM.Session.Text.prefetch_textmixedProtocols.LysKOM.Session.Text.prefetch_statmixedProtocols.LysKOM.Session.Text.linesmixedProtocols.LysKOM.Session.Text.charactersmixedProtocols.LysKOM.Session.Text.clear_statmixedProtocols.LysKOM.Session.Text.aux_items- FIXME
Undocumented
- Variable
creation_time
mixedProtocols.LysKOM.Session.Text.creation_time- Description
The time the text was created on the server.
- Variable
misc
mixedProtocols.LysKOM.Session.Text.misc- Description
Misc info, including what conferences the message is posted to.
- FIXME
Needs a more complete description.
- Variable
text
stringProtocols.LysKOM.Session.Text.text- Description
The actual text (or body if you wish).
- Method
create
Protocols.LysKOM.Session.TextProtocols.LysKOM.Session.Text(stringtextnumber)- Description
Initializes a Text object.
- Variable
user
Module Protocols.LysKOM.ProtocolTypes
- Description
Data types as defined by the LysKOM protocol specification.
Module Protocols.LysKOM.Request
- Description
This module contains nice abstractions for calls into the server. They are named "call", "async_call" or "async_cb_call", depending on how you want the call to be done.
Class Protocols.LysKOM.Request._Request
- Description
This is the base class for lyskom requests. All lyskom request classes inherit this class.
- Variable
error
objectProtocols.LysKOM.Request._Request.error- Description
How the call failed. The call has completed if
(ok||error).
- Method
_async
Method _sync void_async(intcall,mixed_data)mixed_sync(intcall,mixed_data)- Description
Initialise an asynchronous or a synchronous call, the latter is also evaluating the result. These are called by async and sync respectively.
- Method
_reply
Method reply mixed_reply(object|arraywhat)mixedreply(object|arraywhat)- Description
_reply()is called as callback to evaluate the result, and callsreply()in itself to do the real work.
14.5. Other protocols
Module Protocols
Module Protocols.Bittorrent
Class Protocols.Bittorrent.DHT
- Description
DHT implementation for bittorrent Implemented BEPs*: [X] BEP005 DHT Protocol [ ] BEP032 IPv6 extension for DHT [ ] BEP033 DHT scrape [ ] BEP042 DHT security extensions [ ] BEP043 Read-only DHT nodes [ ] BEP044 Storing arbitrary data in the DHT [ ] BEP045 Multiple-address operation for the Bittorrent DHT
*) See http://bittorrent.org/beps/bep_0000.html for a list of all BEPs
- Variable
MAX_PEERS_PER_HASH
intProtocols.Bittorrent.DHT.MAX_PEERS_PER_HASH- Description
Maximum number of peers per hash that we store.
- Variable
PEER_TABLE_MAX_SIZE
intProtocols.Bittorrent.DHT.PEER_TABLE_MAX_SIZE- Description
Maximum number hashes we store data for in this node.
- Variable
callbacks_by_txid
Variable request_timeouts mapping(string:mixed) Protocols.Bittorrent.DHT.callbacks_by_txidmapping(string:mixed) Protocols.Bittorrent.DHT.request_timeouts- Description
Keep track of callbacks by transaction id
- Variable
command_handlers
mapping(string:function(:void)) Protocols.Bittorrent.DHT.command_handlers- Description
Mapping of query names to handlers. Allows for extensions to be implemented.
- Variable
is_running
intProtocols.Bittorrent.DHT.is_running- Description
Indicates if the DHT instance is up and running or not.
- Variable
my_node_id
protectedstring|zeroProtocols.Bittorrent.DHT.my_node_id- Description
Our global ID for this DHT router, expressed as a 20 byte hash.
- Variable
peers_by_hash
mapping(string:mapping) Protocols.Bittorrent.DHT.peers_by_hash- Description
Peers we know of.
- Variable
port
Stdio.UDP|zeroProtocols.Bittorrent.DHT.port- Description
The UDP port on which we listen for messages.
- Method
add_node
DHTNodeadd_node(string|DHTNoden,void|stringip,void|intport)- Description
Gateway into the routing table for now. This is in preparation for BEP045.
- Method
add_peer_for_hash
voidadd_peer_for_hash(Peern,stringhash,stringip,intport)- Description
Insert a peer for a hash in our table of known peers. Ignores the request if the given node is already a peer for the given hash.
- Method
announce
voidannounce(stringhash,intport)- Description
Announce a hash to the world on the given port.
This is done by executing a get_peers request to the DHT and then announcing to the K closest nodes to that hash.
- Method
announce_to
protectedvoidannounce_to(stringpeer_ip,intpeer_port,stringtoken,stringinfo_hash,intannounced_port,void|intimplied_port)- Description
This is the internal announce callback - it is called for each node that we should send an announcement to.
- Method
create
Protocols.Bittorrent.DHTProtocols.Bittorrent.DHT(void|stringmy_node_id)- Description
Create a new DHT instance with an optional predefined node id.
- Method
distance
stringdistance(stringh1,stringh2)- Description
Calculate the distance between two hashes using XOR. Fails unless both h1 and h2 are strings of the same length.
- Method
distance_exp
intdistance_exp(stringh1,stringh2)- Description
Calculate the order of magnitude of the distance. Basically count leading zeros...
- Method
generate_token_for
Tokengenerate_token_for(stringip,intport,void|intdont_sha1)- Description
Generate a token for a specific node. If it fails to generate a unique token for this request, it will return UNDEFINED, otherwise a string token is returned.
- Method
generate_txid
stringgenerate_txid()- Description
Generates suitable transaction ids making sure to not collide with existing ones.
- Method
get_node_id
stringget_node_id()- Description
Allows outsiders to examine the node id of this instance.
- Method
handle_announce_peer
voidhandle_announce_peer(mappingdata,stringip,intport)- Description
Handles other peers announcing to us for safekeeping.
- Method
handle_find_node
voidhandle_find_node(mappingdata,stringip,intreq_port)- Description
Handles request for nodes closer to a hash.
- Method
handle_get_peers
voidhandle_get_peers(mappingdata,stringip,intport)- Description
Returns peers to the requestor or our closest nodes if we don't know of any peers.
- Method
handle_ping
voidhandle_ping(mappingdata,stringip,intport)- Description
Handles PONG responses to incoming PINGs.
- Method
handle_unknown_method
voidhandle_unknown_method(mappingdata,stringip,intport)- Description
Responds to unknown methods. Currently does nothing at all.
- Method
read_callback
protectedvoidread_callback(mapping(string:int|string)datagram,mixed...extra)- Description
Called when we recieve a datagram on the UDP port we are listening to.
- Method
read_timeout
protectedvoidread_timeout(stringtxid)- Description
Internal timeout method to ensure we don't wait forever on responses from nodes that are no longer available.
Note: The timeout is not propagated to higher levels, so callers cannot rely on the send_dht_query() callback to propagate this.
- Method
send_dht_query
stringsend_dht_query(stringto,intdstport,mappingdata,void|function(:void)response_callback,mixed...args)- Description
Sends a DHT query and calls the callback when a response is recieved or when a timeout occurs.
- Method
send_dht_request
intsend_dht_request(stringto,intdstport,mappingdata)- Description
Do the actual sending part... No timeout handling or etherwise - just send the message.
Returns the TXID if the message was sent successfully and UNDEFINED if not.
- Method
send_ping
stringsend_ping(stringip,intport,function(mapping,string,int:void)cb)- Description
Sends a PING to a remote port and calls the callback cb if we get a response.
- Method
set_node_id
voidset_node_id(stringmy_node_id)- Description
Sets the node id of this instance. This has implications for the routing table, so we need to reinitialize it if this happens...
- Method
stop
voidstop()- Description
Stop the DHT instance. When the instance is stopped, it will close its port and therefore stop responding to queries. It will not destroy the DHT routing table or other states that could be reused if the DHT instance is started back up.
- Method
token_by_endpoint
Tokentoken_by_endpoint(stringip,intport)- Description
Returns a token object for the given ip/port if one exists.
Enum Protocols.Bittorrent.DHT.DHT_ERROR
- Constant
DHT_GENERIC_ERROR
Constant DHT_SERVER_ERROR
Constant DHT_PROTOCOL_ERROR
Constant DHT_UNKNOWN_METHOD
Constant DHT_QUERY_TIMEOUT constantProtocols.Bittorrent.DHT.DHT_GENERIC_ERRORconstantProtocols.Bittorrent.DHT.DHT_SERVER_ERRORconstantProtocols.Bittorrent.DHT.DHT_PROTOCOL_ERRORconstantProtocols.Bittorrent.DHT.DHT_UNKNOWN_METHODconstantProtocols.Bittorrent.DHT.DHT_QUERY_TIMEOUT
- Constant
DHT_GENERIC_ERROR
Class Protocols.Bittorrent.DHT.DHTNode
- Description
Represents a node in our routing table. These nodes also have a state compared to the Node class above along with some other fancy stuff.
- Variable
age
intProtocols.Bittorrent.DHT.DHTNode.age- Description
Time since last response seen from this node
- Note
Read only
- Method
activity
voidactivity()- Description
Call when we see activity from this node to ensure it returns to good standing. Will set the node state to DHT_ACTIVE, update last_response and set ping_fails to 0.
- Method
cancel_check_node
voidcancel_check_node()- Description
Removes any outstanding callouts to check the node.
- Method
compact_node_info
stringcompact_node_info()- Description
Returns the compact node info for this node.
- Method
node_info
mappingnode_info()- Description
Extend the Node::node_info() method to include info relevant to a DHTNode.
- Method
node_info_human
mappingnode_info_human()- Description
Human readable output version of the
node_infomethod.
- Method
ping_timeout
protectedvoidping_timeout(stringtxid)- Description
Called when a ping request to this peer times out. We set the state to DHT_BAD and leave it at that.
Class Protocols.Bittorrent.DHT.DHTOperation
- Description
Base class for operations that need to iterate over the DHT in some way like get_peers and find_node.
- Variable
desired_results
intProtocols.Bittorrent.DHT.DHTOperation.desired_results- Description
Desired number of results before the op considers itself done
- Variable
target_hash
Variable done_cb
Variable done_cb_args stringProtocols.Bittorrent.DHT.DHTOperation.target_hashfunction(:void)|zeroProtocols.Bittorrent.DHT.DHTOperation.done_cbarray(mixed) Protocols.Bittorrent.DHT.DHTOperation.done_cb_args
- Variable
max_no_requests
intProtocols.Bittorrent.DHT.DHTOperation.max_no_requests- Description
Maximum number of requests that may be generated before bailing out.
- Variable
max_outstanding_requests
int(0..)Protocols.Bittorrent.DHT.DHTOperation.max_outstanding_requests- Description
Maximum number of concurrent requests allowed
- Variable
query_timeout_period
float|intProtocols.Bittorrent.DHT.DHTOperation.query_timeout_period- Description
Timeout for the query
- Variable
reqs
intProtocols.Bittorrent.DHT.DHTOperation.reqs- Description
Number of requests generated by this query
- Variable
result
arrayProtocols.Bittorrent.DHT.DHTOperation.result- Description
Result of the operation to be inspected by the done callback. Content of the result array varies depending on the concrete implementation of the operation
- Variable
result_count
intProtocols.Bittorrent.DHT.DHTOperation.result_count- Description
Result counter - may differ from actual number of objects in the result array in some cases. For example in the get_peers query, closest nodes may be added in addition to any peers found.
- Method
__create__
protectedlocalvoid__create__(stringtarget_hash,function(:void)|zerodone_cb,mixed...done_cb_args)
- Method
add_node_to_query
voidadd_node_to_query(Noden)- Description
Add a node to the list of nodes to query.
- Method
create
Protocols.Bittorrent.DHT.DHTOperationProtocols.Bittorrent.DHT.DHTOperation(stringtarget_hash,function(:void)|zerodone_cb,mixed...done_cb_args)
- Method
do_query_peer
privatevoiddo_query_peer(Nodepeer)- Description
Create a request to the peer info given. The peer info array is expected to contain peer hash, peer ip, peer port.
- Method
done
protectedvoiddone()- Description
Internal done callback called when the operation finishes. The main purpose of this callback is to simply call the application level callback but in some cases it can also be used to modify the result before calling the application callback.
- Method
execute
this_programexecute()- Description
Execute the DHTOperation by ensuring there are nodes in the nodes_to_query array as well as calling
run. If this method is overridden, it should always call the parent execute methods!
- Method
generate_query
protectedmappinggenerate_query()- Description
This method should be overridden by the actual handlers for the operation.
- Method
got_response_cb
privatevoidgot_response_cb(mappingresp)- Description
Callback when we get responses. This is private to the DHTOperation class and should not be overridden. Instead override the got_response method declared above.
- Method
is_done
intis_done()- Description
This method will return 1 if we consider ourselves done. This should result in the
donemethod being called. Typically, we are done if there are no transactions in flight.
- Method
query_timeout
privatevoidquery_timeout(stringtxid)- Description
Called when a transaction ID has been in flight for too long and we want to stop waiting for an answer. We call
runto ensure we continue processing requests if more are needed.
- Method
run
privatevoidrun()- Description
Processes the queue of nodes to query and calls
doneif we have enough results or there are no transactions in flight. This is the method called to initiate a query.
Class Protocols.Bittorrent.DHT.FindNode
- Description
FindNode implements the find_node query on the DHT.
Upon completion, the callback given at instance creation will be called and the result can be found in the results array.
For this operation, the results array will contain Node objects. In some cases these objects may also be DHTNode objects, but the callback must not expect this.
- Variable
desired_results
intProtocols.Bittorrent.DHT.FindNode.desired_results- Description
Override the default number of desired results
- Method
execute
this_programexecute()- Description
Execute method that also checks if we have the targets in our routing table.
Class Protocols.Bittorrent.DHT.GetPeers
- Description
The GetPeers class is used to initiate queries to the DHT where peers for a hash is desired. Upon completion, the done_db will be called with the GetPeers instance as the first argument and the done_cb_args as the following arguments.
The done_cb function is expected to examine the results array to find out what the result of the query actually contains. For this query, the result array will be an array with two elements; the first one containing any responses from nodes that knows of peers and the second one will contain the closest nodes to the target hash that we saw during the query.
- Variable
closest_nodes
arrayProtocols.Bittorrent.DHT.GetPeers.closest_nodes- Description
Sorted array of the closest K nodes we've seen in the query.
- Variable
desired_results
intProtocols.Bittorrent.DHT.GetPeers.desired_results- Description
Override the default number of desired results
Class Protocols.Bittorrent.DHT.Node
- Description
Utility class that represents a node that we learned of somehow. Node objects are not part of the DHT yet but can be used to create fullfledged DHTNode objects.
- Method
endpoint_compact
stringendpoint_compact()- Description
Returns just the IP and port as an 8-bit string.
- Method
node_info
mapping(string:mixed) node_info()- Description
Return basic info about the node as a mapping. All values are human readable.
Class Protocols.Bittorrent.DHT.Peer
- Description
Information about the peeer for a hash
Class Protocols.Bittorrent.DHT.Routingtable
- Description
Abstraction for the routing table.
- Variable
allow_node_in_routing_table
function(DHTNode:int) Protocols.Bittorrent.DHT.Routingtable.allow_node_in_routing_table- Description
Callback method that determines if a peer is allowed into our routing table or not. Return 1 to allow the peer or 0 to ignore it.
- Variable
bucket_by_uuid
Variable buckets mapping(string:Bucket) Protocols.Bittorrent.DHT.Routingtable.bucket_by_uuidarray(Bucket) Protocols.Bittorrent.DHT.Routingtable.buckets- Description
Buckets in our routing table
- Variable
my_node_id
protectedstring|zeroProtocols.Bittorrent.DHT.Routingtable.my_node_id- Description
Node ID that this routing table belongs to
- Variable
nodes_by_hash
Variable nodes_by_endpoint mapping(string:DHTNode) Protocols.Bittorrent.DHT.Routingtable.nodes_by_hashmapping(string:DHTNode) Protocols.Bittorrent.DHT.Routingtable.nodes_by_endpoint- Description
Lookup table for nodess so we can quickly find out if any given hash is already in our table somewhere.
- Method
add_node
DHTNodeadd_node(string|DHTNoden,void|stringip,void|intport)- Description
Attepmts to add a node to our routing table. If a node with the same hash and/or endpoint already exists, that node is returned instead. If this node is inserted into the routing table, it is returned. If the node could not be inserted at all, UNDEFINED is returned.
- Method
bucket_for
Bucketbucket_for(string|DHTNoden)- Description
Calculate and return the bucket in which DHTNode n should belong to.
- Method
copy_from
voidcopy_from(this_programrt)- Description
Iterate over the given routingtable, copying the nodes as we go along.
- Method
deserialize
voiddeserialize(array(mapping)nodes)- Description
Deserialize an array created by
serialize.
- Method
serialize
arrayserialize()- Description
Serialize the routing table into basic types so that it may be encoded for storage
- Method
split_bucket
intsplit_bucket(Bucketb,void|intdont_promote)- Description
Splits the given bucket into two by pushing a new bucket to the end of the bucket array. All nodes in the given bucket are removed and re-added to redistribute them. Candidate nodes are also readded and then a separate promotion pass is done. The promotion pass can be inhibited by setting dont_promote to 1.
Class Protocols.Bittorrent.DHT.Routingtable.Bucket
- Method
add_node
intadd_node(DHTNoden,void|intdont_notify)- Description
Attempts to add a node to the bucket either as a live node or as a candidate if the bucket is already full. Optionally supresses notifications of the new node. Returns 0 if the node was successfully added.
- Method
details
mappingdetails()- Description
Returns a mapping with details about the bucket, including a complete list of live and candidate nodes.
- Method
evict_bad_nodes
voidevict_bad_nodes()- Description
Used to evict bad nodes from the bucket. Used by add_node() before attempting to add nodes the bucket.
- Method
low_add_candidate
protectedintlow_add_candidate(DHTNoden,void|intdont_notify)- Description
Adds a node to the bucket as a candidate with the option of suppressing notifications. Returns 0 on success.
- Method
low_add_node
intlow_add_node(DHTNoden,void|intdont_notify)- Description
Adds a node to the bucket as a live node with the option to surpress notifications. Returns 0 on success.
- Method
promote_nodes
voidpromote_nodes()- Description
Attempts to promote nodes if there is space and we have candidates. Called by add_node() before adding a node to ensure we upgrade viable candidates before adding a new node. This ensures that new nodes starts their life in the candidates section until there is space for them.
- Method
add_node
Class Protocols.Bittorrent.DHT.Token
- Method
create
Protocols.Bittorrent.DHT.TokenProtocols.Bittorrent.DHT.Token(stringip,intport,void|intdont_sha1)- Description
Generate a new token for the given IP/port. Optionally don't apply SHA1 to the token for debugging purposes.
- Method
refresh
this_programrefresh()- Description
Refreshes a token's lifetime to the configured token_lifetime value. Note: If called on an old token, this will violate recommendations in BEP005.
- Method
create
Class Protocols.Bittorrent.Generator
- Description
Generate a .torrent binary string from files in the filesystem
- Example
// usage: thisprogram [<file/dir>] [<file/dir>...] <target .torrent> int main(int ac,array am) { Generator g=Generator(); foreach (am[1..<1];;string f) g->add(f);
string dest=am[-1]; if (-1==search(dest,"torrent")) dest+=".torrent";
Stdio.write_file(dest,g->digest()); return 0; }
- Method
add
this_programadd(stringpath,void|stringbase)- Description
Add a file, or a directory tree to the torrent. This will call add_directory_tree or add_file.
- Method
add_announce
this_programadd_announce(string|array(string)announce_url)- Description
Add one or multiple announcers (trackers). This is needed to get a valid .torrent file. If this is called more then once, more announcers (trackers) will be added with lower priority.
- Method
add_directory_tree
this_programadd_directory_tree(stringpath,void|stringdirbase)- Description
Add a directory tree to the torrent. The second argument is what the directory will be called in the torrent. This will call add_file on all non-directories in the tree.
- Method
add_file
this_programadd_file(stringpath,void|stringfilename)- Description
Add a file to the torrent. The second argument is what the file will be called in the torrent.
- Method
build_sha1s
voidbuild_sha1s(void|function(int,int:void)progress_callback)- Description
Build the SHA hashes from the files.
- Method
create
Protocols.Bittorrent.GeneratorProtocols.Bittorrent.Generator(void|stringbase,void|intpiece_size)- Description
Create a generator.
- Parameter
base The base filename/path in the torrent.
- Parameter
piece_size The size of the pieces that the SHA hashes are calculated on. Default 262144 and this value should probably be 2^n.
Class Protocols.Bittorrent.Peer
- Method
connect
voidconnect()- Description
Connect to the peer; this is done async. status/mode will change from
"connecting"to"dead"or to"connected"depending on result. Will throw error if already online.Upon connect, protocol will be initiated in choked mode. When the protocol is up, status will change to
"online"(or"failed"if the handshake failed).
- Method
disconnect
voiddisconnect()- Description
Disconnect a peer. Does nothing if we aren't online. status/mode will change to
"disconnected",1 if we were online.
- Method
downloading_pieces
multiset(int) downloading_pieces()- Description
Returns as multiset what this peer is downloading.
- Method
is_activated
intis_activated()- Description
Returns true if this peer is activated, as in we're downloading from it.
- Method
is_available
intis_available()- Description
Returns true if this peer is available, as in we can use it to download stuff.
- Method
is_choked
intis_choked()- Description
Returns true if this peer is choking, as in doesn't send more data to us.
- Method
is_completed
intis_completed()- Description
Returns true if this peer is completed, as in has downloaded everything already - and we shouldn't need to upload to get stuff.
- Method
is_connectable
intis_connectable()- Description
Returns true if we can connect to this peer, when new or disconnected but not fatally.
- Method
is_strangled
intis_strangled()- Description
Returns true if this peer is strangled; as in we don't want to upload more, because we're not getting any back.
- Method
request
voidrequest(intpiece,intoffset,intbytes,function(int,int,string,object:void|mixed)callback)- Description
Called to request a chunk from this peer.
- Method
send_have
voidsend_have(intn)- Description
Send a have message to tell I now have piece n. Ignored if not online.
- Method
connect
Class Protocols.Bittorrent.Port
Class Protocols.Bittorrent.Torrent
- Description
Bittorrent peer - download and share. Read more about bittorrent at http://bitconjurer.org/BitTorrent/introduction.html
- Example
The smallest usable torrent downloader. As first argument, it expects a filename to a .torrent file.
int main(int ac,array am){// initialize Torrent from file:Protocols.Bittorrent.Torrent t=Protocols.Bittorrent.Torrent(); t->load_metainfo(am[1]);// Callback when download status changes:// t->downloads_update_status=...;// Callback when pieces status change (when we get new stuff):// t->pieces_update_status=...;// Callback when peer status changes (connect, disconnect, choked...):// t->peer_update_status=...;// Callback when download is completed: t->download_completed_callback=lambda(){ call_out(exit,3600,0);// share for an hour, then exit};// Callback to print warnings (same args as sprintf):// t->warning=werror;// type of progress function used below:void progress(int n,int of){/* ... */};// Initiate targets from Torrent,// if target was created, no need to verify:if(t->fix_targets(1,0,progress)==1) t->verify_targets(progress);// Open port to listen on,// we want to do this to be able to talk to firewalled peers: t->open_port(6881);// Ok, start calling tracker to get peers,// and tell about us: t->start_update_tracker();// Finally, start the download: t->start_download();return-1;}
- Variable
do_we_strangle
function(.Peer,int,int:bool) Protocols.Bittorrent.Torrent.do_we_strangle- Description
Function to determine if we should strangle this peer. Default is to allow 100000 bytes of data over the ratio, which is 2:1 per default; upload twice as much as we get.
Arguments are the peer, bytes in (downloaded) and bytes out (uploaded). Return 1 to strangle and 0 to allow the peer to proceed downloading again.
- Variable
download_completed_callback
function(:void) Protocols.Bittorrent.Torrent.download_completed_callback- Description
If set, called when download is completed.
- Variable
downloads_update_status
function(:void) Protocols.Bittorrent.Torrent.downloads_update_status- Description
If set, called when we start to download another piece (no args).
- Variable
peer_update_status
function(:void) Protocols.Bittorrent.Torrent.peer_update_status- Description
If set, called when peer status changes.
- Variable
pieces_update_status
function(:void) Protocols.Bittorrent.Torrent.pieces_update_status- Description
If set, called when we got another piece downloaded (no args).
- Variable
warning
function(string,__unknown__... :void|mixed) Protocols.Bittorrent.Torrent.warning- Description
Called if there is a protocol error.
- Method
bytes_done
intbytes_done()- Description
Calculate the bytes successfully downloaded (full pieces).
- Method
file_got_bitfield
stringfile_got_bitfield()- Description
Returns the file got field as a string bitfield (cached).
- Method
fix_targets
intfix_targets(void|int(-1..2)allocate,void|stringbase_filename,void|function(int,int:void)progress_callback)- Description
Opens target datafile(s).
If all files are created, the verify info will be filled as well, but if it isn't created, a call to
verify_target()is necessary after this call.- Parameter
allocate Determines allocation procedure if the file doesn't exist:
0Don't allocate.
1Allocate virtual file size (seek, write end byte).
2Allocate for real (will call progress_callback(pos,length)).
-1Means never create a file, only open old files.
- Parameter
my_filename A new base filename to substitute the metainfo base target filename with.
- Returns
1The (a) file was already there.
2All target files were created.
- Method
start_update_tracker
voidstart_update_tracker(void|intinterval)- Description
Starts to contact the tracker at regular intervals, giving it the status and recieving more peers to talk to. Will also contact these peers. The default interval is 5 minutes. If given an event, will update tracker with it.
- Method
stop_update_tracker
voidstop_update_tracker(void|stringevent)- Description
Stops updating the tracker; will send the event as a last event, if set. It will not contact new peers.
- Method
update_tracker
voidupdate_tracker(void|stringevent,void|intcontact)- Description
Contact and update the tracker with current status will fill the peer list.
- Method
verify_targets
voidverify_targets(void|function(int,int:void)progress_callback)- Description
Verify the file and fill file_got (necessary after load_info, but needs open_file before this call). [ progress_callback(at chunk,total chunks) ]
Class Protocols.Bittorrent.Torrent.Target
- Description
Each bittorrent has one or more target files. This represents one of those.
- Variable
base
Variable length
Variable offset
Variable path stringProtocols.Bittorrent.Torrent.Target.baseintProtocols.Bittorrent.Torrent.Target.lengthintProtocols.Bittorrent.Torrent.Target.offsetvoid|arrayProtocols.Bittorrent.Torrent.Target.path
Class Protocols.Bittorrent.Tracker
- Variable
dynamic_add_torrents
boolProtocols.Bittorrent.Tracker.dynamic_add_torrents- Description
Allow clients to dynamically add torrents to the tracker.
- Variable
interval
int(0..)Protocols.Bittorrent.Tracker.interval- Description
The query interval reported back to clients. Defaults to
1800.
- Method
add_torrent
voidadd_torrent(stringid)- Description
Add a torrent to the tracker.
- Parameter
id The info hash of the torrent file.
- Method
announce
stringannounce(mappingargs,stringip)- Description
Handles HTTP announce queries to the tracker.
- Variable
dynamic_add_torrents
Module Protocols.Bittorrent.Bencoding
- Method
bits2string
stringbits2string(array(bool)v)- Description
Convert an array of
int(0..1)to a Bittorrent style bitstring. Input will be padded to even bytes.
- Method
decode
string|int|array|mappingdecode(Stdio.Bufferbuf)- Description
Decodes a Bittorrent bencoded data chunk and ignores the remaining string. Returns
UNDEFINEDif the data is incomplete.
- Method
encode
stringencode(string|int|array|mappingdata)- Description
Encodes a Bittorrent bencoded data chunk.
- Method
string2arr
array(int) string2arr(strings)- Description
Convert a Bittorrent style bitstring to an array of indices.
- Method
bits2string
Module Protocols.DNS_SD
Class Protocols.DNS_SD.Service
- Description
This class provides an interface to DNS Service Discovery. The functionality of DNS-SD is described at <http://www.dns-sd.org/>.
Using the Proctocols.DNS_SD.Service class a Pike program can announce services, for example a web site or a database server, to computers on the local network.
When registering a service you need to provide the service name. service type, domain and port number. You can also optionally specify a TXT record. The contents of the TXT record varies between different services; for example, a web server can announce a path to a web page, and a printer spooler is able to list printer features such as color support or two-sided printing.
The service is registered on the network for as long as the instance of the Service class is valid.
- Method
create
Protocols.DNS_SD.ServiceProtocols.DNS_SD.Service(stringname,stringservice,stringdomain,intport,void|string|array(string)txt)- Description
Registers a service on the local network.
- Parameter
name User-presentable name of the service.
- Parameter
service Type of service on the form _type._protocol. Type is an identifier related to the service type. A list of registered service types can be found at http://http://www.dns-sd.org/ServiceTypes.html/. Protocol is normally tcp but udp is also a valid choice. For example, a web server would get a
serviceof _http._tcp.- Parameter
domain Domain name. Normally an empty string which the DNS-SD library will translate into local..
- Parameter
port Port number for the service (e.g. 80 for a web site).
- Parameter
txt An optional TXT record with service-specific information. It can be given as a plain string or an array of property assignment strings. The TXT record can be changed later by calling
update_txtin the object returned when you register the service.- Example
object svc = Protocols.DNS_SD.Service( "Company Intranet Forum", // name "_http._tcp", // service type "", // domain (default) 80, // port ({ "path=/forum/" }) // TXT record );
- Method
update_txt
voidupdate_txt(string|array(string)txt)- Description
Updates the TXT record for the service.
- Parameter
txt A TXT record with service-specific information. It can be given as a plain string or an array of property assignment strings. To remove an existing TXT record you give an empty string as the argument.
Module Protocols.HTTP2
- Description
HTTP/2 protocol.
Enum Protocols.HTTP2.Error
- Constant
ERROR_no_error
Constant ERROR_protocol_error
Constant ERROR_internal_error
Constant ERROR_flow_control_error
Constant ERROR_settings_timeout
Constant ERROR_stream_closed
Constant ERROR_frame_size_error
Constant ERROR_refused_stream
Constant ERROR_cancel
Constant ERROR_compression_error
Constant ERROR_connect_error
Constant ERROR_enhance_your_calm
Constant ERROR_inadequate_security
Constant ERROR_http_1_1_required constantProtocols.HTTP2.ERROR_no_errorconstantProtocols.HTTP2.ERROR_protocol_errorconstantProtocols.HTTP2.ERROR_internal_errorconstantProtocols.HTTP2.ERROR_flow_control_errorconstantProtocols.HTTP2.ERROR_settings_timeoutconstantProtocols.HTTP2.ERROR_stream_closedconstantProtocols.HTTP2.ERROR_frame_size_errorconstantProtocols.HTTP2.ERROR_refused_streamconstantProtocols.HTTP2.ERROR_cancelconstantProtocols.HTTP2.ERROR_compression_errorconstantProtocols.HTTP2.ERROR_connect_errorconstantProtocols.HTTP2.ERROR_enhance_your_calmconstantProtocols.HTTP2.ERROR_inadequate_securityconstantProtocols.HTTP2.ERROR_http_1_1_required
- Constant
ERROR_no_error
Enum Protocols.HTTP2.Flag
Enum Protocols.HTTP2.FrameType
- Constant
FRAME_data
Constant FRAME_headers
Constant FRAME_priority
Constant FRAME_rst_stream
Constant FRAME_settings
Constant FRAME_push_promise
Constant FRAME_ping
Constant FRAME_goaway
Constant FRAME_window_update
Constant FRAME_continuation constantProtocols.HTTP2.FRAME_dataconstantProtocols.HTTP2.FRAME_headersconstantProtocols.HTTP2.FRAME_priorityconstantProtocols.HTTP2.FRAME_rst_streamconstantProtocols.HTTP2.FRAME_settingsconstantProtocols.HTTP2.FRAME_push_promiseconstantProtocols.HTTP2.FRAME_pingconstantProtocols.HTTP2.FRAME_goawayconstantProtocols.HTTP2.FRAME_window_updateconstantProtocols.HTTP2.FRAME_continuation
- Constant
FRAME_data
Enum Protocols.HTTP2.Setting
- Constant
SETTING_header_table_size
Constant SETTING_enable_push
Constant SETTING_max_concurrent_streams
Constant SETTING_initial_window_size
Constant SETTING_max_frame_size
Constant SETTING_max_header_list_size constantProtocols.HTTP2.SETTING_header_table_sizeconstantProtocols.HTTP2.SETTING_enable_pushconstantProtocols.HTTP2.SETTING_max_concurrent_streamsconstantProtocols.HTTP2.SETTING_initial_window_sizeconstantProtocols.HTTP2.SETTING_max_frame_sizeconstantProtocols.HTTP2.SETTING_max_header_list_size
- Constant
SETTING_header_table_size
Class Protocols.HTTP2.Frame
- Description
HTTP/2 frame.
- Variable
frame_type
Variable flags FrameTypeProtocols.HTTP2.Frame.frame_typeFlagProtocols.HTTP2.Frame.flags
- Variable
payload
int|Stdio.Buffer|array(array(string(8bit))) Protocols.HTTP2.Frame.payload- Description
Data length for received packets, and payload for packets to send.
NB: To avoid frame reordering issues with HPack, this is the set of headers for
FRAME_headerandFRAME_push_promise.
- Variable
promised_stream_id
int|voidProtocols.HTTP2.Frame.promised_stream_id- Description
Only used with
FRAME_push_promise, and overridesstream_id.
- Method
__create__
protectedlocalvoid__create__(FrameTypeframe_type,Flagflags,int|Stdio.Buffer|array(array(string(8bit)))payload,int|voidstream_id,int|voidpromised_stream_id)
Module Protocols.IMAP
- Description
IMAP (Internet Message Access Protocol) server support
Class Protocols.IMAP.imap_server
- Description
imap_server.pike
Class Protocols.IMAP.parse_line
- Description
parse_line.pike
- Method
get_atom_options
mapping|zeroget_atom_options(intmax_depth)- Description
Reads an atom, optionally followd by a list enclosed in square brackets. Naturally, the atom itself cannot contain any brackets.
Returns a mapping type : "atom", atom : name, raw : name[options] options : parsed options, range : ({ start, size })
- Method
get_flag_list
array(string)|zeroget_flag_list()- Description
Get a list of atoms. Primarily intended for use by STORE for the flags argument.
- Method
get_simple_list
mapping|zeroget_simple_list(intmax_depth)- Description
Parses an object that (recursivly) can contain atoms (possible with options in brackets) or lists. Note that strings are not accepted, as it is a little difficult to wait for the continuation of the request.
FIXME: This function is used to read fetch commands. This breaks rfc-2060 compliance, as the names of headers can be represented as string literals.
- Method
get_token
mappingget_token(inteol,intaccept_options)- Description
Parses an object that can be a string, an atom (possibly with options in brackets) or a list.
eol can be 0, meaning no end of line or list expected, a positive int, meaning a character (e.g. ')' or ']' that terminates the list, or -1, meaning that the list terminates at end of line.
Class Protocols.IMAP.parser
- Description
Continuation based imap parser.
Class Protocols.IMAP.server
- Description
IMAP.server
Handles the server side of the protocol.
Module Protocols.IMAP.requests
- Description
IMAP.requests
Module Protocols.IMAP.types
- Description
IMAP.types
Module Protocols.IPv6
- Method
format_addr_short
stringformat_addr_short(array(int(16bit))bin_addr)- Description
Formats an IPv6 address to the colon-separated hexadecimal form as defined in RFC 2373 section 2.2.
bin_addrmust be an 8-element array containing the 16-bit fields.The returned address is on a canonical shortest form as follows: The longest sequence of zeroes is shortened using "::". If there are several of equal length then the leftmost is shortened. All hexadecimal letters are lower-case. There are no superfluous leading zeroes in the fields.
- See also
parse_addr
- Method
normalize_addr_basic
string|zeronormalize_addr_basic(stringaddr)- Description
Normalizes a formatted IPv6 address to a string with eight hexadecimal numbers separated by ":".
addris given on the same form, or any of the shorthand varieties as specified in RFC 2373 section 2.2.All hexadecimal letters in the returned address are lower-case, and there are no superfluous leading zeroes in the fields.
Zero is returned if
addris incorrectly formatted.- See also
normalize_addr_short
- Method
normalize_addr_short
string|zeronormalize_addr_short(stringaddr)- Description
Normalizes a formatted IPv6 address to a canonical shortest form.
addris parsed according to the hexadecimal"x:x:x:x:x:x:x:x"syntax or any of its shorthand varieties (see RFC 2373 section 2.2).The returned address is normalized as follows: The longest sequence of zeroes is shortened using "::". If there are several of equal length then the leftmost is shortened. All hexadecimal letters are lower-case. There are no superfluous leading zeroes in the fields.
Zero is returned if
addris incorrectly formatted.- See also
normalize_addr_basic
- Method
parse_addr
array(int(16bit))|zeroparse_addr(stringaddr)- Description
Parses an IPv6 address on the formatted hexadecimal
"x:x:x:x:x:x:x:x"form, or any of the shorthand varieties (see RFC 2373 section 2.2).The address is returned as an 8-element array where each element is the value of the corresponding field. Zero is returned if
addris incorrectly formatted.- See also
format_addr_short
- Method
format_addr_short
Module Protocols.IRC
- Description
IRC client and connection handling.
Start with
ClientandChannel.- Example
Protocols.IRC.client irc; class channel_notif { inherit Protocols.IRC.Channel; void not_message(object person,string msg) { if (msg == "!hello") irc->send_message(name, "Hello, "+person->nick+"!"); } } int main() { irc = Protocols.IRC.Client("irc.freenode.net", ([ "nick": "DemoBot12345", "realname": "Demo IRC bot", "channel_program": channel_notif, ])); irc->join_channel("#bot-test"); return -1; }
Class Protocols.IRC.Channel
- Description
Abstract class for an IRC channel.
Class Protocols.IRC.Client
- Method
create
Protocols.IRC.ClientProtocols.IRC.Client(string|objectserver,void|mapping(string:mixed)options)- Parameter
server The IRC server to connect to. If server is an object, it is assumed to be a newly established connection to the IRC server to be used. Pass
SSL.Fileconnections here to connect to SSL secured IRC networks.- Parameter
options An optional mapping with additional IRC client options.
"port":intDefaults to 6667.
"user":stringDefaults to
"unknown"on systems withoutgetpwuidandgetuidand togetpwuid(getuid())[0]on systems with."nick":stringDefaults to
"Unknown"on systems withoutgetpwuidandgetuidand toString.capitalize(getpwuid(getuid())[0])on systems with."pass":stringServer password, if any. Public servers seldom require this.
"realname":stringDefaults to
"Mr. Anonymous"on systems withoutgetpwuidandgetuidand togetpwuid(getuid())[4]on systems with."host":stringDefaults to
"localhost"on systems withoutunameand touname()->nodenameon systems with."ping_interval":intDefaults to 120.
"ping_timeout":intDefaults to 120.
"connection_lost":function(void:void)This function is called when the connection to the IRC server is lost or when a ping isn't answered with a pong within the time set by the ping_timeout option. The default behaviour is to complain on stderr and self destruct.
"channel_program":programAn instance of this is created for each channel connected to via join_channel() - should be a subclass of Protocols.IRC.Channel.
"error_notify":function(mixed... :void)This function is called when a KILL or ERROR command is recieved from the IRC server.
"system_notify":function(string,void|string:void)"motd_notify":function(string,void|string:void)"error_nickinuse":function(string:void)"generic_notify":function(string,string,string,string,string:void)The arguments are from, type, to, message and extra.
"quit_notify":function(string,string:void)The arguments are who and why.
"privmsg_notify":function(Person,string,string:void)The arguments are originator, message and to.
"notice_notify":function(Person,string,string:void)The arguments are originator, message and to.
"nick_notify":function(Person,string:void)The arguments are originator and to.
- Method
create
Module Protocols.Ident
- Description
An implementation of the IDENT protocol, specified in RFC 0931.
Module Protocols.LDAP
- Constant
GUID_USERS_CONTAINER
Constant GUID_COMPUTERS_CONTAINER
Constant GUID_SYSTEMS_CONTAINER
Constant GUID_DOMAIN_CONTROLLERS_CONTAINER
Constant GUID_INFRASTRUCTURE_CONTAINER
Constant GUID_DELETED_OBJECTS_CONTAINER
Constant GUID_LOSTANDFOUND_CONTAINER
Constant GUID_FOREIGNSECURITYPRINCIPALS_CONTAINER
Constant GUID_PROGRAM_DATA_CONTAINER
Constant GUID_MICROSOFT_PROGRAM_DATA_CONTAINER
Constant GUID_NTDS_QUOTAS_CONTAINER constantstringProtocols.LDAP.GUID_USERS_CONTAINERconstantstringProtocols.LDAP.GUID_COMPUTERS_CONTAINERconstantstringProtocols.LDAP.GUID_SYSTEMS_CONTAINERconstantstringProtocols.LDAP.GUID_DOMAIN_CONTROLLERS_CONTAINERconstantstringProtocols.LDAP.GUID_INFRASTRUCTURE_CONTAINERconstantstringProtocols.LDAP.GUID_DELETED_OBJECTS_CONTAINERconstantstringProtocols.LDAP.GUID_LOSTANDFOUND_CONTAINERconstantstringProtocols.LDAP.GUID_FOREIGNSECURITYPRINCIPALS_CONTAINERconstantstringProtocols.LDAP.GUID_PROGRAM_DATA_CONTAINERconstantstringProtocols.LDAP.GUID_MICROSOFT_PROGRAM_DATA_CONTAINERconstantstringProtocols.LDAP.GUID_NTDS_QUOTAS_CONTAINER- Description
Constants for Microsoft AD Well-Known Object GUIDs. These are e.g. used in LDAP URLs:
"ldap://server/<WKGUID="+Protocols.LDAP.GUID_USERS_CONTAINER +",dc=my,dc=domain,dc=com>"
- Constant
LDAP_SUCCESS
Constant LDAP_OPERATIONS_ERROR
Constant LDAP_PROTOCOL_ERROR
Constant LDAP_TIMELIMIT_EXCEEDED
Constant LDAP_SIZELIMIT_EXCEEDED
Constant LDAP_COMPARE_FALSE
Constant LDAP_COMPARE_TRUE
Constant LDAP_AUTH_METHOD_NOT_SUPPORTED
Constant LDAP_STRONG_AUTH_NOT_SUPPORTED
Constant LDAP_STRONG_AUTH_REQUIRED
Constant LDAP_PARTIAL_RESULTS
Constant LDAP_REFERRAL
Constant LDAP_ADMINLIMIT_EXCEEDED
Constant LDAP_UNAVAILABLE_CRITICAL_EXTENSION
Constant LDAP_CONFIDENTIALITY_REQUIRED
Constant LDAP_SASL_BIND_IN_PROGRESS
Constant LDAP_NO_SUCH_ATTRIBUTE
Constant LDAP_UNDEFINED_TYPE
Constant LDAP_INAPPROPRIATE_MATCHING
Constant LDAP_CONSTRAINT_VIOLATION
Constant LDAP_TYPE_OR_VALUE_EXISTS
Constant LDAP_INVALID_SYNTAX
Constant LDAP_NO_SUCH_OBJECT
Constant LDAP_ALIAS_PROBLEM
Constant LDAP_INVALID_DN_SYNTAX
Constant LDAP_IS_LEAF
Constant LDAP_ALIAS_DEREF_PROBLEM
Constant LDAP_INAPPROPRIATE_AUTH
Constant LDAP_INVALID_CREDENTIALS
Constant LDAP_INSUFFICIENT_ACCESS
Constant LDAP_BUSY
Constant LDAP_UNAVAILABLE
Constant LDAP_UNWILLING_TO_PERFORM
Constant LDAP_LOOP_DETECT
Constant LDAP_SORT_CONTROL_MISSING
Constant LDAP_NAMING_VIOLATION
Constant LDAP_OBJECT_CLASS_VIOLATION
Constant LDAP_NOT_ALLOWED_ON_NONLEAF
Constant LDAP_NOT_ALLOWED_ON_RDN
Constant LDAP_ALREADY_EXISTS
Constant LDAP_NO_OBJECT_CLASS_MODS
Constant LDAP_RESULTS_TOO_LARGE
Constant LDAP_AFFECTS_MULTIPLE_DSAS
Constant LDAP_OTHER constantintProtocols.LDAP.LDAP_SUCCESSconstantintProtocols.LDAP.LDAP_OPERATIONS_ERRORconstantintProtocols.LDAP.LDAP_PROTOCOL_ERRORconstantintProtocols.LDAP.LDAP_TIMELIMIT_EXCEEDEDconstantintProtocols.LDAP.LDAP_SIZELIMIT_EXCEEDEDconstantintProtocols.LDAP.LDAP_COMPARE_FALSEconstantintProtocols.LDAP.LDAP_COMPARE_TRUEconstantintProtocols.LDAP.LDAP_AUTH_METHOD_NOT_SUPPORTEDconstantProtocols.LDAP.LDAP_STRONG_AUTH_NOT_SUPPORTEDconstantintProtocols.LDAP.LDAP_STRONG_AUTH_REQUIREDconstantintProtocols.LDAP.LDAP_PARTIAL_RESULTSconstantintProtocols.LDAP.LDAP_REFERRALconstantintProtocols.LDAP.LDAP_ADMINLIMIT_EXCEEDEDconstantintProtocols.LDAP.LDAP_UNAVAILABLE_CRITICAL_EXTENSIONconstantintProtocols.LDAP.LDAP_CONFIDENTIALITY_REQUIREDconstantintProtocols.LDAP.LDAP_SASL_BIND_IN_PROGRESSconstantintProtocols.LDAP.LDAP_NO_SUCH_ATTRIBUTEconstantintProtocols.LDAP.LDAP_UNDEFINED_TYPEconstantintProtocols.LDAP.LDAP_INAPPROPRIATE_MATCHINGconstantintProtocols.LDAP.LDAP_CONSTRAINT_VIOLATIONconstantintProtocols.LDAP.LDAP_TYPE_OR_VALUE_EXISTSconstantintProtocols.LDAP.LDAP_INVALID_SYNTAXconstantintProtocols.LDAP.LDAP_NO_SUCH_OBJECTconstantintProtocols.LDAP.LDAP_ALIAS_PROBLEMconstantintProtocols.LDAP.LDAP_INVALID_DN_SYNTAXconstantintProtocols.LDAP.LDAP_IS_LEAFconstantintProtocols.LDAP.LDAP_ALIAS_DEREF_PROBLEMconstantintProtocols.LDAP.LDAP_INAPPROPRIATE_AUTHconstantintProtocols.LDAP.LDAP_INVALID_CREDENTIALSconstantintProtocols.LDAP.LDAP_INSUFFICIENT_ACCESSconstantintProtocols.LDAP.LDAP_BUSYconstantintProtocols.LDAP.LDAP_UNAVAILABLEconstantintProtocols.LDAP.LDAP_UNWILLING_TO_PERFORMconstantintProtocols.LDAP.LDAP_LOOP_DETECTconstantintProtocols.LDAP.LDAP_SORT_CONTROL_MISSINGconstantintProtocols.LDAP.LDAP_NAMING_VIOLATIONconstantintProtocols.LDAP.LDAP_OBJECT_CLASS_VIOLATIONconstantintProtocols.LDAP.LDAP_NOT_ALLOWED_ON_NONLEAFconstantintProtocols.LDAP.LDAP_NOT_ALLOWED_ON_RDNconstantintProtocols.LDAP.LDAP_ALREADY_EXISTSconstantintProtocols.LDAP.LDAP_NO_OBJECT_CLASS_MODSconstantintProtocols.LDAP.LDAP_RESULTS_TOO_LARGEconstantintProtocols.LDAP.LDAP_AFFECTS_MULTIPLE_DSASconstantintProtocols.LDAP.LDAP_OTHER- Description
LDAP result codes.
- See also
Protocols.LDAP.client.error_number,Protocols.LDAP.client.result.error_number
- Constant
LDAP_CONTROL_MANAGE_DSA_IT
constantstringProtocols.LDAP.LDAP_CONTROL_MANAGE_DSA_IT- Description
LDAP control: Manage DSA IT LDAPv3 control (RFC 3296): Control to indicate that the operation is intended to manage objects within the DSA (server) Information Tree.
- Constant
LDAP_CONTROL_VLVREQUEST
constantstringProtocols.LDAP.LDAP_CONTROL_VLVREQUEST- Description
LDAP control: LDAP Extensions for Scrolling View Browsing of Search Results (internet draft): Control used to request virtual list view support from the server.
- Constant
LDAP_CONTROL_VLVRESPONSE
constantstringProtocols.LDAP.LDAP_CONTROL_VLVRESPONSE- Description
LDAP control: LDAP Extensions for Scrolling View Browsing of Search Results (internet draft): Control used to pass virtual list view (VLV) data from the server to the client.
- Constant
LDAP_PAGED_RESULT_OID_STRING
constantstringProtocols.LDAP.LDAP_PAGED_RESULT_OID_STRING- Description
LDAP control: Microsoft AD: Control to instruct the server to return the results of a search request in smaller, more manageable packets rather than in one large block.
- Constant
LDAP_SERVER_ASQ_OID
constantstringProtocols.LDAP.LDAP_SERVER_ASQ_OID- Description
LDAP control: Microsoft AD: Control to force the query to be based on a specific DN-valued attribute.
- Constant
LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID
constantstringProtocols.LDAP.LDAP_SERVER_CROSSDOM_MOVE_TARGET_OID- Description
LDAP control: Microsoft AD: Control used with an extended LDAP rename function to move an LDAP object from one domain to another.
- Constant
LDAP_SERVER_DIRSYNC_OID
constantstringProtocols.LDAP.LDAP_SERVER_DIRSYNC_OID- Description
LDAP control: Microsoft AD: Control that enables an application to search the directory for objects changed from a previous state.
- Constant
LDAP_SERVER_DOMAIN_SCOPE_OID
constantstringProtocols.LDAP.LDAP_SERVER_DOMAIN_SCOPE_OID- Description
LDAP control: Microsoft AD: Control used to instruct the LDAP server not to generate any referrals when completing a request.
- Constant
LDAP_SERVER_EXTENDED_DN_OID
constantstringProtocols.LDAP.LDAP_SERVER_EXTENDED_DN_OID- Description
LDAP control: Microsoft AD: Control to request an extended form of an Active Directory object distinguished name.
- Constant
LDAP_SERVER_LAZY_COMMIT_OID
constantstringProtocols.LDAP.LDAP_SERVER_LAZY_COMMIT_OID- Description
LDAP control: Microsoft AD: Control used to instruct the server to return the results of a DS modification command, such as add, delete, or replace, after it has been completed in memory, but before it has been committed to disk.
- Constant
LDAP_SERVER_NOTIFICATION_OID
constantstringProtocols.LDAP.LDAP_SERVER_NOTIFICATION_OID- Description
LDAP control: Microsoft AD: Control used with an extended LDAP asynchronous search function to register the client to be notified when changes are made to an object in Active Directory.
- Constant
LDAP_SERVER_PERMISSIVE_MODIFY_OID
constantstringProtocols.LDAP.LDAP_SERVER_PERMISSIVE_MODIFY_OID- Description
LDAP control: Microsoft AD: An LDAP modify request will normally fail if it attempts to add an attribute that already exists, or if it attempts to delete an attribute that does not exist. With this control, as long as the attribute to be added has the same value as the existing attribute, then the modify will succeed. With this control, deletion of an attribute that does not exist will also succeed.
- Constant
LDAP_SERVER_QUOTA_CONTROL_OID
constantstringProtocols.LDAP.LDAP_SERVER_QUOTA_CONTROL_OID- Description
LDAP control: Microsoft AD: Control used to pass the SID of a security principal, whose quota is being queried, to the server in a LDAP search operation.
- Constant
LDAP_SERVER_RESP_SORT_OID
constantstringProtocols.LDAP.LDAP_SERVER_RESP_SORT_OID- Description
LDAP control: Microsoft AD: Control used by the server to indicate the results of a search function initiated using the
LDAP_SERVER_SORT_OIDcontrol.
- Constant
LDAP_SERVER_SD_FLAGS_OID
constantstringProtocols.LDAP.LDAP_SERVER_SD_FLAGS_OID- Description
LDAP control: Microsoft AD: Control used to pass flags to the server to control various security descriptor results.
- Constant
LDAP_SERVER_SEARCH_OPTIONS_OID
constantstringProtocols.LDAP.LDAP_SERVER_SEARCH_OPTIONS_OID- Description
LDAP control: Microsoft AD: Control used to pass flags to the server to control various search behaviors.
- Constant
LDAP_SERVER_SHOW_DELETED_OID
constantstringProtocols.LDAP.LDAP_SERVER_SHOW_DELETED_OID- Description
LDAP control: Microsoft AD: Control used to specify that the search results include any deleted objects that match the search filter.
- Constant
LDAP_SERVER_SORT_OID
constantstringProtocols.LDAP.LDAP_SERVER_SORT_OID- Description
LDAP control: Microsoft AD: Control used to instruct the server to sort the search results before returning them to the client application.
- Constant
LDAP_SERVER_TREE_DELETE_OID
constantstringProtocols.LDAP.LDAP_SERVER_TREE_DELETE_OID- Description
LDAP control: Microsoft AD: Control used to delete an entire subtree in the directory.
- Constant
LDAP_SERVER_VERIFY_NAME_OID
constantstringProtocols.LDAP.LDAP_SERVER_VERIFY_NAME_OID- Description
LDAP control: Microsoft AD: Control used to instruct the DC accepting the update which DC it should verify with, the existence of any DN attribute values.
- Constant
MODIFY_ADD
Constant MODIFY_DELETE
Constant MODIFY_REPLACE constantintProtocols.LDAP.MODIFY_ADDconstantintProtocols.LDAP.MODIFY_DELETEconstantintProtocols.LDAP.MODIFY_REPLACE- Description
Constants used in the
attropvalargument toProtocols.LDAP.client.modify.
- Constant
SCOPE_BASE
Constant SCOPE_ONE
Constant SCOPE_SUB constantintProtocols.LDAP.SCOPE_BASEconstantintProtocols.LDAP.SCOPE_ONEconstantintProtocols.LDAP.SCOPE_SUB- Description
Constants for the search scope used with e.g.
Protocols.LDAP.client.set_scope.- SCOPE_BASE
Return the object specified by the DN.
- SCOPE_ONE
Return the immediate subobjects of the object specified by the DN.
- SCOPE_SUB
Return the object specified by the DN and all objects below it (on any level).
- Constant
SEARCH_LOWER_ATTRS
Constant SEARCH_MULTIVAL_ARRAYS_ONLY
Constant SEARCH_RETURN_DECODE_ERRORS constantintProtocols.LDAP.SEARCH_LOWER_ATTRSconstantintProtocols.LDAP.SEARCH_MULTIVAL_ARRAYS_ONLYconstantintProtocols.LDAP.SEARCH_RETURN_DECODE_ERRORS- Description
Bitfield flags given to
Protocols.LDAP.client.search:- SEARCH_LOWER_ATTRS
Lowercase all attribute values. This makes it easier to match specific attributes in the mappings returned by
Protocols.LDAP.client.result.fetchsince LDAP attribute names are case insensitive.- SEARCH_MULTIVAL_ARRAYS_ONLY
Only use arrays for attribute values where the attribute syntax specify multiple values. I.e. the values for single valued attributes are returned as strings instead of arrays containing one string element.
If no value is returned for a single valued attribute, e.g. when
attrsonlyis set in the search call, then a zero will be used as value.The special
"dn"value is also returned as a string when this flag is set.Note that it's the attribute type descriptions that are used to decide this, not the number of values a particular attribute happens to have in the search result.
- SEARCH_RETURN_DECODE_ERRORS
Don't throw attribute value decode errors, instead return them in the result from
Protocols.LDAP.client.result.fetchin place of the value. I.e. anywhere an attribute value string occurs, you might instead have aCharset.DecodeErrorobject.
- Constant
SYNTAX_AD_CASE_IGNORE_STR
Constant SYNTAX_AD_LARGE_INT
Constant SYNTAX_AD_OBJECT_SECURITY_DESCRIPTOR constantstringProtocols.LDAP.SYNTAX_AD_CASE_IGNORE_STRconstantstringProtocols.LDAP.SYNTAX_AD_LARGE_INTconstantstringProtocols.LDAP.SYNTAX_AD_OBJECT_SECURITY_DESCRIPTOR- Description
LDAP syntax: Microsoft AD: Additional syntaxes used in AD. C.f. <http://community.roxen.com/(all)/developers/idocs/drafts/ draft-armijo-ldap-syntax-00.html>.
- Constant
SYNTAX_ATTR_TYPE_DESCR
Constant SYNTAX_BINARY
Constant SYNTAX_BIT_STRING
Constant SYNTAX_BOOLEAN
Constant SYNTAX_CERT
Constant SYNTAX_CERT_LIST
Constant SYNTAX_CERT_PAIR
Constant SYNTAX_COUNTRY_STR
Constant SYNTAX_DN
Constant SYNTAX_DIRECTORY_STR
Constant SYNTAX_DIT_CONTENT_RULE_DESCR
Constant SYNTAX_FACSIMILE_PHONE_NUM
Constant SYNTAX_FAX
Constant SYNTAX_GENERALIZED_TIME
Constant SYNTAX_IA5_STR
Constant SYNTAX_INT
Constant SYNTAX_JPEG
Constant SYNTAX_MATCHING_RULE_DESCR
Constant SYNTAX_MATCHING_RULE_USE_DESCR
Constant SYNTAX_MHS_OR_ADDR
Constant SYNTAX_NAME_AND_OPTIONAL_UID
Constant SYNTAX_NAME_FORM_DESCR
Constant SYNTAX_NUMERIC_STRING
Constant SYNTAX_OBJECT_CLASS_DESCR
Constant SYNTAX_OID
Constant SYNTAX_OTHER_MAILBOX
Constant SYNTAX_POSTAL_ADDR
Constant SYNTAX_PRESENTATION_ADDR
Constant SYNTAX_PRINTABLE_STR
Constant SYNTAX_PHONE_NUM
Constant SYNTAX_UTC_TIME
Constant SYNTAX_LDAP_SYNTAX_DESCR
Constant SYNTAX_DIT_STRUCTURE_RULE_DESCR constantstringProtocols.LDAP.SYNTAX_ATTR_TYPE_DESCRconstantstringProtocols.LDAP.SYNTAX_BINARYconstantstringProtocols.LDAP.SYNTAX_BIT_STRINGconstantstringProtocols.LDAP.SYNTAX_BOOLEANconstantstringProtocols.LDAP.SYNTAX_CERTconstantstringProtocols.LDAP.SYNTAX_CERT_LISTconstantstringProtocols.LDAP.SYNTAX_CERT_PAIRconstantstringProtocols.LDAP.SYNTAX_COUNTRY_STRconstantstringProtocols.LDAP.SYNTAX_DNconstantstringProtocols.LDAP.SYNTAX_DIRECTORY_STRconstantstringProtocols.LDAP.SYNTAX_DIT_CONTENT_RULE_DESCRconstantstringProtocols.LDAP.SYNTAX_FACSIMILE_PHONE_NUMconstantstringProtocols.LDAP.SYNTAX_FAXconstantstringProtocols.LDAP.SYNTAX_GENERALIZED_TIMEconstantstringProtocols.LDAP.SYNTAX_IA5_STRconstantstringProtocols.LDAP.SYNTAX_INTconstantstringProtocols.LDAP.SYNTAX_JPEGconstantstringProtocols.LDAP.SYNTAX_MATCHING_RULE_DESCRconstantstringProtocols.LDAP.SYNTAX_MATCHING_RULE_USE_DESCRconstantstringProtocols.LDAP.SYNTAX_MHS_OR_ADDRconstantstringProtocols.LDAP.SYNTAX_NAME_AND_OPTIONAL_UIDconstantstringProtocols.LDAP.SYNTAX_NAME_FORM_DESCRconstantstringProtocols.LDAP.SYNTAX_NUMERIC_STRINGconstantstringProtocols.LDAP.SYNTAX_OBJECT_CLASS_DESCRconstantstringProtocols.LDAP.SYNTAX_OIDconstantstringProtocols.LDAP.SYNTAX_OTHER_MAILBOXconstantstringProtocols.LDAP.SYNTAX_POSTAL_ADDRconstantstringProtocols.LDAP.SYNTAX_PRESENTATION_ADDRconstantstringProtocols.LDAP.SYNTAX_PRINTABLE_STRconstantstringProtocols.LDAP.SYNTAX_PHONE_NUMconstantstringProtocols.LDAP.SYNTAX_UTC_TIMEconstantstringProtocols.LDAP.SYNTAX_LDAP_SYNTAX_DESCRconstantstringProtocols.LDAP.SYNTAX_DIT_STRUCTURE_RULE_DESCR- Description
LDAP syntax: Standard syntaxes from RFC 2252.
- Constant
SYNTAX_CASE_EXACT_STR
constantProtocols.LDAP.SYNTAX_CASE_EXACT_STR- Description
"caseExactString"is an alias used in e.g. RFC 2079.
- Constant
SYNTAX_DELIVERY_METHOD
Constant SYNTAX_ENHANCED_GUIDE
Constant SYNTAX_GUIDE
Constant SYNTAX_OCTET_STR
Constant SYNTAX_TELETEX_TERMINAL_ID
Constant SYNTAX_TELETEX_NUM
Constant SYNTAX_SUPPORTED_ALGORITHM constantstringProtocols.LDAP.SYNTAX_DELIVERY_METHODconstantstringProtocols.LDAP.SYNTAX_ENHANCED_GUIDEconstantstringProtocols.LDAP.SYNTAX_GUIDEconstantstringProtocols.LDAP.SYNTAX_OCTET_STRconstantstringProtocols.LDAP.SYNTAX_TELETEX_TERMINAL_IDconstantstringProtocols.LDAP.SYNTAX_TELETEX_NUMconstantstringProtocols.LDAP.SYNTAX_SUPPORTED_ALGORITHM- Description
LDAP syntax: Standard syntaxes from RFC 2256.
- Constant
ldap_error_strings
constantProtocols.LDAP.ldap_error_strings- Description
Mapping from
LDAP_*result codes to descriptive strings.
- Constant
syntax_decode_fns
constantmapping(string:function(string:string)) Protocols.LDAP.syntax_decode_fns- Description
Mapping containing functions to decode charsets in syntaxes where that's necessary. If the syntax is complex in a way that makes the result ambiguous if decoded with a single charset transformation then it should typically not be decoded here.
These decoders are used on all attribute values returned by
Protocols.LDAP.client.resultfunctions.
- Constant
syntax_encode_fns
constantmapping(string:function(string:string)) Protocols.LDAP.syntax_encode_fns- Description
Mapping containing the reverse functions from
syntax_decode_fns.
- Method
canonicalize_dn
stringcanonicalize_dn(stringdn,void|intstrict)- Description
Returns the given distinguished name on a canonical form, so it reliably can be used in comparisons for equality. This means removing surplus whitespace, lowercasing attributes, normalizing quoting in string attribute values, lowercasing the hex digits in binary attribute values, and sorting the RDN parts separated by "+".
The returned string follows RFC 2253. The input string may use legacy LDAPv2 syntax and is treated according to RFC 2253 section 4.
If
strictis set then errors will be thrown if the given DN is syntactically invalid. Otherwise the invalid parts remain untouched in the result.- Note
The result is not entirely canonical since no conversion is done from or to hexadecimal BER encodings of the attribute values. It's assumed that the input already has the suitable value encoding depending on the attribute type.
- Note
No UTF-8 encoding or decoding is done. The function can be used on both encoded and decoded input strings, and the result will be likewise encoded or decoded.
- Method
encode_dn_value
stringencode_dn_value(stringstr)- Description
Encode the given string for use as an attribute value in a distinguished name (on string form).
The encoding is according to RFC 2253 section 2.4 with the exception that characters above
0x7Faren't UTF-8 encoded. UTF-8 encoding can always be done afterwards on the complete DN, which also is done internally by theProtocols.LDAPfunctions when LDAPv3 is used.
- Method
get_cached_filter
objectget_cached_filter(stringfilter,void|intldap_version)- Description
Like
make_filterbut saves the generated objects for reuse. Useful for filters that reasonably will occur often. The cache is never garbage collected, however.- Throws
If there's a parse error in the filter then a
FilterErroris thrown as frommake_filter.
- Method
get_connection
objectget_connection(stringldap_url,void|stringbinddn,void|stringpassword,void|intversion,void|SSL.Contextctx)- Description
Returns a client connection to the specified LDAP URL. If a bind DN is specified (either through a
"bindname"extension inldap_urlor, if there isn't one, throughbinddn) then the connection will be bound using that DN and the optional password. If no bind DN is given then any connection is returned, regardless of the bind DN it is using.versionmay be used to specify the required protocol version in the bind operation. If zero or left out, a bind attempt with the default version (currently3) is done with a fallback to2if that fails. Also, a cached connection for any version might be returned ifversionisn't specified.ctxmay be specified to control SSL/TLS parameters to use with the"ldaps"-protocol. Note that changing this only affects new connections.As opposed to creating an
Protocols.LDAP.clientinstance directly, this function can return an already established connection for the same URL, provided connections are given back usingreturn_connectionwhen they aren't used anymore.A client object with an error condition is returned if there's a bind error, e.g. invalid password.
- Method
get_constant_name
stringget_constant_name(mixedval)- Description
If
valmatches any non-integer constant in this module, its name is returned.
- Method
ldap_decode_string
stringldap_decode_string(stringstr)- Description
Decodes all
\xxescapes instr.- See also
ldap_encode_string
- Method
ldap_encode_string
stringldap_encode_string(stringstr)- Description
Quote characters in the given string as necessary for use as a string literal in filters and various composite LDAP attributes.
The quoting is compliant with RFC 2252 section 4.3 and RFC 2254 section 4. All characters that can be special in those RFCs are quoted using the
\xxsyntax, but the set might be extended.- See also
ldap_decode_string,Protocols.LDAP.client.search
- Method
make_filter
objectmake_filter(stringfilter,void|intldap_version)- Description
Parses an LDAP filter string into an ASN1 object tree that can be given to
Protocols.LDAP.search.Using this function instead of giving the filter string directly to the search function has two advantages: This function provides better error reports for syntax errors, and the same object tree can be used repeatedly to avoid reparsing the filter string.
- Parameter
filter The filter to parse, according to the syntax specified in RFC 2254. The syntax is extended a bit to allow and ignore whitespace everywhere except inside and next to the filter values.
- Parameter
ldap_version LDAP protocol version to make the filter for. This controls what syntaxes are allowed depending on the protocol version. Also, if the protocol is
3or later then full Unicode string literals are supported. The default is the latest supported version.- Returns
An ASN1 object tree representing the filter.
- Throws
FilterErroris thrown if there's a syntax error in the filter.
- Method
num_connections
intnum_connections(stringldap_url)- Description
Returns the number of currently stored connections for the given LDAP URL.
- Method
parse_ldap_url
mapping(string:mixed) parse_ldap_url(stringldap_url)- Description
Parses an LDAP URL and returns its fields in a mapping.
- Returns
The returned mapping contains these fields:
scheme:stringThe URL scheme, either
"ldap"or"ldaps".host:stringSelf-explanatory.
port:intbasedn:stringattributes:array(string)Array containing the attributes. Undefined if none was specified.
scope:intThe scope as one of the
SEARCH_*constants. Undefined if none was specified.filter:stringThe search filter. Undefined if none was specified.
ext:mapping(string:string|int(1))The extensions. Undefined if none was specified. The mapping values are
1for extensions without values. Critical extensions are checked and the leading"!"do not remain in the mapping indices.url:stringThe original unparsed URL.
- See also
get_parsed_url
- Method
return_connection
voidreturn_connection(objectconn)- Description
Use this to return a connection to the connection pool after you've finished using it. The connection is assumed to be working.
- Note
Ensure that persistent connection settings such as the scope and the base DN are restored to the defaults
Class Protocols.LDAP.FilterError
- Description
Error object thrown by
make_filterfor parse errors.
Class Protocols.LDAP.client
- Description
Contains the client implementation of the LDAP protocol. All of the version 2 protocol features are implemented but only the base parts of the version 3.
- Variable
info
mappingProtocols.LDAP.client.info- Description
Several information about code itself and about active connection too
- Method
add
intadd(stringdn,mapping(string:array(string))attrs)- Description
The Add Operation allows a client to request the addition of an entry into the directory
- Parameter
dn The Distinguished Name of the entry to be added.
- Parameter
attrs The mapping of attributes and their values that make up the content of the entry being added. Values that are sent UTF-8 encoded according the the attribute syntaxes are encoded automatically.
- Returns
Returns
1on success,0otherwise.- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- Method
bind
intbind()intbind(stringdn,stringpassword)intbind(stringdn,stringpassword,intversion)- Description
Authenticates connection to the direcory.
First form uses default value previously entered in create.
Second form uses value from parameters:
- Parameter
dn The distinguished name (DN) of an entry aginst which will be made authentication.
- Parameter
password Password used for authentication.
Third form allows specify the version of LDAP protocol used by connection to the LDAP server.
- Parameter
version The desired protocol version (current
2or3). Defaults to3if zero or left out.- Returns
Returns
1on success,0otherwise.- Note
Only simple authentication type is implemented. So be warned clear text passwords are sent to the directory server.
- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- Method
compare
intcompare(stringdn,stringattr,stringvalue)- Description
Compares an attribute value with one in the directory.
- Parameter
dn The distinguished name of the entry.
- Parameter
attr The type (aka name) of the attribute to compare.
- Parameter
value The value to compare with. It's UTF-8 encoded automatically if the attribute syntax specifies that.
- Returns
Returns
1if at least one of the values for the attribute in the directory is equal tovalue,0if it didn't match or there was some error (useerror_numberto find out).- Note
This function has changed arguments since version 7.6. From 7.3 to 7.6 it was effectively useless since it always returned true.
- Note
The equality matching rule for the attribute governs the comparison. There are attributes where the assertion syntax used here isn't the same as the attribute value syntax.
- Method
create
Protocols.LDAP.clientProtocols.LDAP.client()Protocols.LDAP.clientProtocols.LDAP.client(string|mapping(string:mixed)url)Protocols.LDAP.clientProtocols.LDAP.client(string|mapping(string:mixed)url,objectcontext)- Description
Create object. The first optional argument can be used later for subsequence operations. The second one can specify TLS context of connection. The default context only allows 128-bit encryption methods, so you may need to provide your own context if your LDAP server supports only export encryption.
- Parameter
url LDAP server URL on the form
"ldap://hostname/basedn?attrlist?scope?ext". See RFC 2255. It can also be a mapping as returned byProtocol.LDAP.parse_ldap_url.- Parameter
context TLS context of connection
- See also
LDAP.client.bind,LDAP.client.search
- Method
delete
intdelete(stringdn)- Description
Deletes entry from the LDAP server.
- Parameter
dn The distinguished name of deleted entry.
- Returns
Returns
1on success,0otherwise.- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- Method
get_attr_type_descr
mapping(string:mixed)|zeroget_attr_type_descr(stringattr,void|intstandard_attrs)- Description
Returns the attribute type description for the given attribute, which includes the name, object identifier, syntax, etc (see RFC 2252 section 4.2 for details).
This might do a query to the server, but results are cached.
- Parameter
attr The name of the attribute. Might also be the object identifier on string form.
- Parameter
standard_attrs Flag that controls how the known standard attributes stored in
Protocols.LDAPare to be used:0Check the known standard attributes first. If the attribute isn't found there, query the server. This is the default.
1Don't check the known standard attributes, i.e. always use the schema from the server.
2Only check the known standard attributes. The server is never contacted.
- Returns
Returns a mapping where the indices are the terms that the server has returned and the values are their values on string form (dequoted and converted from UTF-8 as appropriate). Terms without values get
1as value in the mapping.The mapping might contain the following members (all except
"oid"are optional):"oid":stringThe object identifier on string form. According to the RFC, this should always be a dotted decimal string. However some LDAP servers, e.g. iPlanet, allows registering attributes without an assigned OID. In such cases this can be some other string. In the case of iPlanet, it uses the attribute name with "-oid" appended (c.f. http://docs.sun.com/source/816-5606-10/scmacfg.htm).
"NAME":stringArray with one or more names used for the attribute.
"DESC":stringDescription.
"OBSOLETE":stringFlag.
"SUP":stringDerived from this other attribute. The value is the name or oid of it. Note that the attribute description from the referenced type always is merged with the current one to make the returned description complete.
"EQUALITY":stringThe value is the name or oid of a matching rule.
"ORDERING":stringThe value is the name or oid of a matching rule.
"SUBSTR":stringThe value is the name or oid of a matching rule.
"syntax_oid":stringThe value is the oid of the syntax (RFC 2252 section 4.3.2). (This is extracted from the
"SYNTAX"term.)"syntax_len":stringOptional suggested minimum upper bound of the number of characters in the attribute (or bytes if the attribute is binary). (This is extracted from the
"SYNTAX"term.)"SINGLE-VALUE":stringFlag. Default multi-valued.
"COLLECTIVE":stringFlag. Default not collective.
"NO-USER-MODIFICATION":stringFlag. Default user modifiable.
"USAGE":stringThe value is any of the following:
"userApplications"Self-explanatory.
"directoryOperation""distributedOperation"DSA-shared.
"dSAOperation"DSA-specific, value depends on server.
There might be more fields for server extensions.
Zero is returned if the server didn't provide any attribute type description for
attr.- Note
It's the schema applicable at the base DN that is queried.
- Note
LDAPv3 is assumed.
- Method
get_basedn
stringget_basedn()- Description
Returns the current base DN for searches using
searchand schema queries usingget_attr_type_descr.
- Method
get_bind_password_hash
string|zeroget_bind_password_hash()- Description
Returns an MD5 hash of the password used for the bind operation, or zero if the connection isn't bound. If no password was given to
bindthen an empty string was sent as password, and the MD5 hash of that is therefore returned.
- Method
get_bound_dn
stringget_bound_dn()- Description
Returns the bind DN currently in use for the connection. Zero is returned if the connection isn't bound. The empty string is returned if the connection is in use but no bind DN has been given explicitly to
bind.
- Method
get_cached_filter
objectget_cached_filter(stringfilter)- Description
This is a wrapper for
Protocols.LDAP.get_cached_filterwhich passes the LDAP protocol version currently in use by this connection.- Throws
If there's a parse error in the filter then a
Protocols.LDAP.FilterErroris thrown as fromProtocols.LDAP.make_filter.
- Method
get_default_filter
object|zeroget_default_filter()- Description
Returns the ASN1 object parsed from the filter specified in the LDAP URL, or zero if the URL doesn't specify any filter.
- Throws
If there's a parse error in the filter then a
Protocols.LDAP.FilterErroris thrown as fromProtocols.LDAP.make_filter.
- Method
get_parsed_url
mapping(string:mixed) get_parsed_url()- Description
Returns a mapping containing the data parsed from the LDAP URL passed to
create. The mapping has the same format as the return value fromProtocols.LDAP.parse_ldap_url. Don't be destructive on the returned value.
- Method
get_protocol_version
intget_protocol_version()- Description
Return the LDAP protocol version in use.
- Method
get_referrals
array|intget_referrals()- Description
Gets referrals.
- Returns
Returns array of referrals or
0.
- Method
get_root_dse_attr
array(string) get_root_dse_attr(stringattr)- Description
Returns the value of an attribute in the root DSE (DSA-Specific Entry) of the bound server. The result is cached. A working connection is assumed.
- Returns
The return value is an array of the attribute values, which have been UTF-8 decoded where appropriate.
Don't be destructive on the returned array.
- Note
This function intentionally does not try to simplify the return values for single-valued attributes (c.f.
Protocols.LDAP.SEARCH_MULTIVAL_ARRAYS_ONLY). That since (at least) Microsoft AD has a bunch of attributes in the root DSE that they don't bother to provide schema entries for. The return value format wouldn't be reliable if they suddenly change that.
- Method
get_scope
stringget_scope()- Description
Return the currently set scope as a string
"base","one", or"sub".
- Method
get_supported_controls
multiset(string) get_supported_controls()- Description
Returns a multiset containing the controls supported by the server. They are returned as object identifiers on string form. A working connection is assumed.
- See also
search
- Method
make_filter
objectmake_filter(stringfilter)- Description
Returns the ASN1 object parsed from the given filter. This is a wrapper for
Protocols.LDAP.make_filterwhich parses the filter with the LDAP protocol version currently in use by this connection.- Throws
If there's a parse error in the filter then a
Protocols.LDAP.FilterErroris thrown as fromProtocols.LDAP.make_filter.
- Method
modify
intmodify(stringdn,mapping(string:array(int(0..2)|string))attropval)- Description
The Modify Operation allows a client to request that a modification of an entry be performed on its behalf by a server.
- Parameter
dn The distinguished name of modified entry.
- Parameter
attropval The mapping of attributes with requested operation and attribute's values.
attropval=([ attribute:({operation, value1, value2, ...})])Where operation is one of the following:
- Protocols.LDAP.MODIFY_ADD
Add values listed to the given attribute, creating the attribute if necessary.
- Protocols.LDAP.MODIFY_DELETE
Delete values listed from the given attribute, removing the entire attribute if no values are listed, or if all current values of the attribute are listed for deletion.
- Protocols.LDAP.MODIFY_REPLACE
Replace all existing values of the given attribute with the new values listed, creating the attribute if it did not already exist. A replace with no value will delete the entire attribute if it exists, and is ignored if the attribute does not exist.
Values that are sent UTF-8 encoded according the the attribute syntaxes are encoded automatically.
- Returns
Returns
1on success,0otherwise.- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- Method
modifydn
intmodifydn(stringdn,stringnewrdn,intdeleteoldrdn,string|voidnewsuperior)- Description
The Modify DN Operation allows a client to change the leftmost (least significant) component of the name of an entry in the directory, or to move a subtree of entries to a new location in the directory.
- Parameter
dn DN of source object
- Parameter
newrdn RDN of destination
- Parameter
deleteoldrdn The parameter controls whether the old RDN attribute values are to be retained as attributes of the entry, or deleted from the entry.
- Parameter
newsuperior If present, this is the Distinguished Name of the entry which becomes the immediate superior of the existing entry.
- Returns
Returns
1on success,0otherwise.- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- Method
parse_url
mapping(string:mixed) parse_url(stringldapuri)- Description
Compatibility alias for
Protocols.LDAP.parse_ldap_url.
- Method
read
mapping(string:string|array(string))|zeroread(stringobject_name,void|stringfilter,void|array(string)attrs,void|intattrsonly,void|mapping(string:array(int|string))controls,void|intflags)- Description
Reads a specified object in the LDAP server.
object_nameis the distinguished name for the object. The rest of the arguments are the same as tosearch.The default filter and attributes that might have been set in the LDAP URL doesn't affect this call. If
filterisn't set then"(objectClass=*)"is used.- Returns
Returns a mapping of the requested attributes. It has the same form as the response from
result.fetch.- See also
search
- Method
read_attr
string|array(string)|zeroread_attr(stringobject_name,stringattr,void|stringfilter,void|mapping(string:array(int|string))controls)- Description
Reads a specified attribute of a specified object in the LDAP server.
object_nameis the distinguished name of the object andattris the attribute. The rest of the arguments are the same as tosearch.The default filter that might have been set in the LDAP URL doesn't affect this call. If
filterisn't set then"(objectClass=*)"is used.- Returns
For single-valued attributes, the value is returned as a string. For multivalued attributes, the value is returned as an array of strings. Returns zero if there was an error.
- See also
read,get_root_dse_attr
- Method
reset_options
voidreset_options()- Description
Resets all connection options, such as the scope and the base DN, to the defaults determined from the LDAP URL when the connection was created.
- Method
search
result|intsearch(string|object|voidfilter,array(string)|voidattrs,int|voidattrsonly,void|mapping(string:array(int|string))controls,void|intflags)- Description
Search LDAP directory.
- Parameter
filter Search filter to override the one from the LDAP URL. It's either a string with the format specified in RFC 2254, or an object returned by
Protocols.LDAP.make_filter.- Parameter
attrs The array of attribute names which will be returned by server for every entry.
- Parameter
attrsonly This flag causes server return only the attribute types (aka names) but not their values. The values will instead be empty arrays or - if
Protocols.LDAP.SEARCH_MULTIVAL_ARRAYS_ONLYis given - zeroes for single-valued attributes.- Parameter
controls Extra controls to send in the search query, to modify how the server executes the search in various ways. The value is a mapping with an entry for each control.
object_identifier:stringThe index is the object identifier in string form for the control type. There are constants in
Protocols.LDAPfor the object identifiers for some known controls.The mapping value is an array of two elements:
Array int0The first element is an integer flag that specifies whether the control is critical or not. If it is nonzero, the server returns an error if it doesn't understand the control. If it is zero, the server ignores it instead.
string|int(0)1The second element is the string value to pass with the control. It may also be zero to not pass any value at all.
- Parameter
flags Bitfield with flags to control various behavior at the client side of the search operation. See the
Protocol.LDAP.SEARCH_*constants for details.- Returns
Returns object
LDAP.client.resulton success,0otherwise.- Note
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
- See also
result,result.fetch,read,get_supported_controls,Protocols.LDAP.ldap_encode_string,Protocols.LDAP.make_filter
- Method
set_basedn
stringset_basedn(stringbase_dn)- Description
Sets the base DN for searches using
searchand schema queries usingget_attr_type_descr.- Note
For compatibility, the old base DN is returned. However, if LDAPv3 is used, the value is UTF-8 encoded. Use
get_basednseparately instead.
- Method
set_option
intset_option(intopttype,intvalue)- Parameter
option_type LDAP_OPT_xxx
- Parameter
value new value for option
- Method
set_scope
intset_scope(int|stringscope)- Description
Sets value of scope for search operation.
- Parameter
scope The value can be one of the
SCOPE_*constants or a string"base","one"or"sub".- Returns
Returns the
SCOPE_*constant for the old scope.
- Method
start_tls
intstart_tls(void|SSL.Contextcontext)- Description
Requests that a SSL/TLS session be negotiated on the connection. If the connection is already secure, this call will fail.
- Parameter
context an optional SSL.context object to provide to the SSL/TLS connection client.
Returns
1on success,0otherwise.
Class Protocols.LDAP.client.result
- Description
Contains the result of a LDAP search.
- See also
LDAP.client.search,LDAP.client.result.fetch
- Method
count_entries
intcount_entries()- Description
Returns the number of entries from the current cursor position to the end of the list.
- See also
LDAP.client.result.first,LDAP.client.result.next
- Method
create
Protocols.LDAP.client.resultProtocols.LDAP.client.result(array(object)entries,intstuff,intflags)- Description
You can't create instances of this object yourself. The only way to create it is via a search of a LDAP server.
- Method
error_number
interror_number()- Description
Returns the error number in the search result.
- See also
error_string,server_error_string
- Method
error_string
stringerror_string()- Description
Returns the description of the error in the search result. This is the error string from the server, or a standard error message corresponding to the error number if the server didn't provide any description.
- See also
server_error_string,error_number
- Method
fetch
ResultEntry|zerofetch(int|voididx)- Description
Returns the current entry pointed to by the cursor.
- Parameter
index This optional argument can be used for direct access to an entry other than the one currently pointed to by the cursor.
- Returns
The return value is a mapping describing the entry:
attribute:stringAn attribute in the entry. The value is an array containing the returned attribute value(s) on string form, or a single string if
Protocols.LDAP.SEARCH_MULTIVAL_ARRAYS_ONLYwas given tosearchand the attribute is typed as single valued.If
Protocols.LDAP.SEARCH_RETURN_DECODE_ERRORSwas given tosearchthenCharset.DecodeErrorobjects are returned in place of a string whenever an attribute value fails to be decoded."dn":stringThis special entry contains the object name of the entry as a distinguished name.
This might also be a
Charset.DecodeErrorifProtocols.LDAP.SEARCH_RETURN_DECODE_ERRORSwas given tosearch.Zero is returned if the cursor is outside the valid range of entries.
- Throws
Unless
Protocols.LDAP.SEARCH_RETURN_DECODE_ERRORSwas given tosearch, aCharset.DecodeErroris thrown if there is an error decoding the DN or any attribute value.- Note
It's undefined whether or not destructive operations on the returned mapping will affect future
fetchcalls for the same entry.- Note
In Pike 7.6 and earlier, the special
"dn"entry was incorrectly returned in UTF-8 encoded form for LDAPv3 connections.- See also
fetch_all
- Method
fetch_all
array(ResultEntry) fetch_all()- Description
Convenience function to fetch all entries at once. The cursor isn't affected.
- Returns
Returns an array where each element is the entry from the result. Don't be destructive on the returned value.
- Throws
Unless
Protocols.LDAP.SEARCH_RETURN_DECODE_ERRORSwas given tosearch, aCharset.DecodeErroris thrown if there is an error decoding the DN or any attribute value.- See also
fetch
- Method
first
voidfirst()- Description
Initialized the result cursor to the first entry in the result list.
- See also
LDAP.client.result.next
- Method
get_dn
string|Charset.DecodeErrorget_dn()- Description
Returns distinguished name (DN) of the current entry in the result list. Note that this is the same as getting the
"dn"field from the return value fromfetch.- Note
In Pike 7.6 and earlier, this field was incorrectly returned in UTF-8 encoded form for LDAPv3 connections.
- Method
next
intnext()- Description
Moves the result cursor to the next entry in the result list. Returns number of remained entries in the result list. Returns 0 at the end.
- See also
LDAP.client.result.next
- Method
num_entries
intnum_entries()- Description
Returns the number of entries.
- See also
LDAP.client.result.count_entries
Class Protocols.LDAP.protocol
- Method
error_number
interror_number()- Description
Returns the error number from the last transaction. If the error is
LDAP_SERVER_DOWNthen there was a socket error, and the I/O error number can be retrieved using.ldapfd->errno()- See also
error_string,server_error_string
- Method
error_string
stringerror_string()- Description
Returns the description of the error from the last transaction. This is the error string from the server, or a standard error message corresponding to the error number if the server didn't provide any description.
If
error_numberreturnsLDAP_SERVER_DOWNthen this is thestrerrormessage corresponding to the I/O error for the connection.- See also
server_error_string,error_number
- Method
get_last_io_time
intget_last_io_time()- Description
Returns when I/O was made last. Useful to find out whether it's safe to continue using a connection that has been idle for some time.
- Method
error_number
- Constant
GUID_USERS_CONTAINER
Module Protocols.LMTP
Class Protocols.LMTP.Server
- Description
A LMTP server. It has been fairly well tested against Postfix client. Actually this module is only an extention to the
SMTPserver.
- Method
create
Protocols.LMTP.ServerProtocols.LMTP.Server(array(string)_domains,void|intport,void|stringip,function(:void)_cb_mailfrom,function(:void)_cb_rcptto,function(:void)_cb_data)- Description
Create a receiving LMTP server.
- Parameter
domain Domains name this server relay, you need to provide at least one domain (the first one will be used for MAILER-DAEMON address). if you want to relay everything you can put a '*' after this first domain.
- Parameter
port Port this server listen on
- Parameter
listenip IP on which server listen
- Parameter
cb_mailfrom Mailfrom callback function, this function will be called when a client send a mail from command. This function must take a string as argument (corresponding to the sender's email) and return int corresponding to the SMTP code to output to the client. If you return an array the first element is the SMTP code and the second is the error string to display.
- Parameter
cb_rcptto Same as cb_mailfrom but called when a client sends a rcpt to.
- Parameter
cb_data This function is called for each recipient in the "rcpt to" command after the client sends the "data" command It must have the following synopsis: int|array cb_data(object mime, string sender, string recipient, void|string rawdata) object mime : the mime data object string sender : sender of the mail (from the mailfrom command) string recipient : one recipient given by one rcpt command. return : SMTP code to output to the client. If you return an array the first element is the SMTP code and the second is the error string to display. Note that to comply with LMTP protocol you must output a code each time this function is called.
- Example
Here is an example of silly program that does nothing except outputing informations to stdout. int cb_mailfrom(string mail) { return 250; }
int cb_rcptto(string email) { // check the user's mailbox here return 250; }
int cb_data(object mime, string sender, string recipient) { write(sprintf("smtpd: mailfrom=%s, to=%s, headers=%O\ndata=%s\n", sender, recipient, mime->headers, mime->getdata())); // check the data and deliver the mail here if(mime->body_parts) { { foreach(mime->body_parts, object mpart) write(sprintf("smtpd: mpart data = %O\n", mpart->getdata())); } return 250; }
int main(int argc, array(string) argv) { Protocols.LMTP.Server(({ "ece.fr" }), 2500, "127.0.0.1", cb_mailfrom, cb_rcptto, cb_data); return -1; }
Module Protocols.LPD
- Description
An implementation of the BSD lpd protocol (RFC 1179).
Class Protocols.LPD.client
- Description
A client for communicating with printers and print spoolers that support the BSD lpd protocol (RFC 1179).
- Method
create
Protocols.LPD.clientProtocols.LPD.client(string|voidhostname,int|voidportnum)- Description
Create a new LPD client connection.
- Parameter
hostname Contains the hostname or ipaddress of the print host. if not provided, defaults to localhost.
- Parameter
portnum Contains the port the print host is listening on. if not provided, defaults to port 515, the RFC 1179 standard.
- Method
delete_job
intdelete_job(stringqueue,int|voidjob)- Description
Delete job job from printer queue.
- Returns
Returns 1 on success, 0 otherwise.
- Method
send_job
string|intsend_job(stringqueue,stringjob)- Description
Send print job consisting of data job to printer queue.
- Returns
Returns 1 if success, 0 otherwise.
- Method
set_job_type
intset_job_type(stringtype)- Description
Set the type of job to be sent to the printer to type. Valid types are: text, postscript and raw.
- Method
start_queue
intstart_queue(stringqueue)- Description
Start the queue queue if not already printing.
- Returns
Returns 0 if unable to connect, 1 otherwise.
Module Protocols.Line
Class Protocols.Line.imap_style
- Description
Nonblocking line-oriented I/O with support for reading literals.
- Variable
handle_line
function(string:void) Protocols.Line.imap_style.handle_line- Description
This function will be called once for every line that is received.
- Note
This API is provided for backward compatibility; overload
handle_command()instead.- See also
Protocols.Line.simple()->handle_command()
- Variable
handle_literal
function(string:void) Protocols.Line.imap_style.handle_literal- Description
If this variable has been set,
literal_lengthbytes will be accumulated, and this function will be called with the resulting data.- Note
handle_literal()is one-shot, ie it will be cleared when it is called.
- Variable
literal_length
intProtocols.Line.imap_style.literal_length- Description
Length in bytes of the literal to read.
- Method
expect_literal
voidexpect_literal(intlength,function(string:void)callback)- Description
Enter literal reading mode.
Sets
literal_lengthandhandle_literal().- See also
literal_length,handle_literal()
Class Protocols.Line.simple
- Description
Simple nonblocking line-oriented I/O.
- Constant
line_separator
protectedconstantstringProtocols.Line.simple.line_separator- Description
The sequence separating lines from eachother. "\r\n" by default.
- Variable
handle_data
function(string:void) Protocols.Line.simple.handle_data- Description
If this variable has been set, multiple lines will be accumulated, until a line with a single
"."(period) is received.handle_data()will then be called with the accumulated data as the argument.- Note
handle_data()is one-shot, ie it will be cleared when it is called.The line with the single
"."(period) will not be in the accumulated data.- See also
handle_command()
- Variable
send_q
ADT.Queue(<string|zero>) Protocols.Line.simple.send_q- Description
Queue of data that is pending to send.
The elements in the queue are either strings with data to send, or
0(zero) which is the end of file marker. The connection will be closed when the end of file marker is reached.- See also
send(),disconnect()
- Method
close_callback
protectedvoidclose_callback()- Description
This function is called when the connection has been closed at the other end.
Overload this function as appropriate.
The default action is to shut down the connection on this side as well.
- Method
create
Protocols.Line.simpleProtocols.Line.simple(Stdio.Filecon,int|voidtimeout)- Description
Create a simple nonblocking line-based protocol handler.
conis the connection.timeoutis an optional timeout in seconds after which the connection will be closed if there has been no data sent or received.If
timeoutis0(zero), no timeout will be in effect.- See also
touch_time(),do_timeout()
- Method
disconnect
voiddisconnect()- Description
Disconnect the connection.
Pushes an end of file marker onto the send queue
send_q.- Note
Note that the actual closing of the connection is delayed until all data in the send queue has been sent.
No more data will be read from the other end after this function has been called.
- Method
do_timeout
protectedvoiddo_timeout()- Description
This function is called when a timeout occurrs.
Overload this function as appropriate.
The default action is to shut down the connection immediately.
- See also
create(),touch_time()
- Method
handle_command
voidhandle_command(stringline)- Description
This function will be called once for every line that is received.
Overload this function as appropriate.
- Note
It will not be called if
handle_data()has been set.linewill not contain the line separator.- See also
handle_data()
- Method
read_callback
protectedvoidread_callback(mixedignored,stringdata)- Description
Called when data has been received.
Overload as appropriate.
Calls the handle callbacks repeatedly until no more lines are available.
- See also
handle_data(),handle_command(),read_line()
- Method
read_line
protectedstring|zeroread_line()- Description
Read a line from the input.
- Returns
Returns
0when more input is needed. Returns the requested line otherwise.- Note
The returned line will not contain the line separator.
- See also
handle_command(),line_separator
- Method
send
protectedvoidsend(strings)- Description
Queue some data to send.
- See also
handle_command(),handle_data(),disconnect()
Class Protocols.Line.smtp_style
- Description
Nonblocking line-oriented I/O with support for sending SMTP-style codes.
- Variable
errorcodes
mapping(int:string|array(string)) Protocols.Line.smtp_style.errorcodes- Description
Mapping from return-code to error-message.
Overload this constant as apropriate.
- Method
send
voidsend(int(100..999)code,array(string)|string|voidlines)- Description
Send an SMTP-style return-code.
codeis an SMTP-style return-code.If
linesis omitted,errorcodeswill be used to lookup an appropriate error-message.If
linesis a string, it will be split on"\n"(newline), and the error-code interspersed as appropriate.- See also
errorcodes
Module Protocols.NNTP
- Description
NNTP - The Network News Transfer Protocol.
Class Protocols.NNTP.asyncprotocol
- Description
Asynchronous NNTP protocol
- Method
command
voidcommand(stringcmd,function(:void)|voidcb)- Description
send a command to the server
- Returns
the result code sent by the server
Class Protocols.NNTP.client
- Description
An NNTP client
- Method
create
Protocols.NNTP.clientProtocols.NNTP.client(string|voidserver)- Parameter
server NNTP server to connect to. Defaults to the server specified by the environment variable
NNTPSERVER.
Class Protocols.NNTP.protocol
- Description
Synchronous NNTP protocol
- Method
command
intcommand(stringcmd)- Description
send a command to the server
- Returns
the result code sent by the server
- Method
do_cmd_with_body
stringdo_cmd_with_body(stringcmd)- Description
send a command that should return a message body.
- Returns
the message body
- Method
failsafe_command
intfailsafe_command(stringcmd)- Description
send a command and require an ok response (200 series). throws an error if the command result was not success.
- Method
read_body_lines
array(string) read_body_lines()- Description
reads the message from the server as an array of lines
- Method
readreturncode
intreadreturncode()- Description
reads the server result code for last request used internally by command().
Module Protocols.OBEX
- Description
The IrDA® Object Exchange Protocol. OBEX is a protocol for sending and receiving binary objects to mobile devices using transports such as IR and Bluetooth.
- Typedef
Headers
typedefmapping(HeaderIdentifier:string|int|array) Protocols.OBEX.Headers- Description
A set of request or response headers. Each HI can be associated with either a single value (int or string, depending on the HI in question) or an array with multiple such values.
- Constant
SETPATH_BACKUP
finalconstantintProtocols.OBEX.SETPATH_BACKUP- Description
A flag for the
REQ_SETPATHcommand indicating that the parent directory should be selected
- Constant
SETPATH_NOCREATE
finalconstantintProtocols.OBEX.SETPATH_NOCREATE- Description
A flag for the
REQ_SETPATHcommand indicating that the selected directory should not be created if it doesn't exist
- Method
decode_headers
Headersdecode_headers(stringh)- Description
Deserialize a set of headers from wire format
- Method
encode_headers
stringencode_headers(Headersh)- Description
Serialize a set of headers to wire format
- See also
split_headers()
- Method
split_headers
array(string) split_headers(stringh,intchunklen)- Description
Given a set of headers in wire format, divide them into portions of no more than
chunklenoctets each (if possible). No individual header definition will be split into two portions.
Enum Protocols.OBEX.HeaderIdentifier
- Description
An identifier for a request or response header
- Constant
HI_APPPARAM
constantProtocols.OBEX.HI_APPPARAM- Description
Extended application request & response information
- Constant
HI_CONNID
constantProtocols.OBEX.HI_CONNID- Description
An identifier used for OBEX connection multiplexing
- Constant
HI_COUNT
constantProtocols.OBEX.HI_COUNT- Description
Number of objects to transfer (used by
REQ_CONNECT)
- Constant
HI_CREATORID
constantProtocols.OBEX.HI_CREATORID- Description
Indicates the creator of an object
- Constant
HI_DESCRIPTION
constantProtocols.OBEX.HI_DESCRIPTION- Description
Text description of the object
- Constant
HI_ENDOFBODY
constantProtocols.OBEX.HI_ENDOFBODY- Description
The final chunk of the object body
- Constant
HI_LENGTH
constantProtocols.OBEX.HI_LENGTH- Description
Length of the object transferred, in octets
- Constant
HI_SESSPARAM
constantProtocols.OBEX.HI_SESSPARAM- Description
Parameters used in session commands/responses
- Constant
HI_SESSSEQNR
constantProtocols.OBEX.HI_SESSSEQNR- Description
Sequence number used in each OBEX packet for reliability
- Constant
HI_TARGET
constantProtocols.OBEX.HI_TARGET- Description
Name of service that operation is targeted to
Enum Protocols.OBEX.Request
- Description
A request opcode, for use with the
client.do_request()function.
- Constant
REQ_ABORT
constantProtocols.OBEX.REQ_ABORT- Description
Abort the request currently being processed
- Constant
REQ_DISCONNECT
constantProtocols.OBEX.REQ_DISCONNECT- Description
Terminate an OBEX connection
- Constant
REQ_FINAL
constantProtocols.OBEX.REQ_FINAL- Description
For
REQ_PUTandREQ_GETrequests, REQ_FINAL must be set for the request block containing the last portion of the headers. Other requests must be sent as a single block and have the REQ_FINAL bit encoded in their request opcode.
Class Protocols.OBEX.ATClient
- Description
An extension of the
clientwhich uses the AT*EOBEX modem command to enter OBEX mode. Use together with Sony Ericsson data cables.
Class Protocols.OBEX.Client
- Description
An OBEX client
- See also
ATclient
- Method
connect
boolconnect()- Description
Establish a new connection using the
REQ_CONNECTopcode to negotiate transfer parameters- Returns
If the connection succeeds, 1 is returned. Otherwise, 0 is returned.
- Method
create
Protocols.OBEX.ClientProtocols.OBEX.Client(Stdio.Stream_con)- Description
Initialize the client by establishing a connection to the server at the other end of the provided transport stream
- Parameter
_con A stream for writing requests and reading back responses. Typically this is some kind of serial port.
- Method
disconnect
booldisconnect()- Description
Terminate a connection using the
REQ_DISCONNECTopcode- Returns
If the disconnection succeeds, 1 is returned. Otherwise, 0 is returned.
- Method
do_abort
array(int|Headers) do_abort(Headers|voidheaders)- Description
Perform a
REQ_ABORTrequest.- See also
do_request()
- Method
do_get
array(int|Headers) do_get(Stdio.Streamdata,Headers|voidheaders)- Description
Perform a
REQ_GETrequest.- Parameter
data A stream to write the body data to
- Parameter
headers Headers for the request
- Returns
See
do_request(). The Headers do not contain anyHI_BODYheaders, they are written to thedatastream.- See also
do_put(),do_request()
- Method
do_put
array(int|Headers) do_put(string|Stdio.Streamdata,Headers|voidextra_headers)- Description
Perform a
REQ_PUTrequest.- Parameter
data Body data to send, or a stream to read the data from
- Parameter
extra_headers Any additional headers to send (
HI_LENGTHandHI_BODYare generated by this function)- See also
do_get(),do_request()
- Method
do_request
array(int|Headers) do_request(Requestr,Headers|voidheaders,string|voidextra_req)- Description
Perform a request/response exchange with the server, including processing of headers and request splitting.
- Parameter
r Request opcode
- Parameter
headers Request headers
- Parameter
extra_req Any request data that should appear before the headers, but after the opcode
- Returns
An array with the response information
Array intreturncodeAn HTTP response code
HeadersheadersResponse headers
- See also
low_do_request(),do_abort(),do_put(),do_get(),do_setpath(),do_session()
- Method
do_session
array(int|Headers) do_session(Headers|voidheaders)- Description
Perform a
REQ_SESSIONrequest.- See also
do_request()
- Method
do_setpath
array(int|Headers) do_setpath(stringpath,int|voidflags,Headers|voidextra_headers)- Description
Perform a
REQ_SETPATHrequest.- Parameter
path The directory to set as current working directory
"/"Go to the root directory
".."Go to the parent directory
- Parameter
flags Logical or of zero or more of
SETPATH_BACKUPandSETPATH_NOCREATE- Parameter
extra_headers Any additional request headers (the
HI_NAMEheader is generated by this function)- See also
do_request()
- Method
low_do_request
array(int|string) low_do_request(Requestr,stringdata)- Description
Perform a request/response exchange with the server. No interpretation is preformed of either the request or response data, they are just passed literally.
- Parameter
r Request opcode
- Parameter
data Raw request data
- Returns
An array with the response information
Array intreturncodeAn HTTP response code
stringdataResponse data, if any
- See also
do_request()
Module Protocols.Ports
- Description
A list of named ports. This is similar to /etc/services.
- Constant
private_tcp
constantProtocols.Ports.private_tcp- Description
Contains all TCP ports assigned for private use as of RFC 1700.
- Constant
private_udp
constantProtocols.Ports.private_udp- Description
Contains all UDP ports assigned for private use as of RFC 1700.
- Constant
tcp
constantProtocols.Ports.tcp- Description
Contains all non-private TCP port assignments as of RFC 1700. Extended with some non-official.
- Constant
udp
constantProtocols.Ports.udp- Description
Contains all non-private UDP port assignments as of RFC 1700.
- Method
`[]
protectedService|mixed`[](stringname)- Description
If
nameis not an indentifier in this module, return the first matching protocol. This would be the first element in the array returned bylookup
- Method
lookup
array(Service) lookup(stringname)- Description
Return all ports registered for the specified name This function also reads data from /etc/services if possible.
- Method
port
intport(stringname)- Description
Return the first port registered for the specified name (the lowest numbered tcp port, or if there is no tcp ports, the lowest numbered udp port)
Class Protocols.Ports.Service
- Description
A single service registration. Used as the return value for the
lookupmethod.
- Variable
name
Variable port
Variable protocol
Variable comment stringProtocols.Ports.Service.nameintProtocols.Ports.Service.portstringProtocols.Ports.Service.protocolstringProtocols.Ports.Service.comment
Module Protocols.SMTP
- Variable
replycodes
mapping(int:string) Protocols.SMTP.replycodes- Description
A mapping(int:string) that maps SMTP return codes to english textual messages.
Class Protocols.SMTP.AsyncClient
- Description
Asynchronous (nonblocking/event-oriented) email client class (this lets you send emails).
- Method
create
Protocols.SMTP.AsyncClientProtocols.SMTP.AsyncClient(void|string|objectserver,int|voidport,function(:void)|voidcb,mixed...args)- Description
Creates an SMTP mail client and connects it to the the
serverprovided. The server parameter may either be a string with the hostname of the mail server, or it may be a file object acting as a mail server. Ifserveris a string, then an optional port parameter may be provided. If no port parameter is provided, port 25 is assumed. If no parameters at all is provided the client will look up the mail host by searching for the DNS MX record.The callback will first be called when the connection is established (
cb(1, @args)) or fails to be established with an error. The callback will also be called with an error if one occurs during the delivery of mails.In the error cases, the
cbgets called the following ways:cb(({ 1, errno(), error_string, int(0..1) direct }), @args);cb(({ 0, smtp-errorcode, error_string, int(0..1) direct }), @args);
Where
directis1if establishment of the connection failed.
- Method
send_message
voidsend_message(stringfrom,array(string)to,stringbody,function(:void)|voidcb,mixed...args)- Description
Sends a mail message from
fromto the mail addresses listed intowith the mail bodybody. The body should be a correctly formatted mail DATA block, e.g. produced byMIME.Message.When the message is successfully sent, the callback will be called (
cb(1, @args);).When the message cannot be sent,
cbwill be called in one of the following ways:cb(({ 1, errno(), error_string, int(0..1) direct }), @args);cb(({ 0, smtp-errorcode, error_string, int(0..1) direct }), @args);
where direct will be
1if this particular message caused the error and0otherwise.- See also
simple_mail
- Method
simple_mail
voidsimple_mail(stringto,stringsubject,stringfrom,stringmsg,function(:void)|voidcb,mixed...args)- Description
Sends an e-mail. Wrapper function that uses
send_message.- Note
Some important headers are set to:
"Content-Type: text/plain; charset=iso-8859-1"and"Content-Transfer-Encoding: 8bit"."Date:"header isn't used at all.When the message is successfully sent, the callback will be called (
cb(1, @args);).When the message cannot be sent,
cbwill be called in one of the following ways:cb(({ 1, errno(), error_string, int(0..1) direct }), @args);cb(({ 0, smtp-errorcode, error_string, int(0..1) direct }), @args);
where direct will be
1if this particular message caused the error and0otherwise.
- Method
verify
voidverify(stringaddr,function(:void)cb,mixed...args)- Description
Verifies the mail address
addragainst the mail server.The callback will be called with
cb(({ code, message }), @args);
where code and message are
Array intcodeThe numerical return code from the VRFY call.
stringmessageThe textual answer to the VRFY call.
or
cb(({ 1, errno(), error_string, int(0..1) direct }), @args);cb(({ 0, smtp-errorcode, error_string, int(0..1) direct }), @args);
with
directbeing1if this verify operation caused the error when the message can't be verified or when an error occurs.- Note
Some mail servers does not answer truthfully to verification queries in order to prevent spammers and others to gain information about the mail addresses present on the mail server.
Class Protocols.SMTP.Client
- Description
Synchronous (blocking) email class (this lets you send emails).
- Method
create
Protocols.SMTP.ClientProtocols.SMTP.Client()Protocols.SMTP.ClientProtocols.SMTP.Client(Stdio.Fileserver)Protocols.SMTP.ClientProtocols.SMTP.Client(stringserver,void|intport)- Description
Creates an SMTP mail client and connects it to the the
serverprovided. The server parameter may either be a string with the hostname of the mail server, or it may be a file object acting as a mail server. Ifserveris a string, then an optional port parameter may be provided. If no port parameter is provided, port 25 is assumed. If no parameters at all is provided the client will look up the mail host by searching for the DNS MX record.- Throws
Throws an exception if the client fails to connect to the mail server.
- Method
send_message
voidsend_message(stringfrom,array(string)to,stringbody)- Description
Sends a mail message from
fromto the mail addresses listed intowith the mail bodybody. The body should be a correctly formatted mail DATA block, e.g. produced byMIME.Message.- See also
simple_mail- Throws
If the mail server returns any other return code than 200-399 an exception will be thrown.
- Method
simple_mail
voidsimple_mail(stringto,stringsubject,stringfrom,stringmsg)- Description
Sends an e-mail. Wrapper function that uses
send_message.- Note
Some important headers are set to:
"Content-Type: text/plain; charset=iso-8859-1"and"Content-Transfer-Encoding: 8bit". The"Date:"header is set to the current local time. The"Message-Id"header is set to aStandards.UUIDfollowed by the hostname as returned bygethostname().- Note
If
gethostname()is not supported, it will be replaced with the string"localhost".- Throws
If the mail server returns any other return code than 200-399 an exception will be thrown.
- Method
verify
array(int|string) verify(stringaddr)- Description
Verifies the mail address
addragainst the mail server.- Returns
Array intcodeThe numerical return code from the VRFY call.
stringmessageThe textual answer to the VRFY call.
- Note
Some mail servers does not answer truthfully to verification queries in order to prevent spammers and others to gain information about the mail addresses present on the mail server.
- Throws
If the mail server returns any other return code than 200-399 an exception will be thrown.
Class Protocols.SMTP.ClientHelper
- Description
A helper class with functions useful when sending eMail.
- Method
parse_addr
protectedstringparse_addr(stringaddr)- Description
Parses email addresses as the
Protocols.SMTPclient classes do. Useful if emails should only be sent matching certain conditions etc..
- Method
rfc2822date_time
stringrfc2822date_time(intts)- Description
Return an RFC 2822 date-time string suitable for the Date: header.
Class Protocols.SMTP.Configuration
- Description
Class to store configuration variable for the SMTP server
- Variable
checkemail
intProtocols.SMTP.Configuration.checkemail- Description
Lamme check email from validity
- Variable
givedata
intProtocols.SMTP.Configuration.givedata- Description
Give raw data and normal MIME data, if set to yes your cb_data function should take an extra string argument
- Variable
maxrcpt
intProtocols.SMTP.Configuration.maxrcpt- Description
Maximum number of recipients (default 1000)
Class Protocols.SMTP.Connection
- Description
The low-level class for the SMTP server
Class Protocols.SMTP.Server
- Description
The use of Protocols.SMTP.server is quite easy and allow you to design custom functions to process mail. This module does not handle mail storage nor relaying to other domains. So it is your job to provide mail storage and relay mails to other servers
- Method
create
Protocols.SMTP.ServerProtocols.SMTP.Server(array(string)domains,void|intport,void|stringip,function(:void)cb_mailfrom,function(:void)cb_rcptto,function(:void)cb_data)- Description
Create a receiving SMTP server. It implements RFC 2821, RFC 2822 and RFC 1854.
- Parameter
domain Domains name this server relay, you need to provide at least one domain (the first one will be used for MAILER-DAEMON address). if you want to relay everything you can put a '*' after this first domain.
- Parameter
port Port this server listen on
- Parameter
listenip IP on which server listen
- Parameter
cb_mailfrom Mailfrom callback function, this function will be called when a client send a mail from command. This function must take a string as argument (corresponding to the sender's email) and return int corresponding to the SMTP code to output to the client. If you return an array the first element is the SMTP code and the second is the error string to display.
- Parameter
cb_rcptto Same as cb_mailfrom but called when a client sends a rcpt to.
- Parameter
cb_data This function is called each time a client send a data content. It must have the following synopsis: int cb_data(object mime, string sender, array(string) recipients, void|string rawdata) object mime : the mime data object string sender : sender of the mail (from the mailfrom command) array(string) recipients : one or more recipients given by the rcpt to command return : SMTP code to output to the client. If you return an array the first element is the SMTP code and the second is the error string to display.
- Example
Here is an example of silly program that does nothing except outputing informations to stdout. int cb_mailfrom(string mail) { return 250; }
int cb_rcptto(string email) { // check the user's mailbox here return 250; }
int cb_data(object mime, string sender, array(string) recipients) { write(sprintf("smtpd: mailfrom=%s, to=%s, headers=%O\ndata=%s\n", sender, recipients * ", ", mime->headers, mime->getdata())); // check the data and deliver the mail here if(mime->body_parts) { foreach(mime->body_parts, object mpart) write("smtpd: mpart data = %O\n", mpart->getdata()); } return 250; }
int main(int argc, array(string) argv) { Protocols.SMTP.Server(({ "ece.fr" }), 2500, "127.0.0.1", cb_mailfrom, cb_rcptto, cb_data); return -1; }
- Variable
replycodes
Module Protocols.SNMP
- Description
SNMPv1 and v2c
- Constant
REQUEST_GET_RESPONSE
constantProtocols.SNMP.REQUEST_GET_RESPONSE- Description
PDU type GetResponse
Class Protocols.SNMP.agent
- Description
A simple SNMP agent with support for SNMP Get requests
- Method
clear_get_oid_callback
intclear_get_oid_callback(stringoid)- Description
clear the Get callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler.
- Returns
1 if the callback existed, 0 otherwise
- Method
clear_set_oid_callback
intclear_set_oid_callback(stringoid)- Description
clear the Set callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler.
- Returns
1 if the callback existed, 0 otherwise
- Method
create
Protocols.SNMP.agentProtocols.SNMP.agent(int|voidport,string|voidaddr)- Description
create a new instance of the agent
- Parameter
port the port number to listen for requests on
- Parameter
addr the address to bind to for listening
- Note
only one agent may be bound to a port at one time the agent does not currently support SMUX or AGENTX or other agent multiplexing protocols.
- Method
get_get_oid_callback
void|function(:void) get_get_oid_callback(stringoid)- Description
get the Get request callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler
- Returns
the function associated with oid, if any
- Method
get_set_oid_callback
void|function(:void) get_set_oid_callback(stringoid)- Description
get the Set request callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler
- Returns
the function associated with oid, if any
- Method
set_get_communities
voidset_get_communities(arraycommunities)- Description
set the valid community strings for Get requests
- Parameter
communities an array of valid Get communities
- Note
send an empty array to disable Get requests
- Method
set_get_oid_callback
voidset_get_oid_callback(stringoid,function(:void)cb)- Description
set the Get request callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to serve as the handler for all requests for which a handler is specified.
- Parameter
cb the function to call when oid is requested by a manager the function should take 2 arguments: a string containing the requested oid and the body of the request as a mapping. The function should return an array containing 3 or 4 elements: The first is a boolean indicating success or failure. If success, the next 2 elements should be the SNMP data type of the result followed by the result itself. If failure, the next 2 elements should be the error-status such as
Protocols.SNMP.ERROR_TOOBIGand the second is the error-index, if any. If a fourth array element is returned, it should contain the OID that the callback actually fetched (typically different from the requested OID for REQUEST_GETNEXT requests). This is needed for e.g. snmpwalk to work properly.- Note
there can be only one callback per object identifier. calling this function more than once with the same oid will result in the new callback replacing the existing one.
- Method
set_managers
voidset_managers(arraymanagers)- Description
set the valid manager list for requests
- Parameter
managers an array of valid management hosts
- Note
send an empty array to disable all requests
- Method
set_managers_only
voidset_managers_only(intyesno)- Description
enable manager access limits
- Parameter
yesno 1 to allow only managers to submit requests 0 to allow any host to submit requests
default setting allows all requests from all hosts
- Method
set_set_communities
voidset_set_communities(arraycommunities)- Description
set the valid community strings for Set requests
- Parameter
communities an array of valid Set communities
- Note
send an empty array to disable Set requests
- Method
set_set_oid_callback
voidset_set_oid_callback(stringoid,function(:void)cb)- Description
set the Set request callback function for an Object Identifier
- Parameter
oid the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to serve as the handler for all requests for which a handler is specified.
- Parameter
cb the function to call when oid is requested by a manager the function should take 3 arguments: a string containing the requested oid, the desired value, and the body of the request as a mapping. The function should return an array containing 3 elements: The first is a boolean indicating success or failure. If success, the next 2 elements should be the SNMP data type of the result followed by the result itself. If failure, the next 2 elements should be the error-status such as
Protocols.SNMP.ERROR_TOOBIGand the second is the error-index, if any.- Note
there can be only one callback per object identifier. calling this function more than once with the same oid will result in the new callback replacing the existing one.
Class Protocols.SNMP.protocol
- Variable
snmp_community
stringProtocols.SNMP.protocol.snmp_community- Description
SNMP community string
should be set to the appropriate SNMP community before sending a request.
- Note
Set to "public" by default.
- Variable
snmp_version
intProtocols.SNMP.protocol.snmp_version- Description
SNMP version
currently version 1 and 2 are supported.
- Method
create
Protocols.SNMP.protocolProtocols.SNMP.protocol(int|voidrem_port,string|voidrem_addr,int|voidloc_port,string|voidloc_addr)- Description
create a new SNMP protocol object
- Parameter
rem_port - Parameter
rem_addr remote address and UDP port (optional)
- Parameter
loc_port - Parameter
loc_addr local address and UDP port (optional)
- Method
decode_asn1_msg
mappingdecode_asn1_msg(mappingrawd)- Description
decode ASN1 data, if garbaged ignore it
- Method
get_nextrequest
intget_nextrequest(array(string)varlist,string|voidrem_addr,int|voidrem_port)- Description
GetNextRequest-PDU call
- Parameter
varlist an array of OIDs to GET
- Parameter
rem_addr - Parameter
rem_port remote address an UDP port to send request to (optional)
- Returns
request ID
- Method
get_request
intget_request(array(string)varlist,string|voidrem_addr,int|voidrem_port)- Description
GetRequest-PDU call
- Parameter
varlist an array of OIDs to GET
- Parameter
rem_addr - Parameter
rem_port remote address an UDP port to send request to (optional)
- Returns
request ID
- Method
get_response
intget_response(mappingvarlist,mappingorigdata,int|voiderrcode,int|voiderridx)- Description
GetResponse-PDU call
- Parameter
varlist a mapping containing data to return
oid1:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid1
oid2:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid2
oidn:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oidn
- Parameter
origdata original received decoded pdu that this response corresponds to
- Parameter
errcode error code
- Parameter
erridx error index
- Returns
request ID
- Method
readmsg
mapping|zeroreadmsg(int|float|voidtimeout)- Description
return the whole SNMP message in raw format
- Method
readmsg_from_pool
privatemappingreadmsg_from_pool(intmsgid)- Description
read decoded message from pool
- Method
set_request
intset_request(mappingvarlist,string|voidrem_addr,int|voidrem_port)- Description
SetRequest-PDU call
- Parameter
varlist a mapping of OIDs to SET
oid1:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid1
oid2:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid2
oidn:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oidn
- Parameter
rem_addr - Parameter
rem_port remote address an UDP port to send request to (optional)
- Returns
request ID
- Example
// set the value of 1.3.6.1.4.1.1882.2.1 to "blah". object s=Protocols.SNMP.protocol(); s->snmp_community="mysetcommunity"; mapping req=(["1.3.6.1.4.1.1882.2.1": ({"str", "blah"})]); int id=s->set_request(req, "172.21.124.32");
- Method
trap
inttrap(mappingvarlist,stringoid,inttype,intspectype,intticks,string|voidlocip,string|voidremaddr,int|voidremport)- Description
send an SNMP-v1 trap
- Parameter
varlist a mapping of OIDs to include in trap
oid1:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid1
oid2:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oid2
oidn:arrayArray stringtypedata type such as tick, oid, gauge, etc
mixeddatadata to return for oidn
- Parameter
oid - Parameter
type generic trap-type
- Parameter
spectype specific trap-type
- Parameter
ticks uptime
- Parameter
locip originating ip address of the trap
- Parameter
remaddr - Parameter
remport address and UDP to send trap to
- Returns
request id
- Variable
snmp_community
Module Protocols.TCP
- Description
Utilities relating to the TCP/IP protocol family.
Class Protocols.TCP.HappyEyeballs
- Description
Establish a TCP/IP socket connection to the given host and port. If successful, resolves with an open
Fileobject. Follows the Happy Eyeballs algorithm as defined in RFC 8305.- Example
// Attempt to connect to an HTTP server via either IPv6 or IPv4object he =Protocols.TCP.HappyEyeballs(); he->connect("pike.lysator.liu.se", 80)->then(){[Stdio.File sock]= __ARGS__; write("Connected socket: %O\n", sock);};
- Constant
CONNECTION_ATTEMPT_DELAY
constantfloatProtocols.TCP.HappyEyeballs.CONNECTION_ATTEMPT_DELAY- Description
Minimum gap between socket connection attempts
- Constant
FIRST_ADDRESS_FAMILY_WEIGHTING
constantintProtocols.TCP.HappyEyeballs.FIRST_ADDRESS_FAMILY_WEIGHTING- Description
Number of favoured addresses to attempt before going to the other family
- Constant
RESOLUTION_DELAY
constantfloatProtocols.TCP.HappyEyeballs.RESOLUTION_DELAY- Description
If IPv4 results come in first, delay by this many seconds in case IPv6 comes in.
- Variable
resolver
Protocols.DNS.async_clientProtocols.TCP.HappyEyeballs.resolver- Description
DNS resolver to use. Defaults to a vanilla async_client; may be replaced as required.
- Method
connect
Concurrent.Futureconnect(stringhost,intport)- Description
Establish a connection to the given
host:port. Resolves with a connected socket, or rejects with a failure message.
Module Protocols.TELNET
- Description
Implements TELNET as described by RFC 0764 and RFC 0854.
Also implements the Q method of TELNET option negotiation as specified by RFC 1143.
- Constant
AUTH_WHO_CLIENT
constantintProtocols.TELNET.AUTH_WHO_CLIENT- Description
Client authenticating server
- Constant
AUTH_WHO_SERVER
constantintProtocols.TELNET.AUTH_WHO_SERVER- Description
Server authenticating client
- Constant
LFLOW_RESTART_ANY
constantintProtocols.TELNET.LFLOW_RESTART_ANY- Description
Restart output on any char
- Constant
LFLOW_RESTART_XON
constantintProtocols.TELNET.LFLOW_RESTART_XON- Description
Restart output only on XON
- Constant
TELQUAL_INFO
constantintProtocols.TELNET.TELQUAL_INFO- Description
ENVIRON: informational version of IS
- Constant
TELQUAL_NAME
constantintProtocols.TELNET.TELQUAL_NAME- Description
AUTHENTICATION: client version of IS
- Constant
TELQUAL_REPLY
constantintProtocols.TELNET.TELQUAL_REPLY- Description
AUTHENTICATION: client version of IS
Class Protocols.TELNET.LineMode
- Description
Line-oriented TELNET protocol handler.
Class Protocols.TELNET.Readline
- Description
Line-oriented TELNET protocol handler with
Stdio.Readlinesupport.Implements the
Stdio.NonblockingStreamAPI.
- Inherit
LineMode
inherit LineMode : LineMode- Description
Based on the Line-oriented TELNET protocol handler.
- Variable
readline
Stdio.ReadlineProtocols.TELNET.Readline.readline- Description
Stdio.Readlineobject handling the connection.
- Method
create
Protocols.TELNET.ReadlineProtocols.TELNET.Readline(objectf,function(mixed,string:void)r_cb,function(mixed|void:string)w_cb,function(mixed|void:void)c_cb,mappingcallbacks,mixed|voidnew_id)- Description
Creates a TELNET protocol handler, and sets its callbacks.
- Parameter
f File to use for the connection.
- Parameter
r_cb Function to call when data has arrived.
- Parameter
w_cb Function to call when the send buffer is empty.
- Parameter
c_cb Function to call when the connection is closed.
- Parameter
callbacks Mapping with callbacks for the various TELNET commands.
- Parameter
new_id Value to send to the various callbacks.
- Method
set_nonblocking
voidset_nonblocking(function(mixed,string:void)r_cb,function(mixed|void:string)w_cb,function(mixed|void:void)c_cb)- Description
Change the asynchronous I/O callbacks.
- Parameter
r_cb Function to call when data has arrived.
- Parameter
w_cb Function to call when the send buffer is empty.
- Parameter
c_cb Function to call when the connection is closed.
- See also
create()
- Method
tcgetattr
mapping(string:int) tcgetattr()- Description
Get current terminal attributes.
Currently only the following attributes are supported:
"columns"Number of columns.
"rows"Number of rows.
"ECHO"Local character echo on (
1) or off (0(zero))."ICANON"Canonical input on (
1) or off (0(zero)).- Note
Using this function currently bypasses the Readline layer.
- See also
Stdio.File()->tcgetattr()
- Method
tcsetattr
inttcsetattr(mapping(string:int)options,string|voidwhen)- Description
Set terminal attributes.
Currently only the following attributes are supported:
"ECHO"Local character echo on (
1) or off (0(zero))."ICANON"Canonical input on (
1) or off (0(zero)).- Note
Using this function currently bypasses the Readline layer.
- See also
Stdio.File()->tcsetattr()
Class Protocols.TELNET.TelnetCodes
- Description
Table of IAC-codes.
Class Protocols.TELNET.Telopts
- Description
Table of TELNET options.
- Constant
TELOPT_3270REGIME
constantintProtocols.TELNET.Telopts.TELOPT_3270REGIME- Description
3270 regime
- Constant
TELOPT_AUTHENTICATION
constantintProtocols.TELNET.Telopts.TELOPT_AUTHENTICATION- Description
Authenticate
- Constant
TELOPT_ENCRYPT
constantintProtocols.TELNET.Telopts.TELOPT_ENCRYPT- Description
Encryption option
- Constant
TELOPT_EXOPL
constantintProtocols.TELNET.Telopts.TELOPT_EXOPL- Description
extended-options-list
- Constant
TELOPT_LFLOW
constantintProtocols.TELNET.Telopts.TELOPT_LFLOW- Description
remote flow control
- Constant
TELOPT_LINEMODE
constantintProtocols.TELNET.Telopts.TELOPT_LINEMODE- Description
Linemode option
- Constant
TELOPT_NAMS
constantintProtocols.TELNET.Telopts.TELOPT_NAMS- Description
approximate message size
- Constant
TELOPT_NAOCRD
constantintProtocols.TELNET.Telopts.TELOPT_NAOCRD- Description
negotiate about CR disposition
- Constant
TELOPT_NAOFFD
constantintProtocols.TELNET.Telopts.TELOPT_NAOFFD- Description
negotiate about formfeed disposition
- Constant
TELOPT_NAOHTD
constantintProtocols.TELNET.Telopts.TELOPT_NAOHTD- Description
negotiate about horizontal tab disposition
- Constant
TELOPT_NAOHTS
constantintProtocols.TELNET.Telopts.TELOPT_NAOHTS- Description
negotiate about horizontal tabstops
- Constant
TELOPT_NAOL
constantintProtocols.TELNET.Telopts.TELOPT_NAOL- Description
negotiate about output line width
- Constant
TELOPT_NAOLFD
constantintProtocols.TELNET.Telopts.TELOPT_NAOLFD- Description
negotiate about output LF disposition
- Constant
TELOPT_NAOP
constantintProtocols.TELNET.Telopts.TELOPT_NAOP- Description
negotiate about output page size
- Constant
TELOPT_NAOVTD
constantintProtocols.TELNET.Telopts.TELOPT_NAOVTD- Description
negotiate about vertical tab disposition
- Constant
TELOPT_NAOVTS
constantintProtocols.TELNET.Telopts.TELOPT_NAOVTS- Description
negotiate about vertical tab stops
- Constant
TELOPT_NEW_ENVIRON
constantintProtocols.TELNET.Telopts.TELOPT_NEW_ENVIRON- Description
New - Environment variables
- Constant
TELOPT_OLD_ENVIRON
constantintProtocols.TELNET.Telopts.TELOPT_OLD_ENVIRON- Description
Old - Environment variables
- Constant
TELOPT_RCTE
constantintProtocols.TELNET.Telopts.TELOPT_RCTE- Description
remote controlled transmission and echo
- Constant
TELOPT_SUPDUPOUTPUT
constantintProtocols.TELNET.Telopts.TELOPT_SUPDUPOUTPUT- Description
supdup output
- Constant
TELOPT_TTYLOC
constantintProtocols.TELNET.Telopts.TELOPT_TTYLOC- Description
terminal location number
- Constant
TELOPT_TUID
constantintProtocols.TELNET.Telopts.TELOPT_TUID- Description
TACACS user identification
- Constant
TELOPT_XASCII
constantintProtocols.TELNET.Telopts.TELOPT_XASCII- Description
extended ascic character set
Class Protocols.TELNET.protocol
- Description
Implementation of the TELNET protocol.
- Variable
cb
protectedmappingProtocols.TELNET.protocol.cb- Description
Mapping containing extra callbacks.
- Variable
close_cb
protectedfunction(mixed|void:void) Protocols.TELNET.protocol.close_cb- Description
Close callback.
- Variable
done
protectedintProtocols.TELNET.protocol.done- Description
Indicates that connection should be closed
- Variable
remote_options
Variable local_options protectedarray(int) Protocols.TELNET.protocol.remote_optionsprotectedarray(int) Protocols.TELNET.protocol.local_options- Description
Negotiation states of all WILL/WON'T options. See RFC 1143 for a description of the states.
- Variable
nonblocking_write
protectedintProtocols.TELNET.protocol.nonblocking_write- Description
Tells if we have set the nonblocking write callback or not.
- Variable
read_cb
protectedfunction(mixed,string:void) Protocols.TELNET.protocol.read_cb- Description
Read callback.
- Variable
synch
protectedintProtocols.TELNET.protocol.synch- Description
Indicates whether we are in synch-mode or not.
- Variable
write_cb
protectedfunction(mixed|void:string) Protocols.TELNET.protocol.write_cb- Description
Write callback.
- Method
call_read_cb
protectedvoidcall_read_cb(stringdata)- Description
Calls
read_cb().Specifically provided for overloading
- Method
create
Protocols.TELNET.protocolProtocols.TELNET.protocol(objectf,function(mixed,string:void)r_cb,function(mixed|void:string)w_cb,function(mixed|void:void)c_cb,mappingcallbacks,mixed|voidnew_id)- Description
Creates a TELNET protocol handler, and sets its callbacks.
- Parameter
f File to use for the connection.
- Parameter
r_cb Function to call when data has arrived.
- Parameter
w_cb Function to call when the send buffer is empty.
- Parameter
c_cb Function to call when the connection is closed.
- Parameter
callbacks Mapping with callbacks for the various TELNET commands.
- Parameter
new_id Value to send to the various callbacks.
- Method
disable_write
protectedvoiddisable_write()- Description
Turns off the write callback if apropriate.
- Method
got_data
protectedvoidgot_data(mixedignored,stringline)- Description
Callback called when normal data has been received. This function also does most of the TELNET protocol parsing.
- Parameter
ignored The id from the connection.
- Parameter
s The received data.
- Method
got_oob
protectedvoidgot_oob(mixedignored,strings)- Description
Callback called when Out-Of-Band data has been received.
- Parameter
ignored The id from the connection.
- Parameter
s The Out-Of-Band data received.
- Method
send_DO
voidsend_DO(intoption)- Description
Starts negotiation to enable a TELNET option.
- Parameter
option The option to enable.
- Method
send_DONT
voidsend_DONT(intoption)- Description
Starts negotiation to disable a TELNET option.
- Parameter
option The option to disable.
- Method
send_data
protectedvoidsend_data()- Description
Callback called when it is clear to send data over the connection. This function does the actual sending.
- Method
set_nonblocking
voidset_nonblocking(function(mixed,string:void)r_cb,function(mixed|void:string)w_cb,function(mixed|void:void)c_cb)- Description
Change the asynchronous I/O callbacks.
- Parameter
r_cb Function to call when data has arrived.
- Parameter
w_cb Function to call when the send buffer is empty.
- Parameter
c_cb Function to call when the connection is closed.
- See also
create()
- Method
set_write_callback
voidset_write_callback(function(mixed|void:string)w_cb)- Description
Sets the callback to be called when it is clear to send.
- Parameter
w_cb The new write callback.
- Method
setup
protectedvoidsetup()- Description
Called when the initial setup is done.
Created specifically for overloading
- Method
write
voidwrite(strings)- Description
Queues data to be sent to the other end of the connection.
- Parameter
s String to send.
Module Protocols.WebSocket
- Description
This module implements the WebSocket protocol as described in RFC 6455.
- Typedef
extension_factory
typedeffunction(bool,mapping,mapping:object)|programProtocols.WebSocket.extension_factory- Description
Extension factories are used during connection negotiation to create the
Extensionobjects for aConnection.
- Constant
deflate_default_options
constantProtocols.WebSocket.deflate_default_options- Description
Global default options for all WebSocket connections using the
permessage-deflateextension.- See also
permessagedeflate
- Method
low_parse
protectedFramelow_parse(Connectioncon,Stdio.Bufferbuf)- Description
Parses one WebSocket frame. Throws an error if there isn't enough data in the buffer.
- Method
parse
Frameparse(Connectioncon,Stdio.Bufferin)- Description
Parses one WebSocket frame. Returns
0if the buffer does not contain enough data.
- Method
permessagedeflate
extension_factorypermessagedeflate(void|mappingdefault_options)- Description
Returns an extension factory which implements the
permessage-deflateWebSocket extension. It uses the default options fromdeflate_default_options. Due to how thepermessage-deflateextension works, defragmented frames will be recombined automatically.- Note
If the
permessage-deflateextension is not being used, it falls back to usedefragment.
Enum Protocols.WebSocket.CLOSE_STATUS
- Description
WebSocket close status codes, as explained in the WebSocket protocol specification.
Enum Protocols.WebSocket.COMPRESSION
- Description
WebSocket frame compression heuristics override
Enum Protocols.WebSocket.FRAME
- Description
WebSocket frame opcodes.
Enum Protocols.WebSocket.RSV
- Description
WebSocket RSV extension bits.
Class Protocols.WebSocket.Connection
- Variable
bufferedAmount
intProtocols.WebSocket.Connection.bufferedAmount- Description
Number of bytes in the send buffer.
- Variable
endpoint
protectedStandards.URIProtocols.WebSocket.Connection.endpoint- Description
Remote endpoint URI when we are a client
- Variable
extra_headers
protectedmapping(string:string) Protocols.WebSocket.Connection.extra_headers- Description
Extra headers when connecting to a server
- Variable
masking
boolProtocols.WebSocket.Connection.masking- Description
If true, all outgoing frames are masked.
- Variable
onclose
function(CLOSE_STATUS,mixed:void) Protocols.WebSocket.Connection.onclose- Description
This callback will be called once the WebSocket has been closed. No more frames can be sent or will be received after the close event has been triggered. This happens either when receiving a frame initiating the close handshake or after the TCP connection has been closed. Note that this is a deviation from the WebSocket API specification.
- Variable
stream
Stdio.File|SSL.FileProtocols.WebSocket.Connection.stream- Description
The actual client connection.
- Method
close
voidclose(void|string(8bit)|CLOSE_STATUSreason,void|stringmsg)- Description
Send a WebSocket connection close frame. The close callback will be called when the close handshake has been completed. No more frames can be sent after initiating the close handshake.
- Method
connect
intconnect(string|Standards.URIendpoint,void|mapping(string:string)extra_headers,void|arrayextensions)- Description
Connect to the remote
endpointwith optional request headers specified inheaders. This method will send the actual HTTP request to switch protocols to the server and once a HTTP 101 response is returned, switch the connection to WebSockets and call theonopencallback.
- Method
create
Protocols.WebSocket.ConnectionProtocols.WebSocket.Connection(Stdio.File|SSL.Filef,void|int|array(object)extensions)- Description
Constructor for server mode
- Method
create
Protocols.WebSocket.ConnectionProtocols.WebSocket.Connection()- Description
Constructor for client mode connections
- Method
fail
voidfail(void|CLOSE_STATUSreason)- Description
Send a WebSocket connection close frame and terminate the connection. The default
reasonisCLOSE_ERROR.
- Method
http_read
protectedvoidhttp_read(mixed_id,stringdata,objecthp,array(object|extension_factory)extensions,mappingrext)- Description
Read HTTP response from remote endpoint and handle connection upgrade.
- Method
query_id
mixedquery_id()- Description
Return the
idas is passed as last argument to all callbacks.
- Method
set_id
voidset_id(mixedid)- Description
Set the
id. It will be passed as last argument to all callbacks.
- Method
websocket_in
protectedvoidwebsocket_in(mixed_id,stringdata)- Description
Read callback in non-buffer mode.
- Method
websocket_in
protectedvariantvoidwebsocket_in(mixed_id,Stdio.Bufferin)- Description
Read callback in buffer mode
- Variable
bufferedAmount
Class Protocols.WebSocket.Extension
- Description
Base class for extensions.
Class Protocols.WebSocket.Frame
- Variable
data
stringProtocols.WebSocket.Frame.data- Description
Data part of the frame. Valid for frames of type
FRAME_BINARY,FRAME_PINGandFRAME_PONG.
- Variable
fin
boolProtocols.WebSocket.Frame.fin- Description
Set to
1if this a final frame, i.e. the last frame of a fragmented message or a non-fragmentation frame.
- Variable
opcode
FRAMEProtocols.WebSocket.Frame.opcode- Description
Type of frame eg
FRAME_TEXTorFRAME_BINARY
- Variable
options
mapping(string:mixed)|zeroProtocols.WebSocket.Frame.options- Description
Generic options for this frame.
- Variable
reason
CLOSE_STATUSProtocols.WebSocket.Frame.reason- Description
Only exists for frames of type
FRAME_CLOSE.
- Variable
rsv
intProtocols.WebSocket.Frame.rsv- Description
Three reserved extension bits. Binary-and with
RSV1,RSV2orRSV3to single out the corresponding extension. TypicallyRSV1is set for compressed frames.
- Variable
text
stringProtocols.WebSocket.Frame.text- Description
Only exists for frames of type
FRAME_TEXT.
- Method
create
Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAMEopcode,void|string|CLOSE_STATUS)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_TEXT,stringtext,void|boolfin)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_BINARY,string(8bit)data,void|boolfin)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_CONTINUATION,string(8bit)data,void|boolfin)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_CLOSE,CLOSE_STATUSreason)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_PING,string(8bit)data)Protocols.WebSocket.FrameProtocols.WebSocket.Frame(FRAME_PONG,string(8bit)data)
- Variable
data
Class Protocols.WebSocket.Port
- Description
Creates a simple HTTP Server.
ws_cbwill be called for all incoming WebSocket connections. Its first argument are the list of protocols requested by the client and the second argument the correspondingRequestobject. The WebSocket connection handshake is completed by callingRequest.websocket_accept.http_cbwill be called for all other HTTP Requests or ifws_cbis zero.- See also
Protocols.HTTP.Server.Port
Class Protocols.WebSocket.Request
- Method
create
Protocols.WebSocket.RequestProtocols.WebSocket.Request(function(array(string),Request:void)cb)
- Method
websocket_accept
Connectionwebsocket_accept(void|stringprotocol,void|array(extension_factory)extensions,void|mappingextra_headers)- Description
Calling
websocket_acceptcompletes the WebSocket connection handshake. Theprotocolparameter should be either0or one of the protocols advertised by the client when initiating the WebSocket connection. Extensions can be specified using theextensionsparameter. Additional HTTP headers in the response can be specified using theextra_headersargument.The returned connection object is in state
Connection.OPEN.
- Method
create
Class Protocols.WebSocket.SSLPort
- Description
Opens a simple HTTPS Server which supports WebSocket connections.
- See also
Port,Protocols.HTTP.Server.SSLPort
Class Protocols.WebSocket.conformance_check
- Description
An extension which performs extra conformance checks on incoming WebSocket frames. It can be used either for testing or in situations where a very strict protocol interpretation is necessary.
Module Protocols.X
- Description
A Pike interface to the low-level X Window System.
This implements the on-wire protocol and some simple useful abstractions.
Module Protocols.X.Atom
- Description
Keep track of X11 atoms
Class Protocols.X.Atom.atom_manager
- Description
Keeps track of known atoms. Is inherited into Xlib.Display
Module Protocols.X.Auth
- Description
XAuthority related stuff.
- Method
read_auth_data
auth_fileread_auth_data()- Description
Read the authentication database specified by $XAUTHORITY.
Enum Protocols.X.Auth.AddressFamily
- Constant
FamilyInternet
Constant FamilyDECnet
Constant FamilyChaos
Constant FamilyInternet6
Constant FamilyAmoeba
Constant FamilyLocalHost
Constant FamilyKrb5Principal
Constant FamilyNetname
Constant FamilyLocal
Constant FamilyWild constantProtocols.X.Auth.FamilyInternetconstantProtocols.X.Auth.FamilyDECnetconstantProtocols.X.Auth.FamilyChaosconstantProtocols.X.Auth.FamilyInternet6constantProtocols.X.Auth.FamilyAmoebaconstantProtocols.X.Auth.FamilyLocalHostconstantProtocols.X.Auth.FamilyKrb5PrincipalconstantProtocols.X.Auth.FamilyNetnameconstantProtocols.X.Auth.FamilyLocalconstantProtocols.X.Auth.FamilyWild
- Constant
FamilyInternet
Class Protocols.X.Auth.auth_file
- Description
XAuthority key database.
- Variable
auth
mapping(int:mapping(string:mapping)) Protocols.X.Auth.auth_file.auth- Description
Mapping from address family to mapping from destination key (cf
make_key()) to authentication entry.Known address families:
0IPv4 address.
1DECNet address.
2Chaos net address.
6IPv6 address.
33Amoeba address.
252Localhost.
253Kerberos 5 Principal.
254Netname.
256Local connection (typically unix domain socket or loopback).
65535Wildcard.
- Method
create
Protocols.X.Auth.auth_fileProtocols.X.Auth.auth_file(string(8bit)s)- Parameter
s Raw Xauthority file data.
- Method
lookup_local
mappinglookup_local(stringname,intdisplay)- Description
Lookup authentication entry for the unix domain socket
name:display.
Module Protocols.X.Extensions
Class Protocols.X.Extensions.Extension
- Description
an abstract class used to provide features for implimenting X11 extensions. Provides no useful functionality on its own.
Class Protocols.X.Extensions.Shape
- Method
ShapeMask
voidShapeMask(objectwindow,intxo,intyo,stringkind,stringoperation,object|voidsource)
- Method
ShapeMask
Class Protocols.X.Extensions.XTEST
- Description
Provides support for the X11 XTEST extension.
- Method
XTestFakeInput
voidXTestFakeInput(stringevent_type,intdetail,intdelay,object|voidwindow,int|voidxloc,int|voidyloc)- Description
Send a synthetic event to an X server.
- Parameter
event_type Type of event to send. Possible values: KeyPress: 2, KeyRelease: 3, ButtonPress: 4, ButtonRelease: 5, MotionNotify: 6
- Parameter
detail Button (for Button events) or Keycode (for Key events) to send
- Parameter
delay Delay before the X server simulates event. 0 indicates zero delay.
- Parameter
window Window object that a motion event occurrs in. If no window is provided, the root window will be used.
- Parameter
xloc For motion events, this is the relative X distance or absolute X coordinates.
- Parameter
yloc For motion events, this is the relative Y distance or absolute Y coordinates.
- Method
XTestGrabControl
voidXTestGrabControl(intimpervious)- Description
Cause the executing client to become impervious to server grabs. That is, it can continue to execute requests even if another client grabs the server.
- Parameter
impervious A true (non zero) value causes the client to perform as described above. If false (zero), server returns to the normal state of being susceptible to server grabs.
Module Protocols.X.KeySyms
- Variable
alt_gr
Variable num_lock
Variable shift
Variable control
Variable caps_lock
Variable meta
Variable alt
Variable super
Variable hyper intProtocols.X.KeySyms.alt_grintProtocols.X.KeySyms.num_lockintProtocols.X.KeySyms.shiftintProtocols.X.KeySyms.controlintProtocols.X.KeySyms.caps_lockintProtocols.X.KeySyms.metaintProtocols.X.KeySyms.altintProtocols.X.KeySyms.superintProtocols.X.KeySyms.hyper
- Variable
alt_gr
Module Protocols.X.Requests
- Description
Varios X11 on-wire requests
Class Protocols.X.Requests.AllocColor
Class Protocols.X.Requests.Bell
Class Protocols.X.Requests.ChangeGC
Class Protocols.X.Requests.ChangeProperty
- Variable
mode
Variable window
Variable property
Variable type
Variable format
Variable data intProtocols.X.Requests.ChangeProperty.modeintProtocols.X.Requests.ChangeProperty.windowintProtocols.X.Requests.ChangeProperty.propertyintProtocols.X.Requests.ChangeProperty.typeintProtocols.X.Requests.ChangeProperty.formatstring|array(int) Protocols.X.Requests.ChangeProperty.data
- Variable
mode
Class Protocols.X.Requests.ChangeWindowAttributes
Class Protocols.X.Requests.ClearArea
- Variable
exposures
Variable window
Variable x
Variable y
Variable width
Variable height intProtocols.X.Requests.ClearArea.exposuresintProtocols.X.Requests.ClearArea.windowintProtocols.X.Requests.ClearArea.xintProtocols.X.Requests.ClearArea.yintProtocols.X.Requests.ClearArea.widthintProtocols.X.Requests.ClearArea.height
- Variable
exposures
Class Protocols.X.Requests.ConfigureWindow
Class Protocols.X.Requests.CopyArea
Class Protocols.X.Requests.CopyPlane
Class Protocols.X.Requests.CreateColormap
- Variable
cid
Variable alloc intProtocols.X.Requests.CreateColormap.cidintProtocols.X.Requests.CreateColormap.alloc
- Variable
cid
Class Protocols.X.Requests.CreateGC
Class Protocols.X.Requests.CreateGlyphCursor
- Variable
cid
Variable sourcefont
Variable maskfont
Variable sourcechar
Variable maskchar
Variable forered
Variable foregreen
Variable foreblue
Variable backred
Variable backgreen
Variable backblue intProtocols.X.Requests.CreateGlyphCursor.cidintProtocols.X.Requests.CreateGlyphCursor.sourcefontintProtocols.X.Requests.CreateGlyphCursor.maskfontintProtocols.X.Requests.CreateGlyphCursor.sourcecharintProtocols.X.Requests.CreateGlyphCursor.maskcharintProtocols.X.Requests.CreateGlyphCursor.foreredintProtocols.X.Requests.CreateGlyphCursor.foregreenintProtocols.X.Requests.CreateGlyphCursor.foreblueintProtocols.X.Requests.CreateGlyphCursor.backredintProtocols.X.Requests.CreateGlyphCursor.backgreenintProtocols.X.Requests.CreateGlyphCursor.backblue
- Variable
cid
Class Protocols.X.Requests.CreatePixmap
- Variable
pid
Variable drawable intProtocols.X.Requests.CreatePixmap.pidintProtocols.X.Requests.CreatePixmap.drawable
- Variable
pid
Class Protocols.X.Requests.CreateWindow
- Variable
x
Variable y
Variable width
Variable height
Variable borderWidth intProtocols.X.Requests.CreateWindow.xintProtocols.X.Requests.CreateWindow.yintProtocols.X.Requests.CreateWindow.widthintProtocols.X.Requests.CreateWindow.heightintProtocols.X.Requests.CreateWindow.borderWidth
- Variable
c_class
Variable visual intProtocols.X.Requests.CreateWindow.c_classintProtocols.X.Requests.CreateWindow.visual
- Variable
x
Class Protocols.X.Requests.DeleteProperty
Class Protocols.X.Requests.ExtensionRequest
- Description
Base class used by extensions
- Variable
type
Variable code
Variable data
Variable handle_reply
Variable handle_error intProtocols.X.Requests.ExtensionRequest.typeintProtocols.X.Requests.ExtensionRequest.codestringProtocols.X.Requests.ExtensionRequest.datafunction(:void) Protocols.X.Requests.ExtensionRequest.handle_replyfunction(:void) Protocols.X.Requests.ExtensionRequest.handle_error
Class Protocols.X.Requests.FillPoly
- Variable
drawable
Variable gc
Variable shape
Variable coordMode intProtocols.X.Requests.FillPoly.drawableintProtocols.X.Requests.FillPoly.gcintProtocols.X.Requests.FillPoly.shapeintProtocols.X.Requests.FillPoly.coordMode
- Variable
drawable
Class Protocols.X.Requests.FreeColors
Class Protocols.X.Requests.FreeRequest
Class Protocols.X.Requests.GetAtomName
Class Protocols.X.Requests.GetKeyboardMapping
Class Protocols.X.Requests.GetProperty
- Variable
delete
Variable window
Variable property
Variable type
Variable longOffset
Variable longLength intProtocols.X.Requests.GetProperty.deleteintProtocols.X.Requests.GetProperty.windowintProtocols.X.Requests.GetProperty.propertyintProtocols.X.Requests.GetProperty.typeintProtocols.X.Requests.GetProperty.longOffsetintProtocols.X.Requests.GetProperty.longLength
- Variable
delete
Class Protocols.X.Requests.GrabButton
- Variable
ownerEvents
Variable grabWindow
Variable eventMask
Variable pointerMode
Variable keyboardMode
Variable confineTo
Variable cursor
Variable button
Variable modifiers intProtocols.X.Requests.GrabButton.ownerEventsintProtocols.X.Requests.GrabButton.grabWindowintProtocols.X.Requests.GrabButton.eventMaskintProtocols.X.Requests.GrabButton.pointerModeintProtocols.X.Requests.GrabButton.keyboardModeintProtocols.X.Requests.GrabButton.confineTointProtocols.X.Requests.GrabButton.cursorintProtocols.X.Requests.GrabButton.buttonintProtocols.X.Requests.GrabButton.modifiers
- Variable
ownerEvents
Class Protocols.X.Requests.ImageText16
Class Protocols.X.Requests.ImageText8
Class Protocols.X.Requests.InternAtom
Class Protocols.X.Requests.ListProperties
Class Protocols.X.Requests.OpenFont
Class Protocols.X.Requests.PolyFillRectangle
- Variable
drawable
Variable gc intProtocols.X.Requests.PolyFillRectangle.drawableintProtocols.X.Requests.PolyFillRectangle.gc
- Variable
drawable
Class Protocols.X.Requests.PolyPoint
Class Protocols.X.Requests.PutImage
- Variable
depth
Variable width
Variable height
Variable dst_x
Variable dst_y
Variable left_pad
Variable format intProtocols.X.Requests.PutImage.depthintProtocols.X.Requests.PutImage.widthintProtocols.X.Requests.PutImage.heightintProtocols.X.Requests.PutImage.dst_xintProtocols.X.Requests.PutImage.dst_yintProtocols.X.Requests.PutImage.left_padintProtocols.X.Requests.PutImage.format
- Variable
depth
Class Protocols.X.Requests.QueryExtension
Class Protocols.X.Requests.QueryTextExtents
Module Protocols.X.Types
Class Protocols.X.Types.Colormap
- Variable
visual
Variable alloced objectProtocols.X.Types.Colormap.visualmappingProtocols.X.Types.Colormap.alloced
- Variable
visual
Class Protocols.X.Types.Drawable
- Method
PutImage
voidPutImage(objectgc,intdepth,inttx,intty,intwidth,intheight,stringdata,int|voidformat)
- Method
PutImage
Class Protocols.X.Types.Font
- Method
CreateGlyphCursor
objectCreateGlyphCursor(intsourcechar,array(int)|voidforeground,array(int)|voidbackground)
- Method
CreateGlyphCursor
Class Protocols.X.Types.GC
Class Protocols.X.Types.Point
Class Protocols.X.Types.Rectangle
- Variable
width
Variable height intProtocols.X.Types.Rectangle.widthintProtocols.X.Types.Rectangle.height
- Variable
width
Class Protocols.X.Types.RootWindow
- Variable
defaultColorMap
Variable whitePixel
Variable blackPixel
Variable pixWidth
Variable pixHeight
Variable mmWidth
Variable mmHeight
Variable minInstalledMaps
Variable maxInstalledMaps
Variable backingStore
Variable saveUnders
Variable rootDepth
Variable depths objectProtocols.X.Types.RootWindow.defaultColorMapintProtocols.X.Types.RootWindow.whitePixelintProtocols.X.Types.RootWindow.blackPixelintProtocols.X.Types.RootWindow.pixWidthintProtocols.X.Types.RootWindow.pixHeightintProtocols.X.Types.RootWindow.mmWidthintProtocols.X.Types.RootWindow.mmHeightintProtocols.X.Types.RootWindow.minInstalledMapsintProtocols.X.Types.RootWindow.maxInstalledMapsintProtocols.X.Types.RootWindow.backingStoreintProtocols.X.Types.RootWindow.saveUndersintProtocols.X.Types.RootWindow.rootDepthmappingProtocols.X.Types.RootWindow.depths
- Variable
defaultColorMap
Class Protocols.X.Types.Visual
- Variable
c_class
Variable bitsPerRGB
Variable colorMapEntries
Variable redMask
Variable greenMask
Variable blueMask intProtocols.X.Types.Visual.c_classintProtocols.X.Types.Visual.bitsPerRGBintProtocols.X.Types.Visual.colorMapEntriesintProtocols.X.Types.Visual.redMaskintProtocols.X.Types.Visual.greenMaskintProtocols.X.Types.Visual.blueMask
- Variable
c_class
Class Protocols.X.Types.Window
- Method
ChangeProperty
voidChangeProperty(objectproperty,objecttype,intformat,array(int)|stringdata)
- Method
ChangeProperty_req
objectChangeProperty_req(objectproperty,objecttype,intformat,array(int)|stringdata)
- Method
CreateSimpleWindow
objectCreateSimpleWindow(intx,inty,intwidth,intheight,intborder_width,intborder,intbackground)
- Method
CreateWindow
objectCreateWindow(intx,inty,intwidth,intheight,intborder_width,mapping|voidattributes,object|voidvisual,int|voidd,int|voidc_class)
- Method
CreateWindow_req
objectCreateWindow_req(intx,inty,intwidth,intheight,intborder_width,intdepth,object|zerovisual)
- Method
ShapeRectangles
voidShapeRectangles(stringkind,intxo,intyo,stringoperation,array(Rectangle)rectangles)
- Method
ChangeProperty
Class Protocols.X.Types.XResource
- Description
A resorce in the X-server Most will automatically free the resource in the server when all references is gone in your application
- Variable
display
Variable id
Variable autofree objectProtocols.X.Types.XResource.displayintProtocols.X.Types.XResource.idintProtocols.X.Types.XResource.autofree
Module Protocols.X.XImage
- Description
Handles Image.Image to XImage conversions.
The
XImageclass behaves more or less exactly like an Image.Image, but it keeps itself synchronized with the server if so needed.
- Method
MakeShapeMask
objectMakeShapeMask(objectin,objectalpha)- Description
Convert an alpha channel to a shaped-window extension mask
- Method
ShapedWindowImage
voidShapedWindowImage(objectin,objectcolor,object|voidalpha,int|voidcontour)- Description
Make the window
indisplay the image, with a mask shaped according to alpha, and optionally with a colored border aound the mask.
Class Protocols.X.XImage.Image_wrapper
- Description
Wrapper for Image.Image that keeps track of the modifications done.
Class Protocols.X.XImage.PixmapImage
- Description
A pixmap (much like XImage, but stored in the server)
Class Protocols.X.XImage.WindowImage
- Description
A version of XImage that redraws itself at need
Class Protocols.X.XImage.XImage
- Variable
depth
Variable bpp
Variable converter
Variable linepad
Variable swapbytes
Variable rmask
Variable gmask
Variable bmask intProtocols.X.XImage.XImage.depthintProtocols.X.XImage.XImage.bppfunction(:void) Protocols.X.XImage.XImage.converterintProtocols.X.XImage.XImage.linepadintProtocols.X.XImage.XImage.swapbytesintProtocols.X.XImage.XImage.rmaskintProtocols.X.XImage.XImage.gmaskintProtocols.X.XImage.XImage.bmask
- Variable
window
Variable root
Variable visual
Variable colormap
Variable ccol
Variable dgc objectProtocols.X.XImage.XImage.windowobjectProtocols.X.XImage.XImage.rootobjectProtocols.X.XImage.XImage.visualobjectProtocols.X.XImage.XImage.colormapImage.ColortableProtocols.X.XImage.XImage.ccolobjectProtocols.X.XImage.XImage.dgc
- Variable
offset_x
Variable offset_y intProtocols.X.XImage.XImage.offset_xintProtocols.X.XImage.XImage.offset_y
- Variable
depth
Module Protocols.X.XTools
- Description
Various tools that are higher level than raw X, but are lower level than widgets.
Class Protocols.X.XTools.Button
- Description
A simple button. Steals and processes mousebutton events Can be inherited and then expanded the button_pressed function
- Variable
pressed
Variable inside
Variable button intProtocols.X.XTools.Button.pressedintProtocols.X.XTools.Button.insideintProtocols.X.XTools.Button.button
Module Protocols.X.Xlib
- Description
Implementations of various X11 calls.
Class Protocols.X.Xlib.Display
- Description
The representation of a X display.
Keeps the connection to the X server and various other information needed to use X11.
- Variable
imageByteOrder
Variable bitmapBitOrder intProtocols.X.Xlib.Display.imageByteOrderintProtocols.X.Xlib.Display.bitmapBitOrder
- Variable
bitmapScanlineUnit
Variable bitmapScanlinePad intProtocols.X.Xlib.Display.bitmapScanlineUnitintProtocols.X.Xlib.Display.bitmapScanlinePad
- Variable
extensions
mapping(string:.Extensions.Extension) Protocols.X.Xlib.Display.extensions- Description
All extensions supported by the server and this module
- Variable
majorVersion
Variable minorVersion intProtocols.X.Xlib.Display.majorVersionintProtocols.X.Xlib.Display.minorVersion- Description
The protocol major and minor version reported by the server
- Variable
minKeyCode
Variable maxKeyCode intProtocols.X.Xlib.Display.minKeyCodeintProtocols.X.Xlib.Display.maxKeyCode
- Method
CreateGlyphCursor
objectCreateGlyphCursor(objectsourcefont,intsourcechar,object|voidmaskfont,int|voidmaskchar,array(int)|voidforeground,array(int)|voidbackground)
- Method
CreateGlyphCursor_req
objectCreateGlyphCursor_req(objectsourcefont,objectmaskfont,intsourcechar,intmaskchar,array(int)foreground,array(int)background)
- Method
open
intopen(string|voiddisplay)- Description
Connect to the specified display. The default is to use the value of the environment variable DISPLAY
Module Protocols.XMLRPC
- Description
This module implements most features of the XML-RPC standard (see http://xml-rpc.org/).
Translation rules for conversions from Pike datatypes to XML-RPC datatypes:
Pike
intis translated to XML-RPC <int>. Pikestringis translated to XML-RPC <string>. Pikefloatis translated to XML-RPC <double>. Pikemappingis translated to XML-RPC <struct>. Pikearrayis translated to XML-RPC <array>. PikeCalendarobject is translated to XML-RPC <dateTime.iso8601. PikeVal.falseandVal.trueis translated to XML-RPC <boolean>.Translation rules for conversions from XML-RPC datatypes to Pike datatypes:
XML-RPC <i4> and <int> are translated to Pike
int. XML-RPC <boolean> is translated to PikeVal.trueandVal.false. XML-RPC <string> and <base64> are translated to Pikestring. XML_RPC <double> is translated to Pikefloat. XML-RPC <struct> is translated to Pikemapping. XML-RPC <array> is translated to Pikearray. XML-RPC <dateTime.iso8601> is translated to PikeCalendarobject.- Note
The XML-RPC <dateTime.iso8601> datatype does not assume any time zone, but local time is always used in the conversion to
Calendarobjects.
- Method
decode_call
Calldecode_call(stringxml_input)- Description
Decodes a XML-RPC representation of a function call and returns a
Callobject.- See also
Call
- Method
decode_response
array|Faultdecode_response(stringxml_input,int|voidboolean)- Description
Decodes a XML-RPC representation of a response and returns an array containing response values, or a
Faultobject.- See also
Fault
- Method
encode_call
stringencode_call(stringmethod_name,arrayparams)- Description
Encodes a function call with the name
method_nameand the argumentsparamsand returns the XML-RPC string representation.
- Method
encode_response
stringencode_response(arrayparams)- Description
Encodes a response containing the multiple values in
paramsand returns the XML-RPC string representation.
- Method
encode_response_fault
stringencode_response_fault(intfault_code,stringfault_string)- Description
Encodes a response fault containing a
fault_codeand afault_stringand returns the XML-RPC string representation.
Class Protocols.XMLRPC.AsyncClient
- Description
This class implements an XML-RPC client that uses HTTP transport using non blocking sockets.
There is an optional boolean flag to get the new behavior of booleans being returned Val instead of ints.
- Example
void data_ok(mixed result) { write("result=%O\n", result); } void fail() { write("fail\n"); } int main(int argc, array argv) { object async_client = Protocols.XMLRPC.AsyncClient("http://www.oreillynet.com/meerkat/xml-rpc/server.php"); async_client["system.listMethods"](data_ok, fail); return -1;
Class Protocols.XMLRPC.Call
- Description
Represents a function call made to a XML-RPC server.
- See also
decode_call()
- Variable
method_name
intProtocols.XMLRPC.Call.method_name- Description
Represents <methodName> in the XML-RPC standard.
- Variable
params
arrayProtocols.XMLRPC.Call.params- Description
Represents <params> in the XML-RPC standard where all datatypes have been converted to equivalent or similar datatypes in Pike.
Class Protocols.XMLRPC.Client
- Description
This class implements an XML-RPC client that uses HTTP transport.
There is an optional boolean flag to get the new behavior of booleans being returned as Val instead of ints.
- Example
> Protocols.XMLRPC.Client client = Protocols.XMLRPC.Client("http://www.oreillynet.com/meerkat/xml-rpc/server.php"); Result: Protocols.XMLRPC.Client("http://www.oreillynet.com/meerkat/xml-rpc/server.php"); > client["system.listMethods"](); Result: ({ /* 1 element */ ({ /* 9 elements */ "meerkat.getChannels", "meerkat.getCategories", "meerkat.getCategoriesBySubstring", "meerkat.getChannelsByCategory", "meerkat.getChannelsBySubstring", "meerkat.getItems", "system.listMethods", "system.methodHelp", "system.methodSignature" }) })
- Variable
url
Variable boolean string|Standards.URIProtocols.XMLRPC.Client.urlint|voidProtocols.XMLRPC.Client.boolean
Class Protocols.XMLRPC.Fault
- Description
Represents a fault response which can be one of the return values from a XML-RPC function call.
- See also
decode_response()
- Variable
fault_code
intProtocols.XMLRPC.Fault.fault_code- Description
Represents faultCode in the XML-RPC standard.
- Variable
fault_string
intProtocols.XMLRPC.Fault.fault_string- Description
Represents faultString in the XML-RPC standard.