Table of contents
1Setup
1.1Plain driver modules
1.1.1Ready to run setups
1.1.1.1Windows 32bit
1.1.1.2Ubuntu 12.04 LTS 64bit
1.1.2Manual launching
1.1.3Configuring
1.1.3.1Exporter
2Communication
2.1Re-Connects
3System
3.1System Properties
3.1.1Aurora
3.1.2Oxygen
3.1.3Utgard
3.1.4Atlantis
3.1.5Orilla
3.1.6Dakara
3.1.7JDBC
3.2Logging
4Authentication & Authorization
4.1Authentication
4.2Authorization
4.2.1Authorization Modules
4.2.1.1JavaScript authorization
4.2.2Authorization checkpoints
4.2.2.1System logon
4.2.2.2Impersonate user
4.2.2.3Acknowledge Alarm
4.2.2.4Write value to item
4.2.2.5Write attributes to item
4.2.2.6Grant client permission
5System Properties Description
6GNU Free Documentation License
openSCADA System Documentation
1.0.0.20130419121712
Authors

This document is part of the openSCADA project.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

1Setup

There are two types of openSCADA applications. The first group is mostly for device driver modules. They are actually plain java applications which can be started in various ways. The driver modules are called Hive and sometimes also DA server.

1.1Plain driver modules

These driver modules actually only provide a java interface (org.openscada.da.core.server.Hive) which they implement. Technically this interface implementation needs a host where it can run in and some way of accessing it from outside. This hosting and exporting is currently done by the exporter application or the exporter classes.

1.1.1Ready to run setups

There are two binary packages which are ready to run. Also see HowToStartWithOstc in the wiki in order to check how to install the OSTC, the graphical test client.

1.1.1.1Windows 32bit

First of all you will need an installation of Java 1.6+ 32bit. The download the driver package from http://download.openscada.org/installer/driverPackage/. I is for integration versions, R is for releases. Install the MSI after downloading.

There will be a new windows service in the services control panel. It is started in the background and be started and stopped using the windows service management.

After the installation you will have some extra menu entries under openSCADA Driver Package which provide some point of entry for configuring the local installation. The file exporter.xml is the main configuration file for this driver instance and can host serveral driver modules (hives) at the same time.

In order to edit the exporter.xml file you might need to run the menu entry Edit exporter.xml using a right click and selecting Run as administrator, since windows might prevent an ordinary user to edit this file.

There is also the folder for custom jars, which are all loaded inside the driver instance. This can be used to add additional driver modules or insert JDBC drivers which are required for the JDBC driver.

Changes are activated by restarting the driver module after changes have been made.

A the moment there is ready to run way for OSGi based applications on Windows.

1.1.1.2Ubuntu 12.04 LTS 64bit

While this is written for Ubuntu 12.04 it should also work with newer versions of Ubuntu and maybe some older. Yet it requires 64bit.

See the wiki documenation at HowToStartUsingApt which explains how to setup the apt repository in your local installation.

1.1.2Manual launching

You may also start the main methods from the protocol exporter directly. For the NET protocol this is org.openscada.da.server.net.Application and for the NGP protocol this is org.openscada.da.server.ngp.Application.

The first argument is the class name of the Hive to start and the second is optinally the connection string where the exporter should bind to. The default is to bind to any interface and a specific port. The port is defined by a system property. openscada.da.net.server.port for the NET protocol and openscada.da.ngp.server.port for the NGP protocol.

Using the direct protocol exporters the hives are initialized using the default constructor. Not all hives support that.

Alternatively you may launch the wrapping exporter application which also provides configuration to the hive instances but using the Node constructor, which is for the moment the preferred way. Launching the exporter application can be done by calling the main method of

1.1.3Configuring
1.1.3.1Exporter
2Communication

The following sections describe the communication behavior of the openSCADA system.

2.1Re-Connects

openSCADA has two different behaviors for connections to servers. One manual mode and one automatic mode. The decision is done by the application which mode to use. It cannot be configured in the connection string itself.

The easier version is the manual mode. Establishing the connection is manually triggered (e.g. by a user) and manually closed. If the connections breaks, it simply stays closed. This mode is, for example, used in the OSTC application. Connections are opened and closed on user request. If the connection breaks, an error message displayed to the user and the connection stays closed until the user re-opens.

In automatic mode the application simply decides weather the connection should stay open or stay closed. openSCADA manages then the connection state and will trigger connect and disconnect calls automatically. In most cases the application simply requests the connection to be open. This mode is primarily used by the master server or the normal end user client.

When the connection is requested to be opened, the appropriate call is made to the connection itself. If the connection break a re-connect will be triggered immediately. The time of this requested will be noted and the next action (connect or disconnect) will be delayed by the quiet period. The default quiet period is 10 seconds, but can be changed using the system property openscada.default.reconnect.delay which holds the time in milliseconds. So if the connection breaks and the first reconnect fails, the next reconnect will not be tried until the quiet period is over. After that the next connection attempt will be made.

