#!/usr/bin/php-cgi
<?php
/*******************************************************
PRIVOXY WEB COMPRESSION
--------------------------
WRITTEN BY JOSE MARI REYES

HISTORY:

12-11-2017		COMPLETION
12-13-2017		Additional fields (port and listen address)

USAGE:

	
	FIELDS:
	
		enable				set 1 or 0
		user				username for xweb compression server
		password			password for xweb compression server
		complevel			Minimum |  Standard | Maximum
		server				xweb comression server
		listen_port			port to listen to
		listen_address		ip address to listen.  Dont set to bind to all interface
		
		*all fields are optional except for enable.  if not supplied the setting wont get set


		ENABLE COMPRESSION
		
		10.1.5.1/cgi-bin/compression?enable=1
		
		
		DISABLE COMPRESSION
		
		10.1.5.1/cgi-bin/compression?enable=0
		
		
		SHOW SETTINGS
		
		10.1.5.1/cgi-bin/compression?show
		
		
		
		
		SET COMPRESSION PARAMETERES
		
		10.1.5.1/cgi-bin/compression?set&user=myuser&password=mypass&complevel=Standard&server=xweb.gmn-usa.com
		
		
		SET PORT
		
		10.1.5.1/cgi-bin/compression?set&listen_port=3128
		
		
		RETURN 
		
		1	call set success
		0   nothing set
		

		RESTART SERVICE

		10.1.5.1/cgi-bin/compression?restart

******************************************************/

header('Access-Control-Allow-Origin: *');


	$user 			= ""; 
	$password		= "";
	$complevel		= "";
	$server			= "";
	

	if (isset($_REQUEST['enable']))
	{
		
		 $enable = $_REQUEST['enable'];
		 if (strlen($enable) < 1) return -1;	 
		 set_compression($enable);
		 
		 echo "1";
		exit;
	}
	
	if (isset($_REQUEST['show']))
	{
		echo "<pre>";
		echo show_compression();
		echo "</pre>";
		exit;
	}
	
	if (isset($_REQUEST['set']))
	{
		
		$user 			= $_REQUEST['user'];
		$password		= $_REQUEST['password'];
		$complevel		= $_REQUEST['complevel'];
		$server			= $_REQUEST['server'];
		$listen_port		= $_REQUEST['listen_port'];
		$listen_address		= $_REQUEST['listen_address'];
		
		set_general($user, $password, $complevel, $server, $listen_port, $listen_address);
		
		echo "1";
		exit;	
	}	


	if (isset($_REQUEST['restart']))
		restart_privoxy();


echo "0";


function restart_privoxy()
{
	$cmd = "/etc/init.d privoxy restart";
	exec($cmd);
}

//enable disable 1 or 0
function set_compression($state)
{
	$cmd = "uci set privoxy.@privoxy[0].xweb_enabled='$state'";
	exec($cmd);
	exec("uci commit privoxy");
	restart_privoxy();
}


//compleve (Minimum, Standard, Maximum)
//server: xweb.gmn-usa.com
function set_general($user, $password, $complevel, $server, $listen_port, $listen_address)
{

	if ($user != "")
	{
		$cmd = "uci set privoxy.@privoxy[0].xweb_username='$user'";
		exec($cmd);
	}
	
	if ($password != "")
	{	
		$cmd = "uci set privoxy.@privoxy[0].xweb_password='$password'";
		exec($cmd);
	}
	
	if ($server != "")
	{     echo $server;
		$cmd = "uci set privoxy.@privoxy[0].xweb_server='$server'";
		exec($cmd);
	}
	
	if ($complevel != "")
	{
		$cmd = "uci set privoxy.@privoxy[0].xweb_level='$complevel'";
		exec($cmd);
	}
	
	if ($listen_port != "")
	{
		$cmd = "uci set privoxy.@privoxy[0].listen_port='$listen_port'";
		exec($cmd);
	}
	
	
	if ($listen_address != "")
	{
		$cmd = "uci set privoxy.@privoxy[0].listen_interfaces='$listen_address'";
		exec($cmd);
	}
	
	exec("uci commit privoxy");
 	restart_privoxy();
}


function show_compression()
{
	$cmd = "uci show privoxy | grep 'xweb'";
	$v = shell_exec($cmd);
	$v = str_replace("privoxy.@privoxy[0].xweb_", "", $v);

	$cmd = "uci show privoxy | grep 'listen'";
	$v2 = shell_exec($cmd);
	$v2 = str_replace("privoxy.@privoxy[0].", "", $v2);

	return $v . $v2;

}



?>
