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) { 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']); 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); } $udp_ports .= $p_clean . ' '; } } $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($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($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); } } function delete($event_name,$data) { global $app, $conf; 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); } } // end class ?>