* Fixed the db class

Select was fetching all were selectassoc was fetching a single row
This commit is contained in:
Momchil Bozhinov
2021-01-26 16:33:37 +02:00
parent 242a680dbf
commit 31b2002a15
2 changed files with 39 additions and 31 deletions

View File

@@ -417,7 +417,7 @@ class ClonOS {
/* /*
function getTaskStatus($task_id){ function getTaskStatus($task_id){
$status=$this->_db_tasks->select("SELECT status,logfile,errcode $status=$this->_db_tasks->selectOne("SELECT status,logfile,errcode
FROM taskd WHERE id=?", array([$task_id]); FROM taskd WHERE id=?", array([$task_id]);
if($status['errcode']>0) $status['errmsg']=file_get_contents($status['logfile']); if($status['errcode']>0) $status['errmsg']=file_get_contents($status['logfile']);
@@ -629,7 +629,7 @@ class ClonOS {
$html=''; $html='';
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$jail=$db->select("SELECT jname,ip4_addr,status,protected FROM jails WHERE jname=?", array([$jname])); $jail=$db->selectOne("SELECT jname,ip4_addr,status,protected FROM jails WHERE jname=?", array([$jname]));
$hres=$this->getTableChunk('jailslist','tbody'); $hres=$this->getTableChunk('jailslist','tbody');
if($hres!==false){ if($hres!==false){
$html_tpl=$hres[1]; $html_tpl=$hres[1];
@@ -873,7 +873,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$query="SELECT jname,host_hostname FROM jails WHERE jname=?;"; //ip4_addr $query="SELECT jname,host_hostname FROM jails WHERE jname=?;"; //ip4_addr
$res['vars']=$db->select($query, array([$form['jail_id']])); $res['vars']=$db->selectOne($query, array([$form['jail_id']]));
} else { } else {
$err=true; $err=true;
} }
@@ -906,7 +906,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$query="SELECT jname,host_hostname FROM jails WHERE jname=?;"; //ip4_addr $query="SELECT jname,host_hostname FROM jails WHERE jname=?;"; //ip4_addr
$res['vars']=$db->select($query, array([$form['jail_id']])); $res['vars']=$db->selectOne($query, array([$form['jail_id']]));
}else $err=true; }else $err=true;
if(empty($res['vars'])) $err=true; if(empty($res['vars'])) $err=true;
@@ -936,7 +936,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$query="SELECT jname,host_hostname,ip4_addr,allow_mount,interface,mount_ports,astart,vnet FROM jails WHERE jname=?;"; $query="SELECT jname,host_hostname,ip4_addr,allow_mount,interface,mount_ports,astart,vnet FROM jails WHERE jname=?;";
$res['vars']=$db->select($query, array([$form['jail_id']])); $res['vars']=$db->selectOne($query, array([$form['jail_id']]));
}else $err=true; }else $err=true;
if(empty($res['vars'])) $err=true; if(empty($res['vars'])) $err=true;
@@ -1061,7 +1061,7 @@ class ClonOS {
$html=''; $html='';
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()) { if($db->isConnected()) {
$bhyve=$db->select("SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden FROM bhyve WHERE jname=?", array([$jname])); $bhyve=$db->selectOne("SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden FROM bhyve WHERE jname=?", array([$jname]));
$hres=$this->getTableChunk('bhyveslist','tbody'); $hres=$this->getTableChunk('bhyveslist','tbody');
if($hres!==false){ if($hres!==false){
$html_tpl=$hres[1]; $html_tpl=$hres[1];
@@ -1106,7 +1106,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()) { if($db->isConnected()) {
$query="SELECT b.jname as vm_name,vm_cpus,vm_ram,vm_vnc_port,bhyve_vnc_tcp_bind,interface FROM bhyve AS b INNER JOIN jails AS j ON b.jname=j.jname AND b.jname=?;"; $query="SELECT b.jname as vm_name,vm_cpus,vm_ram,vm_vnc_port,bhyve_vnc_tcp_bind,interface FROM bhyve AS b INNER JOIN jails AS j ON b.jname=j.jname AND b.jname=?;";
$res['vars']=$db->select($query, array([$form['jail_id']])); $res['vars']=$db->selectOne($query, array([$form['jail_id']]));
$res['vars']['vm_ram']=$this->fileSizeConvert($res['vars']['vm_ram'],1024,false,true); $res['vars']['vm_ram']=$this->fileSizeConvert($res['vars']['vm_ram'],1024,false,true);
}else{ }else{
$err=true; $err=true;
@@ -1156,7 +1156,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$query="SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden FROM bhyve WHERE jname=?"; //ip4_addr $query="SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden FROM bhyve WHERE jname=?"; //ip4_addr
$res['vars']=$db->select($query, array([$jname])); $res['vars']=$db->selectOne($query, array([$jname]));
}else $err=true; }else $err=true;
if(empty($res['vars'])) $err=true; if(empty($res['vars'])) $err=true;
@@ -1204,13 +1204,13 @@ class ClonOS {
$db=new Db('base','storage_media'); $db=new Db('base','storage_media');
if(!$db->isConnected()) return(false); // TODO: Fix return if(!$db->isConnected()) return(false); // TODO: Fix return
$res=$db->select('SELECT * FROM media WHERE jname=? AND type="iso"', array([$jname])); $res=$db->selectOne('SELECT * FROM media WHERE jname=? AND type="iso"', array([$jname]));
if($res!==false && !empty($res)){ if($res!==false && !empty($res)){
CBSD::run( CBSD::run(
'cbsd media mode=unregister name="%s" path="%s" jname=%s type=%s', 'cbsd media mode=unregister name="%s" path="%s" jname=%s type=%s',
array($res['name'], $res['path'], $jname, $res['type']) array($res['name'], $res['path'], $jname, $res['type'])
); );
$res=$db->select( $res=$db->selectOne(
'SELECT * FROM media WHERE idx=?', 'SELECT * FROM media WHERE idx=?',
array([(int)$form['vm_iso_image']]) array([(int)$form['vm_iso_image']])
); );
@@ -1274,7 +1274,7 @@ class ClonOS {
if($iso_id>0){ if($iso_id>0){
$db=new Db('base','storage_media'); $db=new Db('base','storage_media');
if(!$db->isConnected()) return(false); // TODO: return error if(!$db->isConnected()) return(false); // TODO: return error
$res=$db->select('SELECT name,path FROM media WHERE idx= ?', array([$iso_id])); // OK, $iso_id is casted as int above. $res=$db->selectOne('SELECT name,path FROM media WHERE idx= ?', array([$iso_id])); // OK, $iso_id is casted as int above.
if($res===false || empty($res)) $iso=false; if($res===false || empty($res)) $iso=false;
} }
@@ -1378,7 +1378,7 @@ class ClonOS {
if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database error!'); if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database error!');
//if($nres['name']!==false) $key_name=$nres['name']; //if($nres['name']!==false) $key_name=$nres['name'];
$nres=$db->select('SELECT authkey FROM authkey WHERE idx=?', array([$key_id, PDO::PARAM_INT])); $nres=$db->selectOne('SELECT authkey FROM authkey WHERE idx=?', array([$key_id, PDO::PARAM_INT]));
if($nres['authkey']!==false) $authkey=$nres['authkey']; else $authkey=''; if($nres['authkey']!==false) $authkey=$nres['authkey']; else $authkey='';
//var_dump($nres);exit; //var_dump($nres);exit;
@@ -1561,7 +1561,7 @@ class ClonOS {
if(!$db->isConnected()) return array('error'=>true,'res'=>'Database error'); if(!$db->isConnected()) return array('error'=>true,'res'=>'Database error');
//$res=$db->update('DELETE FROM media WHERE idx=?', array([$this->form['media_id']])); //$res=$db->update('DELETE FROM media WHERE idx=?', array([$this->form['media_id']]));
$res=$db->select('SELECT * FROM media WHERE idx=?', array([(int)$this->form['media_id'], PDO::PARAM_INT])); $res=$db->selectOne('SELECT * FROM media WHERE idx=?', array([(int)$this->form['media_id'], PDO::PARAM_INT]));
if($res===false || empty($res)) return array('error'=>true,'res'=>print_r($res,true)); if($res===false || empty($res)) return array('error'=>true,'res'=>print_r($res,true));
//if($res['jname']=='-') // если медиа отвязана, то про<D180> //if($res['jname']=='-') // если медиа отвязана, то про<D180>
@@ -1607,7 +1607,7 @@ class ClonOS {
$id=str_replace('src','',$id); $id=str_replace('src','',$id);
$db=new Db('base','local'); $db=new Db('base','local');
if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database error'); if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database error');
$res=$db->select("SELECT idx,name,platform,ver,rev,date FROM bsdsrc WHERE ver=?", array([(int)$id, PDO::PARAM_INT])); $res=$db->selectOne("SELECT idx,name,platform,ver,rev,date FROM bsdsrc WHERE ver=?", array([(int)$id, PDO::PARAM_INT]));
$hres=$this->getTableChunk('srcslist','tbody'); $hres=$this->getTableChunk('srcslist','tbody');
if($hres!==false){ if($hres!==false){
@@ -1659,7 +1659,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database connect error!'); if(!$db->isConnected()) return array('error'=>true,'errorMessage'=>'Database connect error!');
$base=$db->select("SELECT idx,platform,ver FROM bsdsrc WHERE idx=?", array([$id, PDO::PARAM_INT])); // Casted above as $base=$db->selectOne("SELECT idx,platform,ver FROM bsdsrc WHERE idx=?", array([$id, PDO::PARAM_INT])); // Casted above as
$ver=$base['ver']; $ver=$base['ver'];
$stable_arr=array('release','stable'); $stable_arr=array('release','stable');
$stable_num=strlen(intval($ver))<strlen($ver)?0:1; $stable_num=strlen(intval($ver))<strlen($ver)?0:1;
@@ -1695,7 +1695,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
if($bsdsrc){ if($bsdsrc){
$res=$db->select("SELECT idx,platform,ver FROM bsdsrc WHERE idx=?", array([(int)$id, PDO::PARAM_INT])); $res=$db->selectOne("SELECT idx,platform,ver FROM bsdsrc WHERE idx=?", array([(int)$id, PDO::PARAM_INT]));
$res['name']='—'; $res['name']='—';
$res['arch']='—'; $res['arch']='—';
$res['targetarch']='—'; $res['targetarch']='—';
@@ -1703,7 +1703,7 @@ class ClonOS {
$res['elf']='—'; $res['elf']='—';
$res['date']='—'; $res['date']='—';
}else{ }else{
$res=$db->select("SELECT idx,platform,name,arch,targetarch,ver,stable,elf,date FROM bsdbase WHERE ver=?", array([(int)$id, PDO::PARAM_INT])); $res=$db->selectOne("SELECT idx,platform,name,arch,targetarch,ver,stable,elf,date FROM bsdbase WHERE ver=?", array([(int)$id, PDO::PARAM_INT]));
} }
$hres=$this->getTableChunk('baseslist','tbody'); $hres=$this->getTableChunk('baseslist','tbody');
if($hres!==false){ if($hres!==false){
@@ -1979,13 +1979,13 @@ class ClonOS {
function runVNC($jname){ function runVNC($jname){
$query="SELECT vnc_password FROM bhyve WHERE jname=?"; $query="SELECT vnc_password FROM bhyve WHERE jname=?";
$res=$this->_db_local->select($query, array([$jname])); $res=$this->_db_local->selectOne($query, array([$jname]));
$pass='cbsd'; $pass='cbsd';
if($res!==false) $pass=$res['vnc_password']; if($res!==false) $pass=$res['vnc_password'];
$resCBSD::run("vm_vncwss jname=%s permit=%s", array($jname, $this->_client_ip)); $resCBSD::run("vm_vncwss jname=%s permit=%s", array($jname, $this->_client_ip));
//$res=$this->_db_local->select("SELECT nodeip FROM local", array()); //$res=$this->_db_local->selectOne("SELECT nodeip FROM local", array());
//$nodeip=$res['nodeip']; //$nodeip=$res['nodeip'];
// need for IPv4/IPv6 regex here, instead of strlen // need for IPv4/IPv6 regex here, instead of strlen
//if(strlen($nodeip)<7) $nodeip='127.0.0.1'; //if(strlen($nodeip)<7) $nodeip='127.0.0.1';
@@ -2216,7 +2216,7 @@ class ClonOS {
$mhash=$_COOKIE['mhash']; $mhash=$_COOKIE['mhash'];
if(!preg_match('#^[a-f0-9]{32}$#',$mhash)) return array('error'=>true,'error_message'=>'Bad data'); if(!preg_match('#^[a-f0-9]{32}$#',$mhash)) return array('error'=>true,'error_message'=>'Bad data');
$query1="select user_id from auth_list WHERE sess_id=? limit 1"; $query1="select user_id from auth_list WHERE sess_id=? limit 1";
$res1=$db->select($query1, array([$mhash])); $res1=$db->selectOne($query1, array([$mhash]));
{ {
if($res1['user_id']>0) if($res1['user_id']>0)
{ {
@@ -2273,7 +2273,7 @@ class ClonOS {
if(isset($user_info['username']) && isset($user_info['password'])){ if(isset($user_info['username']) && isset($user_info['password'])){
$db=new Db('clonos'); $db=new Db('clonos');
if($db->isConnected()) { if($db->isConnected()) {
$res=$db->select("SELECT username FROM auth_user WHERE username=?", array([$user_info['username']])); $res=$db->selectOne("SELECT username FROM auth_user WHERE username=?", array([$user_info['username']]));
if(!empty($res)){ if(!empty($res)){
$res['user_exsts']=true; $res['user_exsts']=true;
return $res; return $res;
@@ -2318,7 +2318,7 @@ class ClonOS {
$db=new Db('clonos'); $db=new Db('clonos');
if($db->isConnected()){ if($db->isConnected()){
$pass=$this->getPasswordHash($user_info['password']); $pass=$this->getPasswordHash($user_info['password']);
$res=$db->select("SELECT id,username,password FROM auth_user WHERE username=? AND is_active=1", array([$user_info['login']])); $res=$db->selectOne("SELECT id,username,password FROM auth_user WHERE username=? AND is_active=1", array([$user_info['login']]));
if(empty($res) || $res['password'] != $pass){ if(empty($res) || $res['password'] != $pass){
sleep(3); sleep(3);
return array('errorCode'=>1,'message'=>'user not found!'); return array('errorCode'=>1,'message'=>'user not found!');
@@ -2375,7 +2375,7 @@ class ClonOS {
if($db->isConnected()){ if($db->isConnected()){
$query="SELECT au.id,au.username FROM auth_user au, auth_list al WHERE al.secure_sess_id=? AND au.id=al.user_id AND au.is_active=1"; $query="SELECT au.id,au.username FROM auth_user au, auth_list al WHERE al.secure_sess_id=? AND au.id=al.user_id AND au.is_active=1";
//echo $query; //echo $query;
$res=$db->select($query, array([$secure_memory_hash])); $res=$db->selectOne($query, array([$secure_memory_hash]));
//print_r($res); //print_r($res);
if(!empty($res)){ if(!empty($res)){
$res['error']=false; $res['error']=false;
@@ -2405,7 +2405,7 @@ class ClonOS {
if(!$db->isConnected()) return array('error'=>true,'error_message'=>'DB connection error!'); if(!$db->isConnected()) return array('error'=>true,'error_message'=>'DB connection error!');
$user_id=(int)$this->form['user_id']; $user_id=(int)$this->form['user_id'];
$res=$db->select("SELECT username,first_name,last_name,is_active AS actuser FROM auth_user WHERE id=?", array([$user_id])); $res=$db->selectOne("SELECT username,first_name,last_name,is_active AS actuser FROM auth_user WHERE id=?", array([$user_id]));
return array( return array(
'dialog'=>$this->form['dialog'], 'dialog'=>$this->form['dialog'],
'vars'=>$res, 'vars'=>$res,
@@ -2419,7 +2419,7 @@ class ClonOS {
$db=new Db('clonos'); $db=new Db('clonos');
if(!$db->isConnected()) return array('DB connection error!'); if(!$db->isConnected()) return array('DB connection error!');
$res=$db->select("SELECT * FROM auth_user LIMIT 1", array()); // TODO: What?! $res=$db->selectOne("SELECT * FROM auth_user", array()); // TODO: What?!
return $res; return $res;
} }
@@ -2455,7 +2455,7 @@ class ClonOS {
$db=new Db('base','local'); $db=new Db('base','local');
if(!$db->isConnected()) return $this->messageError('DB connection error!'); if(!$db->isConnected()) return $this->messageError('DB connection error!');
$res=$db->select( $res=$db->selectOne(
"select name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus from vmpackages where id=?", "select name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus from vmpackages where id=?",
array([$tpl_id, PDO::PARAM_INT]) array([$tpl_id, PDO::PARAM_INT])
); );
@@ -2567,7 +2567,7 @@ class ClonOS {
$name_comment=''; $name_comment='';
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$jail=$db->select("SELECT jname FROM jails WHERE jname=?", array([$jname])); $jail=$db->selectOne("SELECT jname FROM jails WHERE jname=?", array([$jname]));
if($jname==$jail['jname']){ if($jname==$jail['jname']){
$jres=$this->ccmd_getFreeJname(false,$type); $jres=$this->ccmd_getFreeJname(false,$type);
@@ -2670,7 +2670,7 @@ class ClonOS {
FROM jails WHERE jname=?"; FROM jails WHERE jname=?";
$db=new Db('base','local'); $db=new Db('base','local');
if($db->isConnected()){ if($db->isConnected()){
$quer=$db->select($sql, array([$jail_name])); $quer=$db->selectOne($sql, array([$jail_name]));
$html='<table class="summary_table">'; $html='<table class="summary_table">';
foreach($quer as $q=>$k){ foreach($quer as $q=>$k){
@@ -2711,7 +2711,7 @@ class ClonOS {
bhyve_wire_memory, bhyve_rts_keeps_utc, bhyve_force_msi_irq, bhyve_x2apic_mode, bhyve_wire_memory, bhyve_rts_keeps_utc, bhyve_force_msi_irq, bhyve_x2apic_mode,
bhyve_mptable_gen, bhyve_ignore_msr_acc, bhyve_vnc_vgaconf text, media_auto_eject, bhyve_mptable_gen, bhyve_ignore_msr_acc, bhyve_vnc_vgaconf text, media_auto_eject,
vm_cpu_topology, debug_engine, xhci, cd_boot_firmware, jailed FROM settings"; vm_cpu_topology, debug_engine, xhci, cd_boot_firmware, jailed FROM settings";
$quer=$db->select($sql, array()); $quer=$db->selectOne($sql, array());
$html='<table class="summary_table">'; $html='<table class="summary_table">';
foreach($quer as $q=>$k){ foreach($quer as $q=>$k){

View File

@@ -130,7 +130,7 @@ class Db {
# TODO once tested $values can have a default value of an empty array # TODO once tested $values can have a default value of an empty array
# TODO both selects were assoc # TODO both selects were assoc
function select($sql, $values){ function select($sql, $values, $single = false){
try { try {
$query = $this->_pdo->prepare($sql); $query = $this->_pdo->prepare($sql);
$i = 1; $i = 1;
@@ -143,7 +143,11 @@ class Db {
$i++; $i++;
} }
$query->execute(); $query->execute();
if ($single){
$res = $query->fetch(PDO::FETCH_ASSOC);
} else {
$res = $query->fetchAll(PDO::FETCH_ASSOC); $res = $query->fetchAll(PDO::FETCH_ASSOC);
}
return $res; return $res;
} catch(PDOException $e) { } catch(PDOException $e) {
# TODO: Handling ? # TODO: Handling ?
@@ -151,6 +155,10 @@ class Db {
} }
} }
function selectOne($sql, $values){
return $this->select($sql, $values, true);
}
function insert($sql, $values){ function insert($sql, $values){
try { try {
$query = $this->_pdo->prepare($sql); $query = $this->_pdo->prepare($sql);