3System
3.1System Properties
NameTypeDescription
debugBOOLEANEnable debug mode
line.separatorSTRINGThe line separator used on this system. Provided by the JRE.
logback.configurationFileSTRINGThe file location of the slf4j configuration file.
user.homeSTRINGThe home directory of the user. Provided by the JRE.
3.1.1Aurora
NameTypeDescription
user.homeSTRING
org.openscada.ds.storage.file.*
*.rootSTRINGThe file system location of the DS storage
org.openscada.ds.storage.jdbc.*
*.chunkSizeINTEGERThe size of BASE64 encoded chunks
*.cleanUpCacheDelayLONG
*.disableBufferBOOLEAN
*.disableCacheBOOLEAN
*.encoderCUSTOMThe type of encoding to use for converting binary blobs to a database type
*.instanceSTRINGThe instance name for entries
*.tableSTRING
org.openscada.sec.*
*.callback.XMLSignatureCallback.maxKeepKeyOpenTimeoutINTEGER
*.callback.defaultTimeoutINTEGERThe maximum amount of time in milliseconds the callback may take until it is automatically aborted.
org.openscada.sec.provider.dummy.*
*.authentication.priorityINTEGER
*.authorization.priorityINTEGER
*.priorityINTEGER
org.openscada.sec.provider.plain.property.*
*.dataCUSTOM
*.priorityINTEGER
org.openscada.utils.*
org.openscada.ScriptExecutor.disableCompileBOOLEAN
org.openscada.defaultStringInternerSTRING
*.concurrent.noDefaultLoggerBOOLEAN
org.openscada.utils.osgi.*
org.openscada.osgi.objectPool.defaultPriorityINTEGER
org.openscada.utils.osgi.autostart.*
*.fileSTRING
org.openscada.utils.osgi.jaxws.*
*.baseAddressSTRING
org.openscada.utils.osgi.pidfile.*
*STRING
3.1.2Oxygen
NameTypeDescription
org.openscada.protocol.ngp.common.*
*.handshakeTimeoutINTEGERThe timeout for the handshake phase in milliseconds
*.mc.handshake.disableCompressionBOOLEANAllow disabling the compression module
*.mc.maxTimeoutSecondsINTEGERThe maximum allowed timeout for the communication in milliseconds
*.mc.minTimeoutSecondsINTEGERThe minimim allowed timeout for the communication in milliseconds
org.openscada.protocol.ngp.disableStatsBOOLEANDisable the statistics generation
org.openscada.protocol.ngp.loggerBOOLEANEnable the logger after basic processing (SSL, ZIP, …)
org.openscada.protocol.ngp.logger.rawBOOLEANEnable the logger which logs all raw events (before any processing)
user.homeSTRING
3.1.3Utgard
NameTypeDescription
org.openscada.opc.dcom.*
openscada.dcom.enum-batch-sizeINTEGERDefines the number of entried read in each batch fromt the OPC server
org.openscada.opc.lib.*
rpc.socketTimeoutINTEGERDefines the communication timeout for DCOM RPC requests in milliseconds
3.1.4Atlantis
NameTypeDescription
line.separatorSTRING
openscada.da.hive.configurationSTRINGFile location of the configuration file
org.openscada.ae.server.common.*
org.openscada.ae.common.event.pool.chunkSizeINTEGERThe number of entries to load with the next() method
*.loadinitialINTEGERNumber of entries to load when the query is created
org.openscada.ae.server.common.event.*
org.openscada.ae.common.event.pool.daysToRetrieveINTEGERLimit the number of days to fill the pool with on startup
org.openscada.ae.server.exporter.net.*
openscada.ae.net.exportUriCUSTOMThe default binding URI for AE services for the net protocol
org.openscada.ae.server.exporter.ngp.*
openscada.ae.ngp.exportUriCUSTOMThe default binding URI for AE services for the net protocol
org.openscada.ae.server.net.*
openscada.ae.net.server.portSTRINGThe default binding port for NET AE
*.ServerConnectionHandler.chunkSizeINTEGERThe number of entries each update transmission will contain
org.openscada.ae.server.ngp.*
openscada.ae.ngp.server.portSTRINGThe default port number for AE NGP
org.openscada.ae.server.storage.*
*.allowExternalEntryTimestampBOOLEANAllow the event produce to set the entry timestamp
*.nodeIdSTRINGThe name of this node used for storing events
org.openscada.ae.server.storage.jdbc.*
*.archiveDaysINTEGERThe number of days the events will be kept
*.cleanupPeriodSecondsLONGThe period time for cleanup runs in seconds
*.enableReplicationBOOLEANEnable to not only store event entries but to also write replication entries
*.fields.nodeId.lengthINTEGERThe length of the nodeId field
*.instanceSTRINGThe name of the database instance
*.maxlengthINTEGER
*.query.autoCommitBOOLEANWether to use auto-commit mode
*.query.fetchSizeINTEGER
*.replicationDataFormatSTRING
*.replicationNodeIdSTRING
*.schemaSTRINGThe database schema to use
org.openscada.ae.slave.pull.*
*.local.schemaSTRINGThe schema name of the local schema for pulling in replicated events
org.openscada.ca.file.*
*.provisionJsonUrlSTRINGInitial provision URL using plain JSON files
*.provisionOscarUrlSTRINGInitial provision URL using OSCAR files
*.rootSTRINGThe root path of the CA
org.openscada.ca.jdbc.*
*.chunksizeINTEGER
*.disableInternBOOLEANWether to disable string interning
*.fixnullBOOLEANWether to fix null entries to empty strings
*.initialConfigurationHashSizeINTEGERThe initial hash size for configuration instances
*.instanceSTRINGThe instance name of this CA instance
*.tableSTRINGThe name of the CA data table
org.openscada.ca.server.exporter.ngp.*
openscada.ca.ngp.exportUriSTRINGThe default binding URI for CA services for the net protocol
org.openscada.core.client.*
openscada.default.reconnect.delayLONGThe default amount of time in milliseconds that has to be passed between reconnect attempts
*.AutoReconnectController.disableZombieModeBOOLEANDisable the detection of stuck connections
org.openscada.core.server.common.*
*.ServiceCommon.passwordSTRING
org.openscada.core.server.net.*
*.rejectCompressionBOOLEANAllow rejecting compression requests
org.openscada.da.datasource.formula.*
*.defaultScriptEngineSTRINGThe name of the default script engine
org.openscada.da.datasource.script.*
*.defaultScriptEngineSTRINGThe name of the default script engine
org.openscada.da.datasource.sum.*
*.debugBOOLEANEnable debug mode for summaries
org.openscada.da.master.*
*.internal.masterItemLogSuppressProcessBOOLEAN
org.openscada.da.master.analyzer.*
*.statisticsDelayLONGThe delay for refreshing statistics information in seconds
org.openscada.da.master.common.*
*.manual.sendAllUpdatesBOOLEAN
org.openscada.da.server.common.*
chainStorageService.pathSTRINGThe path where chain information will persisted
*.fairItemMapLockBOOLEANWether to use a fair mutex for looking up items
org.openscada.da.server.exporter.*
*.shutdownPeriodLONGThe number of milliseconds to wait for the shutdown to complete
org.openscada.da.server.exporter.ngp.*
openscada.da.ngp.exportUriCUSTOMThe default binding URI for CA services for the net protocol
org.openscada.da.server.modbus.*
org.openscada.da.server.io.common.connectTimeoutINTEGERConnect timeout in milliseconds
org.openscada.da.server.io.common.defaultTimeoutINTEGERDefault message timeout in milliseconds
org.openscada.da.server.io.common.traceBOOLEANEnable trace mode
*.clearaftertimeoutBOOLEAN
org.openscada.da.server.net.*
openscada.da.net.server.portSTRINGThe default port number for the DA NET
org.openscada.da.server.ngp.*
openscada.da.ngp.server.portSTRINGThe default port number for DA NGP
org.openscada.da.server.opc.*
dcom.debugBOOLEANEnable DCOM debugging
dcom.disableAutoCollectionBOOLEANDisable the auto garbage collection for DCOM objects
*.defaultConfigurationFileSTRING
*.manualValueINTEGER
*.qualityErrorIfLessThenINTEGER
rpc.socketTimeoutLONG
org.openscada.da.server.osgi.exporter.net.*
openscada.da.net.exportUriCUSTOMThe default binding URI for DA services for the net protocol
org.openscada.da.server.proxy.*
*.asyncListenerBOOLEANWether to use the async listener mode
*.switchLockTimeoutINTEGERTimeout for switching connections
org.openscada.hd.client.net.*
*.maxQuerySizeINTEGERThe maximum number of entries to send in a message
org.openscada.hd.server.exporter.net.*
openscada.hd.net.exportUriCUSTOMThe default binding URI for HD services for the net protocol
org.openscada.hd.server.exporter.ngp.*
openscada.hd.ngp.exportUriCUSTOMThe default binding URI for HD services for the NGP protocol
org.openscada.hd.server.importer.hsdb.*
*.rootSTRINGThe root of the path from which to import old HSDB files
org.openscada.hd.server.net.*
openscada.hd.net.server.portSTRINGThe default port number for HD NET
*.maxDataSizeINTEGER
org.openscada.hd.server.ngp.*
openscada.hd.ngp.server.portSTRINGThe default port number for HD NGP
*.maxDataSizeINTEGER
org.openscada.hd.server.storage.common.*
org.openscada.hd.server.storage.hds.renderWhileLoadingBOOLEANSend data to the client while the data is still loading
org.openscada.hd.server.storage.hds.updateListMaxINTEGER
org.openscada.hd.server.storage.hds.updateTimeMaxLONG
org.openscada.hd.server.storage.hds.useNaNsBOOLEAN
org.openscada.hd.server.storage.hds.*
*.coreQueryThreadINTEGERThe number of query threads. Stick with one!
org.openscada.hd.server.storage.master.hds.*
org.openscada.hd.server.storage.hds.basePathSTRINGThe base path of the value archive
org.openscada.hd.server.storage.hds.heartbeatFrequencyINTEGERThe period time in second in which heartbeats will be writte to the archives
*.basePathSTRING
*.instanceCountTargetINTEGERThe limit of open files for the HDS archvie
org.openscada.hd.server.storage.slave.hds.*
*.basePathSTRINGThe base path where the replicated archives are located
*.checkBaseSecondsINTEGERThe period time of checks for new archives, in seconds
*.instanceCountTargetINTEGERThe limit of open files for the HDS slave
org.openscada.net.*
*.mina.GMPPProtocolDecoder.disableInternBOOLEANAllow disabling string intern calls for the protocol codec
org.openscada.sec.audit.log.ae.*
*.debugBOOLEAN
*.logAllBOOLEAN
org.openscada.sec.provider.script.*
*.disableCompileBOOLEANDisable compiling the script fragments
3.1.5Orilla
NameTypeDescription
line.separatorSTRING
org.openscada.ae.ui.views.*
*.config.defaultForceLimitINTEGERMaximum number of entries when the scroll lock will be disabled
org.openscada.da.client.dataitem.details.*
*.extra.forceActiveBOOLEANAllow forcing all views active
org.openscada.sec.ui.providers.windows.*
*.defaultStoreNamesSTRING
org.openscada.ui.blink.*
org.openscada.ui.utils.toggle.delayINTEGERDefault blink toogle delay in milliseconds
3.1.6Dakara
NameTypeDescription
vi.debugBOOLEANThe global debug flag for the visual interface
org.openscada.vi.*
*.data.serviceTimeoutLONGThe timeout for finding the connection service
org.openscada.vi.details.*
*.handler.disableWaitShellBOOLEANDisable the &wait shell&
*.roles.debugInformationSTRING
*.roles.detailViewSTRING
org.openscada.vi.details.swt.*
org.openscada.developerBOOLEAN
*.defaultEnhancedTabsBOOLEANEnable the enhanced tabs by default
*.impl.roles.realtimeListSTRING
*.widgets.roles.detailsDialogSTRING
*.widgets.roles.suppressConfirmSTRING
3.1.7JDBC
NameTypeDescription
org.openscada.jdbc.driverSTRINGThe default class name of the driver to use
org.openscada.jdbc.driver.properties.*STRINGA prefix for system properties used as data source properties
org.openscada.ae.server.storage.jdbc.*
*.driverSTRINGThe name of the database driver to use for the AE storage module
*.properties.*STRINGA prefix for system properties used as data source properties for the AE storage module
org.openscada.ca.jdbc.*
*.driverSTRINGThe name of the database driver to use for the CA module
*.properties.*STRINGA prefix for system properties used as data source properties for the CA module
org.openscada.ds.storage.jdbc.*
*.driverSTRINGThe name of the database driver to use for the DS module
*.properties.*STRINGA prefix for system properties used as data source properties for the DS module
3.2Logging

