mirror of
https://github.com/optim-enterprises-bv/control-pane.git
synced 2025-10-30 01:22:24 +00:00
Resolved merge conflict
This commit is contained in:
58
php/cbsd.php
Normal file
58
php/cbsd.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
class CBSD {
|
||||
|
||||
static function run($cmd, $args){
|
||||
|
||||
$prepend='env NOCOLOR=1 /usr/local/bin/sudo /usr/local/bin/cbsd ';
|
||||
$defines = array(
|
||||
'{cbsd_loc}' => "/usr/local/bin/cbsd"
|
||||
);
|
||||
|
||||
$specs = array(
|
||||
0 => array('pipe','r'),
|
||||
1 => array('pipe','w'),
|
||||
2 => array('pipe','r')
|
||||
);
|
||||
|
||||
$cmd = vsprintf($cmd, $args); # make sure we deal with a string
|
||||
$cmd = strtr($cmd, $defines);
|
||||
$full_cmd = $prepend.trim($cmd);
|
||||
|
||||
if ($cmd != escapeshellcmd($cmd)){
|
||||
die("Shell escape attempt");
|
||||
}
|
||||
|
||||
$process = proc_open($full_cmd,$specs,$pipes,null,null);
|
||||
|
||||
$error=false;
|
||||
$error_message='';
|
||||
$message='';
|
||||
if (is_resource($process)){
|
||||
$buf=stream_get_contents($pipes[1]);
|
||||
$buf0=stream_get_contents($pipes[0]);
|
||||
$buf1=stream_get_contents($pipes[2]);
|
||||
fclose($pipes[0]);
|
||||
fclose($pipes[1]);
|
||||
fclose($pipes[2]);
|
||||
|
||||
$task_id=-1;
|
||||
$return_value = proc_close($process);
|
||||
if($return_value==0) $message=trim($buf); else {
|
||||
$error=true;
|
||||
$error_message=$buf;
|
||||
}
|
||||
|
||||
return array(
|
||||
'cmd'=>$cmd,
|
||||
'full_cmd'=>$full_cmd,
|
||||
'retval'=>$return_value,
|
||||
'message'=>$message,
|
||||
'error'=>$error,
|
||||
'error_message'=>$error_message
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1422
php/clonos.php
1422
php/clonos.php
File diff suppressed because it is too large
Load Diff
151
php/config.php
151
php/config.php
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
require_once("cbsd.php");
|
||||
|
||||
class Config
|
||||
{
|
||||
/* Список языков, используемых в проекте */
|
||||
@@ -6,7 +9,7 @@ class Config
|
||||
'en'=>'English',
|
||||
'ru'=>'Russian',
|
||||
);
|
||||
|
||||
|
||||
public $os_types_names=array(
|
||||
'netbsd'=>'NetBSD',
|
||||
'dflybsd'=>'DragonflyBSD',
|
||||
@@ -16,7 +19,7 @@ class Config
|
||||
'openbsd'=>'OpenBSD',
|
||||
'windows'=>'Windows',
|
||||
);
|
||||
|
||||
|
||||
public $other_titles=array(
|
||||
'settings'=>'CBSD Settings',
|
||||
'users'=>'CBSD Users',
|
||||
@@ -35,91 +38,91 @@ class Config
|
||||
'title'=>'Jails containers control panel',
|
||||
'icon'=>'icon-server',
|
||||
),
|
||||
|
||||
|
||||
'instance_jail'=>array(
|
||||
'name'=>'Template for jail',
|
||||
'title'=>'Helpers and wizard for containers',
|
||||
'icon'=>'icon-cubes',
|
||||
),
|
||||
|
||||
|
||||
'bhyvevms'=>array(
|
||||
'name'=>'Bhyve VMs',
|
||||
'title'=>'Virtual machine control panel',
|
||||
'icon'=>'icon-th-list',
|
||||
),
|
||||
/*
|
||||
/*
|
||||
'nodes'=>array(
|
||||
'name'=>'Nodes',
|
||||
'title'=>'Nodes control panel',
|
||||
'icon'=>'icon-buffer',
|
||||
),
|
||||
*/
|
||||
*/
|
||||
'vm_packages'=>array(
|
||||
'name'=>'VM Packages',
|
||||
'title'=>'Manage VM Packages group',
|
||||
'icon'=>'icon-cubes',
|
||||
),
|
||||
|
||||
|
||||
'k8s'=>array(
|
||||
'name'=>'K8S clusters',
|
||||
'title'=>'Manage K8S clusters',
|
||||
'icon'=>'icon-cubes',
|
||||
),
|
||||
|
||||
|
||||
'vpnet'=>array(
|
||||
'name'=>'Virtual Private Network',
|
||||
'title'=>'Manage for virtual private networks',
|
||||
'icon'=>'icon-plug',
|
||||
),
|
||||
|
||||
|
||||
'authkey'=>array(
|
||||
'name'=>'Authkeys',
|
||||
'title'=>'Manage for SSH auth key',
|
||||
'icon'=>'icon-key',
|
||||
),
|
||||
|
||||
|
||||
'media'=>array(
|
||||
'name'=>'Storage Media',
|
||||
'title'=>'Virtual Media Manager',
|
||||
'icon'=>'icon-inbox',
|
||||
),
|
||||
|
||||
|
||||
'imported'=>array(
|
||||
'name'=>'Imported images',
|
||||
'title'=>'Imported images',
|
||||
'icon'=>'icon-upload',
|
||||
),
|
||||
/*
|
||||
/*
|
||||
'repo'=>array(
|
||||
'name'=>'Repository',
|
||||
'title'=>'Remote repository',
|
||||
'icon'=>'icon-globe',
|
||||
),
|
||||
*/
|
||||
*/
|
||||
'bases'=>array(
|
||||
'name'=>'FreeBSD Bases',
|
||||
'title'=>'FreeBSD bases manager',
|
||||
'icon'=>'icon-database',
|
||||
),
|
||||
|
||||
|
||||
'sources'=>array(
|
||||
'name'=>'FreeBSD Sources',
|
||||
'title'=>'FreeBSD sources manager',
|
||||
'icon'=>'icon-edit',
|
||||
),
|
||||
/*
|
||||
/*
|
||||
'jail_marketplace'=>array(
|
||||
'name'=>'Jail Marketplace',
|
||||
'title'=>'Public remote containers marketplace',
|
||||
'icon'=>'icon-flag',
|
||||
),
|
||||
*//*
|
||||
*//*
|
||||
'bhyve_marketplace'=>array(
|
||||
'name'=>'Bhyve Marketplace',
|
||||
'title'=>'Public remote virtual machine marketplace',
|
||||
'icon'=>'icon-flag-checkered',
|
||||
),
|
||||
*/
|
||||
*/
|
||||
'tasklog'=>array(
|
||||
'name'=>'TaskLog',
|
||||
'title'=>'System task log',
|
||||
@@ -130,10 +133,9 @@ class Config
|
||||
'name'=>'SQLite admin',
|
||||
'title'=>'SQLite admin interface',
|
||||
'icon'=>'icon-wpforms',
|
||||
),
|
||||
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
public $os_types=array(
|
||||
array(
|
||||
'os'=>'DragonflyBSD',
|
||||
@@ -178,66 +180,59 @@ class Config
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
public $os_types_obtain=array();
|
||||
public $os_interfaces=array();
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$array=array();
|
||||
$array1=array();
|
||||
// $res=ClonOS::cbsd_cmd('get_bhyve_profiles src=vm clonos=1'); for obtain/library
|
||||
$res=ClonOS::cbsd_cmd('get_bhyve_profiles src=vm clonos=1');
|
||||
if($res['retval']==0)
|
||||
{
|
||||
|
||||
function __construct(){
|
||||
$res=CBSD::run('get_bhyve_profiles src=vm clonos=1', array());
|
||||
if($res['retval']==0){
|
||||
$this->os_types=$this->create_bhyve_profiles($res);
|
||||
}
|
||||
|
||||
$res1=ClonOS::cbsd_cmd('get_bhyve_profiles src=cloud');
|
||||
if($res1['retval']==0)
|
||||
{
|
||||
|
||||
$res1=CBSD::run('get_bhyve_profiles src=cloud', array());
|
||||
if($res1['retval']==0){
|
||||
$this->os_types_obtain=$this->create_bhyve_profiles($res1);
|
||||
}
|
||||
|
||||
$res2=ClonOS::cbsd_cmd('cbsd get_interfaces');
|
||||
if($res2['retval']==0)
|
||||
{
|
||||
|
||||
$res2=CBSD::run('cbsd get_interfaces', array());
|
||||
if($res2['retval']==0){
|
||||
$this->os_interfaces=$this->create_interfaces($res2);
|
||||
}
|
||||
}
|
||||
function create_bhyve_profiles($info)
|
||||
{
|
||||
$array1=array();
|
||||
|
||||
function create_bhyve_profiles($info){
|
||||
$os_names = array();
|
||||
$res=json_decode($info['message'],true);
|
||||
if(!empty($res))foreach($res as $item)
|
||||
{
|
||||
$os_name=$this->os_types_names[$item['type']];
|
||||
if(isset($array[$os_name]))
|
||||
{
|
||||
$array[$os_name]['items'][]=$item;
|
||||
}else{
|
||||
$array[$os_name]=array('os'=>$os_name,'items'=>array($item));
|
||||
if(!is_null($res) && $res != false){
|
||||
foreach($res as $item){
|
||||
$os_name=$this->os_types_names[$item['type']];
|
||||
if(isset($os_names[$os_name])){
|
||||
$os_names[$os_name]['items'][]=$item;
|
||||
}else{
|
||||
$os_names[$os_name]=array('os'=>$os_name,'items'=>array($item));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!empty($array))foreach($array as $item) $array1[]=$item;
|
||||
unset($array);
|
||||
return $array1;
|
||||
//$this->os_types=$array1;
|
||||
return $os_names;
|
||||
}
|
||||
function create_interfaces($info)
|
||||
{
|
||||
|
||||
function create_interfaces($info){
|
||||
$res=json_decode($info['message'],true);
|
||||
return $res;
|
||||
if(!is_null($res) && $res != false){
|
||||
return $res;
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
function os_types_create($obtain='new')
|
||||
{
|
||||
|
||||
function os_types_create($obtain='new'){
|
||||
$obtain=($obtain=='obtain');
|
||||
if($obtain)
|
||||
$info=$this->os_types_obtain;
|
||||
else
|
||||
$info=$this->os_types;
|
||||
|
||||
|
||||
$html='';
|
||||
foreach($info as $num1=>$os)
|
||||
{
|
||||
@@ -258,53 +253,45 @@ class Config
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
||||
function authkeys_list()
|
||||
{
|
||||
|
||||
function authkeys_list(){
|
||||
$db=new Db('base','authkey');
|
||||
$res=$db->select('SELECT idx,name FROM authkey;');
|
||||
|
||||
$res=$db->select('SELECT idx,name FROM authkey;', array());
|
||||
|
||||
$html='';
|
||||
if(!empty($res))foreach($res as $item)
|
||||
{
|
||||
if(!empty($res))foreach($res as $item){
|
||||
$html.=' <option value="'.$item['idx'].'">'.$item['name'].'</option>'.PHP_EOL;
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
function vm_packages_list()
|
||||
{
|
||||
|
||||
function vm_packages_list(){
|
||||
$db=new Db('base','local');
|
||||
$res=$db->select('select id,name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus,owner from vmpackages order by name asc;');
|
||||
|
||||
$res=$db->select('select id,name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus,owner from vmpackages order by name asc;', array());
|
||||
|
||||
$html='<option value="0"></option>';
|
||||
$min=0;
|
||||
$min_id=0;
|
||||
if(!empty($res))foreach($res as $item)
|
||||
{
|
||||
if(!empty($res))foreach($res as $item){
|
||||
$cpu=$item['pkg_vm_cpus'];
|
||||
$ram=trim($item['pkg_vm_ram']);
|
||||
$ed=substr($ram,-1);
|
||||
if($ed=='b')
|
||||
{
|
||||
if($ed=='b'){
|
||||
$ed=substr($ram,-2,1).'b';
|
||||
$ram=substr($ram,0,-2);
|
||||
}
|
||||
if($ed=='m' || $ed=='g') $ed.='b';
|
||||
if($ed=='mb')
|
||||
{
|
||||
if($ed=='mb'){
|
||||
$ram1=substr($ram,0,-1);
|
||||
$ram1=$ram1/1000000;
|
||||
}
|
||||
if($ed=='gb')
|
||||
{
|
||||
if($ed=='gb'){
|
||||
$ram1=substr($ram,0,-1);
|
||||
$ram1=$ram1/1000;
|
||||
}
|
||||
$res1=$cpu+$ram1;
|
||||
if($min>$res1 || $min==0) {$min=$res1;$min_id=$item['id'];}
|
||||
|
||||
|
||||
$name='<strong>'.$item['name'].'</strong> (cpu: '.$cpu.'; ram: '.$ram.'; hdd: '.$item['pkg_vm_disk'].')';
|
||||
$html.=' <option value="'.$item['id'].'" title="'.$item['description'].'">'.$name.'</option>'.PHP_EOL;
|
||||
}
|
||||
|
||||
179
php/db.php
179
php/db.php
@@ -1,25 +1,52 @@
|
||||
<?php
|
||||
|
||||
class Db {
|
||||
private $_pdo=null, $_connected;
|
||||
private $_pdo=null;
|
||||
private $_workdir='';
|
||||
private $_filename='';
|
||||
public $error=false;
|
||||
public $error_message='';
|
||||
|
||||
|
||||
/*
|
||||
$place = base (This is a basic set of databases: local, nodes, etc)
|
||||
$place = file (specify a specific database for the full pathth)
|
||||
*/
|
||||
function __destruct(){
|
||||
//if($this->_pdo) $this->_pdo->close();
|
||||
function __construct($place='base', $database='', $connect = null){
|
||||
|
||||
if (is_null($connect)){
|
||||
list($file_name, $connect) = $this->prep_connect($place, $database);
|
||||
|
||||
if(is_null($file_name) || !file_exists($file_name)){
|
||||
$this->error=true;
|
||||
$this->error_message='DB file name not set or not found!';
|
||||
return;
|
||||
} else {
|
||||
$this->_filename=$file_name;
|
||||
}
|
||||
|
||||
if(is_null($connect)) {
|
||||
$this->error=true;
|
||||
$this->error_message='DB file name not set or invalid';
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$this->_pdo = new PDO($connect);
|
||||
$this->_pdo->setAttribute(PDO::ATTR_TIMEOUT,5000);
|
||||
}catch (PDOException $e){
|
||||
$this->error=true;
|
||||
$this->error_message=$e->getMessage(); //'DB Error';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function __construct($place='base',$database=''){
|
||||
$this->_connected=false;
|
||||
|
||||
private function prep_connect($place, $database){
|
||||
|
||||
$this->_workdir=getenv('WORKDIR'); // /usr/jails/
|
||||
|
||||
$connect = null;
|
||||
$file_name = null;
|
||||
|
||||
switch($place){
|
||||
case 'base':
|
||||
$file_name=$this->_workdir.'/var/db/'.$database.'.sqlite';
|
||||
@@ -34,11 +61,10 @@ class Db {
|
||||
///usr/jails/jails-system/cbsdpuppet1/helpers/redis.sqlite
|
||||
$file_name=$this->_workdir.'/jails-system/'.$database['jname'].'/helpers/'.$database['helper'].".sqlite";
|
||||
$connect='sqlite:'.$file_name;
|
||||
break;
|
||||
} else {
|
||||
$file_name=$this->_workdir.'/formfile/'.$database.".sqlite";
|
||||
$connect='sqlite:'.$file_name;
|
||||
}
|
||||
|
||||
$file_name=$this->_workdir.'/formfile/'.$database.".sqlite";
|
||||
$connect='sqlite:'.$file_name;
|
||||
break;
|
||||
case 'cbsd-settings':
|
||||
$file_name=$this->_workdir.'/jails-system/CBSDSYS/helpers/cbsd.sqlite';
|
||||
@@ -57,7 +83,7 @@ class Db {
|
||||
$connect='sqlite:'.$file_name;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
$databases=array(
|
||||
'tasks'=>'cbsdtaskd',
|
||||
@@ -99,66 +125,89 @@ class Db {
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
$this->_filename=$file_name;
|
||||
//echo $file_name,PHP_EOL,PHP_EOL;
|
||||
|
||||
if(!isset($file_name) || empty($file_name) || !file_exists($file_name)){
|
||||
$this->error=true;
|
||||
$this->error_message='DB file not found!';
|
||||
return false;
|
||||
}
|
||||
|
||||
if(empty($connect)) return false; // Return from __construct doesn't work!
|
||||
|
||||
return [$file_name, $connect];
|
||||
}
|
||||
|
||||
# TODO once tested $values can have a default value of an empty array
|
||||
function select($sql, $values, $single = false){
|
||||
try {
|
||||
$this->_pdo = new PDO($connect);
|
||||
$this->_pdo->setAttribute(PDO::ATTR_TIMEOUT,5000);
|
||||
$this->_connected=true;
|
||||
$query = $this->_pdo->prepare($sql);
|
||||
$i = 1;
|
||||
foreach($values as $v){
|
||||
if (count($v) == 1){ # TODO: Make default type string
|
||||
$query->bindParam($i, $v[0]);
|
||||
} elseif (count($v) == 2){ # if type defined
|
||||
$query->bindParam($i, $v[0], $v[1]);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$query->execute();
|
||||
if ($single){
|
||||
$res = $query->fetch(PDO::FETCH_ASSOC);
|
||||
} else {
|
||||
$res = $query->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
return $res;
|
||||
} catch(PDOException $e) {
|
||||
# TODO: Handling ?
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
}catch (PDOException $e){
|
||||
$this->error=true;
|
||||
$this->error_message=$e->getMessage(); //'DB Error';
|
||||
return false;
|
||||
}
|
||||
function selectOne($sql, $values){
|
||||
return $this->select($sql, $values, true);
|
||||
}
|
||||
|
||||
function select($query){
|
||||
if($quer=$this->_pdo->query($query)){
|
||||
$res=$quer->fetchAll(PDO::FETCH_ASSOC);
|
||||
return $res;
|
||||
|
||||
function insert($sql, $values){
|
||||
try {
|
||||
$this->_pdo->beginTransaction();
|
||||
$query = $this->_pdo->prepare($sql);
|
||||
$i = 1;
|
||||
foreach($values as $v){
|
||||
if (count($v) == 1){ # TODO: Make default type string
|
||||
$query->bindParam($i, $v[0]);
|
||||
} elseif (count($v) == 2){ # if type defined
|
||||
$query->bindParam($i, $v[0], $v[1]);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$query->execute();
|
||||
$lastId = $this->_pdo->lastInsertId();
|
||||
$this->_pdo->commit();
|
||||
} catch(PDOException $e) {
|
||||
$this->_pdo->rollBack();
|
||||
#throw new Exception($e->getMessage());
|
||||
return array('error'=>true,'info'=>$e->getMessage());
|
||||
}
|
||||
return array();
|
||||
return array('error'=>false,'lastID'=>$lastId);
|
||||
}
|
||||
|
||||
function selectAssoc($query){
|
||||
if($quer=$this->_pdo->query($query)){
|
||||
$res=$quer->fetch(PDO::FETCH_ASSOC);
|
||||
return $res;
|
||||
|
||||
function update($sql, $values){
|
||||
try {
|
||||
$this->_pdo->beginTransaction();
|
||||
$query = $this->_pdo->prepare($sql);
|
||||
$i = 1;
|
||||
foreach($values as $v){
|
||||
if (count($v) == 1){ # TODO: Make default type string
|
||||
$query->bindParam($i, $v[0]);
|
||||
} elseif (count($v) == 2){ # if type defined
|
||||
$query->bindParam($i, $v[0], $v[1]);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$query->execute();
|
||||
$rowCount=$query->rowCount();
|
||||
$this->_pdo->commit();
|
||||
} catch(PDOException $e) {
|
||||
$this->_pdo->rollBack();
|
||||
#return false;
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
return array();
|
||||
return array('rowCount'=>$rowCount);
|
||||
}
|
||||
|
||||
function insert($query){
|
||||
if($quer=$this->_pdo->query($query)){
|
||||
$lastID=$this->_pdo->lastInsertId();
|
||||
return array('error'=>false,'lastID'=>$lastID);
|
||||
}
|
||||
$error=array('error'=>true,'info'=>$this->_pdo->errorInfo());
|
||||
return $error;
|
||||
}
|
||||
|
||||
function update($query) {
|
||||
if($quer=$this->_pdo->query($query)){
|
||||
$rowCount=$quer->rowCount();
|
||||
return array('rowCount'=>$rowCount);
|
||||
}
|
||||
$error=$this->_pdo->errorInfo();
|
||||
return $error;
|
||||
}
|
||||
|
||||
function isConnected(){ return($this->_connected); }
|
||||
|
||||
function isConnected(){ return !is_null($this->_pdo); }
|
||||
function getWorkdir(){ return $this->_workdir; }
|
||||
function getFileName(){ return $this->_filename; }
|
||||
function escape($str){ return SQLite3::escapeString($str); } // For now sqlite only!
|
||||
}
|
||||
|
||||
110
php/forms.php
110
php/forms.php
@@ -22,49 +22,42 @@ class Forms
|
||||
private $name='';
|
||||
private $db='';
|
||||
private $html='';
|
||||
|
||||
function __construct($jname,$helper='',$db_path=false)
|
||||
{
|
||||
|
||||
function __construct($jname,$helper='',$db_path=false){
|
||||
$this->name=$jname;
|
||||
if($jname=='')
|
||||
{
|
||||
if($jname==''){
|
||||
$database=$helper;
|
||||
}else if($jname=='cbsd-settings'){
|
||||
$this->db=new Db('cbsd-settings');
|
||||
}else{
|
||||
$database=array('jname'=>$jname,'helper'=>$helper);
|
||||
}
|
||||
if($helper!='')
|
||||
{
|
||||
if($db_path!==false)
|
||||
{
|
||||
if($helper!=''){
|
||||
if($db_path!==false){
|
||||
$this->db=new Db('file',$db_path);
|
||||
}else{
|
||||
$this->db=new Db('helper',$database);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function generate()
|
||||
{
|
||||
|
||||
function generate(){
|
||||
if($this->db->error) return;
|
||||
//$query="select * from forms order by group_id asc, order_id asc";
|
||||
$query="select * from forms order by groupname asc, group_id asc, order_id asc";
|
||||
$fields=$this->db->select($query);
|
||||
$fields=$this->db->select($query, array());
|
||||
//print_r($fields);exit;
|
||||
//echo '<pre>';print_r($fields);
|
||||
//$defaults=array();
|
||||
//$currents=array();
|
||||
|
||||
|
||||
// Строим карту формы с группами элементов
|
||||
$groups=array();
|
||||
foreach($fields as $key=>$field)
|
||||
{
|
||||
$group=$field['groupname'];
|
||||
if(!empty($group))
|
||||
{
|
||||
if($field['type']=='group_add')
|
||||
{ // Expand
|
||||
if(!empty($group)){
|
||||
if($field['type']=='group_add'){ // Expand
|
||||
$groups[$group]['_title']=$field['desc'];
|
||||
}else if($field['type']=='delimer'){
|
||||
// Delimer
|
||||
@@ -89,12 +82,12 @@ class Forms
|
||||
$this->html.='<div class="pad-head"></div>';
|
||||
*/
|
||||
$last_type=$field['type'];
|
||||
|
||||
|
||||
if(isset($field['cur']) && isset($field['def']))
|
||||
{
|
||||
if(empty($field['cur'])) $field['cur']=$field['def'];
|
||||
}
|
||||
|
||||
|
||||
$tpl=$this->getElement($field['type'],$field);
|
||||
$params=array('param','desc','attr','cur');
|
||||
foreach($params as $param)
|
||||
@@ -102,29 +95,28 @@ class Forms
|
||||
if(isset($field[$param]))
|
||||
$tpl=str_replace('${'.$param.'}',$field[$param],$tpl);
|
||||
}
|
||||
|
||||
|
||||
//$value=$field['def'];
|
||||
//if(isset($field['cur']) && !empty($field['cur'])) $value=$field['cur'];
|
||||
$value=$field['cur'];
|
||||
$tpl=str_replace('${value}',$value,$tpl);
|
||||
|
||||
|
||||
$value=$field['def'];
|
||||
$tpl=str_replace('${def}',$value,$tpl);
|
||||
|
||||
|
||||
$required=($field['mandatory']==1)?' required':'';
|
||||
$tpl=str_replace('${required}',$required,$tpl);
|
||||
$arr[$key]=$tpl;
|
||||
|
||||
|
||||
//if($field['param']!='-') $currents[$field['param']]=$field['cur'];
|
||||
//if($field['param']!='-') $defaults[$field['param']]=$field['def'];
|
||||
}
|
||||
|
||||
|
||||
// Выстраиваем форму по карте
|
||||
$this->html='<form class="helper" name="" onsubmit="return false;"><div class="form-fields">';
|
||||
foreach($groups as $key=>$txt)
|
||||
{
|
||||
if(is_numeric($key))
|
||||
{
|
||||
if(is_numeric($key)){
|
||||
$this->html.=$arr[$key];
|
||||
}else if(is_array($txt)){
|
||||
$group_name=key($txt);
|
||||
@@ -134,8 +126,7 @@ class Forms
|
||||
{
|
||||
$group_id=$val1['_group_id'];
|
||||
unset($val1['_group_id']);
|
||||
if(is_array($val1))
|
||||
{
|
||||
if(is_array($val1)){
|
||||
$this->html.='<div class="form-field"><fieldset id="ind-'.$group_id.'"><legend>'.$group_title.'</legend>';
|
||||
foreach($val1 as $key2=>$val2)
|
||||
$this->html.=$arr[$val2];
|
||||
@@ -148,21 +139,19 @@ class Forms
|
||||
}
|
||||
}
|
||||
$this->html.='</div>';
|
||||
|
||||
|
||||
$this->setButtons();
|
||||
$this->html.='</form>';
|
||||
return array('html'=>$this->html); // ,'currents'=>$currents //,'defaults'=>$defaults
|
||||
}
|
||||
|
||||
function getElement($el,$arr=array())
|
||||
{
|
||||
|
||||
function getElement($el,$arr=array()){
|
||||
$tpl='';
|
||||
switch(trim($el))
|
||||
{
|
||||
case 'inputbox':
|
||||
$res=$this->getInputAutofill($arr);
|
||||
if($res===false)
|
||||
{
|
||||
if($res===false){
|
||||
$list='';
|
||||
$datalist='';
|
||||
}else{
|
||||
@@ -190,31 +179,28 @@ class Forms
|
||||
}
|
||||
return $tpl;
|
||||
}
|
||||
|
||||
function getInputAutofill($arr)
|
||||
{
|
||||
if(isset($arr['link']))
|
||||
{
|
||||
|
||||
function getInputAutofill($arr){
|
||||
if(isset($arr['link'])){
|
||||
$id=$arr['link']; //$arr['param'].'-'.
|
||||
$tpl='<datalist id="'.$id.'">';
|
||||
$query="select * from {$arr['link']} order by order_id asc";
|
||||
$opts=$this->db->select($query);
|
||||
if(!empty($opts))foreach($opts as $key=>$opt)
|
||||
{
|
||||
$query="select * from ? order by order_id asc";
|
||||
$opts=$this->db->select($query, array([$arr['link']]));
|
||||
if(!empty($opts))foreach($opts as $key=>$opt){
|
||||
$tpl.='<option>'.$opt['text'].'</option>';
|
||||
}
|
||||
$tpl.='</datalist>';
|
||||
return array('list'=>$id,'datalist'=>$tpl);
|
||||
}else return false;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getSelect($el,$arr)
|
||||
{
|
||||
|
||||
function getSelect($el,$arr){
|
||||
$tpl='<div class="form-field"><select name="${param}">';
|
||||
if(isset($arr['link']))
|
||||
{
|
||||
$query="select * from {$arr['link']} order by order_id asc";
|
||||
$opts=$this->db->select($query);
|
||||
if(isset($arr['link'])){
|
||||
$query="select * from ? order by order_id asc";
|
||||
$opts=$this->db->select($query, array([$arr['link']]));
|
||||
// Пустое поле в списках оказалось ненужным!
|
||||
//array_unshift($opts,array('id'=>0,'text'=>'','order_id'=>-1));
|
||||
if(!empty($opts))foreach($opts as $key=>$opt)
|
||||
@@ -226,16 +212,13 @@ class Forms
|
||||
$tpl.='</select><span class="default val-${def}" title="Click to fill dafault value">[default]</span><span class="small">${desc}</span></div>';
|
||||
return $tpl;
|
||||
}
|
||||
|
||||
function getRadio($el,$arr)
|
||||
{
|
||||
|
||||
function getRadio($el,$arr){
|
||||
$tpl='<div class="form-field"><fieldset><legend>${desc}</legend>';
|
||||
if(isset($arr['link']))
|
||||
{
|
||||
$query="select * from {$arr['link']} order by order_id asc";
|
||||
$opts=$this->db->select($query);
|
||||
if(!empty($opts))foreach($opts as $key=>$opt)
|
||||
{
|
||||
if(isset($arr['link'])){
|
||||
$query="select * from ? order by order_id asc";
|
||||
$opts=$this->db->select($query, array([$arr['link']]));
|
||||
if(!empty($opts))foreach($opts as $key=>$opt){
|
||||
$checked=($opt['id']==$arr['cur'])?' checked':'';
|
||||
$tpl.='<label for="${param}-'.$opt['id'].'">'.$opt['text'].':</label><input type="radio" name="${param}" value="'.$opt['id'].'" id="${param}-'.$opt['id'].'"'.$checked.' />';
|
||||
}
|
||||
@@ -243,9 +226,8 @@ class Forms
|
||||
$tpl.='</fieldset></div>';
|
||||
return $tpl;
|
||||
}
|
||||
|
||||
function setButtons($arr=array())
|
||||
{
|
||||
|
||||
function setButtons($arr=array()){
|
||||
$this->html.='<div class="buttons"><input type="button" value="Apply" class="save-helper-values" title="Save and apply params" /> <input type="button" value="Clear" class="clear-helper" title="Restore loaded params" /></div>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$db=new Db('base','authkey');
|
||||
$res=$db->select('SELECT idx,name,authkey FROM authkey;');
|
||||
$res=$db->select('SELECT idx,name,authkey FROM authkey;', []);
|
||||
|
||||
$html='';
|
||||
if($res!==false)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$html='';
|
||||
|
||||
$db=new Db('base','nodes');
|
||||
$nodes=$db->select('select nodename,ip from nodelist order by nodename desc');
|
||||
$nodes=$db->select('select nodename,ip from nodelist order by nodename desc', []);
|
||||
$nodes[]=array('nodename'=>'local');
|
||||
$nodes=array_reverse($nodes);
|
||||
|
||||
@@ -14,7 +14,7 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
$db1=new Db('base',$node['nodename']);
|
||||
if($db1!==false)
|
||||
{
|
||||
$bases=$db1->select("SELECT idx,platform,name,arch,targetarch,ver,stable,elf,date FROM bsdbase order by cast(ver AS int)");
|
||||
$bases=$db1->select("SELECT idx,platform,name,arch,targetarch,ver,stable,elf,date FROM bsdbase order by cast(ver AS int)", []);
|
||||
|
||||
$num=$nth & 1;
|
||||
if(!empty($bases)) foreach($bases as $base)
|
||||
|
||||
@@ -4,7 +4,7 @@ $html='';
|
||||
//if($hres!==false) $thead=$hres[1];
|
||||
|
||||
$db=new Db('base','nodes');
|
||||
$res=$db->select('select nodename from nodelist');
|
||||
$res=$db->select('select nodename from nodelist', []);
|
||||
$nodes=array('local');
|
||||
if(!empty($res))foreach($res as $val) $nodes[]=$val['nodename'];
|
||||
|
||||
@@ -19,7 +19,7 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
$db1=new Db('base',$node);
|
||||
if($db1!==false)
|
||||
{
|
||||
$bhyves=$db1->select("SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden,protected,bhyve_vnc_tcp_bind FROM bhyve where hidden!=1 order by jname asc;");
|
||||
$bhyves=$db1->select("SELECT jname,vm_ram,vm_cpus,vm_os_type,hidden,protected,bhyve_vnc_tcp_bind FROM bhyve where hidden!=1 order by jname asc;", []);
|
||||
//$allnodes[$node]=$bhyves;
|
||||
|
||||
$num=$nth & 1;
|
||||
|
||||
@@ -57,7 +57,7 @@ if(!empty($images)) foreach($images as $item)
|
||||
$filesize=$this->fileSizeConvert($size,1024,true);
|
||||
|
||||
$query="select count(*) as busy from taskd where status<2 and jname='${item['jname']}'";
|
||||
$busy=$this->_db_tasks->selectAssoc($query);
|
||||
$busy=$this->_db_tasks->selectOne($query, []);
|
||||
$jstatus='';
|
||||
$jbusy='';
|
||||
if($busy['busy']==1)
|
||||
|
||||
@@ -5,6 +5,8 @@ if(!empty($this->_vars['hash']))
|
||||
return;
|
||||
}
|
||||
|
||||
require_once("../php/cbsd.php");
|
||||
|
||||
$sys_helpers=array();
|
||||
// 'network','cbsd','bhyvenet','general','zfsinstall','userspw','natcfg','jconstruct',
|
||||
//);
|
||||
@@ -15,7 +17,7 @@ if($db!==false)
|
||||
$query="select module from sys_helpers_list";
|
||||
if(!$db->error)
|
||||
{
|
||||
$res=$db->select($query);
|
||||
$res=$db->select($query, []);
|
||||
if(!empty($res))
|
||||
{
|
||||
foreach($res as $r) $sys_helpers[]=$r['module'];
|
||||
@@ -26,7 +28,7 @@ if($db!==false)
|
||||
|
||||
$html='';
|
||||
$arr=array();
|
||||
$res=$this->cbsd_cmd('forms header=0');
|
||||
$res=CBSD::run('forms header=0', []);
|
||||
if($res['retval']==0)
|
||||
{
|
||||
$empty_logo='/images/logo/empty.png';
|
||||
@@ -46,14 +48,14 @@ if($res['retval']==0)
|
||||
$file_name=$db->getFileName();
|
||||
if(!file_exists($file_name))
|
||||
{
|
||||
$res=$this->cbsd_cmd('forms module='.$item.' inter=0');
|
||||
$res=CBSD::run('forms module=%s inter=0',[$item]);
|
||||
if($res['retval']==0)
|
||||
{
|
||||
$db=new Db('helper',$item);
|
||||
}
|
||||
}
|
||||
}
|
||||
if($db!==false && !$db->error) $res=$db->selectAssoc("select longdesc from system limit 1");
|
||||
if($db!==false && !$db->error) $res=$db->selectOne("select longdesc from system", []);
|
||||
|
||||
if(isset($res['longdesc'])) $description=$res['longdesc']; else $description=$this->translate('no data').'… ('.$file_name.')';
|
||||
}else{
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
<?php
|
||||
|
||||
require_once("../php/cbsd.php");
|
||||
|
||||
$hash=$this->url_hash; //=preg_replace('/^#/','',$this->_vars['hash']);
|
||||
|
||||
$db_path=false;
|
||||
if(!isset($this->_vars['db_path']))
|
||||
{
|
||||
//$db_path=$this->_vars['db_path'];
|
||||
$res=$this->cbsd_cmd('make_tmp_helper module='.$hash);
|
||||
$res=CBSD::run('make_tmp_helper module=%s', [$hash]);
|
||||
if($res['retval']==0)
|
||||
{
|
||||
$db_path=$res['message'];
|
||||
|
||||
@@ -13,7 +13,7 @@ $html='';
|
||||
//if($hres!==false) $thead=$hres[1];
|
||||
|
||||
$db=new Db('base','nodes');
|
||||
$res=$db->select('select nodename from nodelist');
|
||||
$res=$db->select('select nodename from nodelist', []);
|
||||
$nodes=array('local');
|
||||
if(!empty($res))foreach($res as $val) $nodes[]=$val['nodename'];
|
||||
|
||||
@@ -28,7 +28,7 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
$db1=new Db('base',$node);
|
||||
if($db1!==false)
|
||||
{
|
||||
$jails=$db1->select("SELECT jname,ip4_addr,status,protected FROM jails WHERE emulator!='bhyve' and hidden!=1 order by jname asc;");
|
||||
$jails=$db1->select("SELECT jname,ip4_addr,status,protected FROM jails WHERE emulator!='bhyve' and hidden!=1 order by jname asc;", []);
|
||||
$allnodes[$node]=$jails;
|
||||
|
||||
$num=$nth & 1;
|
||||
|
||||
@@ -10,7 +10,7 @@ if(empty($hash))
|
||||
$query="select module from jails_helpers_list";
|
||||
if(!$db->error)
|
||||
{
|
||||
$res=$db->select($query);
|
||||
$res=$db->select($query, []);
|
||||
if(!empty($res))
|
||||
{
|
||||
foreach($res as $r) $jails_helpers[]=$r['module'];
|
||||
@@ -24,7 +24,7 @@ if(empty($hash))
|
||||
$db=new Db('helper',array('jname'=>$jail_name,'helper'=>$helper));
|
||||
if(!$db->error) // !error — значит хелпер установлен
|
||||
{
|
||||
$res=$db->selectAssoc("select longdesc from system limit 1");
|
||||
$res=$db->selectOne("select longdesc from system", []);
|
||||
if(isset($res['longdesc'])) $description=$res['longdesc']; else $description=$this->translate('no data').'… ('.$file_name.')';
|
||||
$lst[]=array('helper'=>$helper,'description'=>$description);
|
||||
}else{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$db=new Db('base','storage_media');
|
||||
$res=$db->select('SELECT idx,name,path,jname FROM media where type="iso"');
|
||||
$res=$db->select('SELECT idx,name,path,jname FROM media where type="iso"', []);
|
||||
|
||||
$html='';
|
||||
if($res!==false)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
//echo '{}';
|
||||
//$ips=$db1->select("select group_concat(ip,'; ') from nodelist"); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> nodes.php
|
||||
//$ips=$db1->select("select group_concat(ip,'; ') from nodelist", []); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> nodes.php
|
||||
$included_result_array=array();
|
||||
@@ -14,7 +14,7 @@ $res_array=array(
|
||||
|
||||
$nodenames=array('local');
|
||||
$db=new Db('base','nodes');
|
||||
$nodes=$db->select('select nodename,ip from nodelist');
|
||||
$nodes=$db->select('select nodename,ip from nodelist', []);
|
||||
if(!empty($nodes))foreach($nodes as $node)
|
||||
{
|
||||
$idle=$this->check_locktime($node['ip']);
|
||||
@@ -39,10 +39,10 @@ if(!empty($nodenames))foreach($nodenames as $name)
|
||||
exit;
|
||||
}
|
||||
|
||||
$jcounts=$ndb->selectAssoc('SELECT COUNT(*) as count FROM jails;');
|
||||
$jcounts=$ndb->selectOne('SELECT COUNT(*) as count FROM jails;', []);
|
||||
$res_array['num-jails']+=$jcounts['count'];
|
||||
|
||||
$counts=$ndb->select('SELECT ncpu,physmem,cpufreq FROM local;');
|
||||
$counts=$ndb->select('SELECT ncpu,physmem,cpufreq FROM local;', []);
|
||||
if(!empty($counts))foreach($counts as $cel)
|
||||
{
|
||||
$res_array['num-cores']+=$cel['ncpu'];
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
$html='';
|
||||
|
||||
$db=new Db('base','nodes');
|
||||
$nodes=$db->select('select nodename,ip from nodelist order by nodename desc');
|
||||
$nodes=$db->select('select nodename,ip from nodelist order by nodename desc', []);
|
||||
$nodes[]=array('nodename'=>'local');
|
||||
$nodes=array_reverse($nodes);
|
||||
|
||||
@@ -14,7 +14,7 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
$db1=new Db('base',$node['nodename']);
|
||||
if($db1!==false)
|
||||
{
|
||||
$bases=$db1->select("SELECT idx,name,platform,ver,rev,date FROM bsdsrc ORDER BY CAST(ver AS int)");
|
||||
$bases=$db1->select("SELECT idx,name,platform,ver,rev,date FROM bsdsrc ORDER BY CAST(ver AS int)", []);
|
||||
|
||||
$num=$nth & 1;
|
||||
if(!empty($bases)) foreach($bases as $base)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
$username=$this->_user_info['username'];
|
||||
|
||||
$db=new Db('base','cbsdtaskd');
|
||||
$res=$db->select("SELECT id,st_time,end_time,cmd,status,errcode,logfile FROM taskd WHERE owner='${username}' ORDER BY id DESC");
|
||||
$res=$db->select("SELECT id,st_time,end_time,cmd,status,errcode,logfile FROM taskd WHERE owner='?' ORDER BY id DESC", array([$username]));
|
||||
|
||||
$html='';
|
||||
if($res!==false)
|
||||
|
||||
@@ -16,7 +16,7 @@ $html='';
|
||||
$db=new Db('clonos');
|
||||
if($db!==false)
|
||||
{
|
||||
$res=$db->select("select id,username,first_name,last_name,date_joined,last_login,is_active from auth_user order by date_joined desc");
|
||||
$res=$db->select("select id,username,first_name,last_name,date_joined,last_login,is_active from auth_user order by date_joined desc", []);
|
||||
}
|
||||
|
||||
$nth=0;
|
||||
|
||||
@@ -4,7 +4,7 @@ $html='';
|
||||
$db=new Db('base','local');
|
||||
if($db!==false)
|
||||
{
|
||||
$res=$db->select("select id,name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus,owner from vmpackages order by name asc");
|
||||
$res=$db->select("select id,name,description,pkg_vm_ram,pkg_vm_disk,pkg_vm_cpus,owner from vmpackages order by name asc", []);
|
||||
}
|
||||
|
||||
$nth=0;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$db=new Db('base','vpnet');
|
||||
$res=$db->select('SELECT idx,name,vpnet FROM vpnet');
|
||||
$res=$db->select('SELECT idx,name,vpnet FROM vpnet', []);
|
||||
|
||||
$html='';
|
||||
if($res!==false)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
|
||||
require_once("../php/cbsd.php");
|
||||
|
||||
$cmd='';
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] === 'POST')
|
||||
@@ -41,9 +43,7 @@ if($_SERVER['REQUEST_METHOD'] === 'POST')
|
||||
$status = 'ok'; //'Successfully uploaded!';
|
||||
if($cmd=='import')
|
||||
{
|
||||
$username=$clonos->getUserName();
|
||||
$command='task owner='.$username.' mode=new /usr/local/bin/cbsd jimport jname='.$filename.' inter=0';
|
||||
$res=$clonos->cbsd_cmd($command);
|
||||
$res=CBSD::run('task owner=%s mode=new /usr/local/bin/cbsd jimport jname=%s' inter=0', [$clonos->getUserName(), $filename]);
|
||||
}
|
||||
}else{
|
||||
$status = 'Upload Fail: Unknown error occurred!';
|
||||
|
||||
Reference in New Issue
Block a user