mirror of
https://github.com/optim-enterprises-bv/control-pane.git
synced 2025-10-29 17:12:20 +00:00
wip
This commit is contained in:
@@ -147,6 +147,12 @@ class ClonOS
|
||||
case 'bhyveAdd':
|
||||
echo json_encode($this->bhyveAdd());
|
||||
return;break;
|
||||
case 'bhyveEdit':
|
||||
echo json_encode($this->bhyveEdit());
|
||||
return;break;
|
||||
case 'bhyveEditVars':
|
||||
echo json_encode($this->bhyveEditVars());
|
||||
return;break;
|
||||
case 'bhyveObtain':
|
||||
echo json_encode($this->bhyveObtain());
|
||||
return;break;
|
||||
@@ -762,12 +768,27 @@ class ClonOS
|
||||
function jailEdit()
|
||||
{
|
||||
$form=$this->_vars['form_data'];
|
||||
print_r($form);
|
||||
|
||||
$str=array();
|
||||
$jname=$form['jname'];
|
||||
$arr=array('host_hostname','ip4_addr','allow_mount','interface','mount_ports','astart','vnet');
|
||||
foreach($arr as $a)
|
||||
{
|
||||
if(isset($form[$a]))
|
||||
{
|
||||
$val=$form[$a];
|
||||
if($val=='on') $val=1;
|
||||
$str[]=$a.'='.$val;
|
||||
}else{
|
||||
$str[]=$a.'=0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//cbsd jset jname=XXX ip4_addr=192.168.0.1 astart=1 baserw=0
|
||||
//$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jstart inter=0 jname='.$name);
|
||||
$cmd='jset jname='.$jname.' '.join(' ',$str);
|
||||
$res=$this->cbsd_cmd($cmd);
|
||||
$res['mode']='jailEdit';
|
||||
$res['form']=$form;
|
||||
return $res;
|
||||
}
|
||||
|
||||
function jailStart($name)
|
||||
@@ -791,6 +812,62 @@ class ClonOS
|
||||
return $res;
|
||||
}
|
||||
|
||||
function bhyveEditVars()
|
||||
{
|
||||
$form=$this->_vars['form_data'];
|
||||
if(!isset($form['jail_id'])) return array('error'=>true,'error_message'=>'Bad jail id!');
|
||||
|
||||
$db=new Db('base','local');
|
||||
if($db!==false)
|
||||
{
|
||||
$query="SELECT b.jname as vm_name,vm_cpus,vm_ram,vm_vnc_port as vnc_port,interface FROM bhyve as b inner join jails as j on b.jname=j.jname and b.jname='{$form['jail_id']}';";
|
||||
//$query="SELECT jname as vm_name,vm_cpus,vm_ram,vm_vnc_port as vnc_port FROM bhyve WHERE jname='{$form['jail_id']}';";
|
||||
$res['vars']=$db->selectAssoc($query);
|
||||
|
||||
$res['vars']['vm_ram']=$this->fileSizeConvert($res['vars']['vm_ram']);
|
||||
}
|
||||
|
||||
$res['error']=false;
|
||||
$res['dialog']=$form['dialog'];
|
||||
$res['jail_id']=$form['jail_id'];
|
||||
return $res;
|
||||
}
|
||||
|
||||
function bhyveEdit()
|
||||
{
|
||||
$form=$this->_vars['form_data'];
|
||||
|
||||
$str=array();
|
||||
$jname=$form['jname'];
|
||||
|
||||
$ram=$form['vm_ram'];
|
||||
$ram_tmp=$ram;
|
||||
$ram=str_replace(' ','',$ram);
|
||||
$ram=str_ireplace('mb','m',$ram);
|
||||
$ram=str_ireplace('gb','g',$ram);
|
||||
$form['vm_ram']=$ram;
|
||||
|
||||
$arr=array('vm_cpus','vm_ram','vnc_port','interface');
|
||||
foreach($arr as $a)
|
||||
{
|
||||
if(isset($form[$a]))
|
||||
{
|
||||
$val=$form[$a];
|
||||
if($val=='on') $val=1;
|
||||
$str[]=$a.'='.$val;
|
||||
}else{
|
||||
$str[]=$a.'=0';
|
||||
}
|
||||
}
|
||||
|
||||
$form['vm_ram']=$ram_tmp;
|
||||
|
||||
$cmd='bset jname='.$jname.' '.join(' ',$str);
|
||||
$res=$this->cbsd_cmd($cmd);
|
||||
$res['mode']='bhyveEdit';
|
||||
$res['form']=$form;
|
||||
return $res;
|
||||
}
|
||||
function bhyveAdd()
|
||||
{
|
||||
$form=$this->_vars['form_data'];
|
||||
@@ -1272,8 +1349,8 @@ class ClonOS
|
||||
$fp=fopen($log_file,'r');
|
||||
if($fp)
|
||||
{
|
||||
fseek($fp,-204800,SEEK_END);
|
||||
$html='<strong>Last 2 KB of big file data:<strong><hr />'.fread($fp,204800);
|
||||
fseek($fp,-1000,SEEK_END); //204800
|
||||
$html='<strong>Last 1000 Bytes of big file data:<strong><hr />'.fread($fp,1000); //204800
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
@@ -1345,7 +1422,8 @@ class ClonOS
|
||||
$res=$this->cbsd_cmd("vm_vncwss jname={$jname} permit={$this->_client_ip}");
|
||||
$res=$this->_db_local->selectAssoc('select nodeip from local');
|
||||
$nodeip=$res['nodeip'];
|
||||
if(strlen($nodeip)<10) $nodeip='127.0.0.1';
|
||||
// need for IPv4/IPv6 regex here, instead of strlen
|
||||
if(strlen($nodeip)<7) $nodeip='127.0.0.1';
|
||||
header('Location: http://'.$nodeip.':6080/vnc_auto.html?host='.$nodeip.'&port=6080');
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -614,16 +614,12 @@ dialog::backdrop,
|
||||
-webkit-backdrop-filter:blur(5px);
|
||||
z-index:1000;
|
||||
}
|
||||
dialog.new h1 .edit,
|
||||
dialog.new .buttons .edit,
|
||||
dialog.edit h1 .new,
|
||||
dialog.edit .buttons .new {
|
||||
dialog.new .edit,
|
||||
dialog.edit .new {
|
||||
display:none;
|
||||
}
|
||||
dialog.new h1 .new,
|
||||
dialog.new .buttons .new,
|
||||
dialog.edit h1 .edit,
|
||||
dialog.edit .buttons .edit {
|
||||
dialog.new .new,
|
||||
dialog.edit .edit {
|
||||
display:inline-block;
|
||||
}
|
||||
.dialog-close:before {
|
||||
|
||||
@@ -6,11 +6,14 @@ err_messages={
|
||||
};
|
||||
</script>
|
||||
<dialog id="bhyve-new" class="window-box">
|
||||
<h1><?php echo $this->translate('Create Virtual Machine');?></h1>
|
||||
<h1>
|
||||
<span class="new"><?php echo $this->translate('Create Virtual Machine');?></span>
|
||||
<span class="edit"><?php echo $this->translate('Edit Virtual Machine');?></span>
|
||||
</h1>
|
||||
<h2><?php echo $this->translate('Virtual Machine Settings');?></h2>
|
||||
<form class="win" method="post" id="bhyveSettings" onsubmit="return false;">
|
||||
<div class="window-content">
|
||||
<p>
|
||||
<p class="new">
|
||||
<span class="field-name"><?php echo $this->translate('VM OS profile');?>:</span>
|
||||
<select name="vm_os_profile">
|
||||
<?php echo $this->config->os_types_create(); ?>
|
||||
@@ -18,11 +21,11 @@ err_messages={
|
||||
</p>
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('Virtual Machine name');?>:</span>
|
||||
<input type="text" name="vm_name" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{1,}" required="required" />
|
||||
<input type="text" name="vm_name" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{1,}" required="required" class="edit-disable" />
|
||||
</p>
|
||||
<p>
|
||||
<p class="new">
|
||||
<span class="field-name"><?php echo $this->translate('VM Image size');?>:</span>
|
||||
<input type="text" name="vm_size" value="" pattern="^[0-9]+g$" placeholder="10g" required="required" />
|
||||
<input type="text" name="vm_size" value="" pattern="^[0-9]+g$" placeholder="10g" required="required" class="edit-disable" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('VM CPUs');?>:</span>
|
||||
@@ -30,7 +33,7 @@ err_messages={
|
||||
</p>
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('VM RAM');?>:</span>
|
||||
<input type="text" name="vm_ram" value="" pattern="^[0-9]+g$" placeholder="1g" required="required" />
|
||||
<input type="text" name="vm_ram" value="" pattern="^[0-9]+\s*(g|G|gb|GB|mb|MB|m|M)$" placeholder="1g" required="required" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('VNC PORT');?>:</span>
|
||||
@@ -50,7 +53,8 @@ err_messages={
|
||||
</div>
|
||||
</form>
|
||||
<div class="buttons">
|
||||
<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" />
|
||||
<input type="button" value="<?php echo $this->translate('Create');?>" class="new button ok-but" />
|
||||
<input type="button" value="<?php echo $this->translate('Save');?>" class="edit button ok-but" />
|
||||
<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" />
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
@@ -17,7 +17,7 @@ err_messages={
|
||||
<div class="window-content">
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('Jail name');?>:</span>
|
||||
<input type="text" name="jname" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{2,}" required="required" />
|
||||
<input type="text" name="jname" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{2,}" required="required" class="edit-disable" />
|
||||
</p>
|
||||
<p>
|
||||
<span class="field-name"><?php echo $this->translate('Hostname');?> (FQDN):</span>
|
||||
@@ -30,11 +30,11 @@ err_messages={
|
||||
<span class="field-name"><?php echo $this->translate('IP address');?>:</span>
|
||||
<input type="text" name="ip4_addr" value="DHCP" pattern="^DHCP$|^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" />
|
||||
</p>
|
||||
<p>
|
||||
<p class="new">
|
||||
<span class="field-name"><?php echo $this->translate('Root password');?>:</span>
|
||||
<input type="password" name="user_pw_root" value="" placeholder="3-20 symbols" pattern=".{3,20}" maxlength="20"></input>
|
||||
</p>
|
||||
<p>
|
||||
<p class="new">
|
||||
<span class="field-name"><?php echo $this->translate('Root password (again)');?>:</span>
|
||||
<input type="password" name="user_pw_root_1" value="" placeholder="3-20 symbols" pattern=".{3,20}" maxlength="20"></input>
|
||||
</p>
|
||||
@@ -53,7 +53,7 @@ err_messages={
|
||||
<br />
|
||||
<input type="checkbox" name="vnet" id="vnet-id" /><label for="vnet-id"> <?php echo $this->translate('Virtual network stack (VIMAGE)');?></label>
|
||||
</p>
|
||||
<p>
|
||||
<p class="new">
|
||||
<span class="field-name"><?php echo $this->translate('Enabled services');?>:</span>
|
||||
<input type="checkbox" name="serv-ftpd" value="ftpd" id="esrv0" class="inline"><label for="esrv0">ftpd</label></checkbox>
|
||||
<input type="checkbox" name="serv-sshd" value="sshd" id="esrv1" class="inline"><label for="esrv1">sshd</label></checkbox>
|
||||
|
||||
@@ -169,6 +169,8 @@ var clonos={
|
||||
$(dlg).removeClass('edit').addClass('new');
|
||||
$(dlg).prop('mode','new');
|
||||
}
|
||||
$('dialog#'+id+'.edit .edit-disable, dialog#'+id+'.new .new-disable').prop('disabled',true);
|
||||
$('dialog#'+id+'.edit .new-disable, dialog#'+id+'.new .edit-disable').prop('disabled',false);
|
||||
|
||||
if($('span.close-but',dlg).length==0)
|
||||
$('h1',dlg).before('<span class="close-but">×</span>');
|
||||
@@ -289,6 +291,7 @@ var clonos={
|
||||
this.tmp_jail_info[jid]={};
|
||||
this.tmp_jail_info[jid]['runasap']=$('#astart-id:checked').length>0?1:0;
|
||||
var posts=$('form#jailSettings').serializeArray();
|
||||
if(mode=='edit') posts.push({'name':'jname','value':jid});
|
||||
var jmode=(mode=='edit'?'jailEdit':'jailAdd');
|
||||
this.loadData(jmode,$.proxy(this.onJailAdd,this),posts);
|
||||
}
|
||||
@@ -297,7 +300,7 @@ var clonos={
|
||||
var jid=$('form#bhyveSettings input[name="vm_name"]').val();
|
||||
if(typeof this.trids!='undefined' && this.trids.length>0)
|
||||
{
|
||||
if(this.trids.indexOf(jid)!=-1)
|
||||
if(mode!='edit' && this.trids.indexOf(jid)!=-1)
|
||||
{
|
||||
var inp=$('form#bhyveSettings input[name="vm_name"]').get(0);
|
||||
inp.setCustomValidity(this.translate('This name is already exists!'));
|
||||
@@ -308,7 +311,9 @@ var clonos={
|
||||
this.tmp_jail_info[jid]={};
|
||||
this.tmp_jail_info[jid]['runasap']=0; // исправить на реальные данные!
|
||||
var posts=$('form#bhyveSettings').serializeArray();
|
||||
this.loadData('bhyveAdd',$.proxy(this.onJailAdd,this),posts);
|
||||
if(mode=='edit') posts.push({'name':'jname','value':jid});
|
||||
var bmode=(mode=='edit'?'bhyveEdit':'bhyveAdd');
|
||||
this.loadData(bmode,$.proxy(this.onJailAdd,this),posts);
|
||||
}
|
||||
if(id=='bhyve-obtain' && $('form#bhyveObtSettings').length>0)
|
||||
{
|
||||
@@ -345,6 +350,22 @@ var clonos={
|
||||
|
||||
}
|
||||
},
|
||||
fillFormDataOnChange:function(data)
|
||||
{
|
||||
if(typeof data.form!='undefined')
|
||||
{
|
||||
if(typeof data.form['jname']!='undefined')
|
||||
{
|
||||
var jname=data.form['jname'];
|
||||
delete(data.form['jname']);
|
||||
for(k in data.form)
|
||||
{
|
||||
var v=data.form[k];
|
||||
$('tr#'+jname+' td.'+k).html(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
onJailAdd:function(data)
|
||||
{
|
||||
try{
|
||||
@@ -357,6 +378,11 @@ var clonos={
|
||||
{
|
||||
switch(data.mode)
|
||||
{
|
||||
case 'jailEdit':
|
||||
case 'bhyveEdit':
|
||||
this.dialogClose();
|
||||
this.fillFormDataOnChange(data);
|
||||
return;break;
|
||||
case 'jailAdd':
|
||||
var table='jailslist';
|
||||
var operation='jcreate';
|
||||
@@ -1502,6 +1528,10 @@ var clonos={
|
||||
var dialog='jail-settings';
|
||||
var mode='jailEditVars';
|
||||
break;
|
||||
case 'bhyveslist':
|
||||
var dialog='bhyve-new';
|
||||
var mode='bhyveEditVars';
|
||||
break;
|
||||
}
|
||||
|
||||
this.DDMenuClose();
|
||||
|
||||
@@ -55,6 +55,8 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
foreach($vars as $var=>$val)
|
||||
$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl);
|
||||
|
||||
if($node!='local') $html_tpl=str_replace('<span class="icon-cog"></span>','',$html_tpl);
|
||||
|
||||
$html.=$html_tpl;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<tr class="#nth-num##desktop##maintenance#" id="#jname#">
|
||||
<td>#node#</td>
|
||||
<td class="txtleft">#jname#</td>
|
||||
<td class="txtleft">#vm_ram#</td>
|
||||
<td>#vm_cpus#</td>
|
||||
<td class="txtleft vm_ram">#vm_ram#</td>
|
||||
<td class="vm_cpus">#vm_cpus#</td>
|
||||
<td>#vm_os_type#</td>
|
||||
<td class="jstatus">#vm_status#</td>
|
||||
<td class="ops" width="5"><span class="icon-cnt"><span class="icon-#icon#"></span></span></td>
|
||||
|
||||
@@ -49,6 +49,8 @@ if(!empty($nodes))foreach($nodes as $node)
|
||||
foreach($vars as $var=>$val)
|
||||
$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl);
|
||||
|
||||
if($node!='local') $html_tpl=str_replace('<span class="icon-cog"></span>','',$html_tpl);
|
||||
|
||||
$html.=$html_tpl;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<tr class="#nth-num##desktop##maintenance#" id="#jname#">
|
||||
<td class="wordwreck">#node#</td>
|
||||
<td class="txtleft">#jname#</td>
|
||||
<td class="txtleft wordwreck">#ip4_addr#</td>
|
||||
<td class="txtleft wordwreck ip4_addr">#ip4_addr#</td>
|
||||
<td class="jstatus">#jstatus#</td>
|
||||
<td class="ops" width="5"><span class="icon-cnt"><span class="icon-#icon#"></span></span></td>
|
||||
<td width="5" class="op-settings"><span class="icon-cog"></span></td>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<h1>SQLite admin interface</h1>
|
||||
|
||||
<p><a href="https://clonos.bsdstore.ru/phpliteadmin.php" target="_blank">Open SQLite Admin interface</a></p>
|
||||
<p><a href="/phpliteadmin.php" target="_blank">Open SQLite Admin interface</a></p>
|
||||
@@ -1,3 +1,3 @@
|
||||
<h1>Интерфейс админинстрирования SQLite</h1>
|
||||
|
||||
<p><a href="https://clonos.bsdstore.ru/phpliteadmin.php" target="_blank">Открыть веб-интерфейс SQLite Admin</a></p>
|
||||
<p><a href="/phpliteadmin.php" target="_blank">Открыть веб-интерфейс SQLite Admin</a></p>
|
||||
Reference in New Issue
Block a user