openSCADA uses SLF4J as logging system. SLF4J is only a meta logging framework and relies on other frameworks to do the actual output.

SLF4J also allows capturing output of other logging frameworks, like log4j and commons logging, and redirects it to itself.

By default openSCADA uses SLF4J in combination with logback as output module. Calls to log4j and commons logging will get redirected to SLF4J while Java Utils Logging (JUL) will not be altered.

The configuration of SLF4J can be specified in various ways, openSCADA will, unless noted otherwise, use the system property logback.configurationFile for configuration.

4Authentication & Authorization

This chapter is split up into two sub-sections, explaining the process of authentication and authorization.

4.1Authentication

Before any further authorization can be performed the system needs to know who wants to perform an operation. Selecting a user and verifying the identity is the process called authentication.

openSCADA uses a simple TCP client/server communication concept with the NGP and NET protocol. After the TCP connection has been established the client side sends its user credentials to the server side. The server verifies and remembers the authenticated user for the lifetime of the TCP connection or closes the TCP connection immediately. Data subscription and control operation can only be performed after the user has been authenticated.

After the user has been authenticated it will be checked if the user has the right to connect to the server. See also the section "authorization".

There are two ways of authenticating a user in openSCADA. The first, simple, mechanism is used for connector modules (aka drivers). Each driver checks for a specific username and password combination during the logon process described above. The server checks for the system property org.openscada.core.server.common.ServiceCommon.password if is is set the value will be used as password. The user name is not relevant but will be remembered by the server. If the password is not set any user is allowed to connect to the service without authentication.

