Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wert in Datei schreiben

Frage Entwicklung Perl

Mitglied: infowars

infowars (Level 2) - Jetzt verbinden

18.12.2013, aktualisiert 23.12.2013, 1785 Aufrufe

Moin, ich versuche gerade eine Möglichkeit zu finden mit der User über den Browser sich bzw. ihre IP freischalten müssen.
Dabei dachte ich an eine einfache Seite, welche die eigene IP via PHP anzeigt, welche dann in ein Formular eingegeben werden muss und dann z.B. mit CGI/Perl in eine .htaccess eingefügt wird.
Das Formular:
01.
<p>Kopiere die angezeigte IP-Adresse, füge sie in das Feld unten ein und drücke den Knopf "Senden"  
02.
<br> 
03.
<?php echo $_SERVER['REMOTE_ADDR']; ?> 
04.
</p> 
05.
<form action="ip.pl" method="post" enctype="multipart/form-data" > 
06.
<table align="left"> 
07.
</td> 
08.
<td>IP:</td> 
09.
<td><textarea name=IP size=15></textarea></td> 
10.
<td colspan=2 align=center> 
11.
<input type=submit value="Senden"></td> 
12.
</table> 
13.
</form>
Das ist das Perlscript:
01.
#!/pfad/zu/perl 
02.
use strict; 
03.
use warnings; 
04.
use CGI; 
05.
my $cgi = CGI->new; 
06.
my $param_IP = $cgi->param('IP'); # Hole den Parameter IP (=Inhalt der Textarea) 
07.
my @IP = split /\cM?\cJ/, $param_IP if defined($param_IP) and length($param_IP); # Teile mehrzeilige Einträge im Textfeld in einzelne Zeilen und speicher sie ins Array 
08.
my %IP; # Hash zum merken der IPs 
09.
open(my $fh,"<", ".htaccess") or die "Cant open .htaccess: $!"; # Datei zum Lesen öffnen 
10.
while (my $line = <$fh>) { # IP zeilenweise einlesen 
11.
  next if not $line =~ m|allow\s+from\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*$|i; # ist keine numerische IP, dann weiter bei while 
12.
  $IP{$1}++;  # numerische IP merken 
13.
14.
close($fh) or die "Cant close .htaccess: $!"; 
15.
foreach my $IP (@IP) { 
16.
  $IP =~ s/[\cM\cJ]//g;    # entferne alle Zeilenenden 
17.
  next if not $IP =~ m|^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$|; # ist keine numerische IP 
18.
  $IP{$1}++; 
19.
20.
use Fcntl qw(:flock); 
21.
open(my $fh,">", ".htaccess") or die "Cant open .htaccess: $!"; 
22.
flock ($fh, LOCK_EX) or die "Cant lock .htaccess: $!";  # Datei sperren gegen mehrfache Schreibzugriffe 
23.
print $fh "allow from ",$_,"\n" for sort keys %IP;      #  
24.
close($fh) or die "Cant close .htaccess: $!"; 
25.
print $cgi->header( 
26.
  -status => '204 No Content',);  # only HTTP header is in response 
27.
 
Google, Bing und Co. wollte ich aber nicht aussperren, also die IP 66.249.64.1 z.B. sollte prinzipiell Zugang haben.
Am Ende sollte dann eine .htaccess entstehen die in etwa so aussieht:

01.
order deny, allow 
02.
#google# 
03.
allow from 66.249.64.1 
04.
#yandex# 
05.
allow from 141.8.147.1 
06.
#bing# 
07.
allow from 157.55.34.181 
08.
#msn# 
09.
allow from 199.30.20.58 
10.
#user# 
11.
allow from 12.34.56.78 
12.
deny from all
Ähnliche Inhalte
Sicherheits-Tools
gelöst Hash-Wert fest in Audiodatei schreiben (4)

Frage von Hamoe2 zum Thema Sicherheits-Tools ...

Microsoft Office
gelöst Excel-Werte eingeben und in neue Tabelle schreiben (9)

Frage von werner1966 zum Thema Microsoft Office ...

Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

Frage von peterla zum Thema Festplatten, SSD, Raid ...

Microsoft Office
Outlook 2016 in Ordneransicht starten - GPO (9)

Frage von D-Line zum Thema Microsoft Office ...