Новичок
Профиль
Группа: Участник
Сообщений: 6
Регистрация: 24.11.2006
Репутация: нет Всего: нет
|
билинг1 (это его скрипт добавления\удаления юзеров) при добавлении юзера через этот скрипт он убивает всех чужих юзеров в хтпасворде, этот скрипт использует основной файл с базой юзеров members.txt и уже от туда он пишет или удаляет их из хтпасворда. Вобщем нужно подправить, чтоб он работал только со своими юзерами и нетрогал юзеров другого билинга. Ну и собсно сам скрипт Код | #!/usr/bin/perl
require "inet.txt"; print "Content-type: text/html \n\n"; $HOSTIP = $ENV{'REMOTE_ADDR'};
############### Formular-Input auslesen if($ENV{'REQUEST_METHOD'} eq 'GET') { $waskommt = $ENV{'QUERY_STRING'}; } else { read(STDIN, $waskommt, $ENV{'CONTENT_LENGTH'}); }
@pairs = split(/&/, $waskommt); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; $FORM{$name} = $value; }
if ((substr($HOSTIP,0,11)=="62.159.133.") || (substr($HOSTIP,0,12)=="194.172.249.") || (substr($HOSTIP,0,11)=="62.153.217.") || (substr($HOSTIP,0,12)=="212.172.22.1")) { if ($FORM{'user'} && $FORM{'pass'} && $FORM{'action'}) { &select; } else { print "V2.1<br>"; } } else { print "Zugriff verweigert<br>"; exit; }
exit;
sub select { $user0 = $FORM{'user'}; $pass0 = $FORM{'pass'}; $action0 = $FORM{'action'}; $action1 = $FORM{'sub'}; $sek0 = $FORM{'bis'}; $pass1= crypt($pass0,'ic'); if ($action0 eq 'add') { &datwert; if ($action1 eq 'all') { $ergebnisstring = &passwortaddall; print "<center><b>$ergebnisstring</b></center><br>"; print "<center><b>User $user0 mit Passwort $pass0 wurde hinzugefьgt</b></center><br>"; } else { $ergebnisstring = &passwortadd; print "<center><b>$ergebnisstring</b></center><br>"; print "<center><b>User $user0 mit Passwort $pass0 wurde hinzugefьgt</b></center><br>"; } } elsif ($action0 eq 'reorg') { $ERGEBNISREORG = &reorg; print "<center><b>$ERGEBNISREORG</b></center><br>"; } elsif ($action0 eq 'del') { if ($action1 eq 'all') { $ergebnisstring = &delall; print "<center><b>member.txt und .htpasswd wurden geloescht</b></center><br>"; } else { $ERGEBNISDEL = &del; print "<center><b>$ERGEBNISDEL</b></center><br>"; $ERGEBNISREORG = &reorg; print "<center><b>$ERGEBNISREORG</b></center><br>"; } } else { print "Es wurde nichts ausgewдhlt<br>"; print "ENDE<br>"; } }
sub passwortadd { $HTPWDPOUTPUT = &accesswrite; # nachschauen ob htpasswd mit einer neuen zeile anfaengt # falls nein neue Zeile anfuegen open (HTCHECK,"<.htpasswd") || die "Fehler beim цffnen $DirPasswd/.htpasswd"; seek(HTCHECK, -1, 2); read(HTCHECK, $zs, 1); $xy = chr(10); if ($zs eq $xy){ $entervor = "";} else { $entervor = "\n"; } close(HTCHECK); open (HTPASSWD,">>.htpasswd") || die "Fehler beim цffnen $DirPasswd/.htpasswd"; print HTPASSWD "$entervor$user0:$pass1\n"; close(HTPASSWD); $HTPWDPOUTPUT = "$HTPWDPOUTPUT STEP2 OKAY-"; # nachschauen ob member.txt mit einer neuen zeile anfaengt # falls nein neue Zeile anfuegen open (MBCHECK,"<member.txt") || die "Fehler beim цffnen $DirPasswd/.htpasswd"; seek(MBCHECK, -1, 2); read(MBCHECK, $zs, 1); $xy = chr(10); if ($zs eq $xy){ $entervor = "";} else { $entervor = "\n"; } close(MBCHECK); open (HTLOG,">>member.txt") || die "Fehler beim цffnen der Group-Datei"; print HTLOG "$entervor$user0:$BIS:$pass1\n"; close(HTLOG); $HTPWDPOUTPUT = "$HTPWDPOUTPUT STEP3 OKAY-"; $REORGSTR = &reorg; $HTPWDPOUTPUT = "$HTPWDPOUTPUT $REORGSTR"; }
sub passwortaddall { open (HTPASSWD,">>.htpasswd") || die "Fehler beim цffnen $DirPasswd/.htpasswd"; print HTPASSWD "$entervor$user0:$pass1\n"; close(HTPASSWD); $HTPWDPOUTPUT = "$HTPWDPOUTPUT STEP1 OKAY-"; open (HTLOG,">>member.txt") || die "Fehler beim цffnen der Group-Datei"; print HTLOG "$user0:$BIS:$pass1\n"; close(HTLOG); $HTPWDPOUTPUT = "$HTPWDPOUTPUT STEP2 OKAY"; }
sub reorg { open(HTMEMBER,"member.txt") || die "Fehler beim цffnen der Member-Datei"; @content = <HTMEMBER>; close(HTMEMBER); open(HTPWDDATEI,">.htpasswd") || die "Fehler beim цffnen Passwort-Datei"; open (MEMBER,">member.txt") || die "Fehler beim цffnen der Member-Datei"; foreach $line (@content) { ($USERNAME, $ZUGBIS, $pass2) = split(/:/, $line); if ($ZUGBIS > time()) { print MEMBER "$USERNAME:$ZUGBIS:$pass2"; print HTPWDDATEI "$USERNAME:$pass2"; } } close(MEMBER); close(HTPWDDATEI); $OUTPUT = "Reorganisation okay<br>"; return $OUTPUT }
sub accesswrite {
open(HTACCESS,">$DirMember/.htaccess") || die "Fehler beim цffnen der access-Datei"; print HTACCESS "AuthUserFile $DirCGI/.htpasswd\n"; print HTACCESS "AuthName \"INET-CASH-Schutz\"\n"; print HTACCESS "AuthType Basic\n\n"; print HTACCESS "require valid-user\n"; print HTACCESS "order deny,allow\n"; print HTACCESS "deny from all\n"; print HTACCESS "allow from 217.114.117.10\n"; print HTACCESS "allow from 62.153.217.100\n"; print HTACCESS "allow from 212.172.22.109\n"; print HTACCESS "allow from 62.159.133.3\n"; print HTACCESS "allow from 62.159.133.4\n"; print HTACCESS "allow from 62.159.133.5\n"; print HTACCESS "Satisfy Any\n"; close(HTACCESS); $MELDUNGACCESS = "STEP1 OKAY -"; return $MELDUNGACCESS }
sub datwert {
$JETZT = time(); $BIS = $JETZT + $sek0; ($secvon,$minvon,$hourvon,$dayvon,$monthvon,$yearvon) = (localtime($JETZT)); ($secbis,$minbis,$hourbis,$daybis,$monthbis,$yearbis) = (localtime($BIS)); $yearvon += "1900"; $yearbis += "1900"; $monthvon++; $monthbis++; $TAGBIS = sprintf ("%02d%02d%04d%s", $daybis, $monthbis, $yearbis); $STUNDEBIS = sprintf ("%02d%02d%02d%s", $hourbis, $minbis, $secbis); $TAGVON = sprintf ("%02d%02d%04d%s", $dayvon, $monthvon, $yearvon); $STUNDEVON = sprintf ("%02d%02d%02d%s", $hourvon, $minvon, $secvon); $ZUGVON = "$TAGVON$STUNDEVON"; $ZUGBIS = "$TAGBIS$STUNDEBIS";
}
sub del { open(HTMEMBER,"member.txt") || die "Fehler beim цffnen der Member-Datei"; @content = <HTMEMBER>; close(HTMEMBER); open(HTPWDDATEI,">.htpasswd") || die "Fehler beim цffnen Passwort-Datei"; open (MEMBER,">member.txt") || die "Fehler beim цffnen der Member-Datei"; foreach $line (@content) { ($USERNAME, $ZUGBIS, $pass2) = split(/:/, $line); if ($USERNAME ne $user0) { print MEMBER "$USERNAME:$ZUGBIS:$pass2"; print HTPWDDATEI "$USERNAME:$pass2"; } } close(MEMBER); close(HTPWDDATEI); $OUTPUT = "Member gelцscht<br>"; return $OUTPUT }
sub delall { open(HTPWDDATEI,">.htpasswd") || die "Fehler beim цffnen Passwort-Datei"; close(HTPWDDATEI); open (MEMBER,">member.txt") || die "Fehler beim цffnen der Member-Datei"; close(MEMBER); $OUTPUT = "Alle Daten gelцscht<br>"; return $OUTPUT }
|
M korob2001 | Пользуйся кнопкой "код" для вставки кода. Тем самым подсветишь код и сохранишь его формат. | Это сообщение отредактировал(а) korob2001 - 8.12.2006, 02:49
|