The second, more complex, way is used by OSGi based services (aka master server and hd server ). The server will scan for authentication services using OSGi. All registered services will be consulted in the order of their priority. When the first authentication service returns a valid user, this user will be used. If no service is found or no service accepted nor rejected the user the user information will be anonymous and accepted. Although the user might connect as anonymous during this step, access will be restricted by the authorization step afterwards where it is checked if the user is allowed to log on.

4.2Authorization

At several points the system will check if the user is allowed to perform the requested operation. Without proper authorization the operation in question will not be performed! In other cases there are ongoing authorization requests which are like a continuous request. These ongoing evaluations will report to the requestee when the evaluated state changes.

Authorization is only performed in OSGi based services and works like the previously described authentication phase. All authorization modules registered with OSGi will be queried in the priority order. Each service may accept, reject or abstain for that request. Each request will contain the following information for the service to evaluate:

If the authorization fails the request is not performed and an event log entry will be written by the AE system including the reason of the rejection as reported by the authorization module.

The decision logic is defined by the implementation of the authorization module. If no authorization service is found or all services abstain, the default action is to reject the request.

4.2.1Authorization Modules

The following bundles are available:

4.2.1.1JavaScript authorization

The java script authorization service processes each request by running a set of rules with a java script code fragment that evaluates weather the request is accepted or rejected. The set of rules is specific to the setup.

4.2.2Authorization checkpoints

Each check consists of the following request information:

The following operations will be checked for authorization:

4.2.2.1System logon

When a user logs on first the user itself is authenticated. If this succeeded the system checks if the user has the permission to log on. This will never be checked if the user could not be authenticated. This will be checked directly after the user was authenticated.


ObjectType = "SESSION"
ObjectID = The name of the user
Operation = "CONNECT"
Additional information: <none>
	
4.2.2.2Impersonate user

This will be checked when impersonation is requested during other authorization requests.


ObjectType = "SESSION"
ObjectID = The name of the target user
Operation = "PROXY_USER"
Additional information: <none>
	
4.2.2.3Acknowledge Alarm

Checked when requesting an aknowledgement of a monitor.

This check allows impersonating users. If the impersonation fails, the whole request fails.


ObjectType = "MONITOR"
ObjectID = The name of the monitor to acknowledge
Operation = "AKN"
Additional information: <none>
	
4.2.2.4Write value to item

Checked when requesting to write a value to an item.

This check allows impersonating users. If the impersonation fails, the whole request fails.


ObjectType = "ITEM"
ObjectID = The name of the item to write to
Operation = "WRITE"
Additional information:
	value -> The write value as Variant type
	
4.2.2.5Write attributes to item

Checked when requesting to write attributes to an item.

This check allows impersonating users. If the impersonation fails, the whole request fails.


ObjectType = "ITEM"
ObjectID = The name of the item to write to
Operation = "WRITE_ATTRIBUTES"
Additional information:
	attributes -> The write attributes as Map<String,Variant> type
	
4.2.2.6Grant client permission

The client may request Client Permissions from the server. These aid the client to remove content which is not intended for the user. Still it is only an informational and optional way to clear up the user interface, not a way to block operations.

This is an ongoing evaluation. Any change will be reported to the client immediately.

Rejected request will not get recorded.


ObjectType = "SESSION"
ObjectID = The name of the privilege to grant, as requested by the client
Operation = "PRIV"
Additional information: <none>
	
