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
 | 
					# portal_user configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
server notls {
 | 
					server notls {
 | 
				
			||||||
	bind 192.168.1.6 8888
 | 
						bind 127.0.0.1 8888
 | 
				
			||||||
	tls no
 | 
						tls no
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load		./sqlite3.so
 | 
					load		./sqlite3.so init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
http_body_max			1024000000
 | 
					http_body_max			1024000000
 | 
				
			||||||
http_body_disk_offload		1024000
 | 
					http_body_disk_offload		1024000
 | 
				
			||||||
@ -15,7 +15,18 @@ workers				1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
validator	v_login	regex		^[-_.a-zA-Z0-9]*$
 | 
					validator	v_login	regex		^[-_.a-zA-Z0-9]*$
 | 
				
			||||||
validator	v_password		function	v_password_func
 | 
					validator	v_password		function	v_password_func
 | 
				
			||||||
 | 
					validator	v_session	function	v_session_validate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pledge	wpath	cpath	flock 
 | 
					pledge	wpath	cpath	flock 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					authentication auth_example {
 | 
				
			||||||
 | 
						authentication_type		cookie
 | 
				
			||||||
 | 
						authentication_value		session_id
 | 
				
			||||||
 | 
						authentication_validator	v_session
 | 
				
			||||||
 | 
						authentication_uri		/
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
domain * {
 | 
					domain * {
 | 
				
			||||||
	attach		notls
 | 
						attach		notls
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -27,6 +38,7 @@ domain * {
 | 
				
			|||||||
	route /css/style.css asset_serve_style_css
 | 
						route /css/style.css asset_serve_style_css
 | 
				
			||||||
	route /js/theme-switcher.js asset_serve_theme_switcher_js
 | 
						route /js/theme-switcher.js asset_serve_theme_switcher_js
 | 
				
			||||||
	route /signup create_user
 | 
						route /signup create_user
 | 
				
			||||||
 | 
					        route /portal/bienvenue asset_serve_private_test_html auth_example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        params post / {
 | 
					        params post / {
 | 
				
			||||||
		validate	login		v_login
 | 
							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 /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 /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 - - [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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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"
 | 
					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"
 | 
				
			||||||
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: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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										133
									
								
								src/sqlite3.c
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								src/sqlite3.c
									
									
									
									
									
								
							@ -5,7 +5,9 @@
 | 
				
			|||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
#include <sqlite3.h>
 | 
					#include <sqlite3.h>
 | 
				
			||||||
#include "assets.h"
 | 
					#include "assets.h"
 | 
				
			||||||
 | 
					#include "sessions.h"
 | 
				
			||||||
#include <pwd.h>
 | 
					#include <pwd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__linux__)
 | 
					#if defined(__linux__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <kore/seccomp.h>
 | 
					#include <kore/seccomp.h>
 | 
				
			||||||
@ -20,21 +22,38 @@ KORE_SECCOMP_FILTER("sqlite3",
 | 
				
			|||||||
                    );
 | 
					                    );
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int init(int state);
 | 
				
			||||||
int portal_user_load(struct http_request *);
 | 
					int portal_user_load(struct http_request *);
 | 
				
			||||||
int v_password_func(struct http_request *, char *);
 | 
					int v_password_func(struct http_request *, char *);
 | 
				
			||||||
int create_user(struct http_request *);
 | 
					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)
 | 
					int create_user(struct http_request *req)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct kore_buf *b;
 | 
					    struct kore_buf *b = NULL;
 | 
				
			||||||
    u_int8_t *d;
 | 
					    u_int8_t *d = NULL;
 | 
				
			||||||
    size_t len;
 | 
					    size_t len = 0;
 | 
				
			||||||
    char *salt, *cryptpwd;
 | 
					    char *salt = NULL, *cryptpwd = NULL;
 | 
				
			||||||
    char *err_msg = 0;
 | 
					    char *err_msg = NULL;
 | 
				
			||||||
    char *user,*pwd,name[10];
 | 
					    char *user = NULL, *pwd = NULL, name[10];
 | 
				
			||||||
    sqlite3_stmt *res;
 | 
					    sqlite3_stmt *res = NULL;
 | 
				
			||||||
    sqlite3 *db;
 | 
					    sqlite3 *db = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (req->method == HTTP_METHOD_GET)
 | 
					    if (req->method == HTTP_METHOD_GET)
 | 
				
			||||||
        http_populate_get(req);
 | 
					        http_populate_get(req);
 | 
				
			||||||
@ -46,7 +65,7 @@ int create_user(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (req->method == HTTP_METHOD_GET) {
 | 
					    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");
 | 
					        http_response_header(req, "content-type", "text/html");
 | 
				
			||||||
        d = kore_buf_release(b, &len);
 | 
					        d = kore_buf_release(b, &len);
 | 
				
			||||||
@ -58,25 +77,23 @@ int create_user(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (req->method == HTTP_METHOD_POST)
 | 
					    if (req->method == HTTP_METHOD_POST)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int rc = sqlite3_open("test.db", &db);
 | 
					        int rc = sqlite3_open("test.db", &db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (rc != SQLITE_OK) {
 | 
					        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);
 | 
					            sqlite3_close(db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        	return 1;
 | 
					            return (KORE_RESULT_ERROR);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        //salt = crypt_gensalt("$2b$", 15, NULL, 0); //-> linux
 | 
					        //salt = crypt_gensalt("$2b$", 15, NULL, 0); //-> linux
 | 
				
			||||||
        salt = bcrypt_gensalt(15); //-> openbsd
 | 
					        salt = bcrypt_gensalt(15); //-> openbsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (salt == NULL) {
 | 
					        if (salt == NULL) {
 | 
				
			||||||
        	perror("crypt_gensalt");
 | 
					            kore_log(LOG_ERR, "crypt_gensalt");
 | 
				
			||||||
            exit(EXIT_FAILURE);
 | 
					            exit(EXIT_FAILURE);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        kore_log(LOG_NOTICE, "bcrypt_salt réussi");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (void)snprintf(name, sizeof(name), "login");
 | 
					        (void)snprintf(name, sizeof(name), "login");
 | 
				
			||||||
        http_argument_get_string(req, name, &user);
 | 
					        http_argument_get_string(req, name, &user);
 | 
				
			||||||
@ -86,29 +103,32 @@ int create_user(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        cryptpwd = crypt(pwd, salt);
 | 
					        cryptpwd = crypt(pwd, salt);
 | 
				
			||||||
        if (cryptpwd == NULL) {
 | 
					        if (cryptpwd == NULL) {
 | 
				
			||||||
        	perror("crypt_gensalt");
 | 
					            kore_log(LOG_PERROR, "Can't encrypt password");
 | 
				
			||||||
            exit(EXIT_FAILURE);
 | 
					            exit(EXIT_FAILURE);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	printf("Encrypted: %s\n", cryptpwd);
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       kore_log(LOG_NOTICE, "Encrypted called %s", cryptpwd );
 | 
				
			||||||
       char *sql = "INSERT INTO users VALUES(?,?);";
 | 
					       char *sql = "INSERT INTO users VALUES(?,?);";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
 | 
					       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, 1, user, -1, NULL);
 | 
				
			||||||
            sqlite3_bind_text(res, 2, cryptpwd, -1, NULL);
 | 
					            sqlite3_bind_text(res, 2, cryptpwd, -1, NULL);
 | 
				
			||||||
 | 
					       }
 | 
				
			||||||
    	}else {
 | 
					       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);
 | 
					       sqlite3_step(res);
 | 
				
			||||||
       if (rc != SQLITE_OK ) {
 | 
					       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_finalize(res);
 | 
				
			||||||
            sqlite3_free(err_msg);
 | 
					            sqlite3_free(err_msg);
 | 
				
			||||||
            sqlite3_close(db);
 | 
					            sqlite3_close(db);
 | 
				
			||||||
        	return 1;
 | 
					            return (KORE_RESULT_ERROR);
 | 
				
			||||||
       }
 | 
					       }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       sqlite3_close(db);
 | 
					       sqlite3_close(db);
 | 
				
			||||||
@ -119,20 +139,24 @@ int create_user(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
       return (KORE_RESULT_OK);
 | 
					       return (KORE_RESULT_OK);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (KORE_RESULT_ERROR);
 | 
					    return (KORE_RESULT_ERROR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int portal_user_load(struct http_request *req)
 | 
					int portal_user_load(struct http_request *req)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct kore_buf *b;
 | 
					    struct kore_buf *b = NULL;
 | 
				
			||||||
    u_int8_t *d;
 | 
					    u_int8_t *d = NULL;
 | 
				
			||||||
    size_t len;
 | 
					    size_t len = 0;
 | 
				
			||||||
    char *login,*pwd, name[10];
 | 
					    char *login = NULL, *pwd = NULL, name[10];
 | 
				
			||||||
    char *err_msg = 0;
 | 
					    char *err_msg = 0;
 | 
				
			||||||
    char salt[29], *cryptpwd;
 | 
					    char salt[29], *cryptpwd = NULL;
 | 
				
			||||||
    int rc;
 | 
					    int rc = 0;
 | 
				
			||||||
    sqlite3_stmt *res;
 | 
					    sqlite3_stmt *res= NULL;
 | 
				
			||||||
    sqlite3 *db;
 | 
					    sqlite3 *db = NULL;
 | 
				
			||||||
 | 
					    char *cookie = NULL;
 | 
				
			||||||
 | 
					    char *session_id = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (req->method == HTTP_METHOD_GET)
 | 
					    if (req->method == HTTP_METHOD_GET)
 | 
				
			||||||
        http_populate_get(req);
 | 
					        http_populate_get(req);
 | 
				
			||||||
@ -161,10 +185,10 @@ int portal_user_load(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (rc != SQLITE_OK)
 | 
					        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);
 | 
					            sqlite3_close(db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        	return 1;
 | 
					            return (KORE_RESULT_ERROR);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        char *sql = "SELECT email_address, password FROM users WHERE email_address = ?";
 | 
					        char *sql = "SELECT email_address, password FROM users WHERE email_address = ?";
 | 
				
			||||||
@ -179,16 +203,16 @@ int portal_user_load(struct http_request *req)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        else
 | 
					        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);
 | 
					        sqlite3_step(res);
 | 
				
			||||||
        if (rc != SQLITE_OK ) {
 | 
					        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_finalize(res);
 | 
				
			||||||
            sqlite3_free(err_msg);
 | 
					            sqlite3_free(err_msg);
 | 
				
			||||||
            sqlite3_close(db);
 | 
					            sqlite3_close(db);
 | 
				
			||||||
        	return 1;
 | 
					            return (KORE_RESULT_ERROR);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (void)snprintf(name, sizeof(name), "password");
 | 
					        (void)snprintf(name, sizeof(name), "password");
 | 
				
			||||||
@ -200,7 +224,7 @@ int portal_user_load(struct http_request *req)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        cryptpwd = crypt(pwd, salt);
 | 
					        cryptpwd = crypt(pwd, salt);
 | 
				
			||||||
        if (cryptpwd == NULL) {
 | 
					        if (cryptpwd == NULL) {
 | 
				
			||||||
        	perror("crypt_gensalt");
 | 
					            kore_log(LOG_PERROR, "Can't encrypt password");
 | 
				
			||||||
            exit(EXIT_FAILURE);
 | 
					            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) )
 | 
					        if ( strcmp( (const char *)sqlite3_column_text(res, 1), cryptpwd) )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            printf("mauvais mot de passe\n");
 | 
					            printf("mauvais mot de passe\n");
 | 
				
			||||||
		kore_buf_replace_string(b, "$msg$", "Erreur connection", 17);
 | 
					            kore_buf_replace_string(b, "$msg$", "Erreur de login ou mot de passe ", 17);
 | 
				
			||||||
	}else 
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		kore_buf_replace_string(b, "$msg$", "Connection ok", 13);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        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_finalize(res);
 | 
				
			||||||
        sqlite3_close(db);
 | 
					        sqlite3_close(db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        http_response_header(req, "content-type", "text/html");
 | 
					        http_response_header(req, "content-type", "text/html");
 | 
				
			||||||
 | 
					        if (cookie != NULL)
 | 
				
			||||||
 | 
					            http_response_header(req, "set-cookie", cookie);
 | 
				
			||||||
        d = kore_buf_release(b, &len);
 | 
					        d = kore_buf_release(b, &len);
 | 
				
			||||||
        http_response(req, 200, d, len);
 | 
					        http_response(req, 200, d, len);
 | 
				
			||||||
        kore_free(d);
 | 
					        kore_free(d);
 | 
				
			||||||
@ -239,3 +275,14 @@ int v_password_func(struct http_request *req, char *data)
 | 
				
			|||||||
    return (KORE_RESULT_ERROR);
 | 
					    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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user