Skip to content
This repository has been archived by the owner on Mar 1, 2024. It is now read-only.

Commit

Permalink
1.02-prebeta-101120
Browse files Browse the repository at this point in the history
  • Loading branch information
Polar authored and Polar committed Nov 10, 2020
1 parent 0a038f9 commit c83e818
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 9 deletions.
2 changes: 1 addition & 1 deletion rebar.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{relx, [{release, {'MeowMeow', "1.02-early-beta-41120"}, [app]},
{relx, [{release, {'MeowMeow', "1.02-prebeta-101120"}, [app]},
{dev_mode, true},
{include_erts, false},
{extended_start_script, true}
Expand Down
2 changes: 1 addition & 1 deletion src/app.app.src
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{application, app, [
{description, "A tiny webserver written in erlang"},
{vsn, "1.02-early-beta-41120"},
{vsn, "1.02-prebeta-101120"},
{modules, []},
{registered, [app_sup]},
{applications, [
Expand Down
2 changes: 1 addition & 1 deletion src/config.hrl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
-author("p01ar").
-record(sockaddr_in4, {family = inet, port = 8888, addr = {0, 0, 0, 0}}).
-define(CHUNK_SIZE, 2048).
-define(version, "MeowMeow/1.02-prebeta-41120").
-define(version, "MeowMeow/1.02-prebeta-101120").
-define(accessfile, "/etc/MeowMeow/routes.conf").
-define(max_request_length, 10000).
-define(mime_types_file, "mime.types").
Expand Down
32 changes: 27 additions & 5 deletions src/handle.erl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-module(handle).
-export([abort/1, handler_start/1, send_file/3]).
-export([abort/1, handler_start/1, send_file/3, get_filename/1]).
-import(response, [response/3, get_desc/1, set_header/3]).
-import(parse_http, [http2map/1, mime_by_fname/1, is_close/1]).
-import(util, [get_time/0]).
Expand Down Expand Up @@ -91,9 +91,11 @@ set_keepalive(Response) ->

get_filename(XRoute) ->
Route = binary:bin_to_list(XRoute, {1, string:length(XRoute) - 1}),
SafeFName = filelib:safe_relative_path(Route, ?docdir),
SafeIName = filelib:safe_relative_path(Route ++ "index.html", ?docdir),
FileName = filename:join([?docdir, filelib:safe_relative_path(Route, ?docdir)]),
IndexName = filename:join([?docdir, filelib:safe_relative_path(Route ++ "index.html", ?docdir)]),
if (FileName == unsafe) or (IndexName == unsafe) -> unsafe;
if (SafeIName == unsafe) or (SafeFName == unsafe) -> unsafe;
true ->
FileExists = filelib:is_regular(FileName),
IndexExists = filelib:is_regular(IndexName),
Expand Down Expand Up @@ -197,9 +199,29 @@ handle(Sock, Upstream, RequestLines) ->
Upstream ! {send, abort(400)},
ok;
{ok, Request} ->
Response = #response{socket = Sock, code = 200, request = Request, upstream = Upstream},
logging:debug("Response=~p", [Response]),
handle(Response, Upstream)
case Request#request.method of
<<"GET">>->
Response = #response{socket = Sock, code = 200, request = Request, upstream = Upstream},
logging:debug("Response=~p", [Response]),
handle(Response, Upstream);
<<"HEAD">>->
Response = #response{socket = Sock, code = 200, request = Request, upstream = Upstream},
logging:debug("Response=~p", [Response]),
handle(Response, Upstream);
<<"POST">>->
%% In fact, POST should reject request with 405 if not requested CGI or alike resource
logging:warn("Method `POST` not yet implemented"),
log_response(Request, 501),
Upstream ! {send, abort(501)},
Upstream ! close,
ok;
Any->
logging:warn("Requested unknown method ~s, just rejecting request", [Request#request.method]),
log_response(Request,405),
Upstream ! {send, abort(405)},
Upstream ! close,
ok
end
end.

handler(Sock, Upstream, RequestLines) ->
Expand Down
2 changes: 1 addition & 1 deletion src/parse_http.erl
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ parse_request(SrcAddr, Lines) ->

is_close(Request) ->
case sget("Connection", Request#request.header) of
{badkey, "Connection"} -> false;
{badkey, "Connection"} -> true;
"close" -> true;
"keep-alive" -> false
end.
Expand Down

0 comments on commit c83e818

Please sign in to comment.