Compare commits

..

No commits in common. "principale" and "4d8cb8d5c11530c5ffb6211dd1d70f546db90927" have entirely different histories.

20 changed files with 1398 additions and 1642 deletions

4
.gitignore vendored
View File

@ -1,8 +1,6 @@
*.o
.flavor
.objs
*.so
sqlite3.so
assets.h
cert
*.db
*.log

View File

@ -1,23 +0,0 @@
# Une application web pour faire un portail utilisateurs
portal_user est une application web basé https://kore.io pour servir de portail aux utilisateurs pour un serveur mail(opensmtpd) + XMPP(prosody).
## Comme on a fait du C ben on a choisi de le faire en C.
Oui, on fait cette application avant tout pour apprendre donc pas
de prise de tête on fait avec ce qu'on connaît.
Pour le CSS c'est basé sur picoCSS comme ça tout reste léger; il y a un thème sombre et un clair c'est très bien.
## installer kore :
### Sous linux :
Debian: apt install kore
Archlinux: pacman -S kore
OpenBSD: pkg_add kore
Il vous faudra installé les dépendances pour les librairie sqlite3 aussi.
## Lancer le programme :
kodev run
et rendez-vous sur http://127.0.0.1:8888/

View File

@ -1,62 +0,0 @@
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/css/style.css">
<title>Portal User</title>
</head>
<body>
<nav class="container-fluid">
<ul>
<li>
<details role="list" >
<summary aria-haspopup="listbox" role="link" class="secondary">Theme</summary>
<ul role="listbox">
<li><a href="#" data-theme-switcher="auto">Auto</a></li>
<li><a href="#" data-theme-switcher="light">Light</a></li>
<li><a href="#" data-theme-switcher="dark">Dark</a></li>
</ul>
</details>
</li>
<li>
<details role="list" >
<summary aria-haspopup="listbox" role="link" class="secondary"> Mon compte </summary>
<ul role="listbox">
<li><a href="#"> Mes services </a> </li>
<li><a href="#"> Documentation </a></li>
<li><a href="#"> Changer mon mot de passe </a></li>
<li><a href="/logout"> Se déconnecter </a></li>
</ul>
</details>
</li>
</ul>
</nav>
<!-- Header -->
<header class="container">
<hgroup>
<h1> Bienvenue sur kitoy.me </h1>
<h2> Gérez votre compte sur kitoy.me </h2>
<h3> Connecté en tant que : $login$ </h3>
</hgroup>
<!-- Nav -->
</header><!-- ./ Header -->
<main class="container">
<h2> Gérer votre compte </h2>
<p>message debug: $msg$</p>
</main>
<!-- Minimal theme switcher -->
<script src="/js/theme-switcher.js"></script>
</body>
</html>

View File

@ -34,7 +34,7 @@
<!-- Markup example 2: input is after label -->
<label for="Login"> Login </label>
<input type="login" name="login" id="login" placeholder="Email address" value="" required>
<input type="Login" id="Login" name="login" placeholder="Login" value="$login$" required>
<label for="Password"> Mot de passe </label>
<input type="Password" id="Password" name="password" placeholder="Password" value="" required>

File diff suppressed because it is too large Load Diff

106
assets/theme-switcher.js~ Normal file
View File

@ -0,0 +1,106 @@
/*
* Theme switcher
*
* Pico.css - https://picocss.com
* Copyright 2019-2021 - Licensed under MIT
*/
export const themeSwitcher = {
// Config
_scheme: 'auto',
change: {
light: '<i>Turn on dark mode</i>',
dark: '<i>Turn off dark mode</i>',
},
buttonsTarget: '.theme-switcher',
// Init
init() {
this.scheme = this._scheme;
this.initSwitchers();
},
// Prefered color scheme
get preferedColorScheme() {
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
return 'dark';
} else {
return 'light';
}
},
// Init switchers
initSwitchers() {
const buttons = document.querySelectorAll(this.buttonsTarget);
buttons.forEach(
function (button) {
button.addEventListener(
'click',
function (event) {
if (this.scheme == 'dark') {
this.scheme = 'light';
} else {
this.scheme = 'dark';
}
}.bind(this),
false
);
}.bind(this)
);
},
// Add new button
addButton(config) {
// Insert Switcher
let button = document.createElement(config.tag);
button.className = config.class;
document.querySelector(config.target).appendChild(button);
},
// Set scheme
set scheme(scheme) {
if (scheme == 'auto') {
if (this.preferedColorScheme == 'dark') {
this._scheme = 'dark';
} else {
this._scheme = 'light';
}
}
// Set to Dark
else if (scheme == 'dark' || scheme == 'light') {
this._scheme = scheme;
}
// Set to Apply theme
this.applyScheme();
},
// Get scheme
get scheme() {
return this._scheme;
},
// Apply scheme
applyScheme() {
// Root attribute
document.querySelector('html').setAttribute('data-theme', this.scheme);
// Buttons text
const buttons = document.querySelectorAll(this.buttonsTarget);
let text;
buttons.forEach(
function (button) {
if (this.scheme == 'dark') {
text = this.change.dark;
} else {
text = this.change.light;
}
button.innerHTML = text;
button.setAttribute('aria-label', text.replace(/<[^>]*>?/gm, ''));
}.bind(this)
);
},
};
export default themeSwitcher;

