blob: fae78f9a555553d52cc3336b1dffcce7338a9d7f (
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
#!/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
EXTRA_HEADERS=
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'
}
sanitize-html-entities () {
echo "$1" |
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")
if [ "$REQUEST_METHOD" = "GET" ]; then
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
elif [ "$REQUEST_METHOD" = "POST" ]; then
source $SCRIPT_DIR/lib/cgibashopts/cgibashopts
POST_DESTINATION="$FORM_destination"
if [[ ! " ${ALLOWED_POST_FOLDERS[@]} " =~ " ${POST_DESTINATION} " ]]; then
STATUS=401
HEADER_TITLE="POST_DESTINATION=$POST_DESTINATION;source jefferson.sh"
HEADER_TITLE_MOBILE="$HEADER_TITLE"
BODY="$(cat <<ERR
<p class='err-401'>
401: .$POST_DESTINATION: Destino inválido, sem 1337 o suficiente.
</p>
ERR
)"
return 1
fi
POST_PATH="/pages$POST_DESTINATION"
POST_DESTINATION="${SCRIPT_DIR}/pages$POST_DESTINATION"
mkdir -p "$POST_DESTINATION"
case "$REQUEST_URI" in
/post)
source $SCRIPT_DIR/utils/handle-post-upload.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
fi
}
router
case "$RESPONSE_CONTENT_TYPE" in
"text/html")
RESPONSE_BODY=$(html)
;;
*)
RESPONSE_BODY=$BODY
esac
cat <<INDEX
Content-Type: $RESPONSE_CONTENT_TYPE
Status: $STATUS
$EXTRA_HEADERS
$RESPONSE_BODY
INDEX
|