Switch to mysqli
authorJean-Michel Vourgère <jvourger@greenpeace.org>
Fri, 10 Mar 2017 20:21:43 +0000 (20:21 +0000)
committerJean-Michel Vourgère <jvourger@greenpeace.org>
Fri, 10 Mar 2017 20:25:22 +0000 (20:25 +0000)
config.php.example
webroot/squasher.class.php
webroot/squasher.php

index 66fa3c63afb813af2f91aedeaa47118d4edfd2c5..ff87cbd11f60a5b9ef145f09d902d8b1ceaedf15 100644 (file)
@@ -31,8 +31,7 @@ DEFINE('SQUASHER_SMARTY_CACHE', '/var/cache/squasher/cache');
 session_start();
 
 //connect to db
-$link_db = mysql_connect(SQUASHER_DB_HOST, SQUASHER_DB_USER, SQUASHER_DB_PASSWORD);
-mysql_select_db(SQUASHER_DB_DATABASE, $link_db);
+$db = mysqli_connect(SQUASHER_DB_HOST, SQUASHER_DB_USER, SQUASHER_DB_PASSWORD, SQUASHER_DB_DATABASE);
 
 // vim: syntax=php ts=4 sw=4 sts=4 sr noet
 ?>
index 583a659a70b6515cdfe3fbc82820c85bf1f77337..3f357ab6d4a06b26d38d3678f40756dc64707368 100644 (file)
@@ -22,10 +22,11 @@ function named_records_sort($named_recs, $order_by, $reverse=false, $flags=0) {
 }
 
 function validate_user($username, $password, $salt) {
+global $db;
        $creds['validated'] = false;
-       $query="SELECT * FROM users WHERE user_name = '".mysql_escape_string($username)."'";
-       $q_result = mysql_query($query);
-       while ($fetched_object = mysql_fetch_object($q_result)) {
+       $query="SELECT * FROM users WHERE user_name = '".$db->real_escape_string($username)."'";
+       $q_result = $db->query($query);
+       while ($fetched_object = mysqli_fetch_object($q_result)) {
                if (md5($fetched_object->user_pass.$salt) == $password) {
                        //validated
                        $creds['user_id'] = $fetched_object->user_id;
@@ -54,6 +55,7 @@ function get_smarty() {
 
 
 function log_event($action, $filename, $hash=null, $debugmsg=null) {
+global $db;
        if ($hash===null)
                $hash = str_repeat("0",32);
                
@@ -67,13 +69,13 @@ function log_event($action, $filename, $hash=null, $debugmsg=null) {
                $ip = $_SERVER['REMOTE_ADDR'];
        }
 
-       $hash = $hash===null ? 'NULL' : "'".mysql_escape_string($hash)."'";
-       $filename = "'".mysql_escape_string($filename)."'";
-       $action = "'".mysql_escape_string($action)."'";
-       $user_name = "'". mysql_escape_string($user_name)."'";
-       $ip = "'". mysql_escape_string($ip)."'";
+       $hash = $hash===null ? 'NULL' : "'".$db->real_escape_string($hash)."'";
+       $filename = "'".$db->real_escape_string($filename)."'";
+       $action = "'".$db->real_escape_string($action)."'";
+       $user_name = "'". $db->real_escape_string($user_name)."'";
+       $ip = "'". $db->real_escape_string($ip)."'";
 
-       @mysql_query("INSERT INTO log (hash,file,action,user_id,user_name,ip,date) VALUES ($hash, $filename, $action, $user_id, $user_name, $ip, NOW())");
+       @$db->query("INSERT INTO log (hash,file,action,user_id,user_name,ip,date) VALUES ($hash, $filename, $action, $user_id, $user_name, $ip, NOW())");
 }
 
 
@@ -109,8 +111,8 @@ function userrights() {
 
 function update_history() {
        $q="SELECT md5_hash,file,completed,checked FROM file_hash";
-       $r=mysql_query($q);
-       while($o=mysql_fetch_object($r)) {
+       $r=$this->db->query($q);
+       while($o=mysqli_fetch_object($r)) {
                $this->history[$o->md5_hash]['file']=$o->file;
                $this->history[$o->md5_hash]['completed']=$o->completed;
                $this->history[$o->md5_hash]['checked']=$o->checked;
@@ -122,9 +124,9 @@ function get_users($user_level) {
        if ($user_level<200) // super user have no restrictions at all
                $q .= " WHERE user_level < ".$user_level;
        $q .= " ORDER BY user_name ASC";
-       $r = mysql_query($q);
+       $r = $this->db->query($q);
 
-       while ($o = mysql_fetch_object($r)) {
+       while ($o = mysqli_fetch_object($r)) {
                $return[$o->user_id]['id']              = $o->user_id;
                $return[$o->user_id]['name']    = $o->user_name;
                $return[$o->user_id]['level']   = $o->user_level;
@@ -135,12 +137,13 @@ function get_users($user_level) {
 }
 
 function get_logs($type='all') {
+       $db=$this->db;
        $q="SELECT log.* FROM log WHERE log.user_id != '1' and ip != '87.233.211.2' ";
        if ($_SESSION['creds']['user_id'] == 1)
                $q="SELECT log.* FROM log WHERE log.user_id != 'x' ";
 
        if ($type != 'all')
-               $q.= " AND log.action = '".mysql_escape_string($type)."'";
+               $q.= " AND log.action = '".$db->real_escape_string($type)."'";
 
        $today     =" AND date > date(date_add(now(), interval -0 day)) ";
        $yesterday =" AND date < date(date_add(now(), interval -0 day)) AND date > date(date_add(now(), interval -1 day)) ";
@@ -148,45 +151,45 @@ function get_logs($type='all') {
        $older     =" AND date < date(date_add(now(), interval -7 day)) AND date > date(date_add(now(), interval -30 day)) ";
 
        $order=" ORDER BY log.log_id desc ";
-       $r = mysql_query($q.$today.$order);
+       $r = $db->query($q.$today.$order);
        $return = array(
                'today'=>array(),
                'yesterday'=>array(),
                'lastweek'=>array(),
                'older'=>array(),
                );
-       while($a = mysql_fetch_array($r)) {
-               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".mysql_escape_string($a['ip'])."' GROUP BY users.user_name";
-               $ru = mysql_query($qu);
+       while($a = mysqli_fetch_array($r)) {
+               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".$db->real_escape_string($a['ip'])."' GROUP BY users.user_name";
+               $ru = $db->query($qu);
                $a['users_from_ip'] = " | ";
-               while($au = mysql_fetch_array($ru))
+               while($au = mysqli_fetch_array($ru))
                        $a['users_from_ip'] .= $au['user_name']." | ";
                $return['today'][$a['log_id']] = $a;
        }
-       $r = mysql_query($q.$yesterday.$order);
-       while($a = mysql_fetch_array($r)) {
-               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".mysql_escape_string($a['ip'])."' GROUP BY users.user_name";
-               $ru = mysql_query($qu);
+       $r = $db->query($q.$yesterday.$order);
+       while($a = mysqli_fetch_array($r)) {
+               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".$db->real_escape_string($a['ip'])."' GROUP BY users.user_name";
+               $ru = $db->query($qu);
                $a['users_from_ip'] = " | ";
-               while($au = mysql_fetch_array($ru))
+               while($au = mysqli_fetch_array($ru))
                        $a['users_from_ip'] .= $au['user_name']." | ";
                $return['yesterday'][$a['log_id']] = $a;
        }
-       $r = mysql_query($q.$lastweek.$order);
-       while($a = mysql_fetch_array($r)) {
-               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".mysql_escape_string($a['ip'])."' GROUP BY users.user_name";
-               $ru = mysql_query($qu);
+       $r = $db->query($q.$lastweek.$order);
+       while($a = mysqli_fetch_array($r)) {
+               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".$db->real_escape_string($a['ip'])."' GROUP BY users.user_name";
+               $ru = $db->query($qu);
                $a['users_from_ip'] = " | ";
-               while($au = mysql_fetch_array($ru))
+               while($au = mysqli_fetch_array($ru))
                        $a['users_from_ip'] .= $au['user_name']." | ";
                $return['lastweek'][$a['log_id']] = $a;
        }
-       $r = mysql_query($q.$older.$order);
-       while($a = mysql_fetch_array($r)) {
-               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".mysql_escape_string($a['ip'])."' GROUP BY users.user_name";
-               $ru = mysql_query($qu);
+       $r = $db->query($q.$older.$order);
+       while($a = mysqli_fetch_array($r)) {
+               $qu="SELECT users.user_name FROM users LEFT JOIN log ON users.user_id = log.user_id WHERE log.ip='".$db->real_escape_string($a['ip'])."' GROUP BY users.user_name";
+               $ru = $db->query($qu);
                $a['users_from_ip'] = " | ";
-               while($au = mysql_fetch_array($ru))
+               while($au = mysqli_fetch_array($ru))
                        $a['users_from_ip'] .= $au['user_name']." | ";
                $return['older'][$a['log_id']] = $a;
        }
@@ -195,18 +198,20 @@ function get_logs($type='all') {
 }
 
 function insert_users($u, $admin_level) {
+       $db=$this->db;
        $user_name = $u['user_name'];
        $user_pass = $u['user_pass'];
        $user_level = (int)$u['user_level'];
 
-       $q = "INSERT INTO users (user_name,user_pass,user_level) VALUES ('".mysql_escape_string($user_name)."', '".mysql_escape_string(md5($user_pass))."', ".$user_level.")";
-       $r = mysql_query($q);
+       $q = "INSERT INTO users (user_name,user_pass,user_level) VALUES ('".$db->real_escape_string($user_name)."', '".$db->real_escape_string(md5($user_pass))."', ".$user_level.")";
+       $r = $db->query($q);
 }
 
 /*
  * if user_level is 0, it means we don't really touch it, but we clear the password (can't log in anymore)
  */
 function update_users($u, $user_id) {
+       $db=$this->db;
        $user_id = (int)$user_id;
        $user_name = @$u['user_name'];
        $user_pass = @$u['user_pass'];
@@ -215,20 +220,20 @@ function update_users($u, $user_id) {
        else
                $user_level = null;
        if ($user_name) {
-               $q = "UPDATE users SET user_name = '".mysql_escape_string($user_name)."' WHERE user_id = ".$user_id;
-               $r = mysql_query($q);
+               $q = "UPDATE users SET user_name = '".$db->real_escape_string($user_name)."' WHERE user_id = ".$user_id;
+               $r = $db->query($q);
        }
        if ($user_pass) {
-               $q = "UPDATE users SET user_pass = '".mysql_escape_string(md5($user_pass))."' WHERE user_id = ".$user_id;
-               $r = mysql_query($q);
+               $q = "UPDATE users SET user_pass = '".$db->real_escape_string(md5($user_pass))."' WHERE user_id = ".$user_id;
+               $r = $db->query($q);
        }
        if ($user_level !== null) {
                if ($user_level > 0) {
                        $q = "UPDATE users SET user_level = ".$user_level." WHERE user_id = ".$user_id;
-                       $r = mysql_query($q);
+                       $r = $db->query($q);
                } else {
                        $q = "UPDATE users SET user_pass = '' WHERE user_id = ".$user_id;
-                       $r = mysql_query($q);
+                       $r = $db->query($q);
                }
        }
 }
@@ -236,7 +241,7 @@ function update_users($u, $user_id) {
 function remove_users($user_id) {
        $user_id = (int)$user_id;
        $q = "DELETE FROM users WHERE user_id = ".$user_id;
-       $r = mysql_query($q);
+       $r = $this->db->query($q);
 }
 
 
@@ -266,11 +271,12 @@ function remove_users($user_id) {
  * @return array Multidimensional array with dir and __access__ keys, and 0/1/2 values
  */
 function get_rights($user_id) {
+       $db=$this->db;
        $result = array();
 
        $q = "SELECT folder_path, access FROM user_rights WHERE user_id = ".(int)$user_id;
-       $r = mysql_query($q);
-       while ($o = mysql_fetch_object($r)) {
+       $r = $db->query($q);
+       while ($o = mysqli_fetch_object($r)) {
 
                //clean vars
                $arr_string = '$result';
@@ -331,19 +337,20 @@ function give_rights($user_id, $type='folderrights') {
 }
 
 function update_rights($edited_user, $m, $admin_level) {
+       $db=$this->db;
        $q = "SELECT count(*) result FROM users WHERE user_id = ".(int)$edited_user." AND user_level < ".(int)$admin_level;
-       $r = mysql_query($q);
-       $o = mysql_fetch_object($r);
+       $r = $db->query($q);
+       $o = mysqli_fetch_object($r);
 
        if ($o->result) {
                foreach ($m AS $path => $access) {
-                       $p_q = "SELECT count(*) result FROM user_rights WHERE user_id = ".(int)$edited_user." AND folder_path = '".mysql_escape_string($path)."'";
-                       $p_r = mysql_query($p_q);
-                       $p_o = mysql_fetch_object($p_r);
+                       $p_q = "SELECT count(*) result FROM user_rights WHERE user_id = ".(int)$edited_user." AND folder_path = '".$db->real_escape_string($path)."'";
+                       $p_r = $db->query($p_q);
+                       $p_o = mysqli_fetch_object($p_r);
                        if ($p_o->result == 1)
-                               mysql_query("UPDATE user_rights SET access = ".(int)$access." WHERE folder_path = '".mysql_escape_string($path)."' AND user_id = ".(int)$edited_user);
+                               $db->query("UPDATE user_rights SET access = ".(int)$access." WHERE folder_path = '".$db->real_escape_string($path)."' AND user_id = ".(int)$edited_user);
                        if ($p_o->result == 0)
-                               mysql_query("INSERT INTO user_rights (user_id,folder_path,access) values (".(int)$edited_user.",'".mysql_escape_string($path)."',".(int)$access.") ");
+                               $db->query("INSERT INTO user_rights (user_id,folder_path,access) values (".(int)$edited_user.",'".$db->real_escape_string($path)."',".(int)$access.") ");
                }
        }
 }
@@ -693,6 +700,7 @@ function read_directory($path, $getsubs=false, $getfirstfiles=true, $getdeepfile
 }
 
 function check_stats($h) {
+       $db=$this->db;
        $config = $this->get_config($h);
        $count = @array_sum($config['stats']);
        if ($config['status']=='Completed' && $count != $config[5]) {
@@ -737,16 +745,17 @@ function check_stats($h) {
                }
        } elseif ($config['status']=='Completed' && $count == $config[5]) {
                if ($this->history[$h]['completed']==0)
-                       mysql_query("UPDATE file_hash SET completed = 1 WHERE md5_hash = '".mysql_escape_string($h)."'");
+                       $db->query("UPDATE file_hash SET completed = 1 WHERE md5_hash = '".$db->real_escape_string($h)."'");
        }
 }
 
 function update_hash($hash, $path) {
+       $db=$this->db;
        $check_hash_query = "select * from file_hash where md5_hash = '".$hash."'";
-       $check_hash_result = mysql_query($check_hash_query);
-       if(mysql_num_rows($check_hash_result) == 0) {
-               $insert_hash_query = "INSERT INTO file_hash (md5_hash,file) values ('".mysql_escape_string($hash)."','".mysql_escape_string($path)."')";
-               mysql_query($insert_hash_query);
+       $check_hash_result = $db->query($check_hash_query);
+       if(mysqli_num_rows($check_hash_result) == 0) {
+               $insert_hash_query = "INSERT INTO file_hash (md5_hash,file) values ('".$db->real_escape_string($hash)."','".$db->real_escape_string($path)."')";
+               $db->query($insert_hash_query);
        }
 }
 
@@ -763,6 +772,7 @@ function path_to_arraystring($path, $arrayname) {
 } */
 
 function populate_stats($path, $h) {
+       $db=$this->db;
        /***
        *       $config:: array
        *       [0]     ->      versioncode
@@ -775,9 +785,9 @@ function populate_stats($path, $h) {
        ***/
        $config = $this->configs[$h];
 
-       $q = "SELECT * FROM file_hash WHERE md5_hash = '".mysql_escape_string($h)."'";
-       $r = mysql_query($q);
-       $o = mysql_fetch_object($r);
+       $q = "SELECT * FROM file_hash WHERE md5_hash = '".$db->real_escape_string($h)."'";
+       $r = $db->query($q);
+       $o = mysqli_fetch_object($r);
        $validated_chunks = $o->validated_chunks;
 
        if ($this->history[$h]['completed']=="1") {
@@ -795,7 +805,7 @@ function populate_stats($path, $h) {
                                $this->configs[$h]['stats'][$i] = "1.00";
                } else {
                        //failsafe voor verwijderde bestanden
-                       mysql_query("UPDATE file_hash SET completed = 0 WHERE md5_hash = '".mysql_escape_string($h)."'");
+                       $db->query("UPDATE file_hash SET completed = 0 WHERE md5_hash = '".$db->real_escape_string($h)."'");
                }
        } else {
                $keep_validating = true;
@@ -835,7 +845,7 @@ function populate_stats($path, $h) {
                                }
                        }
                }
-               mysql_query("UPDATE file_hash SET validated_chunks = '".mysql_escape_string($validated_chunks)."' WHERE md5_hash = '".mysql_escape_string($h)."'");
+               $db->query("UPDATE file_hash SET validated_chunks = '".$db->real_escape_string($validated_chunks)."' WHERE md5_hash = '".$db->real_escape_string($h)."'");
        }
 }
 
@@ -993,6 +1003,7 @@ function file_crc_debug($file) {
  * @param array $s Session credidentials
  */
 function delete_file($h, $s) {
+       $db=$this->db;
        $request = $this->get_config($h);
        $filepath = $request['path'].'/'.$request[2];
        if (strpos($request['path'], '/ftp/')===0) {
@@ -1027,8 +1038,8 @@ function delete_file($h, $s) {
        }
 
        #Update DB
-       $q = "DELETE FROM file_hash WHERE md5_hash = '".mysql_escape_string($h)."'";
-       mysql_query($q);
+       $q = "DELETE FROM file_hash WHERE md5_hash = '".$db->real_escape_string($h)."'";
+       $db->query($q);
 
        log_event('delete', $filepath, $h);
 
index 12c6cd78b8b63a7b31ee54563ff0db51983e6b43..5c41ca14ae7fa7927f18e9574ea7e24ad965b80b 100644 (file)
@@ -5,6 +5,7 @@ if (!$_SESSION['creds']['validated'] && !isset($_GET['f']))
 require_once("squasher.class.php");
 
 $squashweb = new squashweb();
+$squashweb->db = $db;
 
 $squashweb->update_history();
 
@@ -33,9 +34,9 @@ if (@$_GET['f'] || $_SESSION['creds']['user_level']>200) {
 }
 
 if (@$_GET['f']) {
-       $f_q = "SELECT * FROM file_hash WHERE md5_hash = '".mysql_escape_string($_GET['f'])."'";
-       $f_r = mysql_query($f_q);
-       $f_o = mysql_fetch_object($f_r);
+       $f_q = "SELECT * FROM file_hash WHERE md5_hash = '".$db->real_escape_string($_GET['f'])."'";
+       $f_r = $db->query($f_q);
+       $f_o = mysqli_fetch_object($f_r);
 
        //log downloads
        log_event('download', $f_o->file, $_GET['f']);