Allow admin to disable explore mode

Some public servers want to disable explore mode, so
make it configurable in sysconf.
This commit is contained in:
Pasi Kallinen
2015-03-31 18:14:10 +03:00
parent 8ee2d5976e
commit ca80675d59
8 changed files with 27 additions and 0 deletions

View File

@@ -2922,6 +2922,10 @@ SHELLERS
A list of users who are allowed to use the shell escape command (!). The
syntax is the same as WIZARDS.
.lp
EXPLORERS
A list of users who are allowed to use the explore mode. The
syntax is the same as WIZARDS.
.lp
MAXPLAYERS
Limit the maximum number of games that can be running at the same time.
.lp

View File

@@ -3494,6 +3494,10 @@ asterisk (*) allows anyone to start a game in wizard mode.
A list of users who are allowed to use the shell escape command (!).
The syntax is the same as WIZARDS.
%.lp
\item[\ib{EXPLORERS}]
A list of users who are allowed to use the explore mode.
The syntax is the same as WIZARDS.
%.lp
\item[\ib{MAXPLAYERS}]
Limit the maximum number of games taht can be running at the same time.
%.lp

View File

@@ -10,6 +10,7 @@ struct sysopt {
char *support; /* local support contact */
char *recover; /* how to run recover - may be overridden by win port */
char *wizards;
char *explorers;
char *shellers; /* like wizards, for ! command (-DSHELL) */
char *debugfiles; /* files to show debugplines in. '*' is all. */
int env_dbgfl; /* 1: debugfiles comes from getenv("DEBUGFILES")

View File

@@ -509,6 +509,14 @@ enter_explore_mode(VOID_ARGS)
} else if (discover) {
You("are already in explore mode.");
} else {
#ifdef SYSCF
if (!sysopt.explorers ||
!sysopt.explorers[0] ||
!check_user_string(sysopt.explorers)) {
You("cannot access explore mode.");
return 0;
}
#endif
pline(
"Beware! From explore mode there will be no return to normal game.");
if (paranoid_query(ParanoidQuit,

View File

@@ -2184,6 +2184,9 @@ int src;
} else if (src == SET_IN_SYS && match_varname(buf, "SHELLERS", 8)) {
if (sysopt.shellers) free(sysopt.shellers);
sysopt.shellers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "EXPLORERS", 7)) {
if (sysopt.explorers) free(sysopt.explorers);
sysopt.explorers = dupstr(bufp);
} else if (src == SET_IN_SYS && match_varname(buf, "DEBUGFILES", 5)) {
if (sysopt.debugfiles) free(sysopt.debugfiles);
/* if showdebug() has already been called (perhaps we've added

View File

@@ -33,6 +33,7 @@ sys_early_init()
#endif
sysopt.env_dbgfl = 0; /* haven't checked getenv("DEBUGFILES") yet */
sysopt.shellers = NULL;
sysopt.explorers = NULL;
sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */
/* record file */

View File

@@ -14,6 +14,9 @@ WIZARDS=root games
# Uses the same syntax as the WIZARDS option above.
#SHELLERS=
# Users allowed to use #exploremode. Same syntax as WIZARDS above.
EXPLORERS=*
# Show debugging information originating from these source files.
# Use '*' for all, or list source files separated by spaces.
# Only available if game has been compiled with DEBUG.

View File

@@ -14,6 +14,9 @@ WIZARDS=*
# Uses the same syntax as the WIZARDS option above.
#SHELLERS=
# Users allowed to use #exploremode. Same syntax as WIZARDS above.
EXPLORERS=*
# Show debugging information originating from these source files.
# Use '*' for all, or list source files separated by spaces.
# Only available if game has been compiled with DEBUG.