Вернуться на главную страницу форума
  FAQFAQ  Поиск-SuchenПоиск-Suchen  ПользователиПользователи  ГруппыГруппы  Фото АльбомФото Альбом  Регистрация-RegistrierenРегистрация-Registrieren 
  Профиль-Profil Профиль-Profil  Войти и проверить личные сообщения Войти и проверить личные сообщения  Вход-login Вход-login

[MOD] Openwebmail save SMTP password in to SESSION

 
   Вернуться на главную страницу форума -> Тех. раздел
Предыдущая тема :: Следующая тема  
Автор Сообщение
AlexanderOffline
Модератор
Модератор
Аватара


Регистр.: 09.09.2003
Сообщений: 221
Живу  : Deutschland
Возраст: 41
Кто Я?Он
СообщениеДобавлено: Пн, 04 Апр 2005, 14:56    Заголовок сообщения: [MOD] Openwebmail save SMTP password in to SESSION Ответить с цитированием

This mod allowed send email from Openwebmail SEND - form without password field. Only use secure SESSION.

Эта модификация используется в открытом коде OpenWebmail.org, для возможности аутентификации пользователей на массовом почтовом сервере без ввода паролей(что было так же не возможно).

Код:

##################################################
## 15.05.2004
## Writen by Nowikow Alexander http://www.derus.net/
## Germany, Schwedt/Oder
## hostmaster@derus.net
##################################################

NOTE: Do not forged make backup files from changed files!!!

#------[ OPEN ]----
openwebmail.pl

#------[ FIND ]---- > ~ line 418
print SESSION join("\@\@\@", $domain, $user, $userrealname, $uuid, $ugid, $homedir), "\n";

#------[ AFTER ADD ]----->
print SESSION $password, "\n";

#------[ OPEN ]------
shares/ow-shared.pl

#------[ FIND ]------
sub sessioninfo {
....... HERE IS CODE......
}
########## END VERIFYSESSION#####################################

#------[ REPLACE ALL ] sub sessioninfo {} WITH FOLLOWING CODE ----->

sub sessioninfo {
   my $sessionid=$_[0];
   my ($cookie, $ip, $userinfo, $userpasswd);
   openwebmailerror(__FILE__, __LINE__, "Session ID $sessionid $lang_err{'doesnt_exist'}") unless (-e "$config{'ow_sessionsdir
   if ( !open(F, "$config{'ow_sessionsdir'}/$sessionid") ) {
      writelog("session error - couldn't open $config{'ow_sessionsdir'}/$sessionid ($@)");
      openwebmailerror(__FILE__, __LINE__, "$lang_err{'couldnt_open'} $config{'ow_sessionsdir'}/$sessionid");
   }
   $cookie = <F>; chomp $cookie;
   $ip = <F>; chomp $ip;
   $userinfo = <F>; chomp $userinfo;
   $userpasswd = <F>; chomp $userpasswd;
   close (F);
   return($cookie, $ip, $userinfo, $userpasswd);
}
########## END VERIFYSESSION #####################################


#------[ OPEN ]-------
openwebmail-send.pl

#------[ FIND ]------> ~ line 100
$escapedkeyword = ow::tool::escapeURL($keyword);


#------[ AFTER ADD ]------->
my $smtp_user = $loginname;      # THIS IS FULL FORMAT OF THE LOGIN (EXAMPLE I USE user@domain.tld)
#my $smtp_user = $loginuser;    # THIS IS LOGIN USER WITHOUT DOMAIN
#my $smtp_user = $loginname."@".$logindomain;  # THIS IS THE MY  EXAMPLE TEST. SHOULD NOT USED!

#------[ FIND ]-----> ~ line 155
         if ($config{'xoriginatingip_has_userid'}) {
            my $id=$loginuser; $id.="\@$logindomain" if ($config{'auth_withdomain'});
            $xoriginatingip .= " ($id)";
         }

#-------[ AFTER ADD ]------->
my $smtp_pwd = (sessioninfo($thissession))[3];

#-------[ FIND ]---------> ~ line 168
# SMTP SASL authentication (PLAIN only)
if ($config{'smtpauth'}) { [ CODE ] }

#-------[ REPLACE WITH ]------->
# SMTP SASL authentication (PLAIN only)
          if ($config{'smtpauth'}) {
                  my $auth = $smtp->supports("AUTH");
                  $smtp->auth($smtp_user, sendmessage($smtp_pwd)) or openwebmailerror(__FILE__, __LINE__, "$lang_err{'network_server_error'}!<br>($config{'smtpserver'} - ".$smtp->message.")");
          }

#------[ FIND ]------ > ~ line 1588
# SMTP SASL authentication (PLAIN only)
if ($config{'smtpauth'} && !$senderr) { [ CODE ] } ~ 9 lines

#------[ RELACE ALL [ CODE ] WITH FOLLOWING CODE ]------->
 my $smtp_pwd = (sessioninfo($thissession))[3];
      if ($config{'smtpauth'} && !$senderr) {
         my $auth = $smtp->supports("AUTH");
         if (! $smtp->auth($smtp_user, $smtp_pwd)) {
            $senderr++;
            $senderrstr="$lang_err{'network_server_error'}!<br>($config{'smtpserver'} - ".$smtp->message.")";
            writelog("send message error - SMTP server $config{'smtpserver'} error - ".$smtp->message);
            writehistory("send message error - SMTP server $config{'smtpserver'} error - ".$smtp->message);
         }
      }



#------[ SAVE ALL AND CLOSE ] -------
#ENJOY!

_________________
Нас всегда не хватает там, где мы уже были...и будут ждать там, где нас еще небыло!
Вернуться к началу
Посмотреть профиль Посетить сайт автора 
Показать сообщения:   
Начать новую тему   Продолжить эту тему    Вернуться на главную страницу форума -> Тех. раздел Часовой пояс: GMT + 1
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять файлы на этом форуме
Вы можете добавлять файлы


Powered by phpBB © 2001, 2005 phpBB Group


Rambler's Top100