// The server port - the port to run Pokemon Showdown under exports.port = 8000; // proxyip - proxy IPs with trusted X-Forwarded-For headers // This can be either false (meaning not to trust any proxies) or an array // of strings. Each string should be either an IP address or a subnet given // in CIDR notation. You should usually leave this as `false` unless you // know what you are doing. exports.proxyip = false; // Pokemon of the Day - put a pokemon's name here to make it Pokemon of the Day // The PotD will always be in the #2 slot (not #1 so it won't be a lead) // in every Random Battle team. exports.potd = ''; // crash guard - write errors to log file instead of crashing // This is normally not recommended - if Node wants to crash, the // server needs to be restarted // Unfortunately, socket.io bug 409 requires some sort of crash guard // https://github.com/LearnBoost/socket.io/issues/609 exports.crashguard = true; // login server data - don't forget the http:// and the trailing slash // This is the URL of the user database and ladder mentioned earlier. // Don't change this setting - there aren't any other login servers right now exports.loginserver = 'http://play.pokemonshowdown.com/'; exports.loginserverkeyalgo = "RSA-SHA1"; exports.loginserverpublickeyid = 2; exports.loginserverpublickey = "-----BEGIN RSA PUBLIC KEY-----\n" + "MIICCgKCAgEAtFldA2rTCsPgqsp1odoH9vwhf5+QGIlOJO7STyY73W2+io33cV7t\n" + "ReNuzs75YBkZ3pWoDn2be0eb2UqO8dM3xN419FdHNORQ897K9ogoeSbLNQwyA7XB\n" + "N/wpAg9NpNu00wce2zi3/+4M/2H+9vlv2/POOj1epi6cD5hjVnAuKsuoGaDcByg2\n" + "EOullPh/00TkEkcyYtaBknZpED0lt/4ekw16mjHKcbo9uFiw+tu5vv7DXOkfciW+\n" + "9ApyYbNksC/TbDIvJ2RjzR9G33CPE+8J+XbS7U1jPvdFragCenz+B3AiGcPZwT66\n" + "dvHAOYRus/w5ELswOVX/HvHUb/GRrh4blXWUDn4KpjqtlwqY4H2oa+h9tEENCk8T\n" + "BWmv3gzGBM5QcehNsyEi9+1RUAmknqJW0QOC+kifbjbo/qtlzzlSvtbr4MwghCFe\n" + "1EfezeNAtqwvICznq8ebsGETyPSqI7fSbpmVULkKbebSDw6kqDnQso3iLjSX9K9C\n" + "0rwxwalCs/YzgX9Eq4jdx6yAHd7FNGEx4iu8qM78c7GKCisygZxF8kd0B7V7a5UO\n" + "wdlWIlTxJ2dfCnnJBFEt/wDsL54q8KmGbzOTvRq5uz/tMvs6ycgLVgA9r1xmVU+1\n" + "6lMr2wdSzyG7l3X3q1XyQ/CT5IP4unFs5HKpG31skxlfXv5a7KW5AfsCAwEAAQ==\n" + "-----END RSA PUBLIC KEY-----\n"; // crashguardemail - if the server has been running for more than an hour // and crashes, send an email using these settings, rather than locking down // the server. Uncomment this definition if you want to use this feature; // otherwise, all crashes will lock down the server. /**exports.crashguardemail = { options: { host: 'mail.example.com', port: 465, secure: true, auth: { user: 'example@domain.com', pass: 'password' } }, from: 'crashlogger@example.com', to: 'admin@example.com', subject: 'Pokemon Showdown has crashed!' };**/ // report joins and leaves - shows messages like " joined" // Join and leave messages are small and consolidated, so there will never // be more than one line of messages. // If this setting is set to `true`, it will override the client-side // /hidejoins configuration for users. // This feature can lag larger servers - turn this off if your server is // getting more than 80 or so users. exports.reportjoins = true; // report joins and leaves periodically - sends silent join and leave messages in batches // This setting will only be effective if `reportjoins` is set to false, and users will // only be able to see the messages if they have the /showjoins client-side setting enabled. // Set this to a positive amount of milliseconds if you want to enable this feature. exports.reportjoinsperiod = 0; // report battles - shows messages like "OU battle started" in the lobby // This feature can lag larger servers - turn this off if your server is // getting more than 160 or so users. exports.reportbattles = true; // report joins and leaves in battle - shows messages like " joined" in battle // Set this to false on large tournament servers where battles get a lot of joins and leaves. // Note that the feature of turning this off is deprecated. exports.reportbattlejoins = true; // moderated chat - prevent unvoiced users from speaking // This should only be enabled in special situations, such as temporarily // when you're dealing with huge influxes of spammy users. exports.chatmodchat = false; exports.battlemodchat = false; exports.pmmodchat = false; // forced timer - force the timer on for all battles // Players will be unable to turn it off. // This setting can also be turned on with the command /forcetimer. exports.forcetimer = false; // backdoor - allows Pokemon Showdown system operators to provide technical // support for your server // This backdoor gives system operators (such as Zarel) console admin // access to your server, which allow them to provide tech support. This // can be useful in a variety of situations: if an attacker attacks your // server and you are not online, if you need help setting up your server, // etc. If you do not trust Pokemon Showdown with admin access, you should // disable this feature. exports.backdoor = true; // List of IPs and user IDs with dev console (>> and >>>) access. // The console is incredibly powerful because it allows the execution of // arbitrary commands on the local computer (as the user running the // server). If an account with the console permission were compromised, // it could possibly be used to take over the server computer. As such, // you should only specify a small range of trusted IPs and users here, // or none at all. By default, only localhost can use the dev console. // In addition to connecting from a valid IP, a user must *also* have // the `console` permission in order to use the dev console. // Setting this to an empty array ([]) will disable the dev console. exports.consoleips = ['127.0.0.1']; // Whether to watch the config file for changes. If this is enabled, // then the config.js file will be reloaded when it is changed. // This can be used to change some settings using a text editor on // the server. exports.watchconfig = true; // logchat - whether to log chat rooms. exports.logchat = false; // logchallenges - whether to log challenge battles. Useful for tournament servers. exports.logchallenges = false; // loguserstats - how often (in milliseconds) to write user stats to the // lobby log. This has no effect if `logchat` is disabled. exports.loguserstats = 1000 * 60 * 10; // 10 minutes // validatorprocesses - the number of processes to use for validating teams // simulatorprocesses - the number of processes to use for handling battles // You should leave both of these at 1 unless your server has a very large // amount of traffic (i.e. hundreds of concurrent battles). exports.validatorprocesses = 1; exports.simulatorprocesses = 1; // inactiveuserthreshold - how long a user must be inactive before being pruned // from the `users` array. The default is 1 hour. exports.inactiveuserthreshold = 1000 * 60 * 60; // Custom avatars. // This allows you to specify custom avatar images for users on your server. // Place custom avatar files under the /config/avatars/ directory. // Users must be specified as userids -- that is, you must make the name all // lowercase and remove non-alphanumeric characters. // // Your server *must* be registered in order for your custom avatars to be // displayed in the client. exports.customavatars = { //'userid': 'customavatar.png' }; // Tournament announcements // When tournaments are created in rooms listed below, they will be announced in // the server's main tournament room (either the specified tourroom or by default // the room 'tournaments') exports.tourroom = ''; exports.tourannouncements = [/* roomids */]; // appealurl - specify a URL containing information on how users can appeal // disciplinary actions on your section. You can also leave this blank, in // which case users won't be given any information on how to appeal. exports.appealurl = ''; // replsocketprefix - the prefix for the repl sockets to be listening on // replsocketmode - the file mode bits to use for the repl sockets exports.replsocketprefix = './logs/repl/'; exports.replsocketmode = 0600; // permissions and groups: // Each entry in `grouplist' is a seperate group. Some of the members are "special" // while the rest is just a normal permission. // The order of the groups determines their ranking. // The special members are as follows: // - symbol: Specifies the symbol of the group (as shown in front of the username) // - id: Specifies an id for the group. // - name: Specifies the human-readable name for the group. // - root: If this is true, the group can do anything. // - inherit: The group uses the group specified's permissions if it cannot // find the permission in the current group. Never make the graph // produced using this member have any cycles, or the server won't run. // - jurisdiction: The default jurisdiction for targeted permissions where one isn't // explictly specified. "Targeted permissions" are permissions // that might affect another user, such as `ban' or `promote'. // 's' is a special group where it means the user itself only // and 'u' is another special group where it means all groups // lower in rank than the current group. // - roomonly: forces the group to be a per-room moderation rank only. // - globalonly: forces the group to be a global rank only. // All the possible permissions are as follows: // - console: Developer console (>>). // - lockdown: /lockdown and /endlockdown commands. // - hotpatch: /hotpatch, /crashfixed and /savelearnsets commands. // - ignorelimits: Ignore limits such as chat message length. // - promote: Promoting and demoting. Will only work if the target user's current // group and target group are both in jurisdiction. // - room: /roompromote to (eg. roomvoice) // - ban: Banning and unbanning. // - mute: Muting and unmuting. // - lock: locking (ipmute) and unlocking. // - receivemutedpms: Receive PMs from muted users. // - forcerename: /fr command. // - redirect: /redir command. // - ip: IP checking. // - alts: Alt checking. // - modlog: view the moderator logs. // - broadcast: Broadcast informational commands. // - declare: /declare command. // - announce: /announce command. // - modchat: Set modchat. // - potd: Set PotD. // - forcewin: /forcewin command. // - battlemessage: /a command. // - tournaments: creating tournaments (/tour new, settype etc.) // - tournamentsmoderation: /tour dq, autodq, end etc. // - tournamentsmanagement: enable/disable tournaments. exports.grouplist = [ { symbol: '~', id: "admin", name: "Administrator", root: true, globalonly: true }, { symbol: '&', id: "leader", name: "Leader", inherit: '@', jurisdiction: '@u', promote: 'u', forcewin: true, declare: true, modchatall: true, rangeban: true, potd: true, disableladder: true, globalonly: true, tournamentsmanagement: true }, { symbol: '#', id: "owner", name: "Room Owner", inherit: '@', jurisdiction: 'u', roommod: true, roomdriver: true, declare: true, modchatall: true, roomonly: true, tournamentsmanagement: true }, { symbol: '\u2605', id: "player", name: "Player", inherit: '+', roomvoice: true, modchat: true, roomonly: true, privateroom: true, joinbattle: true }, { symbol: '@', id: "mod", name: "Moderator", inherit: '%', jurisdiction: 'u', ban: true, modchat: true, roomvoice: true, forcerename: true, ip: true, alts: '@u', tournaments: true }, { symbol: '%', id: "driver", name: "Driver", inherit: '+', jurisdiction: 'u', announce: true, warn: true, kick: true, mute: true, lock: true, forcerename: true, timer: true, modlog: true, alts: '%u', bypassblocks: 'u%@&~', receiveauthmessages: true, tournamentsmoderation: true, jeopardy: true, joinbattle: true }, { symbol: '+', id: "voice", name: "Voice", inherit: ' ', broadcast: true }, { symbol: ' ', ip: 's', alts: 's' } ];