ServerConfiguration - festivaldev/Paradise GitHub Wiki

Server Configuration

Each main server component has their own configuration file. This page lists all available configuration options and their default values.

If you're looking for individual service configuration files, see Service Configuration.

Web Services

ℹ️ The Web Services configuration file is located at <path to Paradise.WebServices>\Paradise.Settings.WebServices.xml.

Key Type Default Description
EnableSSL bool false Controls the usage of SSL. See HTTPS/SSL for instructions on how to set up SSL for your server.
SSLCertificateName string Sets the friendly name of the SSL certificate to use. The friendly name must be unique or else the server will fail to start.
Hostname string localhost Sets the hostname that Web Services are listening on. Can also be an IP address or FQDN.
WebServicePort int 8080 Sets the port that Web Services are listening on. Allowed values are 1024-65535.
WebServicePrefix string UberStrike.DataCenter.WebService.CWS. The prefix used for web service names.
WebServiceSuffix string Contract.svc The suffix used for web service names.
FileServerPort int 8081 Sets the port that File Server listening on. Allowed values are 1024-65535.
FileServerRoot string wwwroot Sets the path of the File Server root directory, relative to Paradise.WebServices.exe
TCPCommPort int 8082 Sets the port of the TCP socket listener used for multi-server communication (see Setting up Multi-Server). Allowed values are 1024-65535.
EncryptionInitVector string Sets the Init Vector for the Rijndael encryption.
EncryptionPassPhrase string Sets the passphrase for the Rijndael encryption.
ServerPassPhrases string[] [] List of passphrases per server ID. Each entry has an Id attribute uniquely identifying each Realtime server that is allowed to connect to this master server.

To enable encrypted Web Service traffic (apart from SSL), you need to fill out EncryptionInitVector and EncryptionPassPhrase. Please note that EncryptionInitVector must be exactly 16 characters long.

To generate server IDs and passphrases for the ServerPassPhrases key, use the server generate command in the console. See Commands for more details.

⚠️ If you have allowed incoming connections to the Paradise server through the Firewall and decide to change server ports in your configuration, please remember to update these Firewall rules accordingly.

Example

<ParadiseServerSettings>
	<EnableSSL>false</EnableSSL>
	<SSLCertificateName></SSLCertificateName>

	<Hostname></Hostname>

	<WebServicePort>8080</WebServicePort>
	<WebServicePrefix>UberStrike.DataCenter.WebService.CWS.</WebServicePrefix>
	<WebServiceSuffix>Contract.svc</WebServiceSuffix>

	<FileServerPort>8081</FileServerPort>
	<FileServerRoot>wwwroot</FileServerRoot>

	<TCPCommPort>8082</TCPCommPort>
	
	<EncryptionInitVector>01234567889abcdef</EncryptionInitVector>
	<EncryptionPassPhrase>mysupersecretwebservicepassphrase</EncryptionPassPhrase>

	<ServerPassPhrases>
		<ServerPassPhrase Id="12345678-1234-abcd-1ab2-1234abcd5678">mysupersecretcommserverpassphrase</ServerPassPhrase>
		<ServerPassPhrase Id="87654321-4321-dcba-2ba1-8765dcba4321">mysupersecretgameserverpassphrase</ServerPassPhrase>
	</ServerPassPhrases>
</ParadiseServerSettings>

Discord Bot Integration

If you decide to include Discord Bot Integration plugin in your Web Services instance, a configuration file needs to be placed at <path to Paradise.WebServices>\Paradise.Settings.Discord.xml. To create your own Discord bot, please follow the Discord Developer instructions: https://discord.com/developers/docs/intro. For more info about the Discord Bot Integration plugin, see Discord Bot Integration.
The following table lists all possible configuration options for the Discord Bot integration:

Key Type Default Description
EnableDiscordIntegration bool false A global toggle to enable to disable Discord Bot integration.
Token string The secret used to authenticate your application on Discord.
WebHookUrl string The URL of a webhook on your Discord server, used for lobby chat integration.
ChatIntegration bool true Enables or disables lobby chat integration.
CommandIntegration bool true Enables or disables sending commands to the Web Services (only for authorized members).
PlayerAnnouncements bool false Enables or disables player join or leave announcements.
GameAnnouncements bool false Enables or disables game room creation messages.
ErrorLog bool false Enables or disables posting runtime errors as messages.
GuildId long The Discord server (aka. "Guild") on which this bot instance runs on.
ChatChannelId long Sets the channel to use for the lobby chat integration.
CommandChannelId long Sets the channel to use for sending commands to the Web Services.
PlayerAnnouncementChannelId long Sets the channel to use for player join or leave announcements.
GameAnnouncementChannelId long Sets the channel to use for game room creation messages.

Guild and Channel IDs can be copied in Discord by enabling Developer Mode in User Settings → Advanced → Developer Mode and right-clicking your server's icon or a channel respectively.

