Ihre Anfrage wird bearbeitet.

Bitte warten Sie einen Augenblick ...

 
Hosted with Microsoft Windows 2000 Server on IBM xServer
Formathelper
 
 
Profil | Registrieren | Aktive Themen | Mitglieder | Suche | FAQ
Benutzername:
Passwort:
Wählen Sie eine Sprache
Passwort speichern
Passwort vergessen?


 Alle Foren
 Mercur Mailserver 2005
 Mercur 2005 - Wünsche und Anregungen
 Importscript für Firewall.dat
 Neues Thema  Auf Thema antworten
 Drucken
Autor  Thema Nächstes Thema  

AndreasKrueger

Germany
Beiträge 3

Gesendet am - 18/06/2006 :  17:00:48  Profil anzeigen  Besuche AndreasKrueger's Homepage  Antwort mit Zitat
Nachdem ich mir eine ganze Weile die Zähne dran ausgebissen habe ist er nun fertig.

Ein (mittlerweile) kleines Perlscript zum generieren der Firewall.dat aus einem CSV-File.

# 
# 
# Perlscript zum Generieren der Firewall.dat aus einem CSV
# ACHTUNG in der CSV muss als erste Zeile das eigene Netz eingetragen werden ..
# z.B.: 15;192.168.0.0;255.255.255.0; um alle Services aus dem lokalem Subnetz zu erlauben
# 
# Eine vorhanden Firewall.dat wird nicht mit verarbeitet !
#
# (c) 2006 by Andreas Krueger
# Kontakt : http://www.remote.dyndns.info/system/kontakt/
#
# Version : 1.02
#
# 1.02  : Zeilen die mit dem Doppelkreuz anfangen werden nicht verarbeitet.
#         Informationen, in den Datenzeilen, ab einem Doppelkreuz werden ignoriert.
#         Somit koennen auch Komentare im CSV erstellt werden
# 1.01	: Entfernen von Leerzeichen beim einlesen des CSV
# 1.00  : Initialversion
#
#
$count = 14;	# Beginnt bei 14 weil pack für 10 und 13 0D 0A schreibt.
                # Dies mag der Mercur jedoch nicht !!!!

open(FILE_IMP, "<Firewall.csv") || die "can't open: $!";
@lines_i = <FILE_IMP>;
close(FILE_IMP);

open(FILE_EXP, ">Firewall.dat") || die "can't open: $!";

foreach $i_line (@lines_i){
    if($i_line !~ m/^#(.*)/){ 
        chomp $i_line;
        $i_line =~ s/\#(.*)//g;
        @werte=split(/;/,$i_line);
        $id = pack(I, $count);
        $flags = $werte[0];
        $flags =~ s/ //g;
        $flags = pack(i, $flags);
        $addr = $werte[1];
        $addr =~ s/ //g;
        $addr = pack(a16, $addr);
        $mask = $werte[2];
        $mask =~ s/ //g;
        $mask = pack(a16, $mask);
        $domain = pack(a128, $werte[3]);
        print FILE_EXP "$id$flags$addr$mask$domain";
        $count++;
    }
}
close(FILE_EXP);


Ein Beispiel für das CSV :

#
# Firwallkonfig vom 22.06.2006 (Auszug als Beispiel)
#
#Flags;IP-Adress;Mask;Domain
15;192.168.0.0   ;255.255.255.0   ;#test
17;10.0.0.0        ;255.0.0.0       ;
17;12.5.170.96     ;255.255.255.248 ;
17;160.7.0.0       ;255.255.0.0     ;
17;165.166.0.0     ;255.255.0.0     ;# Info Avenue Internet Services
17;168.226.0.0     ;255.255.0.0     ;# Telefonica de Argentina
17;172.16.0.0      ;255.240.0.0     ;# Class B address space for private internets
17;193.93.140.0    ;255.255.252.0   ;
17;193.95.245.0    ;255.255.255.0   ;
17;194.3.40.0      ;255.255.255.0   ;
17;194.166.224.0   ;255.255.224.0   ;
17;196.36.0.0      ;255.254.0.0     ;# The Internet Solution Johannesburg
17;196.38.0.0      ;255.255.0.0     ;
7;0.0.0.0         ;255.255.255.255 ;
#
#
##############################################
# Beginn Comments ############################
##############################################
#
#
# Flags ######################################
#                7  15  17
#SMTP    0x0001  X   X   X
#POP3    0x0002      X
#IMAP4   0x0004      X
#CONTROL 0x0008      X
#DENY    0x0010          X
#DOMAIN  0x0020
#ADDRESS 0x0040

