Форма авторизации на Perl

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Форма авторизации на Perl

Непрочитанное сообщение serge » 2008-07-03 20:39:57

Есть необходимость авторизовать в apache пользователей на основе файла паролей dovecot (smtp сервер sendmail и пользователи соответственно виртуальные). Все вроде просто за исключением одного но... авторизовывать нужно по логину реальному (serge@server.ru) нужно вернуть в ответе логин именно виртуального пользователя (virtuser_1036), который затем будет принимать dspam webgui.
dspam написан на perl. Авторизации своей у него нет, используется mod_auth (basic) из apache. Может это можно сделать средствами apache, но я не понял как. Поэтому мне думается что нужно дописать в dspam свою авторизация.
С Perl почти не приходилось работать, поэтому прошу у знающих помощи... как будет выглядеть такой скрипт авторизации. Может я туплю и вообще как-то иначе можно это решить :oops:
Вот так выглядит строка в файле паролей dovecot

Код: Выделить всё

serge@server.ru:$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ:1036:1002::/home/serge:::/var/mail/virtuser_1036

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение ProFTP » 2008-07-03 20:48:03

еще есть такое как сессии и куки, ты хочешь морду сделать?

это

Код: Выделить всё

$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ
пароль?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение serge » 2008-07-03 20:53:33

Веб морда есть уже... повторяю, что это dspam. Мне лишь нужно ему нужного пользователя передать после авторизации.
ProFTP писал(а):этоКод: Выделить всё$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZпароль?
Да, точнее его хзш.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение ProFTP » 2008-07-03 21:00:23

dspam на perl работает? нужно посмотреть как там, там есть данные с email? наверное нужно чтобы чтобы ассоциация была с этим файлом, который ты показал

UPD:
тебе нужео сделать поиск по эмайл - найт истроку, потом вывести /var/mail/virtuser_1036 щас гляну

тут точно 3 точки ::: везде? но эмайлы повтряться не могут?
Последний раз редактировалось ProFTP 2008-07-03 21:57:50, всего редактировалось 4 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение serge » 2008-07-03 21:04:32

чет не совсем вопросов понимаю :oops:
мне нужно авторизовать пользователя по первому (serge@server.ru) и второму ($2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ) полю, а вернуть имя пользователя ($ENV{'REMOTE_USER'}) (последнюю после всех слэшей часть) из последнего поля (virtuser_1036)

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение Alex Keda » 2008-07-03 22:23:48

Код: Выделить всё

mod_auth_*
там в портах - пачка модулей...
не искал - может мона внешние аутентификаторы привернуть?
а уж в скрипте как угодно вывернешься...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение serge » 2008-07-03 22:34:58

Я хотел mod_auth_pop3, но его в портах нет (или искал плохо), а mod_auth_imap2 чето не стал работать.
===
Чет видимо нада книгами и гуглями обкладываться и Perl учить :cz2:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение ProFTP » 2008-07-04 2:03:43

Код: Выделить всё

#!/usr/bin/perl
#use strict;
#use diagnostics;

$email = "2serge\@server.ru";

# Open the file
my $filename = "test.txt";

open FILE, $filename
or die qq{Cannot read "$filename": $! };
# Iterate through each line of the file,
# printing all lines that match

while ($line = <FILE>) {


if ($line =~ /$email/) {

my ($bla, $google) = split /:::/, $line, 2;

my ($dir0, $dir1, $dir2, $dir3) = split /\//, $google, 4;


print "$dir3";
                          }
            }
close FILE;

Код: Выделить всё

serge@server.ru:$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ:1036:1002::/home/serge:::/var/mail/virtuser_1036
2serge@server.ru:$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ:1036:1002::/home/serge:::/var/mail/virtuser_1037

Код: Выделить всё

$ ./serge
virtuser_1037
если написать serge@server.ru то выдаст сразу две строки!!
может кто знает как "заэкранировать"?

похожу так :

Код: Выделить всё

:serge@server.ru:$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ:1036:1002::/home/serge:::/var/mail/virtuser_1036
:2serge@server.ru:$2a$04$MFyzbaFqX0HQZOZxiZ24PulzyHVr028aAz/ye19EkVY21nZ:1036:1002::/home/serge:::/var/mail/virtuser_1037
или нет?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: Форма авторизации на Perl

Непрочитанное сообщение serge » 2008-07-04 8:44:45

Спс всем. Сделал как мог, но все таки работает.
Вот такой код в верху в двух скриптах dspam.cgi и admin.cgi делает то что мне нужно.

Код: Выделить всё

open(FILE, "/usr/local/etc/dovecot.passwd");
while(<FILE>) {
    chomp;
        if ($_ =~ $ENV{'REMOTE_USER'}) {
          ($CONFIG{'login'}, $CONFIG{'passwd'}, $CONFIG{'uid'}, $CONFIG{'gid'}, $CONFIG{'gcos'}, $CONFIG{'home'}, $CONFIG{'sh
ell'}, $CONFIG{'fld8'}, $CONFIG{'path'}) = split(/:/);
          ($CONFIG{'s1'}, $CONFIG{'s2'}, $CONFIG{'s3'}, $CONFIG{'s4'}) = split(/\//, $CONFIG{'path'});
          $ENV{'REMOTE_USER'} = $CONFIG{'s4'};
    }
  }
close(FILE);
Терь уже можно его в красивый вид привести ;-) т.к. чувствую можно было это проще написать.
===
Теперь dspam еще и к sendmail прикручивать научился 8) Вот только чувствуется должен быть инструмент для работы с вирт. пользователями, но чето ничего не нагуглил про это. Многие мануалы (в инете которые попадались) для sendmail настраиваются просто на пересылку на ящики (spam-; notspam-), но а там где речь про webgui идет ничего не сказано про то какие там пользователи.