tbrehm
2012-05-10 e94a9fb5e4b6a2bc07e0bb4cf8ea35fc70c4bbf0
server/plugins-available/firewall_plugin.inc.php
@@ -33,6 +33,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;
      }
   }
      
   /*
       This function is called when the plugin is loaded
@@ -67,41 +80,51 @@
      $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');
         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,7 +135,7 @@
   function delete($event_name,$data) {
      global $app, $conf;
      
      exec('/etc/init.d/bastille-firewall stop');
      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
?>
?>