blob: cd60cc0c84c37f7c0412e10c46b9e7f8883cd66f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#!/bin/bash
if [ "$REQUEST_URI" = '/favicon.ico' ]; then
exit 0
fi
SCRIPT_DIR="$( cd "$( dirname "$(readlink -f "$0")" )" >/dev/null 2>&1 && pwd )"
source ./config.sh
RESPONSE_CONTENT_TYPE="text/html"
STATUS=200
HEADER_TITLE='cd programadores/;cd Jefferson\ Julio/;source jefferson.sh'
HEADER_TITLE_MOBILE="$HEADER_TITLE"
urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
status-ok () {
[ "$STATUS" -gt 199 ] && [ "$STATUS" -lt 300 ] && echo 1
}
strip-html-tags () {
echo "$1" | sed 's/<[^>]*>//g'
}
sanitize-filename () {
echo "${1// /\\ }"
}
scape-regex () {
echo "$1" |
sed 's/(/\\(/g' |
sed 's/)/\\)/g' |
sed 's/|/\\|/g'
}
html () {
cat <<HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8" />
<title>jefferson.sh</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" type="image/png" href="/static/favicon.png" />
<link rel="stylesheet" href="/static/styles.css" />
<link rel="manifest" href="/static/manifest.json" />
</head>
<body>
$(source ./header.sh)
$(source ./nav.sh)
<main>
$BODY
</main>
$(source ./footer.sh)
</body>
</html>
HTML
}
router () {
REQUEST_URI=$(urldecode "$REQUEST_URI")
case "$REQUEST_URI" in
/)
BODY=$(source ./pages/home.sh)
;;
/contato)
HEADER_TITLE="source pages/contato.sh"
HEADER_TITLE_MOBILE="$HEADER_TITLE"
BODY=$(source ./pages/contato.sh)
;;
/$ARTICLES_PATH*)
ARTICLE_FILE=.$REQUEST_URI
HEADER_TITLE="ARTICLE_FILE=$(sanitize-filename "$ARTICLE_FILE");source pages/article.sh"
HEADER_TITLE_MOBILE="ARTICLE_FILE=$(sanitize-filename "$ARTICLE_FILE");source pages/article.sh"
BODY=$(source ./pages/article.sh)
;;
*)
STATUS=404
HEADER_TITLE="REQUEST_FILE=.$(sanitize-filename "$REQUEST_URI");source page.sh"
HEADER_TITLE_MOBILE="$HEADER_TITLE"
BODY="<p class='err-404'>404: .$REQUEST_URI: Arquivo ou diretório inexistente</p>"
;;
esac
}
router
case "$RESPONSE_CONTENT_TYPE" in
"text/html")
RESPONSE_BODY=$(html)
;;
*)
RESPONSE_BODY=$BODY
esac
cat <<INDEX
Content-Type: $RESPONSE_CONTENT_TYPE
Status: $STATUS
$RESPONSE_BODY
INDEX
|