Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите со скриптом, Скрипт password manager 
:(
    Опции темы
Che_Guevara
Дата 8.12.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Nab
Дата 8.12.2006, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



Вы обратились на форум программистов а не фрилансеров... 
А здесь скрипт который жутковат и был написан на коленке smile разбираться с ним себе дороже smile Его проще переписать..  
Во первых, там некоторые вещи я понял на немецком, что для большинства затруднительно. 
Второе, постарались бы хотябы оформить такую простыню как положено... 
А в третьих, это биллинг, соответственно дензнаки..., итого напрашивается вопрос "Сколько?" smile 

PS: ну вот меня счас накажут за вымогательство smile


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
nitr
Дата 8.12.2006, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Che_Guevara, ого-го smile давно я такого не наблюдал ;)
Как сказал Nab, это форум... обсуждение вопросов, а не "работа за вас" smile


Цитата(Nab @  8.12.2006,  00:42 Найти цитируемый пост)
PS: ну вот меня счас накажут за вымогательство smile

За что? smile За дельный совет ;) ? Я придерживаюсь той же "политики" smile


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.