plugins->registerEvent('firewall_insert',$this->plugin_name,'insert'); $app->plugins->registerEvent('firewall_update',$this->plugin_name,'update'); $app->plugins->registerEvent('firewall_delete',$this->plugin_name,'delete'); } function insert($event_name,$data) { global $app, $conf; $this->update($event_name,$data); } function update($event_name,$data) { global $app, $conf; $tcp_ports = ''; $udp_ports = ''; $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 . ' '; } } $tcp_ports = trim($tcp_ports); $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 . ' '; } } $udp_ports = trim($udp_ports); $app->load('tpl'); $tpl = new tpl(); $tpl->newTemplate("bastille-firewall.cfg.master"); $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(@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 -f bastille-firewall remove'); $app->log('Stopping the firewall',LOGLEVEL_DEBUG); } } 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 -f bastille-firewall remove'); $app->log('Stopping the firewall',LOGLEVEL_DEBUG); } } // end class ?>