Starting to look into why we still have 'Purge this vCard' messages ... there's an...
[citadel.git] / citadel / modules / vcard / serv_vcard.c
index f3624bdc451e8891b0e02ccf430ca2dd64f14196..dcf8865bfdf620b56d2964bb23194bbac5dd0e22 100644 (file)
@@ -2,7 +2,7 @@
  * 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.
@@ -99,8 +99,7 @@ void vcard_extract_internet_addresses(struct CtdlMessage *msg, int (*callback)(c
 
        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;
@@ -142,8 +141,8 @@ void vcard_extract_internet_addresses(struct CtdlMessage *msg, int (*callback)(c
 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;
@@ -159,6 +158,9 @@ void extract_inet_email_addrs(char *emailaddrbuf, size_t emailaddrbuf_len,
                        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;
@@ -412,7 +414,6 @@ int vcard_upload_beforesave(struct CtdlMessage *msg, recptypes *recp) {
 }
 
 
-
 /*
  * This handler detects whether the user is attempting to save a new
  * vCard as part of his/her personal configuration, and handles the replace
@@ -801,7 +802,6 @@ void vcard_newuser(struct ctdluser *usbuf) {
 
 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)) {
@@ -941,7 +941,6 @@ EOH:        CM_Free(msg);
 }
 
 
-
 /*
  * Get Valid Screen Names
  */
@@ -1114,13 +1113,12 @@ void check_get(void) {
                
                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);
                }
@@ -1139,8 +1137,9 @@ void check_get(void) {
        }
 }
 
+
 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. */
 }
 
 
@@ -1248,7 +1247,6 @@ struct vCard *vcard_new_from_rfc822_addr(char *addr) {
 }
 
 
-
 /*
  * This is called by store_harvested_addresses() to remove from the
  * list any addresses we already have in our address book.
@@ -1413,7 +1411,6 @@ CTDL_MODULE_INIT(vcard)
                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");
@@ -1421,8 +1418,9 @@ CTDL_MODULE_INIT(vcard)
                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);
@@ -1433,45 +1431,20 @@ CTDL_MODULE_INIT(vcard)
                /* 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: %m", filename);
-                               //}
-                               //rv = chmod(filename, 0600);
-                               //if (rv == -1) {
-                                       //syslog(LOG_ERR, "vcard: failed to adjust ownership of %s: %m", filename);
-                               //}
-                       //}
-                       //else {
-                               //syslog(LOG_ERR, "vcard: cannot create %s: %m", filename);
-                       //}
                }
 
                /* 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";
 }