* A server-side module for Citadel which supports address book information
* using the standard vCard format.
*
- * Copyright (c) 1999-2017 by the citadel.org team
+ * Copyright (c) 1999-2018 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
if (CM_IsEmpty(msg, eAuthor)) return;
if (CM_IsEmpty(msg, eNodeName)) return;
- snprintf(citadel_address, sizeof citadel_address, "%s @ %s",
- msg->cm_fields[eAuthor], msg->cm_fields[eNodeName]);
+ snprintf(citadel_address, sizeof citadel_address, "%s @ %s", msg->cm_fields[eAuthor], msg->cm_fields[eNodeName]);
v = vcard_load(msg->cm_fields[eMesageText]);
if (v == NULL) return;
void extract_inet_email_addrs(char *emailaddrbuf, size_t emailaddrbuf_len,
char *secemailaddrbuf, size_t secemailaddrbuf_len,
struct vCard *v,
- int local_addrs_only)
-{
+ int local_addrs_only
+) {
struct CitContext *CCC = CC; /* put this on the stack, just for speed */
char *s, *k, *addr;
int instance = 0;
striplt(addr);
if (!IsEmptyStr(addr)) {
IsDirectoryAddress = IsDirectory(addr, 1);
+
+ syslog(LOG_DEBUG, "EVQ: addr=<%s> IsDirectoryAddress=<%d> local_addrs_only=<%d>", addr, IsDirectoryAddress, local_addrs_only);
+
if ( IsDirectoryAddress || !local_addrs_only)
{
++saved_instance;
}
-
/*
* This handler detects whether the user is attempting to save a new
* vCard as part of his/her personal configuration, and handles the replace
int found_user;
char ldap_cn[512];
char ldap_dn[512];
- found_user = CtdlTryUserLDAP(usbuf->fullname, ldap_dn, sizeof ldap_dn, ldap_cn, sizeof ldap_cn, &usbuf->uid, 1);
+
+syslog(LOG_DEBUG, "\033[31m FIXME BORK BORK BORK try lookup by uid , or maybe dn?\033[0m");
+
+ found_user = CtdlTryUserLDAP(usbuf->fullname, ldap_dn, sizeof ldap_dn, ldap_cn, sizeof ldap_cn, &usbuf->uid);
if (found_user == 0) {
if (Ctdl_LDAP_to_vCard(ldap_dn, v)) {
/* Allow global address book and internet directory update without login long enough to write this. */
}
-
/*
* Get Valid Screen Names
*/
extract_token(internet_addr, argbuf, 0, '|', sizeof internet_addr);
rcpt = validate_recipients(internet_addr, NULL, CHECK_EXISTANCE);
- if ((rcpt != NULL)&&
+ if ( (rcpt != NULL) &&
(
- (*rcpt->recp_local != '\0')||
- (*rcpt->recp_room != '\0')||
- (*rcpt->recp_ignet != '\0')))
- {
-
+ (*rcpt->recp_local != '\0') ||
+ (*rcpt->recp_room != '\0')
+ )
+ ) {
cprintf("200 OK %s\n", internet_addr);
syslog(LOG_INFO, "vcard: sending 200 OK for the room %s", rcpt->display_recp);
}
}
}
+
void check_get_greeting(void) {
-/* dummy function, we have no greeting in this verry simple protocol. */
+/* dummy function, we have no greeting in this very simple protocol. */
}
}
-
/*
* This is called by store_harvested_addresses() to remove from the
* list any addresses we already have in our address book.
CtdlRegisterSessionHook(vcard_session_login_hook, EVT_LOGIN, PRIO_LOGIN + 70);
CtdlRegisterMessageHook(vcard_upload_beforesave, EVT_BEFORESAVE);
CtdlRegisterMessageHook(vcard_upload_aftersave, EVT_AFTERSAVE);
- CtdlRegisterDeleteHook(vcard_delete_remove);
CtdlRegisterProtoHook(cmd_regi, "REGI", "Enter registration info");
CtdlRegisterProtoHook(cmd_greg, "GREG", "Get registration info");
CtdlRegisterProtoHook(cmd_qdir, "QDIR", "Query Directory");
CtdlRegisterProtoHook(cmd_gvea, "GVEA", "Get Valid Email Addresses");
CtdlRegisterProtoHook(cmd_dvca, "DVCA", "Dump VCard Addresses");
CtdlRegisterUserHook(vcard_newuser, EVT_NEWUSER);
- CtdlRegisterUserHook(vcard_purge, EVT_PURGEUSER);
- CtdlRegisterNetprocHook(vcard_extract_from_network);
+ CtdlRegisterUserHook(vcard_purge, EVT_PURGEUSER); // FIXME stop doing this
+ CtdlRegisterDeleteHook(vcard_delete_remove); // FIXME this is obsolete, right?
+ CtdlRegisterNetprocHook(vcard_extract_from_network); // FIXME this is obsolete, right?
CtdlRegisterSessionHook(store_harvested_addresses, EVT_TIMER, PRIO_CLEANUP + 470);
CtdlRegisterFixedOutputHook("text/x-vcard", vcard_fixed_output);
CtdlRegisterFixedOutputHook("text/vcard", vcard_fixed_output);
/* Set expiration policy to manual; otherwise objects will be lost! */
if (!CtdlGetRoomLock(&qr, ADDRESS_BOOK_ROOM)) {
qr.QRep.expire_mode = EXPIRE_MANUAL;
- qr.QRdefaultview = VIEW_ADDRESSBOOK; /* 2 = address book view */
+ qr.QRdefaultview = VIEW_ADDRESSBOOK; // 2 = address book view
CtdlPutRoomLock(&qr);
-
- /*
- * Also make sure it has a netconfig file, so the networker runs
- * on this room even if we don't share it with any other nodes.
- * This allows the CANCEL messages (i.e. "Purge this vCard") to be
- * purged.
- *
- * FIXME this no longer works
- *
- */
- //assoc_file_name(filename, sizeof filename, &qr, ctdl_netcfg_dir);
- //fp = fopen(filename, "a");
- //if (fp != NULL) {
- //fclose(fp);
- //rv = chown(filename, CTDLUID, (-1));
- //if (rv == -1) {
- //syslog(LOG_ERR, "vcard: failed to adjust ownership of %s: %s", filename, strerror(errno));
- //}
- //rv = chmod(filename, 0600);
- //if (rv == -1) {
- //syslog(LOG_ERR, "vcard: failed to adjust ownership of %s: %s", filename, strerror(errno));
- //}
- //}
- //else {
- //syslog(LOG_ERR, "vcard: cannot create %s: %s", filename, strerror(errno));
- //}
}
/* for postfix tcpdict */
- CtdlRegisterServiceHook(CtdlGetConfigInt("c_pftcpdict_port"), /* Postfix */
+ CtdlRegisterServiceHook(CtdlGetConfigInt("c_pftcpdict_port"), // Postfix
NULL,
check_get_greeting,
check_get,
NULL,
- CitadelServiceDICT_TCP);
+ CitadelServiceDICT_TCP
+ );
}
-
+
/* return our module name for the log */
return "vcard";
}