12. Protocols |
Module Protocols.HTTP |
string Protocols.HTTP.filename_to_type(string filename)
string Protocols.HTTP.extension_to_type(string extension)
Looks up the file extension in a table to return a suitable MIME type.
string Protocols.HTTP.http_date(int time)
Makes a time notification suitable for the HTTP protocol. @param 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
string Protocols.HTTP.http_decode_string(string what)
mapping(string:string|array(string)) Protocols.HTTP.http_decode_urlencoded_query(string query, void|mapping dest)
Decodes an URL-encoded query into a mapping.
Protocols.HTTP.Query Protocols.HTTP.get_url(string|Standards.URI url)
Protocols.HTTP.Query Protocols.HTTP.get_url(string|Standards.URI url, mapping query_variables)
Protocols.HTTP.Query Protocols.HTTP.get_url(string|Standards.URI url, mapping query_variables, mapping request_headers)
Protocols.HTTP.Query Protocols.HTTP.get_url(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Sends a HTTP GET request to the server in the URL and returns the created and initialized Query object. 0 is returned upon failure. If a query object having request_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.
Protocols.HTTP.Query Protocols.HTTP.put_url(string|Standards.URI url)
Protocols.HTTP.Query Protocols.HTTP.put_url(string|Standards.URI url, string file)
Protocols.HTTP.Query Protocols.HTTP.put_url(string|Standards.URI url, string file, mapping query_variables)
Protocols.HTTP.Query Protocols.HTTP.put_url(string|Standards.URI url, string file, mapping query_variables, mapping request_headers)
Protocols.HTTP.Query Protocols.HTTP.put_url(string|Standards.URI url, string file, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Sends a HTTP PUT request to the server in the URL and returns the created and initialized Query object. 0 is returned upon failure. If a query object having request_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.
Protocols.HTTP.Query Protocols.HTTP.delete_url(string|Standards.URI url)
Protocols.HTTP.Query Protocols.HTTP.delete_url(string|Standards.URI url, mapping query_variables)
Protocols.HTTP.Query Protocols.HTTP.delete_url(string|Standards.URI url, mapping query_variables, mapping request_headers)
Protocols.HTTP.Query Protocols.HTTP.delete_url(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Sends a HTTP DELETE request to the server in the URL and returns the created and initialized Query object. 0 is returned upon failure. If a query object having request_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.
array(string) Protocols.HTTP.get_url_nice(string|Standards.URI url, mapping query_variables)
array(string) Protocols.HTTP.get_url_nice(string|Standards.URI url, mapping query_variables, mapping request_headers)
array(string) Protocols.HTTP.get_url_nice(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
string Protocols.HTTP.get_url_data(string|Standards.URI url, mapping query_variables)
string Protocols.HTTP.get_url_data(string|Standards.URI url, mapping query_variables, mapping request_headers)
string Protocols.HTTP.get_url_data(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Returns an array of ({content_type,data}) and just the data string respective, after calling the requested server for the information. 0 is returned upon failure.
array(string) Protocols.HTTP.post_url_nice(string|Standards.URI url, mapping query_variables)
array(string) Protocols.HTTP.post_url_nice(string|Standards.URI url, mapping query_variables, mapping request_headers)
array(string) Protocols.HTTP.post_url_nice(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
string Protocols.HTTP.post_url_data(string|Standards.URI url, mapping query_variables)
string Protocols.HTTP.post_url_data(string|Standards.URI url, mapping query_variables, mapping request_headers)
string Protocols.HTTP.post_url_data(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Protocols.HTTP.Query Protocols.HTTP.post_url(string|Standards.URI url, mapping query_variables)
Protocols.HTTP.Query Protocols.HTTP.post_url(string|Standards.URI url, mapping query_variables, mapping request_headers)
Protocols.HTTP.Query Protocols.HTTP.post_url(string|Standards.URI url, mapping query_variables, mapping request_headers, Protocols.HTTP.Query query)
Similar to the get_url() class of functions, except that the query variables is sent as a POST request instead of as a GET.
string Protocols.HTTP.unentity(string s)
Helper function for replacing HTML entities with the corresponding iso-8859-1 characters.
All characters aren't replaced, only those with corresponding iso-8859-1 characters.
string Protocols.HTTP.http_encode_query(mapping(string:int|string) variables)
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"]) );
Result: "%26amp%3b=%26&%27%3d%22=%00%00%00"
string Protocols.HTTP.http_encode_string(string in)
This protects all odd - see http_encode_query() - characters for transfer in HTTP.
Do not use this function to protect URLs, since it will protect URL characters like '/' and '?'.
The string to encode
The HTTP encoded string
string Protocols.HTTP.http_encode_cookie(string f)
Encode the specified string in as to the HTTP cookie standard.
The string to encode.
The HTTP cookie encoded string.
CLASS Protocols.HTTP.HeaderParser |
Fast HTTP header parser.
CLASS Protocols.HTTP.Query |
Open and execute an HTTP query.
int errno
Errno copied from the connection.
int ok
Tells if the connection is successfull.
mapping headers
Headers as a mapping. All header names are in lower case, for convinience.
string protocol
Protocol string, ie "HTTP/1.0".
int status
string status_desc
Status number and description (eg 200 and "ok").
mapping hostname_cache
Set this to a global mapping if you want to use a cache, prior of calling *request().
Protocols.HTTP.Query set_callbacks(function request_ok, function request_fail, mixed ... extra)
Protocols.HTTP.Query async_request(string server, int port, string query)
Protocols.HTTP.Query async_request(string server, int port, string query, mapping headers, string|void data)
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 the called object
Protocols.HTTP.Query thread_request(string server, int port, string query)
Protocols.HTTP.Query thread_request(string server, int port, string query, mapping headers, void|string data)
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.
query is the first line sent to the HTTP server; for instance "GET /index.html HTTP/1.1".
headers will be encoded and sent after the first line, and data will be sent after the headers.
Returns the called object.
int `()()
Wait for connection to complete.
Returns 1 on successfull connection, 0 on failure.
string data(int|void max_length)
Gives back the data as a string.
int downloaded_bytes()
Gives back the number of downloaded bytes.
int total_bytes()
Gives back the size of a file if a content-length header is present and parsed at the time of evaluation. Otherwise returns -1.
array cast("array")
Gives back ({mapping headers, string data,
string protocol, int status, string status_desc});
mapping cast("mapping")
Gives back
headers |
(["protocol":protocol,
"status":status number,
"status_desc":status description,
"data":data]);
string cast("string")
Gives back the answer as a string.
Protocols.HTTP.Query.PseudoFile file()
Protocols.HTTP.Query.PseudoFile file(mapping newheaders, void|mapping removeheaders)
Gives back a pseudo-file object, with the methods read() and close(). This could be used to copy the file to disc at a proper tempo.
newheaders , removeheaders is applied as:
Make sure all new and remove-header indices are lower case.(oldheaders|newheaders))-removeheaders
datafile()
Protocols.HTTP.Query.PseudoFile datafile()
Gives back a pseudo-file object, with the methods read() and close(). This could be used to copy the file to disc at a proper tempo.
datafile() doesn't give the complete request, just the data.
file()
void async_fetch(function callback, mixed ... extra)
Fetch all data in background.
timed_async_fetch() , async_request() , set_callbacks()
void timed_async_fetch(function(object:void) ok_callback, function(object:void) fail_callback, mixed ... extra)
Like async_fetch() , except with a timeout and a corresponding fail callback function
async_fetch() , async_request() , set_callbacks()
Module Protocols.HTTP.Server |
CLASS Protocols.HTTP.Server.Port |
The simplest server possible. Binds a port and calls a callback with Server.Request objects.
void Protocols.HTTP.Server.Port(function(, Request:void) callback)
void Protocols.HTTP.Server.Port(function(, Request:void) callback, int portno, void|string interface)
void close()
Closes the HTTP port.
CLASS Protocols.HTTP.Server.Request |
string raw
raw unparsed full request (headers and body)
string body_raw
raw unparsed body of the request (raw minus request line and headers)
string request_raw
full request line (request_type + full_query + protocol )
string request_type
HTTP request method, eg. POST, GET, etc.
string full_query
full resource requested, including attached GET query
string not_query
resource requested minus any attached query
string query
query portion of requested resource, starting after the first "?"
string protocol
request protocol and version, eg. HTTP/1.0
mapping(string:string|array(string)) request_headers
all headers included as part of the HTTP request, ie content-type.
mapping(string:string|array(string)) variables
all variables included as part of a GET or POST request.
mapping(string:string) cookies
cookies set by client
mapping misc
external use only
void response_and_finish(mapping m, function|void _log_cb)
return a properly formatted response to the HTTP client
Contains elements for generating a response to the client.
|
CLASS Protocols.HTTP.Server.SSLPort |
The simplest SSL server possible. Binds a port and calls a callback with Request objects.
void Protocols.HTTP.Server.SSLPort(function(Request:void) _callback, void|int _portno, void|string _interface, void|string key, void|string certificate)
Create a HTTPS (HTTP over SSL) server.
The function run when a request is received. takes one argument of type Request .
The port number to bind to, defaults to 443.
The interface address to bind to.
An optional SSL secret key, provided in binary format, such as that created by Standards.PKCS.RSA.private_key() .
An optional SSL certificate, provided in binary format.
void close()
Closes the HTTP port.
void new_connection()
The port accept callback
CLASS Protocols.HTTP.Server.SSLPort.MySSLPort |
inherit SSL.sslport : sslport
void set_default_keycert()
void set_key(string skey)
void set_certificate(string certificate)
Module SSL |
CLASS SSL.alert |
Alert package.
inherit "packet" : packet
void SSL.alert(int level, int description, string|void message, mixed|void trace)
CLASS SSL.connection |
SSL packet layer. SSL.connection inherits SSL.handshake, and in addition to the state in the handshake super class, it contains the current read and write states, packet queues. This object is responsible for receiving and sending packets, processing handshake packets, and providing a clear text packages for some application.
inherit "constants"
inherit "handshake"
inherit Queue : alert
inherit Queue : urgent
inherit Queue : application
void set_alert_callback(function(object:void) callback)
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.
object recv_packet(string data)
Low-level receive handler. Returns a packet, an alert, or zero if more data is needed to get a complete packet.
void send_packet(object packet, int|void priority)
Queues a packet for write. Handshake and and change cipher must use the same priority, so must application data and close_notifies.
string|int to_write()
Extracts data from the packet queues. Returns a string of data to be written, "" 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.
void send_close()
Initiate close.
string|int got_data(string|int s)
Main receive handler. Returns a string of received application data, or 1 if a close was received, or -1 if an error occured.
This function is intended to be called from an i/o read callback.
CLASS SSL.cipher |
Encryption and MAC algorithms used in SSL.
inherit "constants"
CLASS SSL.constants |
Protocol constants
CLASS SSL.context |
Keeps the state that is shared by all SSL-connections for one server (or one port). It includes policy configuration, a server certificate, the server's private key(s), etc. It also includes the session cache.
inherit "constants"
object rsa
The server's private key
object long_rsa
object short_rsa
Temporary, non-certified, private keys, used with a server_key_exchange message. The rules are as follows:
If the negotiated cipher_suite has the "exportable" property, and short_rsa is not zero, send a server_key_exchange message with the (public part of) the short_rsa key.
If the negotiated cipher_suite does not have the exportable property, and long_rsa is not zero, send a server_key_exchange message with the (public part of) the long_rsa key.
Otherwise, dont send any server_key_exchange message.
function(int:string) random
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.
array(string) certificates
The server's certificate, or a chain of X509.v3 certificates, with the server's certificate first and root certificate last.
array(int) preferred_auth_methods
For client authentication. Used only if auth_level is AUTH_ask or AUTH_require.
array(int) preferred_suites
Cipher suites we want the server to support, best first.
array(int) preferred_compressors
Always ({ COMPRESSION_null })
int use_cache
Non-zero to enable cahing of sessions
int session_lifetime
Sessions are removed from the cache when they are older than this limit (in seconds). Sessions are also removed from the cache if a connection using the session dies unexpectedly.
object lookup_session(string id)
Lookup a session identifier in the cache. Returns the corresponding session, or zero if it is not found or caching is disabled.
object new_session()
Create a new session.
void record_session(object s)
Add a session to the cache (if caching is enabled).
void purge_session(object s)
Remove a session from the cache.
CLASS SSL.handshake |
SSL.handshake keeps the state relevant for SSL handshaking. This includes a pointer to a context object (which doesn't change), various buffers, a pointer to a session object (reuse or created as appropriate), and pending read and write states being negotiated.
Each connection will have two sets or read and write state: 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.
inherit "cipher"
int auth_level
Policy for client authentication. One of AUTHLEVEL_none, AUTHLEVEL_ask and AUTHLEVEL_require.
array(string) authorities
Array of authorities that are accepted for client certificates. The client will only send certificates that are signed by any of these authorities. The string is the DER-encoded issuer.
string client_random
string server_random
Random cookies, sent and received with the hello-messages.
int(-1..1) handle_handshake(int type, string data, string raw)
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 hadshake is in progress, 1 if handshake is finished, and -1 if a fatal error occured. It uses the send_packet() function to trasnmit packets.
CLASS SSL.https |
Dummy HTTPS server
inherit "sslport"
CLASS SSL.packet |
SSL Record Layer. Handle formatting and parsing of packets.
inherit "constants"
CLASS SSL.session |
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.
inherit "cipher" : cipher
string identity
Identifies the session to the server
int compression_algorithm
Always COMPRESSION_null.
int cipher_suite
Constant defining a choice of keyexchenge, encryption and mac algorithm.
object cipher_spec
Information about the encryption method derived from the cipher_suite.
int ke_method
Key exchange method, also derived from the cipher_suite.
string master_secret
48 byte secret shared between the client and the server. Used for deriving the actual keys.
void set_cipher_suite(int suite, int version)
void set_compression_method(int compr)
array new_server_states(string client_random, string server_random, array(int) version)
Computes a new set of encryption stetes, derived from the client_random, server_random and master_secret strings.
|
array new_client_states(string client_random, string server_random, array(int) version)
Computes a new set of encryption stetes, derived from the client_random, server_random and master_secret strings.
|
CLASS SSL.sslfile |
Interface similar to Stdio.File.
inherit "connection" : connection
CLASS SSL.sslport |
Interface similar to Stdio.Port.
inherit Stdio.Port : socket
inherit "context"
inherit ADT.Queue : accept_queue
CLASS SSL.state |
A connection switches from one set of state objects to another, one or more times during its lifetime. Each state object handles a one-way stream of packets, and operates in either decryption or encryption mode.
inherit "constants"
object session
Information about the used algorithms.
object mac
Message Authentication Code
object crypt
Encryption or decryption object.
Gmp.mpz|int seq_num
64-bit sequence number.
object decrypt_packet(object packet, int version)
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.
object encrypt_packet(object packet, int version)
Encrypts a packet (including deflating and MAC-generation).
Module Protocols.LysKOM |
CLASS Protocols.LysKOM.Connection |
This class contains nice abstraction 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.
mixed XXX(mixed ... args)
object async_XXX(mixed ... args)
object async_cb_XXX(function callback, mixed ... args)
Do a call to the server. This really clones a Protocols.LysKOM.Request object, and initialises 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 method 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 initialised Protocols.LysKOM.Request object.
int protocol_level
string session_software
string software_version
Description of the connected server.
void Protocols.LysKOM.Connection(string server)
void Protocols.LysKOM.Connection(string server, mapping options)
The options argument is a mapping with the following members:
|
CLASS Protocols.LysKOM.Session |
object user
This variable contains the Protocols.LysKOM.Session.Person that is logged in.
void Protocols.LysKOM.Session(string server)
void Protocols.LysKOM.Session(string server, mapping options)
Initializes the session object, and opens a connection to that server.
options is a mapping of options:
|
Connection
Text text(int no)
Returns the text no .
Person person(int no)
Returns the person no .
Conference conference(int no)
Returns conference number no .
array(ProtocolTypes.ConfZInfo) try_complete_person(string orig)
Runs a LysKOM completion on the given string, returning an array of confzinfos of the match.
object login(int user_no, string password)
object login(int user_no, string password, int invisible)
Performs a login. Throws a lyskom error if unsuccessful.
The session object logged in.
object create_person(string name, string password)
Create a person, which will be logged in. returns the new person object
object logout()
Logouts from the server. returns the called object
object create_text(string subject, string body, mapping options)
object create_text(string subject, string body, mapping options, function callback, mixed ... extra)
Creates a new text.
if callback is given, the function will be called when the text has been created, with the text as first argument. Otherwise, the new text is returned.
options is a mapping that may contain:
|
The items above marked with '*' are only available on protocol 10 servers. A LysKOM error will be thrown if the call fails.
Conference.create_text() , Text.comment() , Text.footnote()
object|void send_message(string textstring, mapping options)
Sends a message.
options is a mapping that may contain:
|
void register_async_message_callback(function(int:void) cb)
CLASS Protocols.LysKOM.Session.AuxItemInput |
Undocumented
inherit ProtocolTypes.AuxItemInput : AuxItemInput
CLASS Protocols.LysKOM.Session.AuxItems |
Undocumented
CLASS Protocols.LysKOM.Session.Text |
All variables in this class is read only.
Undocumented
int no
The text number, as spicified to create .
object err
Undocumented
void Protocols.LysKOM.Session.Text(string textnumber)
Initializes a Text object.
void mark_as_read()
Undocumented.
mixed prefetch_text
mixed prefetch_stat
mixed lines
mixed characters
mixed clear_stat
mixed aux_items
Undocumented
string text
The actual text (or body if you wish).
string subject
The message subject.
string author
The author of the text.
mixed misc
Misc info, including what conferences the message is posted to.
Needs a more complete description.
int marks
The number of marks on this text.
mixed creation_time
The time the text was created on the server.
CLASS Protocols.LysKOM.Session.Membership |
All variables in this class is read only.
object last_time_read
int(0..255) priority
int last_text_read
array(int) read_texts
object added_at
multiset(string) type
int position
object conf
int number_unread()
void query_read_texts()
array(object) unread_texts()
CLASS Protocols.LysKOM.Session.Person |
int no
void Protocols.LysKOM.Session.Person(int no)
mixed prefetch_stat
mixed prefetch_conf
mixed prefetch_membership
Undocumented
object error
Text user_area
mixed username
mixed privileges
mixed flags
mixed last_login
mixed total_time_present
mixed sessions
mixed created_lines
mixed created_bytes
mixed read_texts
mixed no_of_text_fetches
mixed created_persons
mixed created_confs
mixed first_created_local_no
mixed no_of_created_texts
mixed no_of_marks
mixed no_of_confs
mixed unread
int(0..0) clear_membership
mixed membership
Undocumented
CLASS Protocols.LysKOM.Session.Conference |
void Protocols.LysKOM.Session.Conference(int no)
Module Protocols.LysKOM.Request |
This module contains nice abstraction 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 |
This is the main request class. All lyskom request classes inherit this class.
void async(mixed ... args)
mixed sync(mixed ... args)
Initialise an asynchronous or a synchronous call, the latter is also evaluating the result. This calls indata() in itself, to get the correct arguments to the lyskom protocol call.
void _async(int call, mixed_data)
mixed _sync(int call, mixed_data)
Initialise an asynchronous or a synchronous call, the latter is also evaluating the result. These are called by async and sync respectively.
mixed _reply(object|array what)
mixed reply(object|array what)
_reply() is called as callback to evaluate the result, and calls reply() in itself to do the real work.
mixed `()()
Wait for the call to finish.
int(0..1) ok
Tells if the call has executed ok
object error
How the call failed.
The call has completed if
.(ok||error)
Module Protocols.DNS |
Domain Name System RFC 1035
constant Protocols.DNS.C_IN
Class Internet
constant Protocols.DNS.C_CH
Class CHAOS
constant Protocols.DNS.C_HS
Class Hesiod
constant Protocols.DNS.C_ANY
Class ANY
constant Protocols.DNS.T_A
Type - host address
constant Protocols.DNS.T_NS
Type - authoritative name server
constant Protocols.DNS.T_MD
Type - mail destination (Obsolete - use MX)
constant Protocols.DNS.T_MF
Type - mail forwarder (Obsolete - use MX)
constant Protocols.DNS.T_CNAME
Type - canonical name for an alias
constant Protocols.DNS.T_SOA
Type - start of a zone of authority
constant Protocols.DNS.T_MB
Type - mailbox domain name (EXPERIMENTAL)
constant Protocols.DNS.T_MG
Type - mail group member (EXPERIMENTAL)
constant Protocols.DNS.T_MR
Type - mail rename domain name (EXPERIMENTAL)
constant Protocols.DNS.T_NULL
Type - null RR (EXPERIMENTAL)
constant Protocols.DNS.T_WKS
Type - well known service description
constant Protocols.DNS.T_PTR
Type - domain name pointer
constant Protocols.DNS.T_HINFO
Type - host information
constant Protocols.DNS.T_MINFO
Type - mailbox or mail list information
constant Protocols.DNS.T_MX
Type - mail exchange
constant Protocols.DNS.T_TXT
Type - text strings
constant Protocols.DNS.T_AAAA
Type - IPv6 address record (RFC 1886, deprecated)
constant Protocols.DNS.T_SRV
Type - Service location record (RFC 2782)
constant Protocols.DNS.T_A6
Type - IPv6 address record (RFC 2874, incomplete support)
CLASS Protocols.DNS.protocol |
Low level DNS protocol
string mkquery(string|mapping dnameorquery, int|void cl, int|void type)
create a DNS query PDU
record class such as Protocols.DNS.C_IN
query type such Protocols.DNS.T_A
data suitable for use with Protocols.DNS.client.do_sync_query
// generate a query PDU for a address lookup on the hostname pike.ida.liu.se string q=Protocols.DNS.protocol()->mkquery("pike.ida.liu.se", Protocols.DNS.C_IN, Protocols.DNS.T_A);
CLASS Protocols.DNS.client |
Synchronous DNS client.
inherit protocol : protocol
void Protocols.DNS.client()
void Protocols.DNS.client(void|string|array server, void|int|array domain)
mapping do_sync_query(string s)
perform a syncronous query
result of Protocols.DNS.protocol.mkquery
mapping containing query result or 0 on failure/timeout
// perform a hostname lookup, results stored in r->an object d=Protocols.DNS.client(); mapping r=d->do_sync_query(d->mkquery("pike.ida.liu.se", C_IN, T_A));
array gethostbyname(string hostname)
Queries the host name from the default or given DNS server. The result is an array with three elements,
An array with the requested information about the specified host.
|
array getsrvbyname(string service, string protocol, string|void name)
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:
An array with the requested information about the specified service.
|
array gethostbyaddr(string hostip)
Queries the host name or ip from the default or given DNS server. The result is an array with three elements,
The requested data about the specified host.
|
string get_primary_mx(string hostname)
Queries the primary mx for the host.
Returns the hostname of the primary mail exchanger.
Module Protocols |
Module Protocols.LDAP |
CLASS Protocols.LDAP.client |
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.
inherit .protocol : protocol
mapping info
Several information about code itself and about active connection too
void Protocols.LDAP.client()
void Protocols.LDAP.client(string url)
void Protocols.LDAP.client(string url, object context)
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.
LDAP server URL in form "ldap://hostname/basedn?attrlist?scope?ext"
TLS context of connection
LDAP.client.bind , LDAP.client.search
int bind()
int bind(string dn, string password)
int bind(string dn, string password, int version)
Authenticates connection to the direcory.
First form uses default value previously entered in create.
Second form uses value from parameters:
The distinguished name (DN) of an entry aginst which will be made authentication.
Password used for authentication.
Third form allows specify the version of LDAP protocol used by connection to the LDAP server.
Only 2 or 3 can be entered.
Returns 1 on success, 0 otherwise.
Only simple authentication type is implemented. So be warned clear text passwords are sent to the directory server.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
int unbind()
Unbinds from the directory and close the connection.
int delete(string dn)
Deletes entry from the LDAP server.
The distinguished name of deleted entry.
Returns 1 on success, 0 otherwise.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
int compare(string dn, array(string) aval)
Compares given attribute value with one in the directory.
The distinguished name of compared entry.
The mapping of compared attributes and theirs values.
Returns 1 on success, 0 otherwise.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
int add(string dn, mapping(string:array(string)) attrs)
The Add Operation allows a client to request the addition of an entry into the directory
The Distinguished Name of the entry to be added.
The mapping of attributes and their values that make up the content of the entry being added.
Returns 1 on success, 0 otherwise.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
object|int search(string|void filter, array(string)|void attrs, int|void attrsonly)
Search LDAP directory.
Search filter used when searching directory objects.
The array of attribute names which will be returned by server. for every entry.
The flag causes server return only attribute name but not the attribute values.
Returns object LDAP.client.result on success, 0 otherwise.
For syntax of search filter see at RFC 1960 (http://community.roxen.com/developers/idocs/rfc/rfc1960.html).
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
LDAP.client.result , LDAP.client.result.fetch
string set_basedn(string base_dn)
base DN for search
int set_scope(int|string scope)
Sets value of scope for search operation.
Value can be integer or its corresponding string value. 0: base, 1: one, 2: sub
int set_option(int opttype, int value)
LDAP_OPT_xxx
new value for option
int get_option(int opttype)
LDAP_OPT_xxx
int modifydn(string dn, string newrdn, int deleteoldrdn, string|void newsuperior)
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.
DN of source object
RDN of destination
The parameter controls whether the old RDN attribute values are to be retained as attributes of the entry, or deleted from the entry.
If present, this is the Distinguished Name of the entry which becomes the immediate superior of the existing entry.
Returns 1 on success, 0 otherwise.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
int modify(string dn, mapping(string:array(mixed)) attropval)
The Modify Operation allows a client to request that a modification of an entry be performed on its behalf by a server.
The distinguished name of modified entry.
The mapping of attributes with requested operation and attribute's values.
attropval=([ attribute: ({operation, value1, value2, ...}) ])
where operation is one of the following: 0 (LDAP_OPERATION_ADD) - add values listed to the given attribute, creating the attribute if necessary 1 (LDAP_OPERATION_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 2 (LDAP_OPERATION_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
Returns 1 on uccess, 0 otherwise.
The API change: the returning code was changed in Pike 7.3+ to follow his logic better.
array|int get_referrals()
Gets referrals.
Returns array of referrals or 0.
mapping|int parse_url(string ldapuri)
LDAP URL
CLASS Protocols.LDAP.client.result |
Contains the result of a LDAP search.
LDAP.client.search , LDAP.client.result.fetch
object|int Protocols.LDAP.client.result(array rawres, int|void stuff)
You can't create instances of this object yourself. The only way to create it is via a search of a LDAP server.
int error_number()
Returns error number of search result.
LDAP.client.result.error_string
string error_string()
Returns error description of search result.
LDAP.client.result.error_number
int num_entries()
Returns the number of entries.
LDAP.client.result.count_entries
int count_entries()
Returns the number of entries from current cursor possition till end of the list.
LDAP.client.result.first , LDAP.client.result.next
int|mapping(string:array(string)) fetch(int|void idx)
Returns a mapping with an entry for each attribute. Each entry is an array of values of the attribute.
Optional argument can be used for direct access to the entry other then currently pointed by cursor.
string get_dn()
Returns distinguished name (DN) of the current entry in the result list. Notice that this is the same as fetch()->dn[0].
void first()
Initialized the result cursor to the first entry in the result list.
LDAP.client.result.next
int next()
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.
LDAP.client.result.next
CLASS Protocols.LDAP.protocol |
inherit Stdio.File : ldap
int error_number()
Returns error number of last transaction.
LDAP.protocol.error_string
string error_string()
Returns error description of search result.
LDAP.protocol.error_number
Module Protocols.SNMP |
SNMPv1 and v2c
CLASS Protocols.SNMP.protocol |
SNMP protocol implementation for Pike
RFCs:
implemented (yet): 1155-7 : v1
1901-4 : v2/community (Bulk ops aren't implemented!)
planned: 2742 : agentX
2570 : v3 description
inherit Stdio.UDP : snmp
int snmp_version
SNMP version
currently version 1 and 2 are supported.
string snmp_community
SNMP community string
should be set to the appropriate SNMP community before sending a request.
Set to "public" by default.
void Protocols.SNMP.protocol(int|void rem_port, string|void rem_addr, int|void loc_port, string|void loc_addr)
create a new SNMP protocol object
remote address and UDP port (optional)
local address and UDP port (optional)
mapping readmsg()
return the whole SNMP message in raw format
mapping decode_asn1_msg(mapping rawd)
decode ASN1 data, if garbaged ignore it
void to_pool(mapping rawd)
decode raw pdu message and place in message pool
mapping readmsg_from_pool(int msgid)
read decoded message from pool
int get_request(array(string) varlist, string|void rem_addr, int|void rem_port)
GetRequest-PDU call
an array of OIDs to GET
remote address an UDP port to send request to (optional)
request ID
int get_response(mapping varlist, mapping origdata, int|void errcode, int|void erridx)
GetResponse-PDU call
a mapping containing data to return
|
original received decoded pdu that this response corresponds to
error code
error index
request ID
int get_nextrequest(array(string) varlist, string|void rem_addr, int|void rem_port)
GetNextRequest-PDU call
an array of OIDs to GET
remote address an UDP port to send request to (optional)
request ID
int set_request(mapping varlist, string|void rem_addr, int|void rem_port)
SetRequest-PDU call
a mapping of OIDs to SET
|
remote address an UDP port to send request to (optional)
request ID
// 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");
int trap(mapping varlist, string oid, int type, int spectype, int ticks, string|void locip, string|void remaddr, int|void remport)
send an SNMP-v1 trap
a mapping of OIDs to include in trap
|
generic trap-type
specific trap-type
uptime
originating ip address of the trap
address and UDP to send trap to
request id
CLASS Protocols.SNMP.agent |
A simple SNMP agent with support for SNMP Get requests
inherit "protocol"
void Protocols.SNMP.agent(int|void port, string|void addr)
create a new instance of the agent
the port number to listen for requests on
the address to bind to for listening
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.
void set_threaded()
Run the agent event loop in a thread, if available.
void set_managers_only(int yesno)
enable manager access limits
1 to allow only managers to submit requests 0 to allow any host to submit requests
default setting allows all requests from all hosts
void set_get_communities(array communities)
set the valid community strings for Get requests
an array of valid Get communities
send an empty array to disable Get requests
void set_set_communities(array communities)
set the valid community strings for Set requests
an array of valid Set communities
send an empty array to disable Set requests
void set_managers(array managers)
set the valid manager list for requests
an array of valid management hosts
send an empty array to disable all requests
void set_set_oid_callback(string oid, function cb)
set the Set request callback function for an Object Identifier
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.
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_TOOBIG and the second is the error-index, if any.
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.
int clear_set_oid_callback(string oid)
clear the Set callback function for an Object Identifier
the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler.
1 if the callback existed, 0 otherwise
void|function get_set_oid_callback(string oid)
get the Set request callback function for an Object Identifier
the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler
the function associated with oid, if any
void set_get_oid_callback(string oid, function cb)
set the Get request callback function for an Object Identifier
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.
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 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_TOOBIG and the second is the error-index, if any.
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.
int clear_get_oid_callback(string oid)
clear the Get callback function for an Object Identifier
the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler.
1 if the callback existed, 0 otherwise
void|function get_get_oid_callback(string oid)
get the Get request callback function for an Object Identifier
the string object identifier, such as 1.3.6.1.4.1.132.2 or an asterisk (*) to indicate the default handler
the function associated with oid, if any
Module Protocols.X |
Module Protocols.X.Extensions |
CLASS Protocols.X.Extensions.extension |
an abstract class used to provide features for implimenting X11 extensions. Provides no useful functionality on its own.
int init(object d)
initialize the extension.
An object of type Protocols.X.Xlib.Display
CLASS Protocols.X.Extensions.XTEST |
Provides support for the X11 XTEST extension.
inherit extension : extension
void Protocols.X.Extensions.XTEST()
Create object.
int init(object display)
Initialize the XTEST extension. Returns 1 if successful.
Protocols.X.Display object
void XTestFakeInput(string event_type, int detail, int delay, object|void window, int|void xloc, int|void yloc)
Send a synthetic event to an X server.
Type of event to send. Possible values: KeyPress: 2, KeyRelease: 3, ButtonPress: 4, ButtonRelease: 5, MotionNotify: 6
Button (for Button events) or Keycode (for Key events) to send
Delay before the X server simulates event. 0 indicates zero delay.
Window object that a motion event occurrs in. If no window is provided, the root window will be used.
For motion events, this is the relative X distance or absolute X coordinates.
For motion events, this is the relative Y distance or absolute Y coordinates.
void XTestGrabControl(int impervious)
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.
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.XMLRPC |
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
is translated to XML-RPC <int>.
Pike int
is translated to XML-RPC <string>.
Pike string
is translated to XML-RPC <double>.
Pike float
is translated to XML-RPC <struct>.
Pike mapping
is translated to XML-RPC <array>.array
Translation rules for conversions from XML-RPC datatypes to Pike datatypes:
XML-RPC <i4>, <int> and <boolean> are
translated to Pike
.
XML-RPC <string> and <base64> are translated to
Pike int
.
XML_RPC <double> is translated to Pike string
.
XML-RPC <struct> is translated to Pike float
.
XML-RPC <array> is translated to Pike mapping
.
XML-RPC <dateTime.iso8601> is translated to Pike Calendar object.array
The XML-RPC <dateTime.iso8601> datatype is currently only partially implemented. It is decoded but cannot be encoded. Also, the code here does not assume any particular timezone (which is correct according to the specification). The Calendar module, however, seems to assume localtime.
Call Protocols.XMLRPC.decode_call(string xml_input)
Decodes a XML-RPC representation of a function call and returns a Call object.
Call
array|Fault Protocols.XMLRPC.decode_response(string xml_input)
Decodes a XML-RPC representation of a response and returns an array containing response values, or a Fault object.
Fault
string Protocols.XMLRPC.encode_call(string method_name, array params)
Encodes a function call with the name method_name and the arguments params and returns the XML-RPC string representation.
string Protocols.XMLRPC.encode_response(array params)
Encodes a response containing the multiple values in params and returns the XML-RPC string representation.
string Protocols.XMLRPC.encode_response_fault(int fault_code, string fault_string)
Encodes a response fault containing a fault_code and a fault_string and returns the XML-RPC string representation.
CLASS Protocols.XMLRPC.Call |
Represents a function call made to a XML-RPC server.
decode_call()
int method_name
Represents <methodName> in the XML-RPC standard.
array params
Represents <params> in the XML-RPC standard where all datatypes have been converted to equivalent or similar datatypes in Pike.
CLASS Protocols.XMLRPC.Fault |
Represents a fault response which can be one of the return values from a XML-RPC function call.
decode_response()
int fault_code
Represents faultCode in the XML-RPC standard.
int fault_string
Represents faultString in the XML-RPC standard.
CLASS Protocols.XMLRPC.Client |
This class implements an XML-RPC client that uses HTTP transport.
> 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" }) })
Module Protocols.Line |
CLASS Protocols.Line.simple |
Simple nonblocking line-oriented I/O.
constant line_separator
The sequence separating lines from eachother. "\r\n" by default.
function(string:void) handle_data
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.
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.
handle_command()
void handle_command(string line)
This function will be called once for every line that is received.
Overload this function as appropriate.
It will not be called if handle_data() has been set.
line will not contain the line separator.
handle_data()
void send(string s)
Queue some data to send.
handle_command() , handle_data() , disconnect()
void do_timeout()
This function is called when a timeout occurrs.
Overload this function as appropriate.
The default action is to shut down the connection immediately.
create() , touch_time()
void touch_time()
Reset the timeout timer.
create() , do_timeout()
string read_line()
Read a line from the input.
Returns 0 when more input is needed. Returns the requested line otherwise.
The returned line will not contain the line separator.
handle_command() , line_separator
void read_callback(mixed ignored, string data)
Called when data has been received.
Overload as appropriate.
Calls the handle callbacks repeatedly until no more lines are available.
handle_data() , handle_command() , read_line()
ADT.Queue send_q
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.
send() , disconnect()
void disconnect()
Disconnect the connection.
Pushes an end of file marker onto the send queue send_q .
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.
void close_callback()
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.
void Protocols.Line.simple(Stdio.File con, int|void timeout)
Create a simple nonblocking line-based protocol handler.
con is the connection.
timeout is an optional timeout in seconds after which the connection will be closed if there has been no data sent or received.
If timeout is 0 (zero), no timeout will be in effect.
touch_time() , do_timeout()
CLASS Protocols.Line.smtp_style |
Nonblocking line-oriented I/O with support for sending SMTP-style codes.
inherit simple : simple
mapping(int:string|array(string)) errorcodes
Mapping from return-code to error-message.
Overload this constant as apropriate.
void send(int(100..999) code, array(string)|string|void lines)
Send an SMTP-style return-code.
code is an SMTP-style return-code.
If lines is omitted, errorcodes will be used to lookup an appropriate error-message.
If lines is a string, it will be split on '\n' (newline), and the error-code interspersed as appropriate.
errorcodes
CLASS Protocols.Line.imap_style |
Nonblocking line-oriented I/O with support for reading literals.
inherit simple : simple
int literal_length
Length in bytes of the literal to read.
function(string:void) handle_literal
If this variable has been set, literal_length bytes will be accumulated, and this function will be called with the resulting data.
handle_literal() is one-shot, ie it will be cleared when it is called.
function(string:void) handle_line
This function will be called once for every line that is received.
This API is provided for backward compatibility; overload handle_command() instead.
Protocols.Line.simple()->handle_command()
void handle_command(string line)
Function called once for every received line.
void expect_literal(int length, function(string:void) callback)
Enter literal reading mode.
Sets literal_length and handle_literal() .
literal_length , handle_literal()
Module Protocols.LPD |
CLASS Protocols.LPD.client |
A client for communicating with printers and print spoolers that support the BSD lpd protocol (RFC 1179).
int set_job_type(string type)
Set the type of job to be sent to the printer to type. Valid types are: text, postscript and raw.
int set_job_name(string name)
Sets the name of the print job to name.
int start_queue(string queue)
Start the queue queue if not already printing.
Returns 0 if unable to connect, 1 otherwise.
string|int send_job(string queue, string job)
Send print job consisting of data job to printer queue.
Returns 1 if success, 0 otherwise.
int delete_job(string queue, int|void job)
Delete job job from printer queue.
Returns 1 on success, 0 otherwise.
string|int status(string queue)
Check the status of queue queue.
Returns 0 on failure, otherwise returns the status response from the printer.
void Protocols.LPD.client(string|void hostname, int|void portnum)
Create a new LPD client connection.
Contains the hostname or ipaddress of the print host. if not provided, defaults to localhost.
Contains the port the print host is listening on. if not provided, defaults to port 515, the RFC 1179 standard.
Module Protocols.SMTP |
CLASS Protocols.SMTP.client |
inherit protocol : protocol
constant reply_codes
A mapping(int:string) that maps SMTP return codes to english textual messages.
void Protocols.SMTP.client()
void Protocols.SMTP.client(Stdio.File server)
void Protocols.SMTP.client(string server, void|int port)
Creates an SMTP mail client and connects it to the the server provided. The server parameter may either be a string witht the hostnam of the mail server, or it may be a file object acting as a mail server. If server is a string, than 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 an exception if the client fails to connect to the mail server.
void send_message(string from, array(string) to, string body)
Sends a mail message from from to the mail addresses listed in to with the mail body body . The body should be a correctly formatted mail DATA block, e.g. produced by MIME.Message .
simple_mail
If the mail server returns any other return code than 200-399 an exception will be thrown.
void simple_mail(string to, string subject, string from, string msg)
Sends an e-mail. Wrapper function that uses send_message .
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.
If the mail server returns any other return code than 200-399 an exception will be thrown.
array(int|string) verify(string addr)
Verifies the mail address addr against the mail server.
|
Some mail servers does not answer truthfully to verfification queries in order to prevent spammers and others to gain information about the mail addresses present on the mail server.
If the mail server returns any other return code than 200-399 an exception will be thrown.
Module Protocols.TELNET |
Implements TELNET as described by RFC 764 and RFC 854
Also implements the Q method of TELNET option negotiation as specified by RFC 1143.
inherit TelnetCodes : TelnetCodes
inherit Telopts : Telopts
CLASS Protocols.TELNET.TelnetCodes |
Table of IAC-codes.
CLASS Protocols.TELNET.Telopts |
Table of TELNET options.
CLASS Protocols.TELNET.protocol |
Implementation of the TELNET protocol.
static object fd
The connection.
static mapping cb
Mapping containing extra callbacks.
static mixed id
Value to send to the callbacks.
static function(mixed|void:string) write_cb
Write callback.
static function(mixed:void) read_cb
Read callback.
static function(mixed|void:void) close_cb
Close callback.
static array(int) remote_options
static array(int) local_options
Negotiation states of all WILL/WON'T options. See RFC 1143 for a description of the states.
static string to_send
Data queued to be sent.
static int done
Indicates that connection should be closed
static int nonblocking_write
Tells if we have set the nonblocking write callback or not.
void enable_write()
Turns on the write callback if apropriate.
void disable_write()
Turns off the write callback if apropriate.
void write(string s)
Queues data to be sent to the other end of the connection.
String to send.
void write_raw(string s)
Queues raw data to be sent to the other end of the connection.
String with raw telnet data to send.
void close()
Closes the connetion neatly
void send_data()
Callback called when it is clear to send data over the connection. This function does the actual sending.
void send_synch()
Sends a TELNET synch command.
void send_DO(int option)
Starts negotiation to enable a TELNET option.
The option to enable.
void send_DONT(int option)
Starts negotiation to disable a TELNET option.
The option to disable.
static int synch
Indicates wether we are in synch-mode or not.
void got_oob(mixed ignored, string s)
Callback called when Out-Of-Band data has been received.
The id from the connection.
The Out-Of-Band data received.
void call_read_cb(string data)
Calls read_cb() .
Specifically provided for overloading
void got_data(mixed ignored, string line)
Callback called when normal data has been received. This function also does most of the TELNET protocol parsing.
The id from the connection.
The received data.
void set_write_callback(function(mixed|void:string) w_cb)
Sets the callback to be called when it is clear to send.
The new write callback.
void setup()
Called when the initial setup is done.
Created specifically for overloading
void Protocols.TELNET.protocol(object f, function(mixed:void) r_cb, function(mixed|void:string) w_cb, function(mixed|void:void) c_cb, mapping callbacks, mixed|void new_id)
Creates a TELNET protocol handler, and sets its callbacks.
File to use for the connection.
Function to call when data has arrived.
Function to call when data can be sent.
Function to call when the connection is closed.
Mapping with callbacks for the various TELNET commands.
Value to send to the various callbacks.
CLASS Protocols.TELNET.LineMode |
Line-oriented TELNET protocol handler.
inherit protocol : protocol
CLASS Protocols.TELNET.Readline |
Line-oriented TELNET protocol handler with Stdio.Readline support.
inherit LineMode : LineMode