X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitserver.c;h=266adcdd8cae2ea8f62ebc2f737e2b3fc66ce8d6;hb=d3439d1bc968e5b5c99a4845a563ab8df8678bce;hp=d8eab8d2a56f676e3b2ae39487cfb3aa7791b788;hpb=1baa8da70fac262b47eacef1aad2f3e244184d82;p=citadel.git diff --git a/citadel/citserver.c b/citadel/citserver.c index d8eab8d2a..266adcdd8 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -369,99 +369,6 @@ int CtdlIsPublicClient(void) -/* - * Back-end function for starting a session - */ -void begin_session(CitContext *con) -{ - /* - * Initialize some variables specific to our context. - */ - con->logged_in = 0; - con->internal_pgm = 0; - con->download_fp = NULL; - con->upload_fp = NULL; - con->cached_msglist = NULL; - con->cached_num_msgs = 0; - con->FirstExpressMessage = NULL; - time(&con->lastcmd); - time(&con->lastidle); - strcpy(con->lastcmdname, " "); - strcpy(con->cs_clientname, "(unknown)"); - strcpy(con->curr_user, NLI); - *con->net_node = '\0'; - *con->fake_username = '\0'; - *con->fake_hostname = '\0'; - *con->fake_roomname = '\0'; - *con->cs_clientinfo = '\0'; - safestrncpy(con->cs_host, config.c_fqdn, sizeof con->cs_host); - safestrncpy(con->cs_addr, "", sizeof con->cs_addr); - con->cs_UDSclientUID = -1; - con->cs_host[sizeof con->cs_host - 1] = 0; - if (!CC->is_local_socket) { - locate_host(con->cs_host, sizeof con->cs_host, - con->cs_addr, sizeof con->cs_addr, - con->client_socket - ); - } - else { - con->cs_host[0] = 0; - con->cs_addr[0] = 0; -#ifdef HAVE_STRUCT_UCRED - { - /* as http://www.wsinnovations.com/softeng/articles/uds.html told us... */ - struct ucred credentials; - socklen_t ucred_length = sizeof(struct ucred); - - /*fill in the user data structure */ - if(getsockopt(con->client_socket, SOL_SOCKET, SO_PEERCRED, &credentials, &ucred_length)) { - syslog(LOG_NOTICE, "could obtain credentials from unix domain socket"); - - } - else { - /* the process ID of the process on the other side of the socket */ - /* credentials.pid; */ - - /* the effective UID of the process on the other side of the socket */ - con->cs_UDSclientUID = credentials.uid; - - /* the effective primary GID of the process on the other side of the socket */ - /* credentials.gid; */ - - /* To get supplemental groups, we will have to look them up in our account - database, after a reverse lookup on the UID to get the account name. - We can take this opportunity to check to see if this is a legit account. - */ - snprintf(con->cs_clientinfo, sizeof(con->cs_clientinfo), - "PID: "F_PID_T"; UID: "F_UID_T"; GID: "F_XPID_T" ", - credentials.pid, - credentials.uid, - credentials.gid); - } - } -#endif - } - con->cs_flags = 0; - con->upload_type = UPL_FILE; - con->dl_is_net = 0; - - con->nologin = 0; - if (((config.c_maxsessions > 0)&&(num_sessions > config.c_maxsessions)) || CtdlWantSingleUser()) { - con->nologin = 1; - } - - if (!CC->is_local_socket) { - syslog(LOG_NOTICE, "Session (%s) started from %s (%s).\n", con->ServiceName, con->cs_host, con->cs_addr); - } - else { - syslog(LOG_NOTICE, "Session (%s) started via local socket UID:%d.\n", con->ServiceName, con->cs_UDSclientUID); - } - - /* Run any session startup routines registered by loadable modules */ - PerformSessionHooks(EVT_START); -} - - void citproto_begin_session() { if (CC->nologin==1) { cprintf("%d %s: Too many users are already online (maximum is %d)\n",