View File

@ -4,39 +4,34 @@
# Set to yes if you wish to produce a single binary instead
# of a dynamic library. If you set this to yes you must also
# set kore_source together with kore_flavor.
#single_binary=yes
#single_binary=no
#kore_source=/home/joris/src/kore
#kore_flavor=
# The flags below are shared between flavors
cflags=-Wall -Wmissing-declarations -Wshadow -I/usr/local/include
cflags=-Wall -Wmissing-declarations -Wshadow
cflags=-Wstrict-prototypes -Wmissing-prototypes
cflags=-Wpointer-arith -Wcast-qual -Wsign-compare
ldflags=-lsqlite3
#a rejouter pour linux
#ldflag=-lcrypt
ldflags=-L/usr/local/lib
cxxflags=-Wall -Wmissing-declarations -Wshadow
cxxflags=-Wall -Wmissing-declarations -Wshadow
cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare
# Mime types for assets served via the builtin asset_serve_*
mime_add=jpg:image/jpeg
mime_add=css:text/css; charset=utf-8
mime_add=txt:text/plain; charset=utf-8
mime_add=png:image/png
mime_add=html:text/html; charset=utf-8
#mime_add=txt:text/plain; charset=utf-8
#mime_add=png:image/png
#mime_add=html:text/html; charset=utf-8
dev {
# These flags are added to the shared ones when
# you build the "dev" flavor.
cflags=-g
cxxflags=-g
cflags=-g
cxxflags=-g
}
prod {
#prod {
# You can specify additional flags here which are only
# included if you build with the "prod" flavor.
cflags=-g
cxxflags=-g
}
#}

35
conf/build.conf.bck Normal file
View File

@ -0,0 +1,35 @@
# sqlite3 build config
# You can switch flavors using: kodev flavor [newflavor]
# Set to yes if you wish to produce a single binary instead
# of a dynamic library. If you set this to yes you must also
# set kore_source together with kore_flavor.
#single_binary=no
#kore_source=/home/joris/src/kore
#kore_flavor=
# The flags below are shared between flavors
cflags=-Wall -Wmissing-declarations -Wshadow
cflags=-Wstrict-prototypes -Wmissing-prototypes
cflags=-Wpointer-arith -Wcast-qual -Wsign-compare
ldflags=-lsqlite3
ldflags=-L/usr/lib
cxxflags=-Wall -Wmissing-declarations -Wshadow
cxxflags=-Wpointer-arith -Wcast-qual -Wsign-compare
# Mime types for assets served via the builtin asset_serve_*
#mime_add=txt:text/plain; charset=utf-8
#mime_add=png:image/png
#mime_add=html:text/html; charset=utf-8
dev {
# These flags are added to the shared ones when
# you build the "dev" flavor.
cflags=-g
cxxflags=-g
}
#prod {
# You can specify additional flags here which are only
# included if you build with the "prod" flavor.
#}

View File

@ -1,72 +0,0 @@
# portal_user configuration
server notls {
bind 127.0.0.1 8888
tls no
}
load ./portal_user.so init
http_body_max 1024000000
http_body_disk_offload 1024000
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
accesslog kore_access.log
route / {
handler portal_user_load
methods post get
validate post login v_login
validate post password v_password
}
route /css/style.css {
handler asset_serve_style_css
}
route /js/theme-switcher.js {
handler asset_serve_theme_switcher_js
}
route /signup {
handler create_user
methods get post
validate post login v_login
validate post password v_password
}
route /portal/bienvenue {
handler private_portal
authenticate auth_example
}
route /logout {
handler v_session_remove
authenticate auth_example
}
}