Abgeändert durch - AndreasKrueger am 22/06/2006 07:22:48

Webhopper

Germany
Beiträge 39

Gesendet am - 25/06/2006 :  06:44:50  Profil anzeigen  Besuche Webhopper's Homepage  Antwort mit Zitat
Sozusagen extra für "blub" hier nun die Version 1.0.3.0 als Perl-Script und Win-Exe /infos/atrium/ ....


# perl -w
use strict;
#use warnings; # bleibt wegen der PACK-Meldungen bei leerem String aus
#
print <<EOM;
###############################################################################
# Perlscript zum Generieren der Firewall.dat aus einem CSV                    #
#                                                                             #
# ACHTUNG in der CSV muss als erste Zeile das eigene Netz eingetragen werden. #
# z.B.: 15;192.168.0.0;255.255.255.0; um alle Services aus dem lokalem        #
# Subnetz zu erlauben.                                                        #
#                                                                             #
# Eine vorhanden Firewall.dat wird nicht mit verarbeitet !                    #
#                                                                             #
# (c) 2006 by Andreas Krueger                                                 #
# Kontakt : http://www.remote.dyndns.info/system/kontakt/                     #
#                                                                             #
###############################################################################
EOM
my $version = 1.0.3.0;
#
# 1.0.3.0  : Im Strict-Modus Arbeiten. Warnings bleiben wegen der PACK-Meldungen bei leeren Datenfeld aus.
# 1.0.2.0  : Zeilen die mit dem Doppelkreuz anfangen werden nicht verarbeitet.
#         Informationen, in den Datenzeilen, ab einem Doppelkreuz werden ignoriert.
#         Somit koennen auch Komentare im CSV erstellt werden
# 1.0.1.0	: Entfernen von Leerzeichen beim einlesen des CSV
# 1.0.0.0  : Initialversion
#
#
my $count = 14;	# Beginnt bei 14 weil pack für 10 und 13 0D 0A schreibt.
                # Dies mag der Mercur jedoch nicht !!!!
my $i_line;
my @werte;
my $id;
my $flags;
my $addr;
my $mask;
my $domain;
#
open(FILE_IMP, "<Firewall.csv") || die "Fehler : Kann firewall.csv nicht finden !";
my @lines_i = <FILE_IMP>;
close(FILE_IMP);
#
open(FILE_EXP, ">Firewall.dat") || die "Fehler : Kann firewall.dat nicht schreiben !";
foreach $i_line (@lines_i){
    if($i_line !~ m/^#(.*)/){ 
        chomp $i_line;
        $i_line =~ s/\#(.*)//g;
        @werte=split(/;/,$i_line);
        $id = pack("I", $count);
        $flags = $werte[0];
        $flags =~ s/ //g;
        $flags = pack("i", $flags);
        $addr = $werte[1];
        $addr =~ s/ //g;
        $addr = pack("a16", $addr);
        $mask = $werte[2];
        $mask =~ s/ //g;
        $mask = pack("a16", $mask);
        $domain = pack("a128", $werte[3]);
        print FILE_EXP "$id$flags$addr$mask$domain";
        $count++;
    }
}
close(FILE_EXP);
print "done ...\n";


Nach dem Bereitstellen der neuen Firewall.dat unbedingt den SMTP-Dienst durchstarten.

Gruss, Andreas
Zum Anfang der Seite

Webhopper

Germany
Beiträge 39

