NEBULAE MUTIUSER SERVER HELP
:
INSTALLING THE SERVER
SAMPLE SERVER CONFIGURATION FILE
#--------------------------------------------------------- #-- Tabuleiro Nebulae MultiUserServer Configuration file - #-- Version 2 #--------------------------------------------------------- #-- Lines starting with a poud sign # are comments. #-- To enable a configuration directive uncomment the line #-- and edit the value. Default values are appropriate #-- for most server installations #--------------------------------------------------------- #-- When editing entries that accept multiple values make #-- sure the directive is specified in a single line with #-- the values separated by a ; sign #ServerOwnerName = default #--indicates the server operator name #ServerSerialNumber = XXXXXXXXXXXXXX #-- enter your serial number and uncomment the line to #-- register the server. Enabling this directive unlocks #-- the 10 user connection limit in the evaluation version ConnectionLimit = 1000 #-- The maximum number of simultaneous user connections #-- allowed to the server, up to the maximum supported by #-- the underlying platform and Java virtual machine #ServerPort = 1626 #--default port for TCP connections used when no #--server ip addresses are specified #ServerIPAddress = 192.168.0.2:1627;192.168.0.2:1626 #-- use the ServerIPAddress directive to specify ip #-- addresses and ports the server will listen to. #-- Multiple addresses can be specified and separated #-- by a ; sign. Port numbers are separated by a : sign. #-- If this option is not set the server will attempt to #-- listen on the default host address #UDPServerAddress = 192.168.0.2:1627 #-- Local UDP address and starting port. The server will #-- allocate one port for each user connected, so if 100 #-- users are connected and using UDP the server will be #-- listening on ports 1627 to 1727, for example. #EnableUDP = 0 #-- UDP protocol is disabled by default. To enable it #-- please uncomment the line and edit the value so it #-- reads EnableUDP = 1 #EnableServerSideScripting = 0 #-- Server side scripting is disabled by default. To enable it #-- please uncomment the line and edit the value so it #-- reads EnableServerSideScripting = 1 #ServerOutputToLogFile = 1 #-- by default the server will log messages to a log file #-- set this option to 0 to display messages in the shell #LogFileName = serverlog.txt #-- the name of the server log file #ClearLogAtStartup = 1 #-- by default the log file is cleared when the server is #-- started. Set this option to 0 to append messages to #-- the current log #LogServerEvents = 1 #LogMovieEvents = 1 #LogGroupEvents = 1 #LogUserEvents = 1 #LogDBEvents = 1 #LogInvalidMsgEvents = 0 #LogDebugInformation = 0 #LogScriptEvents = 0 #-- It is possible to configure the types of events that #-- will be logged by the server, in order to keep the #-- log files small. The default set provides detailed #-- information and is a good setting for most servers #MaxMessageSize = 16384 #-- Uncomment the line to set the maximum message size #-- accepted in TCP connections #MaxUDPPacket = 1024 #-- The UDP protocol is ideal for smaller messages sent at #-- frequent intervals. The maximum size for a UDP packet #-- can not exceed 16384. Larger values will use more #-- RAM on the server, so use the default if possible. #tcpNoDelay = 1 #-- by default the tcpNoDelay setting is used on all TCP #-- connections. This disables the Nagle algorithm used in #-- most TCP implementations, and decreases latency #soLingerTime = -1 #-- by default setting the SO_Linger is disabled. #-- This is a low-level TCP socket setting. It can be set to #-- any value (in milliseconds), but most installations should #-- simply use the default OS value #ReducedThreadsSynchronousMode = 0 #-- EXPERIMENTAL *might be removed in the future* #-- Nebulae will not spawn queue threads for message delivery, #-- operating in synchronous mode instead. This option is #-- disabled by default, and Nebulae will use threads liberally #-- to queue user messages, discarding messages when the queues are #-- full. In synchronous mode messages are never discarded, so in #-- overloaded systems this can cause a delay in delivery. #-- The main advantage of the experimental synchronous method is #-- a great reduction of load in systems where thread scheduling #-- is expensive, but it can cause concurrency errors in theory. #EncryptionKey = ASecretKeyWithoutSpaces #-- all login messages sent to the server are encrypted #-- to protect the passwords. For additional protection you #-- may want to specify your own encryption key. #-- If you decide to use a different key you have to make #-- sure all your multiuser movies specify the same encryption #-- key in the ConnectToNetServer function, or server #-- connections will fail #AllowMovies = default #-- uncomment this line to specify a list of movie names that #-- are allowed to connect to the server, separated by ; . #-- Example: AllowMovies = Chat;racegame;lobby #-- by default all movies are allowed to connect #MoviePathName = http://yourserver.com/test.dcr;E:\\directory\\localtest.dir #-- MoviePathName restricts movie connections only to authorized #-- locations. Please check the Director 8.5 online help for more #-- information about the connectToNetServer syntax required to #-- use this property. By default this property is not enabled, #-- and all movies are allowed to connect #StartupMovies = none #-- uncomment this line to specify a list of movie names that #-- are allowed to connect to the server, separated by ; . #-- Example: StartupMovies = Chat;adminMovie #-- the movies and any associated server side scripts are loaded #-- when the server starts, and have the persistent flag enabled #IdleTimeOut = 600 #-- sometimes an user looses Internet connection in a way where #-- is not possible for the server to detect the problem immediately. #-- In this case the server will drop the connection after the #-- number of seconds indicated in the IdleTimeOut property, #-- only if the server does not receive any data from the user #-- during this period. Do not set this value too low or users that #-- do not interact much with the server will also be dropped! #-- The default 10 minutes value is reasonable for most applications. #DropUserWhenReconnectingFromSameIP = 1 #-- sometimes an user looses Internet connection in a way where #-- is not possible for the server to detect the problem immediately. #-- The user will be disconnected after the IdleTimeOut period #-- specified in the property above. However, if the server receives #-- a login attempt from the same IP address and with the same user #-- name and authentication than the existing connection will be dropped #-- immediately, as it is considered that the user probably dropped #-- and is trying a reconnection before the IdleTimeOut check #-- takes place. On some scenarios (NAT) this can lead to a denial #-- of service attack as another user with the same external IP #-- can drop an existing user by attempting a login with the same #-- username and password. #-- If this property is set to 0 then the server will ignore #-- reconnection attempts from the same IP and username, and will #-- keep the existing connection until it times out. #-- EnableFloodPrevention = 1 #-- FloodDetectionThreshold = 20 #-- These directives are enabled by default, and instruct the server #-- to inspect the timestamps of all messages looking for flooding #-- patterns. Flooding is usually done with messages that have the #-- same or inconsistent timestamps. The user will be disconnected #-- when the server detects more than FloodDetectionThreshold messages #-- coming from the same user with an invalid timestamp pattern. #-- PreventUserIdSpoofing = 1 #-- There is a known security flaw in the SMUS protocol where users #-- spoof the id of the sender by manipulating the message stream. This #-- can allow execution of privileged commands and affects the original #-- SMUS as well as previous versions of Nebulae. In Nebulae 2 this #-- setting forces the server to detect and rewrite the userid of all #-- messages to prevent this exploit. #ServerStatusReportInterval = 300 #-- controls the interval between server state reports in the log #-- file, in seconds. The default is 5 minutes (300 seconds.) #MaxUserMsgQueue = 100 #-- the maximum number of outgoing messages stored by the server #-- in each user queue. When an user queue is full additional messages #-- sent to this user are discarded by the server. Raising this value #-- substantially is not recommended, since it will increase memory #-- usage in the server without any improvement in performance. Clients #-- with large message queues are probably experiencing connection #-- problems or poor connectivity anyway, so dropping additional messages #-- is a way to protect server resources and response times to other #-- clients in this situation. #MaxGroupMsgQueue = 100 #-- the maximum number of outgoing messages stored by the server #-- in each group queue. This is similar to the MaxUserMsgQueue, but #-- applies to ServerGroup objects. #MaxDatabaseMsgQueue = 100 #-- the maximum number of internal messages stored by the server #-- in the Database objects queue. This is similar to the MaxUserMsgQueue, but #-- applies to messages sent to the internal SQL and database objects. #MaxLoginMsgQueue = 50 #-- the maximum number of internal messages stored by the server #-- in the login queue. This is similar to the MaxUserMsgQueue, but #-- applies only to login messages. Logins are special because the server #-- must lock key objects before allowing a login, to avoid duplicate users or #-- movies from being created. These messages have a higher overhead and #-- must be limited to avoid a denial of service attack on the server MaxDispatcherMsgQueue = 2500 #-- the maximum number of internal messages stored by the server #-- in the internal master queue. The dispatcher queue is a thread with high #-- priority in Nebulae, and usually delivers messages as fast as possible #MaxMsgQueueWait = 5 #-- this setting applies to all message queues. #-- It controls for how many milliseconds the server will try to post #-- a message to a queue before discarding it. We do not recommend changing #-- this setting, since it is already fine tuned for optimal operation. #MaxLoginWait = 15 #-- the maximum time in seconds the server will wait for processing #-- of a login message before it disconnects the socket and drops the #-- request. This prevents a bogus login package from locking up the #-- login queue. #-- The following commands are related to MUS DBObjects support #-- The internal Nebulae MUS DB is created using the HSQL database #-- engine, and stored as a collection of files named NebulaeDB.* #EnableDatabaseCommands = 1 #-- Enables the internal Nebulae Database to handle DBObject functions. #-- Database support is required for user authentication and #-- administrative access to the server. However it is possible #-- to run Nebulae without MUS database support, if necessary #-- Server operators may also use an SQL database connection for user #-- authentication (see UseSQLDatabaseForAuthentication directive below) #CreateUser = admin,pass,100 #-- Uncomment this line in order to create a user in the MUS database #-- when the server starts. It is recommended that at least one #-- user with administrative userlevel (100) is present so the #-- server can be restarted and administered remotely #DeclareAttribute = attributename #-- Uncomment this line to declare a MUS DB attribute when the server #-- starts. This is equivalent to the system.DBAdmin.declareAttribute #-- message. Multiple attributes can be specified, separated by a ; #-- The following commands are related to SQL connection support #-- Nebulae can serve as a gateway to an SQL compatible database, #-- provided a JDBC compliant driver is available. #EnableSQLDatabase = 0 #-- Enables the SQL database connection.To enable it #-- please uncomment the line and edit the value so it #-- reads EnableSQLDatabase = 1 #SQLBackend = hsqldb #-- This directive provides a hint to the Nebulae server about the #-- SQL database backend being used. This value configures Nebulae to #-- use non-standard implementation of SQL types (text instead of VARCHAR #-- on MySQL, for example) #-- #-- The following values are recognized at this time: #-- #-- hsqldb : The HSQL database engine (www.hsqldb.org) #-- mysql: MySQL (www.mysql.org) #-- postgresql: PostgreSQL DBMS (www.postgresql.org) #-- ODBCaccess: Microsoft's Access database via ODBC connection #-- default: standard SQL implementation #SQLDatabaseDriver = org.hsqldb.jdbcDriver #SQLDatabaseURL = jdbc:hsqldb:NebulaeSQL #SQLDatabaseUsername = sa #SQLDatabasePassword = #-- These directives configure the JDBC driver, URL, username and password #-- used to open the SQL connection. Default values are given for a #-- connection using the HSQL database engine, included with Nebulae. #-- As an example, a typical connection to an ODBC source (Access or MS #-- SQL Server) would read as: #SQLDatabaseDriver = sun.jdbc.odbc.JdbcOdbcDriver #SQLDatabaseURL = jdbc:odbc:YourODBCSourceName #SQLDatabaseUsername = #SQLDatabasePassword = #UseSQLDatabaseForAuthentication = 0 #-- When enabled the SQL connection is used for user authentication to #-- the Nebulae server instead of the built-in MUS DB. To enable it #-- please uncomment the line and edit the value so it #-- reads UseSQLDatabaseForAuthentication = 1 #CreateSQLUserTable = 0 #-- This directive instructs Nebulae to create a default user table #-- in the SQL database, to be used for user authentication. #-- Nebulae expects a table named USERS with the following SQL fields: #-- ID INT, NAME VARCHAR, PASSWORD VARCHAR, USERLEVEL INT, LASTLOGIN VARCHAR #-- To let Nebulae create this table for your just uncomment the line #-- and edit the value so it reads #CreateSQLUserTable = 1 #-- This option is only useful when an SQL database is being used for #-- user authentication. #CreateSQLUser = admin,pass,100 #-- Uncomment this line in order to create a user in the SQL database #-- when the server starts. It is recommended that at least one #-- user with administrative userlevel (100) is present so the #-- server can be restarted and administered remotely. #-- This option is only useful when an SQL database is being used for #-- user authentication. #Authentication = UserRecordOptional #-- This setting controls user access authentication to the system, #-- and it is designed to match the implementation of Macromedia #-- ShockwaveMultiUser Server 3. Possible values are: #-- #-- None : anyone can login with any username and password #-- #-- UserRecordRequired: only users with an account in the #-- database can login, and the correct password is required #-- #-- UserRecordOptional: usernames are checked against the database #-- for user authentication and to determine the user access level. #-- Users that do not have an account will be allowed to login #-- with the default user level #DefaultUserLevel = 20 #-- The default user access level attributed to users that login #-- and do not have an account on the database #DefaultUserStatus = 20 #-- This value will be the default #status attribute of newly #-- created users in the database (using DBAdmin.createUser) #UserLevel.System.Server.GetMovies = 20 #UserLevel.System.Server.GetMovieCount = 20 #UserLevel.System.Server.GetTime = 20 #UserLevel.System.Server.GetVersion = 20 #UserLevel.System.Server.Enable = 80 #UserLevel.System.Server.Disable = 80 #UserLevel.System.Server.DisconnectAll = 80 #UserLevel.System.Server.Restart = 100 #UserLevel.System.Server.Shutdown = 100 #UserLevel.System.Server.SendEmail = 80 #UserLevel.System.Movie.Enable = 80 #UserLevel.System.Movie.Disable = 80 #UserLevel.System.Movie.Delete = 80 #UserLevel.System.Movie.GetGroups = 20 #UserLevel.System.Movie.GetUserCount = 20 #UserLevel.System.Movie.GetGroupCount = 20 #UserLevel.System.Group.GetUsers = 20 #UserLevel.System.Group.GetUserCount = 20 #UserLevel.System.Group.CreateUniqueName = 20 #UserLevel.System.Group.Join = 20 #UserLevel.System.Group.Leave = 20 #UserLevel.System.Group.Enable = 80 #UserLevel.System.Group.Disable = 80 #UserLevel.System.Group.Delete = 80 #UserLevel.System.User.Delete = 80 #UserLevel.System.User.GetGroupCount = 20 #UserLevel.System.User.GetGroups = 20 #UserLevel.System.User.GetAddress = 80 #UserLevel.System.User.ChangeMovie = 20 #UserLevel.System.Group.SetAttribute=20 #UserLevel.System.Group.GetAttribute=20 #UserLevel.System.Group.DeleteAttribute=20 #UserLevel.System.Group.GetAttributeNames=20 #UserLevel.System.DBAdmin.CreateUser= 80 #UserLevel.System.DBAdmin.DeleteUser= 80 #UserLevel.System.DBAdmin.CreateApplication= 80 #UserLevel.System.DBAdmin.DeleteApplication= 80 #UserLevel.System.DBAdmin.CreateApplicationData= 20 #UserLevel.System.DBAdmin.DeleteApplicationData= 20 #UserLevel.System.DBAdmin.GetUserCount= 80 #UserLevel.System.DBAdmin.GetUserNames= 80 #UserLevel.System.DBAdmin.DeclareAttribute= 80 #UserLevel.System.DBAdmin.DeleteAttribute= 80 #UserLevel.System.DBAdmin.Ban= 80 #UserLevel.System.DBAdmin.RevokeBan= 80 #UserLevel.System.DBAdmin.GetApplicationCount= 80 #UserLevel.System.DBAdmin.GetApplicationNames= 80 #UserLevel.System.DBAdmin.GetAttributeCount= 80 #UserLevel.System.DBAdmin.GetAttributeNames= 80 #UserLevel.System.DBAdmin.GetBanned= 80 #UserLevel.System.DBUser.SetAttribute= 20 #UserLevel.System.DBUser.GetAttribute= 20 #UserLevel.System.DBUser.SetSystemAttribute = 100 #UserLevel.System.DBUser.GetSystemAttribute = 100 #UserLevel.System.DBUser.GetAttributeNames= 20 #UserLevel.System.DBUser.DeleteAttribute= 20 #UserLevel.System.DBPlayer.SetAttribute= 20 #UserLevel.System.DBPlayer.GetAttribute= 20 #UserLevel.System.DBPlayer.GetAttributeNames= 20 #UserLevel.System.DBPlayer.DeleteAttribute= 20 #UserLevel.System.DBApplication.SetAttribute= 20 #UserLevel.System.DBApplication.GetAttribute= 20 #UserLevel.System.DBApplication.GetAttributeNames= 20 #UserLevel.System.DBApplication.DeleteAttribute= 20 #UserLevel.System.DBApplication.GetApplicationData= 20 #UserLevel.System.SQL.executeUpdate= 20 #UserLevel.System.SQL.executeQuery= 20 #UserLevel.System.SQL.connect= 80 #UserLevel.System.SQL.disconnect= 80 #-- #-- These entries define the minimum user access level #-- required to use each server function. Administrative #-- operations are usually reserved to superusers with #-- level 80 or higher.