2018-08-11 20:07:23 +02:00
< ? php
function clean ( $str ) {
$search = array ( '&' , '"' , " ' " , '<' , '>' );
$replace = array ( '&' , '"' , ''' , '<' , '>' );
$str = str_replace ( $search , $replace , $str );
return $str ;
}
2018-08-15 13:50:00 +02:00
if ( isset ( $_REQUEST [ 'logout' ])){
2018-08-15 18:24:29 +02:00
session_start ();
session_unset ();
session_destroy ();
2018-08-15 13:50:00 +02:00
} else {
2018-08-15 18:24:29 +02:00
session_start ();
2018-08-15 13:50:00 +02:00
}
$mode = " " ;
2018-08-12 20:21:33 +02:00
function checkvm ( $vmname ) {
2018-08-15 18:24:29 +02:00
$shellout = shell_exec ( " /usr/bin/wrap-nlvmi checkvm $vmname bla " ); //){
if ( preg_match_all ( '/running/' , $shellout )){
return 0 ;
}
return 1 ;
2018-08-12 20:21:33 +02:00
}
2018-08-11 20:07:23 +02:00
//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-13 20:11:24 +02:00
2018-08-15 13:50:00 +02:00
//check login
$usersfound = " no " ;
$sql = " SELECT * FROM users LIMIT 1 " ;
$res = $db_handle -> query ( $sql );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
$usersfound = " yes " ;
if ( $_SESSION [ 'username' ] == " inituser " ){
session_unset ();
session_destroy ();
session_start ();
2018-08-15 17:38:14 +02:00
echo " killed inituser! " ;
2018-08-15 13:50:00 +02:00
}
}
2018-08-15 17:38:14 +02:00
2018-08-15 13:50:00 +02:00
if ( $usersfound == " no " ){
2018-08-15 17:38:14 +02:00
$_SESSION [ 'username' ] = " inituser " ;
$_SESSION [ 'isadmin' ] = " 1 " ;
2018-08-15 13:50:00 +02:00
if ( ! isset ( $_POST [ 'newusername' ])){
echo " <h1>You have no users in the datbase!</h1></br> " ;
// echo "Aborting....";
// exit;
2018-08-15 17:38:14 +02:00
2018-08-15 13:50:00 +02:00
$mode = " usermgmt " ;
}
} elseif (( isset ( $_POST [ 'login' ])) && ( isset ( $_POST [ 'username' ])) && ( isset ( $_POST [ 'password' ]))){
$user = clean ( $_POST [ 'username' ]);
$pass = clean ( $_POST [ 'password' ]);
$sql = " SELECT password,admin FROM users WHERE username=' $user ' " ;
$res = $db_handle -> query ( $sql );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
if ( password_verify ( $pass , $row [ 'password' ])){
$_SESSION [ 'username' ] = $user ;
$_SESSION [ 'isadmin' ] = $row [ 'admin' ];
} else {
2018-08-15 17:38:14 +02:00
echo " Password not correct! " ;
2018-08-15 13:50:00 +02:00
}
}
}
2018-08-15 17:38:14 +02:00
2018-08-15 18:24:29 +02:00
//delete vms
2018-08-15 13:50:00 +02:00
if ( isset ( $_SESSION [ 'username' ])){
2018-08-15 16:52:34 +02:00
if (( isset ( $_POST [ 'deletevm' ])) && ( isset ( $_POST [ 'deletename' ]))){
if ( $_SESSION [ 'isadmin' ] != 1 ){
2018-08-15 18:24:29 +02:00
echo " you are not allowed to delete vms! " ;
2018-08-15 16:52:34 +02:00
} else {
$vmname = clean ( $_POST [ 'deletename' ]);
$vmid = clean ( $_POST [ 'deletevm' ]);
$sql = " SELECT id FROM vms WHERE vmname=' $vmname ' AND id=' $vmid ' " ;
$res = $db_handle -> query ( $sql );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
$sqld = " DELETE FROM vms WHERE id=' $vmid ' " ;
if ( $db_handle -> query ( $sqld )){
echo " VM $vmname deleted! " ;
}
}
2018-08-13 16:49:49 +02:00
}
}
2018-08-15 13:50:00 +02:00
//insert new user in db
2018-08-15 16:52:34 +02:00
if ( isset ( $_POST [ 'newusername' ])){
if ( $_SESSION [ 'isadmin' ] != 1 ){
echo " you are not allowed to add usernames! " ;
} else {
$newusername = clean ( $_POST [ 'newusername' ]);
$newpassword = password_hash ( clean ( $_POST [ 'newpassword' ]), PASSWORD_DEFAULT );
if ( $_POST [ 'isadmin' ] == " on " ){
$isadmin = " 1 " ;
} else {
$isadmin = " 0 " ;
}
$sqlu = " SELECT id FROM users WHERE username=' $newusername ' " ;
$res = $db_handle -> query ( $sqlu );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
echo " username already exist! " ;
exit ;
}
$sql = " INSERT INTO users (username,password,admin) VALUES(' $newusername ', ' $newpassword ', ' $isadmin ') " ;
$res = $db_handle -> query ( $sql );
$res = $db_handle -> query ( $sqlu );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
echo " success " ;
exit ;
}
echo " Failed to insert into DB! " ;
exit ;
}
2018-08-15 13:50:00 +02:00
}
//update user in db
2018-08-15 16:52:34 +02:00
if ( isset ( $_POST [ 'changeusername' ])){
if ( $_SESSION [ 'isadmin' ] != 1 ){
echo " you are not allowed to change usernames! " ;
} else {
2018-08-16 16:00:08 +02:00
$userchange = clean ( $_POST [ 'userchange' ]);
2018-08-15 16:52:34 +02:00
$username = clean ( $_POST [ 'changeusername' ]);
2018-08-16 16:00:08 +02:00
if ( $_POST [ 'passwordchange' ] == " " ){
$passwd = " " ;
} else {
$pass = password_hash ( clean ( $_POST [ 'passwordchange' ]), PASSWORD_DEFAULT );
$passwd = " password=' $pass ', " ;
}
2018-08-15 13:50:00 +02:00
if ( $_POST [ 'isadmin' ] == " on " ){
$isadmin = " 1 " ;
} else {
$isadmin = " 0 " ;
}
2018-08-16 16:00:08 +02:00
$sql = " UPDATE users SET username=' $username ', $passwd admin=' $isadmin ' where id=' $userchange ' " ;
2018-08-15 16:52:34 +02:00
if ( $db_handle -> query ( $sql )){
echo " success " ;
exit ;
}
2018-08-15 13:50:00 +02:00
}
}
2018-08-15 16:52:34 +02:00
//ajax queries are all don, time for the header
include ( 'header.php' );
2018-08-15 13:50:00 +02:00
//usermanagement
2018-08-15 16:52:34 +02:00
if (( isset ( $_POST [ 'usermgmt' ])) || ( $mode == " usermgmt " )){
$mode = " usermgmt " ;
2018-08-15 17:38:14 +02:00
if (( $_SESSION [ 'username' ] == " inituser " ) || ( $_SESSION [ 'isadmin' ] == " 1 " )){
2018-08-15 16:52:34 +02:00
$sql = " SELECT * FROM users " ;
$res = $db_handle -> query ( $sql );
echo " </br> " ;
2018-08-15 13:50:00 +02:00
//echo "<div class=row><div class=col>Username</div><div class=col>Is Admin</div><div class=col>New Password</div></div>";
2018-08-15 17:38:14 +02:00
if ( $_SESSION [ 'username' ] != " inituser " ){
echo " <h2>Existing users</h2> " ;
}
2018-08-15 16:52:34 +02:00
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
echo " <form id=uform $row[id] action=? method=post><div class=row><div class=col style=text-align:right><input class=form-control name=changeusername value= $row[username] ></div> " ;
if ( $row [ 'admin' ] == " 1 " ){
$checked = " checked " ;
} else {
$checked = " " ;
}
2018-08-16 16:00:08 +02:00
echo " <div class=col-ms><input data-onstyle= \" danger \" data-offstyle=success name=isadmin id= \" isadmin $row[id] \" type= \" checkbox \" data-toggle= \" toggle \" data-on= \" user is Admin \" data-off= \" user is no Admin \" $checked ></div> " ;
2018-08-15 16:52:34 +02:00
echo " <input type=hidden name=userchange value= $row[id] > " ;
echo " <div class=col><input class=form-control type=password name=passwordchange placeholder=newpassword></div><div class=col><a href=# class= \" btn btn-success \" onclick= \" javascript:submitbutton('uform $row[id] '); \" >save user</a></div></div></form> " ;
2018-08-15 13:50:00 +02:00
}
//newuserform
2018-08-15 16:52:34 +02:00
echo " <h2>Create a new user</h2><form id=newuserform action=? method=post><div class=row><div class=col><input type=text class=form-control name=newusername placeholder=Username></div> " ;
if ( $_SESSION [ 'username' ] != " inituser " ){
echo " <div class=col-ms><input data-onstyle= \" danger \" data-offstyle=success name=isadmin id= \" isadmin \" type= \" checkbox \" data-toggle= \" toggle \" data-on= \" user is Admin \" data-off= \" user is no Admin \" checked></div> " ;
} else {
echo " <input type=hidden name=isadmin value=on> " ;
}
echo " <div class=col><input class=form-control type=password name=newpassword placeholder=newpassword></div><div class=col><a href=# class= \" btn btn-success \" onclick= \" javascript:submitbutton('newuserform'); \" >Create user</a></div></div></form> " ;
2018-08-15 13:50:00 +02:00
}
}
2018-08-15 16:52:34 +02:00
//start vm
if ( isset ( $_REQUEST [ 'start' ])){
$vmname = clean ( $_REQUEST [ 'start' ]);
2018-08-15 17:38:14 +02:00
$sqllimit = " " ;
if ( $_SESSION [ 'isadmin' ] != " 1 " ){
$sqllimit = " WHERE username=' $_SESSION[username] ' " ;
}
$sql = " SELECT * FROM vms WHERE vmname=' $vmname ' $sqllimit " ;
2018-08-15 16:52:34 +02:00
$res = $db_handle -> query ( $sql );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
$shellout = shell_exec ( " /usr/bin/wrap-nlvmi start $vmname bla " );
2018-08-12 20:21:33 +02:00
echo $shellout ;
}
}
2018-08-15 18:24:29 +02:00
//stop vm
2018-08-15 16:52:34 +02:00
if ( isset ( $_REQUEST [ 'stop' ])){
$vmname = clean ( $_REQUEST [ 'stop' ]);
2018-08-15 17:38:14 +02:00
if ( $_SESSION [ 'isadmin' ] != " 1 " ){
$sqllimit = " WHERE username=' $_SESSION[username] ' " ;
}
$sql = " SELECT * FROM vms WHERE vmname=' $vmname ' $sqllimit " ;
2018-08-15 16:52:34 +02:00
$res = $db_handle -> query ( $sql );
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
if ( checkvm ( $vmname )){
$shellout = shell_exec ( " /usr/bin/wrap-nlvmi stop $vmname bla " );
echo $shellout ;
}
}
}
2018-08-11 20:07:23 +02:00
//form for edit and new vms
2018-08-15 16:52:34 +02:00
if ( isset ( $_REQUEST [ 'edit' ])){
$mode = " editvm " ;
$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 = " " ;
$mode = " newvm " ;
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
2018-08-15 16:52:34 +02:00
if ( isset ( $formname )){
2018-08-16 17:15:56 +02:00
$placehold [ 'vmname' ] = " Name of the VM " ;
$placehold [ 'server' ] = " ip or name of host server " ;
$placehold [ 'cputype' ] = " normally just 'host' " ;
$placehold [ 'cpus' ] = " Number of core for the VM " ;
$placehold [ 'memory' ] = " Amount of RAM for the VM im Mb " ;
$placehold [ 'usbdev' ] = " Normally just 'tablet' to get a mouse " ;
$placehold [ 'kblang' ] = " Qemu keyboard layout. Like 'de-ch' " ;
$placehold [ 'custom' ] = " Customstring to add to the qemu command " ;
$placehold [ 'tapdev1' ] = " tapname of first netinterface " ;
$placehold [ 'tapdev2' ] = " tapname of second netinterface " ;
$placehold [ 'tapdev3' ] = " tapname of third netinterface " ;
$placehold [ 'macaddr1' ] = " macaddress of first netinterface " ;
$placehold [ 'macaddr2' ] = " macaddress of second netinterface " ;
$placehold [ 'macaddr3' ] = " macaddress of third netinterface " ;
$placehold [ 'brdev1' ] = " bridge on host to add first netinterface " ;
$placehold [ 'brdev2' ] = " bridge on host to add second netinterface " ;
$placehold [ 'brdev3' ] = " bridge on host to add third netinterface " ;
$placehold [ 'vncport' ] = " VNC displaynumber like '1' " ;
$placehold [ 'websocket' ] = " port to bind the VNC websocket " ;
$placehold [ 'vncpasswort' ] = " the password for VNC " ;
2018-08-15 16:52:34 +02:00
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 ( isset ( $e [ $arrColnames [ $col ]])){
$val = $e [ $arrColnames [ $col ]];
} else {
$val = " " ;
2018-08-13 20:11:24 +02:00
}
2018-08-16 17:15:56 +02:00
$colname = $arrColnames [ $col ];
//$placeh=$placehold[$arrColnames[$col]];
2018-08-15 16:52:34 +02:00
if ( $arrColnames [ $col ] == " bootoption " ){
if ( $val == " " ) {
$val = " c " ;
}
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> $val </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> " ;
2018-08-12 15:09:47 +02:00
// echo "$arrColnames[$col] <select name=bootoption><option value=c>C</option><option value=d>D</option></select></br>";
2018-08-15 18:24:29 +02:00
} elseif ( $arrColnames [ $col ] == " user " ){
if ( $val == " " ) {
$val = $_SESSION [ 'username' ];
}
echo " <div class=row><div class=col-md-1 style=text-align:right>user</div><div class=col-md-2><div class=dropdown><button class= \" btn btn-secondary dropdown-toggle \" type=button id=userbutton data-toggle=dropdown aria-haspopup=true aria-expanded=false> $val </button> " ;
echo " <div class=dropdown-menu aria-labelledby=userbutton> " ;
$sqlusers = " SELECT username FROM users " ;
$resusers = $db_handle -> query ( $sqlusers );
while ( $rowusers = $resusers -> fetchArray ( SQLITE3_ASSOC )){
echo " <a class=dropdown-item href= \" javascript:dropdown('userbutton',' $rowusers[username] ') \" > $rowusers[username] </a> " ;
}
echo " </div></div></div><input type=hidden id=userbuttonh name=user value= $_SESSION[username] ></div> " ;
2018-08-15 16:52:34 +02:00
} elseif ( $arrColnames [ $col ] == " arch " ){
echo " <div class=row><div class=col-md-1 style=text-align:right>arch</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> " ;
2018-08-12 15:09:47 +02:00
// echo "$arrColnames[$col] <select name=arch><option value=qemu-system-x86_64>x86_64</option></select></br>";
2018-08-16 17:15:56 +02:00
} elseif ( preg_match ( '/format/' , $arrColnames [ $col ])){
echo " <div class=row><div class=col> $arrColnames[$col] </div><div class=col><div class=dropdown><button class= \" btn btn-secondary dropdown-toggle \" type=button id=formatbutton $arrColnames[$col] data-toggle=dropdown aria-haspopup=true aria-expanded=false> $val </button> " ;
echo " <div class=dropdown-menu aria-labelledby=formatbutton $arrColnames[$col] > " ;
echo " <a class=dropdown-item href= \" javascript:dropdown('formatbutton $arrColnames[$col] ','') \" > </a> " ;
echo " <div class=dropdown-divider></div> " ;
echo " <a class=dropdown-item href= \" javascript:dropdown('formatbutton $arrColnames[$col] ','raw') \" >raw</a> " ;
echo " <a class=dropdown-item href= \" javascript:dropdown('formatbutton $arrColnames[$col] ','qcow2') \" >qcow2</a> " ;
echo " </div></div></div></div></div><input type=hidden id=formatbutton $arrColnames[$col] h name=arch value=x86_64> " ;
} elseif ( $arrColnames [ $col ] == " autostart " ){
$checked = " " ;
if ( $val == " 1 " ){
$checked = " checked " ;
}
echo " <div class=row><div class=col-md-1 style=text-align:right>autostart</div><div class=col-md-2><input data-onstyle= \" success \" data-offstyle=danger name=autostart id= \" autostart \" type= \" checkbox \" data-toggle= \" toggle \" data-on= \" boot with host \" data-off= \" no autostart \" $checked ></div></div> " ;
2018-08-15 16:52:34 +02:00
} elseif ( $arrColnames [ $col ] == " cdrom " ){
echo " <div class=row><div class=col-md-1 style=text-align:right>cdrom</div><div class=col-md-2><div class=dropdown><button class= \" btn btn-secondary dropdown-toggle \" type=button id=cdrombutton data-toggle=dropdown aria-haspopup=true aria-expanded=false> $val </button> " ;
echo " <div class=dropdown-menu aria-labelledby=cdrombutton> " ;
2018-08-15 18:24:29 +02:00
echo " <a class=dropdown-item href= \" javascript:dropdown('cdrombutton','') \" >no cdrom</a><div class=dropdown-divider></div> " ;
2018-08-15 16:52:34 +02:00
$isodirs = explode ( '|' , $config [ 'ISODIRECTORY' ]);
foreach ( $isodirs as $isodir ){
$files = array_diff ( scandir ( $isodir ), array ( '.' , '..' ));
$files = array_values ( array_filter ( $files ));
for ( $f = 0 ; $f < count ( $files ); $f ++ ){
if (( preg_match ( '/iso/' , $files [ $f ])) || ( preg_match ( '/ISO/' , $files [ $f ]))){
echo " <a class=dropdown-item href= \" javascript:dropdown('cdrombutton',' $isodir / $files[$f] ') \" > $isodir / $files[$f] </a> " ;
}
2018-08-13 20:11:24 +02:00
}
2018-08-12 17:22:18 +02:00
}
2018-08-15 16:52:34 +02:00
echo " </div></div></div></div><input type=hidden id=cdrombuttonh name=cdrom value= $val > " ;
} elseif ( preg_match ( '/format/' , $arrColnames [ $col ])) {
echo " <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> " ;
} elseif ( preg_match ( '/tapdev/' , $arrColnames [ $col ])) {
2018-08-16 17:15:56 +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\ " placeholder = \ " $placehold[$colname] \" ></div> " ;
2018-08-15 16:52:34 +02:00
} elseif ( preg_match ( '/macaddr/' , $arrColnames [ $col ])) {
2018-08-16 17:15:56 +02:00
echo " <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\ " placeholder = \ " $placehold[$colname] \" ></div> " ;
2018-08-15 16:52:34 +02:00
} elseif ( preg_match ( '/brdev/' , $arrColnames [ $col ])) {
2018-08-16 17:15:56 +02:00
echo " <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\ " placeholder = \ " $placehold[$colname] \" ></div></div> " ;
2018-08-15 16:52:34 +02:00
} elseif ( preg_match ( '/drive/' , $arrColnames [ $col ])){
echo " <div class=row><div class=col-md-1 style=text-align:right> $arrColnames[$col] </div><div class=col-md-2><div class=dropdown><button class= \" btn btn-secondary dropdown-toggle \" type=button id= $arrColnames[$col] button data-toggle=dropdown aria-haspopup=true aria-expanded=false> $val </button> " ;
echo " <div class=dropdown-menu aria-labelledby= $arrColnames[$col] button> " ;
2018-08-15 18:24:29 +02:00
echo " <a class=dropdown-item href= \" javascript:dropdown(' $arrColnames[$col] button','') \" >no disk</a><div class=dropdown-divider></div> " ;
2018-08-15 16:52:34 +02:00
$vmdirs = explode ( '|' , $config [ 'VMDIRECTORY' ]);
foreach ( $vmdirs as $vmdir ){
$files = array_diff ( scandir ( $vmdir ), array ( '.' , '..' ));
$files = array_values ( array_filter ( $files ));
for ( $f = 0 ; $f < count ( $files ); $f ++ ){
echo " <a class=dropdown-item href= \" javascript:dropdown(' $arrColnames[$col] button',' $vmdir / $files[$f] ') \" > $vmdir / $files[$f] </a> " ;
}
2018-08-13 20:11:24 +02:00
}
2018-08-15 16:52:34 +02:00
echo " </div></div></div><input type=hidden id= $arrColnames[$col] buttonh name= $arrColnames[$col] value= $val > " ;
} else {
2018-08-16 17:15:56 +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\ " placeholder = \ " $placehold[$colname] \" ></div></div> " ;
2018-08-12 17:22:18 +02:00
}
}
2018-08-11 20:07:23 +02:00
}
2018-08-15 16:52:34 +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
2018-08-15 16:52:34 +02:00
if ( isset ( $_REQUEST [ 'mode' ])){
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 ]);
if ( $rvalue == " x86_64 " ){
$rvalue = " qemu-system-x86_64 " ;
}
$sqlc .= " $rkey , " ;
$sqlv .= " ' $rvalue ', " ;
2018-08-12 16:05:37 +02:00
}
2018-08-12 15:09:47 +02:00
}
2018-08-15 16:52:34 +02:00
$sqlc = rtrim ( $sqlc , ',' );
$sqlc .= " ) " ;
$sqlv = rtrim ( $sqlv , ',' );
$sqlv .= " ) " ;
$sql = " $sqls $sqlc $sqlv " ;
2018-08-15 17:38:14 +02:00
//echo $sql;
2018-08-15 16:52:34 +02:00
$result = $db_handle -> exec ( $sql );
2018-08-15 17:38:14 +02:00
$mode = " " ;
2018-08-15 16:52:34 +02:00
} 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 ]);
if ( $rvalue == " x86_64 " ){
$rvalue = " qemu-system-x86_64 " ;
}
$sql .= " $rkey =' $rvalue ', " ;
2018-08-12 16:05:37 +02:00
}
2018-08-12 15:09:47 +02:00
}
2018-08-15 16:52:34 +02:00
$sql = rtrim ( $sql , ',' );
$eid = clean ( $_REQUEST [ 'editid' ]);
$sql .= " WHERE id=' $eid ' " ;
$result = $db_handle -> exec ( $sql );
2018-08-12 15:09:47 +02:00
}
2018-08-11 20:07:23 +02:00
}
2018-08-12 15:09:47 +02:00
2018-08-15 16:52:34 +02:00
if (( $mode != " newvm " ) && ( $mode != " editvm " ) && ( $mode != 'usermgmt' )){
2018-08-15 17:00:23 +02:00
if ( $_SESSION [ 'isadmin' ] == " 1 " ){
$sqllimit = " " ;
echo " </br><a class= \" btn btn-primary \" href=# onclick= \" post('?', { newvm: 'newvm'}); \" >Create a new VM</a></br></br> " ;
} else {
$sqllimit = " WHERE user=' $_SESSION[username] ' " ;
}
2018-08-13 19:21:12 +02:00
2018-08-12 15:09:47 +02:00
//getting vms from DB
2018-08-15 17:00:23 +02:00
$sql = " SELECT * FROM vms $sqllimit " ;
2018-08-15 16:52:34 +02:00
$res = $db_handle -> query ( $sql );
echo " <div class=row> " ;
while ( $row = $res -> fetchArray ( SQLITE3_ASSOC )){
if ( checkvm ( $row [ 'vmname' ])){
$button = " start " ;
$buttonc = " btn-success " ;
} else {
$button = " stop " ;
$buttonc = " btn-warning " ;
}
2018-08-15 17:38:14 +02:00
echo " <div class=col style= \" margin:10px;border:solid 1px;max-width:320px; \" > $row[vmname] </br><a class= \" btn btn-primary \" href=# onclick= \" post('?', { edit: ' $row[id] '}); \" >edit</a> " ;
2018-08-15 16:52:34 +02:00
echo " <a href=# onclick= \" post('?', { ' $button ': ' $row[vmname] '}); \" class= \" btn $buttonc\ " > $button </ a > " ;
echo " <button class= \" btn btn-danger \" data-delete-text= \" Delete VM $row[vmname] ! \" data-delete-vm= \" $row[id] \" data-delete-name= \" $row[vmname] \" data-toggle= \" modal \" data-target= \" #confirm-delete \" >Delete VM</button> " ;
$server = gethostname ();
if ( preg_match ( '/stop/' , $button )) {
echo " <a target=_blank href=novnc/vnc.html?port= $row[websocket] &path=&host= $server class= \" btn btn-success \" >VNC</a></div> " ;
}
2018-08-15 17:38:14 +02:00
echo " </div> " ;
2018-08-15 16:52:34 +02:00
}
2018-08-13 18:25:05 +02:00
}
2018-08-15 16:52:34 +02:00
echo " </div></div></body></html> " ;
2018-08-15 13:50:00 +02:00
} elseif ( ! isset ( $_SESSION [ 'username' ])){
echo " <h1>Welcome to nlvmi!</h1><h2>You need to log in</h2></br> " ;
echo " <form action=? method=post>Username: <input type=text name=username> Password: <input type=password name=password> <input name=login type=submit></form> " ;
exit ;
}
2018-08-11 20:07:23 +02:00
?>