5System Properties Description
chainStorageService.path
Short DescriptionThe path where chain information will persisted
TypeSTRING
Setting this to a valid directory will enable the persistence modules of the drivers and allows using the old, driver bases, features like levels and manual values. This is deprecated though.
dcom.debug
Short DescriptionEnable DCOM debugging
TypeBOOLEAN
Default Valuefalse
dcom.disableAutoCollection
Short DescriptionDisable the auto garbage collection for DCOM objects
TypeBOOLEAN
Default Valuefalse
debug
Short DescriptionEnable debug mode
TypeBOOLEAN
Default Valuefalse
line.separator
Short DescriptionThe line separator used on this system. Provided by the JRE.
TypeSTRING
logback.configurationFile
Short DescriptionThe file location of the slf4j configuration file.
TypeSTRING
openscada.ae.net.exportUri
Short DescriptionThe default binding URI for AE services for the net protocol
TypeThe format is an openSCADA connection URI
Default Valueae:net://0.0.0.0:1302
openscada.ae.net.server.port
Short DescriptionThe default binding port for NET AE
TypeSTRING
Default Value1302
openscada.ae.ngp.exportUri
Short DescriptionThe default binding URI for AE services for the net protocol
TypeThe format is an openSCADA connection URI
Default Valueae:ngp://0.0.0.0:2201
openscada.ae.ngp.server.port
Short DescriptionThe default port number for AE NGP
TypeSTRING
Default Value2201
openscada.ca.ngp.exportUri
Short DescriptionThe default binding URI for CA services for the net protocol
TypeSTRING
Default Valueca:ngp://0.0.0.0:2401
openscada.da.hive.configuration
Short DescriptionFile location of the configuration file
TypeSTRING
openscada.da.net.exportUri
Short DescriptionThe default binding URI for DA services for the net protocol
TypeThe format is an openSCADA connection URI
Default Valueda:net://0.0.0.0:1202
openscada.da.net.server.port
Short DescriptionThe default port number for the DA NET
TypeSTRING
Default Value1202
openscada.da.ngp.exportUri
Short DescriptionThe default binding URI for CA services for the net protocol
TypeThe format is an openSCADA connection URI
Default Valueda:ngp://0.0.0.0:2101
openscada.da.ngp.server.port
Short DescriptionThe default port number for DA NGP
TypeSTRING
Default Value2101
openscada.dcom.enum-batch-size
Short DescriptionDefines the number of entried read in each batch fromt the OPC server
TypeINTEGER
Default Value10
This number defines the number of entries read in one request when requesting information from the OPC server. The small the size, the worse the communication performance. But if the the requests get "too big" they will fail and communication will break. Only set this value to anything else than the default if you really know what you are doing.
openscada.default.reconnect.delay
Short DescriptionThe default amount of time in milliseconds that has to be passed between reconnect attempts
TypeLONG
Default Value10000
openscada.hd.net.exportUri
Short DescriptionThe default binding URI for HD services for the net protocol
TypeThe format is an openSCADA connection URI
Default Valuehd:net://0.0.0.0:1402
openscada.hd.net.server.port
Short DescriptionThe default port number for HD NET
TypeSTRING
Default Value1402
openscada.hd.ngp.exportUri
Short DescriptionThe default binding URI for HD services for the NGP protocol
TypeThe format is an openSCADA connection URI
Default Valuehd:ngp://0.0.0.0:2301
openscada.hd.ngp.server.port
Short DescriptionThe default port number for HD NGP
TypeSTRING
Default Value2301
org.openscada.ScriptExecutor.disableCompile
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.ae.common.event.pool.chunkSize
Short DescriptionThe number of entries to load with the next() method
TypeINTEGER
Default Value100
org.openscada.ae.common.event.pool.daysToRetrieve
Short DescriptionLimit the number of days to fill the pool with on startup
TypeINTEGER
Default Value90
org.openscada.ae.server.common.loadinitial
Short DescriptionNumber of entries to load when the query is created
TypeINTEGER
Default Value500
org.openscada.ae.server.net.ServerConnectionHandler.chunkSize
Short DescriptionThe number of entries each update transmission will contain
TypeINTEGER
Default Value200
org.openscada.ae.server.storage.allowExternalEntryTimestamp
Short DescriptionAllow the event produce to set the entry timestamp
TypeBOOLEAN
Default Valuefalse
org.openscada.ae.server.storage.jdbc.archiveDays
Short DescriptionThe number of days the events will be kept
TypeINTEGER
Default Value-1
org.openscada.ae.server.storage.jdbc.cleanupPeriodSeconds
Short DescriptionThe period time for cleanup runs in seconds
TypeLONG
Default Value3600
org.openscada.ae.server.storage.jdbc.driver
Short DescriptionThe name of the database driver to use for the AE storage module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver
In case this specific system property is set and the default property org.openscada.jdbc.driver is ignored, also all specific properties from the org.openscada.ae.server.storage.jdbc.properties.* namespace will be used.
org.openscada.ae.server.storage.jdbc.enableReplication
Short DescriptionEnable to not only store event entries but to also write replication entries
TypeBOOLEAN
Default Valuefalse
org.openscada.ae.server.storage.jdbc.fields.nodeId.length
Short DescriptionThe length of the nodeId field
TypeINTEGER
Default Value32
org.openscada.ae.server.storage.jdbc.instance
Short DescriptionThe name of the database instance
TypeSTRING
Default Valuedefault
org.openscada.ae.server.storage.jdbc.maxlength
Short Description
TypeINTEGER
org.openscada.ae.server.storage.jdbc.properties.*
Short DescriptionA prefix for system properties used as data source properties for the AE storage module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver.properties.*
org.openscada.ae.server.storage.jdbc.query.autoCommit
Short DescriptionWether to use auto-commit mode
TypeBOOLEAN
Default Valuefalse
org.openscada.ae.server.storage.jdbc.query.fetchSize
Short Description
TypeINTEGER
Default Value1000
org.openscada.ae.server.storage.jdbc.replicationDataFormat
Short Description
TypeSTRING
org.openscada.ae.server.storage.jdbc.replicationNodeId
Short Description
TypeSTRING
org.openscada.ae.server.storage.jdbc.schema
Short DescriptionThe database schema to use
TypeSTRING
Default Value
org.openscada.ae.server.storage.nodeId
Short DescriptionThe name of this node used for storing events
TypeSTRING
Default ValueThe local hostname
org.openscada.ae.slave.pull.local.schema
Short DescriptionThe schema name of the local schema for pulling in replicated events
TypeSTRING
Default Value
org.openscada.ae.ui.views.config.defaultForceLimit
Short DescriptionMaximum number of entries when the scroll lock will be disabled
TypeINTEGER
Default Value200000
org.openscada.ca.file.provisionJsonUrl
Short DescriptionInitial provision URL using plain JSON files
TypeSTRING
org.openscada.ca.file.provisionOscarUrl
Short DescriptionInitial provision URL using OSCAR files
TypeSTRING
org.openscada.ca.file.root
Short DescriptionThe root path of the CA
TypeSTRING
org.openscada.ca.jdbc.chunksize
Short Description
TypeINTEGER
Default Value0
org.openscada.ca.jdbc.disableIntern
Short DescriptionWether to disable string interning
TypeBOOLEAN
Default Valuefalse
org.openscada.ca.jdbc.driver
Short DescriptionThe name of the database driver to use for the CA module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver
In case this specific system property is set and the default property org.openscada.jdbc.driver is ignored, also all specific properties from the org.openscada.ca.jdbc.properties.* namespace will be used.
org.openscada.ca.jdbc.fixnull
Short DescriptionWether to fix null entries to empty strings
TypeBOOLEAN
Default Valuefalse
org.openscada.ca.jdbc.initialConfigurationHashSize
Short DescriptionThe initial hash size for configuration instances
TypeINTEGER
Default Value4
org.openscada.ca.jdbc.instance
Short DescriptionThe instance name of this CA instance
TypeSTRING
Default Valuedefault
When multiple instances of CAs are working on the same database and table this is the way to distinguish them from another.
org.openscada.ca.jdbc.properties.*
Short DescriptionA prefix for system properties used as data source properties for the CA module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver.properties.*
org.openscada.ca.jdbc.table
Short DescriptionThe name of the CA data table
TypeSTRING
Default Valueca_data
org.openscada.core.client.AutoReconnectController.disableZombieMode
Short DescriptionDisable the detection of stuck connections
TypeBOOLEAN
Default Valuefalse
org.openscada.core.server.common.ServiceCommon.password
Short Description
TypeSTRING
org.openscada.core.server.net.rejectCompression
Short DescriptionAllow rejecting compression requests
TypeBOOLEAN
Default Valuefalse
org.openscada.da.client.dataitem.details.extra.forceActive
Short DescriptionAllow forcing all views active
TypeBOOLEAN
Default Valuefalse
org.openscada.da.datasource.formula.defaultScriptEngine
Short DescriptionThe name of the default script engine
TypeSTRING
Default ValueJavaScript
org.openscada.da.datasource.script.defaultScriptEngine
Short DescriptionThe name of the default script engine
TypeSTRING
Default ValueJavaScript
org.openscada.da.datasource.sum.debug
Short DescriptionEnable debug mode for summaries
TypeBOOLEAN
Default Valuefalse
org.openscada.da.master.analyzer.statisticsDelay
Short DescriptionThe delay for refreshing statistics information in seconds
TypeLONG
Default Value5
org.openscada.da.master.common.manual.sendAllUpdates
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.da.master.internal.masterItemLogSuppressProcess
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.da.server.common.fairItemMapLock
Short DescriptionWether to use a fair mutex for looking up items
TypeBOOLEAN
Default Valuefalse
org.openscada.da.server.exporter.shutdownPeriod
Short DescriptionThe number of milliseconds to wait for the shutdown to complete
TypeLONG
Default Value15000
org.openscada.da.server.io.common.connectTimeout
Short DescriptionConnect timeout in milliseconds
TypeINTEGER
Default Value5000
org.openscada.da.server.io.common.defaultTimeout
Short DescriptionDefault message timeout in milliseconds
TypeINTEGER
Default Value10000
org.openscada.da.server.io.common.trace
Short DescriptionEnable trace mode
TypeBOOLEAN
Default Valuefalse
org.openscada.da.server.modbus.clearaftertimeout
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.da.server.opc.defaultConfigurationFile
Short Description
TypeSTRING
Default Valueconfiguration.xml
org.openscada.da.server.opc.manualValue
Short Description
TypeINTEGER
Default Value216
org.openscada.da.server.opc.qualityErrorIfLessThen
Short Description
TypeINTEGER
Default Value192
org.openscada.da.server.proxy.asyncListener
Short DescriptionWether to use the async listener mode
TypeBOOLEAN
Default Valuefalse
org.openscada.da.server.proxy.switchLockTimeout
Short DescriptionTimeout for switching connections
TypeINTEGER
Default Value2000
org.openscada.defaultStringInterner
Short Description
TypeSTRING
org.openscada.developer
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.ds.storage.file.root
Short DescriptionThe file system location of the DS storage
TypeSTRING
org.openscada.ds.storage.jdbc.chunkSize
Short DescriptionThe size of BASE64 encoded chunks
TypeINTEGER
Default Value0
If the values get stored using BASE64 encoding the will optionally get split up into chunks in order to store them in database VARCHAR fields with a size limit. The chunk size will only be applied when writing the data, reading can cope with any chunk size as read data is simply concatenated.
org.openscada.ds.storage.jdbc.cleanUpCacheDelay
Short Description
TypeLONG
Default Value600
org.openscada.ds.storage.jdbc.disableBuffer
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.ds.storage.jdbc.disableCache
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.ds.storage.jdbc.driver
Short DescriptionThe name of the database driver to use for the DS module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver
In case this specific system property is set and the default property org.openscada.jdbc.driver is ignored, also all specific properties from the org.openscada.ds.storage.jdbc.properties.* namespace will be used.
org.openscada.ds.storage.jdbc.encoder
Short DescriptionThe type of encoding to use for converting binary blobs to a database type
TypeThis is a case insensitive enum an can be either BLOB or BASE64
Default Valueblob
This property chooses how the module will store the binary blobs into the database. It can either be BLOB, which will use the direct database blob type. Or it can be BASE64 which will make a BASE64 encoded string from the blob. See also "org.openscada.ds.storage.jdbc.chunkSize".
org.openscada.ds.storage.jdbc.instance
Short DescriptionThe instance name for entries
TypeSTRING
Default Valuedefault
This is used when multiple instances act on the same database table.
org.openscada.ds.storage.jdbc.properties.*
Short DescriptionA prefix for system properties used as data source properties for the DS module
TypeSTRING
Default ValueDefaults to system property: org.openscada.jdbc.driver.properties.*
org.openscada.ds.storage.jdbc.table
Short Description
TypeSTRING
Default Valuedatastore
org.openscada.hd.client.net.maxQuerySize
Short DescriptionThe maximum number of entries to send in a message
TypeINTEGER
Default Value4096
org.openscada.hd.server.importer.hsdb.root
Short DescriptionThe root of the path from which to import old HSDB files
TypeSTRING
Default Value
org.openscada.hd.server.net.maxDataSize
Short Description
TypeINTEGER
Default Value1024
org.openscada.hd.server.ngp.maxDataSize
Short Description
TypeINTEGER
Default Value1024
org.openscada.hd.server.storage.hds.basePath
Short DescriptionThe base path of the value archive
TypeSTRING
org.openscada.hd.server.storage.hds.coreQueryThread
Short DescriptionThe number of query threads. Stick with one!
TypeINTEGER
Default Value1
org.openscada.hd.server.storage.hds.heartbeatFrequency
Short DescriptionThe period time in second in which heartbeats will be writte to the archives
TypeINTEGER
Default Value3
org.openscada.hd.server.storage.hds.renderWhileLoading
Short DescriptionSend data to the client while the data is still loading
TypeBOOLEAN
Default Valuefalse
org.openscada.hd.server.storage.hds.updateListMax
Short Description
TypeINTEGER
Default Value10
org.openscada.hd.server.storage.hds.updateTimeMax
Short Description
TypeLONG
Default Value1000
org.openscada.hd.server.storage.hds.useNaNs
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.hd.server.storage.master.hds.basePath
Short Description
TypeSTRING
Default ValueDefaults to system property: org.openscada.hd.server.storage.hds.basePath
org.openscada.hd.server.storage.master.hds.instanceCountTarget
Short DescriptionThe limit of open files for the HDS archvie
TypeINTEGER
Default Value10
org.openscada.hd.server.storage.slave.hds.basePath
Short DescriptionThe base path where the replicated archives are located
TypeSTRING
org.openscada.hd.server.storage.slave.hds.checkBaseSeconds
Short DescriptionThe period time of checks for new archives, in seconds
TypeINTEGER
Default Value60
org.openscada.hd.server.storage.slave.hds.instanceCountTarget
Short DescriptionThe limit of open files for the HDS slave
TypeINTEGER
Default Value10
org.openscada.jdbc.driver
Short DescriptionThe default class name of the driver to use
TypeSTRING
This system property defines the name of the class to use as JDBC driver. This property itself is not used directly but acts as a default for other modules that use JDBC.
org.openscada.jdbc.driver.properties.*
Short DescriptionA prefix for system properties used as data source properties
TypeSTRING
This is only a prefix for system properties. The prefix 'org.openscada.jdbc.driver.properties.' will be cut off and the remainder will be used as properties for the JDBC data source. The actual names used depend on the JDBC driver and the data source used. For Postgres one could use: org.openscada.jdbc.properties.serverName=localhost org.openscada.jdbc.properties.user=openscada org.openscada.jdbc.properties.password=openscada org.openscada.jdbc.properties.databaseName=openscada which would get passed to Postgres as: serverName=localhost user=openscada password=openscada databaseName=openscada
org.openscada.net.mina.GMPPProtocolDecoder.disableIntern
Short DescriptionAllow disabling string intern calls for the protocol codec
TypeBOOLEAN
Default Valuefalse
org.openscada.osgi.objectPool.defaultPriority
Short Description
TypeINTEGER
Default Value0
org.openscada.protocol.ngp.common.handshakeTimeout
Short DescriptionThe timeout for the handshake phase in milliseconds
TypeINTEGER
Default Value10000
org.openscada.protocol.ngp.common.mc.handshake.disableCompression
Short DescriptionAllow disabling the compression module
TypeBOOLEAN
Default Valuefalse
org.openscada.protocol.ngp.common.mc.maxTimeoutSeconds
Short DescriptionThe maximum allowed timeout for the communication in milliseconds
TypeINTEGER
Default Value600
org.openscada.protocol.ngp.common.mc.minTimeoutSeconds
Short DescriptionThe minimim allowed timeout for the communication in milliseconds
TypeINTEGER
Default Value10
org.openscada.protocol.ngp.disableStats
Short DescriptionDisable the statistics generation
TypeBOOLEAN
Default Valuefalse
org.openscada.protocol.ngp.logger
Short DescriptionEnable the logger after basic processing (SSL, ZIP, …)
TypeBOOLEAN
Default Valuefalse
org.openscada.protocol.ngp.logger.raw
Short DescriptionEnable the logger which logs all raw events (before any processing)
TypeBOOLEAN
Default Valuefalse
org.openscada.sec.audit.log.ae.debug
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.sec.audit.log.ae.logAll
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.sec.callback.XMLSignatureCallback.maxKeepKeyOpenTimeout
Short Description
TypeINTEGER
Default Value300000
org.openscada.sec.callback.defaultTimeout
Short DescriptionThe maximum amount of time in milliseconds the callback may take until it is automatically aborted.
TypeINTEGER
Default Value20000
org.openscada.sec.provider.dummy.authentication.priority
Short Description
TypeINTEGER
org.openscada.sec.provider.dummy.authorization.priority
Short Description
TypeINTEGER
org.openscada.sec.provider.dummy.priority
Short Description
TypeINTEGER
Default Value0
org.openscada.sec.provider.plain.property.data
Short Description
TypeA double token format, records are split by | and fields by #
Default Valueempty
Defines a list of known users. Contains the a table of users in the format <user1>#<password1>#<role1>,<role2>|<user2>#<password2>#|…. The password is in plaintext.
org.openscada.sec.provider.plain.property.priority
Short Description
TypeINTEGER
Default Value0
org.openscada.sec.provider.script.disableCompile
Short DescriptionDisable compiling the script fragments
TypeBOOLEAN
Default Valuefalse
If possible the script fragments will be compiled for better performance. Still one can disable this behavior by setting the system property to "true".
org.openscada.sec.ui.providers.windows.defaultStoreNames
Short Description
TypeSTRING
Default ValueWindows-MY,Windows-ROOT
org.openscada.ui.utils.toggle.delay
Short DescriptionDefault blink toogle delay in milliseconds
TypeINTEGER
Default Value300
org.openscada.utils.concurrent.noDefaultLogger
Short Description
TypeBOOLEAN
Default Valuefalse
org.openscada.utils.osgi.autostart.file
Short Description
TypeSTRING
org.openscada.utils.osgi.jaxws.baseAddress
Short Description
TypeSTRING
Default Valuehttp://localhost:9999
org.openscada.utils.osgi.pidfile
Short Description
TypeSTRING
org.openscada.vi.data.serviceTimeout
Short DescriptionThe timeout for finding the connection service
TypeLONG
Default Value1000
org.openscada.vi.details.handler.disableWaitShell
Short DescriptionDisable the &wait shell&
TypeBOOLEAN
Default Valuefalse
org.openscada.vi.details.roles.debugInformation
Short Description
TypeSTRING
Default Valuedeveloper
org.openscada.vi.details.roles.detailView
Short Description
TypeSTRING
Default Valueoperator
org.openscada.vi.details.swt.defaultEnhancedTabs
Short DescriptionEnable the enhanced tabs by default
TypeBOOLEAN
Default Valuefalse
org.openscada.vi.details.swt.impl.roles.realtimeList
Short Description
TypeSTRING
Default Valueadmin
org.openscada.vi.details.swt.widgets.roles.detailsDialog
Short Description
TypeSTRING
Default Valueadmin
org.openscada.vi.details.swt.widgets.roles.suppressConfirm
Short Description
TypeSTRING
Default Valuedeveloper
rpc.socketTimeout
Short DescriptionDefines the communication timeout for DCOM RPC requests in milliseconds
TypeINTEGER
Default Value0
Sets the communication timeout of the DCOM RPC requests in milliseconds. If the value is left with the default (zero) requests will never fail due to communication timeout. Use the default with care. If you are really communicating over a remote line, you should consider setting a value here.
user.home
Short DescriptionThe home directory of the user. Provided by the JRE.
TypeSTRING
vi.debug
Short DescriptionThe global debug flag for the visual interface
TypeBOOLEAN
Default Valuefalse
6GNU Free Documentation License

                GNU Free Documentation License
                 Version 1.3, 3 November 2008


 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
     <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.

