12. Protocols

  Module Protocols.HTTP


Method filename_to_type
Method extension_to_type

string Protocols.HTTP.filename_to_type(string filename)
string Protocols.HTTP.extension_to_type(string extension)

Description

Looks up the file extension in a table to return a suitable MIME type. The table is located in the [...]pike/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/extensions.txt file.


Method http_date

string Protocols.HTTP.http_date(int time)

Description

Makes a time notification suitable for the HTTP protocol.


Method http_decode_string
Method http_decode_urlencoded_query

string Protocols.HTTP.http_decode_string(string what)
mapping(string:string|array(string)) Protocols.HTTP.http_decode_urlencoded_query(string query, void|mapping dest)

Description

Decodes an URL-encoded query into a mapping.


Method get_url

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)

Description

Sends a HTTP GET request to the server in the URL and returns the created and initialized Protocols.HTTP.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.


Method put_url

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)

Description

Sends a HTTP PUT request to the server in the URL and returns the created and initialized Protocols.HTTP.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.


Method delete_url

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)

Description

Sends a HTTP DELETE request to the server in the URL and returns the created and initialized Protocols.HTTP.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.


Method get_url_nice
Method get_url_data

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)

Description

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.


Method post_url_nice
Method post_url_data
Method post_url

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)

Description

Similar to the Protocols.HTTP.get_url class of functions, except that the query variables is sent as a POST request instead of as a GET.


Method unentity

string Protocols.HTTP.unentity(string s)

Description

Helper function for replacing HTML entities with the corresponding iso-8859-1 characters.

Note

All characters aren't replaced, only those with corresponding iso-8859-1 characters.


Method http_encode_query

string Protocols.HTTP.http_encode_query(mapping(string:int|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"]) );  
     Result: "%26amp%3b=%26&%27%3d%22=%00%00%00"
	


Method http_encode_string

string Protocols.HTTP.http_encode_string(string in)

Description

This protects all odd - see Protocols.HTTP.http_encode_query - characters for transfer in HTTP.

Do not use this function to protect URLs, since it will protect URL characters like '/' and '?'.

  CLASS Protocols.HTTP.HeaderParser

Description

Fast HTTP header parser.

  CLASS Protocols.HTTP.Query

Description

Open and execute an HTTP query.


Variable errno

int errno

Description

Errno copied from the connection.


Variable ok

int ok

Description

Tells if the connection is successfull.


Variable headers

mapping headers

Description

Headers as a mapping. All header names are in lower case, for convinience.


Variable protocol

string protocol

Description

Protocol string, ie "HTTP/1.0".


int status
string status_desc

Description

Status number and description (eg 200 and "ok").


Variable hostname_cache

mapping hostname_cache

Description

Set this to a global mapping if you want to use a cache, prior of calling *request().


Variable async_dns

array async_dns

Description

Set this to an array of Protocols.DNS.async_clients, if you wish to limit the number of outstanding DNS requests. Example:

async_dns = allocate(20, Protocols.DNS.async_client)();


Method set_callbacks
Method async_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)

Description

Setup and run an asynchronous request, otherwise similar to Protocols.HTTP.Query.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 thread_request

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)

Description

Create a new query object and begin the query.

The query is executed in a background thread; call Protocols.HTTP.Query.`() 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

Returns the called object.


Method `()

