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
/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";
$restore_name = "restore";
$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_bastille = "$rootfolder/bastille-dist/usr/local/etc/bastille/bastille.conf";
$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.
$logfile = "$rootfolder/log/bastille_ext.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";
$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");
$jail_dir = "{$rootfolder}/jails";
$image_dir = "ext/bastille/images";
$reldir = "{$rootfolder}/releases";
$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_activated = exec("/usr/bin/grep 'ZFS_ACTIVATED=' $configfile | /usr/bin/cut -d'\"' -f2");
$tarballversion = "/usr/local/bin/bastille";
$zfs_support = exec("/usr/bin/grep 'ZFS_SUPPORT=' $grep_config | /usr/bin/cut -d'\"' -f2");
$zfs_activated = exec("/usr/bin/grep 'ZFS_ACTIVATED=' $grep_config | /usr/bin/cut -d'\"' -f2");
if (!isset($tarballversion)) $tarballversion = "/usr/local/bin/bastille";
$bastille_version_min = exec("grep 'BASTILLE_VERSION=' $tarballversion | cut -d '\"' -f2 | 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";
// Ensure the root directory is configured.
@@ -146,7 +160,7 @@ function get_state_zfs() {
function get_all_release_list() {
global $rootfolder;
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);
$rellist = [];
foreach($relinfo as $rel):
+99 -89
View File
@@ -42,15 +42,16 @@ require_once("bastille_manager-lib.inc");
$pgtitle = array(gtext("Extensions"), "Bastille", "Create");
$pconfig = [];
$errormsg = "";
if(!(isset($pconfig['jailname']))):
if (!(isset($pconfig['jailname']))):
$pconfig['jailname'] = 'jail1';
endif;
if(!(isset($pconfig['ipaddress']))):
if (!(isset($pconfig['ipaddress']))):
$pconfig['ipaddress'] = '';
endif;
if(!get_all_release_list()):
if (!get_all_release_list()):
$errormsg = gtext('No base releases extracted yet.')
. ' '
. '<a href="' . 'bastille_manager_tarballs.php' . '">'
@@ -60,23 +61,23 @@ if(!get_all_release_list()):
endif;
$zfs_status = get_state_zfs();
if($zfs_status == "Invalid ZFS configuration"):
if ($zfs_status == "Invalid ZFS configuration"):
// Warning if invalid ZFS configuration.
$input_errors[] = gtext("WARNING: Invalid ZFS configuration detected.");
endif;
if($_POST):
if ($_POST):
global $jail_dir;
global $configfile;
unset($input_errors);
$pconfig = $_POST;
if(isset($_POST['Cancel']) && $_POST['Cancel']):
if (isset($_POST['Cancel']) && $_POST['Cancel']):
header('Location: bastille_manager_gui.php');
exit;
endif;
if(isset($_POST['Create']) && $_POST['Create']):
if (isset($_POST['Create']) && $_POST['Create']):
$zfs_status = get_state_zfs();
if($zfs_status == "Invalid ZFS configuration"):
if ($zfs_status == "Invalid ZFS configuration"):
// Abort jail creation if invalid ZFS configuration.
$input_errors[] = gtext("Cannot create jail with an invalid ZFS configuration.");
else:
@@ -93,35 +94,35 @@ if($_POST):
$interface = $pconfig['interface'];
endif;
if($release == 'Ubuntu_1804'):
if ($release == 'Ubuntu_1804'):
$release = "ubuntu-bionic";
elseif($release == 'Ubuntu_2004'):
elseif ($release == 'Ubuntu_2004'):
$release = "ubuntu-focal";
elseif($release == 'Ubuntu_2204'):
elseif ($release == 'Ubuntu_2204'):
$release = "ubuntu-jammy";
elseif($release == 'Debian9'):
elseif ($release == 'Debian9'):
$release = "debian-stretch";
elseif($release == 'Debian10'):
elseif ($release == 'Debian10'):
$release = "debian-buster";
elseif($release == 'Debian12'):
elseif ($release == 'Debian12'):
$release = "debian-bookworm";
endif;
if(isset($_POST['thickjail']) && isset($_POST['vnetjail'])):
if (isset($_POST['thickjail']) && isset($_POST['vnetjail'])):
$options = "-T -V";
elseif(isset($_POST['thickjail']) && isset($_POST['bridgejail'])):
elseif (isset($_POST['thickjail']) && isset($_POST['bridgejail'])):
$options = "-T -B";
elseif(isset($_POST['thickjail'])):
elseif (isset($_POST['thickjail'])):
$options = "-T";
elseif(isset($_POST['vnetjail'])):
elseif (isset($_POST['vnetjail'])):
$options = "-V";
elseif(isset($_POST['bridgejail'])):
elseif (isset($_POST['bridgejail'])):
$options = "-B";
elseif(isset($_POST['linuxjail'])):
elseif (isset($_POST['linuxjail'])):
$options = "-L";
endif;
if(isset($_POST['emptyjail'])):
if (isset($_POST['emptyjail'])):
// Just create an empty container with minimal jail.conf.
$cmd = ("/usr/local/bin/bastille create -E {$jname}");
else:
@@ -133,14 +134,15 @@ if($_POST):
endif;
if ($_POST['Create']):
if(get_all_release_list()):
unset($output,$retval);mwexec2($cmd,$output,$retval);
if($retval == 0):
if (get_all_release_list()):
unset($output, $retval);
mwexec2($cmd, $output, $retval);
if ($retval == 0):
//if (isset($_POST['autostart'])):
// exec("/usr/sbin/sysrc -f {$configfile} {$jname}_AUTO_START=\"YES\"");
//endif;
if(is_link($resolv_conf)):
if(unlink($resolv_conf)):
if (is_link($resolv_conf)):
if (unlink($resolv_conf)):
//exec("/usr/local/bin/bastille cp $jname $resolv_host etc");
copy($resolv_host, $resolv_conf);
endif;
@@ -162,15 +164,15 @@ endif;
include 'fbegin.inc';
?>
<script type="text/javascript">
//<![CDATA[
$(window).on("load",function() {
$("#iform").submit(function() { spinner(); });
$(".spin").click(function() { spinner(); });
});
function emptyjail_change() {
switch(document.iform.emptyjail.checked) {
//<![CDATA[
$(window).on("load", function () {
$("#iform").submit(function () { spinner(); });
$(".spin").click(function () { spinner(); });
});
function emptyjail_change() {
switch (document.iform.emptyjail.checked) {
case false:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -181,7 +183,7 @@ function emptyjail_change() {
showElementById('linuxjail_tr', 'show');
break;
case true:
showElementById('ipaddress_tr','hide');
showElementById('ipaddress_tr', 'hide');
showElementById('interface_tr', 'hide');
showElementById('release_tr', 'hide');
showElementById('thickjail_tr', 'hide');
@@ -192,12 +194,12 @@ function emptyjail_change() {
showElementById('linuxjail_tr', 'hide');
break;
}
}
}
function linuxjail_change() {
switch(document.iform.linuxjail.checked) {
function linuxjail_change() {
switch (document.iform.linuxjail.checked) {
case false:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -209,7 +211,7 @@ function linuxjail_change() {
showElementById('emptyjail_tr', 'show');
break;
case true:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'hide');
@@ -220,12 +222,12 @@ function linuxjail_change() {
showElementById('emptyjail_tr', 'hide');
break;
}
}
}
function vnetjail_change() {
switch(document.iform.vnetjail.checked) {
function vnetjail_change() {
switch (document.iform.vnetjail.checked) {
case false:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -236,7 +238,7 @@ function vnetjail_change() {
showElementById('linuxjail_tr', 'show');
break;
case true:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -247,12 +249,12 @@ function vnetjail_change() {
showElementById('linuxjail_tr', 'show');
break;
}
}
}
function bridgejail_change() {
switch(document.iform.bridgejail.checked) {
function bridgejail_change() {
switch (document.iform.bridgejail.checked) {
case false:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -263,7 +265,7 @@ function bridgejail_change() {
showElementById('linuxjail_tr', 'show');
break;
case true:
showElementById('ipaddress_tr','show');
showElementById('ipaddress_tr', 'show');
showElementById('interface_tr', 'show');
showElementById('release_tr', 'show');
showElementById('thickjail_tr', 'show');
@@ -274,9 +276,9 @@ function bridgejail_change() {
showElementById('linuxjail_tr', 'show');
break;
}
}
}
//]]>
//]]>
</script>
<?php
$document = new co_DOMDocument();
@@ -284,73 +286,81 @@ $document->
add_area_tabnav()->
push()->
add_tabnav_upper()->
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_maintenance.php',gettext('Maintenance'),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_maintenance.php', gettext('Maintenance'), gettext('Reload page'), true);
$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">
<?php
if(!empty($errormsg)):
<form action="bastille_manager_add.php" method="post" name="iform" id="iform">
<table id="area_data">
<tbody>
<tr>
<td id="area_data_frame">
<?php
if (!empty($errormsg)):
print_error_box($errormsg);
endif;
if(!empty($savemsg)):
if (!empty($savemsg)):
print_info_box($savemsg);
endif;
if(!empty($input_errors)):
if (!empty($input_errors)):
print_input_errors($input_errors);
endif;
if(file_exists($d_sysrebootreqd_path)):
if (file_exists($d_sysrebootreqd_path)):
print_info_box(get_std_save_message(0));
endif;
?>
?>
<table class="area_data_settings">
<colgroup>
<col class="area_data_settings_col_tag">
<col class="area_data_settings_col_data">
</colgroup>
<thead>
<?php
html_titleline2(gettext('Create new Container'));
?>
<?php
html_titleline2(gettext('Create new Container'), 2);
?>
</thead>
<tbody>
<?php
html_inputbox2('jailname',gettext('Friendly name'),$pconfig['jailname'],'',true,20);
html_inputbox2('ipaddress',gettext('IP Address'),$pconfig['ipaddress'],'',true,20);
<?php
html_inputbox2('jailname', gettext('Friendly name'), $pconfig['jailname'], '', true, 20);
html_inputbox2('ipaddress', gettext('IP Address'), $pconfig['ipaddress'], '', true, 20);
$a_action = $l_interfaces;
$b_action = $l_release;
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);
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);
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('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_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);
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);
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('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;
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"):
//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('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"):
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;
//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>
</table>
<div id="submit">
<input name="Create" type="submit" class="formbtn" value="<?=gtext('Create');?>"/>
<input name="Cancel" type="submit" class="formbtn" value="<?=gtext('Cancel');?>" />
<input name="Create" type="submit" class="formbtn" value="<?= gtext('Create'); ?>" />
<input name="Cancel" type="submit" class="formbtn" value="<?= gtext('Cancel'); ?>" />
</div>
<?php
<?php
include 'formend.inc';
?>
</td></tr></tbody></table></form>
?>
</td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript">
<!--
emptyjail_change();
linuxjail_change();
//-->
<!--
emptyjail_change();
linuxjail_change();
//-->
</script>
<?php
include 'fend.inc';