To run commands through Discord, you need to link your Discord profile with your UberStrike profile. For more details, see Discord Bot Integration.

Example

<ParadiseDiscordSettings>
	<EnableDiscordIntegration>true</EnableDiscordIntegration>
    
	<Token><!-- Your Discord Bot Token here --></Token>
	<WebHookUrl><!-- Your Discord Webhook URL here --></WebHookUrl>

	<ChatIntegration>true</ChatIntegration>
	<CommandIntegration>true</CommandIntegration>
	<PlayerAnnouncements>false</PlayerAnnouncements>
	<GameAnnouncements>false</GameAnnouncements>
    <ErrorLog>false</ErrorLog>

	<GuildId>0000000000000000000</GuildId>
	<ChatChannelId>0000000000000000000</ChatChannelId>
	<CommandChannelId>0000000000000000000</CommandChannelId>
	<PlayerAnnouncementChannelId>0000000000000000000</PlayerAnnouncementChannelId>
	<GameAnnouncementChannelId>0000000000000000000</GameAnnouncementChannelId>
</ParadiseDiscordSettings>

Realtime Server

ℹ️ The Realtime Server configuration file is located at <path to Paradise.Realtime>\bin\Paradise.Realtime.xml.

Key Type Default Description
MasterServerUrl string https://localhost Used by the Realtime server to connect to the Web Services and TCP socket. If both the Web Services and the Realtime server are running on the same machine and no explicit Hostname is given in the Web Services config, this can be left at default. Otherwise, you need to replace localhost with the IP address or FQDN of the server the Web Services are running on.
WebServicePort int 8080 The port used to connect to the Web Services.
WebServiceEndpoint1 string 2.0 Specifies the API level to use in depending the client version
WebServicePrefix string UberStrike.DataCenter.WebService.CWS. The prefix used for web service names.
WebServiceSuffix string Contract.svc The suffix used for web service names.
FileServerPort int 8081 The port used to connect to the File Server.
TCPCommPort int 8082 The port used to connect to the TCP socket for multi-server support.
CommApplicationSettings
GameApplicationSettings
Dictionary<string, string> Sets the ApplicationIdentifier and EncryptionPassPhrase for the Comm and Game applications, respectively.
HeartbeatInterval int 5 The interval in which to send heartbeat checks to clients.
HeartbeatTimeout int 5 The timeout after which a client is disconnected after sending a heartbeat request.
EnableHashVerification bool true Enables verification of hashes sent by uberdaemon and uberheartbeat.
DiscordChatIntegration bool true Toggles chat events sent to Discord.
DiscordPlayerAnnouncements bool true Toggles player join/leave events sent to Discord.
DiscordGameAnnouncements bool true Toggles game creation events sent to Discord.
DiscordErrorLog bool true Toggles error logs sent to Discord.

⚠️ If you have allowed incoming connections to the Paradise server through the Firewall and decide to change server ports in your configuration, please remember to update these Firewall rules accordingly.

[1] Allowed values for WebServiceEndpoint
  • 1.0.1 (for 4.3.8/4.3.9)
  • 1.0.2 (for 4.3.10.1)
  • 2.0 (for 4.7.1)

Example

<?xml version="1.0" encoding="utf-8" ?>
<ApplicationConfiguration>
	<MasterServerUrl>http://localhost</MasterServerUrl>

	<WebServicePort>8080</WebServicePort>
	<WebServiceEndpoint>2.0</WebServiceEndpoint>
	<WebServicePrefix>UberStrike.DataCenter.WebService.CWS.</WebServicePrefix>
	<WebServiceSuffix>Contract.svc</WebServiceSuffix>

	<FileServerPort>8081</FileServerPort>
	<TCPCommPort>8082</TCPCommPort>

	<CommApplicationSettings>
		<ApplicationIdentifier>12345678-1234-abcd-1ab2-1234abcd5678</ApplicationIdentifier>
		<EncryptionPassPhrase>mysupersecretcommserverpassphrase</EncryptionPassPhrase>
	</CommApplicationSettings>

	<GameApplicationSettings>
		<ApplicationIdentifier>87654321-4321-dcba-2ba1-8765dcba4321</ApplicationIdentifier>
		<EncryptionPassPhrase>mysupersecretgameserverpassphrase</EncryptionPassPhrase>
	</GameApplicationSettings>

	<HeartbeatInterval>5</HeartbeatInterval>
	<HeartbeatTimeout>5</HeartbeatTimeout>
</ApplicationConfiguration>

Composite/Junk Hashes

Unlike previous versions of Paradise, Composite and Junk hashes, used by uberdaemon and uberheartbeat respectively, are stored in simple text files alongside the Realtime server binaries. These files are constantly being watched for changes, so that hash verification can always use up to date hash values. Just put each Composite (allowed) and Junk (disallowed) hash on a separate line.

⚠️ **GitHub.com Fallback** ⚠️