Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
package require sqlite3 package require anticrisis_http namespace import anticrisis::* namespace eval ::userdb {} proc userdb::open {filename} { sqlite3 ::db $filename } proc userdb::close {} { # optional: recommended analysis settings db eval {pragma analysis_limit=100} db eval {pragma optimize} db close } proc userdb::ensure {filename} { if {[info commands db] eq ""} {::userdb::open $filename} } proc userdb::create {filename} { ensure $filename # optional: recommended security settings db config trusted_schema off db config enable_view off db config enable_trigger off db config defensive 1 db config dqs_dml 0 db config dqs_ddl 0 # recommended: enable write-ahead log for performance db eval {pragma journal_mode=WAL} db eval {drop table if exists users} db eval {create table users(username text primary key not null, plainpass text not null)} } proc userdb::now {} {db eval {select datetime('now')}} proc userdb::uuid {} {db eval {select lower(hex(randomblob(15)))}} proc userdb::create_user {username plainpass} { db eval {insert into users values(:username, :plainpass)} } proc userdb::valid_plainpass {username checkpass} { set res [db eval {select plainpass from users where username=:username}] return [expr {$res eq $checkpass}] } # --------------------------------------------------------------------------- set dbfile "test-userdb.sqlite" userdb::create $dbfile namespace eval web { variable target } proc web::create_user {} { set random_name [userdb::uuid] set random_pass [userdb::uuid] userdb::create_user $random_name $random_pass list 200 "Created user $random_name with pass $random_pass" "text/plain" } proc web::check_password {} { set random_name [userdb::uuid] set random_pass [userdb::uuid] set result [userdb::valid_plainpass $random_name $random_pass] list 200 "Checked user $random_name pass $random_pass: $result" "text/plain" } proc web::default {} { list 200 "Try paths /create or /check" "text/plain" } proc web::handle_get {} { variable target switch $target { /create {create_user} /check {check_password} default {default} } } http configure -get web::handle_get -reqtargetvar web::target {*}$argv puts "Listening on http://[http configure -host]:[http configure -port]" http run
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)