Elko Server Configuration Property Reference
Introduction
In the descriptions of the properties and their values below, Courier
font like this denotes literal entities and italics like
this denotes meta-symbols.
There are three data types used for property values. Each has been assigned a three letter abbreviation:
str A string int An integer numeric value flg A boolean flag; may take the values trueorfalse.--- Used in descriptions of "families" of properties
The underlying property mechanism can also handle floating point values but this feature is not currently used by any of the servers.
The Properties
Meta symbols
NA small integer or the empty string, used in the construction of property names for describing network listeners or remote hosts to connect to. The integer is suffixed to the property root name and treated as if it were an array index or subscript. HostSpecA family of properties that describe a host to be connected to for some purpose. The names given here are suffixed to a root name to form the actual property name to be set. The root name determines what the host information will be used for.
str .hostHost name or dotted-quad IP address, optionally followed by a :and the port number. If the port number is unspecified, a default port may be used, but what the default is depends on the context.str .protocolSpecifies the protocol to be used for connecting to the host. Currently valid values are "tcp"(the default) or"http".--- AuthSpecThe authorization parameters required to connect to this host. flg .dontlogIf true, don't include message traffic to and from this host in the server's log, even if message logging is turned on in general.int .retryCertain kinds of host connections (such as connections to a broker) will be repeatedly retried if the initial connection attempt fails. This property sets the retry interval (i.e., how long to wait before trying again). The default is 15 seconds. AuthSpecA family of properties that describe the authorization parameters necessary to connect to a host, either from the perspective of the host itself (i.e., what it is looking for in a connection authorization attempt) or from the perspective of a client (i.e., what the host wants to be given).
str .auth.modeAuthorization mode to use. Valid values vary depending on the type of server this is: for most servers, acceptable values are "open"(meaning no authorization required) or"password"(meaning that a password is required); for the Context Server, valid values are"open"or"reservation"(meaning that reservations are required for user entry). In all cases"open"is the default.str .auth.codeAuthorization information as required by whatever setting was given for the .auth.modeproperty. Currently, the only authorization mode that uses this property is"password", in which case this property contains the password.str .auth.idAuthorization ID to use. What value goes here depends on the authorization mode being used, though typically this value is dynamic rather than being configured via properties. LocalObjStoreSpecA family of properties that configure a local object store. This is the local implementation of the Elko object database interface that is used by Repositories and by repository clients (right now the Context Server and Gatekeeper) that aren't using a remote Repository.
str .objstoreFully qualified class name of the Java class implementing the org.elkoserver.objdb.store.ObjectStoreinterface. The remaining repository properties depend on what implementation class is selected.when
root.objstoreis"org.elkoserver.objdb.store.filestore.FileObjectStore":
str .odbPathname, relative to the server's current working directory, of the directory containing the files holding the database objects (in simpler terms, the "object database directory"). ReposSpecA family of properties that configure access to repository services, either via a local object database or by connecting to a remote Repository. for all repositories:
str .classdescOptional list of object ID strings for class descriptor objects that should be loaded when the repository is opened (these are in addition to the default class descriptor object named "classes", which is always loaded regardless of the setting of this property). Multiple IDs may be separated by:.for local repositories only:
--- LocalObjStoreSpecConfiguration of local object store, in the case where a Repository is not being used. for remote repositories only:
--- .repository.HostSpecHost info indicating what Repository to connect to. These properties should be set if you are configuring the Repository connection manually (i.e., without using a Broker). str .repository.serviceLabel of repository to ask the Broker for. This will be concatenated to the string "rep/rep/"to form the full service name that will be sought from the Broker (i.e., if you set this property to"foo", the Broker will be asked for the service"rep/rep/foo"). Alternatively, the value"any"will cause the requested service name to be"rep/rep", which will seek any Repository known to the Broker.
General properties (used in all or most servers)
int conf.comm.httptimeoutTimeout, in seconds, for HTTP connections that are still waiting for a message from the user's browser to keep the session alive. int conf.comm.httptimeout.debugAlternate value for above when a user logs in in debug mode. int conf.comm.httpselectwaitTimeout, in seconds, to wait on open HTTP message select before replying with a keep-alive message. int conf.comm.httpselectwait.debugAlternate value for above when a user logs in in debug mode. flg conf.comm.jsonstrictnessIf true(defaults tofalse), JSON literals will be generated according to "strict" JSON rules, meaning that property names will be in the form of strings and "/" characters in string literals will be escaped; this is safer for the browser but somewhat wasteful of bandwidth and really hard on the eyes.int conf.load.timeSampling interval, in seconds, for measuring server load. The default is 300 (i.e., 5 minutes). flg conf.load.logIf true(defaults tofalse), directs server to write load reports to the server log. This is in addition to reporting the load to the Broker and/or Directors.flg conf.msgdiagnosticsIf true, any message handler methods that return an error result will cause a diagnostic message to be sent to the client who sent the offending message. Iffalse(the default), such errors will not be reported to the client (though they will be reported in the server log).flg conf.debugsessionsIf true, HTTP session IDs are generated by an incrementing counter, making them predictable to aid in debugging using static scripts. Iffalse(the default), session IDs are geerated using the secure random number generator, making them securely unguessable.str conf.ServerType.serviceLabel for services offered by this server, to distinguish it from other servers of the same type. This will be concatenated to the service names that this server will be registering with the Broker (which vary depending on what type of server this server is). Default is the empty string, i.e., no label. Note: these are the service names used by the current family of servers:
broker/adminBroker administrative port broker/clientBroker client port (to request service info about other servers or to register your own service info for others to see) context/userContext Server user port (for client connections) director/adminDirector administrative port director/providerDirector provider port (for providers being managed) director/userDirector user port (for requesting reservations) gatekeeper/adminGatekeeper administrative port gatekeeper/userGatekeeper user port (to request reservations) rep/adminRepository administrative port rep/repRepository object database services port str conf.ServerType.nameName for this server, to be used in log reports by Broker and Directors. whereServerTypevaries depending on what type of server you are setting the above two properties for:
brokerBroker contextContext Server directorDirector gatekeeperGatekeeper repositoryRepository --- conf.broker.HostSpecHost info indicating what Broker to connect to. If not specified, no Broker will be used. --- conf.listenN.ListenSpecInfo configuring the Nth listener port for this server.Nshould follow a strict sequence, starting with the null string and the incrementing from 1 (with no gaps) for each successive listener configured. Where:
ListenSpecA family of properties that configure a listener port.
str .hostHost name and optional colon-separated port number that the server should listen for connections on. If no port number is specified, an arbitrary, operating system assigned port will be used. str .bindHost name and optional colon-separated port number to actually bind the listener to, if this is different from the .hostproperty (necessary sometimes due to firewalls and NAT).str .protocolProtocol to expect connecting clients to use. Valid values are "tcp"(the default) or"http".--- AuthSpecOptional authorization information to require connecting clients to use. str .allowA comma-separated list of the kinds of connections that are allowed on this port. Valid values depend on what sort of server this is: Broker:In all cases, the value"client"or"admin"
Gatekeeper:"user"or"admin"
Repository:"rep"or"admin"
Director:"user","provider"or"admin""any"is also valid and indicates that any sort of connection is allowed. The default is that no types of connections are allowed, which is almost certainly not what you want. Also, these.allowsettings do not pertain to the Context Server, which only accepts one sort of connection.flg .secureIf true, listen for an SSL connection on this port. Defaults tofalse.flg .dontlogIf true, don't include message traffic to and from connections made to this port, even if message logging is turned on in general.str .rootURL root for HTTP tunneling. str .domainDomain setting to be used on http connections to bypass browser 'same site' restrictions.
Trace control properties (used everywhere)
str tracelog_dirDirectory in which log files will go. Defaults to the current working directory. str tracelog_tagBase string for synthesizing log file names. Defaults to "log".str tracelog_nameName of log file. Overrides tracelog_dirandtracelog_tag.str tracelog_sizeSize, in bytes, after which the log file will be rolled over to a new file. Defaults to 500000; may not be set to lower than 1000. Alternatively, the value "unlimited"will inhibit log file rollover entirely. Rolled over log files will be named by concatenating the tag string with a date string, unlesstracelog_namehas been set, in which case incrementing integers will be used instead.str tracelog_backupsSets the behavior with respect to log file rollover ("backups"). If set to "one"or"1", at most one rollover backup will be kept. If set to"many"(the default), backups will simply accumulate.flg tracelog_showverboseControls the verbosity of log file entries. If true, log entries will include the name of the trace subsystem generating the entry and the class name, method, and line number whence the entry is being requested. Default isfalse.str trace_SubsystemSets the tracing level for a given subsystem. This is the level of severity necessary for a message to actually be written to the log file. Valid values are: "ERROR","WARNING","USAGE","WORLD","EVENT","DEBUG"and"VERBOSE", in increasing order of spamminess.whereSubsystemis one of the currently recognized subsystems:
commnetwork communications subsystem msgsJSON message handling subsystem runqevent run queue subsystem startupserver initialization subsystem timerstimer events subsystem tracetrace subsystem brokBroker application contContext Server application direDirector application gateGatekeeper application repoRepository application Application Java code can also define new trace subsystems, which can add to this list. See the JavaDoc for the
org.elkoserver.util.trace.Traceclass.
Repository properties
--- conf.repository.LocalObjStoreSpecConfigures the object store implementation to be used by this Repository.
Director properties
int conf.director.providerlimitSets the maximum number of providers (e.g., Context Servers) that may connect to this Director.
Gatekeeper properties
--- conf.gatekeeper.director.HostSpecHost info indicating what Director to connect to. These properties should be set if you are configuring the Director connection manually (i.e., without using a Broker). flg conf.gatekeeper.director.autoIf true, indicates that the Director to connect to should be obtained automatically from the Broker.int conf.gatekeeper.actiontimeoutTime, in seconds, after which user connections will be terminated if they have not done anything. Default is 15 seconds. str conf.gatekeeper.authorizerFully qualified class name of the Java class implementing the org.elkoserver.server.gatekeeper.Authorizerinterface.when
conf.gatekeeper.authorizeris"org.elkoserver.server.gatekeepwer.passwd.PasswdAuthorizer":
str conf.gatekeeper.idbaseBase ID string for synthesized user IDs. flg conf.gatekeeper.anonymousIf true, allow anonymous users to request reservations. Iffalse, don't. Defaults totrue.--- conf.gatekeeper.ReposSpecInfo describing the object store or Repository to use for obtaining user authentication and account information.
Context Server properties
int conf.context.reservationexpireTime, in seconds, before unredeemed reservations are expired. Defaults to 30 seconds. int conf.context.entrytimeoutTime, in seconds, that a new user connection has to enter some context before being kicked off for inactivity. Defaults to 15 seconds. int conf.context.userlimitMaximum number of concurrent user connections permitted on this server. A value of 0 (the default) means no limit. str conf.context.shutdownpasswordPassword that must be given in a JSON shutdownmessage to allow the server to be shutdown. Default is no password.--- conf.context.ReposSpecInfo describing the object store or Repository to use for obtaining and persisting contexts, items and users. --- conf.registerN.HostSpecHost info indicating the Nth Director to register this Context Server with.Nshould follow a strict sequence, starting with the null string and then incrementing from 1 (with no gaps) for each successive Director connection configured. These properties should be set if you are configuring the Director connections manually (i.e., without using a Broker).flg conf.register.autoIf true, indicates that the Director(s) to connect to should be obtained automatically from the Broker.
