Add support of bunkerweb part 2

This commit is contained in:
Alexey Berezhok
2026-04-28 00:26:58 +03:00
parent 592b954a9f
commit dae9aca295
4 changed files with 173 additions and 30 deletions

30
bin/v-bunkerweb-module Normal file → Executable file
View File

@@ -70,17 +70,16 @@ when :add
begin begin
api = HestiaBunkerWebApi.new("http://127.0.0.1:8888") api = HestiaBunkerWebApi.new("http://127.0.0.1:8888")
existing_services = api.list_services() existing_services = api.list_services()
if existing_services.nil? || existing_services.strip.empty? if existing_services.nil?
result_arr = [] result_arr = []
else else
services_data = JSON.parse(existing_services) if existing_services["services"]
if services_data["services"] if existing_services["services"].any? { |s| s["id"] == v_domain }
if services_data["services"].any? { |s| s["id"] == v_domain }
hestia_print_error_message_to_cli "domain already exists" hestia_print_error_message_to_cli "domain already exists"
log_event E_EXISTS, $ARGUMENTS log_event E_EXISTS, $ARGUMENTS
exit 1 exit 1
end end
result_arr = services_data["services"] result_arr = existing_services["services"]
else else
result_arr = [] result_arr = []
end end
@@ -109,12 +108,11 @@ when :delete
begin begin
api = HestiaBunkerWebApi.new("http://127.0.0.1:8888") api = HestiaBunkerWebApi.new("http://127.0.0.1:8888")
existing_services = api.list_services() existing_services = api.list_services()
if existing_services.nil? || existing_services.strip.empty? if existing_services.nil?
result_arr = [] result_arr = []
else else
services_data = JSON.parse(existing_services) if existing_services["services"]
if services_data["services"] result_arr = existing_services["services"]
result_arr = services_data["services"]
else else
result_arr = [] result_arr = []
end end
@@ -146,12 +144,11 @@ when :addssl, :updssl
begin begin
api = HestiaBunkerWebApi.new("http://127.0.0.1:8888") api = HestiaBunkerWebApi.new("http://127.0.0.1:8888")
existing_services = api.list_services() existing_services = api.list_services()
if existing_services.nil? || existing_services.strip.empty? if existing_services.nil?
result_arr = [] result_arr = []
else else
services_data = JSON.parse(existing_services) if existing_services["services"]
if services_data["services"] result_arr = existing_services["services"]
result_arr = services_data["services"]
else else
result_arr = [] result_arr = []
end end
@@ -174,12 +171,11 @@ when :list
begin begin
api = HestiaBunkerWebApi.new("http://127.0.0.1:8888") api = HestiaBunkerWebApi.new("http://127.0.0.1:8888")
existing_services = api.list_services() existing_services = api.list_services()
if existing_services.nil? || existing_services.strip.empty? if existing_services.nil?
result_arr = [] result_arr = []
else else
services_data = JSON.parse(existing_services) if existing_services["services"]
if services_data["services"] result_arr = existing_services["services"]
result_arr = services_data["services"]
else else
result_arr = [] result_arr = []
end end

View File

@@ -0,0 +1,64 @@
<?php
use function Hestiacp\quoteshellarg\quoteshellarg;
$TAB = "EXTMODULES";
// Main include
include $_SERVER["DOCUMENT_ROOT"] . "/inc/main.php";
// Check user
if ($_SESSION["userContext"] != "admin") {
header("Location: /list/user");
exit();
}
exec(
HESTIA_CMD . "v-ext-modules state bunkerweb_module json",
$output,
$return_var,
);
$check_passenger_enabled = json_decode(implode("", $output), true);
if (
$return_var != 0 ||
empty($check_passenger_enabled) ||
$check_passenger_enabled[0]["STATE"] != "enabled"
) {
header("Location: /list/extmodules/");
exit();
}
unset($output);
$error_message = "";
// Data
exec(
HESTIA_CMD . "v-ext-modules-run bunkerweb_module list json",
$output,
$return_var,
);
$bunkerweb_list = [];
if ($return_var == 0) {
$bunkerweb_list = json_decode(implode("", $output), true);
} else {
$error_message = $output;
}
unset($output);
//Get current ip
exec(HESTIA_CMD . "v-list-sys-ips json", $output, $return_var);
$server_ip = "127.0.0.1";
if ($return_var == 0) {
$server_ip_list = json_decode(implode("", $output), true);
if (!empty($server_ip_list)) {
$server_ip = array_key_first($server_ip_list);
}
}
unset($output);
// Render page
render_page($user, $TAB, "extmodules/extmodules_bunkerweb_module");
// Back uri
$_SESSION["back"] = $_SERVER["REQUEST_URI"];

View File

