Current File : /home/inlingua/www/decay_sym/root/var/softaculous/apps/nginx/themes/admin/nginx_proxy_theme.php |
<?php
//////////////////////////////////////////////////////////////
//===========================================================
// WEBUZO CONTROL PANEL
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit
// Date: 10th Jan 2009
// Time: 21:00 hrs
// Site: https://webuzo.com/ (WEBUZO)
// ----------------------------------------------------------
// Please Read the Terms of Use at https://webuzo.com/terms
// ----------------------------------------------------------
//===========================================================
// (c) Softaculous Ltd.
//===========================================================
//////////////////////////////////////////////////////////////
if(!defined('SOFTACULOUS')){
die('Hacking Attempt');
}
function nginx_proxy_theme(){
global $globals, $l, $error, $users;
echo '
<div class="soft-smbox p-4">
<div class="sai_main_head">
<i class="fas fa-th-list fa-xl me-2"></i>'.__('Nginx Reverse Proxy').'
<span class="search_btn float-end">
<a href="javascript:void(0);" class="text-dark" data-bs-toggle="collapse" data-bs-target="#search_queue" aria-expanded="true" aria-controls="search_queue" title="'.$l['search'].'"><i class="fas fa-search"></i></a>
</span>
</div>
</div>
<div class="soft-smbox p-4 mt-4">
<div id="panel-background">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="system_setting_head" data-bs-toggle="tab" data-bs-target="#system_setting" type="button" role="tab" aria-controls="system_setting" aria-selected="true">'.__('System Proxy Settings').'</button>
</li>';
if(!empty($globals['WU_PROXY_PORT'])){
echo '
<li class="nav-item" role="presentation">
<button class="nav-link" id="user_setting_head" data-bs-toggle="tab" data-bs-target="#user_setting" type="button" role="tab" aria-controls="user_setting" aria-selected="false">'.__('User Proxy Settings').'</button>
</li>';
}
echo '
</ul>
</div>
<div class="tab-content" id="panel-body-part" style="border-top:0px;">
<div class="tab-pane fade p-3 active show" id="system_setting" role="tabpanel" aria-labelledby="system_setting_head">
<div class="row">';
if(!empty($globals['WU_PROXY_PORT'])){
echo '
<div class="alert alert-success text-center m-3" role="alert">'.
__('Nginx is configured as reverse proxy for apache2').'
</div>';
}
echo '
<div class="col-sm-10">
<div class="row">
<div class="col-sm-3">
<label class="sai_head">'.
__('HTTP Reverse Proxy Port').'
</label>
<input type="text" id="proxy_port" name="proxy_port" class="form-control" value="'.(empty($globals['WU_PROXY_PORT']) ? '8081' : $globals['WU_PROXY_PORT']).'" '.(!empty($globals['WU_PROXY_PORT']) ? 'disabled' : '').'>
</div>
<div class="col-sm-3">
<label class="sai_head">'.
__('HTTPS Reverse Proxy Port').'
</label>
<input type="text" id="proxy_https_port" name="proxy_https_port" class="form-control" value="'.(empty($globals['WU_PROXY_HTTPS_PORT']) ? '8082' : $globals['WU_PROXY_HTTPS_PORT']).'" '.(!empty($globals['WU_PROXY_PORT']) ? 'disabled' : '').'>
</div>
</div>
</div>
</div><br />
<div calss="row">
<div calss"cil-sm-5">
<input type="button" name="proxy_action" class="'.(empty($globals['WU_PROXY_PORT']) ? "btn btn-primary" : "btn btn-danger").'" value="'.(empty($globals['WU_PROXY_PORT']) ? __('Enable Reverse Proxy') : __('Disable Reverse Proxy')).'" data-proxy_action="1" data-proxy_status="'.(!empty($globals['WU_PROXY_PORT']) ? 'enabled' : 'disabled').'" onclick="return enable_disable_proxy(this)">
<input type="button" class="btn btn-primary" data-donereload="1" data-rebuild_config="1" value="'.__('Rebuild Configuration').'" name="rebuild_config" id="rebuild_config" onclick="rebuild_config(this)">
</div>
</div><br /><br />';
if(!empty($globals['WU_PROXY_PORT'])){
echo '
<div class="row">
<div class="col-sm-5">
<label class="sai_head">'.
__('Enable/Disable Reverse Proxy Cache (Default)').'
</label></br>
<span class="sai_exp2">'.
__('This will apply to all new accounts and any accounts that do not set caching preference.').'
</span>
</div>
<div class="col-sm-7">
<label class="switch" style="margin-left:20px;">
<input type="checkbox" class="checkbox" data-donereload="1" data-default_cache="1" data-default_cache_action="'.(empty($globals['disable_nginx_cache']) ? 'disable' : 'enable').'" '.(empty($globals['disable_nginx_cache']) ? 'checked' : '').' onclick="return enable_disable_cache(this)">
<span class="slider" '.(empty($globals['disable_nginx_cache']) ? 'title="'.__('Cache Enabled (Default)').'"' : 'title="'.__('Cache Disabled (Default)').'"').'></span>
</label>
</div>
</div><br />
<input type="button" class="btn btn-primary" data-donereload="1" value="'.__('Clear Cache For All Users').'" name="global_clear_cache" id="global_clear_cache" onclick="clear_cache(this)">
<input type="button" class="btn btn-primary" data-donereload="1" data-reset_cache_default="1" data-action="reset_cache_default" value="'.__('Reset Users Cache Settings To System Default').'" name="reset_cache_default" id="reset_cache_default" onclick="enable_disable_cache(this)">';
}
echo '
</div>
<div class="tab-pane fade p-3" id="user_setting" role="tabpanel" aria-labelledby="user_setting_head">
<div class="mb-4 mt-2" style="background-color:#e9ecef;">
<div class="collapse show" id="search_queue">
<form accept-charset="'.$globals['charset'].'" name="search" method="post" action=""; class="form-horizontal" >
<div class="row p-3 col-md-12 d-flex">
<div class="col-12 col-md-6">
<label class="sai_head">'.$l['user_search'].'</label><br/>
<select class="form-select ms-1 make-select2" s2-placeholder="'.$l['select_user'].'" s2-ajaxurl="'.$globals['index'].'act=users&api=json" s2-query="search" s2-data-key="users" s2-data-subkey="user" s2-result-add="'.htmlentities(json_encode([['text' => 'All', 'id' => 'all', 'value' => 'all']])).'" style="width: 100%" id="user_search" name="user_search">
<option value="'.optREQ('user_search').'" selected="selected">'.optREQ('user_search').'</option>
</select>
</div>
</div>
</form>
</div>
</div><hr>';
error_handle($error, "100%");
page_links();
echo '
<div class="table-responsive">
<div class="row">
<div class="col-sm-3">
<select class="form-select form-select-sm w-10" id="with_selected_options" onchange="with_selected_action(this)" disabled>
<option value="0">'.__('With Selected Action').'</option>
<option value="enable_cache_all">'.__('Enable Nginx Cache').'</option>
<option value="disable_cache_all">'.__('Disable Nginx Cache').'</option>
<option value="clear_cache_all">'.__('Clear Nginx Cache').'</option>
<option value="enable_proxy_all">'.__('Enable Nginx Proxy').'</option>
<option value="disable_proxy_all">'.__('Disable Nginx Proxy').'</option>
</select>
</div>
<div class="col-sm-2">
<input type="button" class="btn btn-primary" data-donereload="1" value="'.__('Go').'" name="enable_cache_all" id="enable_cache_all" onclick="enable_disable_cache(this)" style="display:none;">
<input type="button" class="btn btn-danger" value="'.__('Go').'" name="disable_cache_all" id="disable_cache_all" onclick="enable_disable_cache(this)" style="display:none;">
<input type="button" class="btn btn-primary" value="'.__('Go').'" name="clear_cache_all" id="clear_cache_all" onclick="clear_cache(this)" style="display:none;">
<input type="button" class="btn btn-primary" value="'.__('Go').'" name="enable_proxy_all" id="enable_proxy_all" onclick="enable_disable_user_proxy(this)" style="display:none;">
<input type="button" class="btn btn-danger" value="'.__('Go').'" name="disable_proxy_all" id="disable_proxy_all" onclick="enable_disable_user_proxy(this)" style="display:none;">
</div>
</div><br />
<table border="0" cellpadding="8" cellspacing="1" class="table table-hover-moz webuzo-table td_font">
<thead class="sai_head2">
<tr>
<th><input type="checkbox" id="checkAll"></th>
<th width="20%">'.__('User Name').'</th>
<th width="30%">'.__('Owner').'</th>
<th width="30%">'.__('Reverse Proxy').'</th>
<th width="20%" class="text-center">'.__('Caching Action').'</th>
</tr>
</thead>
<tbody id="dom_list">';
if(!empty($users)){
foreach ($users as $key => $val){
echo'
<tr id="tr'.md5($key).'">
<td>
<input type="checkbox" class="check" name="checked_user" value="'.$val['user'].'">
</td>
<td>
<span>'.$val['user'].'</span>
</td>
<td>
<span>'.(empty($val['owner']) ? 'root' : $val['owner']).'</span>
</td>
<td>
<label class="switch" style="margin-left:20px;">
<input type="checkbox" class="checkbox" data-donereload="1" data-proxy_user_action="1" data-users="'.$val['user'].'" '.(empty($val['disable_reverse_proxy']) ? 'checked' : '').' data-proxy_status="'.(empty($val['disable_reverse_proxy']) ? 'enabled' : 'disabled').'" onclick="return enable_disable_user_proxy(this)">
<span class="slider" '.(empty($val['disable_reverse_proxy']) ? 'title="'.__('Reverse Proxy Enabled').'"' : 'title="'.__('Reverse Proxy Disabled').'"').'></span>
</label>
</td>
<td>
<label class="switch" style="margin-left:20px;">
<input type="checkbox" class="checkbox" data-donereload="1" data-users="'.$val['user'].'" data-action="'.(empty($val['disable_nginx_cache']) ? 'disable' : 'enable').'" '.(empty($val['disable_nginx_cache']) ? 'checked' : '').' onclick="return enable_disable_cache(this)">
<span class="slider" '.(empty($val['disable_nginx_cache']) ? 'title="'.__('Cache Enabled').'"' : 'title="'.__('Cache Disabled').'"').'></span>
</label>
<input type="button" class="btn btn-primary" data-donereload="1" data-users="'.$val['user'].'" value="'.__('Clear Cache').'" name="clear_cache" id="'.$val['user'].'" onclick="clear_cache(this)">
</td>
</tr>';
}
}else{
echo '
<tr>
<td colspan="100"><h3 style="text-align: center">'.__('No Record found').'</h3></td>
</tr>';
}
echo '
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$("#checkAll").change(function () {
$(".check").prop("checked", $(this).prop("checked"));
});
var urlParams = new URLSearchParams(window.location.search);
var user_search = urlParams.get("user_search");
if(user_search){
$("#system_setting").removeClass("active show");
$("#system_setting_head").removeClass("active");
$("#user_setting").addClass("active show");
$("#user_setting_head").addClass("active");
}else{
$("#system_setting").addClass("active show");
$("#system_setting_head").addClass("active");
$("#user_setting").removeClass("active show");
$("#user_setting_head").removeClass("active");
}
$("input:checkbox").change(function() {
if($(".check:checked").length){
$("#with_selected_options").removeAttr("disabled");
}else{
$("#with_selected_options").prop("disabled", true);
}
});
$("#user_search").on("select2:select", function(){
user = $("#user_search option:selected").val();
window.location = "'.$globals['index'].'act='.$GLOBALS['act'].'&user_search="+user;
});
$("#proxy_port").on("keyup", function() {
var https_port = $("#proxy_port").val();
++https_port;
$("#proxy_https_port").val(https_port);
});
});
function enable_disable_cache(ele){
var jEle = $(ele);
if(ele.id == "enable_cache_all" || ele.id == "disable_cache_all"){
var arr = [];
$("input:checkbox[name=checked_user]:checked").each(function(){
var user = $(this).val();
arr.push($(this).val());
});
jEle.data("users", arr.join());
jEle.data("action", ele.id);
}
var d = jEle.data();
submitit(d, {
done_reload:window.location.href
});
}
function clear_cache(ele){
var jEle = $(ele);
if(ele.id == "clear_cache_all"){
var arr = [];
$("input:checkbox[name=checked_user]:checked").each(function(){
var user = $(this).val();
arr.push($(this).val());
});
jEle.data("users", arr.join());
jEle.data("clear_cache_all", 1);
}
if(ele.id == "global_clear_cache"){
jEle.data("global_clear_cache", 1);
}
var d = jEle.data();
d.clear_cache = 1;
submitit(d, {
done_reload:window.location.href
});
}
function rebuild_config(ele){
var jEle = $(ele);
var d = jEle.data();
submitit(d, {
done_reload:window.location.href
});
}
function enable_disable_proxy(ele){
var jEle = $(ele);
var d = jEle.data();
var port = $("#proxy_port").val();
var proxy_https_port = $("#proxy_https_port").val();
var enable_proxy = "";
if(!port){
var a = show_message_r(l.error, "'.__('Port field can not be empty').'");
a.alert = "alert-danger"
show_message(a);
return false;
}
if(d.proxy_status == "disabled"){
enable_proxy = 1;
}
d.enable_proxy = enable_proxy;
d.port = port;
d.proxy_https_port = proxy_https_port;
submitit(d, {
done_reload:window.location.href
});
}
function enable_disable_user_proxy(ele){
var jEle = $(ele);
var php_fpm = "'.$globals['NO_FASTCGI'].'";
if(php_fpm){
var a = show_message_r(l.error, "'.__('PHP-FPM(Fast-CGI) is not enabled hence can not disable reverse proxy.').'");
a.alert = "alert-danger"
show_message(a);
return false;
}
if(ele.id == "enable_proxy_all" || ele.id == "disable_proxy_all"){
var arr = [];
$("input:checkbox[name=checked_user]:checked").each(function(){
var user = $(this).val();
arr.push($(this).val());
});
jEle.data("users", arr.join());
jEle.data("proxy_user_action", 1);
if(ele.id == "enable_proxy_all"){
jEle.data("enable_proxy_all", 1);
}else{
jEle.data("disable_proxy_all", 1);
}
}
var d = jEle.data();
submitit(d, {
done_reload:window.location.href
});
}
function with_selected_action(){
var selected_option = $("#with_selected_options").val();
if(selected_option == 0){
var a = show_message_r(l.error, "'.__('Please select some action').'");
a.alert = "alert-danger"
show_message(a);
return false;
}
$("#enable_cache_all").hide();
$("#disable_cache_all").hide();
$("#clear_cache_all").hide();
$("#enable_proxy_all").hide();
$("#disable_proxy_all").hide();
$("#"+selected_option).show();
}
</script>';
}