📄 setup
字号:
#!/usr/bin/perl# creo la directory per i file di configurazione$path_config = '/etc/turtlefirewall';if( ! -d $path_config ) { mkdir $path_config, 0700;}# copio i 3 file predefiniti per la configurazione del firewallif( ! -f "$path_config/fw.xml" ) { system( "cp -v fw.xml $path_config" );}if( -f "$path_config/fwservices.xml" ) { system( "cp -v $path_config/fwservices.xml $path_config/fwservices.xml.bck" );}system( "cp -v -f fwservices.xml $path_config" );# Il file fwuserdefservices.xml lo copio solo se non presenteif( ! -f "$path_config/fwuserdefservices.xml" ) { system( "cp -v fwuserdefservices.xml $path_config/" );}# Diritti di lettura/scrittura solo a rootsystem( "chmod 600 $path_config/*" );system( "chmod 700 $path_config" );# copio lo script turtlefw in /usr/sbinsystem( "cp -v -f turtlefirewall /usr/sbin" );chmod 0700, '/usr/sbin/turtlefirewall';# delete old turtlefirewall packageunlink( "/usr/lib/turtlefirewall.pm" );# add new TurtleFirewall packagesystem( "cp -v -f TurtleFirewall.pm /usr/lib" );# Cerco il percorso della dir init.d$path_initd = '';if( -d '/etc/rc.d/init.d' ) { $path_initd = '/etc/rc.d/init.d';} elsif( -d '/etc/init.d' ) { $path_initd = '/etc/init.d';} elsif( -d '/sbin/init.d' ) { $path_initd = '/sbin/init.d';} elsif( -d '/etc/rc.d' ) { # Slackware $path_initd = '/etc/rc.d';}if( $path_initd eq '' ) { print "Error: init.d directory not found\n"; exit( 1 );}$startscript = "$path_initd/turtlefirewall";open( FILE, ">$startscript" );print FILE q~#!/bin/bash# chkconfig: 2345 08 92# description: Start or stop the Turtle Firewallif [ -d "/var/lock/subsys" ] ; then FLAG_FILE=/var/lock/subsys/turtlefirewallelse FLAG_FILE=/var/lock/turtlefirewallfiRETVAL=0start() { /usr/sbin/turtlefirewall if [ $? == 0 ] ; then touch $FLAG_FILE fi RETVAL=$? return $RETVAL}stop() { /usr/sbin/turtlefirewall --stop rm -f $FLAG_FILE RETVAL=$? return $RETVAL}case "$1" in start) start ;; stop) stop ;; status) echo "\nNAT/MASQUERADING:" iptables -t nat -L -n -v echo "\nRULES:" iptables -L -n -v /usr/sbin/turtlefirewall --status ;; restart|reload) stop start ;; *) echo "Usage: $0 { start | stop | status | restart }" exit 1 ;;esacexit $RETVAL~;close( FILE );chmod 0700, $startscript;# Cerco il percorso della dir rc.d$path_rcd = '';if( -d '/etc/rc.d/rc0.d' ) { $path_rcd = '/etc/rc.d';} elsif( -d '/etc/rc0.d' ) { $path_rcd = '/etc';} elsif( -d '/sbin/init.d/rc0.d' ) { $path_rcd = '/sbin/init.d';} elsif( -d '/etc/rc.d' ) { $path_rcd = '/etc/rc.d';}if( $path_rcd eq '' ) { print "Error: rcX.d directory not found\n"; exit( 1 );}if( -f '/etc/slackware-version' ) { # Slackware distro open FILE, "<$path_rcd/rc.local" or die( "Error: file $path_rcd/rc.local can't be opend" ); my @lines = <FILE>; close FILE; if( !( join('',@lines) =~ /turtlefirewall/ ) ) { open FILE, ">>$path_rcd/rc.local" or die( "Error: writing on file $path_rcd/rc.local" ); print FILE "\n#Start Turtle Firewall\n/etc/rc.d/turtlefirewall start\n"; close FILE; }} else { $script = $startscript; if( $path_initd = "$path_rcd/init.d" ) { $script = "../init.d/turtlefirewall"; } installscript( $path_rcd, 0, 'K92', $script ); installscript( $path_rcd, 1, 'K92', $script ); installscript( $path_rcd, 2, 'S08', $script ); installscript( $path_rcd, 3, 'S08', $script ); installscript( $path_rcd, 4, 'S08', $script ); installscript( $path_rcd, 5, 'S08', $script ); installscript( $path_rcd, 6, 'K92', $script );}exit( 0 );sub installscript { my $path = shift; my $runlevel = shift; my $prefix = shift; my $script = shift; system( "rm -f $path/rc$runlevel.d/???turtlefirewall" ); system( "ln -s $script $path/rc$runlevel.d/".$prefix."turtlefirewall" );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -