diff --git a/src/Html.c b/src/Html.c index fcca083..21e6116 100644 --- a/src/Html.c +++ b/src/Html.c @@ -44,12 +44,18 @@ HtmlBegin(FILE * stream, char *title) "" "" "
" - ,title); + ); for (i = 0; i < TELODENDRIA_LOGO_HEIGHT; i++) { diff --git a/src/Routes/RouteStatic.c b/src/Routes/RouteStatic.c index bc7d031..7c55fbb 100644 --- a/src/Routes/RouteStatic.c +++ b/src/Routes/RouteStatic.c @@ -23,15 +23,39 @@ */ #include#include +#include ROUTE_IMPL(RouteStatic, args) { FILE *stream = HttpStream(args->context); + char *pathPart = MATRIX_PATH_POP(args->path); HttpResponseHeader(args->context, "Content-Type", "text/html"); HttpSendHeaders(args->context); - StaticItWorks(stream); + if (!pathPart) + { + StaticItWorks(stream); + } + else if (MATRIX_PATH_EQUALS(pathPart, "client")) + { + Free(pathPart); + pathPart = MATRIX_PATH_POP(args->path); + if (MATRIX_PATH_EQUALS(pathPart, "login")) + { + StaticLogin(stream); + } + else + { + StaticError(stream, HTTP_NOT_FOUND); + } + } + else + { + StaticError(stream, HTTP_NOT_FOUND); + } + + Free(pathPart); return NULL; } diff --git a/src/Static/StaticError.c b/src/Static/StaticError.c new file mode 100644 index 0000000..12cfd7a --- /dev/null +++ b/src/Static/StaticError.c @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2022-2023 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include + +void +StaticError(FILE * stream, HttpStatus error) +{ + char title[10]; + + sprintf(title, "Error %d", error); + + HtmlBegin(stream, title); + + fprintf(stream, " %s
", + HttpStatusToString(error)); + + HtmlEnd(stream); +} diff --git a/src/Static/StaticLogin.c b/src/Static/StaticLogin.c new file mode 100644 index 0000000..6383d9f --- /dev/null +++ b/src/Static/StaticLogin.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2022-2023 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include+#include + +void +StaticLogin(FILE * stream) +{ + HtmlBegin(stream, "Log In"); + + fprintf(stream, + " " + "" + "" + ); + + fprintf(stream, + "" + ); + + HtmlEnd(stream); +} diff --git a/src/include/Static.h b/src/include/Static.h index 1ad13a5..3a4f13a 100644 --- a/src/include/Static.h +++ b/src/include/Static.h @@ -26,10 +26,15 @@ #include+#include + extern void StaticItWorks(FILE *); extern void StaticLogin(FILE *); +extern void + StaticError(FILE *, HttpStatus); + #endif /* TELODENDRIA_STATIC_H */