Ajout sessions
This commit is contained in:
parent
4d8cb8d5c1
commit
7c2d1a82ca
5
assets/private_test.html
Normal file
5
assets/private_test.html
Normal file
@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1> BRAVO </h1>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +1,11 @@
|
||||
# portal_user configuration
|
||||
|
||||
server notls {
|
||||
bind 192.168.1.6 8888
|
||||
bind 127.0.0.1 8888
|
||||
tls no
|
||||
}
|
||||
|
||||
load ./sqlite3.so
|
||||
load ./sqlite3.so init
|
||||
|
||||
http_body_max 1024000000
|
||||
http_body_disk_offload 1024000
|
||||
@ -15,7 +15,18 @@ workers 1
|
||||
|
||||
validator v_login regex ^[-_.a-zA-Z0-9]*$
|
||||
validator v_password function v_password_func
|
||||
validator v_session function v_session_validate
|
||||
|
||||
pledge wpath cpath flock
|
||||
|
||||
authentication auth_example {
|
||||
authentication_type cookie
|
||||
authentication_value session_id
|
||||
authentication_validator v_session
|
||||
authentication_uri /
|
||||
}
|
||||
|
||||
|
||||
domain * {
|
||||
attach notls
|
||||
|
||||
@ -27,6 +38,7 @@ domain * {
|
||||
route /css/style.css asset_serve_style_css
|
||||
route /js/theme-switcher.js asset_serve_theme_switcher_js
|
||||
route /signup create_user
|
||||
route /portal/bienvenue asset_serve_private_test_html auth_example
|
||||
|
||||
params post / {
|
||||
validate login v_login
|
||||
|
@ -404,19 +404,71 @@
|
||||
192.168.1.100 - - [14/Feb/2022:20:32:58 +0700] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [14/Feb/2022:20:32:58 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [14/Feb/2022:20:32:58 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:08:53 +0700] "GET / HTTP/1.1" 200 1640 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:09:02 +0700] "POST / HTTP/1.1" 200 1656 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:09:02 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:09:02 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:13:50 +0700] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:13:50 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:13:50 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:42 +0700] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:42 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:42 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:53 +0700] "POST /signup HTTP/1.1" 200 1661 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:53 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:23:53 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://192.168.1.6:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:27:14 +0700] "POST / HTTP/1.1" 200 1656 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:27:14 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
192.168.1.100 - - [15/Feb/2022:11:27:14 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://192.168.1.6:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:33 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:33 +0100] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:33 +0100] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:44 +0100] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:44 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:03:44 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:53 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:53 +0100] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:53 +0100] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:58 +0100] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:58 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:42:58 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:43:12 +0100] "POST /signup HTTP/1.1" 200 1661 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:43:12 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:43:12 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:13 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:13 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:13 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:23 +0100] "POST / HTTP/1.1" 200 1656 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:23 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:44:23 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:47:29 +0100] "POST / HTTP/1.1" 200 1660 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:47:29 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:05:47:29 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:42:55 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:42:55 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:42:55 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:45:35 +0100] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:45:35 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [15/Feb/2022:07:45:35 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:15:22 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:15:22 +0100] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:15:22 +0100] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:12 +0100] "GET /portal/bienvenue HTTP/1.1" 302 0 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:12 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:12 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:12 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:19 +0100] "POST / HTTP/1.1" 0 25 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:16:19 +0100] "POST / HTTP/1.1" 0 25 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:27:41 +0100] "GET /signup HTTP/1.1" 200 1660 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:27:41 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:27:41 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:27:56 +0100] "POST /signup HTTP/1.1" 0 25 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:28:00 +0100] "POST /signup HTTP/1.1" 0 25 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:30:08 +0100] "POST /signup HTTP/1.1" 0 25 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:30:12 +0100] "POST /signup HTTP/1.1" 0 25 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:47:55 +0100] "POST /signup HTTP/1.1" 200 1661 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:47:55 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:47:55 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:48:01 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:48:01 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:48:01 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:53:27 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:53:27 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:53:27 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:54:36 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:54:36 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:54:36 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:58:47 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:58:47 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:05:58:47 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:23 +0100] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:23 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:23 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:33 +0100] "POST / HTTP/1.1" 200 1656 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:33 +0100] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:33 +0100] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
127.0.0.1 - - [17/Feb/2022:06:17:51 +0100] "GET /portal/bienvenue HTTP/1.1" 200 63 "-" "Mozilla/5.0 (X11; OpenBSD amd64; rv:95.0) Gecko/20100101 Firefox/95.0"
|
||||
|
BIN
ktrace.out
BIN
ktrace.out
Binary file not shown.
221
src/sessions.h
Normal file
221
src/sessions.h
Normal file
@ -0,0 +1,221 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
struct session_s {
|
||||
char *session_id;
|
||||
char *user;
|
||||
struct session_s *next;
|
||||
};
|
||||
|
||||
typedef struct session_s session_t;
|
||||
|
||||
struct hashtable_s {
|
||||
int size;
|
||||
struct session_s **table;
|
||||
};
|
||||
|
||||
typedef struct hashtable_s hashtable_t;
|
||||
|
||||
static hashtable_t *ht_create( int size );
|
||||
static int ht_hash( hashtable_t *hashtable, char *session_id );
|
||||
static session_t *ht_newpair( char *session_id, char *user );
|
||||
static char *ht_get( hashtable_t *hashtable, char *session_id );
|
||||
static void ht_set( hashtable_t *hashtable, char *session_id, char *user );
|
||||
static void ht_delete (hashtable_t *hashtable, char *key);
|
||||
static char *gen_session_id(int len);
|
||||
static char *set_cookie_header( const char *champ, const char separator,
|
||||
const char *session_id);
|
||||
|
||||
|
||||
/* Create a new hashtable. */
|
||||
hashtable_t *ht_create( int size ) {
|
||||
hashtable_t *hashtable = NULL;
|
||||
int i;
|
||||
|
||||
if( size < 1 ) return NULL;
|
||||
|
||||
/* Allocate the table itself. */
|
||||
if( ( hashtable = malloc( sizeof( hashtable_t ) ) ) == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Allocate pointers to the head nodes. */
|
||||
if( ( hashtable->table = malloc( sizeof( session_t * ) * size ) ) == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
for( i = 0; i < size; i++ ) {
|
||||
hashtable->table[i] = NULL;
|
||||
}
|
||||
|
||||
hashtable->size = size;
|
||||
|
||||
return hashtable;
|
||||
}
|
||||
|
||||
/* Hash a string for a particular hash table. */
|
||||
int ht_hash( hashtable_t *hashtable, char *session_id ) {
|
||||
|
||||
unsigned long int hashval = 0;
|
||||
int i = 0;
|
||||
|
||||
/* Convert our string to an integer */
|
||||
while( hashval < ULONG_MAX && i < strlen( session_id ) ) {
|
||||
hashval = hashval << 8;
|
||||
hashval += session_id[ i ];
|
||||
i++;
|
||||
}
|
||||
|
||||
return hashval % hashtable->size;
|
||||
}
|
||||
|
||||
/* Create a key-value pair. */
|
||||
session_t *ht_newpair( char *session_id, char *user ) {
|
||||
session_t *newpair;
|
||||
|
||||
if( ( newpair = malloc( sizeof( session_t ) ) ) == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( ( newpair->session_id = strdup( session_id ) ) == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( ( newpair->user = strdup( user ) ) == NULL ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
newpair->next = NULL;
|
||||
|
||||
return newpair;
|
||||
}
|
||||
|
||||
/* Insert a key-value pair into a hash table. */
|
||||
static void ht_set( hashtable_t *hashtable, char *session_id, char *user ) {
|
||||
int bin = 0;
|
||||
session_t *newpair = NULL;
|
||||
session_t *next = NULL;
|
||||
session_t *last = NULL;
|
||||
|
||||
bin = ht_hash( hashtable, session_id );
|
||||
|
||||
next = hashtable->table[ bin ];
|
||||
|
||||
while( next != NULL && next->session_id != NULL && strcmp( session_id, next->session_id ) > 0 ) {
|
||||
last = next;
|
||||
next = next->next;
|
||||
}
|
||||
|
||||
/* There's already a pair. Let's replace that string. */
|
||||
if( next != NULL && next->session_id != NULL && strcmp( session_id, next->session_id ) == 0 ) {
|
||||
|
||||
free( next->user );
|
||||
next->user = strdup( user );
|
||||
|
||||
/* Nope, could't find it. Time to grow a pair. */
|
||||
} else {
|
||||
newpair = ht_newpair( session_id, user );
|
||||
|
||||
/* We're at the start of the linked list in this bin. */
|
||||
if( next == hashtable->table[ bin ] ) {
|
||||
newpair->next = next;
|
||||
hashtable->table[ bin ] = newpair;
|
||||
|
||||
/* We're at the end of the linked list in this bin. */
|
||||
} else if ( next == NULL ) {
|
||||
last->next = newpair;
|
||||
|
||||
/* We're in the middle of the list. */
|
||||
} else {
|
||||
newpair->next = next;
|
||||
last->next = newpair;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Retrieve a key-value pair from a hash table. */
|
||||
static char *ht_get( hashtable_t *hashtable, char *session_id ) {
|
||||
int bin = 0;
|
||||
session_t *pair;
|
||||
|
||||
bin = ht_hash( hashtable, session_id );
|
||||
|
||||
/* Step through the bin, looking for our value. */
|
||||
pair = hashtable->table[ bin ];
|
||||
while( pair != NULL && pair->session_id != NULL && strcmp( session_id, pair->session_id ) > 0 ) {
|
||||
pair = pair->next;
|
||||
}
|
||||
|
||||
/* Did we actually find anything? */
|
||||
if( pair == NULL || pair->session_id == NULL || strcmp( session_id, pair->session_id ) != 0 ) {
|
||||
return NULL;
|
||||
|
||||
} else {
|
||||
return pair->user;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ht_delete (hashtable_t *hashtable, char *key){
|
||||
|
||||
int bin = 0;
|
||||
session_t *pair;
|
||||
session_t *prec;
|
||||
|
||||
bin = ht_hash( hashtable, key );
|
||||
/* Step through the bin, looking for our value. */
|
||||
pair = hashtable->table[ bin ];
|
||||
while( pair != NULL && pair->session_id != NULL && strcmp( key, pair->session_id ) > 0 ) {
|
||||
prec = pair;
|
||||
pair = pair->next;
|
||||
}
|
||||
|
||||
/* Did we actually find anything? */
|
||||
if( pair != NULL || pair->session_id != NULL || strcmp( key, pair->session_id ) == 0 ) {
|
||||
free(pair->session_id);
|
||||
free(pair->user);
|
||||
}
|
||||
}
|
||||
|
||||
char *gen_session_id(int len){
|
||||
|
||||
int index = 0;
|
||||
char session_id[len];
|
||||
char char1[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/,.-+=~`<>:";
|
||||
int c_tmp = 0;
|
||||
char *res;
|
||||
srand((unsigned int)(time(NULL)));
|
||||
|
||||
for(index = 0; index < len; index++)
|
||||
{
|
||||
c_tmp = rand() % sizeof(char1) - 1;
|
||||
session_id[index] = char1[c_tmp];
|
||||
}
|
||||
|
||||
res = strdup(session_id);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
char *set_cookie_header( const char *champ, const char separator,
|
||||
const char *session_id) {
|
||||
int lch, lse;
|
||||
int ls = 0;
|
||||
char *result;
|
||||
lch = strlen(champ);
|
||||
lse = strlen(session_id);
|
||||
if (separator)
|
||||
ls = 1;
|
||||
if ( (result = calloc(lch + ls + lse + 1, sizeof *result)) == NULL )
|
||||
return NULL;
|
||||
|
||||
memcpy (result, champ, lch);
|
||||
if (separator)
|
||||
result[lch] = separator;
|
||||
|
||||
memcpy (result + lch + ls, session_id, lse + 1 );
|
||||
|
||||
return result;
|
||||
}
|
137
src/sqlite3.c
137
src/sqlite3.c
@ -5,7 +5,9 @@
|
||||
#include <unistd.h>
|
||||
#include <sqlite3.h>
|
||||
#include "assets.h"
|
||||
#include "sessions.h"
|
||||
#include <pwd.h>
|
||||
|
||||
#if defined(__linux__)
|
||||
|
||||
#include <kore/seccomp.h>
|
||||
@ -17,24 +19,41 @@ KORE_SECCOMP_FILTER("sqlite3",
|
||||
KORE_SYSCALL_ALLOW(pwrite64),
|
||||
KORE_SYSCALL_ALLOW(fdatasync),
|
||||
KORE_SYSCALL_ALLOW_ARG(write, 0, STDOUT_FILENO)
|
||||
);
|
||||
);
|
||||
#endif
|
||||
|
||||
|
||||
int init(int state);
|
||||
int portal_user_load(struct http_request *);
|
||||
int v_password_func(struct http_request *, char *);
|
||||
int create_user(struct http_request *);
|
||||
int v_session_validate(struct http_request *, char *);
|
||||
|
||||
|
||||
hashtable_t *hashtable = NULL;
|
||||
|
||||
int init(int state){
|
||||
|
||||
hashtable = ht_create( 65536 );
|
||||
|
||||
|
||||
if( hashtable == NULL )
|
||||
kore_log(LOG_ERR, "Can't create hastable sessions");
|
||||
return (KORE_RESULT_ERROR);
|
||||
|
||||
return (KORE_RESULT_OK);
|
||||
}
|
||||
|
||||
int create_user(struct http_request *req)
|
||||
{
|
||||
struct kore_buf *b;
|
||||
u_int8_t *d;
|
||||
size_t len;
|
||||
char *salt, *cryptpwd;
|
||||
char *err_msg = 0;
|
||||
char *user,*pwd,name[10];
|
||||
sqlite3_stmt *res;
|
||||
sqlite3 *db;
|
||||
struct kore_buf *b = NULL;
|
||||
u_int8_t *d = NULL;
|
||||
size_t len = 0;
|
||||
char *salt = NULL, *cryptpwd = NULL;
|
||||
char *err_msg = NULL;
|
||||
char *user = NULL, *pwd = NULL, name[10];
|
||||
sqlite3_stmt *res = NULL;
|
||||
sqlite3 *db = NULL;
|
||||
|
||||
|
||||
if (req->method == HTTP_METHOD_GET)
|
||||
http_populate_get(req);
|
||||
@ -46,7 +65,7 @@ int create_user(struct http_request *req)
|
||||
|
||||
|
||||
if (req->method == HTTP_METHOD_GET) {
|
||||
kore_buf_replace_string(b, "$msg$", "Toto", 4);
|
||||
kore_buf_replace_string(b, "$msg$", "GO", 4);
|
||||
|
||||
http_response_header(req, "content-type", "text/html");
|
||||
d = kore_buf_release(b, &len);
|
||||
@ -58,25 +77,23 @@ int create_user(struct http_request *req)
|
||||
|
||||
if (req->method == HTTP_METHOD_POST)
|
||||
{
|
||||
|
||||
|
||||
int rc = sqlite3_open("test.db", &db);
|
||||
|
||||
if (rc != SQLITE_OK) {
|
||||
|
||||
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
|
||||
kore_log(LOG_ERR, "Cannot open database: %s\n", sqlite3_errmsg(db));
|
||||
sqlite3_close(db);
|
||||
|
||||
return 1;
|
||||
return (KORE_RESULT_ERROR);
|
||||
}
|
||||
//salt = crypt_gensalt("$2b$", 15, NULL, 0); //-> linux
|
||||
salt = bcrypt_gensalt(15); //-> openbsd
|
||||
|
||||
if (salt == NULL) {
|
||||
perror("crypt_gensalt");
|
||||
kore_log(LOG_ERR, "crypt_gensalt");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
kore_log(LOG_NOTICE, "bcrypt_salt réussi");
|
||||
|
||||
(void)snprintf(name, sizeof(name), "login");
|
||||
http_argument_get_string(req, name, &user);
|
||||
@ -86,29 +103,32 @@ int create_user(struct http_request *req)
|
||||
|
||||
cryptpwd = crypt(pwd, salt);
|
||||
if (cryptpwd == NULL) {
|
||||
perror("crypt_gensalt");
|
||||
kore_log(LOG_PERROR, "Can't encrypt password");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
printf("Encrypted: %s\n", cryptpwd);
|
||||
char *sql ="INSERT INTO users VALUES(?,?);";
|
||||
|
||||
|
||||
kore_log(LOG_NOTICE, "Encrypted called %s", cryptpwd );
|
||||
char *sql = "INSERT INTO users VALUES(?,?);";
|
||||
|
||||
rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
|
||||
|
||||
if (rc == SQLITE_OK) {
|
||||
if (rc == SQLITE_OK)
|
||||
{
|
||||
sqlite3_bind_text(res, 1, user, -1, NULL);
|
||||
sqlite3_bind_text(res, 2, cryptpwd, -1, NULL);
|
||||
|
||||
}else {
|
||||
fprintf(stderr, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
|
||||
}
|
||||
else {
|
||||
kore_log(LOG_ERR, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
|
||||
}
|
||||
|
||||
sqlite3_step(res);
|
||||
if (rc != SQLITE_OK ) {
|
||||
fprintf(stderr, "SQL error: %s\n", err_msg);
|
||||
kore_log(LOG_ERR, "SQL error: %s\n", err_msg);
|
||||
sqlite3_finalize(res);
|
||||
sqlite3_free(err_msg);
|
||||
sqlite3_close(db);
|
||||
return 1;
|
||||
return (KORE_RESULT_ERROR);
|
||||
}
|
||||
|
||||
sqlite3_close(db);
|
||||
@ -119,20 +139,24 @@ int create_user(struct http_request *req)
|
||||
|
||||
return (KORE_RESULT_OK);
|
||||
}
|
||||
|
||||
return (KORE_RESULT_ERROR);
|
||||
|
||||
}
|
||||
|
||||
int portal_user_load(struct http_request *req)
|
||||
{
|
||||
struct kore_buf *b;
|
||||
u_int8_t *d;
|
||||
size_t len;
|
||||
char *login,*pwd, name[10];
|
||||
struct kore_buf *b = NULL;
|
||||
u_int8_t *d = NULL;
|
||||
size_t len = 0;
|
||||
char *login = NULL, *pwd = NULL, name[10];
|
||||
char *err_msg = 0;
|
||||
char salt[29], *cryptpwd;
|
||||
int rc;
|
||||
sqlite3_stmt *res;
|
||||
sqlite3 *db;
|
||||
char salt[29], *cryptpwd = NULL;
|
||||
int rc = 0;
|
||||
sqlite3_stmt *res= NULL;
|
||||
sqlite3 *db = NULL;
|
||||
char *cookie = NULL;
|
||||
char *session_id = NULL;
|
||||
|
||||
if (req->method == HTTP_METHOD_GET)
|
||||
http_populate_get(req);
|
||||
@ -161,10 +185,10 @@ int portal_user_load(struct http_request *req)
|
||||
|
||||
if (rc != SQLITE_OK)
|
||||
{
|
||||
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
|
||||
kore_log(LOG_ERR, "Cannot open database: %s\n", sqlite3_errmsg(db));
|
||||
sqlite3_close(db);
|
||||
|
||||
return 1;
|
||||
return (KORE_RESULT_ERROR);
|
||||
}
|
||||
|
||||
char *sql = "SELECT email_address, password FROM users WHERE email_address = ?";
|
||||
@ -179,16 +203,16 @@ int portal_user_load(struct http_request *req)
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
|
||||
kore_log(LOG_ERR, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
|
||||
}
|
||||
|
||||
sqlite3_step(res);
|
||||
if (rc != SQLITE_OK ) {
|
||||
fprintf(stderr, "SQL error: %s\n", err_msg);
|
||||
kore_log(LOG_ERR, "SQL error: %s\n", err_msg);
|
||||
sqlite3_finalize(res);
|
||||
sqlite3_free(err_msg);
|
||||
sqlite3_close(db);
|
||||
return 1;
|
||||
return (KORE_RESULT_ERROR);
|
||||
}
|
||||
|
||||
(void)snprintf(name, sizeof(name), "password");
|
||||
@ -200,7 +224,7 @@ int portal_user_load(struct http_request *req)
|
||||
|
||||
cryptpwd = crypt(pwd, salt);
|
||||
if (cryptpwd == NULL) {
|
||||
perror("crypt_gensalt");
|
||||
kore_log(LOG_PERROR, "Can't encrypt password");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@ -208,17 +232,29 @@ int portal_user_load(struct http_request *req)
|
||||
if ( strcmp( (const char *)sqlite3_column_text(res, 1), cryptpwd) )
|
||||
{
|
||||
printf("mauvais mot de passe\n");
|
||||
kore_buf_replace_string(b, "$msg$", "Erreur connection", 17);
|
||||
}else
|
||||
{
|
||||
kore_buf_replace_string(b, "$msg$", "Connection ok", 13);
|
||||
|
||||
kore_buf_replace_string(b, "$msg$", "Erreur de login ou mot de passe ", 17);
|
||||
}
|
||||
else
|
||||
{
|
||||
kore_log(LOG_NOTICE, "on va faire le set cookie");
|
||||
session_id = gen_session_id(30);
|
||||
ht_set(hashtable, session_id, login);
|
||||
|
||||
kore_log(LOG_NOTICE, "on a ajouté le sessions dans la hastable");
|
||||
cookie = set_cookie_header("session_id", '=', session_id);
|
||||
kore_log(LOG_NOTICE, "on a set le cookie dans les headers");
|
||||
kore_buf_replace_string(b, "$msg$", "BRAVO !!!", 13);
|
||||
free(session_id);
|
||||
kore_log(LOG_NOTICE, "set cookie OK");
|
||||
}
|
||||
|
||||
sqlite3_finalize(res);
|
||||
sqlite3_close(db);
|
||||
|
||||
|
||||
http_response_header(req, "content-type", "text/html");
|
||||
if (cookie != NULL)
|
||||
http_response_header(req, "set-cookie", cookie);
|
||||
d = kore_buf_release(b, &len);
|
||||
http_response(req, 200, d, len);
|
||||
kore_free(d);
|
||||
@ -239,3 +275,14 @@ int v_password_func(struct http_request *req, char *data)
|
||||
return (KORE_RESULT_ERROR);
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
v_session_validate(struct http_request *req, char *data)
|
||||
{
|
||||
kore_log(LOG_NOTICE, "v_session_validate: %s", data);
|
||||
|
||||
if ( ht_get(hashtable, data) != NULL )
|
||||
return (KORE_RESULT_OK);
|
||||
|
||||
return (KORE_RESULT_ERROR);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user