Please provide the file changes (diffs) for me to generate a commit message.

This commit is contained in:
2026-02-22 10:26:29 +01:00
parent ae70375f08
commit 239445a29d
3 changed files with 298 additions and 267 deletions
+7
View File
@@ -1 +1,8 @@
.idea .idea
/mock/
/bin/
/releases/
/jails/
/router.php
/debug_vars.php
/conf/bastille_config
+23 -9
View File
@@ -46,8 +46,18 @@ $prdname = "bastille";
$application = "Bastille Manager"; $application = "Bastille Manager";
$restore_name = "restore"; $restore_name = "restore";
$confdir = "/var/etc/bastille_conf"; $confdir = "/var/etc/bastille_conf";
$cwdir = exec("/usr/bin/grep 'INSTALL_DIR=' $confdir/conf/bastille_config | /usr/bin/cut -d'\"' -f2");
$rootfolder = $cwdir; // Check for configuration file
$conf_file = "$confdir/conf/bastille_config";
if (!file_exists($conf_file) && file_exists(__DIR__ . "/../conf/bastille_config")) {
$conf_file = __DIR__ . "/../conf/bastille_config";
}
$cwdir = exec("/usr/bin/grep 'INSTALL_DIR=' $conf_file | /usr/bin/cut -d'\"' -f2");
if (!empty($cwdir)) {
$rootfolder = $cwdir;
}
$configfile = "$rootfolder/conf/bastille_config"; $configfile = "$rootfolder/conf/bastille_config";
$configfile_bastille = "$rootfolder/bastille-dist/usr/local/etc/bastille/bastille.conf"; $configfile_bastille = "$rootfolder/bastille-dist/usr/local/etc/bastille/bastille.conf";
$versionfile = "$rootfolder/version"; $versionfile = "$rootfolder/version";
@@ -55,20 +65,24 @@ $versionfile = "$rootfolder/version";
$date = date('D M d h:i:s Y', time()); // Equivalent date replacement for the previous strftime function. $date = date('D M d h:i:s Y', time()); // Equivalent date replacement for the previous strftime function.
$logfile = "$rootfolder/log/bastille_ext.log"; $logfile = "$rootfolder/log/bastille_ext.log";
$logevent = "$rootfolder/log/bastille_last_event.log"; $logevent = "$rootfolder/log/bastille_last_event.log";
$backup_path = exec("/usr/bin/grep 'BACKUP_DIR=' $configfile | /usr/bin/cut -d'\"' -f2");
// Reuse $conf_file if it's our local one, otherwise use the standard greed
$grep_config = file_exists($configfile) ? $configfile : $conf_file;
$backup_path = exec("/usr/bin/grep 'BACKUP_DIR=' $grep_config | /usr/bin/cut -d'\"' -f2");
$bastille_config = "$rootfolder/conf/bastille_config"; $bastille_config = "$rootfolder/conf/bastille_config";
$config_path = exec("/usr/bin/grep 'BASTILLE_CONFIG=' $configfile | /usr/bin/cut -d'\"' -f2"); $config_path = exec("/usr/bin/grep 'BASTILLE_CONFIG=' $grep_config | /usr/bin/cut -d'\"' -f2");
$default_distfiles = exec("/usr/bin/grep 'bastille_bootstrap_archives=' $config_path | /usr/bin/cut -d'\"' -f2"); $default_distfiles = exec("/usr/bin/grep 'bastille_bootstrap_archives=' $config_path | /usr/bin/cut -d'\"' -f2");
$jail_dir = "{$rootfolder}/jails"; $jail_dir = "{$rootfolder}/jails";
$image_dir = "ext/bastille/images"; $image_dir = "ext/bastille/images";
$reldir = "{$rootfolder}/releases"; $reldir = "{$rootfolder}/releases";
$backup_path_bastille = exec("/usr/sbin/sysrc -f $rootfolder/bastille-dist/usr/local/etc/bastille/bastille.conf -qn bastille_backupsdir"); $backup_path_bastille = exec("/usr/sbin/sysrc -f $rootfolder/bastille-dist/usr/local/etc/bastille/bastille.conf -qn bastille_backupsdir");
$zfs_support = exec("/usr/bin/grep 'ZFS_SUPPORT=' $configfile | /usr/bin/cut -d'\"' -f2"); $zfs_support = exec("/usr/bin/grep 'ZFS_SUPPORT=' $grep_config | /usr/bin/cut -d'\"' -f2");
$zfs_activated = exec("/usr/bin/grep 'ZFS_ACTIVATED=' $configfile | /usr/bin/cut -d'\"' -f2"); $zfs_activated = exec("/usr/bin/grep 'ZFS_ACTIVATED=' $grep_config | /usr/bin/cut -d'\"' -f2");
$tarballversion = "/usr/local/bin/bastille"; if (!isset($tarballversion)) $tarballversion = "/usr/local/bin/bastille";
$bastille_version_min = exec("grep 'BASTILLE_VERSION=' $tarballversion | cut -d '\"' -f2 | tr -d '.'"); $bastille_version_min = exec("grep 'BASTILLE_VERSION=' $tarballversion | cut -d '\"' -f2 | tr -d '.'");
$host_version = exec("/bin/cat /etc/prd.version | tr -d '.'"); $host_version = exec("/bin/cat /etc/prd.version | tr -d '.'");
$linux_compat_support = exec("/usr/bin/grep 'LINUX_COMPAT_SUPPORT=' $configfile | /usr/bin/cut -d'\"' -f2"); $linux_compat_support = exec("/usr/bin/grep 'LINUX_COMPAT_SUPPORT=' $grep_config | /usr/bin/cut -d'\"' -f2");
$jail_settings = "settings.conf"; $jail_settings = "settings.conf";
// Ensure the root directory is configured. // Ensure the root directory is configured.
@@ -146,7 +160,7 @@ function get_state_zfs() {
function get_all_release_list() { function get_all_release_list() {
global $rootfolder; global $rootfolder;
global $g; global $g;
exec("/bin/echo; /bin/ls {$rootfolder}/releases | grep RELEASE 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); exec("/bin/echo; /bin/ls {$rootfolder}/releases | /usr/bin/tr -s ' ' '\n'",$relinfo);
array_shift($relinfo); array_shift($relinfo);
$rellist = []; $rellist = [];
foreach($relinfo as $rel): foreach($relinfo as $rel):
+99 -89
View File
@@ -42,15 +42,16 @@ require_once("bastille_manager-lib.inc");
$pgtitle = array(gtext("Extensions"), "Bastille", "Create"); $pgtitle = array(gtext("Extensions"), "Bastille", "Create");
$pconfig = []; $pconfig = [];
$errormsg = "";
if(!(isset($pconfig['jailname']))): if (!(isset($pconfig['jailname']))):
$pconfig['jailname'] = 'jail1'; $pconfig['jailname'] = 'jail1';
endif; endif;
if(!(isset($pconfig['ipaddress']))): if (!(isset($pconfig['ipaddress']))):
$pconfig['ipaddress'] = ''; $pconfig['ipaddress'] = '';
endif; endif;
if(!get_all_release_list()): if (!get_all_release_list()):
$errormsg = gtext('No base releases extracted yet.') $errormsg = gtext('No base releases extracted yet.')
. ' ' . ' '
. '<a href="' . 'bastille_manager_tarballs.php' . '">' . '<a href="' . 'bastille_manager_tarballs.php' . '">'
@@ -60,23 +61,23 @@ if(!get_all_release_list()):
endif; endif;
$zfs_status = get_state_zfs(); $zfs_status = get_state_zfs();
if($zfs_status == "Invalid ZFS configuration"): if ($zfs_status == "Invalid ZFS configuration"):
// Warning if invalid ZFS configuration. // Warning if invalid ZFS configuration.
$input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected.");
endif; endif;
if($_POST): if ($_POST):
global $jail_dir; global $jail_dir;
global $configfile; global $configfile;
unset($input_errors); unset($input_errors);
$pconfig = $_POST; $pconfig = $_POST;
if(isset($_POST['Cancel']) && $_POST['Cancel']): if (isset($_POST['Cancel']) && $_POST['Cancel']):
header('Location: bastille_manager_gui.php'); header('Location: bastille_manager_gui.php');
exit; exit;
endif; endif;
if(isset($_POST['Create']) && $_POST['Create']): if (isset($_POST['Create']) && $_POST['Create']):
$zfs_status = get_state_zfs(); $zfs_status = get_state_zfs();
if($zfs_status == "Invalid ZFS configuration"): if ($zfs_status == "Invalid ZFS configuration"):
// Abort jail creation if invalid ZFS configuration. // Abort jail creation if invalid ZFS configuration.
$input_errors[] = gtext("Cannot create jail with an invalid ZFS configuration."); $input_errors[] = gtext("Cannot create jail with an invalid ZFS configuration.");
else: else:
@@ -93,35 +94,35 @@ if($_POST):
$interface = $pconfig['interface']; $interface = $pconfig['interface'];
endif; endif;
if($release == 'Ubuntu_1804'): if ($release == 'Ubuntu_1804'):
$release = "ubuntu-bionic"; $release = "ubuntu-bionic";
elseif($release == 'Ubuntu_2004'): elseif ($release == 'Ubuntu_2004'):
$release = "ubuntu-focal"; $release = "ubuntu-focal";
elseif($release == 'Ubuntu_2204'): elseif ($release == 'Ubuntu_2204'):
$release = "ubuntu-jammy"; $release = "ubuntu-jammy";
elseif($release == 'Debian9'): elseif ($release == 'Debian9'):
$release = "debian-stretch"; $release = "debian-stretch";
elseif($release == 'Debian10'): elseif ($release == 'Debian10'):
$release = "debian-buster"; $release = "debian-buster";
elseif($release == 'Debian12'): elseif ($release == 'Debian12'):
$release = "debian-bookworm"; $release = "debian-bookworm";
endif; endif;
if(isset($_POST['thickjail']) && isset($_POST['vnetjail'])): if (isset($_POST['thickjail']) && isset($_POST['vnetjail'])):
$options = "-T -V"; $options = "-T -V";
elseif(isset($_POST['thickjail']) && isset($_POST['bridgejail'])): elseif (isset($_POST['thickjail']) && isset($_POST['bridgejail'])):
$options = "-T -B"; $options = "-T -B";
elseif(isset($_POST['thickjail'])): elseif (isset($_POST['thickjail'])):
$options = "-T"; $options = "-T";
elseif(isset($_POST['vnetjail'])): elseif (isset($_POST['vnetjail'])):
$options = "-V"; $options = "-V";
elseif(isset($_POST['bridgejail'])): elseif (isset($_POST['bridgejail'])):
$options = "-B"; $options = "-B";
elseif(isset($_POST['linuxjail'])): elseif (isset($_POST['linuxjail'])):
$options = "-L"; $options = "-L";
endif; endif;
if(isset($_POST['emptyjail'])): if (isset($_POST['emptyjail'])):
// Just create an empty container with minimal jail.conf. // Just create an empty container with minimal jail.conf.
$cmd = ("/usr/local/bin/bastille create -E {$jname}"); $cmd = ("/usr/local/bin/bastille create -E {$jname}");
else: else:
@@ -133,14 +134,15 @@ if($_POST):
endif; endif;
if ($_POST['Create']): if ($_POST['Create']):
if(get_all_release_list()): if (get_all_release_list()):
unset($output,$retval);mwexec2($cmd,$output,$retval); unset($output, $retval);
if($retval == 0): mwexec2($cmd, $output, $retval);
if ($retval == 0):
//if (isset($_POST['autostart'])): //if (isset($_POST['autostart'])):
// exec("/usr/sbin/sysrc -f {$configfile} {$jname}_AUTO_START=\"YES\""); // exec("/usr/sbin/sysrc -f {$configfile} {$jname}_AUTO_START=\"YES\"");
//endif; //endif;
if(is_link($resolv_conf)): if (is_link($resolv_conf)):
if(unlink($resolv_conf)): if (unlink($resolv_conf)):
//exec("/usr/local/bin/bastille cp $jname $resolv_host etc"); //exec("/usr/local/bin/bastille cp $jname $resolv_host etc");
copy($resolv_host, $resolv_conf); copy($resolv_host, $resolv_conf);
endif; endif;
@@ -162,15 +164,15 @@ endif;
include 'fbegin.inc'; include 'fbegin.inc';
?> ?>
<script type="text/javascript"> <script type="text/javascript">
//<![CDATA[ //<![CDATA[
$(window).on("load",function() { $(window).on("load", function () {
$("#iform").submit(function() { spinner(); }); $("#iform").submit(function () { spinner(); });
$(".spin").click(function() { spinner(); }); $(".spin").click(function () { spinner(); });
}); });
function emptyjail_change() { function emptyjail_change() {
switch(document.iform.emptyjail.checked) { switch (document.iform.emptyjail.checked) {
case false: case false:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -181,7 +183,7 @@ function emptyjail_change() {
showElementById('linuxjail_tr', 'show'); showElementById('linuxjail_tr', 'show');
break; break;
case true: case true:
showElementById('ipaddress_tr','hide'); showElementById('ipaddress_tr', 'hide');
showElementById('interface_tr', 'hide'); showElementById('interface_tr', 'hide');
showElementById('release_tr', 'hide'); showElementById('release_tr', 'hide');
showElementById('thickjail_tr', 'hide'); showElementById('thickjail_tr', 'hide');
@@ -192,12 +194,12 @@ function emptyjail_change() {
showElementById('linuxjail_tr', 'hide'); showElementById('linuxjail_tr', 'hide');
break; break;
} }
} }
function linuxjail_change() { function linuxjail_change() {
switch(document.iform.linuxjail.checked) { switch (document.iform.linuxjail.checked) {
case false: case false:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -209,7 +211,7 @@ function linuxjail_change() {
showElementById('emptyjail_tr', 'show'); showElementById('emptyjail_tr', 'show');
break; break;
case true: case true:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'hide'); showElementById('thickjail_tr', 'hide');
@@ -220,12 +222,12 @@ function linuxjail_change() {
showElementById('emptyjail_tr', 'hide'); showElementById('emptyjail_tr', 'hide');
break; break;
} }
} }
function vnetjail_change() { function vnetjail_change() {
switch(document.iform.vnetjail.checked) { switch (document.iform.vnetjail.checked) {
case false: case false:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -236,7 +238,7 @@ function vnetjail_change() {
showElementById('linuxjail_tr', 'show'); showElementById('linuxjail_tr', 'show');
break; break;
case true: case true:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -247,12 +249,12 @@ function vnetjail_change() {
showElementById('linuxjail_tr', 'show'); showElementById('linuxjail_tr', 'show');
break; break;
} }
} }
function bridgejail_change() { function bridgejail_change() {
switch(document.iform.bridgejail.checked) { switch (document.iform.bridgejail.checked) {
case false: case false:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -263,7 +265,7 @@ function bridgejail_change() {
showElementById('linuxjail_tr', 'show'); showElementById('linuxjail_tr', 'show');
break; break;
case true: case true:
showElementById('ipaddress_tr','show'); showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show'); showElementById('interface_tr', 'show');
showElementById('release_tr', 'show'); showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show'); showElementById('thickjail_tr', 'show');
@@ -274,9 +276,9 @@ function bridgejail_change() {
showElementById('linuxjail_tr', 'show'); showElementById('linuxjail_tr', 'show');
break; break;
} }
} }
//]]> //]]>
</script> </script>
<?php <?php
$document = new co_DOMDocument(); $document = new co_DOMDocument();
@@ -284,73 +286,81 @@ $document->
add_area_tabnav()-> add_area_tabnav()->
push()-> push()->
add_tabnav_upper()-> add_tabnav_upper()->
ins_tabnav_record('bastille_manager_gui.php',gettext('Containers'),gettext('Reload page'),true)-> ins_tabnav_record('bastille_manager_gui.php', gettext('Containers'), gettext('Reload page'), true)->
ins_tabnav_record('bastille_manager_info.php',gettext('Information'),gettext('Reload page'),true)-> ins_tabnav_record('bastille_manager_info.php', gettext('Information'), gettext('Reload page'), true)->
ins_tabnav_record('bastille_manager_maintenance.php',gettext('Maintenance'),gettext('Reload page'),true); ins_tabnav_record('bastille_manager_maintenance.php', gettext('Maintenance'), gettext('Reload page'), true);
$document->render(); $document->render();
?> ?>
<form action="bastille_manager_add.php" method="post" name="iform" id="iform"><table id="area_data"><tbody><tr><td id="area_data_frame"> <form action="bastille_manager_add.php" method="post" name="iform" id="iform">
<?php <table id="area_data">
if(!empty($errormsg)): <tbody>
<tr>
<td id="area_data_frame">
<?php
if (!empty($errormsg)):
print_error_box($errormsg); print_error_box($errormsg);
endif; endif;
if(!empty($savemsg)): if (!empty($savemsg)):
print_info_box($savemsg); print_info_box($savemsg);
endif; endif;
if(!empty($input_errors)): if (!empty($input_errors)):
print_input_errors($input_errors); print_input_errors($input_errors);
endif; endif;
if(file_exists($d_sysrebootreqd_path)): if (file_exists($d_sysrebootreqd_path)):
print_info_box(get_std_save_message(0)); print_info_box(get_std_save_message(0));
endif; endif;
?> ?>
<table class="area_data_settings"> <table class="area_data_settings">
<colgroup> <colgroup>
<col class="area_data_settings_col_tag"> <col class="area_data_settings_col_tag">
<col class="area_data_settings_col_data"> <col class="area_data_settings_col_data">
</colgroup> </colgroup>
<thead> <thead>
<?php <?php
html_titleline2(gettext('Create new Container')); html_titleline2(gettext('Create new Container'), 2);
?> ?>
</thead> </thead>
<tbody> <tbody>
<?php <?php
html_inputbox2('jailname',gettext('Friendly name'),$pconfig['jailname'],'',true,20); html_inputbox2('jailname', gettext('Friendly name'), $pconfig['jailname'], '', true, 20);
html_inputbox2('ipaddress',gettext('IP Address'),$pconfig['ipaddress'],'',true,20); html_inputbox2('ipaddress', gettext('IP Address'), $pconfig['ipaddress'], '', true, 20);
$a_action = $l_interfaces; $a_action = $l_interfaces;
$b_action = $l_release; $b_action = $l_release;
html_combobox2('interface',gettext('Network interface'),!empty($pconfig['interface']),$a_action,'',true,false); html_combobox2('interface', gettext('Network interface'), !empty($pconfig['interface']), $a_action, '', true, false);
html_combobox2('release',gettext('Base release'),!empty($pconfig['release']),$b_action,'',true,false); html_combobox2('release', gettext('Base release'), !empty($pconfig['release']), $b_action, '', true, false);
if($bastille_version_min > "0700000000"): if ($bastille_version_min > "0700000000"):
html_checkbox2('thickjail',gettext('Create a thick container'),!empty($pconfig['thickjail']) ? true : false,gettext('These containers consume more space, but are self contained and fully independent.'),'',false); html_checkbox2('thickjail', gettext('Create a thick container'), !empty($pconfig['thickjail']) ? true : false, gettext('These containers consume more space, but are self contained and fully independent.'), '', false);
if($host_version > "12100"): if ($host_version > "12100"):
html_checkbox2('vnetjail',gettext('Enable VNET(VIMAGE)'),!empty($pconfig['vnetjail']) ? true : false,gettext('VNET-enabled containers are attached to a virtual bridge interface for connectivity(Only supported on 13.x and above).'),'',false,false,'vnetjail_change()'); html_checkbox2('vnetjail', gettext('Enable VNET(VIMAGE)'), !empty($pconfig['vnetjail']) ? true : false, gettext('VNET-enabled containers are attached to a virtual bridge interface for connectivity(Only supported on 13.x and above).'), '', false, false, 'vnetjail_change()');
html_checkbox2('bridgejail',gettext('Enable Bridge VNET(VIMAGE)'),!empty($pconfig['bridgejail']) ? true : false,gettext('Bridge VNET-enabled containers are attached to a specified, already existing external bridge(Only supported on 13.x and above).'),'',false,false,'bridgejail_change()'); html_checkbox2('bridgejail', gettext('Enable Bridge VNET(VIMAGE)'), !empty($pconfig['bridgejail']) ? true : false, gettext('Bridge VNET-enabled containers are attached to a specified, already existing external bridge(Only supported on 13.x and above).'), '', false, false, 'bridgejail_change()');
endif; endif;
html_checkbox2('emptyjail',gettext('Create an empty container'),!empty($pconfig['emptyjail']) ? true : false,gettext('This are ideal for custom builds, experimenting with unsupported RELEASES or Linux jails.'),'',false,false,'emptyjail_change()'); html_checkbox2('emptyjail', gettext('Create an empty container'), !empty($pconfig['emptyjail']) ? true : false, gettext('This are ideal for custom builds, experimenting with unsupported RELEASES or Linux jails.'), '', false, false, 'emptyjail_change()');
if($linux_compat_support == "YES"): if ($linux_compat_support == "YES"):
//html_checkbox2('linuxjail',gettext('Create a Linux container'),!empty($pconfig['linuxjail']) ? true : false,gettext('This will create a Linux container, this is highly experimental and for testing purposes.'),'',false,false,'linuxjail_change()'); html_checkbox2('linuxjail', gettext('Create a Linux container'), !empty($pconfig['linuxjail']) ? true : false, gettext('This will create a Linux container, this is highly experimental and for testing purposes.'), '', false, false, 'linuxjail_change()');
endif; endif;
endif; endif;
//html_checkbox2('nowstart',gettext('Start after creation'),!empty($pconfig['nowstart']) ? true : false,gettext('Start the container after creation(May be overridden by later bastille releases).'),'',false); //html_checkbox2('nowstart',gettext('Start after creation'),!empty($pconfig['nowstart']) ? true : false,gettext('Start the container after creation(May be overridden by later bastille releases).'),'',false);
html_checkbox2('autostart',gettext('Auto start on boot'),!empty($pconfig['autostart']) ? true : false,gettext('Automatically start the container at boot time.'),'',false); html_checkbox2('autostart', gettext('Auto start on boot'), !empty($pconfig['autostart']) ? true : false, gettext('Automatically start the container at boot time.'), '', false);
?> ?>
</tbody> </tbody>
</table> </table>
<div id="submit"> <div id="submit">
<input name="Create" type="submit" class="formbtn" value="<?=gtext('Create');?>"/> <input name="Create" type="submit" class="formbtn" value="<?= gtext('Create'); ?>" />
<input name="Cancel" type="submit" class="formbtn" value="<?=gtext('Cancel');?>" /> <input name="Cancel" type="submit" class="formbtn" value="<?= gtext('Cancel'); ?>" />
</div> </div>
<?php <?php
include 'formend.inc'; include 'formend.inc';
?> ?>
</td></tr></tbody></table></form> </td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
emptyjail_change(); emptyjail_change();
linuxjail_change(); linuxjail_change();
//--> //-->
</script> </script>
<?php <?php
include 'fend.inc'; include 'fend.inc';