This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense.  It
complements the GNU General Public License, which is a copyleft
license designed for free software.

We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does.  But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book.  We recommend this License
principally for works whose purpose is instruction or reference.


1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License.  Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein.  The "Document", below,
refers to any such manual or work.  Any member of the public is a
licensee, and is addressed as "you".  You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.

A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject.  (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.)  The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.

The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.  If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant.  The Document may contain zero
Invariant Sections.  If the Document does not identify any Invariant
Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.  A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters.  A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text.  A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification.  Examples of
transparent image formats include PNG, XCF and JPG.  Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page.  For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.

The "publisher" means any person or entity that distributes copies of
the Document to the public.

A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language.  (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document.  These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no
other conditions whatsoever to those of this License.  You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute.  However, you may accept
compensation in exchange for copies.  If you distribute a large enough
number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and
you may publicly display copies.


3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover.  Both covers must also clearly and legibly identify
you as the publisher of these copies.  The front cover must present
the full title with all words of the title equally prominent and
visible.  You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.

It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to
give them a chance to provide you with an updated version of the
Document.


4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it.  In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct
   from that of the Document, and from those of previous versions
   (which should, if there were any, be listed in the History section
   of the Document).  You may use the same title as a previous version
   if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
   responsible for authorship of the modifications in the Modified
   Version, together with at least five of the principal authors of the
   Document (all of its principal authors, if it has fewer than five),
   unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
   Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
   adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
   giving the public permission to use the Modified Version under the
   terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
   and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
   to it an item stating at least the title, year, new authors, and
   publisher of the Modified Version as given on the Title Page.  If
   there is no section Entitled "History" in the Document, create one
   stating the title, year, authors, and publisher of the Document as
   given on its Title Page, then add an item describing the Modified
   Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
   public access to a Transparent copy of the Document, and likewise
   the network locations given in the Document for previous versions
   it was based on.  These may be placed in the "History" section.
   You may omit a network location for a work that was published at
   least four years before the Document itself, or if the original
   publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
   Preserve the Title of the section, and preserve in the section all
   the substance and tone of each of the contributor acknowledgements
   and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
   unaltered in their text and in their titles.  Section numbers
   or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements".  Such a section
   may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
   or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant.  To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version.  Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity.  If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.


5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy.  If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications".  You must delete all sections
Entitled "Endorsements".


6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the rules
of this License for verbatim copying of each of the documents in all
other respects.

You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert a
copy of this License into the extracted document, and follow this
License in all other respects regarding verbatim copying of that
document.


7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.


8. TRANSLATION

Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections.  You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers.  In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.


9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.

However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.

Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.


10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in
detail to address new problems or concerns.  See
http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation.  If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.  If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.

11. RELICENSING

"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works.  A
public wiki that anybody can edit is an example of such a server.  A
"Massive Multiauthor Collaboration" (or "MMC") contained in the site
means any set of copyrightable works thus published on the MMC site.

"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 
license published by Creative Commons Corporation, a not-for-profit 
corporation with a principal place of business in San Francisco, 
California, as well as future copyleft versions of that license 
published by that same organization.

"Incorporate" means to publish or republish a Document, in whole or in 
part, as part of another Document.

An MMC is "eligible for relicensing" if it is licensed under this 
License, and if all works that were first published under this License 
somewhere other than this MMC, and subsequently incorporated in whole or 
in part into the MMC, (1) had no cover texts or invariant sections, and 
(2) were thus incorporated prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.