Introduce [local] to "set log [local] ...". This spits
logging out to the screen in terminal mode - should be good for installation problem diagnosis.
This commit is contained in:
parent
03486e0a41
commit
a1e8f9372a
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: command.c,v 1.88 1997/10/26 01:02:26 brian Exp $
|
||||
* $Id: command.c,v 1.89 1997/10/26 12:42:09 brian Exp $
|
||||
*
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
@ -119,7 +119,7 @@ HelpCommand(struct cmdtab const * list,
|
||||
}
|
||||
|
||||
int
|
||||
IsInteractive()
|
||||
IsInteractive(int Display)
|
||||
{
|
||||
char *mes = NULL;
|
||||
|
||||
@ -134,7 +134,7 @@ IsInteractive()
|
||||
else if (mode & MODE_DEDICATED)
|
||||
mes = "Working in dedicated mode.";
|
||||
if (mes) {
|
||||
if (VarTerm)
|
||||
if (Display && VarTerm)
|
||||
fprintf(VarTerm, "%s\n", mes);
|
||||
return 0;
|
||||
}
|
||||
@ -391,11 +391,17 @@ ShowLogLevel()
|
||||
|
||||
if (!VarTerm)
|
||||
return 0;
|
||||
fprintf(VarTerm, "Log:");
|
||||
for (i = LogMIN; i < LogMAXCONF; i++) {
|
||||
if (LogIsKept(i))
|
||||
|
||||
fprintf(VarTerm, "Log: ");
|
||||
for (i = LogMIN; i <= LogMAX; i++)
|
||||
if (LogIsKept(i) & LOG_KEPT_SYSLOG)
|
||||
fprintf(VarTerm, " %s", LogName(i));
|
||||
}
|
||||
|
||||
fprintf(VarTerm, "\nLocal:");
|
||||
for (i = LogMIN; i <= LogMAX; i++)
|
||||
if (LogIsKept(i) & LOG_KEPT_LOCAL)
|
||||
fprintf(VarTerm, " %s", LogName(i));
|
||||
|
||||
fprintf(VarTerm, "\n");
|
||||
|
||||
return 0;
|
||||
@ -740,7 +746,7 @@ TerminalCommand(struct cmdtab const * list, int argc, char **argv)
|
||||
fprintf(VarTerm, "LCP state is [%s]\n", StateNames[LcpFsm.state]);
|
||||
return 1;
|
||||
}
|
||||
if (!IsInteractive())
|
||||
if (!IsInteractive(1))
|
||||
return (1);
|
||||
if (OpenModem(mode) < 0) {
|
||||
if (VarTerm)
|
||||
@ -961,18 +967,32 @@ SetLogLevel(struct cmdtab const * list, int argc, char **argv)
|
||||
int i;
|
||||
int res;
|
||||
char *arg;
|
||||
void (*Discard)(int), (*Keep)(int);
|
||||
void (*DiscardAll)(void);
|
||||
|
||||
res = 0;
|
||||
if (strcasecmp(argv[0], "local")) {
|
||||
Discard = LogDiscard;
|
||||
Keep = LogKeep;
|
||||
DiscardAll = LogDiscardAll;
|
||||
} else {
|
||||
argc--;
|
||||
argv++;
|
||||
Discard = LogDiscardLocal;
|
||||
Keep = LogKeepLocal;
|
||||
DiscardAll = LogDiscardAllLocal;
|
||||
}
|
||||
|
||||
if (argc == 0 || (argv[0][0] != '+' && argv[0][0] != '-'))
|
||||
LogDiscardAll();
|
||||
(*DiscardAll)();
|
||||
while (argc--) {
|
||||
arg = **argv == '+' || **argv == '-' ? *argv + 1 : *argv;
|
||||
for (i = LogMIN; i <= LogMAX; i++)
|
||||
if (strcasecmp(arg, LogName(i)) == 0) {
|
||||
if (**argv == '-')
|
||||
LogDiscard(i);
|
||||
(*Discard)(i);
|
||||
else
|
||||
LogKeep(i);
|
||||
(*Keep)(i);
|
||||
break;
|
||||
}
|
||||
if (i > LogMAX) {
|
||||
@ -1306,7 +1326,7 @@ static struct cmdtab const SetCommands[] = {
|
||||
{"loopback", NULL, SetLoopback, LOCAL_AUTH,
|
||||
"Set loopback facility", "set loopback on|off"},
|
||||
{"log", NULL, SetLogLevel, LOCAL_AUTH,
|
||||
"Set log level", "set log [+|-]value..."},
|
||||
"Set log level", "set log [local] [+|-]value..."},
|
||||
{"login", NULL, SetVariable, LOCAL_AUTH,
|
||||
"Set login script", "set login chat-script", (void *) VAR_LOGIN},
|
||||
{"mru", NULL, SetInitialMRU, LOCAL_AUTH,
|
||||
|
@ -15,7 +15,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: command.h,v 1.7 1997/09/25 00:52:34 brian Exp $
|
||||
* $Id: command.h,v 1.8 1997/10/26 01:02:28 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -47,5 +47,5 @@ extern int aft_cmd;
|
||||
|
||||
extern int SetVariable(struct cmdtab const *, int, char **, int);
|
||||
extern void Prompt(void);
|
||||
extern int IsInteractive(void);
|
||||
extern int IsInteractive(int);
|
||||
extern void DecodeCommand(char *, int, int);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: $
|
||||
* $Id: log.c,v 1.17 1997/10/26 01:03:05 brian Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -40,6 +40,7 @@ static char *LogNames[] = {
|
||||
#define MSK(n) (1<<((n)-1))
|
||||
|
||||
static u_long LogMask = MSK(LogLINK) | MSK(LogCARRIER) | MSK(LogPHASE);
|
||||
static u_long LogMaskLocal = MSK(LogERROR) | MSK(LogALERT) | MSK(LogWARN);
|
||||
static int LogTunno = -1;
|
||||
|
||||
static int
|
||||
@ -70,6 +71,13 @@ LogKeep(int id)
|
||||
LogMask |= MSK(id);
|
||||
}
|
||||
|
||||
void
|
||||
LogKeepLocal(int id)
|
||||
{
|
||||
if (id >= LogMIN && id <= LogMAXCONF)
|
||||
LogMaskLocal |= MSK(id);
|
||||
}
|
||||
|
||||
void
|
||||
LogDiscard(int id)
|
||||
{
|
||||
@ -77,20 +85,35 @@ LogDiscard(int id)
|
||||
LogMask &= ~MSK(id);
|
||||
}
|
||||
|
||||
void
|
||||
LogDiscardLocal(int id)
|
||||
{
|
||||
if (id >= LogMIN && id <= LogMAXCONF)
|
||||
LogMaskLocal &= ~MSK(id);
|
||||
}
|
||||
|
||||
void
|
||||
LogDiscardAll()
|
||||
{
|
||||
LogMask = 0;
|
||||
}
|
||||
|
||||
void
|
||||
LogDiscardAllLocal()
|
||||
{
|
||||
LogMaskLocal = 0;
|
||||
}
|
||||
|
||||
int
|
||||
LogIsKept(int id)
|
||||
{
|
||||
if (id < LogMIN)
|
||||
if (id < LogMIN || id > LogMAX)
|
||||
return 0;
|
||||
if (id <= LogMAXCONF)
|
||||
return LogMask & MSK(id);
|
||||
return id <= LogMAX;
|
||||
if (id > LogMAXCONF)
|
||||
return LOG_KEPT_LOCAL | LOG_KEPT_SYSLOG;
|
||||
|
||||
return ((LogMaskLocal & MSK(id)) ? LOG_KEPT_LOCAL : 0) |
|
||||
((LogMask & MSK(id)) ? LOG_KEPT_SYSLOG : 0);
|
||||
}
|
||||
|
||||
void
|
||||
@ -121,15 +144,23 @@ LogPrintf(int lev, char *fmt,...)
|
||||
if (LogIsKept(lev)) {
|
||||
static char nfmt[200];
|
||||
|
||||
if (LogIsKept(LogTUN) && LogTunno != -1)
|
||||
snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s",
|
||||
LogTunno, LogName(lev), fmt);
|
||||
else
|
||||
snprintf(nfmt, sizeof nfmt, "%s: %s", LogName(lev), fmt);
|
||||
if ((lev == LogERROR || lev == LogALERT || lev == LogWARN) && VarTerm)
|
||||
vfprintf(VarTerm, fmt, ap);
|
||||
if (lev != LogWARN || !VarTerm)
|
||||
if ((LogIsKept(lev) & LOG_KEPT_LOCAL) && VarTerm) {
|
||||
if ((LogIsKept(LogTUN) & LOG_KEPT_LOCAL) && LogTunno != -1)
|
||||
snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s",
|
||||
LogTunno, LogName(lev), fmt);
|
||||
else
|
||||
snprintf(nfmt, sizeof nfmt, "%s: %s", LogName(lev), fmt);
|
||||
vfprintf(VarTerm, nfmt, ap);
|
||||
}
|
||||
|
||||
if ((LogIsKept(lev) & LOG_KEPT_SYSLOG) && (lev != LogWARN || !VarTerm)) {
|
||||
if ((LogIsKept(LogTUN) & LOG_KEPT_SYSLOG) && LogTunno != -1)
|
||||
snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s",
|
||||
LogTunno, LogName(lev), fmt);
|
||||
else
|
||||
snprintf(nfmt, sizeof nfmt, "%s: %s", LogName(lev), fmt);
|
||||
vsyslog(syslogLevel(lev), nfmt, ap);
|
||||
}
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
@ -138,7 +169,7 @@ void
|
||||
LogDumpBp(int lev, char *hdr, struct mbuf * bp)
|
||||
{
|
||||
if (LogIsKept(lev)) {
|
||||
char buf[49];
|
||||
char buf[50];
|
||||
char *b;
|
||||
u_char *ptr;
|
||||
int f;
|
||||
@ -153,15 +184,18 @@ LogDumpBp(int lev, char *hdr, struct mbuf * bp)
|
||||
while (f--) {
|
||||
sprintf(b, " %02x", (int) *ptr++);
|
||||
b += 3;
|
||||
if (b == buf + sizeof buf - 1) {
|
||||
if (b == buf + sizeof buf - 2) {
|
||||
strcpy(b, "\n");
|
||||
LogPrintf(lev, buf);
|
||||
b = buf;
|
||||
}
|
||||
}
|
||||
} while ((bp = bp->next) != NULL);
|
||||
|
||||
if (b > buf)
|
||||
if (b > buf) {
|
||||
strcpy(b, "\n");
|
||||
LogPrintf(lev, buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,16 +203,16 @@ void
|
||||
LogDumpBuff(int lev, char *hdr, u_char * ptr, int n)
|
||||
{
|
||||
if (LogIsKept(lev)) {
|
||||
char buf[49];
|
||||
char buf[50];
|
||||
char *b;
|
||||
int f;
|
||||
|
||||
if (hdr && *hdr)
|
||||
LogPrintf(lev, "%s\n", hdr);
|
||||
while (n > 0) {
|
||||
b = buf;
|
||||
for (f = 0; f < 16 && n--; f++, b += 3)
|
||||
for (b = buf; b != buf + sizeof(buf) - 2 && n--; b += 3)
|
||||
sprintf(b, " %02x", (int) *ptr++);
|
||||
strcpy(b, "\n");
|
||||
LogPrintf(lev, buf);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: $
|
||||
* $Id: log.h,v 1.14 1997/10/26 01:03:06 brian Exp $
|
||||
*/
|
||||
|
||||
#define LogMIN (1)
|
||||
@ -27,8 +27,13 @@
|
||||
/* The first int arg for all of the following is one of the above values */
|
||||
extern const char *LogName(int);
|
||||
extern void LogKeep(int);
|
||||
extern void LogKeepLocal(int);
|
||||
extern void LogDiscard(int);
|
||||
extern void LogDiscardLocal(int);
|
||||
extern void LogDiscardAll(void);
|
||||
extern void LogDiscardAllLocal(void);
|
||||
#define LOG_KEPT_SYSLOG (1) /* Results of LogIsKept() */
|
||||
#define LOG_KEPT_LOCAL (2) /* Results of LogIsKept() */
|
||||
extern int LogIsKept(int);
|
||||
extern void LogOpen(const char *);
|
||||
extern void LogSetTun(int);
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: main.c,v 1.85 1997/10/26 01:03:14 brian Exp $
|
||||
* $Id: main.c,v 1.86 1997/10/29 01:19:42 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
* o Add commands for traffic summary, version display, etc.
|
||||
@ -552,9 +552,16 @@ ReadTty()
|
||||
n = read(netfd, linebuff, sizeof(linebuff) - 1);
|
||||
if (n > 0) {
|
||||
aft_cmd = 1;
|
||||
linebuff[n] = '\0';
|
||||
LogPrintf(LogCOMMAND, "Client: %s\n", linebuff);
|
||||
DecodeCommand(linebuff, n, 1);
|
||||
if (linebuff[n-1] == '\n')
|
||||
linebuff[--n] = '\0';
|
||||
if (n) {
|
||||
if (IsInteractive(0))
|
||||
LogPrintf(LogCOMMAND, "%s\n", linebuff);
|
||||
else
|
||||
LogPrintf(LogCOMMAND, "Client: %s\n", linebuff);
|
||||
DecodeCommand(linebuff, n, 1);
|
||||
} else
|
||||
Prompt();
|
||||
} else {
|
||||
LogPrintf(LogPHASE, "client connection closed.\n");
|
||||
VarLocalAuth = LOCAL_NO_AUTH;
|
||||
@ -921,7 +928,7 @@ DoLoop()
|
||||
VarTerm = fdopen(netfd, "a+");
|
||||
mode |= MODE_INTER;
|
||||
Greetings();
|
||||
(void) IsInteractive();
|
||||
IsInteractive(1);
|
||||
Prompt();
|
||||
}
|
||||
if ((mode & MODE_INTER) && (netfd >= 0 && FD_ISSET(netfd, &rfds)) &&
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $Id: ppp.8,v 1.69 1997/10/05 10:29:32 brian Exp $
|
||||
.\" $Id: ppp.8,v 1.70 1997/10/05 14:27:08 brian Exp $
|
||||
.Dd 20 September 1995
|
||||
.Os FreeBSD
|
||||
.Dt PPP 8
|
||||
@ -1299,8 +1299,9 @@ ISPs.
|
||||
.Sh LOGGING FACILITY
|
||||
|
||||
.Nm
|
||||
is able to generate the following log info via
|
||||
.Xr syslog 3 :
|
||||
is able to generate the following log info either via
|
||||
.Xr syslog 3
|
||||
or directly to the screen:
|
||||
|
||||
.Bl -column SMMMMMM -offset indent
|
||||
.It Li Async Dump async level packet in hex
|
||||
@ -1325,28 +1326,51 @@ LOG_ERROR.
|
||||
.It Li Alert Output to the log file using LOG_ALERT
|
||||
.El
|
||||
|
||||
.Pp
|
||||
The
|
||||
.Dq set log
|
||||
command allows you to set logging output level, of which
|
||||
multiple levels can be specified. The default is equivalent to
|
||||
command allows you to set the logging output level. Multiple levels
|
||||
can be specified on a single command line. The default is equivalent to
|
||||
.Dq set log Carrier Link Phase .
|
||||
|
||||
.Pp
|
||||
It is also possible to log directly to the screen. The syntax is
|
||||
the same except that the word
|
||||
.Dq local
|
||||
should immediately follow
|
||||
.Dq set log .
|
||||
The default is
|
||||
.Dq set log local
|
||||
(ie. no direct screen logging).
|
||||
|
||||
.Pp
|
||||
If The first argument to
|
||||
.Dq set log
|
||||
.Dq set log Op local
|
||||
begins with a '+' or a '-' character, the current log levels are
|
||||
not cleared, for example:
|
||||
|
||||
.Bd -literal -offset indent
|
||||
PPP ON awfulhak> set log carrier link phase
|
||||
PPP ON awfulhak> show log
|
||||
Log: Carrier Link Phase
|
||||
PPP ON awfulhak> set log -Link +tcp/ip
|
||||
Log: Carrier Link Phase Warning Error Alert
|
||||
Local: Warning Error Alert
|
||||
PPP ON awfulhak> set log -link +tcp/ip -warning
|
||||
PPP ON awfulhak> set log local +command
|
||||
PPP ON awfulhak> show log
|
||||
Log: Carrier Phase TCP/IP
|
||||
Log: Carrier Phase TCP/IP Warning Error Alert
|
||||
Local: Command Warning Error Alert
|
||||
.Ed
|
||||
|
||||
Log messages of level Warning, Error and Alert are not controlable
|
||||
.Pp
|
||||
Log messages of level Warning, Error and Alert are not controllable
|
||||
using
|
||||
.Dq set log .
|
||||
.Dq set log Op local .
|
||||
|
||||
.Pp
|
||||
The
|
||||
.Ar Warning
|
||||
level is special in that it will not be logged if it can be displayed
|
||||
locally.
|
||||
|
||||
.Sh SIGNAL HANDLING
|
||||
|
||||
@ -1750,9 +1774,9 @@ If set to
|
||||
will send the packet, probably resulting in an ICMP redirect from
|
||||
the other end.
|
||||
|
||||
.It set log [+|-]value...
|
||||
This command allows the adjustment of the current log level. Please
|
||||
refer to the Logging Facility section for further details.
|
||||
.It set log Op local [+|-]value...
|
||||
This command allows the adjustment of the current log level. Refer
|
||||
to the Logging Facility section for further details.
|
||||
|
||||
.It set login chat-script
|
||||
This chat-script compliments the dial-script. If both are specified,
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $Id: ppp.8,v 1.69 1997/10/05 10:29:32 brian Exp $
|
||||
.\" $Id: ppp.8,v 1.70 1997/10/05 14:27:08 brian Exp $
|
||||
.Dd 20 September 1995
|
||||
.Os FreeBSD
|
||||
.Dt PPP 8
|
||||
@ -1299,8 +1299,9 @@ ISPs.
|
||||
.Sh LOGGING FACILITY
|
||||
|
||||
.Nm
|
||||
is able to generate the following log info via
|
||||
.Xr syslog 3 :
|
||||
is able to generate the following log info either via
|
||||
.Xr syslog 3
|
||||
or directly to the screen:
|
||||
|
||||
.Bl -column SMMMMMM -offset indent
|
||||
.It Li Async Dump async level packet in hex
|
||||
@ -1325,28 +1326,51 @@ LOG_ERROR.
|
||||
.It Li Alert Output to the log file using LOG_ALERT
|
||||
.El
|
||||
|
||||
.Pp
|
||||
The
|
||||
.Dq set log
|
||||
command allows you to set logging output level, of which
|
||||
multiple levels can be specified. The default is equivalent to
|
||||
command allows you to set the logging output level. Multiple levels
|
||||
can be specified on a single command line. The default is equivalent to
|
||||
.Dq set log Carrier Link Phase .
|
||||
|
||||
.Pp
|
||||
It is also possible to log directly to the screen. The syntax is
|
||||
the same except that the word
|
||||
.Dq local
|
||||
should immediately follow
|
||||
.Dq set log .
|
||||
The default is
|
||||
.Dq set log local
|
||||
(ie. no direct screen logging).
|
||||
|
||||
.Pp
|
||||
If The first argument to
|
||||
.Dq set log
|
||||
.Dq set log Op local
|
||||
begins with a '+' or a '-' character, the current log levels are
|
||||
not cleared, for example:
|
||||
|
||||
.Bd -literal -offset indent
|
||||
PPP ON awfulhak> set log carrier link phase
|
||||
PPP ON awfulhak> show log
|
||||
Log: Carrier Link Phase
|
||||
PPP ON awfulhak> set log -Link +tcp/ip
|
||||
Log: Carrier Link Phase Warning Error Alert
|
||||
Local: Warning Error Alert
|
||||
PPP ON awfulhak> set log -link +tcp/ip -warning
|
||||
PPP ON awfulhak> set log local +command
|
||||
PPP ON awfulhak> show log
|
||||
Log: Carrier Phase TCP/IP
|
||||
Log: Carrier Phase TCP/IP Warning Error Alert
|
||||
Local: Command Warning Error Alert
|
||||
.Ed
|
||||
|
||||
Log messages of level Warning, Error and Alert are not controlable
|
||||
.Pp
|
||||
Log messages of level Warning, Error and Alert are not controllable
|
||||
using
|
||||
.Dq set log .
|
||||
.Dq set log Op local .
|
||||
|
||||
.Pp
|
||||
The
|
||||
.Ar Warning
|
||||
level is special in that it will not be logged if it can be displayed
|
||||
locally.
|
||||
|
||||
.Sh SIGNAL HANDLING
|
||||
|
||||
@ -1750,9 +1774,9 @@ If set to
|
||||
will send the packet, probably resulting in an ICMP redirect from
|
||||
the other end.
|
||||
|
||||
.It set log [+|-]value...
|
||||
This command allows the adjustment of the current log level. Please
|
||||
refer to the Logging Facility section for further details.
|
||||
.It set log Op local [+|-]value...
|
||||
This command allows the adjustment of the current log level. Refer
|
||||
to the Logging Facility section for further details.
|
||||
|
||||
.It set login chat-script
|
||||
This chat-script compliments the dial-script. If both are specified,
|
||||
|
@ -17,7 +17,7 @@
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id: systems.c,v 1.16 1997/09/04 00:38:21 brian Exp $
|
||||
* $Id: systems.c,v 1.17 1997/10/26 01:03:48 brian Exp $
|
||||
*
|
||||
* TODO:
|
||||
*/
|
||||
@ -139,7 +139,7 @@ SelectSystem(char *name, char *file)
|
||||
{
|
||||
FILE *fp;
|
||||
char *cp, *wp;
|
||||
int n;
|
||||
int n, len;
|
||||
u_char olauth;
|
||||
char line[200];
|
||||
char filename[200];
|
||||
@ -189,12 +189,19 @@ SelectSystem(char *name, char *file)
|
||||
if (*cp == ' ' || *cp == '\t') {
|
||||
n = strspn(cp, " \t");
|
||||
cp += n;
|
||||
len = strlen(cp);
|
||||
if (!len)
|
||||
continue;
|
||||
if (cp[len-1] == '\n')
|
||||
cp[--len] = '\0';
|
||||
if (!len)
|
||||
continue;
|
||||
LogPrintf(LogCOMMAND, "%s: %s\n", name, cp);
|
||||
SetPppId();
|
||||
olauth = VarLocalAuth;
|
||||
if (VarLocalAuth == LOCAL_NO_AUTH)
|
||||
VarLocalAuth = LOCAL_AUTH;
|
||||
DecodeCommand(cp, strlen(cp), 0);
|
||||
DecodeCommand(cp, len, 0);
|
||||
VarLocalAuth = olauth;
|
||||
SetUserId();
|
||||
} else if (*cp == '#') {
|
||||
|
Loading…
Reference in New Issue
Block a user