]> git.nbdom.net Git - nb.git/commitdiff
encrypt
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 1 Nov 2016 02:01:02 +0000 (02:01 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 1 Nov 2016 02:01:02 +0000 (02:01 +0000)
bin/dbq
etc/dbq.php
etc/dbq/nb.php
etc/dbq/ui.php
etc/dbq/wp.php
lib/php/db.php
lib/php/db/field.php
lib/php/db/page.php
lib/php/db/table.php
lib/php/nb.php
lib/php/page.php

diff --git a/bin/dbq b/bin/dbq
index 6e24ff1e9e6a45feb84037870b746310d54748c5..99467cc417fe4b47aba32b647f759a5bcaf65939 100755 (executable)
--- a/bin/dbq
+++ b/bin/dbq
@@ -103,6 +103,7 @@ get_options(\%Opt,\@CURL_OPT);
 #
 # Get URL
 #
+#-e $ROOT_DIR.'/lib/php/db/index.php' && die 'OK';
 my $url = ($ENV{$UC_NAME.'_URL'} ? $ENV{$UC_NAME.'_URL'} :
   ( -e $ROOT_DIR.'/lib/php/db/index.php' ? $ROOT_DIR.'/lib/php/db/index.php' : '/opt/rent/www/index.php' )
 );
index 9aa48d279ff0a0b7d3764408befa670738cd71f0..bdbe6a87e8839bcd4a5a55e98cac60d2f67ded71 100644 (file)
@@ -10,17 +10,17 @@ $LOCAL_DB = (
 #
 # Search existing DIR_SQLITE
 #
-$DIR_SQLITE = '';
+unset($DIR_SQLITE);
 foreach ([
-  '~nico/ownCloud',
-  '~nicoadm/ownCloud',
+  '/home/nico/ownCloud',
+  '/Users/nico/ownCloud',
 ] as $dir) {
-  $dir = nb::untilde($dir);
+  #$dir = nb::untilde($dir);
   if (!is_readable($dir)) continue;
   $DIR_SQLITE = $dir;
   break;
 }
-if ($DIR_SQLITE) $DIR_SQLITE .= '/var/lib/sqlite';
+if (!empty($DIR_SQLITE)) $DIR_SQLITE .= '/var/lib/sqlite';
 
 #
 # Includes dbq/*php
@@ -41,7 +41,7 @@ foreach ($DBQ as $id => $db) {
   ) $host_already_exists[$db['host']] = $id;
 }
 
-if ($DIR_SQLITE) {
+if (!empty($DIR_SQLITE)) {
   foreach (nb::ls_dir($DIR_SQLITE,'\.db$') as $file) {
 
     if (strpos($file,'_conflict-')) continue;
index 53724cc32429c61613e8707a9b8510dd330e3023..d63441bd812551477f42b32ec80cce01f57ac076 100644 (file)
@@ -1,7 +1,8 @@
 <?php
 
 $DBQ['nb'] = [
-  'host' => 'admin.izideal.vpn',
+# NB 01.11.16 macmini router issue  'host' => 'admin.izideal.vpn',
+  'host' => '10.8.0.1',
   'type' => 'mysql',
   'name' => 'nb',
   '_import' => ['_nico'],
index 0ce75b645369ecb0eb7fd0434c931846aeb64b46..6f1f2c7255662bc70fd53d97fdf0363a90cc8d00 100644 (file)
@@ -156,7 +156,7 @@ $DBQ['_ui'] = array(
 );
 
 if ($GLOBALS['web']) {
-  $DBQ['_ui']['people'] = $DBQ['_ui']['user'] = [
+  $DBQ['_ui']['tables']['people'] = $DBQ['_ui']['tables']['user'] = [
     'extras'=> [
       'pic' => '\'<img alt="" src="/scripts/gravatar/?email=\' || contact.email || \'" />\'',
     ],
index d084af966034f1a5a27c74059ade6d15cded82ff..a1e2078804e6faf20b5513f00d65e98e9d13c793 100644 (file)
@@ -17,9 +17,9 @@ if (false and !empty($GLOBALS['wpdb'])) {
   $DBQ['wp']['host'] = DB_DIR.'/'.DB_FILE;
 }
 
-$DBQ['wp-sqlite'] = array (
+if (!empty($DIR_SQLITE) and file_exists("$DIR_SQLITE/wp.db")) $DBQ['wp-sqlite'] = [
   'host' => "$DIR_SQLITE/wp.db",
   'type' => 'sqlite',
   '_import' => 'wp',
-);
+];
 ?>
index 173bec367df60d06dc9588caddbf2832706ff1e5..753ab5ba863cf70563f2b735043b383a8044e634 100644 (file)
@@ -182,7 +182,7 @@ class Db extends nb {
         'name' => 'dbname',
         'charset' => 'charset',
       ] as $k => $v) {
-        #self::debug($k);
+        #self::debug([$k,$this->$k]);
         if ($v=='charset' and $this->type=='pgsql') continue;
         if (empty($this->$k)) continue;
         $this->pdo = preg_replace("/\b$v=[^;]*(;|$)/","",$this->pdo);
@@ -1127,6 +1127,38 @@ class Db extends nb {
     return $dbs;
   }
 
+  public function table_row_encrypt(&$table,&$row) {
+    if (0
+      or empty($this->encrypt)
+      or empty($this->encrypt['secret'])
+      or empty($this->encrypt['tables'])
+      or empty($this->encrypt['tables'][$table->name])
+    ) return $row;
+
+    foreach ($row as $k => $v) {
+      if (!in_array($k,$this->encrypt['tables'][$table->name])) continue;
+      $row[$k] = $this->encrypt($this->encrypt['secret'],$v);
+    }
+
+    return $row;
+  }
+
+  public function table_row_decrypt(&$table,&$row) {
+    if (0
+      or empty($this->encrypt)
+      or empty($this->encrypt['secret'])
+      or empty($this->encrypt['tables'])
+      or empty($this->encrypt['tables'][$table->name])
+    ) return $row;
+
+    foreach ($row as $k => $v) {
+      if (!in_array($k,$this->encrypt['tables'][$table->name])) continue;
+      $row[$k] = $this->decrypt($this->encrypt['secret'],$v);
+    }
+
+    return $row;
+  }
+
 } # < Class
 
 ?>
index 965c9ffd24e2023aeaeae9ef0e6f9ff60b3d7a84..5093319feddc0d7da9f6e0b02a770b8e450c0c8a 100644 (file)
@@ -72,7 +72,7 @@ class field extends nb {
     if (strpos($this->type,'date') !== false) return 'date';
   }
 
-  public function html_edit($value) {
+  public function html_edit($value,$type=null) {
 
     $size = ($this->size() and is_scalar($this->size())) ? $this->size() : 0;
     $tag = ( ($size>$this->textarea_size) or preg_match('/^(text|binary)/i',$this->type) ) ? 'textarea' : 'input';
@@ -84,7 +84,9 @@ class field extends nb {
           .' id="'.$this->name.'"'
           .( $size ? ' size="'.$size.'"' : '')
           #.' value="'.$value.'"'
-          .($tag == 'textarea' ? '>'.$value.'</textarea>' : ' type="'.$this->html_type().'" value="'.$value.'" />')
+          .($tag == 'textarea' ? '>'.$value.'</textarea>' : ' type="'
+            .($type ? $type : $this->html_type())
+          .'" value="'.$value.'" />')
       )
     .'</div>'.NB_EOL;
 
index b4a87bc68977da07bd6a487ec71c14edd4b0de3f..6a5dbc022423d89f071c855db1cd942d9b539935 100644 (file)
@@ -7,6 +7,7 @@ $Page = new Page([
   'call' => array(
     'begin',
     #['out', "Hello World !!!\n"],
+
     function($page){
       global $Db, $Table;
       #$type = $page->mime2ext($page->content_type());
@@ -21,11 +22,11 @@ $Page = new Page([
           #bye($type);
           $page->pdef('format','csv');
       }
-      if ($page->action()) 1;
-      else return $Db->action($Db->p('action'),$Table);
-      #else require_once(dirname(__FILE__).'/index.php');
+      if (!$page->action()) return $Db->action($Db->p('action'),$Table);
     },
+
     function($page){
+      #if (!$page->is('html')) return;
       global $Db;
       if (!empty($Db)) echo $page->tag('div class="db-infos"',join(' | ',[
         $Db->type,
@@ -33,6 +34,7 @@ $Page = new Page([
         ($Db->name ? $Db->name : null),
       ]));
     },
+
     'end',
   ),
 ]);
index 9ed3b6c1a9376ee464a518c0d757173bcd120e64..5beed0cc40a820e40df26b691b9389223c0542fd 100644 (file)
@@ -406,6 +406,9 @@ Class Table extends nb {
     echo '<div class="fields">'.NB_EOL;
     $count = 0;
     if ( $add or ($row = $st->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT))) {
+      $orig = $row;
+
+      $this->db()->table_row_decrypt($this,$row);
       $count ++;
 
       foreach ($fields as $name => $field) {
@@ -413,6 +416,7 @@ Class Table extends nb {
         elseif(!isset($row[$name])) $row[$name] = '';
         echo $field->html_edit($row[$name]
 # NB 18.08.15           (! $add and array_key_exists($name,$row) ) ? $row[$name] : $field->default
+          #,( $orig[$name] === $row[$name] ? '' : 'password' )
         );
       }
 
@@ -803,6 +807,7 @@ Class Table extends nb {
       $count++;
       $call = null;
 
+      $this->db()->table_row_decrypt($this,$row);
       if ($parse and !empty($this->db()->row_parse)) {
         $call = $this->db()->row_parse; $call($row);
       }
@@ -1229,7 +1234,11 @@ Class Table extends nb {
       return false;
     }
 
-    foreach ($fields as $name => $field) $field->bindParam($query,$hvalues[$name],":$name");
+    foreach ($fields as $name => $field) {
+      $row = [ $name => $hvalues[$name] ];
+      $this->db()->table_row_encrypt($this,$row);
+      $field->bindParam($query,$row[$name],":$name");
+    }
 
     if (self::p('debug')) {
       $this->debug($info,1);
@@ -1305,8 +1314,9 @@ Class Table extends nb {
     }
 
     foreach ($fields as $name) {
-      #debug("$name: ".$hvalues[$name]);
-      $field->bindParam($query,$hvalues[$name],":$name");
+      $row = [ $name => $hvalues[$name] ];
+      $this->db()->table_row_encrypt($this,$row);
+      $field->bindParam($query,$row[$name],":$name");
     }
 
     foreach ($keys as $name) {
@@ -1356,11 +1366,8 @@ Class Table extends nb {
 
     $query = $this->db()->exec($sql);
     $info['rowCount'] = $query;
+
     return $info['rowCount'];
-    $info['rowCount'] = $query->rowCount();
-    return $info['rowCount'];
-    # Like insert- NB 05.04.16
-# NB 05.04.16     return $this->db()->exec($sql)->fetchColumn();
   }
 
   public function out($v,$head=array()) { return $this->db()->out($v,$head); }
index cae14907936fd89429950e25786c84ac7d102ddc..2e70d6c57bc111ebd8b49df26eaa2e9f11a0930d 100644 (file)
@@ -797,7 +797,7 @@ class NB {
 
 } # < Class
 
-#return;
+return;
 if (!count($argv) or (string)$argv[1] != 'test') return;
 $value = 'Hello World !';
 #$value = file_get_contents('/etc/hosts');
index 385e30b050b425c3fe8d3228555f8f9b35e3b111..59bda74bb05627df6db5ae25362d0d8368b4a45e 100644 (file)
@@ -300,7 +300,7 @@ class Page extends nb {
     if (preg_match('/ml$/',self::$content_type)) {
       self::tag_end();
       echo '</body>' . NB_EOL;
-      echo '</html>' . NB_EOL;
+      if (preg_match('/html$/',self::$content_type)) echo '</html>' . NB_EOL;
     }
 
   }