/* Generate the "full JID" of the client resource */
- snprintf(XMPP->client_jid, sizeof XMPP->client_jid,
- "%s/%s",
- CC->cs_inet_email,
- XMPP->iq_client_resource
- );
-
- /* FIXME look here ... there's nothing before the slash ... wtf?
- syslog(LOG_DEBUG, "\033[31m client resource = '%s' \033[0m", XMPP->client_jid);
- */
+ if (IsEmptyStr(CC->cs_inet_email)) { // synthetic user@host if no email is set
+ snprintf(XMPP->client_jid, sizeof XMPP->client_jid,
+ "%ld@%s/%s", CC->user.usernum, CtdlGetConfigStr("c_fqdn"), XMPP->iq_client_resource
+ );
+ }
+ else { // use the email address if we have it
+ snprintf(XMPP->client_jid, sizeof XMPP->client_jid,
+ "%s/%s", CC->cs_inet_email, XMPP->iq_client_resource
+ );
+ }
/* Tell the client what its JID is */
*/
void do_login(void)
{
- struct CitContext *CCC = CC;
+ CC->logged_in = 1;
+ syslog(LOG_NOTICE, "user_ops: <%s> logged in", CC->curr_user);
- CCC->logged_in = 1;
- syslog(LOG_NOTICE, "user_ops: <%s> logged in", CCC->curr_user);
-
- CtdlGetUserLock(&CCC->user, CCC->curr_user);
- ++(CCC->user.timescalled);
- CCC->previous_login = CCC->user.lastcall;
- time(&CCC->user.lastcall);
+ CtdlGetUserLock(&CC->user, CC->curr_user);
+ ++(CC->user.timescalled);
+ CC->previous_login = CC->user.lastcall;
+ time(&CC->user.lastcall);
/* If this user's name is the name of the system administrator
* (as specified in setup), automatically assign access level 6.
*/
- if ( (!IsEmptyStr(CtdlGetConfigStr("c_sysadm"))) && (!strcasecmp(CCC->user.fullname, CtdlGetConfigStr("c_sysadm"))) ) {
- CCC->user.axlevel = AxAideU;
+ if ( (!IsEmptyStr(CtdlGetConfigStr("c_sysadm"))) && (!strcasecmp(CC->user.fullname, CtdlGetConfigStr("c_sysadm"))) ) {
+ CC->user.axlevel = AxAideU;
}
/* If we're authenticating off the host system, automatically give
* root the highest level of access.
*/
if (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_HOST) {
- if (CCC->user.uid == 0) {
- CCC->user.axlevel = AxAideU;
+ if (CC->user.uid == 0) {
+ CC->user.axlevel = AxAideU;
}
}
- CtdlPutUserLock(&CCC->user);
+ CtdlPutUserLock(&CC->user);
/*
* If we are using LDAP authentication, extract the user's email addresses from the directory.
if ((CtdlGetConfigInt("c_auth_mode") == AUTHMODE_LDAP) || (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_LDAP_AD)) {
char new_emailaddrs[512];
if (CtdlGetConfigInt("c_ldap_sync_email_addrs") > 0) {
- if (extract_email_addresses_from_ldap(CCC->ldap_dn, new_emailaddrs) == 0) {
- CtdlSetEmailAddressesForUser(CCC->user.fullname, new_emailaddrs);
+ if (extract_email_addresses_from_ldap(CC->ldap_dn, new_emailaddrs) == 0) {
+ CtdlSetEmailAddressesForUser(CC->user.fullname, new_emailaddrs);
}
}
}
/*
* No email address for user? Make one up. (commented out because it appears to break things)
- if (IsEmptyStr(CCC->user.emailaddrs)) {
- sprintf(CCC->user.emailaddrs, "cit%ld@%s", CCC->user.usernum, CtdlGetConfigStr("c_fqdn"));
+ if (IsEmptyStr(CC->user.emailaddrs)) {
+ sprintf(CC->user.emailaddrs, "cit%ld@%s", CC->user.usernum, CtdlGetConfigStr("c_fqdn"));
}
*/
/*
* Populate cs_inet_email and cs_inet_other_emails with valid email addresses from the user record
*/
- strcpy(CCC->cs_inet_email, CCC->user.emailaddrs);
- char *firstsep = strstr(CCC->cs_inet_email, "|");
+ strcpy(CC->cs_inet_email, CC->user.emailaddrs);
+ char *firstsep = strstr(CC->cs_inet_email, "|");
if (firstsep) {
- strcpy(CCC->cs_inet_other_emails, firstsep+1);
+ strcpy(CC->cs_inet_other_emails, firstsep+1);
*firstsep = 0;
}
else {
- CCC->cs_inet_other_emails[0] = 0;
+ CC->cs_inet_other_emails[0] = 0;
}
/* Create any personal rooms required by the system.