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
const http = require('http') const sqlite3 = require('sqlite3') const hostname = '127.0.0.1' const port = 3000; var db = null; const open = (filename) => { db = new sqlite3.Database(filename); } const close = () => { db.run("pragma analysis_limit = 100"); db.run("pragma optimize"); db.close(); } const ensure = (filename) => { if (db == null) { open(filename); } } const create = (filename) => { ensure(filename); db.run("pragma trusted_schema = false") db.run("pragma journal_mode = WAL") // can't figure out how to config defensive from node db.serialize(() => { db.run("drop table if exists users") .run(`create table users(username text primary key not null, plainpass text not null)`) }) } const uuid = (cb) => { db.get("select lower(hex(randomblob(16))) as uuid", cb) } const create_user = (username, plainpass) => { db.run(`insert into users values('${username}', '${plainpass}')`) } const valid_plainpass = (username, checkpass, valid, invalid) => { db.get(`select plainpass from users where username='${username}'`, (err, row) => { if (row && row.plainpass === checkpass) valid() else invalid() }) } const web_create_user = (req, res) => { uuid((err, row) => { const username = row.uuid uuid((err, row) => { const plainpass = row.uuid create_user(username, plainpass) res.writeHead(200, { 'Content-Type': 'text/plain' }) res.end(`Created user ${username} with pass ${plainpass}`) }) }) } const web_check_password = (req, res) => { uuid((err, row) => { const username = row.uuid uuid((err, row) => { const plainpass = row.uuid const valid = () => { res.writeHead(200, { 'Content-Type': 'text/plain' }) res.end(`Checked user ${username} with pass ${plainpass}: valid`) } const invalid = () => { res.writeHead(200, { 'Content-Type': 'text/plain' }) res.end(`Checked user ${username} with pass ${plainpass}: invalid`) } valid_plainpass(username, plainpass, valid, invalid) }) }) } const web_default = (req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }) res.end(`Try paths /create or /check`) } const dbfile = "test-js-userdb.sqlite" create(dbfile); const server = http.createServer((req, res) => { switch (req.url) { case "/create": return web_create_user(req, res) case "/check": return web_check_password(req, res) default: return web_default(req, res) } }) server.listen(port, hostname, () => { console.log(`listening at http://${hostname}:${port}`) })
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)