]> diplodocus.org Git - nmh/commitdiff
Added oauth support to whatnow.
authorDavid Levine <david.levine@gonift.com>
Thu, 17 Mar 2016 01:32:48 +0000 (21:32 -0400)
committerDavid Levine <david.levine@gonift.com>
Thu, 17 Mar 2016 01:32:48 +0000 (21:32 -0400)
Makefile.am
uip/send.c
uip/whatnowsbr.c

index cb34b5db50df166c9b471925d88654ba2f3294ac..0d37d5e4a869eb70b3becea89455859714a11675 100644 (file)
@@ -323,11 +323,11 @@ uip_burst_LDADD = $(LDADD) $(ICONVLIB) $(POSTLINK)
 
 uip_comp_SOURCES = uip/comp.c uip/whatnowproc.c uip/whatnowsbr.c uip/sendsbr.c \
                   uip/annosbr.c uip/distsbr.c
-uip_comp_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
+uip_comp_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(CURLLIB) $(POSTLINK)
 
 uip_dist_SOURCES = uip/dist.c uip/whatnowproc.c uip/whatnowsbr.c uip/sendsbr.c \
                   uip/annosbr.c uip/distsbr.c uip/forwsbr.c
-uip_dist_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
+uip_dist_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(CURLLIB) $(POSTLINK)
 
 uip_flist_SOURCES = uip/flist.c
 uip_flist_LDADD = $(LDADD) $(POSTLINK)
@@ -337,10 +337,10 @@ uip_folder_LDADD = $(LDADD) $(POSTLINK)
 
 uip_forw_SOURCES = uip/forw.c uip/whatnowproc.c uip/whatnowsbr.c uip/sendsbr.c \
                   uip/annosbr.c uip/distsbr.c uip/forwsbr.c
-uip_forw_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
+uip_forw_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(CURLLIB) $(POSTLINK)
 
 uip_inc_SOURCES = uip/inc.c uip/scansbr.c uip/dropsbr.c uip/popsbr.c
-uip_inc_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(SASLLIB) $(POSTLINK) $(CURLLIB)
+uip_inc_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(SASLLIB) $(CURLLIB) $(POSTLINK)
 
 uip_install_mh_SOURCES = uip/install-mh.c
 uip_install_mh_LDADD = $(LDADD) $(POSTLINK)
@@ -388,7 +388,7 @@ uip_mhstore_SOURCES = uip/mhstore.c uip/mhparse.c uip/mhcachesbr.c \
 uip_mhstore_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_msgchk_SOURCES = uip/msgchk.c uip/popsbr.c
-uip_msgchk_LDADD = $(LDADD) $(SASLLIB) $(POSTLINK) $(CURLLIB)
+uip_msgchk_LDADD = $(LDADD) $(SASLLIB) $(CURLLIB) $(POSTLINK)
 
 uip_new_SOURCES = uip/new.c
 uip_new_LDADD = $(LDADD) $(POSTLINK)
@@ -407,7 +407,7 @@ uip_refile_LDADD = $(LDADD) $(POSTLINK)
 
 uip_repl_SOURCES = uip/repl.c uip/replsbr.c uip/whatnowproc.c uip/whatnowsbr.c \
                   uip/sendsbr.c uip/annosbr.c uip/distsbr.c
-uip_repl_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
+uip_repl_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(ICONVLIB) $(CURLLIB) $(POSTLINK)
 
 uip_rmf_SOURCES = uip/rmf.c
 uip_rmf_LDADD = $(LDADD) $(POSTLINK)
@@ -420,7 +420,7 @@ uip_scan_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_send_SOURCES = uip/send.c uip/sendsbr.c uip/annosbr.c \
                   uip/distsbr.c
-uip_send_LDADD = $(LDADD) $(POSTLINK) $(CURLLIB)
+uip_send_LDADD = $(LDADD) $(CURLLIB) $(POSTLINK)
 
 uip_show_SOURCES = uip/show.c uip/mhlsbr.c
 uip_show_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
@@ -430,7 +430,7 @@ uip_sortm_LDADD = $(LDADD) $(POSTLINK)
 
 uip_whatnow_SOURCES = uip/whatnow.c uip/whatnowsbr.c uip/sendsbr.c \
                      uip/annosbr.c uip/distsbr.c
-uip_whatnow_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(POSTLINK)
+uip_whatnow_LDADD = $(LDADD) $(READLINELIB) $(TERMLIB) $(CURLLIB) $(POSTLINK)
 
 uip_whom_SOURCES = uip/whom.c uip/distsbr.c
 uip_whom_LDADD = $(LDADD) $(POSTLINK)
