mailman: add MailmanForceSSL env var release_20190109-2
authorClinton Ebadi <clinton@unknownlamer.org>
Thu, 10 Jan 2019 03:02:06 +0000 (22:02 -0500)
committerClinton Ebadi <clinton@unknownlamer.org>
Thu, 10 Jan 2019 03:02:06 +0000 (22:02 -0500)
Since normal users cannot access the server mailman is on directly,
they also can't set up a vhost to redirect http -> https for mailman.

Use MailmanForceSSL to control generating a redirect to https for http
vhosts. Silently does nothing when used with a vhost with an SSL
cert (would just generate a redirect loop).

lib/defaults.dtl
lib/mailman.dtl
src/plugins/mailman.sml

index 4df01e7..66dc4e4 100644 (file)
@@ -44,5 +44,6 @@ var AddMX : bool = true;
 var MailNodes : [mail_node] = ["minsky"];
 
 var MailManPlaces : [mailman_place] = [mailman_place_default mailman_node];
+var MailmanForceSSL : bool = false;
 
 var DefaultWebNode : web_node = web_node;
\ No newline at end of file
index dcfa585..e1a8fbf 100644 (file)
@@ -25,6 +25,7 @@ extern val mailman_place_to_ipv6 : mailman_place -> ipv6;
 extern val mailmanVhost : host -> [Domain]
   {MailmanPlaces : [mailman_place],
   SSL : ssl,
+  MailmanForceSSL : bool,
   User : your_user,
   ServerAdmin : email};
 {{Create an Apache virtual host to serve as the web interface for some Mailman
index bab7222..a601155 100644 (file)
@@ -83,6 +83,7 @@ val () = Env.actionV_one "mailmanVhost"
                 val places = Env.env (Env.list mailmanPlace) (env, "MailmanPlaces")
 
                 val ssl = Env.env Apache.ssl (env, "SSL")
+                val forcessl = Env.env Env.bool (env, "MailmanForceSSL")
                 val user = Env.env Env.string (env, "User")
                 val sadmin = Env.env Env.string (env, "ServerAdmin")
 
@@ -131,7 +132,10 @@ val () = Env.actionV_one "mailmanVhost"
                                 (print "\n\tSSLEngine on\n\tSSLCertificateFile ";
                                  print cert;
                                  print "\n")
-                              | NONE => ();
+                              | NONE => if forcessl then
+                                            (print "RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]")
+                                        else
+                                            ();
                             (*
                              print "    SuexecUserGroup list list\n";
                             print "\n";