From e94a9fb5e4b6a2bc07e0bb4cf8ea35fc70c4bbf0 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 10 May 2012 12:31:27 -0400
Subject: [PATCH] Merged revisions 3049-3051,3053-3054,3058,3070,3074-3077,3082,3086-3088,3091-3092,3094-3095 from stable branch.

---
 server/plugins-available/firewall_plugin.inc.php |   59 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 41 insertions(+), 18 deletions(-)

diff --git a/server/plugins-available/firewall_plugin.inc.php b/server/plugins-available/firewall_plugin.inc.php
index 8525bf3..6697798 100644
--- a/server/plugins-available/firewall_plugin.inc.php
+++ b/server/plugins-available/firewall_plugin.inc.php
@@ -1,7 +1,7 @@
 <?php
 
 /*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -32,6 +32,19 @@
 	
 	var $plugin_name = 'firewall_plugin';
 	var $class_name  = 'firewall_plugin';
+	
+	//* This function is called during ispconfig installation to determine
+	//  if a symlink shall be created for this plugin.
+	function onInstall() {
+		global $conf;
+		
+		if($conf['bastille']['installed'] = true && $conf['services']['firewall'] == true) {
+			return true;
+		} else {
+			return false;
+		}
+		
+	}
 	
 		
 	/*
@@ -67,42 +80,52 @@
 		$tcp_ports = '';
 		$udp_ports = '';
 		
-		$ports = explode(',',$data["new"]["tcp_port"]);
+		$ports = explode(',',$data['new']['tcp_port']);
 		if(is_array($ports)) {
 			foreach($ports as $p) {
-				$p_int = intval($p);
-				if($p_int > 0) $tcp_ports .= $p_int . ' ';
+				if(strstr($p,':')) {
+					$p_parts = explode(':',$p);
+					$p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
+				} else {
+					$p_clean = intval($p);
+				}
+				$tcp_ports .= $p_clean . ' ';
 			}
 		}
 		$tcp_ports = trim($tcp_ports);
 		
-		$ports = explode(',',$data["new"]["udp_port"]);
+		$ports = explode(',',$data['new']['udp_port']);
 		if(is_array($ports)) {
 			foreach($ports as $p) {
-				$p_int = intval($p);
-				if($p_int > 0) $udp_ports .= $p_int . ' ';
+				if(strstr($p,':')) {
+					$p_parts = explode(':',$p);
+					$p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
+				} else {
+					$p_clean = intval($p);
+				}
+				$udp_ports .= $p_clean . ' ';
 			}
 		}
 		$udp_ports = trim($udp_ports);
 		
-		
+		$app->load('tpl');
 		$tpl = new tpl();
-		$tpl->newTemplate("bastille-firewall.cfg.master");
+		$tpl->newTemplate('bastille-firewall.cfg.master');
 		
-		$tpl->setVar("TCP_PUBLIC_SERVICES",$tcp_ports);
-		$tpl->setVar("UDP_PUBLIC_SERVICES",$udp_ports);
+		$tpl->setVar('TCP_PUBLIC_SERVICES',$tcp_ports);
+		$tpl->setVar('UDP_PUBLIC_SERVICES',$udp_ports);
 		
 		file_put_contents('/etc/Bastille/bastille-firewall.cfg',$tpl->grab());
 		$app->log('Writing firewall configuration /etc/Bastille/bastille-firewall.cfg',LOGLEVEL_DEBUG);
 		unset($tpl);
 		
-		if($data["new"]["active"] == 'y')) {
-			exec('/etc/init.d/bastille-firewall restart');
+		if($data['new']['active'] == 'y') {
+			exec($conf['init_scripts'] . '/' . 'bastille-firewall restart');
 			if(@is_file('/etc/debian_version')) exec('update-rc.d bastille-firewall defaults');
 			$app->log('Restarting the firewall',LOGLEVEL_DEBUG);
 		} else {
-			exec('/etc/init.d/bastille-firewall stop');
-			if(@is_file('/etc/debian_version')) exec('update-rc.d bastille-firewall remove');
+			exec($conf['init_scripts'] . '/' . 'bastille-firewall stop');
+			if(@is_file('/etc/debian_version')) exec('update-rc.d -f bastille-firewall remove');
 			$app->log('Stopping the firewall',LOGLEVEL_DEBUG);
 		}
 		
@@ -112,8 +135,8 @@
 	function delete($event_name,$data) {
 		global $app, $conf;
 		
-		exec('/etc/init.d/bastille-firewall stop');
-		if(@is_file('/etc/debian_version')) exec('update-rc.d bastille-firewall remove');
+		exec($conf['init_scripts'] . '/' . 'bastille-firewall stop');
+		if(@is_file('/etc/debian_version')) exec('update-rc.d -f bastille-firewall remove');
 		$app->log('Stopping the firewall',LOGLEVEL_DEBUG);
 		
 	}
@@ -123,4 +146,4 @@
 
 } // end class
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1