web_sup.erl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. -module(web_sup).
  2. -behaviour(supervisor).
  3. -export([start_link/0, init/1]).
  4. -compile(export_all).
  5. -include_lib ("n2o/include/wf.hrl").
  6. -include("users.hrl").
  7. -define(APP, face).
  8. start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []).
  9. -define(USERS, [#user{id="maxim",email="maxim@synrc.com"},
  10. #user{id="doxtop",email="doxtop@synrc.com"},
  11. #user{id="roman",email="roman@github.com"}]).
  12. init([]) ->
  13. {ok, _} = cowboy:start_http(http, 100, [{port, wf:config(n2o,transition_port,8000)}],
  14. [{env, [{dispatch, dispatch_rules()}]}]),
  15. PrivDir = code:priv_dir(face),
  16. {ok, _} = cowboy:start_https(https, 100, [
  17. {port, wf:config(n2o,port,8443)},
  18. {cacertfile, PrivDir ++ "/ssl/cowboy-ca.crt"},
  19. {certfile, PrivDir ++ "/ssl/server.crt"},
  20. {keyfile, PrivDir ++ "/ssl/server.key"} ], [{env, [{dispatch, dispatch_rules()}]}]),
  21. users:init(),
  22. users:populate(?USERS),
  23. {ok, {{one_for_one, 5, 10}, []}}.
  24. dispatch_rules() ->
  25. cowboy_router:compile(
  26. [{'_', [
  27. {"/static/[...]", cowboy_static,
  28. {priv_dir, ?APP, <<"static">>,[{mimetypes,cow_mimetypes,all}]}},
  29. {"/rest/:resource", rest_cowboy, []},
  30. {"/rest/:resource/:id", rest_cowboy, []},
  31. {"/ws/[...]", bullet_handler, [{handler, n2o_bullet}]},
  32. {'_', n2o_cowboy, []}
  33. ]}]).