mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-05-04 12:37:56 -05:00
If `loglobby` is enabled in the config file, lobby logs are written to logs/lobby/yyyy-mm/yyyy-mm-dd.txt. Lobby logs are kept in their own subdirectory of the 'logs' directory in order to avoid a namespace clash with a format named 'logs', and also because there are many reasons why one might want to copy the battle logs without copying the lobby logs.
231 lines
9.1 KiB
JavaScript
231 lines
9.1 KiB
JavaScript
// The server port - the port to run Pokemon Showdown under
|
|
exports.port = 8000;
|
|
|
|
// The setuid user. If this is specified, the Pokemon Showdown server will
|
|
// setuid() to this user after initialisation.
|
|
//
|
|
// WARNING: This is not generally the right way to run the server. If you want
|
|
// to run the server on a port below 1024, the correct way to do it
|
|
// is to run the server on port X > 1024 and then forward port the
|
|
// preferred port to port X.
|
|
//
|
|
// If the server *.js files are writeable by the setuid user, this
|
|
// feature is equivalent to giving root to the setuid user, because
|
|
// they can just inject code to give themselves root into the part
|
|
// of the code before setuid() is called.
|
|
//
|
|
// This feature should be used with caution.
|
|
exports.setuid = '';
|
|
|
|
// protocol - WebSockets ("ws") or Socket.IO ("io").
|
|
// We recommend using WebSockets unless you have a really compelling reason not to.
|
|
exports.protocol = 'ws';
|
|
|
|
// The server ID - a unique ID describing this Showdown server
|
|
exports.serverid = 'testserver';
|
|
|
|
// A signed assertion from the login server must be presented to this
|
|
// server within this many seconds. This can be 1 minute (or possibly
|
|
// less) unless your clock is wrong. In order to accommodate servers
|
|
// with inaccurate clocks, the default is 25 hours.
|
|
exports.tokenexpiry = 25*60*60;
|
|
|
|
// The server token - to access the login database and ladder on pokemonshowdown.com
|
|
// This token must be registered for accessing the ladder, but you will
|
|
// still be able to login with an unregistered token.
|
|
exports.servertoken = 'exampletoken-382hgraw4jr2tioq';
|
|
|
|
// Proxy IP - a list of proxy IPs with trusted X-Forwarded-For headers
|
|
// The list can be an array, or a string with whatever delimiter you wish.
|
|
// Leave at false to never trust any proxy. Set to true to trust all
|
|
// proxies. DO NOT SET TO TRUE UNLESS YOU ARE SURE YOU ARE BEHIND A
|
|
// TRUSTED PROXY.
|
|
exports.proxyip = false;
|
|
|
|
// 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 = 1;
|
|
exports.loginserverpublickey = "-----BEGIN PUBLIC KEY-----\n" +
|
|
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2O8mOdl6ELJvx+XufPNk\n" +
|
|
"piAwG6G7dOG61RCly4inBtQ8OgAcotfbq1km1FIZJ4II7IzcmGAwQLoBb9TfpNNi\n" +
|
|
"+rN4shVth15riL4ip6YjKNxH4EFPTgvq5GnPmXdIIDxYnzRd3hIVqsCu6iKNcQm+\n" +
|
|
"e/yyQEd4NRCtNeQEHodkZK/7usZzY9gzePQeS6OclzXaS6G99dNBP3Z6frapEckE\n" +
|
|
"B2TSjcOvFaHWqbMR1Tk+B7ZEFvOXjsjlcL8PByqRErHglIxeujqtjzR46sLq6ofJ\n" +
|
|
"vohoUaig9PjfEfyPgcObzOjUki9QLcRcvqUZGTKmDUTgwjCGY22OlvfYI+qW0hxx\n" +
|
|
"mQIDAQAB\n" +
|
|
"-----END PUBLIC KEY-----\n";
|
|
|
|
// 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 randomly-generated 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;
|
|
|
|
// local sysop - automatically promote users who connect from
|
|
// 127.0.0.1 to the highest ranking group (Usually &, or sysop)
|
|
exports.localsysop = false;
|
|
|
|
// report joins and leaves - shows messages like "<USERNAME> joined"
|
|
// Join and leave messages are small and consolidated, so there will never
|
|
// be more than one line of messages.
|
|
// This feature can lag larger servers - turn this off if your server is
|
|
// getting more than 80 or so users.
|
|
exports.reportjoins = true;
|
|
|
|
// report battles - shows messages like "OU battle started"
|
|
// This feature can lag larger servers - turn this off if your server is
|
|
// getting more than 160 or so users.
|
|
exports.reportbattles = true;
|
|
|
|
// moderated chat - prevent unregistered, unvoiced users from speaking
|
|
// This should only be enabled temporarily, when you're dealing with
|
|
// huge influxes of spammy users.
|
|
exports.modchat = false;
|
|
|
|
// backdoor - allow Zarel to provide tech support for your server
|
|
// This backdoor gives Zarel admin access to your server, which allows him
|
|
// 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.
|
|
// It is a backdoor, though, so if you do not trust Zarel you should
|
|
// disable this feature.
|
|
exports.backdoor = true;
|
|
|
|
// List of IPs from which the dev console (>> and >>>) can be used.
|
|
// 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 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. The main intended application of this is for people
|
|
// who have SSH access to the server to be able to add themselves
|
|
// to `consoleips` above and have it take effect without restarting
|
|
// the server. It is set to false by default because it probably
|
|
// will not be useful to most users. Note that there will be
|
|
// a brief delay between you saving the new config file and it
|
|
// being reloaded by the server. This feature might not work on Windows.
|
|
exports.watchconfig = false;
|
|
|
|
// loglobby - whether to log the lobby.
|
|
exports.loglobby = false;
|
|
|
|
// permissions and groups:
|
|
// Each entry in `groupsranking' specifies the ranking of the groups.
|
|
// Each entry in `groups' is a seperate group. Some of the members are "special"
|
|
// while the rest is just a normal permission.
|
|
// The special members are as follows:
|
|
// - 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.
|
|
// All the possible permissions are as follows:
|
|
// - 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.
|
|
// - ban: Banning and unbanning.
|
|
// - mute: Muting and unmuting.
|
|
// - receivemutedpms: Receive PMs from muted users.
|
|
// - forcerename: /fr command.
|
|
// - forcerenameto: /frt command.
|
|
// - redirect: /redir command.
|
|
// - ip: IP checking.
|
|
// - alts: Alt checking.
|
|
// - broadcast: Broadcast informational commands.
|
|
// - announce: /announce command.
|
|
// - modchat: Set modchat.
|
|
// - potd: Set PotD.
|
|
// - forcewin: /forcewin command.
|
|
// - battlemessage: /a command.
|
|
exports.groupsranking = [' ', '+', '%', '@', '&', '~'];
|
|
exports.groups = {
|
|
'~': {
|
|
id: "admin",
|
|
name: "Administrator",
|
|
root: true,
|
|
rank: 5
|
|
},
|
|
'&': {
|
|
id: "leader",
|
|
name: "Leader",
|
|
inherit: '@',
|
|
jurisdiction: '@u',
|
|
promote: 'u',
|
|
forcewin: true,
|
|
declare: true,
|
|
modchatall: true,
|
|
potd: true,
|
|
namelock: true,
|
|
forcerenameto: true,
|
|
disableladder: true,
|
|
rank: 4
|
|
},
|
|
'@': {
|
|
id: "mod",
|
|
name: "Moderator",
|
|
inherit: '%',
|
|
jurisdiction: 'u',
|
|
ban: true,
|
|
modchat: true,
|
|
redirect: true,
|
|
forcerename: true,
|
|
modlog: true,
|
|
ip: true,
|
|
alts: '@u',
|
|
rank: 3
|
|
},
|
|
'%': {
|
|
id: "driver",
|
|
name: "Driver",
|
|
inherit: '+',
|
|
jurisdiction: 'u',
|
|
announce: true,
|
|
warn: true,
|
|
mute: true,
|
|
forcerename: true,
|
|
timer: true,
|
|
alts: '%u',
|
|
bypassblocks: 'u%@&~',
|
|
rank: 2
|
|
},
|
|
'+': {
|
|
id: "voice",
|
|
name: "Voice",
|
|
inherit: ' ',
|
|
broadcast: true,
|
|
rank: 1
|
|
},
|
|
' ': {
|
|
ip: 's',
|
|
alts: 's',
|
|
rank: 0
|
|
}
|
|
};
|