@@ -0,0 +1,82 @@
<!-- Begin toolbar -->
<div class="toolbar">
<div class="toolbar-inner">
<div class="toolbar-buttons">
<a class="button button-secondary button-back js-button-back" href="/list/extmodules/">
<i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
</a>
</div>
</div>
</div>
<!-- End toolbar -->
<div class="container">
<?php if (!empty($error_message)) { ?>
<div class="u-text-center inline-alert inline-alert-danger u-mb20" role="alert">
<i class="fas fa-circle-exclamation"></i>
<p><?= $error_message ?></p>
</div>
<?php } ?>
<h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _(
"List of services in bunkerweb",
) ?></h1>
<div class="units-table js-units-container">
<div class="units-table-header">
<div class="units-table-cell u-text-center"><?= _("ID") ?></div>
<div class="units-table-cell u-text-center"><?= _("Method") ?></div>
<div class="units-table-cell u-text-center"><?= _("Is draft") ?></div>
<div class="units-table-cell u-text-center"><?= _("Creation date") ?></div>
<div class="units-table-cell u-text-center"><?= _("Last update") ?></div>
<div class="units-table-cell u-text-center"><?= _("Template") ?></div>
<div class="units-table-cell u-text-center"><?= _("Security mode") ?></div>
</div>
<?php foreach ($bunkerweb_list as $key => $value) { ?>
<div class="units-table-row js-unit">
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("ID") ?>:</span>
<?php echo $bunkerweb_list[$key]["id"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Method") ?>:</span>
<?php echo $bunkerweb_list[$key]["method"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Is draft") ?>:</span>
<?php echo $bunkerweb_list[$key]["is_draft"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Creation date") ?>:</span>
<?php echo $bunkerweb_list[$key]["creation_date"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Last update") ?>:</span>
<?php echo $bunkerweb_list[$key]["last_update"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Template") ?>:</span>
<?php echo $bunkerweb_list[$key]["template"]; ?>
</div>
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("Security mode") ?>:</span>
<?php echo $bunkerweb_list[$key]["security_mode"]; ?>
</div>
</div>
<?php } ?>
</div>
</div>
<footer class="app-footer">
<div class="container app-footer-inner">
<p>
<?= _("Bunkerweb service list") ?>.
<?= _("For unning bunkwerweb service go to") ?>
<a href="https://<?= $server_ip ?>/bw"><?= _("bunkerweb admin page") ?></a>
</p>
</div>
</footer>

View File

@@ -2,7 +2,7 @@
<div class="toolbar"> <div class="toolbar">
<div class="toolbar-inner"> <div class="toolbar-inner">
<div class="toolbar-buttons"> <div class="toolbar-buttons">
<a class="button button-secondary button-back js-button-back" href="/list/server/"> <a class="button button-secondary button-back js-button-back" href="/list/extmodules/">
<i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?> <i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
</a> </a>
</div> </div>
@@ -12,19 +12,17 @@
<div class="container"> <div class="container">
<?php <?php if (!empty($error_message)) { ?>
if (!empty($error_message)) {
?>
<div class="u-text-center inline-alert inline-alert-danger u-mb20" role="alert"> <div class="u-text-center inline-alert inline-alert-danger u-mb20" role="alert">
<i class="fas fa-circle-exclamation"></i> <i class="fas fa-circle-exclamation"></i>
<p><?= $error_message ?></p> <p><?= $error_message ?></p>
</div> </div>
<?php <?php } ?>
}
?>
<h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Available PHP list") ?></h1> <h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _(
"Available PHP list",
) ?></h1>
<div class="units-table js-units-container"> <div class="units-table js-units-container">
<div class="units-table-header"> <div class="units-table-header">
@@ -32,9 +30,7 @@ if (!empty($error_message)) {
<div class="units-table-cell u-text-center"><?= _("Action") ?></div> <div class="units-table-cell u-text-center"><?= _("Action") ?></div>
</div> </div>
<?php <?php foreach ($phps as $key => $value) { ?>
foreach ($phps as $key => $value) {
?>
<div class="units-table-row js-unit"> <div class="units-table-row js-unit">
<div class="units-table-cell u-text-center"> <div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("PHP version") ?>:</span> <span class="u-hide-desktop"><?= _("PHP version") ?>:</span>
@@ -43,7 +39,12 @@ if (!empty($error_message)) {
<div class="units-table-cell u-text-center-desktop"> <div class="units-table-cell u-text-center-desktop">
<span class="u-hide-desktop"><?= _("Action") ?>:</span> <span class="u-hide-desktop"><?= _("Action") ?>:</span>
<?= _("Change modules list") ?> <?= _("Change modules list") ?>
<a href="/extm/php_brepo_modules/edit/?ver=<?= urlencode($phps[$key]['PHPVER']) ?>" title="<?= _("Change modules list for PHP") ?><?= $phps[$key]['PHPVER'] ?>"> <a href="/extm/php_brepo_modules/edit/?ver=<?= urlencode(
$phps[$key]["PHPVER"],
) ?>" title="<?=
_("Change modules list for PHP")
$phps[$key]["PHPVER"]
?>">
<i class="fa-solid fa-gear icon-purple"></i> <i class="fa-solid fa-gear icon-purple"></i>
</a> </a>
</div> </div>