Gesendet am - 04/07/2006 :  06:16:42  Profil anzeigen  Besuche Webhopper's Homepage  Antwort mit Zitat
Und hier schon wieder ein Update.

Die jetzt aktuelle Version lautet 1.0.3.1 und enthält nur die Änderung, dass Perl die Konfig jetzt im "binmode" händelt.
Damit hat sich das Countergetrixe auch erledigt.

Wie einfach das Leben doch sein kann

# perl -w
use strict;
#use warnings; # bleibt wegen der PACK-Meldungen bei leerem String aus
#
print <<EOM;
###############################################################################
# Perlscript zum Generieren der Firewall.dat aus einem CSV                    #
#                                                                             #
# ACHTUNG in der CSV muss als erste Zeile das eigene Netz eingetragen werden. #
# z.B.: 15;192.168.0.0;255.255.255.0; um alle Services aus dem lokalem        #
# Subnetz zu erlauben.                                                        #
#                                                                             #
# Eine vorhanden Firewall.dat wird nicht mit verarbeitet !                    #
#                                                                             #
# (c) 2006 by Andreas Krueger                                                 #
# Kontakt : http://www.remote.dyndns.info/system/kontakt/                     #
#                                                                             #
###############################################################################
EOM
my $version = 1.0.3.1;
#
# 1.0.3.1  : Binmode für Filehandle aktiviert. Damit ist das "0D 0A" Problem behoben.
# 1.0.3.0  : Im Strict-Modus Arbeiten. Warnings bleiben wegen der PACK-Meldungen bei leeren Datenfeld aus.
# 1.0.2.0  : Zeilen die mit dem Doppelkreuz anfangen werden nicht verarbeitet.
#            Informationen, in den Datenzeilen, ab einem Doppelkreuz werden ignoriert.
#            Somit koennen auch Komentare im CSV erstellt werden
# 1.0.1.0  : Entfernen von Leerzeichen beim einlesen des CSV
# 1.0.0.0  : Initialversion
#
#
my $count = 14;	# Beginnt bei 14 weil pack für 10 und 13 0D 0A schreibt.
                # Dies mag der Mercur jedoch nicht !!!!
my $count = 0;
my $i_line;
my @werte;
my $id;
my $flags;
my $addr;
my $mask;
my $domain;
#
open(FILE_IMP, "<Firewall.csv") || die "Fehler : Kann firewall.csv nicht finden !";
my @lines_i = <FILE_IMP>;
close(FILE_IMP);
#
open(FILE_EXP, ">Firewall.dat") || die "Fehler : Kann firewall.dat nicht schreiben !";
binmode(FILE_EXP);
foreach $i_line (@lines_i){
    if($i_line !~ m/^#(.*)/){ 
        chomp $i_line;
        $i_line =~ s/\#(.*)//g;
        @werte=split(/;/,$i_line);
        $id = pack("I", $count);
        $flags = $werte[0];
        $flags =~ s/ //g;
        $flags = pack("i", $flags);
        $addr = $werte[1];
        $addr =~ s/ //g;
        $addr = pack("a16", $addr);
        $mask = $werte[2];
        $mask =~ s/ //g;
        $mask = pack("a16", $mask);
        $domain = pack("a128", $werte[3]);
        print FILE_EXP "$id$flags$addr$mask$domain";
        $count++;
    }
}
close(FILE_EXP);
print "done ...\n";


Das Gute am Internet ist, daß jeder mitmachen kann.
Das Schlechte am Internet ist: Jeder Idiot macht mit...!
Zum Anfang der Seite
   Thema Nächstes Thema  
 Neues Thema  Auf Thema antworten
 Drucken
Springe zu:
 Modded By: Image Forums 2001 Version 3.4.05 Multilanguage Powered By: Snitz Forums 2000 Version 3.4.05 Multilanguage

© 1998 - 2020 by Andreas Krüger
Zu Favoriten hinzufügen. | Als Startseite festlegen.
Scriptlaufzeit : 17,04 ms. | 2 Nutzer Online