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>';
	
}