int `()()

Description

Wait for connection to complete.

Returns

Returns 1 on successfull connection, 0 on failure.


Method data

string data(int|void max_length)

Description

Gives back the data as a string.


Method downloaded_bytes

int downloaded_bytes()

Description

Gives back the number of downloaded bytes.


Method total_bytes

int total_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 cast

array cast("array")

Description

Gives back

({mapping headers, string data,
		           string protocol, int status, string status_desc});


Method cast

mapping cast("mapping")

Description

Gives back

 headers |
	(["protocol":protocol,
	  "status":status number,
	  "status_desc":status description,
	  "data":data]); 


Method cast

string cast("string")

Description

Gives back the answer as a string.


Method file

Protocols.HTTP.Query.PseudoFile file()
Protocols.HTTP.Query.PseudoFile file(mapping newheaders, void|mapping removeheaders)

Description

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:

(oldheaders|newheaders))-removeheaders
Make sure all new and remove-header indices are lower case.

See also

Protocols.HTTP.Query.datafile


Method datafile

Protocols.HTTP.Query.PseudoFile datafile()

Description

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.

Protocols.HTTP.Query.datafile doesn't give the complete request, just the data.

See also

Protocols.HTTP.Query.file


Method async_fetch

void async_fetch(function callback, mixed ... extra)

Description

Fetch all data in background.

  Module Protocols.HTTP.Server

  CLASS Protocols.HTTP.Server.Port

Description

The simplest server possible. Binds a port and calls a callback with Protocols.HTTP.Server.Request objects.


Method create
Method close

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()

Description

Closes the HTTP port.

  CLASS Protocols.HTTP.Server.Request


Variable raw

string raw

Description

raw unparsed full request (headers and body)


Variable body_raw

string body_raw

Description

raw unparsed body of the request (Protocols.HTTP.Server.Request.raw minus request line and headers)


Variable request_raw

string request_raw

Description

full request line (Protocols.HTTP.Server.Request.request_type + Protocols.HTTP.Server.Request.full_query + Protocols.HTTP.Server.Request.protocol)


Variable request_type

string request_type

Description

HTTP request method, eg. POST, GET, etc.


Variable full_query

string full_query

Description

full resource requested, including attached GET query


Variable not_query

string not_query

Description

resource requested minus any attached query


Variable query

string query

Description

query portion of requested resource, starting after the first "?"


Variable protocol

string protocol

Description

request protocol and version, eg. HTTP/1.0


Variable request_headers

mapping(string:string|array(string)) request_headers

Description

all headers included as part of the HTTP request, ie content-type.


Variable variables

mapping(string:string|array(string)) variables

Description

all variables included as part of a GET or POST request.


Variable cookies

mapping(string:string) cookies

Description

cookies set by client


Variable misc

mapping misc

Description

external use only


Method response_and_finish

void response_and_finish(mapping m, function|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

Data to be returned to the client.

"file" : object

File object, the contents of which will be returned to the client.

"error" : int

HTTP error code

"length" : int

length of content returned. If file is provided, size bytes will be returned to client.

"modified" : string

contains optional modification date.

"type" : string

contains optional content-type

"extra_heads" : mapping

contains a mapping of additional headers to be returned to client.

"server" : string

contains the server identification header.


  Module SSL

  CLASS SSL.alert

Inherits
  • "packet"
Description

Alert package.


Method create

void SSL.alert(int level, int description, string|void message, mixed|void trace)

  CLASS SSL.cipher

Inherits
  • "constants"
Description

Encryption and MAC algorithms used in SSL.

  CLASS SSL.connection

Inherits
  • "constants"
  • "handshake"
  • Queue
  • Queue
  • Queue
Description

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.


Method set_alert_callback

void set_alert_callback(function(object: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 recv_packet

object recv_packet(string data)

Description

Low-level recieve handler. Returns a packet, an alert, or zero if more data is needed to get a complete packet.


Method send_packet

void send_packet(object packet, int|void priority)

Description

Queues a packet for write. Handshake and and change cipher must use the same priority, so must application data and close_notifies.


Method to_write

string|int to_write()

Description

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.


Method send_close

void send_close()

Description

Initiate close.


Method got_data

string|int got_data(string|int s)

Description

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.constants

Description

Protocol constants

  CLASS SSL.context

Inherits
  • "constants"
Description

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.


Variable rsa

object rsa

Description

The server's private key


object long_rsa
object short_rsa

Description

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.


Variable random

function(int:string) 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.


Variable certificates

array(string) certificates

Description

The server's certificate, or a chain of X509.v3 certificates, with the server's certificate first and root certificate last.


Variable preferred_auth_methods

array(int) preferred_auth_methods

Description

For client authentication. Used only if auth_level is AUTH_ask or AUTH_require.


Variable preferred_suites

array(int) preferred_suites

Description

Cipher suites we want the server to support, best first.


Variable preferred_compressors

array(int) preferred_compressors

Description

Always ({ COMPRESSION_null })


Variable use_cache

int use_cache

Description

Non-zero to enable cahing of sessions


Variable session_lifetime

int session_lifetime

Description

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.


Method lookup_session

object lookup_session(string id)

Description

Lookup a session identifier in the cache. Returns the corresponding session, or zero if it is not found or caching is disabled.


Method new_session

object new_session()

Description

Create a new session.


Method record_session

void record_session(object s)

Description

Add a session to the cache (if caching is enabled).


Method purge_session

void purge_session(object s)

Description

Remove a session from the cache.

  CLASS SSL.handshake

Inherits
  • "cipher"
Description

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.


Variable auth_level

int auth_level

Description

Policy for client authentication. One of AUTHLEVEL_none, AUTHLEVEL_ask and AUTHLEVEL_require.


Variable authorities

array(string) authorities

Description

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

Description

Random cookies, sent and received with the hello-messages.


Method handle_handshake

int(-1..1) handle_handshake(int type, string data, string raw)

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 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

Inherits
  • "sslport"
Description

Dummy HTTPS server

  CLASS SSL.packet

Inherits
  • "constants"
Description

SSL Record Layer. Handle formatting and parsing of packets.

  CLASS SSL.session

Inherits
  • "cipher"
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 identity

string identity

Description

Identifies the session to the server


Variable compression_algorithm

int compression_algorithm

Description

Always COMPRESSION_null.


Variable cipher_suite

int cipher_suite

Description

Constant defining a choice of keyexchenge, encryption and mac algorithm.


Variable cipher_spec

object cipher_spec

Description

Information about the encryption method derived from the cipher_suite.


Variable ke_method

int ke_method

Description

Key exchange method, also derived from the cipher_suite.


Variable master_secret

string master_secret

Description

48 byte secret shared between the client and the server. Used for deriving the actual keys.


Method set_cipher_suite

void set_cipher_suite(int suite, int version)


Method set_compression_method

void set_compression_method(int compr)


Method new_server_states

array new_server_states(string client_random, string server_random, array(int) version)

Description

Computes a new set of encryption stetes, derived from the client_random, server_random and master_secret strings.

Returns
Array
State read_state

Read state

State write_state

Write state



Method new_client_states

array new_client_states(string client_random, string server_random, array(int) version)

Description

Computes a new set of encryption stetes, derived from the client_random, server_random and master_secret strings.

Returns
Array
State read_state

Read state

State write_state

Write state


  CLASS SSL.sslfile

Inherits
  • "connection"
Description

Interface similar to Stdio.File.

  CLASS SSL.sslport

Inherits
  • Stdio.Port
  • "context"
  • ADT.Queue
Description

Interface similar to Stdio.Port.

  CLASS SSL.state

Inherits
  • "constants"
Description

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.


Variable session

object session

Description

Information about the used algorithms.


Variable mac

object mac

Description

Message Authentication Code


Variable crypt

object crypt

Description

Encryption or decryption object.


Variable seq_num

Gmp.mpz|int seq_num

Description

64-bit sequence number.


Method decrypt_packet

object decrypt_packet(object packet, int version)

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.


Method encrypt_packet

object encrypt_packet(object packet, int version)

Description

Encrypts a packet (including deflating and MAC-generation).

  Module Protocols.LysKOM

  CLASS Protocols.LysKOM.Connection

Description

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.


Method XXX
Method async_XXX
Method async_cb_XXX

mixed XXX(mixed ... args)
object async_XXX(mixed ... args)
object async_cb_XXX(function callback, mixed ... args)

Description

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

Description of the connected server.


Method create

void Protocols.LysKOM.Connection(string server)
void Protocols.LysKOM.Connection(string server, mapping options)

Description

The options argument is a mapping with the following members:

"login" : int|string

login as this person number (get number from name).

"password" : string

send this login password.

"invisible" : int(0..1)

if set, login invisible.

"port" : int(0..65535)

server port (default is 4894).

"whoami" : string

present as this user (default is from uid/getpwent and hostname).


  CLASS Protocols.LysKOM.Session


Variable user

object user

Description

This variable contains the Protocols.LysKOM.Session.Person that is logged in.


Method create

void Protocols.LysKOM.Session(string server)
void Protocols.LysKOM.Session(string server, mapping options)

Description

Initializes the session object, and opens a connection to that server.

options is a mapping of options:

"login" : int|string

login as this person number (get number from name).

"create" : string

create a new person and login with it.

"password" : string

send this login password.

"invisible" : int(0..1)

if set, login invisible.

"port" : int(0..65535)

server port (default is 4894).

"whoami" : string

present as this user (default is from uid/getpwent and hostname).


See also

Protocols.LysKOM.Connection


Method text

Text text(int no)

Description

Returns the text no.


Method person

Person person(int no)

Description

Returns the person no.


Method conference

Conference conference(int no)

Description

Returns conference number no.


Method try_complete_person

array(ProtocolTypes.ConfZInfo) try_complete_person(string orig)

Description

Runs a LysKOM completion on the given string, returning an array of confzinfos of the match.


Method login

object login(int user_no, string password)
object login(int user_no, string password, int invisible)

Description

Performs a login. Throws a lyskom error if unsuccessful.

Returns

The session object logged in.


Method create_person

object create_person(string name, string password)

Description

Create a person, which will be logged in. returns the new person object


Method logout

object logout()

Description

Logouts from the server. returns the called object


Method create_text

object create_text(string subject, string body, mapping options)
object create_text(string subject, string body, mapping options, function callback, mixed ... extra)

Description

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:

"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" : int(0..1)

send 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

Protocols.LysKOM.Session.Conference.create_text, Protocols.LysKOM.Session.Text.comment, Protocols.LysKOM.Session.Text.footnote


Method send_message

object|void send_message(string textstring, mapping options)

Description

Sends a message.

options is a mapping that may contain:

"recpt" : Conference

recipient conference.



Method register_async_message_callback

void register_async_message_callback(function(int:void) cb)

  CLASS Protocols.LysKOM.Session.AuxItemInput

Inherits
  • ProtocolTypes.AuxItemInput
FIXME

Undocumented

  CLASS Protocols.LysKOM.Session.AuxItems

FIXME

Undocumented

  CLASS Protocols.LysKOM.Session.Text

Description

All variables in this class is read only.

FIXME

Undocumented


Variable no

int no

Description

The text number, as spicified to Protocols.LysKOM.Session.Text.create.


Variable err

object err

Description

Undocumented


Method create

void Protocols.LysKOM.Session.Text(string textnumber)

Description

Initializes a Text object.


Method mark_as_read

void mark_as_read()

FIXME

Undocumented.


mixed prefetch_text
mixed prefetch_stat
mixed lines
mixed characters
mixed clear_stat
mixed aux_items

FIXME

Undocumented


Variable text

string text

Description

The actual text (or body if you wish).


Variable subject

string subject

Description

The message subject.


Variable author

string author

Description

The author of the text.


Variable misc

mixed misc

Description

Misc info, including what conferences the message is posted to.

FIXME

Needs a more complete description.


Variable marks

int marks

Description

The number of marks on this text.


Variable creation_time

mixed creation_time

Description

The time the text was created on the server.

  CLASS Protocols.LysKOM.Session.Membership

Description

All variables in this class is read only.


Variable last_time_read

object last_time_read


Variable priority

int(0..255) priority


Variable last_text_read

int last_text_read


Variable read_texts

array(int) read_texts


Variable added_at

object added_at


Variable type

multiset(string) type


Variable position

int position


Variable conf

object conf


Method number_unread

int number_unread()


Method query_read_texts

void query_read_texts()


Method unread_texts

array(object) unread_texts()

  CLASS Protocols.LysKOM.Session.Person


Variable no

int no


Method create

void Protocols.LysKOM.Session.Person(int no)


mixed prefetch_stat
mixed prefetch_conf
mixed prefetch_membership

FIXME

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

FIXME

Undocumented

  CLASS Protocols.LysKOM.Session.Conference


Method create

void Protocols.LysKOM.Session.Conference(int no)

  Module Protocols.LysKOM.Request

Description

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

Description

This is the main request class. All lyskom request classes inherit this class.


Method async
Method sync

void async(mixed ... args)
mixed sync(mixed ... args)

Description

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.


Method _async
Method _sync

void _async(int call, mixed_data)
mixed _sync(int call, 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|array what)
mixed reply(object|array what)

Description

Protocols.LysKOM.Request._Request._reply is called as callback to evaluate the result, and calls Protocols.LysKOM.Request._Request.reply in itself to do the real work.


Method `()

