From: Nicolas Boisselier Date: Thu, 7 Dec 2017 05:10:23 +0000 (+0000) Subject: share/db/shell_function X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=6304de08aff0ba1d4d815214c28363085994fe1c;p=nb.git share/db/shell_function --- diff --git a/etc/profile.d/functions b/etc/profile.d/functions index 57480898..40d6e51b 100644 --- a/etc/profile.d/functions +++ b/etc/profile.d/functions @@ -729,34 +729,6 @@ find_sort_mtime() { # strftime "%a %b %e %H:%M:%S %Y" } -shell_functions2sql() { - local t="$1"; shift - local f - ( - for f in `shell_functions`; do - type "$f" || continue - done - ) | perl -MData::Dumper -e ' -BEGIN{$t=shift @ARGV and print qq|PRAGMA encoding="UTF-8";\n| -."DROP TABLE IF EXISTS $t;\n" -."CREATE TABLE $t (name VARCHAR(255) PRIMARY KEY,code BLOB);\n" -and $t="INSERT INTO $t "; -$|=1; -} -$_=join("",<>);@_=(map{s/^\s*(.*?)\s*$/$1/m;$_}split(/^(.*?) is a function$/m,$_)); -0&&die Dumper(\\@_); -0&&die Dumper($_[2]); -$q=chr(39); -while (@_) { - $k=shift @_; - next unless $k; - $v=shift @_; - $v =~ s/$q/$q.$q/ge; - print $t.qq|VALUES ($q$k$q,$q$v$q);\n|; -} -' "$t" -} - shell_replace() { local usage="Usage: shell_replace [-i[.BACKUP_EXTENSION]] [-find PAHT]" diff --git a/share/db/0-clean.sql b/share/db/0-clean.sql deleted file mode 100644 index 2c08ca57..00000000 --- a/share/db/0-clean.sql +++ /dev/null @@ -1,19 +0,0 @@ --- NB 05.12.17 DROP TABLE IF EXISTS service; --- NB 25.10.17 CREATE TABLE IF NOT EXISTS service ( --- NB 25.10.17 name VARCHAR(100), --- NB 25.10.17 description VARCHAR(200), --- NB 25.10.17 PRIMARY KEY (port,name) --- NB 25.10.17 ); - --- NB 25.10.17 DROP TABLE IF EXISTS service_port; - --- NB 25.10.17 DROP TABLE IF EXISTS ovh_dedicated; --- NB 25.10.17 CREATE TABLE ovh_dedicated ( --- NB 25.10.17 offer VARCHAR(80), --- NB 25.10.17 proc VARCHAR(150), --- NB 25.10.17 cpu VARCHAR(150), --- NB 25.10.17 ram VARCHAR(150), --- NB 25.10.17 disk VARCHAR(150), --- NB 25.10.17 option VARCHAR(100), --- NB 25.10.17 price float(5,2) --- NB 25.10.17 ); diff --git a/share/db/0-pre.sql b/share/db/0-pre.sql new file mode 100644 index 00000000..dacbedf0 --- /dev/null +++ b/share/db/0-pre.sql @@ -0,0 +1,21 @@ +-- NB 05.12.17 DROP TABLE IF EXISTS service; +-- NB 25.10.17 CREATE TABLE IF NOT EXISTS service ( +-- NB 25.10.17 name VARCHAR(100), +-- NB 25.10.17 description VARCHAR(200), +-- NB 25.10.17 PRIMARY KEY (port,name) +-- NB 25.10.17 ); + +-- NB 25.10.17 DROP TABLE IF EXISTS service_port; + +-- NB 25.10.17 DROP TABLE IF EXISTS ovh_dedicated; +-- NB 25.10.17 CREATE TABLE ovh_dedicated ( +-- NB 25.10.17 offer VARCHAR(80), +-- NB 25.10.17 proc VARCHAR(150), +-- NB 25.10.17 cpu VARCHAR(150), +-- NB 25.10.17 ram VARCHAR(150), +-- NB 25.10.17 disk VARCHAR(150), +-- NB 25.10.17 option VARCHAR(100), +-- NB 25.10.17 price float(5,2) +-- NB 25.10.17 ); + +PRAGMA encoding="UTF-8"; diff --git a/share/db/nb.db b/share/db/nb.db index 502b190f..382d75fe 100644 Binary files a/share/db/nb.db and b/share/db/nb.db differ diff --git a/share/db/update.sh b/share/db/update.sh index 4509c961..7fd229ca 100755 --- a/share/db/update.sh +++ b/share/db/update.sh @@ -6,13 +6,45 @@ # set +e cd $(dirname "$0") -tmp=`mktemp -d` +TMP=`mktemp -d` + +main() { +( + +cat << EOF +.separator \t +`cat "*.sql"` +PRAGMA foreign_keys=OFF; +`data_src` +VACUUM; +EOF + +) | sqlite3 "nb.db" && ( + +for f in $(shell_replace -find $NB_ROOT/*); do + + echo "Update $f" | sed "s; $NB_ROOT/; ;" + shell_replace -i.shell_replace "$f" + +done + +) + +rm -rf "$TMP" +} + +data_src() { + + ./port > "$TMP/port.csv" + csv2table port "$TMP/port.csv" + +} csv2table() { - local name="$1"; shift - local file="$1"; shift + local name="$1"; shift + local file="$1"; shift - cat << EOF + cat << EOF CREATE TEMPORARY TABLE IF NOT EXISTS _var (k varchar(10),v varhcar(10)); DELETE FROM _var; @@ -32,50 +64,41 @@ INSERT OR IGNORE INTO $name SELECT * FROM ${name}_tmp; INSERT INTO _var VALUES('post',(SELECT count(*) FROM ${name})); SELECT 'Update $name (' - || ((SELECT v FROM _var WHERE k='post')-(SELECT v FROM _var WHERE k='pre')) - || '/' - ||(SELECT v FROM _var WHERE k='import') + || ((SELECT v FROM _var WHERE k='post')-(SELECT v FROM _var WHERE k='pre')) + || '/' + ||(SELECT v FROM _var WHERE k='import') ||')' ||' = ('||(SELECT count(*) FROM ${name})||')' ; EOF } -data_src() { - - ./port > "$TMP/port.csv" - csv2table port "$TMP/port.csv" - +shell_functions2sql() { + local t="$1"; shift + local f + ( + for f in `shell_functions`; do + type "$f" || continue + done + ) | perl -MData::Dumper -e ' +BEGIN{$t=shift @ARGV and print qq|PRAGMA encoding="UTF-8";\n| +."DROP TABLE IF EXISTS $t;\n" +."CREATE TABLE $t (name VARCHAR(255) PRIMARY KEY,code BLOB);\n" +and $t="INSERT INTO $t "; +$|=1; +} +$_=join("",<>);@_=(map{s/^\s*(.*?)\s*$/$1/m;$_}split(/^(.*?) is a function$/m,$_)); +0&&die Dumper(\\@_); +0&&die Dumper($_[2]); +$q=chr(39); +while (@_) { + $k=shift @_; + next unless $k; + $v=shift @_; + $v =~ s/$q/$q.$q/ge; + print $t.qq|VALUES ($q$k$q,$q$v$q);\n|; +} +' "$t" } -( - -cat "*.sql" -cat << EOF -PRAGMA foreign_keys=OFF; -.separator \t - -`data_src` - -SELECT 'Update sys:shell_function'; -BEGIN TRANSACTION; -`shell_functions2sql shell_function` -COMMIT; - -VACUUM; -EOF - -) | sqlite3 "nb.db" - -rm -rf "$TMP" - -( - -for f in $(shell_replace -find $NB_ROOT/*); do - - echo "Update $f" | sed "s; $NB_ROOT/; ;" - shell_replace -i.shell_replace "$f" - -done - -) +main diff --git a/share/db/useragent.sql b/share/db/useragent.sql index 1c34ad7e..613eee2c 100644 --- a/share/db/useragent.sql +++ b/share/db/useragent.sql @@ -1,10 +1,3 @@ --- Type: --- B = Browser --- C = Link-, bookmark-, server- checking D = Downloading tool --- P = Proxy server, web filtering --- R = Robot, crawler, spider --- S = Spam or bad bot - CREATE TEMPORARY TABLE _useragent ( id INT PRIMARY KEY, string VARCHAR(500), @@ -15,29 +8,57 @@ CREATE TEMPORARY TABLE _useragent ( link2 VARCHAR(1000) ); -CREATE TEMPORARY TABLE new_useragent ( - id INT PRIMARY KEY, - string VARCHAR(500), - description VARCHAR(2000), - type VARCHAR(20), - comment VARCHAR(100), - link1 VARCHAR(1000), - link2 VARCHAR(1000) -); +-- NB 07.12.17 DROP TABLE IF EXISTS useragent; +-- NB 07.12.17 CREATE TABLE IF NOT EXISTS useragent ( +-- NB 07.12.17 id VARCHAR(32) PRIMARY KEY, +-- NB 07.12.17 string VARCHAR(500), +-- NB 07.12.17 description VARCHAR(2000), +-- NB 07.12.17 type VARCHAR(20), +-- NB 07.12.17 comment VARCHAR(100), +-- NB 07.12.17 link1 VARCHAR(1000), +-- NB 07.12.17 link2 VARCHAR(1000) +-- NB 07.12.17 ); DROP TABLE IF EXISTS useragent; CREATE TABLE IF NOT EXISTS useragent ( - id INT PRIMARY KEY, string VARCHAR(500), description VARCHAR(2000), - type VARCHAR(20), comment VARCHAR(100), - link1 VARCHAR(1000), - link2 VARCHAR(1000) + link VARCHAR(1000), + is_browser BOOLEAN, + is_link BOOLEAN, + is_download BOOLEAN, + is_proxy BOOLEAN, + is_robot BOOLEAN, + is_spam BOOLEAN ); +CREATE INDEX useragent_string_idx ON `useragent` (string); +CREATE INDEX useragent_comment_idx ON `useragent` (comment); +CREATE INDEX useragent_is_browser_idx ON `useragent` (is_browser); +CREATE INDEX useragent_is_link_idx ON `useragent` (is_link); +CREATE INDEX useragent_is_download_idx ON `useragent` (is_download); +CREATE INDEX useragent_is_proxy_idx ON `useragent` (is_proxy); +CREATE INDEX useragent_is_robot_idx ON `useragent` (is_robot); +CREATE INDEX useragent_is_spam_idx ON `useragent` (is_spam); + BEGIN TRANSACTION; .separator \t .import "useragent.csv" _useragent -.import "useragent.csv" useragent +-- NB 07.12.17 .import "useragent.csv" useragent +-- Type: +-- B = Browser +-- C = Link-, bookmark-, server- checking +-- D = Downloading tool +-- P = Proxy server, web filtering +-- R = Robot, crawler, spider +-- S = Spam or bad bot +INSERT INTO useragent SELECT string,description,comment,link1 + ,CASE WHEN type LIKE '%B%' THEN 1 ELSE 0 END + ,CASE WHEN type LIKE '%C%' THEN 1 ELSE 0 END + ,CASE WHEN type LIKE '%D%' THEN 1 ELSE 0 END + ,CASE WHEN type LIKE '%P%' THEN 1 ELSE 0 END + ,CASE WHEN type LIKE '%R%' THEN 1 ELSE 0 END + ,CASE WHEN type LIKE '%S%' THEN 1 ELSE 0 END +FROM _useragent; COMMIT; diff --git a/www/dbq/dbq.php b/www/dbq/dbq.php index 21942614..e267fd94 100644 --- a/www/dbq/dbq.php +++ b/www/dbq/dbq.php @@ -356,6 +356,7 @@ class DbQ extends nb { if ($this->perm < self::DELETE) return; if ($this->db->type == 'sqlite' and !is_writeable($this->db->host)) return; + $rm = $this->table->base.'/rm/'.$args; $r['delete'] = '' .'
'