From 181529089411d6f55333b22d169e87d3f5137eb5 Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Thu, 30 Jun 2011 12:03:31 -0400
Subject: [PATCH] Remove Microsoft Line endings. Some files have mixed line endings that make Subverison unhappy
---
server/plugins-available/ufw_firewall_plugin.inc.php | 1008 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 504 insertions(+), 504 deletions(-)
diff --git a/server/plugins-available/ufw_firewall_plugin.inc.php b/server/plugins-available/ufw_firewall_plugin.inc.php
index 4eb1e1f..be10cf6 100644
--- a/server/plugins-available/ufw_firewall_plugin.inc.php
+++ b/server/plugins-available/ufw_firewall_plugin.inc.php
@@ -1,504 +1,504 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class ufw_firewall_plugin {
-
- var $plugin_name = 'ufw_firewall_plugin';
- var $class_name = 'ufw_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['ufw']['installed'] == true && $conf['services']['firewall'] == true) {
- return true;
- } else {
- return false;
- }
-
- }
-
-
- /*
- This function is called when the plugin is loaded
- */
-
- function onLoad() {
- global $app;
-
- /*
- Register for the events
- */
-
- $app->plugins->registerEvent('firewall_insert',$this->plugin_name,'insert_basic');
- $app->plugins->registerEvent('firewall_update',$this->plugin_name,'update_basic');
- $app->plugins->registerEvent('firewall_delete',$this->plugin_name,'update_basic');
-
- $app->plugins->registerEvent('firewall_forward_insert',$this->plugin_name,'insert_forward');
- $app->plugins->registerEvent('firewall_forward_update',$this->plugin_name,'update_forward');
- $app->plugins->registerEvent('firewall_forward_delete',$this->plugin_name,'update_forward');
-
- $app->plugins->registerEvent('firewall_filter_insert',$this->plugin_name,'insert_filter');
- $app->plugins->registerEvent('firewall_filter_update',$this->plugin_name,'update_filter');
- $app->plugins->registerEvent('firewall_filter_delete',$this->plugin_name,'delete_filter');
-
- $app->plugins->registerEvent('server_insert',$this->plugin_name,'updateSettings');
- $app->plugins->registerEvent('server_update',$this->plugin_name,'updateSettings');
-
-
-
- }
-
-
- function insert_basic($event_name,$data) {
- global $app, $conf;
-
- $this->update_basic($event_name,$data);
-
- }
-
- function update_basic($event_name,$data) {
- global $app, $conf;
-
- $tcp_ports = '';
- $udp_ports = '';
-
- $delete_rule = ($data["new"]["active"] == "n" ? "delete " : "");
- /*
- $ports = explode(',',$data["new"]["tcp_port"]);
- if(is_array($ports)) {
- foreach($ports as $p) {
- if(strstr($p,':')) {
- $p_parts = explode(':',$p);
- $p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
- } else {
- $p_clean = intval($p);
- }
-
- //system("ufw $delete_rule allow " . $p_clean . "/tcp");
-
- }
- }*/
-
- system("ufw $delete_rule allow out" . $data["new"]["tcp_port"] . "/tcp");
- system("ufw $delete_rule allow in" . $data["new"]["tcp_port"] . "/tcp");
- system("ufw $delete_rule allow out" . $data["new"]["udp_port"] . "/udp");
- system("ufw $delete_rule allow in" . $data["new"]["udp_port"] . "/udp");
- //$tcp_ports = trim($tcp_ports);
- /*
- $ports = explode(',',$data["new"]["udp_port"]);
- if(is_array($ports)) {
- foreach($ports as $p) {
- if(strstr($p,':')) {
- $p_parts = explode(':',$p);
- $p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
- } else {
- $p_clean = intval($p);
- }
-
-
- }
- }
-
- system("ufw $delete_rule allow " . $p_clean . "/udp");
- */
-
- if($data["new"]["active"] == 'y') {
- exec('/etc/init.d/ufw force-reload');
- $app->log('Restarting the firewall',LOGLEVEL_DEBUG);
- } else {
- exec('/etc/init.d/ufw force-reload');
- $app->log('Flushing the firewall',LOGLEVEL_DEBUG);
- }
-
-
- }
-
-
- function insert_filter($event_name,$data) {
- global $app, $conf;
-
- $this->update_filter($event_name,$data);
-
- }
-
- function getCidr($mask) {
- $long = ip2long($mask);
- $base = ip2long('255.255.255.255');
- return 32-log(($long ^ $base)+1,2);
- }
-
- function update_filter($event_name,$data) {
- global $app, $conf;
-
- $app->uses("getconf");
- $server_config = $app->getconf->get_server_config($conf["server_id"], 'ufw');
- $network = $server_config["ufw_network"];
-
- $records = $app->db->queryAllRecords(
- "SELECT
- protocol,
- IF
- (src_from_port=src_to_port, src_from_port, CONCAT(src_from_port, ':',src_to_port))
- AS
- src_port,
- IF
- (dst_from_port=dst_to_port, dst_from_port, CONCAT(dst_from_port, ':',dst_to_port))
- AS
- dst_port,
- IF
- (src_ip='0.0.0.0','any',src_ip)
- AS
- src_ip,
- IF
- (dst_ip='0.0.0.0','any',dst_ip)
- AS
- dst_ip,
- src_netmask,
- dst_netmask,
- inbound_policy,
- outbound_policy,
- rule_id,
- active
- FROM
- firewall_filter
- ORDER BY
- rule_id
- ASC");
-
- $commands = array();
- foreach ($records as $record) {
- $src_netmask = $this->getCidr($record["src_netmask"]);
- $dst_netmask = $this->getCidr($record["dst_netmask"]);
- $src_port = ($record["src_port"] == "0:65535" ? "" : " port " .$record["src_port"]);
- $dst_port = ($record["dst_port"] == "0:65535" ? "" : " port " . $record["dst_port"]);
- $src_ip = ($record["src_ip"] == "any" ? "any" : $record["src_ip"] . "/" . $src_netmask);
- $dst_ip = ($record["dst_ip"] == "any" ? "any" : $record["dst_ip"] . "/" . $dst_netmask);
- //$protocol = $record["protocol"];
- $delete = ($record["active"] == "n" ? true : false);
- //$protocols = array_split($record["protocol"]);
- //$inbound = ($record["inbound"] == 0 ? "deny " : "allow");
- //$outbound = ($record["outbound"] == 0 ? "deny out" : "allow out");
-
- //foreach ($protocols as $protocol) {
-
-
- $ufw = new UFW();
- //$ufw->setDelete($record["active"] == "n");
- $ufw->setRuleID($record["rule_id"]);
- $ufw->setSrcIP($src_ip);
- $ufw->setDstIP($dst_ip);
- $ufw->setSrcPort($src_port);
- $ufw->setDstPort($dst_port);
- $ufw->setInboundPolicy($record["inbound_policy"]);
- $ufw->setOutboundPolicy($record["outbound_policy"]);
- $ufw->setProtocol($record["protocol"]);
- $ufw->setNetwork($network);
-
- if ($delete) {
- $ufw->delete();
- } else {
- $ufw->insert();
- }
- //}
-
- /*
- if ($record["active"] == 'n') {
- $inbound = ($record["inbound"] == 0 ? "deny " : "allow");
- $outbound = ($record["outbound"] == 0 ? "deny out" : "allow out");
- array_push($commands, "ufw deny proto udp from $src_ip $src_port to $dst_ip $dst_port");
- if ($protocol == "tcp/udp") {
- array_push($commands, "ufw delete $inbound proto udp from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw delete $outbound proto udp from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw delete $inbound proto tcp from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw delete $outbound proto tcp from $src_ip $src_port to $dst_ip $dst_port");
- } else {
- array_push($commands, "ufw delete $inbound proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw delete $outbound proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
- }
- } elseif ($record["inbound"] == 0) {
- if ($protocol == "tcp/udp") {
- array_push($commands, "ufw deny proto udp from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw deny proto tcp from $src_ip $src_port to $dst_ip $dst_port");
- } else {
- array_push($commands, "ufw deny proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
- }
-
- } elseif ($record["outbound"] == 0) {
- if ($protocol == "tcp/udp") {
- array_push($commands, "ufw deny out proto udp from $network to any $dst_port");
- array_push($commands, "ufw deny out proto tcp from $network to any $dst_port");
- } else {
- array_push($commands, "ufw deny out proto $protocol from $network to any $dst_port");
- }
- }*/
-
-
- }
-
- /*
-
- $records = $app->db->queryAllRecords(
- "SELECT
- protocol,
- IF
- (src_from_port=src_to_port, src_from_port, CONCAT(src_from_port, ':',src_to_port))
- AS
- src_port,
- IF
- (dst_from_port=dst_to_port, dst_from_port, CONCAT(dst_from_port, ':',dst_to_port))
- AS
- dst_port,
- IF
- (src_ip='0.0.0.0','any',src_ip)
- AS
- src_ip,
- IF
- (dst_ip='0.0.0.0','any',dst_ip)
- AS
- dst_ip,
- src_netmask,
- dst_netmask,
- inbound,
- outbound,
- active
- FROM
- firewall_filter
- WHERE
- inbound=1
- OR
- outbound=1
- AND
- active='y'");
-
-
- foreach ($records as $record) {
- $src_netmask = $this->getCidr($record["src_netmask"]);
- $dst_netmask = $this->getCidr($record["dst_netmask"]);
- $src_port = ($record["src_port"] == "0:65535" ? "" : " port " .$record["src_port"]);
- $dst_port = ($record["dst_port"] == "0:65535" ? "" : " port " . $record["dst_port"]);
- $src_ip = ($record["src_ip"] == "any" ? "any" : $record["src_ip"] . "/" . $src_netmask);
- $dst_ip = ($record["dst_ip"] == "any" ? "any" : $record["dst_ip"] . "/" . $dst_netmask);
- $protocol = $record["protocol"];
- $outbound = ($record["outbound"] == 1 ? "out" : "");
-
-
-
- if ($record["inbound"] == 1) {
- if ($protocol == "tcp/udp") {
- array_push($commands, "ufw allow proto udp from $src_ip $src_port to $dst_ip $dst_port");
- array_push($commands, "ufw allow proto tcp from $src_ip $src_port to $dst_ip $dst_port");
- } else {
- array_push($commands, "ufw allow proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
- }
-
- } elseif ($record["outbound"] == 1) {
- if ($protocol == "tcp/udp") {
- array_push($commands, "ufw allow out proto udp from $network to any $dst_port");
- array_push($commands, "ufw allow out proto tcp from $network to any $dst_port");
- } else {
- array_push($commands, "ufw allow out proto $protocol from $network to any $dst_port");
- }
- }
-
-
- }
-
- foreach ($commands as $command) {
- system($command);
- }
- */
- }
-
- function insert_forward($event_name,$data) {
- global $app, $conf;
-
- $this->update_filter($event_name,$data);
-
- }
-
- function update_forward($event_name,$data) {
- global $app, $conf;
-
-
-
- }
-
- //update server config
-
- function backupConfigs()
- {
- copy('/etc/default/ufw','/etc/default/ufw~');
- copy('/etc/ufw/ufw.conf','/etc/ufw/ufw.conf~');
- copy('/etc/ufw/before.rules','/etc/ufw/before.rules~');
- }
-
- function updateSettings($event_name,$data) {
- global $app, $conf;
-
- // get the config
- $app->uses("getconf");
- $server_config = $app->getconf->get_server_config($conf["server_id"], 'ufw');
-
-
- if(is_dir('/etc/ufw') && is_file('/etc/default/ufw')) {
- $this->backupConfigs();
-
- $app->load('tpl');
-
- $ufw_tpl = new tpl();
- $ufw_tpl->newTemplate("ufw.conf.master");
-
- $ufw_tpl->setVar('enable',($server_config["ufw_enable"] == "" ? "no" : $server_config["ufw_enable"]));
- $ufw_tpl->setVar('log_level',$server_config["ufw_log_level"]);
-
-
- file_put_contents('/etc/ufw/ufw.conf',$ufw_tpl->grab());
- unset($ufw_tpl);
-
- $app->log("Changed UFW settings",LOGLEVEL_DEBUG);
-
- $ufw_tpl = new tpl();
- $ufw_tpl->newTemplate("ufw.default.master");
-
- $ufw_tpl->setVar('ipv6',$server_config["ufw_ipv6"] == "" ? "no" : $server_config["ufw_ipv6"]);
- $ufw_tpl->setVar('default_input_policy',$server_config["ufw_default_input_policy"]);
- $ufw_tpl->setVar('default_output_policy',$server_config["ufw_default_output_policy"]);
- $ufw_tpl->setVar('default_forward_policy',$server_config["ufw_default_forward_policy"]);
- $ufw_tpl->setVar('default_application_policy',$server_config["ufw_default_application_policy"]);
- $ufw_tpl->setVar('manage_builtins',$server_config["ufw_manage_builtins"] == "" ? "no" : $server_config["ufw_manage_builtins"]);
-
- file_put_contents('/etc/default/ufw',$ufw_tpl->grab());
- unset($ufw_tpl);
-
- $app->log("Changed default UFW settings",LOGLEVEL_DEBUG);
-
- $app->services->restartServiceDelayed('ufw','--force-reload');
-
- } else {
- $app->log("Ubuntu Uncomplicated Firewall configuration not available for this linux distribution.",LOGLEVEL_DEBUG);
- }
-
- }
-
-
-
-
-} // end class
-
-class UFW {
-
- var $_delete = false;
- var $_ufwCmd = "ufw";
- var $_inboundPolicy = "allow";
- var $_outboundPolicy = "allow";
- var $_protocol = "tcp";
- var $_ruleID = 1;
- var $_srcIP;
- var $_dstIP;
- var $_srcPort;
- var $_dstPort;
- var $_network = "0.0.0.0/24";
-
- function UFW() {
-
- }
-
- function setDelete($delete) {
- $this->_delete = $delete;
- }
-
- function setInboundPolicy($policy) {
- $this->_inboundPolicy = $policy;
- }
-
- function setOutboundPolicy($policy) {
- $this->_outboundPolicy = $policy;
- }
-
- function setProtocol($protocol) {
- $this->_outboundPolicy = $protocol;
- }
-
- function setRuleID($id) {
- $this->_ruleID = $id;
- }
-
- function setSrcIP($ip) {
- $this->_srcIP = $ip;
- }
-
- function setDstIP($ip) {
- $this->_dstIP = $ip;
- }
-
- function setSrcPort($port) {
- $this->_srcPort = $port;
- }
-
- function setDstPort($port) {
- $this->_dstPort = $port;
- }
-
- function setNetwork($network) {
- $this->_network = $network;
- }
-
-
- function insert() {
- $protocols = split("/",$this->_protocol);
- foreach ($protocols as $protocol) {
- $inbound = sprintf("ufw insert %s %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_inboundPolicy, $protocol, $this->_srcIP, $this->_srcPort, $this->_dstIP, $this->_dstPort);
- $outbound = sprintf("ufw insert %s %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_outboundPolicy, $protocol, $this->_network, $this->_srcPort, $this->_dstIP, $this->_dstPort);
-
- echo $inbound."\n";
- echo $outbound."\n";
- system($inbound);
- system($outbound);
- }
- }
-
- function delete() {
- $protocols = split("/",$this->_protocol);
- foreach ($protocols as $protocol) {
- $inbound = sprintf("ufw delete %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_inboundPolicy, $protocol, $this->_srcIP, $this->_srcPort, $this->_dstIP, $this->_dstPort);
- $outbound = sprintf("ufw delete %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_outboundPolicy, $protocol, $this->_network, $this->_srcPort, $this->_dstIP, $this->_dstPort);
-
- echo $inbound."\n";
- echo $outbound."\n";
-
- system($inbound);
- system($outbound);
- }
- }
-
-}
-
-?>
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class ufw_firewall_plugin {
+
+ var $plugin_name = 'ufw_firewall_plugin';
+ var $class_name = 'ufw_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['ufw']['installed'] == true && $conf['services']['firewall'] == true) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+
+ /*
+ This function is called when the plugin is loaded
+ */
+
+ function onLoad() {
+ global $app;
+
+ /*
+ Register for the events
+ */
+
+ $app->plugins->registerEvent('firewall_insert',$this->plugin_name,'insert_basic');
+ $app->plugins->registerEvent('firewall_update',$this->plugin_name,'update_basic');
+ $app->plugins->registerEvent('firewall_delete',$this->plugin_name,'update_basic');
+
+ $app->plugins->registerEvent('firewall_forward_insert',$this->plugin_name,'insert_forward');
+ $app->plugins->registerEvent('firewall_forward_update',$this->plugin_name,'update_forward');
+ $app->plugins->registerEvent('firewall_forward_delete',$this->plugin_name,'update_forward');
+
+ $app->plugins->registerEvent('firewall_filter_insert',$this->plugin_name,'insert_filter');
+ $app->plugins->registerEvent('firewall_filter_update',$this->plugin_name,'update_filter');
+ $app->plugins->registerEvent('firewall_filter_delete',$this->plugin_name,'delete_filter');
+
+ $app->plugins->registerEvent('server_insert',$this->plugin_name,'updateSettings');
+ $app->plugins->registerEvent('server_update',$this->plugin_name,'updateSettings');
+
+
+
+ }
+
+
+ function insert_basic($event_name,$data) {
+ global $app, $conf;
+
+ $this->update_basic($event_name,$data);
+
+ }
+
+ function update_basic($event_name,$data) {
+ global $app, $conf;
+
+ $tcp_ports = '';
+ $udp_ports = '';
+
+ $delete_rule = ($data["new"]["active"] == "n" ? "delete " : "");
+ /*
+ $ports = explode(',',$data["new"]["tcp_port"]);
+ if(is_array($ports)) {
+ foreach($ports as $p) {
+ if(strstr($p,':')) {
+ $p_parts = explode(':',$p);
+ $p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
+ } else {
+ $p_clean = intval($p);
+ }
+
+ //system("ufw $delete_rule allow " . $p_clean . "/tcp");
+
+ }
+ }*/
+
+ system("ufw $delete_rule allow out" . $data["new"]["tcp_port"] . "/tcp");
+ system("ufw $delete_rule allow in" . $data["new"]["tcp_port"] . "/tcp");
+ system("ufw $delete_rule allow out" . $data["new"]["udp_port"] . "/udp");
+ system("ufw $delete_rule allow in" . $data["new"]["udp_port"] . "/udp");
+ //$tcp_ports = trim($tcp_ports);
+ /*
+ $ports = explode(',',$data["new"]["udp_port"]);
+ if(is_array($ports)) {
+ foreach($ports as $p) {
+ if(strstr($p,':')) {
+ $p_parts = explode(':',$p);
+ $p_clean = intval($p_parts[0]).':'.intval($p_parts[1]);
+ } else {
+ $p_clean = intval($p);
+ }
+
+
+ }
+ }
+
+ system("ufw $delete_rule allow " . $p_clean . "/udp");
+ */
+
+ if($data["new"]["active"] == 'y') {
+ exec('/etc/init.d/ufw force-reload');
+ $app->log('Restarting the firewall',LOGLEVEL_DEBUG);
+ } else {
+ exec('/etc/init.d/ufw force-reload');
+ $app->log('Flushing the firewall',LOGLEVEL_DEBUG);
+ }
+
+
+ }
+
+
+ function insert_filter($event_name,$data) {
+ global $app, $conf;
+
+ $this->update_filter($event_name,$data);
+
+ }
+
+ function getCidr($mask) {
+ $long = ip2long($mask);
+ $base = ip2long('255.255.255.255');
+ return 32-log(($long ^ $base)+1,2);
+ }
+
+ function update_filter($event_name,$data) {
+ global $app, $conf;
+
+ $app->uses("getconf");
+ $server_config = $app->getconf->get_server_config($conf["server_id"], 'ufw');
+ $network = $server_config["ufw_network"];
+
+ $records = $app->db->queryAllRecords(
+ "SELECT
+ protocol,
+ IF
+ (src_from_port=src_to_port, src_from_port, CONCAT(src_from_port, ':',src_to_port))
+ AS
+ src_port,
+ IF
+ (dst_from_port=dst_to_port, dst_from_port, CONCAT(dst_from_port, ':',dst_to_port))
+ AS
+ dst_port,
+ IF
+ (src_ip='0.0.0.0','any',src_ip)
+ AS
+ src_ip,
+ IF
+ (dst_ip='0.0.0.0','any',dst_ip)
+ AS
+ dst_ip,
+ src_netmask,
+ dst_netmask,
+ inbound_policy,
+ outbound_policy,
+ rule_id,
+ active
+ FROM
+ firewall_filter
+ ORDER BY
+ rule_id
+ ASC");
+
+ $commands = array();
+ foreach ($records as $record) {
+ $src_netmask = $this->getCidr($record["src_netmask"]);
+ $dst_netmask = $this->getCidr($record["dst_netmask"]);
+ $src_port = ($record["src_port"] == "0:65535" ? "" : " port " .$record["src_port"]);
+ $dst_port = ($record["dst_port"] == "0:65535" ? "" : " port " . $record["dst_port"]);
+ $src_ip = ($record["src_ip"] == "any" ? "any" : $record["src_ip"] . "/" . $src_netmask);
+ $dst_ip = ($record["dst_ip"] == "any" ? "any" : $record["dst_ip"] . "/" . $dst_netmask);
+ //$protocol = $record["protocol"];
+ $delete = ($record["active"] == "n" ? true : false);
+ //$protocols = array_split($record["protocol"]);
+ //$inbound = ($record["inbound"] == 0 ? "deny " : "allow");
+ //$outbound = ($record["outbound"] == 0 ? "deny out" : "allow out");
+
+ //foreach ($protocols as $protocol) {
+
+
+ $ufw = new UFW();
+ //$ufw->setDelete($record["active"] == "n");
+ $ufw->setRuleID($record["rule_id"]);
+ $ufw->setSrcIP($src_ip);
+ $ufw->setDstIP($dst_ip);
+ $ufw->setSrcPort($src_port);
+ $ufw->setDstPort($dst_port);
+ $ufw->setInboundPolicy($record["inbound_policy"]);
+ $ufw->setOutboundPolicy($record["outbound_policy"]);
+ $ufw->setProtocol($record["protocol"]);
+ $ufw->setNetwork($network);
+
+ if ($delete) {
+ $ufw->delete();
+ } else {
+ $ufw->insert();
+ }
+ //}
+
+ /*
+ if ($record["active"] == 'n') {
+ $inbound = ($record["inbound"] == 0 ? "deny " : "allow");
+ $outbound = ($record["outbound"] == 0 ? "deny out" : "allow out");
+ array_push($commands, "ufw deny proto udp from $src_ip $src_port to $dst_ip $dst_port");
+ if ($protocol == "tcp/udp") {
+ array_push($commands, "ufw delete $inbound proto udp from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw delete $outbound proto udp from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw delete $inbound proto tcp from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw delete $outbound proto tcp from $src_ip $src_port to $dst_ip $dst_port");
+ } else {
+ array_push($commands, "ufw delete $inbound proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw delete $outbound proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
+ }
+ } elseif ($record["inbound"] == 0) {
+ if ($protocol == "tcp/udp") {
+ array_push($commands, "ufw deny proto udp from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw deny proto tcp from $src_ip $src_port to $dst_ip $dst_port");
+ } else {
+ array_push($commands, "ufw deny proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
+ }
+
+ } elseif ($record["outbound"] == 0) {
+ if ($protocol == "tcp/udp") {
+ array_push($commands, "ufw deny out proto udp from $network to any $dst_port");
+ array_push($commands, "ufw deny out proto tcp from $network to any $dst_port");
+ } else {
+ array_push($commands, "ufw deny out proto $protocol from $network to any $dst_port");
+ }
+ }*/
+
+
+ }
+
+ /*
+
+ $records = $app->db->queryAllRecords(
+ "SELECT
+ protocol,
+ IF
+ (src_from_port=src_to_port, src_from_port, CONCAT(src_from_port, ':',src_to_port))
+ AS
+ src_port,
+ IF
+ (dst_from_port=dst_to_port, dst_from_port, CONCAT(dst_from_port, ':',dst_to_port))
+ AS
+ dst_port,
+ IF
+ (src_ip='0.0.0.0','any',src_ip)
+ AS
+ src_ip,
+ IF
+ (dst_ip='0.0.0.0','any',dst_ip)
+ AS
+ dst_ip,
+ src_netmask,
+ dst_netmask,
+ inbound,
+ outbound,
+ active
+ FROM
+ firewall_filter
+ WHERE
+ inbound=1
+ OR
+ outbound=1
+ AND
+ active='y'");
+
+
+ foreach ($records as $record) {
+ $src_netmask = $this->getCidr($record["src_netmask"]);
+ $dst_netmask = $this->getCidr($record["dst_netmask"]);
+ $src_port = ($record["src_port"] == "0:65535" ? "" : " port " .$record["src_port"]);
+ $dst_port = ($record["dst_port"] == "0:65535" ? "" : " port " . $record["dst_port"]);
+ $src_ip = ($record["src_ip"] == "any" ? "any" : $record["src_ip"] . "/" . $src_netmask);
+ $dst_ip = ($record["dst_ip"] == "any" ? "any" : $record["dst_ip"] . "/" . $dst_netmask);
+ $protocol = $record["protocol"];
+ $outbound = ($record["outbound"] == 1 ? "out" : "");
+
+
+
+ if ($record["inbound"] == 1) {
+ if ($protocol == "tcp/udp") {
+ array_push($commands, "ufw allow proto udp from $src_ip $src_port to $dst_ip $dst_port");
+ array_push($commands, "ufw allow proto tcp from $src_ip $src_port to $dst_ip $dst_port");
+ } else {
+ array_push($commands, "ufw allow proto $protocol from $src_ip $src_port to $dst_ip $dst_port");
+ }
+
+ } elseif ($record["outbound"] == 1) {
+ if ($protocol == "tcp/udp") {
+ array_push($commands, "ufw allow out proto udp from $network to any $dst_port");
+ array_push($commands, "ufw allow out proto tcp from $network to any $dst_port");
+ } else {
+ array_push($commands, "ufw allow out proto $protocol from $network to any $dst_port");
+ }
+ }
+
+
+ }
+
+ foreach ($commands as $command) {
+ system($command);
+ }
+ */
+ }
+
+ function insert_forward($event_name,$data) {
+ global $app, $conf;
+
+ $this->update_filter($event_name,$data);
+
+ }
+
+ function update_forward($event_name,$data) {
+ global $app, $conf;
+
+
+
+ }
+
+ //update server config
+
+ function backupConfigs()
+ {
+ copy('/etc/default/ufw','/etc/default/ufw~');
+ copy('/etc/ufw/ufw.conf','/etc/ufw/ufw.conf~');
+ copy('/etc/ufw/before.rules','/etc/ufw/before.rules~');
+ }
+
+ function updateSettings($event_name,$data) {
+ global $app, $conf;
+
+ // get the config
+ $app->uses("getconf");
+ $server_config = $app->getconf->get_server_config($conf["server_id"], 'ufw');
+
+
+ if(is_dir('/etc/ufw') && is_file('/etc/default/ufw')) {
+ $this->backupConfigs();
+
+ $app->load('tpl');
+
+ $ufw_tpl = new tpl();
+ $ufw_tpl->newTemplate("ufw.conf.master");
+
+ $ufw_tpl->setVar('enable',($server_config["ufw_enable"] == "" ? "no" : $server_config["ufw_enable"]));
+ $ufw_tpl->setVar('log_level',$server_config["ufw_log_level"]);
+
+
+ file_put_contents('/etc/ufw/ufw.conf',$ufw_tpl->grab());
+ unset($ufw_tpl);
+
+ $app->log("Changed UFW settings",LOGLEVEL_DEBUG);
+
+ $ufw_tpl = new tpl();
+ $ufw_tpl->newTemplate("ufw.default.master");
+
+ $ufw_tpl->setVar('ipv6',$server_config["ufw_ipv6"] == "" ? "no" : $server_config["ufw_ipv6"]);
+ $ufw_tpl->setVar('default_input_policy',$server_config["ufw_default_input_policy"]);
+ $ufw_tpl->setVar('default_output_policy',$server_config["ufw_default_output_policy"]);
+ $ufw_tpl->setVar('default_forward_policy',$server_config["ufw_default_forward_policy"]);
+ $ufw_tpl->setVar('default_application_policy',$server_config["ufw_default_application_policy"]);
+ $ufw_tpl->setVar('manage_builtins',$server_config["ufw_manage_builtins"] == "" ? "no" : $server_config["ufw_manage_builtins"]);
+
+ file_put_contents('/etc/default/ufw',$ufw_tpl->grab());
+ unset($ufw_tpl);
+
+ $app->log("Changed default UFW settings",LOGLEVEL_DEBUG);
+
+ $app->services->restartServiceDelayed('ufw','--force-reload');
+
+ } else {
+ $app->log("Ubuntu Uncomplicated Firewall configuration not available for this linux distribution.",LOGLEVEL_DEBUG);
+ }
+
+ }
+
+
+
+
+} // end class
+
+class UFW {
+
+ var $_delete = false;
+ var $_ufwCmd = "ufw";
+ var $_inboundPolicy = "allow";
+ var $_outboundPolicy = "allow";
+ var $_protocol = "tcp";
+ var $_ruleID = 1;
+ var $_srcIP;
+ var $_dstIP;
+ var $_srcPort;
+ var $_dstPort;
+ var $_network = "0.0.0.0/24";
+
+ function UFW() {
+
+ }
+
+ function setDelete($delete) {
+ $this->_delete = $delete;
+ }
+
+ function setInboundPolicy($policy) {
+ $this->_inboundPolicy = $policy;
+ }
+
+ function setOutboundPolicy($policy) {
+ $this->_outboundPolicy = $policy;
+ }
+
+ function setProtocol($protocol) {
+ $this->_outboundPolicy = $protocol;
+ }
+
+ function setRuleID($id) {
+ $this->_ruleID = $id;
+ }
+
+ function setSrcIP($ip) {
+ $this->_srcIP = $ip;
+ }
+
+ function setDstIP($ip) {
+ $this->_dstIP = $ip;
+ }
+
+ function setSrcPort($port) {
+ $this->_srcPort = $port;
+ }
+
+ function setDstPort($port) {
+ $this->_dstPort = $port;
+ }
+
+ function setNetwork($network) {
+ $this->_network = $network;
+ }
+
+
+ function insert() {
+ $protocols = split("/",$this->_protocol);
+ foreach ($protocols as $protocol) {
+ $inbound = sprintf("ufw insert %s %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_inboundPolicy, $protocol, $this->_srcIP, $this->_srcPort, $this->_dstIP, $this->_dstPort);
+ $outbound = sprintf("ufw insert %s %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_outboundPolicy, $protocol, $this->_network, $this->_srcPort, $this->_dstIP, $this->_dstPort);
+
+ echo $inbound."\n";
+ echo $outbound."\n";
+ system($inbound);
+ system($outbound);
+ }
+ }
+
+ function delete() {
+ $protocols = split("/",$this->_protocol);
+ foreach ($protocols as $protocol) {
+ $inbound = sprintf("ufw delete %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_inboundPolicy, $protocol, $this->_srcIP, $this->_srcPort, $this->_dstIP, $this->_dstPort);
+ $outbound = sprintf("ufw delete %s proto %s from %s port %s to %s port %s ", $this->_ruleID, $this->_outboundPolicy, $protocol, $this->_network, $this->_srcPort, $this->_dstIP, $this->_dstPort);
+
+ echo $inbound."\n";
+ echo $outbound."\n";
+
+ system($inbound);
+ system($outbound);
+ }
+ }
+
+}
+
+?>
--
Gitblit v1.9.1