mixed `()()

Description

Wait for the call to finish.


Variable ok

int(0..1) ok

Description

Tells if the call has executed ok


Variable error

object error

Description

How the call failed. The call has completed if

(ok||error)
.

  Module Protocols.DNS

Description

$Id: DNS.pmod,v 1.62 2002/03/09 18:27:04 nilsson Exp $

  CLASS Protocols.DNS.client

Inherits
  • protocol
Description

Synchronous DNS client.


Method create

void Protocols.DNS.client()
void Protocols.DNS.client(void|string|array server, void|int|array domain)


Method gethostbyname
Method gethostbyaddr

array gethostbyname(string hostname)
array gethostbyaddr(string hostip)

Description

Querys the host name or ip from the default or given DNS server. The result is an array with three elements,

Array
string hostname

Hostname.

array(string) ip

IP number(s).

array(string) aliases

DNS name(s).



Method get_primary_mx

string get_primary_mx(string hostname)

Description

Querys the primary mx for the host.

Returns

Returns the hostname of the primary mail exchanger.

  Module Protocols

  Module Protocols.LDAP

  CLASS Protocols.LDAP.client

Inherits
  • .protocol
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

mapping info

Description

Several information about code itself and about active connection too


Method create

void Protocols.LDAP.client()
void Protocols.LDAP.client(string url)
void Protocols.LDAP.client(string url, object context)

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 in form "ldap://hostname/basedn?attrlist?scope?ext"

Parameter context

TLS context of connection

See also

LDAP.client.bind, LDAP.client.search


Method bind

int bind()
int bind(string dn, string password)
int bind(string dn, string password, int version)

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

Only 2 or 3 can be entered.

Returns

Returns 1 on success, 0 otherwise.

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 unbind

int unbind()

Description

Unbinds from the directory and close the connection.


Method delete

int delete(string dn)

Description

Deletes entry from the LDAP server.

Parameter dn

The distinguished name of deleted entry.

Returns

Returns 1 on success, 0 otherwise.

Note

The API change: the returning code was changed in Pike 7.3+ to follow his logic better.


Method compare

int compare(string dn, array(string) aval)

Description

Compares given attribute value with one in the directory.

Parameter dn

The distinguished name of compared entry.

Parameter aval

The mapping of compared attributes and theirs values.

Returns

Returns 1 on success, 0 otherwise.

Note

The API change: the returning code was changed in Pike 7.3+ to follow his logic better.


Method add

int add(string dn, 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.

Returns

Returns 1 on success, 0 otherwise.

Note

The API change: the returning code was changed in Pike 7.3+ to follow his logic better.


Method search

object|int search(string|void filter, array(string)|void attrs, int|void attrsonly)

Description

Search LDAP directory.

Parameter filter

Search filter used when searching directory objects.

Parameter attrs

The array of attribute names which will be returned by server. for every entry.

Parameter attrsonly

The flag causes server return only attribute name but not the attribute values.

Returns

Returns object LDAP.client.result on success, 0 otherwise.

Note

For syntax of search filter see at RFC 1960 (http://community.roxen.com/developers/idocs/rfc/rfc1960.html).

Note

The API change: the returning code was changed in Pike 7.3+ to follow his logic better.

See also

LDAP.client.result, LDAP.client.result.fetch


Method set_basedn

string set_basedn(string base_dn)

Parameter base_dn

base DN for search


Method set_scope

int set_scope(int|string scope)

Description

Sets value of scope for search operation.

Parameter scope

Value can be integer or its corresponding string value. 0: base, 1: one, 2: sub


Method set_option

int set_option(int opttype, int value)

Parameter option_type

LDAP_OPT_xxx

Parameter value

new value for option


Method get_option

int get_option(int opttype)

Parameter option_type

LDAP_OPT_xxx


Method modifydn</