|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 1816 (0x718)
Types: TextFile
Names: »tb_checkauth.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/table/tb_checkauth.c«
/* tb_checkauth.c: authentication checks for submission */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/table/RCS/tb_checkauth.c,v 5.0 90/09/20 16:15:00 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/table/RCS/tb_checkauth.c,v 5.0 90/09/20 16:15:00 pp Exp Locker: pp $
*
* $Log: tb_checkauth.c,v $
* Revision 5.0 90/09/20 16:15:00 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include "chan.h"
#define MAX_USER_ARGS 5
#define MAX_USERIDS 50
extern char *crypt ();
/* --------------------- Begin Routines -------------------------------- */
int tb_checkauth (key, channel, username, passwd)
char *key;
CHAN *channel;
char *username;
char *passwd;
{
int argc, argc2;
char *argv [MAX_USER_ARGS],
*argv2[MAX_USERIDS],
buf [BUFSIZ];
int i;
PP_DBG (("Lib/tb_checkauth (%s, %s)", key, channel -> ch_name));
if (channel -> ch_auth_tbl == NULL) {
PP_LOG (LLOG_EXCEPTIONS,
("Warning: Channel %s (%s) doesn't have a auth table",
channel -> ch_name, channel -> ch_show));
return OK;
}
if (tb_k2val (channel -> ch_auth_tbl, key, buf) == NOTOK)
return (NOTOK);
if ((argc = sstr2arg (buf, MAX_USER_ARGS, argv, "|")) == NOTOK)
return (NOTOK);
if (username && argc > 1) {
if ((argc2 = sstr2arg (argv[1], MAX_USERIDS, argv2, ","))
== NOTOK)
return NOTOK;
for (i = 0; i < argc2; i++)
if (lexequ (argv2[i], username) == 0)
return OK;
}
if (passwd && argc > 2) {
if (strcmp (passwd, crypt (passwd, argv[2])) == 0)
return OK;
}
PP_LOG(LLOG_EXCEPTIONS, ("Username %s not allowed for %s on chan %s",
username, key, channel -> ch_name));
return (NOTOK);
}