index 8b64948d64e617a4306392cbf1be52be81743c69..491efbb146857bf647426ab9618a245ab2ad5100 100644 (file)
@@ -9,10 +9,12 @@
 
 #include <h/mh.h>
 #include <fcntl.h>
-
-#include <h/oauth.h>
 #include <h/utils.h>
 
+#ifdef OAUTH_SUPPORT
+# include <h/oauth.h>
+#endif
+
 #ifndef CYRUS_SASL
 # define SASLminc(a) (a)
 #else /* CYRUS_SASL */
index e81312626a343b22255e7e2d03110c6327622c1b..223d3f0f9971c46de8392cad519d3e0541aef9e7 100644 (file)
 #include <h/mime.h>
 #include <h/utils.h>
 
+#ifdef OAUTH_SUPPORT
+# include <h/oauth.h>
+#endif
+
 #define WHATNOW_SWITCHES \
     X("draftfolder +folder", 0, DFOLDSW) \
     X("draftmessage msg", 0, DMSGSW) \
@@ -945,7 +949,8 @@ buildfile (char **argp, char *file)
     X("nosasl", SASLminc(-6), NOSASLSW) \
     X("saslmaxssf", SASLminc(-10), SASLMXSSFSW) \
     X("saslmech", SASLminc(-5), SASLMECHSW) \
-    X("user", SASLminc(-4), USERSW) \
+    X("oauth service", 5, OAUTHSW) \
+    X("user username", SASLminc(-4), USERSW) \
     X("attach fieldname", 6, SNDATTACHSW) \
     X("noattach", 0, SNDNOATTACHSW) \
     X("attachformat", 7, SNDATTACHFORMAT) \
@@ -956,7 +961,6 @@ buildfile (char **argp, char *file)
     X("sendmail program", 0, MTSSM) \
     X("mts smtp|sendmail/smtp|sendmail/pipe", 2, MTSSW) \
     X("messageid localname|random", 2, MESSAGEIDSW) \
-    X("oauth service", 5, OAUTHSW) \
 
 #define X(sw, minchars, id) id,
 DEFINE_SWITCH_ENUM(SEND);
@@ -986,6 +990,8 @@ sendit (char *sp, char **arg, char *file, int pushed)
     int        vecp, n = 1;
     char *cp, buf[BUFSIZ], **argp, *program;
     char **arguments, *savearg[MAXARGS], **vec;
+    const char *user = NULL, *oauth_svc = NULL;
+    int snoop = 0;
     struct stat st;
 
 #ifndef        lint
@@ -1126,7 +1132,6 @@ sendit (char *sp, char **arg, char *file, int pushed)
                case NMSGDSW:
                case WATCSW:
                case NWATCSW:
-               case SNOOPSW:
                case SASLSW:
                case NOSASLSW:
                case TLSSW:
@@ -1135,6 +1140,11 @@ sendit (char *sp, char **arg, char *file, int pushed)
                    vec[vecp++] = --cp;
                    continue;
 
+               case SNOOPSW:
+                    snoop++;
+                   vec[vecp++] = --cp;
+                   continue;
+
                case ALIASW:
                case FILTSW:
                case WIDTHSW:
@@ -1147,13 +1157,25 @@ sendit (char *sp, char **arg, char *file, int pushed)
                case MTSSM:
                case MTSSW:
                case MESSAGEIDSW:
-               case OAUTHSW:
                    vec[vecp++] = --cp;
                    if (!(cp = *argp++) || *cp == '-') {
                        advise (NULL, "missing argument to %s", argp[-2]);
                        return;
                    }
                    vec[vecp++] = cp;
+                    user = cp;
+                   continue;
+
+                case OAUTHSW:
+#ifdef OAUTH_SUPPORT
+                   if (!(cp = *argp++) || *cp == '-')
+                       adios (NULL, "missing argument to %s", argp[-2]);
+                    oauth_svc = cp;
+#else
+                    NMH_UNUSED (user);
+                    NMH_UNUSED (oauth_svc);
+                    adios (NULL, "not built with OAuth support");
+#endif
                    continue;
 
                case SDRFSW:
@@ -1222,6 +1244,18 @@ sendit (char *sp, char **arg, char *file, int pushed)
        distfile = NULL;
     }
 
+#ifdef OAUTH_SUPPORT
+    if (oauth_svc != NULL) {
+        if (user == NULL) {
+            adios (NULL, "must specify -user with -oauth");
+        }
+
+        vec[vecp++] = "-oauth";
+        vec[vecp++] = mh_oauth_do_xoauth (user, oauth_svc,
+                                         snoop ? stderr : NULL);
+    }
+#endif /* OAUTH_SUPPORT */
+
     if (altmsg == NULL || stat (altmsg, &st) == NOTOK) {
        st.st_mtime = 0;
        st.st_dev = 0;