# 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]"
+++ /dev/null
--- 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 );
--- /dev/null
+-- 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";
#
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;
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
--- 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),
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;
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">'