nlvmi/web/index.php

148 lines
5.4 KiB
PHP
Raw Normal View History

2018-08-11 20:07:23 +02:00
<?php
function clean($str) {
$search = array('&' , '"' , "'" , '<' , '>' );
$replace = array('&amp;', '&quot;', '&#39;', '&lt;', '&gt;' );
$str = str_replace($search, $replace, $str);
return $str;
}
//read config file
$configfile = new SplFileObject("/etc/nlvmi/nlvmi.conf");
while (!$configfile->eof()) {
$line = $configfile->fgets();
if (!preg_match('/^#/', $line)){
if (!preg_match('/^$/', $line)){
if (preg_match('/=/', $line)){
$configparam = explode('=', $line);
$p = rtrim($configparam[1]);
//echo "B$p";
$config[$configparam[0]]=str_replace('"', '', $p);
}
}
}
}
$file = null;
//check db connection
if ($config['DATABASETYPE']=="sqlite"){
$db_handle = new SQLite3($config['SQLITEFILE']);
$query = "SELECT name FROM sqlite_master WHERE type='table' AND name='vms';";
$db_handle->exec($query);
$result = $db_handle->query($query);
$row = $result->fetchArray();
if (!$row['name']=="vms"){
echo "DB connection failed!";
exit;
}
}
2018-08-12 15:09:47 +02:00
include('header.php');
$mode="";
2018-08-11 20:07:23 +02:00
//form for edit and new vms
if (isset($_REQUEST['edit'])){
2018-08-12 15:09:47 +02:00
$mode="editvm";
2018-08-11 20:07:23 +02:00
$formname="editvm";
$eid=clean($_REQUEST['edit']);
$sql="SELECT * FROM vms WHERE id='$eid'";
$res = $db_handle->query($sql);
$editid = "<input type=hidden name=editid value=$eid>";
while ($row = $res->fetchArray(SQLITE3_ASSOC)){
$e = $row;
}
} elseif(isset($_REQUEST['newvm'])) {
$formname="newvm";
$editid="";
2018-08-12 15:09:47 +02:00
$mode="newvm";
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
2018-08-11 20:07:23 +02:00
if (isset($formname)){
echo "<h2>$formname</h2></br>";
echo "<form name=$formname action=? method=post>";
$res = $db_handle->query('PRAGMA table_info(vms)');
while ($col = $res->fetchArray(SQLITE3_ASSOC)) {
$arrColnames[]=$col['name'];
}
for ($col=0; $col <count($arrColnames); $col++){
if ($arrColnames[$col]!="id"){
if ($arrColnames[$col] == "bootoption"){
2018-08-12 15:09:47 +02:00
echo "<div class=row><div class=col-md-1 style=text-align:right>bootoption</div><div class=col-md-2><div class=dropdown><button class=\"btn btn-secondary dropdown-toggle\" type=button id=bootoptionbutton data-toggle=dropdown aria-haspopup=true aria-expanded=false>C</button>";
echo "<div class=dropdown-menu aria-labelledby=bootoptionbutton>";
echo "<a class=dropdown-item href=\"javascript:dropdown('bootoptionbutton','C')\">C</a>";
echo "<a class=dropdown-item href=\"javascript:dropdown('bootoptionbutton','D')\">D</a>";
echo "</div></div></div></div><input type=hidden id=bootoptionbuttonh name=bootoption value=c>";
// echo "$arrColnames[$col] <select name=bootoption><option value=c>C</option><option value=d>D</option></select></br>";
2018-08-11 20:07:23 +02:00
} elseif ($arrColnames[$col] == "arch"){
2018-08-12 15:09:47 +02:00
echo "<div class=row><div class=col-md-1 style=text-align:right>bootoption</div><div class=col-md-2><div class=dropdown><button class=\"btn btn-secondary dropdown-toggle\" type=button id=archbutton data-toggle=dropdown aria-haspopup=true aria-expanded=false>x86_64</button>";
echo "<div class=dropdown-menu aria-labelledby=archbutton>";
echo "<a class=dropdown-item href=\"javascript:dropdown('archbutton','x86_64')\">x86_64</a>";
echo "</div></div></div></div><input type=hidden id=archbuttonh name=arch value=x86_64>";
// echo "$arrColnames[$col] <select name=arch><option value=qemu-system-x86_64>x86_64</option></select></br>";
2018-08-11 20:07:23 +02:00
} else {
if (isset($e[$arrColnames[$col]])){
$val = $e[$arrColnames[$col]];
} else {
$val = "";
}
2018-08-12 15:09:47 +02:00
echo "<div class=row><div class=col-md-1 style=text-align:right>$arrColnames[$col]</div><div class=col-md-2><input class=form-control type=text name=$arrColnames[$col] value=$val></div></div>";
2018-08-11 20:07:23 +02:00
}
}
}
2018-08-12 15:09:47 +02:00
echo "$editid<input type=hidden name=mode value=$formname><input class=\"btn btn-primary\" type=submit></form>";
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
2018-08-11 20:07:23 +02:00
//insert in db
if(isset($_REQUEST['mode'])){
2018-08-12 15:09:47 +02:00
if($_REQUEST['mode']=="newvm"){
$mode="newvm";
$sqls="INSERT INTO vms ";
$sqlc="(";
$sqlv=" VALUES (";
foreach(array_keys($_REQUEST) as $rkey){
if ($rkey!="mode"){
$rvalue = clean($_REQUEST[$rkey]);
$sqlc .= "$rkey,";
$sqlv .= "'$rvalue',";
}
}
$sqlc = rtrim($sqlc, ',');
$sqlc.=")";
$sqlv = rtrim($sqlv, ',');
$sqlv.=")";
$sql = "$sqls$sqlc$sqlv";
echo $sql;
$result = $db_handle->exec($sql);
} elseif ($_REQUEST['mode']=="editvm"){
$mode="editvm";
$sql="UPDATE vms SET ";
foreach(array_keys($_REQUEST) as $rkey){
if (($rkey!="mode")&&($rkey!="editid")){
$rvalue = clean($_REQUEST[$rkey]);
$sql .= " $rkey='$rvalue',";
}
}
$sql = rtrim($sql, ',');
$eid=clean($_REQUEST['editid']);
$sql .= " WHERE id='$eid'";
$result = $db_handle->exec($sql);
2018-08-11 20:07:23 +02:00
}
}
2018-08-12 15:09:47 +02:00
if($mode!="newvm"){
echo "<a href=?newvm>Create a new VM</a></br>";
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
//getting vms from DB
$sql="SELECT * FROM vms";
$res = $db_handle->query($sql);
echo "<div class=row>";
while ($row = $res->fetchArray(SQLITE3_ASSOC)){
echo "<div class=col style=\"border:solid 1px;\">$row[vmname]</br><a href=?edit=$row[id]>edit</a></div>";
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
echo "</div></div></body></html>";
2018-08-11 20:07:23 +02:00
?>