From 22cefc84254cae1f57195da819eba69dbacb5a6e Mon Sep 17 00:00:00 2001
From: Magnus Ahltorp <map@kth.se>
Date: Mon, 30 Mar 2015 15:41:13 +0200
Subject: Allow non-TLS http Closes CATLFISH-31

---
 src/catlfish_sup.erl | 34 ++++++++++++++++++++--------------
 src/catlfish_web.erl |  6 +++---
 2 files changed, 23 insertions(+), 17 deletions(-)

(limited to 'src')

diff --git a/src/catlfish_sup.erl b/src/catlfish_sup.erl
index 6f918cd..882a017 100644
--- a/src/catlfish_sup.erl
+++ b/src/catlfish_sup.erl
@@ -9,6 +9,21 @@
 start_link(_Args) ->
     supervisor:start_link({local, ?MODULE}, ?MODULE, []).
 
+gen_http_config(Config, SSLOptions, SSLFlag) ->
+    {ChildName, IpAddress, Port, Module} = Config,
+    {ok, IPv4Address} =
+        inet:parse_ipv4strict_address(IpAddress),
+    WebConfig = [{ip, IPv4Address},
+                 {port, Port},
+                 {ssl, SSLFlag},
+                 {acceptor_pool_size, application:get_env(catlfish, http_server_pool_size, 16)},
+                 {ssl_opts, SSLOptions}
+                ],
+    {ChildName,
+     {catlfish_web, start, [WebConfig, Module, ChildName]},
+                           permanent, 5000,
+     worker, dynamic}.
+
 init([]) ->
     SSLOptions =
         [{certfile, application:get_env(catlfish, https_certfile, none)},
@@ -16,20 +31,11 @@ init([]) ->
          {cacertfile, application:get_env(catlfish, https_cacertfile, none)}],
     Servers =
         lists:map(fun (Config) ->
-                          {ChildName, IpAddress, Port, Module} = Config,
-                          {ok, IPv4Address} =
-                              inet:parse_ipv4strict_address(IpAddress),
-                          WebConfig = [{ip, IPv4Address},
-                                       {port, Port},
-                                       {ssl, true},
-                                       {acceptor_pool_size, application:get_env(catlfish, http_server_pool_size, 16)},
-                                       {ssl_opts, SSLOptions}
-                                      ],
-                          {ChildName,
-                           {catlfish_web, start, [WebConfig, Module]},
-                           permanent, 5000,
-                           worker, dynamic}
-                  end, application:get_env(catlfish, https_servers, [])),
+                          gen_http_config(Config, SSLOptions, true)
+                  end, application:get_env(catlfish, https_servers, [])) ++
+        lists:map(fun (Config) ->
+                          gen_http_config(Config, SSLOptions, false)
+                  end, application:get_env(catlfish, http_servers, [])),
     lager:debug("Starting servers ~p", [Servers]),
     {ok,
      {{one_for_one, 3, 10},
diff --git a/src/catlfish_web.erl b/src/catlfish_web.erl
index 5ee5743..f9fe6d6 100644
--- a/src/catlfish_web.erl
+++ b/src/catlfish_web.erl
@@ -2,14 +2,14 @@
 %%% See LICENSE for licensing information.
 
 -module(catlfish_web).
--export([start/2, loop/2]).
+-export([start/3, loop/2]).
 
-start(Options, Module) ->
+start(Options, Module, Name) ->
     lager:debug("Starting catlfish web server: ~p", [Module]),
     Loop = fun (Req) ->
                    ?MODULE:loop(Req, Module)
            end,
-    mochiweb_http:start([{name, Module}, {loop, Loop} | Options]).
+    mochiweb_http:start([{name, Name}, {loop, Loop} | Options]).
 
 
 add_auth(Path, {Code, Headers, Data}) ->
-- 
cgit v1.1