[tor-commits] [flashproxy/master] source the email address from a defaults file, don't hard code it

infinity0 at torproject.org infinity0 at torproject.org
Thu Nov 21 13:18:46 UTC 2013


commit 4811b51af8a5bf5c97dd1053e89c091a07916f4a
Author: Ximin Luo <infinity0 at gmx.com>
Date:   Tue Sep 24 20:11:41 2013 +0100

    source the email address from a defaults file, don't hard code it
---
 facilitator/INSTALL                            |    6 ++++--
 facilitator/Makefile.am                        |    2 ++
 facilitator/default/facilitator-email-poller   |    6 ++++++
 facilitator/facilitator-email-poller           |   13 ++++++++-----
 facilitator/init.d/facilitator-email-poller.in |   13 ++++++++++++-
 5 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/facilitator/INSTALL b/facilitator/INSTALL
index a7ed1dc..bd47adf 100644
--- a/facilitator/INSTALL
+++ b/facilitator/INSTALL
@@ -21,8 +21,10 @@ You should securely distribute the public key to anyone that wants to
 use your facilitator; they will need to pass it as the
 --facilitator-pubkey option to flashproxy-reg-email.
 
-You should also edit /usr/local/etc/flashproxy/reg-email.pass to contain your
-app-specific Gmail password; see doc/gmail-howto.txt for instructions.
+You should also edit /usr/local/etc/default/facilitator-email-poller to
+contain your Gmail address and /usr/local/etc/flashproxy/reg-email.pass
+to contain your app-specific password; see doc/gmail-howto.txt for
+instructions.
 
 Uninstall.
 
diff --git a/facilitator/Makefile.am b/facilitator/Makefile.am
index b8dff41..740ac3f 100644
--- a/facilitator/Makefile.am
+++ b/facilitator/Makefile.am
@@ -7,6 +7,7 @@ initscriptdir = /etc/init.d
 exampledir = $(docdir)/examples
 appenginedir = $(pkgdatadir)/appengine
 pkgconfdir = $(sysconfdir)/flashproxy
+initdefaultdir = $(sysconfdir)/default
 appengineconfdir = $(pkgconfdir)/reg-appengine
 
 # automake PLVs
@@ -14,6 +15,7 @@ appengineconfdir = $(pkgconfdir)/reg-appengine
 dist_bin_SCRIPTS = facilitator facilitator-email-poller facilitator-reg-daemon facilitator-reg facilitator.cgi fac.py
 if DO_INITSCRIPTS
 initscript_SCRIPTS = init.d/facilitator init.d/facilitator-email-poller init.d/facilitator-reg-daemon
+initdefault_DATA = default/facilitator-email-poller
 endif
 
 dist_doc_DATA = doc/appengine-howto.txt doc/facilitator-howto.txt doc/gmail-howto.txt README
diff --git a/facilitator/default/facilitator-email-poller b/facilitator/default/facilitator-email-poller
new file mode 100644
index 0000000..af2f8ca
--- /dev/null
+++ b/facilitator/default/facilitator-email-poller
@@ -0,0 +1,6 @@
+# Change to "yes" to run the email poller.
+RUN_DAEMON="no"
+
+# Replace this with the email address for your facilitator.
+# You should also edit the reg-email.pass file as needed.
+FACILITATOR_EMAIL_ADDR="invalid"
diff --git a/facilitator/facilitator-email-poller b/facilitator/facilitator-email-poller
index 3504c51..32dc2d4 100755
--- a/facilitator/facilitator-email-poller
+++ b/facilitator/facilitator-email-poller
@@ -23,7 +23,6 @@ from M2Crypto import SSL, X509
 
 DEFAULT_IMAP_HOST = "imap.gmail.com"
 DEFAULT_IMAP_PORT = 993
-DEFAULT_EMAIL_ADDRESS = "flashproxyreg.a at gmail.com"
 DEFAULT_LOG_FILENAME = "facilitator-email-poller.log"
 
 POLL_INTERVAL = 60