40
conf/sqlite3.conf Normal file
View File

@ -0,0 +1,40 @@
# portal_user configuration
server notls {
bind 192.168.1.6 8888
tls no
}
load ./sqlite3.so
http_body_max 1024000000
http_body_disk_offload 1024000
workers 1
validator v_login regex ^[-_.a-zA-Z0-9]*$
validator v_password function v_password_func
pledge wpath cpath flock
domain * {
attach notls
accesslog kore_access.log
route / portal_user_load
route /css/style.css asset_serve_style_css
route /js/theme-switcher.js asset_serve_theme_switcher_js
route /signup create_user
params post / {
validate login v_login
validate password v_password
}
params post /signup {
validate login v_login
validate password v_password
}
}

BIN
kore.core Normal file

Binary file not shown.

422
kore_access.log Normal file
View File

@ -0,0 +1,422 @@
127.0.0.1 - - [10/Feb/2022:10:03:48 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:03:48 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:03:48 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:06:01 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:06:01 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:06:01 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:08:39 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:08:39 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:08:39 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:08 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:08 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:08 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:13 +0700] "POST / HTTP/1.1" 200 1713 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:13 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:10:10:13 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:42:22 +0700] "POST / HTTP/1.1" 200 1713 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:42:22 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:42:22 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:48 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:48 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:48 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:53 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:53 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:45:53 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:46:09 +0700] "GET / HTTP/1.1" 200 1705 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:50:56 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:51:08 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:52:00 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:52:36 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:52:39 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:52:46 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:53:29 +0700] "POST / HTTP/1.1" 200 1713 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:29 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:29 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:46 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:46 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:46 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:53 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:53 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:53 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:56 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:56 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:53:56 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:01 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:01 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:01 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:06 +0700] "POST / HTTP/1.1" 200 1713 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:06 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:06 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:14:54:11 +0700] "HEAD / HTTP/1.1" 200 1707 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:14:54:18 +0700] "GET / HTTP/1.1" 200 1705 "-" "curl/7.81.0"
127.0.0.1 - - [10/Feb/2022:15:02:09 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:02:09 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:02:09 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:02:14 +0700] "POST / HTTP/1.1" 0 20 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:52:09 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:52:09 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:52:09 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:53:42 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:53:42 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:53:42 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:53:46 +0700] "POST / HTTP/1.1" 0 20 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:54:46 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:54:46 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:54:46 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:15:54:50 +0700] "POST / HTTP/1.1" 0 20 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:37 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:37 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:37 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:41 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:41 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:19:41 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:24:52 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:24:52 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:24:52 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:35:17 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:35:17 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:35:17 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:06 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:06 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:06 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:15 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:15 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:15 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:20 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:20 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:16:39:20 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:51:52 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:51:52 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:51:52 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:53:27 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:53:27 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:53:27 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:23 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:23 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:23 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:29 +0700] "POST / HTTP/1.1" 200 1730 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:29 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:17:57:29 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:42 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:42 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:42 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:48 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:48 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:00:48 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:33 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:33 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:33 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:43 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:43 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:43 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:50 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:50 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:50 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:55 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:55 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:01:55 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:02:15 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:02:15 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:02:15 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:03 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:03 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:03 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:12 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:12 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:12 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:16 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:16 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:16 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:28 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:28 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:05:28 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:21 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:21 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:21 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:29 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:29 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:06:29 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:09:53 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:09:53 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:09:53 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:00 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:00 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:18 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:18 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:18 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:48 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:48 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:48 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:57 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:57 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:10:57 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:09 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:09 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:09 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:13 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:13 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:13 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:16 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:16 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:16 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:55 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:55 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:55 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:57 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:57 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:11:57 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:00 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:00 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:01 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:01 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:01 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:14 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:14 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:14 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:16 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:16 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:16 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:19 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:19 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:19 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:26 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:26 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:12:26 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:49 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:49 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:49 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:53 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:53 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [10/Feb/2022:18:13:53 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:96.0) Gecko/20100101 Firefox/96.0"
127.0.0.1 - - [12/Feb/2022:14:04:48 +0700] "GET / HTTP/1.1" 200 1705 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:04:50 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:04:50 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:04:50 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:05:00 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:05:00 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:05:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:14:51 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:14:51 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:14:51 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:29:02 +0700] "GET /signup HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:29:02 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:29:02 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:30:02 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:30:02 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:30:02 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:57:20 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:57:20 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:57:20 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:14:57:31 +0700] "POST /signup HTTP/1.1" 0 24 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:02:10 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:02:10 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:02:10 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:02:15 +0700] "POST /signup HTTP/1.1" 0 24 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:10 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:10 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:10 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:18 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:18 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:18 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:31 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:31 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:31 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:36 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:36 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:17:36 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:11 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:11 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:11 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:18 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:18 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:18 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:28 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:28 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:28 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:57 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:57 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:21:57 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:01 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:01 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:01 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:12 +0700] "POST / HTTP/1.1" 200 1728 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:12 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:22:12 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:25:55 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:25:55 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:25:55 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:26:00 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:26:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [12/Feb/2022:15:26:00 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:11:28 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:11:28 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:11:28 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:41:34 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:41:34 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:41:34 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:42:03 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:42:03 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:42:03 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:50:06 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:50:06 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:08:50:06 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:30 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:30 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:30 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:52 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:52 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:28:52 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:32:50 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:32:50 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:32:50 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:33:11 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:33:11 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:33:11 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:35:00 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:35:00 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:35:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:40:51 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:40:51 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:40:51 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:41:51 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:41:51 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:41:51 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:44:28 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:44:28 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:10:44:28 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:53:00 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:53:00 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:53:00 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:58:07 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:58:07 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:58:07 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:13:58:13 +0700] "POST /signup HTTP/1.1" 0 20 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:07 +0700] "GET /signup HTTP/1.1" 200 1709 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:07 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:07 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:14 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:14 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:14 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:39 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:39 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:00:39 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:02:23 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:02:23 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:02:23 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:04:21 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:04:21 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:04:21 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:24 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:24 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:24 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:35 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:35 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:07:35 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:07 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:07 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:07 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:52 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:52 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:09:52 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:11:26 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:11:26 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:11:26 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:15:32 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:15:32 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:15:32 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:25 +0700] "GET / HTTP/1.1" 200 1705 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:25 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:25 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:30 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:30 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:45:30 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:48:51 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:48:51 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:48:51 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:49:23 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:49:23 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:49:23 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:05 +0700] "POST /signup HTTP/1.1" 200 1734 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:05 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:05 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:13 +0700] "POST / HTTP/1.1" 200 1727 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:13 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:14:55:13 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:26 +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 - - [14/Feb/2022:15:13:26 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:26 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:34 +0700] "POST /signup HTTP/1.1" 200 1661 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:34 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:34 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/signup" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:41 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:41 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:41 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:47 +0700] "POST / HTTP/1.1" 200 1645 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:47 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:13:47 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:22 +0700] "POST / HTTP/1.1" 200 1656 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:22 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:22 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:31 +0700] "POST / HTTP/1.1" 200 1660 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:31 +0700] "GET /css/style.css HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
127.0.0.1 - - [14/Feb/2022:15:15:31 +0700] "GET /js/theme-switcher.js HTTP/1.1" 304 0 "http://127.0.0.1:8888/" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:05:41 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:05:41 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "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 - - [14/Feb/2022:17:05:41 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "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 - - [14/Feb/2022:17:08:56 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:08:56 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "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 - - [14/Feb/2022:17:08:56 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "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 - - [14/Feb/2022:17:33:58 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:33:58 +0700] "GET /css/style.css HTTP/1.1" 200 67719 "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 - - [14/Feb/2022:17:33:58 +0700] "GET /js/theme-switcher.js HTTP/1.1" 200 807 "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 - - [14/Feb/2022:17:53:37 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:53:37 +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 - - [14/Feb/2022:17:53:37 +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 - - [14/Feb/2022:17:55:14 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:55: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 - - [14/Feb/2022:17:55: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"
192.168.1.100 - - [14/Feb/2022:17:57:41 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:57:41 +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 - - [14/Feb/2022:17:57:41 +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 - - [14/Feb/2022:17:58:40 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:58:40 +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 - - [14/Feb/2022:17:58:40 +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 - - [14/Feb/2022:17:59:33 +0700] "GET / HTTP/1.1" 200 1640 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:97.0) Gecko/20100101 Firefox/97.0"
192.168.1.100 - - [14/Feb/2022:17:59:33 +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 - - [14/Feb/2022:17:59:33 +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 - - [14/Feb/2022:17:59:41 +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 - - [14/Feb/2022:17:59:41 +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 - - [14/Feb/2022:17:59:41 +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 - - [14/Feb/2022:19:55:02 +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:19:55:02 +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:19:55:02 +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 - - [14/Feb/2022:19:56:13 +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:19:56:13 +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 - - [14/Feb/2022:19:56:13 +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:19:57:22 +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:19:57:22 +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 - - [14/Feb/2022:19:57:22 +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:00:28 +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:00:28 +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 - - [14/Feb/2022:20:00:28 +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 /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"

BIN
ktrace.out Normal file

Binary file not shown.

View File

@ -1,381 +0,0 @@
#include <kore/kore.h>
#include <kore/http.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sqlite3.h>
#include <unistd.h>
#include "assets.h"
#include "sessions.h"
#include "sqlite_utils.h"
#include <pwd.h>
#define SESSION_LEN 30
#define DB_NAME "portal_user.db"
#if defined(__linux__)
#include <kore/seccomp.h>
#include <crypt.h>
KORE_SECCOMP_FILTER("sqlite3",
KORE_SYSCALL_ALLOW(newfstatat),
KORE_SYSCALL_ALLOW(pread64),
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 *);
int v_session_remove(struct http_request *);
int private_portal(struct http_request *);
hashtable_t *hashtable = NULL;
int
init(int state)
{
hashtable = ht_create( 65536 );
int err=0;
if( hashtable == NULL )
{
kore_log(LOG_ERR, "Can't create hastable sessions");
err = 1;
}
if ( access( DB_NAME, F_OK ) == 0 && err == 0 )
{ kore_log(LOG_NOTICE, "Execute check_db()");
err = check_db(DB_NAME);}
else
{
kore_log(LOG_NOTICE, "Create Sqlite Base");
err = init_db(DB_NAME);
}
if (err)
return (KORE_RESULT_ERROR);
else
return (KORE_RESULT_OK);
}
int
create_user(struct http_request *req)
{
struct kore_buf *b = NULL;
u_int8_t *d = NULL;
size_t len = 0;
char *salt = NULL, *cryptpwd = NULL;
char *zErrMsg = NULL;
char *user = NULL, *pwd = NULL, name[50];
sqlite3 *db = NULL;
char sql[512];
if (req->method == HTTP_METHOD_GET)
http_populate_get(req);
else if (req->method == HTTP_METHOD_POST)
http_populate_post(req);
b = kore_buf_alloc(asset_len_signup_html);
kore_buf_append(b, asset_signup_html, asset_len_signup_html);
if (req->method == HTTP_METHOD_GET) {
kore_buf_replace_string(b, "$msg$", "GO", 4);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
return (KORE_RESULT_OK);
}
if (req->method == HTTP_METHOD_POST)
{
int rc = sqlite3_open(DB_NAME, &db);
if (rc != SQLITE_OK) {
kore_log(LOG_ERR, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return (KORE_RESULT_ERROR);
}
#if defined(__linux__)
salt = crypt_gensalt("$2b$", 15, NULL, 0); //-> linux
#elif defined(__OpenBSD__)
salt = bcrypt_gensalt(15);
#endif
if (salt == NULL) {
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);
(void)snprintf(name, sizeof(name), "password");
http_argument_get_string(req, name, &pwd);
cryptpwd = crypt(pwd, salt);
if (cryptpwd == NULL) {
kore_log(LOG_PERROR, "Can't encrypt password");
exit(EXIT_FAILURE);
}
kore_log(LOG_NOTICE, "Encrypted called %s", cryptpwd );
(void)sprintf(sql,
"INSERT INTO Users (Email, Password, Active) VALUES(\"%s\",\"%s\",\"yes\");",
user, cryptpwd);
printf ( "%s",sql);
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if( rc != SQLITE_OK ){
kore_log(LOG_ERR, "SQL error: %s", zErrMsg);
sqlite3_free(zErrMsg);
} else {
kore_log(LOG_NOTICE, "Database successfully created !");
}
sqlite3_close(db);
http_response_header(req, "location", "/");
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, HTTP_STATUS_FOUND, NULL, 0);
kore_free(d);
return (KORE_RESULT_OK);
}
return (KORE_RESULT_ERROR);
}
int
portal_user_load(struct http_request *req)
{
struct kore_buf *b = NULL;
u_int8_t *d = NULL;
size_t len = 0;
char *login = NULL, *pwd = NULL, name[70];
char *err_msg = 0;
char salt[29], *cryptpwd = NULL;
int rc = 0;
sqlite3_stmt *res= NULL;
sqlite3 *db = NULL;
char *cookie_session = NULL;
char *cookie_samesite = NULL;
char *cookie = NULL;
char *session_id = NULL;
if (req->method == HTTP_METHOD_GET)
http_populate_get(req);
else if (req->method == HTTP_METHOD_POST)
http_populate_post(req);
b = kore_buf_alloc(asset_len_index_html);
kore_buf_append(b, asset_index_html, asset_len_index_html);
if (req->method == HTTP_METHOD_GET) {
kore_buf_replace_string(b, "$login$", NULL, 0);
kore_buf_replace_string(b, "$password$", NULL, 0);
kore_buf_replace_string(b, "$msg$", "Toto", 4);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
return (KORE_RESULT_OK);
}
if (req->method == HTTP_METHOD_POST)
{
rc = sqlite3_open(DB_NAME, &db);
if (rc != SQLITE_OK)
{
kore_log(LOG_ERR, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return (KORE_RESULT_ERROR);
}
char *sql = "SELECT Email, Password FROM Users WHERE Email = ?";
rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
if (rc == SQLITE_OK)
{
(void)snprintf(name, sizeof(name), "login");
http_argument_get_string(req, name, &login);
sqlite3_bind_text(res, 1, login , -1, NULL);
}
else
{
kore_log(LOG_ERR, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
}
sqlite3_step(res);
if (rc != SQLITE_OK ) {
kore_log(LOG_ERR, "SQL error: %s\n", err_msg);
sqlite3_finalize(res);
sqlite3_free(err_msg);
sqlite3_close(db);
return (KORE_RESULT_ERROR);
}
(void)snprintf(name, sizeof(name), "password");
http_argument_get_string(req, name, &pwd);
strncpy (salt,(const char *)sqlite3_column_text(res, 1),29);
cryptpwd = crypt(pwd, salt);
if (cryptpwd == NULL) {
kore_log(LOG_PERROR, "Can't encrypt password");
exit(EXIT_FAILURE);
}
if ( strcmp( (const char *)sqlite3_column_text(res, 1), cryptpwd) )
{
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(SESSION_LEN);
ht_set(hashtable, session_id, login);
kore_log(LOG_NOTICE, "on a ajouté le sessions dans la hastable");
cookie_session = set_cookie_header("session_id", '=', session_id);
cookie_samesite = set_cookie_header("SameSite", '=', "Strict");
cookie = set_cookie_header(cookie_session, ';', cookie_samesite);
kore_log(LOG_NOTICE, "on a set le cookie dans les headers");
kore_buf_replace_string(b, "$msg$", "BRAVO !!!", 13);
free(session_id);
free(cookie_session);
free(cookie_samesite);
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);
free(cookie);
}
d = kore_buf_release(b, &len);
http_response_header(req, "location", "/portal/bienvenue");
http_response(req, HTTP_STATUS_FOUND, NULL, 0);
kore_free(d);
return (KORE_RESULT_OK);
}
return (KORE_RESULT_ERROR);
}
int
v_password_func(struct http_request *req, char *data)
{
kore_log(LOG_NOTICE, "v_password_func called %s", data);
if ( strlen(data) < 128 )
return (KORE_RESULT_OK);
return (KORE_RESULT_ERROR);
}
int
v_session_remove (struct http_request *req)
{
char *buffer;
http_populate_cookies(req);
if (http_request_cookie(req, "session_id", &buffer))
kore_log(LOG_DEBUG, "Got session_id: %s", buffer);
if (ht_get(hashtable, buffer) != NULL)
ht_delete(hashtable, buffer);
http_response_header(req, "location", "/");
http_response_header(req, "content-type", "text/html");
http_response_header(req, "set-cookie", "session_id=""");
http_response(req, HTTP_STATUS_FOUND, NULL, 0);
return (KORE_RESULT_OK);
}
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);
else
{
kore_log(LOG_NOTICE, "Session Inexistante");
}
return (KORE_RESULT_ERROR);
}
int
private_portal(struct http_request *req)
{
struct kore_buf *b = NULL;
u_int8_t *d = NULL;
size_t len = 0;
char *buffer =NULL ;
session_t *account = NULL;
if (req->method == HTTP_METHOD_GET)
http_populate_get(req);
http_populate_cookies(req);
if (http_request_cookie(req, "session_id", &buffer))
kore_log(LOG_DEBUG, "Got session_id: %s", buffer);
b = kore_buf_alloc(asset_len_signup_html);
kore_buf_append(b, asset_private_html, asset_len_private_html);
account = ht_get(hashtable, buffer);
if (req->method == HTTP_METHOD_GET) {
kore_buf_replace_string(b, "$msg$", "GO", 4);
if (account != NULL)
{
kore_log(LOG_NOTICE, "account trouvé: %s", account->user);
kore_buf_replace_string(b, "$login$", account->user, sizeof(account->user)+1);
}
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
}
return (KORE_RESULT_OK);
}

View File

@ -1,226 +0,0 @@
#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 session_t *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 session_t *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;
}
}
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];
}
session_id[len] = '\0';
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;
result = calloc(lch + ls + lse + 1, sizeof *result);
if (result != NULL) {
memcpy (result, champ, lch);
if (separator)
result[lch] = separator;
memcpy (result + lch + ls, session_id, lse + 1 );
}
return result;
}

241
src/sqlite3.c Normal file
View File

@ -0,0 +1,241 @@
#include <kore/kore.h>
#include <kore/http.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sqlite3.h>
#include "assets.h"
#include <pwd.h>
#if defined(__linux__)
#include <kore/seccomp.h>
#include <crypt.h>
KORE_SECCOMP_FILTER("sqlite3",
KORE_SYSCALL_ALLOW(newfstatat),
KORE_SYSCALL_ALLOW(pread64),
KORE_SYSCALL_ALLOW(pwrite64),
KORE_SYSCALL_ALLOW(fdatasync),
KORE_SYSCALL_ALLOW_ARG(write, 0, STDOUT_FILENO)
);
#endif
int portal_user_load(struct http_request *);
int v_password_func(struct http_request *, char *);
int create_user(struct http_request *);
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;
if (req->method == HTTP_METHOD_GET)
http_populate_get(req);
else if (req->method == HTTP_METHOD_POST)
http_populate_post(req);
b = kore_buf_alloc(asset_len_signup_html);
kore_buf_append(b, asset_signup_html, asset_len_signup_html);
if (req->method == HTTP_METHOD_GET) {
kore_buf_replace_string(b, "$msg$", "Toto", 4);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
return (KORE_RESULT_OK);
}
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));
sqlite3_close(db);
return 1;
}
//salt = crypt_gensalt("$2b$", 15, NULL, 0); //-> linux
salt = bcrypt_gensalt(15); //-> openbsd
if (salt == NULL) {
perror("crypt_gensalt");
exit(EXIT_FAILURE);
}
(void)snprintf(name, sizeof(name), "login");
http_argument_get_string(req, name, &user);
(void)snprintf(name, sizeof(name), "password");
http_argument_get_string(req, name, &pwd);
cryptpwd = crypt(pwd, salt);
if (cryptpwd == NULL) {
perror("crypt_gensalt");
exit(EXIT_FAILURE);
}
printf("Encrypted: %s\n", cryptpwd);
char *sql ="INSERT INTO users VALUES(?,?);";
rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
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));
}
sqlite3_step(res);
if (rc != SQLITE_OK ) {
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_finalize(res);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_close(db);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
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];
char *err_msg = 0;
char salt[29], *cryptpwd;
int rc;
sqlite3_stmt *res;
sqlite3 *db;
if (req->method == HTTP_METHOD_GET)
http_populate_get(req);
else if (req->method == HTTP_METHOD_POST)
http_populate_post(req);
b = kore_buf_alloc(asset_len_index_html);
kore_buf_append(b, asset_index_html, asset_len_index_html);
if (req->method == HTTP_METHOD_GET) {
kore_buf_replace_string(b, "$login$", NULL, 0);
kore_buf_replace_string(b, "$password$", NULL, 0);
kore_buf_replace_string(b, "$msg$", "Toto", 4);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
return (KORE_RESULT_OK);
}
if (req->method == HTTP_METHOD_POST)
{
rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK)
{
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
char *sql = "SELECT email_address, password FROM users WHERE email_address = ?";
rc = sqlite3_prepare_v2(db, sql, -1, &res, 0);
if (rc == SQLITE_OK)
{
(void)snprintf(name, sizeof(name), "login");
http_argument_get_string(req, name, &login);
sqlite3_bind_text(res, 1, login , -1, NULL);
}
else
{
fprintf(stderr, "Failed to execute statement: %s\n", sqlite3_errmsg(db));
}
sqlite3_step(res);
if (rc != SQLITE_OK ) {
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_finalize(res);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
(void)snprintf(name, sizeof(name), "password");
http_argument_get_string(req, name, &pwd);
strncpy (salt,(const char *)sqlite3_column_text(res, 1),29);
cryptpwd = crypt(pwd, salt);
if (cryptpwd == NULL) {
perror("crypt_gensalt");
exit(EXIT_FAILURE);
}
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);
}
sqlite3_finalize(res);
sqlite3_close(db);
http_response_header(req, "content-type", "text/html");
d = kore_buf_release(b, &len);
http_response(req, 200, d, len);
kore_free(d);
return (KORE_RESULT_OK);
}
return (KORE_RESULT_ERROR);
}
int v_password_func(struct http_request *req, char *data)
{
kore_log(LOG_NOTICE, "v_password_func called %s", data);
if ( strlen(data) < 128 )
return (KORE_RESULT_OK);
return (KORE_RESULT_ERROR);
}

View File

@ -1,85 +0,0 @@
#include <kore/kore.h>
#include <sqlite3.h>
#include <stdio.h>
int init_db(const char *name);
int check_db(const char *name);
int init_db(const char *name)
{
sqlite3 *db = NULL;
char *zErrMsg = 0;
char *sql = "CREATE TABLE Users(" \
"Email CHAR(70) PRIMARY KEY NOT NULL, " \
"Password TEXT NOT NULL," \
"Email_rescue TEXT," \
"Alias TEXT," \
"XMPP TEXT, " \
"Active CHAR(3) NOT NULL, " \
"Token CHAR(30), " \
"Website TEXT, " \
"Date_create BIGINT );";
int rc = sqlite3_open(name, &db);
if (rc != SQLITE_OK) {
kore_log(LOG_ERR, "Cannot create database: %s\n",
sqlite3_errmsg(db));
sqlite3_close(db);
return (KORE_RESULT_ERROR);
}
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if( rc != SQLITE_OK ){
kore_log(LOG_ERR, "SQL error: %s", zErrMsg);
sqlite3_free(zErrMsg);
} else {
kore_log(LOG_NOTICE, "Database successfully created !");
}
sqlite3_close(db);
return 0;
}
int check_db(const char *name){
sqlite3 *db = NULL;
char *zErrMsg = 0;
char *sql;
int rc = sqlite3_open(name, &db);
if (rc != SQLITE_OK) {
kore_log(LOG_ERR, "Cannot open database: %s\n",
sqlite3_errmsg(db));
sqlite3_close(db);
return (KORE_RESULT_ERROR);
}
sql = "SELECT EXISTS(SELECT 1 FROM Users WHERE Email=''); " \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Password='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Email_rescue='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Alias='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE XMPP='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Active='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Token='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Website='');" \
"SELECT EXISTS(SELECT 1 FROM Users WHERE Date_create='');";
rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);
if( rc != SQLITE_OK ){
kore_log(LOG_ERR, "SQL error: %s", zErrMsg);
sqlite3_free(zErrMsg);
return 1;
}
else
{
kore_log(LOG_NOTICE, "Check database 0K!");
}
sqlite3_close(db);
return 0;
}

BIN
test.db Normal file

Binary file not shown.

BIN
test.db.1 Normal file

Binary file not shown.

BIN
tt.db Normal file

Binary file not shown.