]> git.nbdom.net Git - nb.git/commitdiff
share/db/shell_function
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 7 Dec 2017 05:10:23 +0000 (05:10 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Thu, 7 Dec 2017 05:10:23 +0000 (05:10 +0000)
etc/profile.d/functions
share/db/0-clean.sql [deleted file]
share/db/0-pre.sql [new file with mode: 0644]
share/db/nb.db
share/db/update.sh
share/db/useragent.sql
www/dbq/dbq.php

index 5748089889efa0bff3da3ff96972936e7506d108..40d6e51b2028c012fee5ba2d0ee99016bc578320 100644 (file)
@@ -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 (file)
index 2c08ca5..0000000
+++ /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 (file)
index 0000000..dacbedf
--- /dev/null
@@ -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";
index 502b190f31037ba372da7383bf9c6f143f2aeffd..382d75fe364c423c10a995af506447e8316c6e37 100644 (file)
Binary files a/share/db/nb.db and b/share/db/nb.db differ
index 4509c9613a86cd01995f435de6f0a7c6f4075d8d..7fd229cabcaebe8070d53d04ad54f2e57a3148ff 100755 (executable)
@@ -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
index 1c34ad7e3b1d1d94c42320453c89ea14b9b4a9ca..613eee2c0ff64cd0c2213dd96c40dc27f8f986d3 100644 (file)
@@ -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;
index 21942614a3ae91a2aabc82460f43ab118a4d33f3..e267fd94a46856529ca288a2512bbedd3e4477fc 100644 (file)
@@ -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'] = ''
           .'<form action="'.$rm.'" method="post">'