@@ -126,14 +125,14 @@ class IMAP4_SSL_REQUIRED(imaplib.IMAP4_SSL):
 
 def usage(f = sys.stdout):
     print >> f, """\
-Usage: %(progname)s --pass=PASSFILE
+Usage: %(progname)s --email=ADDRESS --pass=PASSFILE
 Facilitator-side helper for the facilitator-reg-email rendezvous. Polls
 an IMAP server for email messages with client registrations, deletes
 them, and forwards the registrations to the facilitator.
 
   -d, --debug               don't daemonize, log to stdout.
       --disable-pin         don't check server public key against a known pin.
-  -e, --email=ADDRESS       log in as ADDRESS (default "%(email_addr)s").
+  -e, --email=ADDRESS       log in as ADDRESS
   -h, --help                show this help.
   -i, --imap=HOST[:PORT]    use the given IMAP server (default "%(imap_addr)s").
       --imaplib-debug       show raw IMAP messages (will include email password).
@@ -144,7 +143,6 @@ them, and forwards the registrations to the facilitator.
       --unsafe-logging      don't scrub email password and IP addresses from logs.\
 """ % {
     "progname": sys.argv[0],
-    "email_addr": DEFAULT_EMAIL_ADDRESS,
     "imap_addr": fac.format_addr((DEFAULT_IMAP_HOST, DEFAULT_IMAP_PORT)),
     "log": DEFAULT_LOG_FILENAME,
 }
@@ -160,7 +158,7 @@ def log(msg):
     print >> options.log_file, (u"%s %s" % (time.strftime(LOG_DATE_FORMAT), msg)).encode("UTF-8")
     options.log_file.flush()
 
-options.email_addr = DEFAULT_EMAIL_ADDRESS
+options.email_addr = None
 options.imap_addr = (DEFAULT_IMAP_HOST, DEFAULT_IMAP_PORT)
 
 opts, args = getopt.gnu_getopt(sys.argv[1:], "de:hi:l:p:", [
@@ -206,6 +204,11 @@ if len(args) != 0:
     usage(sys.stderr)
     sys.exit(1)
 
+# Check the email
+if not options.email_addr or '@' not in options.email_addr:
+    print >> sys.stderr, "The --email option is required and must be an email address."
+    sys.exit(1)
+
 # Load the email password.
 if options.password_filename is None:
     print >> sys.stderr, "The --pass option is required."
diff --git a/facilitator/init.d/facilitator-email-poller.in b/facilitator/init.d/facilitator-email-poller.in
index ef90794..44cc527 100755
--- a/facilitator/init.d/facilitator-email-poller.in
+++ b/facilitator/init.d/facilitator-email-poller.in
@@ -24,8 +24,15 @@ PIDFILE=@localstatedir@/run/$NAME.pid
 LOGFILE=@localstatedir@/log/$NAME.log
 CONFDIR=@sysconfdir@/flashproxy
 PRIVDROP_USER=@fpfacilitatoruser@
+DEFAULTSFILE=@sysconfdir@/default/$NAME
+
+# Include defaults if available
+if [ -f $DEFAULTSFILE ] ; then
+    . $DEFAULTSFILE
+fi
+
 DAEMON=@bindir@/$NAME
-DAEMON_ARGS="--pass $CONFDIR/reg-email.pass --log $LOGFILE --pidfile $PIDFILE --privdrop-user $PRIVDROP_USER"
+DAEMON_ARGS="--email $FACILITATOR_EMAIL_ADDR --pass $CONFDIR/reg-email.pass --log $LOGFILE --pidfile $PIDFILE --privdrop-user $PRIVDROP_USER"
 
 # Exit if the package is not installed
 [ -x "$DAEMON" ] || exit 0
@@ -76,6 +83,10 @@ do_stop()
 
 case "$1" in
   start)
+    if [ "$RUN_DAEMON" != "yes" ]; then
+        log_action_msg "Not starting $DESC (Disabled in $DEFAULTSFILE)."
+        exit 0
+    fi
 	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
 	do_start
 	case "$?" in





More information about the tor-commits mailing list