@@ -30,7 +30,8 @@ init([]) ->
3030 case proplists :get_value (httpd , Services ) of
3131 undefined ->
3232 build_config (HasMimetypes );
33- _ -> ok
33+ HttpdConfig ->
34+ merge_config (HasMimetypes , HttpdConfig )
3435 end
3536 end ,
3637
@@ -81,6 +82,34 @@ build_config(HasMimetypes) ->
8182 application :set_env (inets , services , NewServices )
8283 end .
8384
85+ merge_config (HasMimetypes , HttpdConfig ) ->
86+ io :format (" Configuration for inets httpd exists, merging with simple_bridge.config...~n " ),
87+ {Address , Port } = simple_bridge_util :get_address_and_port (inets ),
88+ {DocRoot , StaticPaths } = simple_bridge_util :get_docroot_and_static_paths (inets ),
89+ io :format (" Starting Inets Server at ~p :~p~n " , [Address , Port ]),
90+ io :format (" Static Paths: ~p~n Document Root for Static: ~s~n " , [StaticPaths , DocRoot ]),
91+
92+ Modules = proplists :get_value (modules , HttpdConfig , []),
93+
94+ DefaultHttpd = [
95+ {bind_address , simple_bridge_util :parse_ip (Address )},
96+ {port , Port },
97+ {server_name , " simple_bridge_inets" },
98+ {server_root , " ." },
99+ {document_root , DocRoot },
100+ {modules , lists :append (Modules , [simple_bridge_util :get_anchor_module (inets )])},
101+ {mime_types , build_mimetypes (HasMimetypes )}
102+ ],
103+
104+ HttpdConfig0 = proplists :delete (modules , HttpdConfig ),
105+
106+ MergedHttpd = lists :umerge (lists :sort (HttpdConfig0 ), lists :sort (DefaultHttpd )),
107+
108+ {ok , Services } = application :get_env (inets , services ),
109+
110+ NewServices = lists :keyreplace (httpd , 1 , Services , {httpd , MergedHttpd }),
111+ application :set_env (inets , services , NewServices ).
112+
84113build_mimetypes (true = _HasMimetypes ) ->
85114 [{binary_to_list (Ext ), binary_to_list (hd (mimetypes :ext_to_mimes (Ext )))}
86115 || Ext <- mimetypes :extensions ()];
0 commit comments