#include "user_ops.h"
#include "control.h"
-
+int DebugSession = 0;
pthread_key_t MyConKey; /* TSD key for MyContext() */
return TERM_NOTALLOWED;
}
- syslog(LOG_DEBUG, "Locating session to kill\n");
+ CONM_syslog(LOG_DEBUG, "Locating session to kill\n");
begin_critical_section(S_SESSION_TABLE);
for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
if (session_num == ccptr->cs_pid) {
}
end_critical_section(S_SESSION_TABLE);
if (killed > 0)
- syslog(LOG_INFO, "Scheduled %d idle sessions for termination\n", killed);
+ CON_syslog(LOG_INFO, "Scheduled %d idle sessions for termination\n", killed);
if (longrunners > 0)
- syslog(LOG_INFO, "Didn't terminate %d protected idle sessions", longrunners);
+ CON_syslog(LOG_INFO, "Didn't terminate %d protected idle sessions", longrunners);
}
for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
if (ccptr->client_socket != -1)
{
- syslog(LOG_INFO, "terminate_all_sessions() is murdering %s", ccptr->curr_user);
+ CON_syslog(LOG_INFO, "terminate_all_sessions() is murdering %s", ccptr->curr_user);
close(ccptr->client_socket);
ccptr->client_socket = -1;
killed++;
}
end_critical_section(S_SESSION_TABLE);
if (killed > 0) {
- syslog(LOG_INFO, "Flushed %d stuck sessions\n", killed);
+ CON_syslog(LOG_INFO, "Flushed %d stuck sessions\n", killed);
}
}
{
const char *c;
if (con == NULL) {
- syslog(LOG_ERR, "WARNING: RemoveContext() called with NULL!");
+ CONM_syslog(LOG_ERR, "WARNING: RemoveContext() called with NULL!");
return;
}
c = con->ServiceName;
if (c == NULL) {
c = "WTF?";
}
- syslog(LOG_DEBUG, "RemoveContext(%s) session %d", c, con->cs_pid);
+ CON_syslog(LOG_DEBUG, "RemoveContext(%s) session %d", c, con->cs_pid);
/// cit_backtrace();
/* Run any cleanup routines registered by loadable modules.
client_close(); /* If the client is still connected, blow 'em away. */
become_session(NULL);
- syslog(LOG_NOTICE, "[%3d] Session ended.", con->cs_pid);
+ CON_syslog(LOG_NOTICE, "[%3d]SRV[%s] Session ended.", con->cs_pid, c);
/*
* If the client is still connected, blow 'em away.
*/
if (con->client_socket > 0)
{
- syslog(LOG_NOTICE, "Closing socket %d", con->client_socket);
+ CON_syslog(LOG_NOTICE, "Closing socket %d", con->client_socket);
close(con->client_socket);
}
free(con->cached_msglist);
}
- syslog(LOG_DEBUG, "Done with RemoveContext()");
+ CONM_syslog(LOG_DEBUG, "Done with RemoveContext()");
}
me = (CitContext *) malloc(sizeof(CitContext));
if (me == NULL) {
- syslog(LOG_ALERT, "citserver: can't allocate memory!!\n");
+ CONM_syslog(LOG_ALERT, "citserver: can't allocate memory!!\n");
return NULL;
}
memset(me, 0, sizeof(CitContext));
me = (CitContext *) malloc(sizeof(CitContext));
if (me == NULL) {
- syslog(LOG_ALERT, "citserver: can't allocate memory!!\n");
+ CONM_syslog(LOG_ALERT, "citserver: can't allocate memory!!\n");
return NULL;
}
memcpy(me, CloneMe, sizeof(CitContext));
if (context->user.usernum == 0)
{ /* old system user with number 0, upgrade it */
context->user.usernum = get_new_user_number();
- syslog(LOG_DEBUG, "Upgrading system user \"%s\" from user number 0 to user number %ld\n", context->user.fullname, context->user.usernum);
+ CON_syslog(LOG_INFO, "Upgrading system user \"%s\" from user number 0 to user number %ld\n", context->user.fullname, context->user.usernum);
/* add user to the database */
CtdlPutUser(&(context->user));
cdb_store(CDB_USERSBYNUMBER, &(context->user.usernum), sizeof(long), context->user.fullname, strlen(context->user.fullname)+1);
rem = ptr->next;
--num_sessions;
- syslog(LOG_DEBUG, "context_cleanup(): purging session %d\n", ptr->cs_pid);
+ CON_syslog(LOG_DEBUG, "context_cleanup(): purging session %d\n", ptr->cs_pid);
RemoveContext(ptr);
free (ptr);
ptr = rem;
* is allocated privately on this thread's stack.
*/
while (rem != NULL) {
- syslog(LOG_DEBUG, "dead_session_purge(): purging session %d, reason=%d\n", rem->cs_pid, rem->kill_me);
+ CON_syslog(LOG_DEBUG, "dead_session_purge(): purging session %d, reason=%d\n", rem->cs_pid, rem->kill_me);
RemoveContext(rem);
ptr = rem;
rem = rem->next;
*/
void set_async_waiting(struct CitContext *ccptr)
{
- syslog(LOG_DEBUG, "Setting async_waiting flag for session %d\n", ccptr->cs_pid);
+ CON_syslog(LOG_DEBUG, "Setting async_waiting flag for session %d\n", ccptr->cs_pid);
if (ccptr->is_async) {
ccptr->async_waiting++;
if (ccptr->state == CON_IDLE) {
}
}
}
+
+
+void DebugSessionEnable(const int n)
+{
+ DebugSession = n;
+}
+CTDL_MODULE_INIT(session)
+{
+ if (!threading) {
+ CtdlRegisterDebugFlagHook(HKEY("session"), DebugSessionEnable, &DebugSession);
+ }
+ return "session";
+}
else { /* Sanity checks succeeded. Now rename the user. */
if (usbuf.usernum == 0)
{
- syslog(LOG_DEBUG, "Can not rename user \"Citadel\".\n");
+ CONM_syslog(LOG_DEBUG, "Can not rename user \"Citadel\".\n");
retcode = RENAMEUSER_NOT_FOUND;
} else {
- syslog(LOG_DEBUG, "Renaming <%s> to <%s>\n", oldname, newname);
+ CON_syslog(LOG_DEBUG, "Renaming <%s> to <%s>\n", oldname, newname);
cdb_delete(CDB_USERS, oldnamekey, strlen(oldnamekey));
safestrncpy(usbuf.fullname, newname, sizeof usbuf.fullname);
CtdlPutUser(&usbuf);
cdbun = cdb_fetch(CDB_USERSBYNUMBER, &number, sizeof(long));
if (cdbun == NULL) {
- syslog(LOG_INFO, "User %ld not found\n", number);
+ CON_syslog(LOG_INFO, "User %ld not found\n", number);
return(-1);
}
- syslog(LOG_INFO, "User %ld maps to %s\n", number, cdbun->ptr);
+ CON_syslog(LOG_INFO, "User %ld maps to %s\n", number, cdbun->ptr);
r = CtdlGetUser(usbuf, cdbun->ptr);
cdb_free(cdbun);
return(r);
}
while (u != NULL) {
- syslog(LOG_DEBUG, "Rebuilding usersbynumber index %10ld : %s\n",
+ CON_syslog(LOG_DEBUG, "Rebuilding usersbynumber index %10ld : %s\n",
u->usernum, u->username);
cdb_store(CDB_USERSBYNUMBER, &u->usernum, sizeof(long), u->username, strlen(u->username)+1);
int found_user;
long len;
- syslog(LOG_DEBUG, "CtdlLoginExistingUser(%s, %s)\n", authname, trythisname);
+ CON_syslog(LOG_DEBUG, "CtdlLoginExistingUser(%s, %s)\n", authname, trythisname);
if ((CC->logged_in)) {
return login_already_logged_in;
if (!strncasecmp(trythisname, "SYS_", 4))
{
- syslog(LOG_DEBUG, "System user \"%s\" is not allowed to log in.\n", trythisname);
+ CON_syslog(LOG_DEBUG, "System user \"%s\" is not allowed to log in.\n", trythisname);
return login_not_found;
}
struct passwd *tempPwdPtr;
char pwdbuffer[256];
- syslog(LOG_DEBUG, "asking host about <%s>\n", username);
+ CON_syslog(LOG_DEBUG, "asking host about <%s>\n", username);
#ifdef HAVE_GETPWNAM_R
#ifdef SOLARIS_GETPWUID
- syslog(LOG_DEBUG, "Calling getpwnam_r()\n");
+ CON_syslog(LOG_DEBUG, "Calling getpwnam_r()\n");
tempPwdPtr = getpwnam_r(username, &pd, pwdbuffer, sizeof pwdbuffer);
#else // SOLARIS_GETPWUID
- syslog(LOG_DEBUG, "Calling getpwnam_r()\n");
+ CONM_syslog(LOG_DEBUG, "Calling getpwnam_r()\n");
getpwnam_r(username, &pd, pwdbuffer, sizeof pwdbuffer, &tempPwdPtr);
#endif // SOLARIS_GETPWUID
#else // HAVE_GETPWNAM_R
- syslog(LOG_DEBUG, "SHOULD NEVER GET HERE!!!\n");
+ CON_syslog(LOG_DEBUG, "SHOULD NEVER GET HERE!!!\n");
tempPwdPtr = NULL;
#endif // HAVE_GETPWNAM_R
if (tempPwdPtr == NULL) {
- syslog(LOG_DEBUG, "no such user <%s>\n", username);
+ CON_syslog(LOG_DEBUG, "no such user <%s>\n", username);
return login_not_found;
}
* If not found, make one attempt to create it.
*/
found_user = getuserbyuid(&CC->user, pd.pw_uid);
- syslog(LOG_DEBUG, "found it: uid=%ld, gecos=%s here: %d\n",
+ CON_syslog(LOG_DEBUG, "found it: uid=%ld, gecos=%s here: %d\n",
(long)pd.pw_uid, pd.pw_gecos, found_user);
if (found_user != 0) {
len = cutuserkey(username);
char username[256];
int a;
- syslog(LOG_DEBUG, "cmd_user(%s)\n", cmdbuf);
+ CON_syslog(LOG_DEBUG, "cmd_user(%s)\n", cmdbuf);
extract_token(username, cmdbuf, 0, '|', sizeof username);
- syslog(LOG_DEBUG, "username: %s\n", username);
+ CON_syslog(LOG_DEBUG, "username: %s\n", username);
striplt(username);
- syslog(LOG_DEBUG, "username: %s\n", username);
+ CON_syslog(LOG_DEBUG, "username: %s\n", username);
a = CtdlLoginExistingUser(NULL, username);
switch (a) {
struct CitContext *CCC = CC;
CCC->logged_in = 1;
- syslog(LOG_NOTICE, "<%s> logged in\n", CCC->curr_user);
+ CON_syslog(LOG_NOTICE, "<%s> logged in\n", CCC->curr_user);
CtdlGetUserLock(&CCC->user, CCC->curr_user);
++(CCC->user.timescalled);
{
CitContext *CCC = MyContext();
- syslog(LOG_DEBUG, "CtdlUserLogout() logging out <%s> from session %d",
- CCC->curr_user, CCC->cs_pid
+ CON_syslog(LOG_DEBUG, "CtdlUserLogout() logging out <%s> from session %d",
+ CCC->curr_user, CCC->cs_pid
);
/*
int rv = 0;
if (IsEmptyStr(pass)) {
- syslog(LOG_DEBUG, "Refusing to chkpwd for uid=%d with empty password.\n", uid);
+ CON_syslog(LOG_DEBUG, "Refusing to chkpwd for uid=%d with empty password.\n", uid);
return 0;
}
- syslog(LOG_DEBUG, "Validating password for uid=%d using chkpwd...\n", uid);
+ CON_syslog(LOG_DEBUG, "Validating password for uid=%d using chkpwd...\n", uid);
begin_critical_section(S_CHKPWD);
rv = write(chkpwd_write_pipe[1], &uid, sizeof(uid_t));
if (rv == -1) {
- syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
end_critical_section(S_CHKPWD);
return 0;
}
rv = write(chkpwd_write_pipe[1], pass, 256);
if (rv == -1) {
- syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
end_critical_section(S_CHKPWD);
return 0;
}
rv = read(chkpwd_read_pipe[0], buf, 4);
if (rv == -1) {
- syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Communicatino with chkpwd broken: %s\n", strerror(errno));
end_critical_section(S_CHKPWD);
return 0;
}
end_critical_section(S_CHKPWD);
if (!strncmp(buf, "PASS", 4)) {
- syslog(LOG_DEBUG, "...pass\n");
+ CONM_syslog(LOG_DEBUG, "...pass\n");
return(1);
}
- syslog(LOG_DEBUG, "...fail\n");
+ CONM_syslog(LOG_DEBUG, "...fail\n");
return 0;
}
struct stat filestats;
int i;
- syslog(LOG_DEBUG, "Starting chkpwd daemon for host authentication mode\n");
+ CONM_syslog(LOG_DEBUG, "Starting chkpwd daemon for host authentication mode\n");
if ((stat(file_chkpwd, &filestats)==-1) ||
(filestats.st_size==0)){
abort();
}
if (pipe(chkpwd_write_pipe) != 0) {
- syslog(LOG_EMERG, "Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
abort();
}
if (pipe(chkpwd_read_pipe) != 0) {
- syslog(LOG_EMERG, "Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
abort();
}
chkpwd_pid = fork();
if (chkpwd_pid < 0) {
- syslog(LOG_EMERG, "Unable to fork chkpwd daemon: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Unable to fork chkpwd daemon: %s\n", strerror(errno));
abort();
}
if (chkpwd_pid == 0) {
- syslog(LOG_DEBUG, "Now calling dup2() write\n");
+ CONM_syslog(LOG_DEBUG, "Now calling dup2() write\n");
dup2(chkpwd_write_pipe[0], 0);
- syslog(LOG_DEBUG, "Now calling dup2() write\n");
+ CONM_syslog(LOG_DEBUG, "Now calling dup2() write\n");
dup2(chkpwd_read_pipe[1], 1);
- syslog(LOG_DEBUG, "Now closing stuff\n");
+ CONM_syslog(LOG_DEBUG, "Now closing stuff\n");
for (i=2; i<256; ++i) close(i);
- syslog(LOG_DEBUG, "Now calling execl(%s)\n", file_chkpwd);
+ CON_syslog(LOG_DEBUG, "Now calling execl(%s)\n", file_chkpwd);
execl(file_chkpwd, file_chkpwd, NULL);
- syslog(LOG_EMERG, "Unable to exec chkpwd daemon: %s\n", strerror(errno));
+ CON_syslog(LOG_EMERG, "Unable to exec chkpwd daemon: %s\n", strerror(errno));
abort();
exit(errno);
}
CitContext *CCC = CC;
if ((CCC->logged_in)) {
- syslog(LOG_WARNING, "CtdlTryPassword: already logged in\n");
+ CONM_syslog(LOG_WARNING, "CtdlTryPassword: already logged in\n");
return pass_already_logged_in;
}
if (!strcmp(CCC->curr_user, NLI)) {
- syslog(LOG_WARNING, "CtdlTryPassword: no user selected\n");
+ CONM_syslog(LOG_WARNING, "CtdlTryPassword: no user selected\n");
return pass_no_user;
}
if (CtdlGetUser(&CCC->user, CCC->curr_user)) {
- syslog(LOG_ERR, "CtdlTryPassword: internal error\n");
+ CONM_syslog(LOG_ERR, "CtdlTryPassword: internal error\n");
return pass_internal_error;
}
if (password == NULL) {
- syslog(LOG_INFO, "CtdlTryPassword: NULL password string supplied\n");
+ CONM_syslog(LOG_INFO, "CtdlTryPassword: NULL password string supplied\n");
return pass_wrong_password;
}
code = (-1);
do_login();
return pass_ok;
} else {
- syslog(LOG_WARNING, "Bad password specified for <%s> Service <%s> Port <%ld> Remote <%s / %s>\n",
- CCC->curr_user,
- CCC->ServiceName,
- CCC->tcp_port,
- CCC->cs_host,
- CCC->cs_addr);
+ CON_syslog(LOG_WARNING, "Bad password specified for <%s> Service <%s> Port <%ld> Remote <%s / %s>\n",
+ CCC->curr_user,
+ CCC->ServiceName,
+ CCC->tcp_port,
+ CCC->cs_host,
+ CCC->cs_addr);
//citserver[5610]: Bad password specified for <willi> Service <citadel-TCP> Remote <PotzBlitz / >
return (ERROR + NO_SUCH_USER);
if (CtdlGetUser(&usbuf, pname) != 0) {
- syslog(LOG_ERR, "Cannot purge user <%s> - not found\n", pname);
+ CON_syslog(LOG_ERR, "Cannot purge user <%s> - not found\n", pname);
return (ERROR + NO_SUCH_USER);
}
/* Don't delete a user who is currently logged in. Instead, just
* during the next purge.
*/
if (CtdlIsUserLoggedInByNum(usbuf.usernum)) {
- syslog(LOG_WARNING, "User <%s> is logged in; not deleting.\n", pname);
+ CON_syslog(LOG_WARNING, "User <%s> is logged in; not deleting.\n", pname);
usbuf.axlevel = AxDeleted;
CtdlPutUser(&usbuf);
return (1);
}
- syslog(LOG_NOTICE, "Deleting user <%s>\n", pname);
+ CON_syslog(LOG_NOTICE, "Deleting user <%s>\n", pname);
/*
* FIXME:
CC->cs_addr
);
CtdlAideMessage(buf, "User Creation Notice");
- syslog(LOG_NOTICE, "New user <%s> created\n", username);
+ CON_syslog(LOG_NOTICE, "New user <%s> created\n", username);
return (0);
}
CtdlGetUserLock(&CC->user, CC->curr_user);
safestrncpy(CC->user.password, new_pw, sizeof(CC->user.password));
CtdlPutUserLock(&CC->user);
- syslog(LOG_INFO, "Password changed for user <%s>\n", CC->curr_user);
+ CON_syslog(LOG_INFO, "Password changed for user <%s>\n", CC->curr_user);
PerformSessionHooks(EVT_SETPASS);
}