®© ᠩâ, çâ® 㤠«®áì ¯à®ç¨â âì
This commit is contained in:
commit
ead6f5ccd1
|
@ -0,0 +1,14 @@
|
|||
<html>
|
||||
<head><title>Ошибка 500</title>
|
||||
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
|
||||
<link type="text/css" rel="stylesheet" href="white.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Ой</h1>
|
||||
Похоже,что произошла ошибка №500.<br>
|
||||
Эта ошибка возникает из-за дыр в сценариях perl.<br>
|
||||
Прошу вас написать автору на oreolek<at>gmail.com,указав введенную команду.Обнаруженные дыры обычно довольно быстро исправляются.
|
||||
Пока же вернитесь назад и продолжите чтение.<br>
|
||||
С уважением,<br>
|
||||
<i>Oreolek.</i>
|
||||
</body>
|
|
@ -0,0 +1,98 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="744.09448819"
|
||||
height="1052.3622047"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45.1"
|
||||
sodipodi:docbase="C:\Alex\My site_Mk3"
|
||||
sodipodi:docname="Raven.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="404.42157"
|
||||
inkscape:cy="698.86405"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:window-width="1024"
|
||||
inkscape:window-height="721"
|
||||
inkscape:window-x="796"
|
||||
inkscape:window-y="-4" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 213.14219,265.45335 L 213.14219,265.45335 L 79.802051,260.40259 C 207.08127,205.85435 208.09142,206.8645 208.09142,206.8645 C 243.44676,133.12337 299.00515,136.15382 299.00515,136.15382 C 440.00243,134.70561 403.04633,214.92758 412.14224,216.96602"
|
||||
id="path2160"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path2162"
|
||||
sodipodi:cx="302.03561"
|
||||
sodipodi:cy="202.8239"
|
||||
sodipodi:rx="29.294424"
|
||||
sodipodi:ry="18.182745"
|
||||
d="M 331.33004 202.8239 A 29.294424 18.182745 0 1 1 272.74119,202.8239 A 29.294424 18.182745 0 1 1 331.33004 202.8239 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#000000"
|
||||
id="path2164"
|
||||
sodipodi:cx="299.00516"
|
||||
sodipodi:cy="203.32896"
|
||||
sodipodi:rx="7.0710678"
|
||||
sodipodi:ry="16.667517"
|
||||
d="M 306.07623,203.32896 A 7.0710678,16.667517 0 1 1 305.83039,198.97226 L 299.00516,203.32896 z"
|
||||
sodipodi:start="0"
|
||||
sodipodi:end="6.0187242" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 410.12193,212.92542 C 407.09148,312.93052 524.26918,413.94577 524.26918,413.94577 L 589.92909,217.97618 L 539.42146,432.12852 L 638.41641,299.79854 L 545.48237,440.20974 L 705.08648,389.70211 L 705.08648,389.70211 L 552.55344,449.30111 L 552.55344,449.30111 L 708.11693,465.46355 L 536.391,458.39249 C 438.4062,503.84936 461.63971,550.31637 461.63971,550.31637 L 492.95444,568.49911 L 444.46712,553.34683 L 422.24376,579.61079 L 429.31483,547.28591 L 395.9798,569.50927 L 443.45697,488.69706 C 357.594,460.41279 328.29958,480.61584 328.29958,480.61584 L 362.64476,566.47881 L 330.31988,541.22499 L 308.09653,571.52957 L 307.08637,541.22499 L 281.83256,556.37728 L 297.995,526.07271 L 299.00515,481.62599 C 236.3757,449.30111 239.40615,457.38233 239.40615,457.38233 C 128.28937,366.4686 190.91883,321.01174 190.91883,321.01174 C 243.44676,281.61579 213.14219,264.4432 213.14219,264.4432"
|
||||
id="path2166"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 80.812204,260.40259 L 207.08127,236.15893 L 209.10158,204.8442"
|
||||
id="path2190" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 214.17264,265.43304 L 206.09142,238.15893"
|
||||
id="path2192" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.33059978px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 244.11207,349.96131 C 421.15514,524.08642 441.78152,385.43125 441.78152,385.43125 L 244.11207,349.96131 z "
|
||||
id="path2194" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 318 B |
Binary file not shown.
|
@ -0,0 +1,37 @@
|
|||
<style type="text/css">
|
||||
* {
|
||||
color: #CCC;
|
||||
font-family: monospace;
|
||||
}
|
||||
body {
|
||||
background: #222;
|
||||
font-family: monospace;
|
||||
font-size: 100%;
|
||||
}
|
||||
input {
|
||||
width: 80%;
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 100%;
|
||||
font-family: monospace;
|
||||
}
|
||||
textarea{
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 100%;
|
||||
font-family: monospace;
|
||||
}
|
||||
#err{
|
||||
color:#B22;
|
||||
}
|
||||
#hint {
|
||||
color: #555;
|
||||
font-size: 90%;
|
||||
}
|
||||
#hint a {
|
||||
color: #44B;
|
||||
}
|
||||
#hint a:visited {
|
||||
color: #646;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1 @@
|
|||
deny from all
|
|
@ -0,0 +1,2 @@
|
|||
3_Тест №2_Сегодня я тружусь в поте лица над переписыванием PerlBlog 1.09.<br />Помимо задач,которые поставил я перед собой по переделке всего сайта,у меня теперь есть <a href="http://security.uz/bugtraq/default.asp?id=11343">новые</a><br />Первые шаги к исправлению уже сделаны - эти уязвимости теперь заблокированы.Осталось только сделать это...кошерно,так скажем.Чтобы нелегальный запрос не выносил весь блог в исходные коды какого-то левого сайта,а просто вызывал ошибку.<br />По окончании работ я отошлю мою версию авторам PerlBlog.___03/31/2008-19:25_1_
|
||||
2_28 марта 2008_Здравствуйте!<br />Это - лишь первый пост в этом блоге,и я пишу его больше из тестовых целей,чем из практических.<br />Немного техники.<br />Блог выполнен при помощи движка PerlBlog 1.09.Движок это распространяется по лицензии GNU\GPL,почему я взял на себя смелость адаптировать его под мой сайт,переписав всю "внешнюю" часть и переведя большинство из скриптов (сообщения для администратора я не трогал:у меня нет проблем в английском).Апгрейд дизайна тоже находится в моих планах,но не в данный момент.Говоря честно,в моих планах находится создание целого комплекта дизайнов для моего сайта,на выбор читателя.<br />Также я думаю перенести сюда все мои статьи с <a href="http://oreolek.livejournal.com">LiveJournal</a>...еще много чего я планирую.<br />С уважением,<br />Александр Яковлев___03/28/2008-18:43_2_
|
|
@ -0,0 +1,2 @@
|
|||
6_Сайт готов!_Итак,сайт готов.Единственное,что осталось сделать - это счетчик посещений,вещь нужная единственно мне,а не другим.На выход сайта в сеть это не повлияет.В порядке опять же теста опишу разные интересные новшества,которые появились на моем сайте и в движке PerlBlog с моей помощью :-):<br /><br /><ul><br /><li>Вам повезёт!</li><br /><br />Я долго хихикал,когда мне в голову пришла эта идея.<br />Реализовать было ее просто:мой скрипт fortune содержит нужную функцию,я вставил ее без изменений.У нее есть один плюс и один минус.Минус в том,что я думаю,что она будет тормозить,когда общее количество постов в блоге будет большим.Но это наступит только через полгода мимнимум,и то если я буду писать новые статьи ежедневно.Плюс в том,что она никогда не выдаст ___04/01/2008-20:39_0_
|
||||
5_Список некоторых сокращений_Только что я наткнулся на тройку сокращений...в моей голове выстроилась цепочка подобнейших английских аббревиатур.И тут я понял,как это смешно.И решил составить здесь списочек.<br /><br />Итак,начнем с самых распространенных.После дам перевод.<br />What You See Is What You Get - WYSIWYG<br />Keep It Simple, Stupid - KISS<br />Do the simplest thing that could possibly work - DTSTTCPW <br />Represent concepts once and only once - OAOO<br />You aren't going to need it - YAGNI <br /><br />Что Хочешь,То и Получаешь - ЧХТП<br />Храни всё тупым и простым - ХВТП<br />Делай Самые Простые Вещи,которые могут работать - ДСПВКМР<br />Делай концепт лишь однажды - ДКЛО<br />Тебе это не понадобится - ТЭНП<br /><br />Список буду пополнять.IMHO,это будет хорошей идеей.___04/01/2008-13:14_0_
|
|
@ -0,0 +1,6 @@
|
|||
<p>Я приветствую Вас на моем сайте.Здесь я выложил свои основные компьютерные разработки.Ссылка на мои литературные изыски находится слева - она перенесет вас на сайт проекта <a href="http://zhurnal.lib.ru">"Самиздат"</a> Максима Мошкова,где я разместил некоторые из своих произведений. </p>
|
||||
<p>Слева (возможно,вы отключили картинки и не можете посмотреть) находится навигационное меню.Если вам интересно,в нем 8 пар картинок.Если вы не хотите его использовать,внизу страницы я его продублировал. </p> <p>Если вам интересно,что я еще сделал...я написал несколько статей для <a href="http://absurdopedia.wikia.com/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/Oreolek">Абсурдопедии</a>.Их там же можно и посмотреть.Все статьи я не помню,но,например,<acronym title="Центр По Подготовке Боевых Ниндзя">ЦПБН</acronym> - это моя. Я еще про <acronym title="Международный Универсальный Сертификат Отличного Работника">МУСОР</acronym> там не написал. Может,потом как-нибудь статья появится.Абсурдопедия мне в целом нравится,но там встречаются похабные шуточки или матерные.Или пошлые.А всего этого я не делаю сам и не люблю,когда делают другие. </p>
|
||||
<p>Также посмотрите в мой блог - там могут быть интересные статьи.
|
||||
В будущем я планирую поработать над artwork.</p>
|
||||
<br />
|
||||
<img src="Signature.gif" alt="Моя подпись" />
|
|
@ -0,0 +1,4 @@
|
|||
6_Сайт готов!_Итак,сайт готов.Единственное,что осталось сделать - это счетчик посещений,вещь нужная единственно мне,а не другим.На выход сайта в сеть это не повлияет.В порядке опять же теста опишу разные интересные новшества,которые появились на моем сайте и в движке PerlBlog с моей помощью :-):<br /><br /><ul><br /><li>Вам повезёт!</li><br /><br />Я долго хихикал,когда мне в голову пришла эта идея.<br />Реализовать было ее просто:мой скрипт fortune содержит нужную функцию,я вставил ее без изменений.У нее есть один плюс и один минус.Минус в том,что я думаю,что она будет тормозить,когда общее количество постов в блоге будет большим.Но это наступит только через полгода мимнимум,и то если я буду писать новые статьи ежедневно.Плюс в том,что она никогда не выдаст ___04/01/2008-20:39_0_
|
||||
5_Список некоторых сокращений_Только что я наткнулся на тройку сокращений...в моей голове выстроилась цепочка подобнейших английских аббревиатур.И тут я понял,как это смешно.И решил составить здесь списочек.<br /><br />Итак,начнем с самых распространенных.После дам перевод.<br />What You See Is What You Get - WYSIWYG<br />Keep It Simple, Stupid - KISS<br />Do the simplest thing that could possibly work - DTSTTCPW <br />Represent concepts once and only once - OAOO<br />You aren't going to need it - YAGNI <br /><br />Что Хочешь,То и Получаешь - ЧХТП<br />Храни всё тупым и простым - ХВТП<br />Делай Самые Простые Вещи,которые могут работать - ДСПВКМР<br />Делай концепт лишь однажды - ДКЛО<br />Тебе это не понадобится - ТЭНП<br /><br />Список буду пополнять.IMHO,это будет хорошей идеей.___04/01/2008-13:14_0_
|
||||
3_Тест №2_Сегодня я тружусь в поте лица над переписыванием PerlBlog 1.09.<br />Помимо задач,которые поставил я перед собой по переделке всего сайта,у меня теперь есть <a href="http://security.uz/bugtraq/default.asp?id=11343">новые</a><br />Первые шаги к исправлению уже сделаны - эти уязвимости теперь заблокированы.Осталось только сделать это...кошерно,так скажем.Чтобы нелегальный запрос не выносил весь блог в исходные коды какого-то левого сайта,а просто вызывал ошибку.<br />По окончании работ я отошлю мою версию авторам PerlBlog.___03/31/2008-19:25_1_
|
||||
2_28 марта 2008_Здравствуйте!<br />Это - лишь первый пост в этом блоге,и я пишу его больше из тестовых целей,чем из практических.<br />Немного техники.<br />Блог выполнен при помощи движка PerlBlog 1.09.Движок это распространяется по лицензии GNU\GPL,почему я взял на себя смелость адаптировать его под мой сайт,переписав всю "внешнюю" часть и переведя большинство из скриптов (сообщения для администратора я не трогал:у меня нет проблем в английском).Апгрейд дизайна тоже находится в моих планах,но не в данный момент.Говоря честно,в моих планах находится создание целого комплекта дизайнов для моего сайта,на выбор читателя.<br />Также я думаю перенести сюда все мои статьи с <a href="http://oreolek.livejournal.com">LiveJournal</a>...еще много чего я планирую.<br />С уважением,<br />Александр Яковлев___03/28/2008-18:43_2_
|
|
@ -0,0 +1,3 @@
|
|||
<!--
|
||||
edCanvas = document.getElementById('name');
|
||||
//-->
|
Binary file not shown.
After Width: | Height: | Size: 73 B |
|
@ -0,0 +1,5 @@
|
|||
<h3 align="center"><a href="gostinaya.pl">Âåðíóòüñÿ íà ñàéò</a> <a href="?random">Ñëó÷àéíûé ïîñò</a></h3>
|
||||
<p><em>
|
||||
<a href="mailto:oreolek@gmail.com">Àëåêñàíäð ßêîâëåâ,2008 ãîä </a></em><br />Jabber: oreolek@jabber.ru<br />ICQ: 207-138-403</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1 @@
|
|||
deny from all
|
|
@ -0,0 +1,36 @@
|
|||
<threadinfo>
|
||||
<num>2</num>
|
||||
<headerfile>200803</headerfile>
|
||||
<subject>28 марта 2008</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Здравствуйте!<br />Это - лишь первый пост в этом блоге,и я пишу его больше из тестовых целей,чем из практических.<br />Немного техники.<br />Блог выполнен при помощи движка PerlBlog 1.09.Движок это распространяется по лицензии GNU\GPL,почему я взял на себя смелость адаптировать его под мой сайт,переписав всю "внешнюю" часть,немного оптимизировав внутренности и переведя большинство из скриптов (сообщения для администратора я не трогал:у меня нет проблем в английском).Апгрейд дизайна тоже находится в моих планах,но не в данный момент.Говоря честно,в моих планах находится создание целого комплекта дизайнов для моего сайта,на выбор читателя.<br />Также я думаю перенести сюда все мои статьи с <a href="http://oreolek.livejournal.com">LiveJournal</a>...еще много чего я планирую.<br />С уважением,<br />Александр Яковлев</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>03/28/2008-18:43</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>03/30/2008-22:30</date>
|
||||
<body>
|
||||
Ух ты, а комментарии работают?<br />А что так много <code>тегов</code>? Не <b>жирно</b> будет?<br />Зачем столько настроек у <a href="http://google.com">ссылок</a>?<br />Обычный юзер <abbr title="совсем запутается, жалко ведь!">запутается</abbr>.
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Oreolek</name>
|
||||
<email>oreolek AT gmail.com</email>
|
||||
<website></website>
|
||||
<date>03/30/2008-22:36</date>
|
||||
<body>
|
||||
Это я не менял,это уже настройки PerlBlog.<br />Но чувствую,что я уже выпущу щас версию 1.10.Количество изменений огромно.
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,65 @@
|
|||
<threadinfo>
|
||||
<num>3</num>
|
||||
<headerfile>200803</headerfile>
|
||||
<subject>Тест №2</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Сегодня я тружусь в поте лица над переписыванием PerlBlog 1.09.<br />Помимо задач,которые поставил я перед собой по переделке всего сайта,у меня теперь есть <a href="http://security.uz/bugtraq/default.asp?id=11343">новые</a>.<br />Первые шаги к исправлению уже сделаны - эти уязвимости теперь заблокированы.Осталось только сделать это...кошерно,так скажем.Чтобы нелегальный запрос не выносил весь блог в исходные коды какого-то левого сайта,а просто вызывал ошибку.<br />По окончании работ я отошлю мою версию авторам PerlBlog.</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>03/31/2008-19:25</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
||||
<msg>
|
||||
<name><h1>ИМЯ МОЕ</h1></name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>03/31/2008-22:57</date>
|
||||
<body>
|
||||
></script><br />Это - тест движка на эксплойтность.<br />Я добавил проверку имени и тела коммента.Раньше здесь не было даже проверки на разрешенные теги HTML!Кошмар.<br />Теперь я оставил только их.Впрочем,атрибуты я не отслеживаю.Но onmouseout без > и > не будет работать.
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:32</date>
|
||||
<body>
|
||||
Всё повырезало, зачем тогда предпросмотр?
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:32</date>
|
||||
<body>
|
||||
<code><br />.loop2:<br /> mov eax, ebx<br /> and eax, 1<br /> imul eax, 0FFFFFFh<br /> push eax<br /></code>
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:36</date>
|
||||
<body>
|
||||
А теперь посмотри в код.<br />Не, HTML надо убирать и ставить BB-код вместо него, определенно.<br /><br />ಠ_ಠ
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:42</date>
|
||||
<body>
|
||||
Кстати, куда всё делось кроме этого поста в блоге?
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,26 @@
|
|||
<threadinfo>
|
||||
<num>5</num>
|
||||
<headerfile>200804</headerfile>
|
||||
<subject>Список некоторых сокращений</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Только что я наткнулся на тройку сокращений...в моей голове выстроилась цепочка подобнейших английских аббревиатур.И тут я понял,как это смешно.И решил составить здесь списочек.<br /><br />Итак,начнем с самых распространенных.После дам перевод.<br />What You See Is What You Get - WYSIWYG<br />Keep It Simple, Stupid - KISS<br />Do the simplest thing that could possibly work - DTSTTCPW <br />Represent concepts once and only once - OAOO<br />You aren't going to need it - YAGNI <br /><br />Что Хочешь,То и Получаешь - ЧХТП<br />Храни всё тупым и простым - ХВТП<br />Делай Самые Простые Вещи,которые могут работать - ДСПВКМР<br />Делай концепт лишь однажды - ДКЛО<br />Тебе это не понадобится - ТЭНП<br /><br />Список буду пополнять.IMHO,это будет хорошей идеей.</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>04/01/2008-13:14</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:03</date>
|
||||
<body>
|
||||
Русские сокращения у тебя получились совсем непроизносимые.<br /><br />Кстати, не советую использовать сокращения - они нужны только тем, кто печатает со скоростью 100 знаков в минуту или еще медленней.
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,26 @@
|
|||
<threadinfo>
|
||||
<num>6</num>
|
||||
<headerfile>200804</headerfile>
|
||||
<subject>Сайт готов!</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Итак,сайт готов.Единственное,что осталось сделать - это счетчик посещений,вещь нужная единственно мне,а не другим.На выход сайта в сеть это не повлияет.В порядке опять же теста опишу разные интересные новшества,которые появились на моем сайте и в движке PerlBlog с моей помощью :-):<br /><br /><ul><br /><li>Вам повезёт!</li><br /><br />Я долго хихикал,когда мне в голову пришла эта идея.<br />Реализовать было ее просто:мой скрипт fortune содержит нужную функцию,я вставил ее без изменений.У нее есть один плюс и один минус.Минус в том,что я думаю,что она будет тормозить,когда общее количество постов в блоге будет большим.Но это наступит только через полгода мимнимум,и то если я буду писать новые статьи ежедневно.Плюс в том,что она никогда не выдаст "битой" ссылки.<br />Когда я рисовал кнопки,мне немного стало стыдно за свою мнительность."Мои программы","Мои сочинения","Мои друзья"...Продолжать это кнопкой "Мне повезёт!" я не захотел,почему и изменил текст.В конце концов,это вы читаете мой блог,а не я его пишу.<br /><br /><li>Улучшенная безопасность</li><br /><br />Как было написано в одном из предыдущих постов,я нашел несколько эксплойтов на security.uz на тему PerlBlog.Просмотрев тщательно исходный код,я понял,что это - не просто уязвимости,а целые бреши в безопасности.Самой крупной было полное отсутствие фильтрации комментариев на запрещенные теги.Любой пользователь мог написать в теле комментария,например,"<script>".Я пресек эту возможность на корню.Также запрещены угловые скобки и кавычки в имени комментатора.Хотите - пользуйтесь <code>< > "</code>.<br />Также были исправлены две другие уязвимости и добавлены некоторые превентивные проверки.<br /><br /><li>"Любой браузер"</li><br /><br />Кнопка anybrowser.org мне не нравилась.Стильная,да,но все же она не вписывалась в дизайн.К тому же,она была написана по-английски.Русские варианты мне там вообще не нравились.Поэтому я сделал свою кнопку.<br />Конечно,она <i>тоже</i> не вписывается в цветовую схему сайта,но хотя бы своя,родная!Хотя,по правде,я просто забыл следить за цветовой схемой и оставил предыдущую.Лого Netscape я стирал вручную,по точкам.Пиксель-арт рулит!<br /><br />P.S. Сайт по-прежнему виден в любом браузере,так как контент и код совершенно не изменен.Блог может выдавать некоторые ошибки в позициях таблиц,но все равно выглядит почти одинаково везде.<br /><br /><li>Новая структура</li><br /><br />Пользуясь случаем,я немного видоизменил структуру сайта.Сделал его более целенаправленным.Раньше здесь было довольно много разделов "убить место",просто для того,чтобы было не так пусто.Сейчас же надобность в них отпала.<br /><br /><li>Новый дизайн</li><br /><br />Предыдущий дизайн был сверстан "левой задней ногой",то есть- на бегу и на коленке (в буквальном значении этого выражения).Сейчас я продумал всё.И,хотя мне до сих пор многое не нравится,так уже намного лучше.В моих планах сделать несколько тестовых дизайн-макетов.Я пока еще не выбрал,как я буду их менять - переключать подключаемые внешние файлы с помощью Perl либо менять стили CSS через Javascript.К стыду своему,я плохо знаю CSS,поэтому выбор труден (CSS стили можно менять и через браузер,а Perl-решение потребует множества внешних файлов).Пока думаю.<br /><br /><li>Куча возможностей</li><br /><br />Например,я могу не только проверять комментарии на наличие тегов,но и заменять в них :-) на рисованные рожицы (правда,прежде всего мне надо их нарисовать).Могу меня дизайн страниц.Могу добавить кучу всяких новых фич,например,форум или голосование...но точно не буду,это здесь незачем.Могу нарисовать себе GUI-программу для постинга эксклюзивно в мой блог (это намного проще,чем можно себе представить - от пары секунд до дня работы).Могу добавить еще админов и постеров,чтобы блог был не только моим (чёрт знает зачем...но переработать надо будет по минимуму).Могу...добавить не только статьи,но и аудио,видео и фото с возможностями комментирования (опять же ничего изменять не придется вообще,только закачать на сайт и дать ссылку\вставить в пост).Как видите,возможности огромны.<br /></ul><br />P.S.Когда я это запостил,я обнаружил хороший баг PerlBlog:ограниченность размера сообщения.Есть над чем работать.</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>04/01/2008-20:39</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<msg>
|
||||
<name>Grom PE</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<date>06/11/2008-20:12</date>
|
||||
<body>
|
||||
CSS квеста конфликтует с блогом, надо бы поправить.<br /><br />А еще неплохо было бы имя запоминать в куках и подставлять каждый раз.<br /><br />> заменять в них :-) на рисованные рожицы<br />О нет, только не это! Графические смайлы - идиотизм мира сего. Текстовых хватит.
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,16 @@
|
|||
<threadinfo>
|
||||
<num>7</num>
|
||||
<headerfile>200806</headerfile>
|
||||
<subject>Новое воплощение</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Итак,этот сайт пережил новое воплощение!<br />Новый дизайн,новый движок,новый хост (не без этого).<br />Здесь еще не всё доделано (хотя еще не нашлось того,кто бы добрался до недостроенной части),но то,что есть - оно работает,и меня устраивает,как оно работает.И это КРУТО!!!<br />Сейчас же буду раскручивать :-)<br />P.S. Записи в блог будут появляться не очень часто,потому что часть записок я буду "раскидывать" по сайту. </name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>06/11/2008-16:39</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,17 @@
|
|||
<threadinfo>
|
||||
<num>8</num>
|
||||
<headerfile>200806</headerfile>
|
||||
<subject>Первые странности</subject>
|
||||
</threadinfo>
|
||||
|
||||
<msg>
|
||||
<name>Странно,но сегодня я обнаружил,что в блоге недостаёт многих моих сообщений.Куда они пропали,я не знаю.Сайт лежит в сети только 1 день,и даже не индексируется (и не будет) поисковыми системами.Странно в высшей степени.
|
||||
P.S. Продолжается исправление багов и патч сайта по мере продвижения читателей.Пока что полностью "прошёл" весь сайт только один человек.</name>
|
||||
<email></email>
|
||||
<website></website>
|
||||
<image></image>
|
||||
<date>06/12/2008-06:01</date>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</msg>
|
|
@ -0,0 +1,3 @@
|
|||
200806
|
||||
200804
|
||||
200803
|
|
@ -0,0 +1 @@
|
|||
7
|
|
@ -0,0 +1,16 @@
|
|||
function launchWin(page,name,height,width,trim,resize,scroll) {
|
||||
var leftvalue = ((375) - (width / 2));
|
||||
var topvalue = ((screen.availHeight / 2) - (height / 2));
|
||||
if (trim) {
|
||||
OpenWin = this.open(page, name, "top=" + topvalue + ", left=" + leftvalue + ",toolbar=yes,menubar=yes,location=yes,scrollbars=" + scroll + ",resizable=" + resize + ",height=" + height + ",width=" + width);
|
||||
} else {
|
||||
OpenWin = this.open(page, name, "top=" + topvalue + ", left=" + leftvalue + ",toolbar=no,menubar=no,location=no,scrollbars=" + scroll + ",resizable=" + resize + ",height=" + height + ",width=" + width);
|
||||
}
|
||||
OpenWin.focus();
|
||||
}
|
||||
|
||||
// suppress any js errors
|
||||
function stoperror(){
|
||||
return true
|
||||
}
|
||||
window.onerror=stoperror
|
|
@ -0,0 +1,372 @@
|
|||
// new edit toolbar used with permission
|
||||
// by Alex King
|
||||
// http://www.alexking.org/
|
||||
|
||||
var edButtons = new Array();
|
||||
var edLinks = new Array();
|
||||
var edOpenTags = new Array();
|
||||
|
||||
function edButton(id, display, tagStart, tagEnd, access, open) {
|
||||
this.id = id; // used to name the toolbar button
|
||||
this.display = display; // label on button
|
||||
this.tagStart = tagStart; // open tag
|
||||
this.tagEnd = tagEnd; // close tag
|
||||
this.access = access; // access key
|
||||
this.open = open; // set to -1 if tag does not need to be closed
|
||||
}
|
||||
|
||||
function zeroise(number, threshold) {
|
||||
// FIXME: or we could use an implementation of printf in js here
|
||||
var str = number.toString();
|
||||
if (number < 0) { str = str.substr(1, str.length) }
|
||||
while (str.length < threshold) { str = "0" + str }
|
||||
if (number < 0) { str = '-' + str }
|
||||
return str;
|
||||
}
|
||||
|
||||
var now = new Date();
|
||||
var datetime = now.getFullYear() + '-' +
|
||||
zeroise(now.getMonth() + 1, 2) + '-' +
|
||||
zeroise(now.getDate(), 2) + 'T' +
|
||||
zeroise(now.getHours(), 2) + ':' +
|
||||
zeroise(now.getMinutes(), 2) + ':' +
|
||||
zeroise(now.getSeconds() ,2) +
|
||||
// FIXME: we could try handling timezones like +05:30 and the like
|
||||
zeroise((now.getTimezoneOffset()/60), 2) + ':' + '00';
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_strong'
|
||||
,'str'
|
||||
,'<strong>'
|
||||
,'</strong>'
|
||||
,'b'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_em'
|
||||
,'em'
|
||||
,'<em>'
|
||||
,'</em>'
|
||||
,'i'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_link'
|
||||
,'link'
|
||||
,''
|
||||
,'</a>'
|
||||
,'a'
|
||||
); // special case
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_block'
|
||||
,'b-quote'
|
||||
,'<blockquote>'
|
||||
,'</blockquote>'
|
||||
,'q'
|
||||
);
|
||||
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_del'
|
||||
,'del'
|
||||
,'<del datetime="' + datetime + '">'
|
||||
,'</del>'
|
||||
,'d'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_ins'
|
||||
,'ins'
|
||||
,'<ins datetime="' + datetime + '">'
|
||||
,'</ins>'
|
||||
,'s'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_img'
|
||||
,'img'
|
||||
,''
|
||||
,''
|
||||
,'m'
|
||||
,-1
|
||||
); // special case
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_ul'
|
||||
,'ul'
|
||||
,'<ul>\n'
|
||||
,'</ul>\n\n'
|
||||
,'u'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_ol'
|
||||
,'ol'
|
||||
,'<ol>\n'
|
||||
,'</ol>\n\n'
|
||||
,'o'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_li'
|
||||
,'li'
|
||||
,'\t<li>'
|
||||
,'</li>\n'
|
||||
,'l'
|
||||
);
|
||||
|
||||
edButtons[edButtons.length] =
|
||||
new edButton('ed_pre'
|
||||
,'code'
|
||||
,'<code>'
|
||||
,'</code>'
|
||||
,'c'
|
||||
);
|
||||
|
||||
function edLink() {
|
||||
this.display = '';
|
||||
this.URL = '';
|
||||
this.newWin = 0;
|
||||
}
|
||||
|
||||
edLinks[edLinks.length] = new edLink('WordPress'
|
||||
,'http://wordpress.org/'
|
||||
);
|
||||
|
||||
edLinks[edLinks.length] = new edLink('alexking.org'
|
||||
,'http://www.alexking.org/'
|
||||
);
|
||||
|
||||
function edShowButton(button, i) {
|
||||
if (button.id == 'ed_img') {
|
||||
document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
|
||||
}
|
||||
else if (button.id == 'ed_link') {
|
||||
document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
|
||||
}
|
||||
else {
|
||||
document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '" />');
|
||||
}
|
||||
}
|
||||
|
||||
function edShowLinks() {
|
||||
var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>';
|
||||
for (i = 0; i < edLinks.length; i++) {
|
||||
tempStr += '<option value="' + i + '">' + edLinks[i].display + '</option>';
|
||||
}
|
||||
tempStr += '</select>';
|
||||
document.write(tempStr);
|
||||
}
|
||||
|
||||
function edAddTag(button) {
|
||||
if (edButtons[button].tagEnd != '') {
|
||||
edOpenTags[edOpenTags.length] = button;
|
||||
document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
|
||||
}
|
||||
}
|
||||
|
||||
function edRemoveTag(button) {
|
||||
for (i = 0; i < edOpenTags.length; i++) {
|
||||
if (edOpenTags[i] == button) {
|
||||
edOpenTags.splice(i, 1);
|
||||
document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function edCheckOpenTags(button) {
|
||||
var tag = 0;
|
||||
for (i = 0; i < edOpenTags.length; i++) {
|
||||
if (edOpenTags[i] == button) {
|
||||
tag++;
|
||||
}
|
||||
}
|
||||
if (tag > 0) {
|
||||
return true; // tag found
|
||||
}
|
||||
else {
|
||||
return false; // tag not found
|
||||
}
|
||||
}
|
||||
|
||||
function edCloseAllTags() {
|
||||
var count = edOpenTags.length;
|
||||
for (o = 0; o < count; o++) {
|
||||
edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
function edQuickLink(i, thisSelect) {
|
||||
if (i > -1) {
|
||||
var newWin = '';
|
||||
if (edLinks[i].newWin == 1) {
|
||||
newWin = ' target="_blank"';
|
||||
}
|
||||
var tempStr = '<a href="' + edLinks[i].URL + '"' + newWin + '>'
|
||||
+ edLinks[i].display
|
||||
+ '</a>';
|
||||
thisSelect.selectedIndex = 0;
|
||||
edInsertContent(edCanvas, tempStr);
|
||||
}
|
||||
else {
|
||||
thisSelect.selectedIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function edSpell(myField) {
|
||||
var word = '';
|
||||
if (document.selection) {
|
||||
myField.focus();
|
||||
var sel = document.selection.createRange();
|
||||
if (sel.text.length > 0) {
|
||||
word = sel.text;
|
||||
}
|
||||
}
|
||||
else if (myField.selectionStart || myField.selectionStart == '0') {
|
||||
var startPos = myField.selectionStart;
|
||||
var endPos = myField.selectionEnd;
|
||||
if (startPos != endPos) {
|
||||
word = myField.value.substring(startPos, endPos);
|
||||
}
|
||||
}
|
||||
if (word == '') {
|
||||
word = prompt('Enter a word to look up:', '');
|
||||
}
|
||||
if (word != '') {
|
||||
window.open('http://dictionary.reference.com/search?q=' + escape(word));
|
||||
}
|
||||
}
|
||||
|
||||
function edToolbar() {
|
||||
document.write('<div id="ed_toolbar">');
|
||||
for (i = 0; i < edButtons.length; i++) {
|
||||
edShowButton(edButtons[i], i);
|
||||
}
|
||||
document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="Dictionary lookup" value="Dict." />');
|
||||
document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="Close all open tags" value="Close Tags" />');
|
||||
// edShowLinks(); // disabled by default
|
||||
document.write('</div>');
|
||||
}
|
||||
|
||||
// insertion code
|
||||
|
||||
function edInsertTag(myField, i) {
|
||||
//IE support
|
||||
if (document.selection) {
|
||||
myField.focus();
|
||||
sel = document.selection.createRange();
|
||||
if (sel.text.length > 0) {
|
||||
sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
|
||||
}
|
||||
else {
|
||||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||||
sel.text = edButtons[i].tagStart;
|
||||
edAddTag(i);
|
||||
}
|
||||
else {
|
||||
sel.text = edButtons[i].tagEnd;
|
||||
edRemoveTag(i);
|
||||
}
|
||||
}
|
||||
myField.focus();
|
||||
}
|
||||
//MOZILLA/NETSCAPE support
|
||||
else if (myField.selectionStart || myField.selectionStart == '0') {
|
||||
var startPos = myField.selectionStart;
|
||||
var endPos = myField.selectionEnd;
|
||||
var cursorPos = endPos;
|
||||
var scrollTop = myField.scrollTop;
|
||||
|
||||
if (startPos != endPos) {
|
||||
myField.value = myField.value.substring(0, startPos)
|
||||
+ edButtons[i].tagStart
|
||||
+ myField.value.substring(startPos, endPos)
|
||||
+ edButtons[i].tagEnd
|
||||
+ myField.value.substring(endPos, myField.value.length);
|
||||
cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
|
||||
}
|
||||
else {
|
||||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||||
myField.value = myField.value.substring(0, startPos)
|
||||
+ edButtons[i].tagStart
|
||||
+ myField.value.substring(endPos, myField.value.length);
|
||||
edAddTag(i);
|
||||
cursorPos = startPos + edButtons[i].tagStart.length;
|
||||
}
|
||||
else {
|
||||
myField.value = myField.value.substring(0, startPos)
|
||||
+ edButtons[i].tagEnd
|
||||
+ myField.value.substring(endPos, myField.value.length);
|
||||
edRemoveTag(i);
|
||||
cursorPos = startPos + edButtons[i].tagEnd.length;
|
||||
}
|
||||
}
|
||||
myField.focus();
|
||||
myField.selectionStart = cursorPos;
|
||||
myField.selectionEnd = cursorPos;
|
||||
myField.scrollTop = scrollTop;
|
||||
}
|
||||
else {
|
||||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||||
myField.value += edButtons[i].tagStart;
|
||||
edAddTag(i);
|
||||
}
|
||||
else {
|
||||
myField.value += edButtons[i].tagEnd;
|
||||
edRemoveTag(i);
|
||||
}
|
||||
myField.focus();
|
||||
}
|
||||
}
|
||||
|
||||
function edInsertContent(myField, myValue) {
|
||||
//IE support
|
||||
if (document.selection) {
|
||||
myField.focus();
|
||||
sel = document.selection.createRange();
|
||||
sel.text = myValue;
|
||||
myField.focus();
|
||||
}
|
||||
//MOZILLA/NETSCAPE support
|
||||
else if (myField.selectionStart || myField.selectionStart == '0') {
|
||||
var startPos = myField.selectionStart;
|
||||
var endPos = myField.selectionEnd;
|
||||
myField.value = myField.value.substring(0, startPos)
|
||||
+ myValue
|
||||
+ myField.value.substring(endPos, myField.value.length);
|
||||
myField.focus();
|
||||
myField.selectionStart = startPos + myValue.length;
|
||||
myField.selectionEnd = startPos + myValue.length;
|
||||
} else {
|
||||
myField.value += myValue;
|
||||
myField.focus();
|
||||
}
|
||||
}
|
||||
|
||||
function edInsertLink(myField, i, defaultValue) {
|
||||
if (!defaultValue) {
|
||||
defaultValue = 'http://';
|
||||
}
|
||||
if (!edCheckOpenTags(i)) {
|
||||
var URL = prompt('Enter the URL' ,defaultValue);
|
||||
if (URL) {
|
||||
edButtons[i].tagStart = '<a href="' + URL + '">';
|
||||
edInsertTag(myField, i);
|
||||
}
|
||||
}
|
||||
else {
|
||||
edInsertTag(myField, i);
|
||||
}
|
||||
}
|
||||
|
||||
function edInsertImage(myField) {
|
||||
var myValue = prompt('Enter the URL of the image', 'http://');
|
||||
if (myValue) {
|
||||
myValue = '<img src="'
|
||||
+ myValue
|
||||
+ '" alt="' + prompt('Enter a description of the image', '')
|
||||
+ '" />';
|
||||
edInsertContent(myField, myValue);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/perl
|
||||
use locale;
|
||||
require 'common.pl';
|
||||
use CGI qw/:standard/;
|
||||
#use CGI::Carp 'fatalsToBrowser';
|
||||
my $debug_out="debug/debug_cave.txt";
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
@pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
my @cookieArray=split ("; ",$ENV{'HTTP_COOKIE'});
|
||||
my $cookieName;my $cookieValue;
|
||||
foreach (@cookieArray){
|
||||
($cookieName,$cookieValue)=split("=",$_);
|
||||
$cookieHash{$cookieName}=$cookieValue;
|
||||
}
|
||||
if ($ENV{'QUERY_STRING'} ne '') {
|
||||
@qstr = split (/=/,$ENV{'QUERY_STRING'});
|
||||
$command = $qstr[0];
|
||||
$value = $qstr[1];
|
||||
$value =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
|
||||
if ($command eq "error"){$error=1;&displayDefault;}
|
||||
else {&displayDefault;}
|
||||
}
|
||||
else{&displayDefault;}
|
||||
sub displayDefault(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"EOF";
|
||||
<html>\n
|
||||
<head><script language="javascript">
|
||||
window.onload=function() {document.getElementById("in").focus();};
|
||||
</script>\n<title>Ïåùåðà</title>\n
|
||||
EOF
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
print <<"EOF";
|
||||
</head><body>
|
||||
Êàê òîëüêî âû òÿíåòå íà ñåáÿ êíèãó,øêàô îòúåçæàåò â ñòîðîíó,îòêðûâàÿ çà ñîáîé ëåñòíèöó,âåäóùóþ âíèç.
|
||||
Âû ñïóñêàåòåñü ïî ëåñòíèöå â ïåùåðó.Ýòà êîìíàòà áóêâàëüíî âûäîëáëåíà â ñêàëå.Ïåðåä âàìè ñòîèò ïèñüìåííûé ñòîë,íà
|
||||
í¸ì ëåæèò çàïèñêà.Âûñîêî íà äàëüíåé ñòåíå ïðîðóáëåíî îêíî.Îíî äîñòàòî÷íî øèðîêî,÷òîáû îñâåùàòü êîìíàòó.
|
||||
Íà "ïîäîêîííèêå" ñèäèò âîðîí.
|
||||
EOF
|
||||
if ($error){print "<p id=\"err\">Êîìàíäà íå ðàñïîçíàíà.</p>";$error=0;}
|
||||
print "<FORM NAME='input' ACTION='parse.pl' METHOD='POST'>\n";
|
||||
print "<input type='hidden' name='location' id='location' value='cave'>";
|
||||
print "> <input type=text id='in' name='input' size=54 maxlength=65>\n";
|
||||
print "</body>\n</html>";
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||||
<title>Changelog</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 align="center">Дневник изменений</h1>
|
||||
<p> <b>1.0</b> Первый (начальный) релиз</p>
|
||||
<p><b> 1.1-1.2</b> Исправление багов,добавление команд</p>
|
||||
<p><b> 1.3</b> Преобразование регистра</p>
|
||||
<p><b> 1.4</b> Исправление багов,добавление команд</p>
|
||||
<p><b> 1.5</b> Выделение парсера в отдельный модуль,организация команд (до этого релиза
|
||||
каждая локация имела собственный набор команд,что давало интересные отзывы),
|
||||
добавление новых(пение,трогание,осматривание и прочее),ужесточение проверки команд.
|
||||
В ходе тестирования было найдено множество сложных багов в проверке команд (все
|
||||
правильные команды,содержащие более одного слова, не распознавались,что делало
|
||||
прохождение невозможным),релиз откатан до версии 1.4 до исправления.</p>
|
||||
<p><b> 1.50.01</b> Изменена нумерация версий.Теперь она ведётся в
|
||||
формате хх.хх.хх,где вторая хх означает добавление новых функций,третья
|
||||
- исправление старых багов,первая означает изменение самого
|
||||
наполнения(выход апгрейда).</p>
|
||||
<p><b> 1.50.02</b> Структурировал код,заменил шапку в некоторых страницах.</p>
|
||||
<p><b> 1.50.03</b> Исправлена команда "петь".Отформатированы песни.</p>
|
||||
<p> <b>1.50.04</b> При попытке исправить сломавшийся парсер обнаружено,что парсер работает исправно.Cнова сделан релиз,надеюсь вам понравится. </p>
|
||||
<!--<p><b>1.50.05</b> Не понравилось.По просьбам читателей вновь сделан rollback.Оно всё-таки не работает.Странно,поутру вроде каначило...Буду ответственнее делать тестинг...да,и в следующий раз - не в 5 утра и не после релиза.О,и хотя бы дважды.</p> - ложная тревога-->
|
||||
<p><b>1.50.05</b> Ошибка обнаружена и исправлена.Парсинг действительно
|
||||
был сломан,но это проявлялось редко и только на отдельных страницах.И
|
||||
дело было не в самом парсере,кстати.</p>
|
||||
<p><b>1.50.06</b> Исправлены ошибки в работе некоторых команд (в частности,то же пение),приводившие к тому,что возникал "БОЛЬШОЙ ГЛЮК!".</p>
|
||||
<p><b>1.50.07</b> Исправлено распознавание одной из секретных команд во второй локации.</p>
|
||||
<p><b>1.50.08</b> Исправлен хороший
|
||||
глюк,мешавший распознаванию любых команд,содержащих пробел.Если интересно,то все регулярные выражения /глагол \w+/ заменены на
|
||||
/глагол\s/</p>
|
||||
<p><b>1.50.09</b> Исправлена пара возможных багов,подчищен код.</p>
|
||||
<p><b>1.50.10</b> Теперь changelog открыт для просмотра.</p>
|
||||
<p><b>1.50.11</b> Увеличена длина текстового поля в Гостиной.</p>
|
||||
<p><b>1.50.12</b> Немного изменены хранящиеся cookies.Надеюсь,хоть сейчас они будут реально сохраняться.</p>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,44 @@
|
|||
my $charset="windows-1251";
|
||||
$version="1.50.12";
|
||||
$debug=1;
|
||||
|
||||
sub showwarning(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print "<html><meta http-equiv=\"Content-Type\" content='text/html; charset=$charset'>";
|
||||
print "<script language=\"javascript\">";
|
||||
print "window.onload=function() {document.getElementById(\"in\").focus();};";
|
||||
print "</script>";
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
print "<body>";
|
||||
print @_;
|
||||
print "<div id=\"hint\"><noscript>Ïîñòàâüòå êóðñîð â ïîëå âíèçó è </noscript>íàæìèòå Enter.</div><br>";
|
||||
|
||||
print "<FORM NAME='input' ACTION='$location.pl' METHOD='GET'>\n";
|
||||
print "> <input type=text id=\"in\" size=64 maxlength=32>\n</form>";
|
||||
print "<br><a href='$to'>Âåðíóòüñÿ îáðàòíî</a>";
|
||||
print "</body></html>";
|
||||
}
|
||||
|
||||
sub printHeader{#common header - CSS style and so on
|
||||
my($title) = shift;
|
||||
my($white) = shift;
|
||||
print "Content-type: text/html\n\n";
|
||||
print "<html><meta http-equiv=\"Content-Type\" content='text/html; charset=$charset'><head>";
|
||||
if ($white){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else{
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
}
|
||||
print"\n<title>$title</title>\n</head>\n<body>\n";
|
||||
}
|
||||
|
||||
sub printFooter{#common footer - enclosures
|
||||
print <<"END";
|
||||
<h3 align="center"><a href="gostinaya.pl">Âûéòè èç áëîãà</a> <a href="?random">Ñëó÷àéíûé ïîñò</a></h3>
|
||||
<p><em>
|
||||
<a href="mailto:oreolek\@gmail.com">Àëåêñàíäð ßêîâëåâ,2008 ãîä </a></em><br />Jabber: oreolek\@jabber.ru<br />ICQ: 207-138-403</p>
|
||||
</body>
|
||||
</html>
|
||||
END
|
||||
}
|
|
@ -0,0 +1,253 @@
|
|||
#!/usr/bin/perl
|
||||
### Best with Perl 5.6 or better
|
||||
# Path to Perl - you may need to check your server admin just in case
|
||||
# it is different.
|
||||
##########################################################################
|
||||
# Forum2 Development Overview
|
||||
# DForum 1.01 (11/02/1999)
|
||||
# http://www.dansteinman.com/dforum
|
||||
# Copyright (C) 1998 Dan Steinman
|
||||
#
|
||||
# This version by Ted Hawkins, Forum2.6, January 2003
|
||||
# http://scriptles.bluwall.com
|
||||
# Including
|
||||
# 1) Footer script by Michael Mathews, August 2002
|
||||
# http://perlcircus.com
|
||||
#
|
||||
# 2) Latest reply to a subject posting
|
||||
# by Jeff Thomas, December 2002
|
||||
# http://www.jhthomas.net
|
||||
# Jeff redid the Original Dforum1 this way at www.roigi.com
|
||||
# and it has been written into Forum2 as of Version 2.5
|
||||
#
|
||||
# 3) PerlBlog v1.08b by Rio Akasaka, May 2003-May 2005
|
||||
# Altered Forum2.6 into a customizable and flexible
|
||||
# weblog.
|
||||
#
|
||||
# http://www.chronicled.org/perlblog
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License (license.txt) for more details.
|
||||
#
|
||||
##########################################################################
|
||||
# filename: weblog-config.pl
|
||||
# Set-Up Variables
|
||||
# The document-root environment
|
||||
$root = "$ENV{'DOCUMENT_ROOT'}";
|
||||
# This is the default
|
||||
# $forumdir = "$root/your-path-goes-here"
|
||||
# The below should work on most servers - check with your Sys Admin to be sure.
|
||||
$forumdir = "blogdata";
|
||||
$contentdir = "content";#the path to the txt-content of pages
|
||||
#################################### EASY CUSTOMIZE ############################
|
||||
# Customizing your weblog.
|
||||
# You can change the defaults to reflect your site's design and style.
|
||||
# If you put quotation marks within the quotation marks, be sure to a \ sign before each.
|
||||
#################################### Administration ############################
|
||||
$username = "oreolek"; # Weblog username
|
||||
$password = "verylongpasswordindeed"; # Weblog password
|
||||
$adminusername = "administrator"; # Weblog-admin.pl username
|
||||
$adminpassword = "this_password_has_underscores"; # Weblog-admin.pl password
|
||||
$code = "write_post"; # Weblog journal page
|
||||
$ssource="./blogdata"; # Source to your images and JavaScript (omit final slash)
|
||||
$show="5"; # Number of posts to show
|
||||
$recent="yes"; # Show recent posts or not
|
||||
$recentnum="10"; # Number of recent posts to show
|
||||
$lang="ru"; # Language of weblog
|
||||
$charset="windows-1251"; # Character set (utf-8 is standard)
|
||||
$inputwc="email"; # Show website or email on comment box input
|
||||
|
||||
#################################### Titles and names ############################
|
||||
$blogtitle = "Ñàéò Àëåêñàíäðà ßêîâëåâà aka Oreolek"; # Weblog title
|
||||
$posted = "Îòïðàâëåíî â "; # Post title at end of each entry
|
||||
$description = "Âåáëîã íàïèñàí íà Perl/CGI"; # Blog description (used for search engines)
|
||||
$keywords = "PerlBlog, v.1.09"; # Blog keywords (used for search engines)
|
||||
$subtitle = "Based on the PerlBlog v.1.09"; # Blog subtitle
|
||||
$author = "Oreolek"; # Blog author (used for search engines)
|
||||
|
||||
|
||||
|
||||
#################################### Images ############################
|
||||
$bgimg="../background.gif"; # Blog background image (optional)
|
||||
$headerimg =""; # Header image (optional, include http)
|
||||
$footerimg=""; # Footer image (optional, include http)
|
||||
|
||||
|
||||
|
||||
#################################### Main details ############################
|
||||
$maincolor ="#ffffff"; # Main weblog entry background color
|
||||
$bgcolor="#144A64"; # Main weblog background color
|
||||
$width ="782"; #Blog Width
|
||||
$jwidth="480px"; # Blog Entry (left column) width
|
||||
|
||||
|
||||
|
||||
#################################### Header ############################
|
||||
$height="15px"; #Header Section Height
|
||||
$paddingtp ="20px"; # Header padding top (how far the title is from the top)
|
||||
$bgtopcolor ="#FFFFFF"; # Header background color
|
||||
$paddinglft ="35px"; # Header padding left (how far the title is from the left, keep congruous to paddingr)
|
||||
|
||||
|
||||
|
||||
#################################### Title ############################
|
||||
$headertitlefont="Georgia"; # Title (in header area) font
|
||||
$titlesize="130%"; # Title (in header area) font size
|
||||
$headertitlecolor="#FFFFFF"; # Title (in header area) font color
|
||||
$headertitlewg="bold"; # Title (in header area) font weight
|
||||
|
||||
|
||||
|
||||
#################################### Subtitle ############################
|
||||
$sheight="10px"; #Subtitle Section Height
|
||||
$subtitlepaddingtop="2px"; # Subtitle distance from title
|
||||
$subttfont="Trebuchet MS"; # Subtitle font
|
||||
$subtitlesize="80%"; # Subtitle font size: the greater the value, the bigger
|
||||
$subttcolor="#dddddd"; # Subtitle font color
|
||||
$subttdeco="none"; # Subtitle font decoration: underline or none
|
||||
$subtitlewg="none"; # Subtitle font weight: bold or none
|
||||
|
||||
$subtthfont="Arial"; # Subtitle hover (mouseover) font
|
||||
$subtthcolor="#dddddd"; # Subtitle hover (mouseover) font color
|
||||
$subtitlehsize="80%"; # Subtitle hover (mouseover) font size
|
||||
$subtthdeco="none"; # Subtitle hover (mouseover) font decoration: underline or none
|
||||
$subtitlehpwg="none"; # Subtitle hover font weight: bold or none
|
||||
|
||||
|
||||
|
||||
|
||||
######################### Links, below the subtitle (main, archive, about) ###############
|
||||
$hheight="150px"; #Header link Section Height
|
||||
$headerpaddingtop="30px"; # Header link distance from subtitle
|
||||
$subttfontl="Trebuchet MS"; # Header link font
|
||||
$subtitlesizel="80%"; # Header link font size: the greater the value, the bigger
|
||||
$subttcolorl="#dddddd"; # Header link font color
|
||||
$subttdecol="none"; # Header link font decoration: underline or none
|
||||
$subtitlewgl="none"; # Header link font weight: bold or none
|
||||
|
||||
$subtthfontl="Arial"; # Header link hover (mouseover) font
|
||||
$subtthcolorl="#dddddd"; # Header link hover (mouseover) font color
|
||||
$subtitlehsizel="80%"; # Header link hover (mouseover) font size
|
||||
$subtthdecol="underline"; # Header link hover (mouseover) font decoration: underline or none
|
||||
$subtitlehpwgl="none"; # Header link hover font weight: bold or none
|
||||
|
||||
$brackets="#dddddd"; # Header links brackets color
|
||||
|
||||
######################### Journal/Post details ###############
|
||||
$titlefont="Georgia"; # Journal post title font
|
||||
$titlecolor="#4F4E46"; # Journal post title font color
|
||||
$tentrysize="130%"; # Journal post title font size
|
||||
|
||||
$bodyfont="Verdana"; # Journal post entry font
|
||||
$bodycolor="#4F4E46"; # Journal post entry font color
|
||||
$bodyesize="11px"; # Journal post entry font size
|
||||
|
||||
|
||||
|
||||
######################### Journal Tag details (what comes after the post) ###############
|
||||
$tagfont="Verdana"; # Entry tag font
|
||||
$tagfontsize="11px"; # Entry tag font size
|
||||
$tagcolor="#4b4b4b"; # Entry tag font color
|
||||
$tagweight="none"; # Entry tag font weight (bold or none)
|
||||
|
||||
|
||||
|
||||
######################### Sidebar ###############
|
||||
$swidth="176px"; # Sidebar Column (right column) width
|
||||
$direction="left"; # Sidebar left or right?
|
||||
$paddingr="0px"; # If sidebar is on the left, make value to 0px
|
||||
$paddingl="35px"; # If sidebar is on the left, make value to 35px
|
||||
|
||||
$sectionfont="Trebuchet MS"; # Sidebar Column font
|
||||
$sectionsize="100%"; # Sidebar Column font size
|
||||
$sectionclr="#666666"; # Sidebar Column color
|
||||
$sidebarcolor="#ffffff"; # Sidebar Column background color
|
||||
|
||||
$sectiontfont="Trebuchet MS"; # Sidebar titles font
|
||||
$sectionfsize="11px"; # Sidebar titles font size
|
||||
$sidefcolor="#4F4E46"; # Sidebar titles font color
|
||||
$sidefweight="bold"; # Sidebar titles font weight (bold or none)
|
||||
|
||||
$sectionlfont="Trebuchet MS"; # Sidebar link font
|
||||
$sectionls="11px"; # Sidebar link font size
|
||||
$sectionlc="#aaaaaa"; # Sidebar link font color
|
||||
$sidefweight="bold"; # Sidebar link font weight (bold or none)
|
||||
$sectiondecol="none"; # Sidebar link text-decoration (underline or none)
|
||||
|
||||
$sectionlfonth="Trebuchet MS"; # Sidebar link hover font
|
||||
$sectionlsh="11px"; # Sidebar link hover font size
|
||||
$sectionlch="#88a4bf"; # Sidebar link hover font color
|
||||
$sidefweighth="bold"; # Sidebar link hover font weight (bold or none)
|
||||
$sectiondecolh="none"; # Sidebar link hover text-decoration (underline or none)
|
||||
|
||||
|
||||
|
||||
######################### General link details ###############
|
||||
$linkcolor="#aaaaaa"; # Link color
|
||||
$linkdeco="none"; # Link decoration: underline or none
|
||||
$linkweight="none"; # Link weight: bold or none
|
||||
$fontsz="70%"; # Link size
|
||||
|
||||
$hover="#88a4bf"; # Link hover (mouseover) color
|
||||
$txtdecohover="none"; # Link hover (mouseover) decoration: underline or none
|
||||
$fntweight="none"; # Link hover (mouseover) font-weight: bold or none
|
||||
|
||||
|
||||
|
||||
######################### Image details ###############
|
||||
$imgborder="#ddd"; # Image border
|
||||
$imgback="#eee"; # Image background color
|
||||
$imgpadding="4px"; # Image padding
|
||||
|
||||
|
||||
|
||||
######################### Input/Comment box form details ###############
|
||||
$inputborder="#4b4b4b"; # Input form border color
|
||||
$inputfont="Georgia"; # Input form font
|
||||
$inputfsize="11px"; # Input form font size
|
||||
$inputcolor="#333333"; # Input form font color
|
||||
$inputbg="#ffffff"; # Input form background color
|
||||
|
||||
$submitbg="#ffffff"; # Submit button background color
|
||||
$submitborder="#333333"; # Submit button border color
|
||||
$submitfontcolor="#4b4b4b"; # Submit button font color
|
||||
$submitfontsize="12px"; # Submit button font size
|
||||
$submitfont="Arial"; # Submit button font
|
||||
|
||||
|
||||
|
||||
######################### Footer ###############
|
||||
$footerheight="40px"; # Height of footer
|
||||
$footercolor="#aaaaaa"; # Footer background color
|
||||
$footertxt="#ffffff"; # Footer text color
|
||||
$footersize="11px"; # Footer text size
|
||||
$footerfont="Verdana"; # Footer font family
|
||||
|
||||
$footerlinks="#ffffff"; # Footer link color
|
||||
$footerdecoration="underline"; # Footer link decoration
|
||||
|
||||
$footerhover="#000000"; # Footer hover link color
|
||||
$footerhdecoration="none"; # Footer hover link decoration
|
||||
|
||||
######################### Popup comment box ###############
|
||||
$popup="no"; # Popup comments or not (yes or no)
|
||||
$cheight="500"; # Popup comment box height
|
||||
$cwidth="400"; # Popup comments box width
|
||||
$cpost="yes"; # Popup comments see entry or not (yes or no)
|
||||
$popccolor="#ffffff"; # Popup comments background color
|
||||
$pocolor="#4a4a4a"; # Popup comments text color
|
||||
|
||||
|
||||
|
||||
########################### FURTHER COUSTOMIZATION ###############
|
||||
# Customizing the pages further can be done, using about.txt for your about page, and footer.txt for your footer.
|
||||
# The file sidebar.txt can be altered for your blog sidebar content.
|
||||
##########################################################################
|
||||
1;
|
|
@ -0,0 +1,102 @@
|
|||
|
||||
приложить конечность к стене - error
|
||||
пнуть стену
|
||||
посмотреть на записку
|
||||
прочитаит записку
|
||||
посмотреть на ворона
|
||||
погладить ворона
|
||||
посмотреть в окно
|
||||
посмотреть на скалу
|
||||
посмотреть на
|
||||
посмотреть на подоконник
|
||||
взять ворона
|
||||
пнуть ворона
|
||||
жжж ворона
|
||||
понюхать ворона
|
||||
вернуться
|
||||
кинуть ногу в ворона
|
||||
кинуть конечность в ворона
|
||||
взять конечность
|
||||
достать конечность - error
|
||||
потрогать ворона
|
||||
дать ворону конечность
|
||||
пойти назад - error
|
||||
взять записку
|
||||
взять стол
|
||||
взять шар
|
||||
зажечь спичку
|
||||
кинуть спичку - error
|
||||
подумать - error
|
||||
кричать
|
||||
кричать на ворона
|
||||
убить ворона
|
||||
ударить ворона
|
||||
ударить ворона конечностью
|
||||
каркнуть
|
||||
каркнуть на ворона
|
||||
поковыряться в носу - error
|
||||
сесть - error
|
||||
подойти к ворону
|
||||
использовать конечность
|
||||
конечность - error
|
||||
выйти
|
||||
забраться на подоконник - error
|
||||
залезть на подоконник - error
|
||||
посмотреть на шар
|
||||
умереть - error
|
||||
прочитать записку
|
||||
подойти к ворону
|
||||
осмотреть стол
|
||||
выдвинуть ящик - error
|
||||
открыть ящик
|
||||
достать конечность - error
|
||||
заглянуть в котомку - error
|
||||
использовать конечность
|
||||
прочитать записку
|
||||
вернуться назад
|
||||
поговорить с вороном
|
||||
вылезти в окно - error
|
||||
взезть на подоконник - error
|
||||
скачать - error
|
||||
посмотреть на потолок
|
||||
найти тайный проход - error
|
||||
найти тайный проход 2 - error
|
||||
котомка - error
|
||||
котомка - error
|
||||
посмотреть в котомку
|
||||
вернуться назад
|
||||
достатать синюю конечность - error
|
||||
достать конечность - error
|
||||
зажечь спичку
|
||||
вернуться
|
||||
обшарить писменный стол - error
|
||||
каркнуть
|
||||
ципа цыпа - error
|
||||
мяу - error
|
||||
мяукнуть - error
|
||||
гавкнуть - error
|
||||
сашка дурак - error
|
||||
попка дурак - error
|
||||
ворон дурак
|
||||
посмотреть на пол
|
||||
убиться головой об стену
|
||||
прочитать записку
|
||||
посмотреть записку
|
||||
почитать записку
|
||||
посмотреть на шкаф
|
||||
посмотреть в окно
|
||||
посмотреть на ворона
|
||||
уйти - error
|
||||
выйти
|
||||
прилепить конечность к стене - error
|
||||
посмотреть на конечность
|
||||
потрогать ворона
|
||||
погладить ворона
|
||||
залезть под стол - error
|
||||
потрогать записку - error
|
||||
убиться головой об стену - error
|
||||
приложить ногу к стене ? - error
|
||||
приложить ногу к стене - error
|
||||
нога и стена - error
|
||||
поставить конечность на стену
|
||||
каркнуть
|
|
@ -0,0 +1,498 @@
|
|||
|
||||
продолжить - error
|
||||
продолжить - error
|
||||
продпродолжитьолжить - error
|
||||
взять шар
|
||||
взять шар
|
||||
на лево - error
|
||||
взять дискеты
|
||||
взять дискеты
|
||||
зажечь спичку
|
||||
продолжить - error
|
||||
продолжить - error
|
||||
смотреть
|
||||
фото - error
|
||||
включить свет
|
||||
взять книгу
|
||||
смотреть фотографии
|
||||
включить свет
|
||||
взять конечность
|
||||
взять шар
|
||||
взять спичку
|
||||
взять дискету
|
||||
открыть шкаф
|
||||
взять книгу
|
||||
взять конечность
|
||||
взять шарик
|
||||
взять спичку
|
||||
взять дискеты
|
||||
взять записки
|
||||
котомка
|
||||
посмотреть шкаф
|
||||
открыть шкаф
|
||||
посмотреть шкаф
|
||||
посмотреть записки
|
||||
открыть шкаф
|
||||
посмотреть в шкаф
|
||||
посмотреть книги
|
||||
протереть книги - error
|
||||
взять книги
|
||||
взять всё
|
||||
взять конечность
|
||||
взять шар
|
||||
взять спичку
|
||||
взять дискету
|
||||
скачать
|
||||
посмотреть на дискеты
|
||||
посмотреть на полку
|
||||
взять фотографии
|
||||
взять гвозди
|
||||
выйти - error
|
||||
включить свет
|
||||
посмотреть в котомку
|
||||
инвентарь
|
||||
пойти в пещеру - error
|
||||
взять книгу
|
||||
выйти - error
|
||||
использовать ум
|
||||
подумать - error
|
||||
каркнуть - error
|
||||
выйти из гостиной - error
|
||||
заснуть - error
|
||||
зажечь спичку
|
||||
взять конечность
|
||||
взять конечность
|
||||
взять котомкеу
|
||||
посмотреть на шар
|
||||
соединить - error
|
||||
взять книгу
|
||||
взять конечность
|
||||
взять щарик
|
||||
включить - error
|
||||
включить свет
|
||||
смотреть фотографии
|
||||
осмотреть конечность
|
||||
осмотреть черный шар
|
||||
читать записки - error
|
||||
осмотреть записки
|
||||
включить свет
|
||||
взять записки
|
||||
зажечь спичку
|
||||
взять шар
|
||||
взять конечность
|
||||
взять спичку
|
||||
звять дискеты - error
|
||||
взять дискету
|
||||
открыть шкаф
|
||||
взять книгу
|
||||
что дальше? - error
|
||||
продолжить - error
|
||||
посмотреть
|
||||
свет - error
|
||||
выключатель - error
|
||||
нажать на выключатель - error
|
||||
включить свет
|
||||
посмотреть фотографии
|
||||
взять шар
|
||||
взять спичку
|
||||
взять конечность
|
||||
взять дискеты
|
||||
взять дискеты
|
||||
взять дискеты
|
||||
прочитать записки - error
|
||||
взять записки
|
||||
подойти к столу - error
|
||||
взять книги
|
||||
окрыть шкаф - error
|
||||
разбить шаром стело - error
|
||||
разбить шаром стекло - error
|
||||
котомка
|
||||
вытащить из котомки шар
|
||||
посмотреть на стол
|
||||
стол - error
|
||||
посмотреть на стол
|
||||
поджеч записки - error
|
||||
выключатель - error
|
||||
включить выключатель - error
|
||||
подойти к выключателю - error
|
||||
повернуть выключатель - error
|
||||
зажечь спичку
|
||||
сорвать фотограффию автор - error
|
||||
сорвать фотографии - error
|
||||
посмотреть на фотографии
|
||||
зажечь свет - error
|
||||
пнуть шкаф
|
||||
сильнее пнуть шкаф
|
||||
сломать шкаф - error
|
||||
поджечь шкаф
|
||||
осмотреть шар
|
||||
поджеч шар спичкой - error
|
||||
осмотреть шкаф
|
||||
разбить стекло шаром - error
|
||||
разбить стекло - error
|
||||
найти на шкафе замок - error
|
||||
открыть шкаф шаром
|
||||
взять книгу
|
||||
взять нигу из шкафа
|
||||
взять книгу
|
||||
котомка
|
||||
найти тайный проход - error
|
||||
взять книгу
|
||||
нажать на выключатель - error
|
||||
включить выключатель - error
|
||||
включить включатель - error
|
||||
оторвать фотографию автор - error
|
||||
взять книгу
|
||||
продолжить - error
|
||||
ааа бля аа убейся апстену - error
|
||||
полка
|
||||
' - error
|
||||
gjkrf - error
|
||||
полка
|
||||
gjkrf - error
|
||||
полка
|
||||
бл - error
|
||||
полка
|
||||
полка
|
||||
открыть шкаф
|
||||
взять конечность
|
||||
взять шар
|
||||
взять спичку
|
||||
посмотреть на выключатель
|
||||
протереть выключатель - error
|
||||
потрогать выключатель
|
||||
включить выключатель - error
|
||||
включить лампочку - error
|
||||
включить свет
|
||||
взять дискету
|
||||
почитать записки - error
|
||||
прочитать записки - error
|
||||
посмотреть записки
|
||||
взять книгу
|
||||
выйти - error
|
||||
залезть под стол - error
|
||||
посмотреть на выключатель
|
||||
закрыть шкаф
|
||||
посмотреть на шар
|
||||
посмотреть в окошечко
|
||||
кинуть конечность - error
|
||||
потрогать конечность
|
||||
потрогать шар
|
||||
потрогать дискету
|
||||
потрогать себя
|
||||
понюхать себя
|
||||
понюхать конечность
|
||||
потрогать спичку
|
||||
спуститься в пещеру - error
|
||||
взять книгу
|
||||
посмотреть на конечность
|
||||
потрогать шкаф
|
||||
потрогать книги
|
||||
потереть шар - error
|
||||
протереть шар - error
|
||||
заснуть - error
|
||||
закричать
|
||||
заплакать - error
|
||||
подумать о шкафе - error
|
||||
позвать автора - error
|
||||
посмотреть на автора
|
||||
автора! - error
|
||||
попрыгать - error
|
||||
сойти с ума - error
|
||||
офигеть - error
|
||||
спрятаться - error
|
||||
спрятаться под стол - error
|
||||
посмотреть под стол
|
||||
посмотреть не на стол
|
||||
усмотреть где-то тут стол
|
||||
положить конечность на ст - error
|
||||
закричать "да что ж это такое, ничего не распознается как надо, что ж делать-то, а?!"
|
||||
упасть под стол - error
|
||||
удариться об стол - error
|
||||
сесть за стол - error
|
||||
сесть на стол - error
|
||||
встать на стол - error
|
||||
лечь на стол - error
|
||||
прибить третью полку
|
||||
издать звук - error
|
||||
почесаться - error
|
||||
почесать себя - error
|
||||
потрогать стол
|
||||
потрогать книгу
|
||||
потрогать фотографии
|
||||
поднять стол - error
|
||||
съесть спичку - error
|
||||
взять себя
|
||||
взять себя в руки
|
||||
взять котомку
|
||||
лечь на нижнюю полку
|
||||
прибыть в полку
|
||||
полку
|
||||
скачать себя
|
||||
выйти - error
|
||||
вернуться - error
|
||||
осмотретьс
|
||||
использовать себя
|
||||
выразиться точнее - error
|
||||
распознать команду - error
|
||||
собрать записки в кучу - error
|
||||
посмотреть куда-то
|
||||
посмотреть в никуда
|
||||
посмотреть на гостиную
|
||||
взять шкаф
|
||||
взять стол
|
||||
опрокинуть стол - error
|
||||
положить конечность на полку
|
||||
засунуть конечность в шар - error
|
||||
убежать - error
|
||||
- error
|
||||
<> - error
|
||||
:) - error
|
||||
ждать
|
||||
включить себя - error
|
||||
погладить конечность - error
|
||||
вывернуть котомку наизнан
|
||||
вывернуть котомку наизнанку
|
||||
найтись в котомке
|
||||
котомк!
|
||||
зайти в шкаф - error
|
||||
забраться в шкаф - error
|
||||
обидеться - error
|
||||
понять что к чему - error
|
||||
подпрыгнуть от неожиданности - error
|
||||
взять волю
|
||||
взять друзей
|
||||
осторожно взять книгу
|
||||
прилепить конечность к се - error
|
||||
прилепить конечность к себе - error
|
||||
прилепить конечность к стене - error
|
||||
прилепить конечность к стене - error
|
||||
ставить ногу стену - error
|
||||
прилепить конечность на с - error
|
||||
прилепить конечность на стену - error
|
||||
полка
|
||||
заебись - error
|
||||
саша - error
|
||||
аоександр - error
|
||||
яковлев - error
|
||||
ййййййййййййййййййййййййй - error
|
||||
ццццццццццццццццццццццццц - error
|
||||
5555555555555555555555555 - error
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%% - error
|
||||
подойти к столу - error
|
||||
посмотреть на фотографии
|
||||
посмотреть на стол
|
||||
открыть шкаф
|
||||
котомка
|
||||
взять все
|
||||
взять шар
|
||||
взять ногу
|
||||
взять спичку
|
||||
взять дискету
|
||||
использовать шар вместо р
|
||||
шар шаф - error
|
||||
открыть шкаф шаром
|
||||
взять книгу
|
||||
включить свет
|
||||
включить свет
|
||||
включить свет
|
||||
крикнуть - error
|
||||
почесать голову - error
|
||||
каркнуть - error
|
||||
каркнуть - error
|
||||
чесать голову - error
|
||||
подумать - error
|
||||
взять конечность - error
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
посмотреть нп конечность - error
|
||||
посмотреть на конечность - error
|
||||
включить свет
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
понюхать руки - error
|
||||
понюхать руки - error
|
||||
понюхать всё - error
|
||||
понюхать ноги - error
|
||||
понюхать ногу - error
|
||||
понюхать конечность - error
|
||||
привет - error
|
||||
да - error
|
||||
понюхать - error
|
||||
понюхать ногу - error
|
||||
привет - error
|
||||
да - error
|
||||
подумать
|
||||
понюхать ноги - error
|
||||
осмотреть котомку - error
|
||||
работать - error
|
||||
чесать голову - error
|
||||
почесать руки - error
|
||||
почесать голову - error
|
||||
взять книгу - error
|
||||
петь
|
||||
включить свет
|
||||
взять шар - error
|
||||
взять конечность - error
|
||||
взять книгу - error
|
||||
посмотреть на фотографию - error
|
||||
осмотреть фотографию - error
|
||||
осмотреть фотографии - error
|
||||
взять спичку - error
|
||||
осмотреть конечность - error
|
||||
взять конечность - error
|
||||
взять книгу - error
|
||||
посмотреть на шкаф - error
|
||||
потрогать себя - error
|
||||
петь
|
||||
взять шар - error
|
||||
открыть шкаф - error
|
||||
петь - error
|
||||
взять шар - error
|
||||
включить свет
|
||||
взять шар - error
|
||||
взять дискету - error
|
||||
петь
|
||||
петь
|
||||
петь
|
||||
петь
|
||||
каркнуть - error
|
||||
включить свет
|
||||
выключить свет
|
||||
включить свет
|
||||
открыть шкаф - error
|
||||
взять спичку - error
|
||||
убиться апстену - error
|
||||
ы - error
|
||||
прочитать записки - error
|
||||
включить свет
|
||||
взять шар - error
|
||||
включить свет
|
||||
осмотреть конечность - error
|
||||
взять конечность - error
|
||||
открыть шкаф - error
|
||||
шкаф - error
|
||||
осмотреть стол - error
|
||||
посмотреть фотографии - error
|
||||
осмотреть фотографии - error
|
||||
фотографии - error
|
||||
взять спичку - error
|
||||
- error
|
||||
информация - error
|
||||
подойти к фотографиям - error
|
||||
смотреть фотографии - error
|
||||
осмотр фотографий - error
|
||||
осмотр фотографий - error
|
||||
повернуть налево - error
|
||||
взять книгу - error
|
||||
книга - error
|
||||
шкаф - error
|
||||
изучить фотографии - error
|
||||
фотография - error
|
||||
просмотр фотографий - error
|
||||
зажечь свет - error
|
||||
осветить - error
|
||||
осветить помещение - error
|
||||
зажечь спичку
|
||||
осмотреть шар - error
|
||||
осмотреть конечность - error
|
||||
зажечь спичку
|
||||
ощупать конечность - error
|
||||
вглядеться в шар - error
|
||||
поджечь конечность
|
||||
разбить шар - error
|
||||
посмотреть диски - error
|
||||
прочитать записки - error
|
||||
разбить шар - error
|
||||
заглянуть в отверстие - error
|
||||
спичку в отверстие - error
|
||||
швырнуть шар - error
|
||||
съесть конечность - error
|
||||
поджарить конечность - error
|
||||
сжечь гостинную - error
|
||||
зажечь записки - error
|
||||
зажечь спичку
|
||||
поиграть с шаром - error
|
||||
включить свет
|
||||
взять конечность - error
|
||||
взять шар - error
|
||||
открыть шкаф - error
|
||||
положить в котомку шар - error
|
||||
взять дискету - error
|
||||
включить свет
|
||||
взять шао - error
|
||||
взять шар - error
|
||||
прыгнуть - error
|
||||
подумать
|
||||
потрогать - error
|
||||
лево - error
|
||||
включить - error
|
||||
включить свет
|
||||
взять книгу из шкафа - error
|
||||
подойти - error
|
||||
- error
|
||||
взять шар - error
|
||||
зажечь спичку
|
||||
взять книгу - error
|
||||
идти налево - error
|
||||
идти направо - error
|
||||
взять конечность - error
|
||||
подойти к шкафу - error
|
||||
зажечь спичку
|
||||
подойти к стене - error
|
||||
подойти к столу - error
|
||||
взять дискету - error
|
||||
выключить - error
|
||||
взять шаро - error
|
||||
взять шар - error
|
||||
взять шар - error
|
||||
включить свет
|
||||
открыть - error
|
||||
открыть шкаф - error
|
||||
открыть шкаф - error
|
||||
кричать
|
||||
каркнуть - error
|
||||
открыть шкаф - error
|
||||
открыть шкаф - error
|
||||
посмотреть книги - error
|
||||
открыть шкаф - error
|
||||
прочитать записки - error
|
||||
включить свет
|
||||
открыть шкаф - error
|
||||
подойти к шкафу - error
|
||||
включить свет
|
||||
взять конечность - error
|
||||
продолжить - error
|
||||
ок - error
|
||||
выпить чай - error
|
||||
взять - error
|
||||
посмотреть - error
|
||||
взять конечность - error
|
||||
взять шар - error
|
||||
взять шар и спичку - error
|
||||
прочитать записки - error
|
||||
читать - error
|
||||
записки - error
|
||||
сесть - error
|
||||
умереть - error
|
||||
тупить - error
|
||||
испугаться - error
|
||||
делать ноги - error
|
||||
аллохомора - error
|
||||
включить свет
|
||||
понюхать себя
|
||||
включить свет
|
||||
посмотреть записку
|
||||
посмотреть дискеты
|
||||
взять спичку
|
||||
взять конечность
|
||||
взять шар
|
||||
нажать на выключатель - error
|
||||
посмотреть фотографии
|
||||
посмотреть стол
|
||||
осмотреть стол
|
||||
осмотреть фотографии
|
||||
дернуть выключатель - error
|
||||
посмотреть фотографии
|
|
@ -0,0 +1,109 @@
|
|||
|
||||
Лук - error
|
||||
Бык - error
|
||||
открыть мозг - error
|
||||
рассмотреть внутренности - error
|
||||
продолжить
|
||||
продолжить
|
||||
выпить чай - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
ПРОДОЛЖИТЬ - error
|
||||
ПРОДОЛЖИТЬ - error
|
||||
ПРОДОЛЖИТЬ - error
|
||||
Продолжить
|
||||
осмотреть - error
|
||||
начать - error
|
||||
посмотреть игры - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
привет - error
|
||||
55 - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продлжить - error
|
||||
продолжить
|
||||
продолжить
|
||||
войти - error
|
||||
с\ - error
|
||||
убиться головой об стену - error
|
||||
перейти на главную страницу - error
|
||||
осмотреться - error
|
||||
осмотреть предметы - error
|
||||
котомка - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
земля вертится - error
|
||||
жизнь идёт - error
|
||||
жить - error
|
||||
вперёд на баррикады - error
|
||||
посмотреть сайт - error
|
||||
читать текст - error
|
||||
открыть текст - error
|
||||
изучать сайт - error
|
||||
читать - error
|
||||
смотреть на потолок - error
|
||||
обсудить фильм - error
|
||||
продолжить
|
||||
ghjljk;bnm - error
|
||||
продолжить
|
||||
посмотреть на потолок - error
|
||||
посмотреть на потолок - error
|
||||
посмотреть - error
|
||||
посмотреть вверх - error
|
||||
смотреть на потолок - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
использовать силу - error
|
||||
продолжить
|
||||
использовать силу - error
|
||||
продолжить
|
||||
продолжить
|
||||
осмотреться - error
|
||||
посмотреть кругом - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
почесать руки - error
|
||||
потрогать себя - error
|
||||
1 а - error
|
||||
у - error
|
||||
у у - error
|
||||
у ууу - error
|
||||
{jxe rjnvre - error
|
||||
Покажи команды - error
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
продолжить
|
||||
ok - error
|
||||
продолжить
|
||||
продолжить
|
||||
осмотреть себя - error
|
||||
осмотреть себя - error
|
||||
потрогать себя - error
|
||||
осмотреть себя - error
|
||||
кто я?
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
потрогать себя - error
|
||||
потрогать себя
|
||||
осмотреть котомку
|
||||
продолжить
|
||||
продолжить
|
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/perl
|
||||
require 'common.pl';
|
||||
use CGI qw/:standard/;
|
||||
use locale;
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
@pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
@cookieArray=split ("; ",$ENV{'HTTP_COOKIE'});
|
||||
my $cookieName;my $cookieValue;
|
||||
%cookieHash;
|
||||
foreach (@cookieArray){
|
||||
($cookieName,$cookieValue)=split("=",$_);
|
||||
$cookieHash{$cookieName}=$cookieValue;
|
||||
}
|
||||
if ($ENV{'QUERY_STRING'} ne '') {
|
||||
@qstr = split (/=/,$ENV{'QUERY_STRING'});
|
||||
$command = $qstr[0];
|
||||
$value = $qstr[1];
|
||||
$value =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
|
||||
if ($command eq "error"){$error=1;&displayDefault;}
|
||||
else {&displayDefault;}
|
||||
}
|
||||
else{
|
||||
if ($in{'input'}) {&parsecommand;}
|
||||
else {&displayDefault;}
|
||||
}
|
||||
sub displayDefault(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"EOF";
|
||||
<html>\n
|
||||
<head><script language="javascript">
|
||||
window.onload=function() {document.getElementById("in").focus();};
|
||||
</script>\n<title>Ãîñòèíàÿ Àëåêñàíäðà ßêîâëåâà</title>\n
|
||||
EOF
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
print "</head><body>\nÂû íàõîäèòåñü â ãîñòèíîé.Çäåñü î÷åíü ";
|
||||
if ($cookieHash{'light'}){print "ñâåòëî.";}
|
||||
else {print "òåìíî.";}
|
||||
print <<"EOF";
|
||||
<p>Ñëåâà îò âàñ ñòîèò áîëüøîé êðàñíûé øêàô ñ êíèãàìè.<br>
|
||||
Ñòåíà ïî ëåâóþ ñòîðîíó îò øêàôà óêðàøåíà ôîòîãðàôèÿìè àâòîðà ñòðàíèöû è åãî äðóçåé.<br>
|
||||
Ïî ïðàâóþ ñòîðîíó îò øêàôà ñòîèò ïèñüìåííûé ñòîë,íà êîòîðîì ðàçáðîñàíû çàïèñêè.
|
||||
Ðÿäîì ñî ñòîëîì ïðèáèòû äâå ïîëêè.Íà âåðõíåé ïîñòàâëåíî â ðÿä íåñêîëüêî äèñêåò.Íà ñòåíå âèäåí âûêëþ÷àòåëü.</p>
|
||||
EOF
|
||||
&lower_shelf();
|
||||
if ($error){print "<p id=\"err\">Êîìàíäà íå ðàñïîçíàíà.</p>";$error=0;}
|
||||
print "<FORM NAME='input' ACTION='parse.pl' METHOD='POST'>\n";
|
||||
print "<input type='hidden' name='location' id='location' value='gostinaya'>\n";
|
||||
print '> <input type=text id="in" name="input" size=64 maxlength=32>';
|
||||
print "</body>\n</html>";
|
||||
}
|
||||
sub lower_shelf{#îïèñàíèå íèæíåé ïîëêè
|
||||
if ($cookieHash{'leg'} && $cookieHash{'ball'} && $cookieHash{'match'}){print "Íà íèæíåé íè÷åãî íå ëåæèò.";}
|
||||
elsif ($cookieHash{'leg'} && $cookieHash{'ball'}){print "Íà íèæíåé ëåæèò îäèíîêàÿ ñïè÷êà.";}
|
||||
elsif ($cookieHash{'match'} && $cookieHash{'ball'}){print "Íà íèæíåé ëåæèò îäèíîêàÿ ÷üÿ-òî ñèíÿÿ êîíå÷íîñòü.";}
|
||||
elsif ($cookieHash{'leg'} && $cookieHash{'match'}){print "Íà íèæíåé ëåæèò îäèíîêèé ÷¸ðíûé øàðèê.";}
|
||||
elsif ($cookieHash{'leg'}){print "Íà íèæíåé ëåæàò ÷¸ðíûé áëåñòÿùèé øàðèê è ñïè÷êà.";}
|
||||
elsif ($cookieHash{'ball'}){print "Íà íèæíåé ëåæàò êàêàÿ-òî ñèíÿÿ êîíå÷íîñòü è ñïè÷êà.";}
|
||||
elsif ($cookieHash{'match'}){print "Íà íèæíåé ëåæàò êàêàÿ-òî ñèíÿÿ êîíå÷íîñòü è ÷¸ðíûé áëåñòÿùèé øàðèê ñ îêîøå÷êîì.";}
|
||||
else {print"Íà íèæíåé ëåæèò êàêàÿ-òî êîíå÷íîñòü,êðóãëûé ÷¸ðíûé øàð ñ îòâåðñòèåì è ñïè÷êà.";}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/perl
|
||||
require 'common.pl';
|
||||
use CGI qw/:standard/;
|
||||
use locale;
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
@pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
if ($ENV{'QUERY_STRING'} ne '') {
|
||||
@qstr = split (/=/,$ENV{'QUERY_STRING'});
|
||||
$command = $qstr[0];
|
||||
$value = $qstr[1];
|
||||
$value =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
|
||||
if ($command eq "help") {&displayHelp;}
|
||||
elsif ($command eq "error"){$error=1;&displayDefault;}
|
||||
else {&displayDefault;}
|
||||
}
|
||||
else{&displayDefault;}
|
||||
my @cookieArray=split ("; ",$ENV{'HTTP_COOKIE'});
|
||||
my $cookieName;my $cookieValue;my %cookieHash;
|
||||
foreach (@cookieArray){
|
||||
($cookieName,$cookieValue)=split("=",$_);
|
||||
$cookieHash{$cookieName}=$cookieValue;
|
||||
}
|
||||
sub displayHelp(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"EOF";
|
||||
<html>\n<head><title>Инструкция и помощь</title>\n
|
||||
<link type="text/css" rel="stylesheet" href="white.css">
|
||||
</head><body>\n
|
||||
Мой сайт сделан в виде текстового приключения.
|
||||
<p>Вы набираете команду в поле команд.Команда чаще всего состоит из глагола и существительного,например:<br>
|
||||
взять ящик<br>
|
||||
выпить чай<br>
|
||||
выброситься в окно<br>
|
||||
перекинуть дерево через плечо и вмазать им по самые помидоры<br>
|
||||
делать дело<br>
|
||||
использовать свой ум<br>
|
||||
посмотреть на записку<br>
|
||||
поговорить о жизни со шкафом<br>
|
||||
пить пиво<br>
|
||||
включить вилку в розетку<br>
|
||||
Эти команды - лишь примеры,и они не будут работать.Но я надеюсь,что вы поняли идею.</p>
|
||||
<p>Когда вы входите в комнату,вы читаете её описание.Оно неполно,и содержит лишь основные черты.Чтобы уточнить описание предмета,достаточно его осмотреть.Если он вам понравился,вы даже можете попробовать его взять с собой.</p>
|
||||
<p>Одной из отличительных черт текстовых приключений от графических является нелинейность.Вы не можете войти в комнату и потыкать на каждый предмет в ней.Принцип научного тыка не работает.Команды "использовать","применить","добавить",которые являются детищами именно графических приключений,не работают.Если вы хотите что-нибудь сделать - описывайте это действие чётко и лаконично.Если вы будете использовать более пяти слов,то сценарий,вас,скорее всего,просто не поймёт.Конечно,стоит учитывать еще и вероятность ложных срабатываний.</p>
|
||||
<p>Несколько слов о стратегии.</p>
|
||||
<p>Не пытайтесь вводить нецензурные слова и "ненормативную лексику".Та же команда "вмазать по самые помидоры" - это,конечно,образно,но чаще всего неправильно.Здесь используется русский язык,и русский коренной.Конечно,есть и скрытые команды,но я могу вас уверить - нецензурных среди нет.<br>
|
||||
<p>Второй отличительной чертой текстовых приключений является полная неработоспособность метода научного тыка.<br>Вы не можете просто тыкаться во все предметы,пока что-то не произойдет.По сути,это - прямое следствие первой отличительной черты.Чтобы что-то сделать,вы должны <b>чётко представлять</b> себе,что вы хотите от программы.Если вы хотите "открыть замок с помощью книги",это нечётко,причём независимо от контекста.Можно её понять как "открыть книгу,приложить ее к замку и повернуть".Можно её понять как "подубасить книгой по замку,авось откроется".Можно её понять как "выучить заклинание из книги и открыть им замок",даже как "выдрать кучу страниц из книги и набить ими замок,пока он не откроется от переполнения".Команда "прочитать книгу и открыть замок" слишком сложна,потому что содержит в себе 2 действия.А вот команды "прочитать книгу" и "открыть замок" уже могут сделать что-нибудь дельное.Но опять же,не всегда.</p>
|
||||
<p>С другой стороны,из контекста многое ясно.Не надо уточнять,когда вы хотите посмотреть на стол,что это - стол,стоящий у шкафа,который стоит у стены...и так далее,если это - единственный стол в комнате.Если честно,то для краткости вообще не надо особых уточнений относительно предметов.Каждый предмет в каждой комнате уникален,поэтому уточнение "открыть левую дверцу шкафа" излишне,если можно просто "открыть шкаф".Уточнения могут и не влиять на обработку команд,но набирать длинное предложение вместо двух или трёх слов - это морока.</p>
|
||||
<p>Я напоминаю,что мне можно написать по адресу oreolek>at<gmail.com.Единственные вопросы,на которые я точно не отвечу - это подсказки по прохождению.</p>
|
||||
<p align="right"><i>Александр Яковлев a.k.a. Oreolek.</i></p>
|
||||
<br>Это поле понимает только одну команду - "продолжить".Из контекста ясно,зачем она:
|
||||
<FORM NAME='input' ACTION='parse.pl' METHOD='POST'>\n
|
||||
<input type='hidden' name='location' id='location' value='index'>\n
|
||||
> <input type=text id="in" name="input" size=64 maxlength=32>\n</form>
|
||||
</body></html>
|
||||
EOF
|
||||
}
|
||||
sub displayDefault(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"EOF";
|
||||
<html>\n<head>
|
||||
<script language="javascript">
|
||||
window.onload=function() {document.getElementById("in").focus();};
|
||||
</script>\n<title>Приветствие от автора</title>\n
|
||||
<link type="text/css" rel="stylesheet" href="white.css">
|
||||
</head><body>\n
|
||||
Здравствуйте!<br>
|
||||
Добро пожаловать на мой сайт.Вы находитесь на главной странице.
|
||||
<br>Введите вашу команду в поле внизу.Вы можете делать огромное количество вещей,например,осматривать предметы,скачивать файлы
|
||||
или брать понравившееся с собой,в свою "котомку".Котомка пригодится вам в решении задач,которые вы можете здесь встретить.<br>
|
||||
Если вы хотите пользоваться функцией сохранения,то убедитесь,что в вашем браузере включена поддержка cookies.<br>
|
||||
Также я хочу известить вас о том,что на сайте работает автосохранение.Все предметы,которые побывали в вашей котомке,
|
||||
сохранятся в ней при следующем посещении сайта.<br>
|
||||
Мне очень важно ваше мнение.Мой адрес электронной почты <em>oreolek >at< gmail.com.</em> Я стараюсь проверять свой электронный ящик как можно чаще,и пытаюсь ответить на каждое письмо.В любом случае,вы можете быть уверены:я прочту каждое письмо,которое пройдёт мой спам-фильтр.
|
||||
<br>Чтобы продолжить,введите в поле внизу команду <b>"продолжить"</b>.
|
||||
Удачи!<br>
|
||||
<i>Oreolek.</i><br>
|
||||
EOF
|
||||
if ($error){print "<p id=\"err\">Команда не распознана.</p>";$error=0;}
|
||||
print "Введите команду: ";
|
||||
print "<FORM NAME='input' ACTION='parse.pl' METHOD='POST'>\n";
|
||||
print "<input type='hidden' name='location' id='location' value='index'>\n";
|
||||
print '> <input type=text id="in" name="input" size=64 maxlength=32></form>';
|
||||
print <<"EOF";
|
||||
<div id="hint"><noscript>Нажмите Tab,</noscript>введите вашу команду и нажмите Enter.<br/>
|
||||
В недоумении? Прочтите <a href="?help">инструкцию</a>.<br>
|
||||
<a href="changelog.html"><div align="right">Версия $version</div></a>
|
||||
</div>
|
||||
EOF
|
||||
print "</body>\n</html>";
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/perl
|
||||
use locale;
|
||||
require 'common.pl';
|
||||
use CGI qw/:standard/;
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
my $debug_out="debug/debug_outside.txt";
|
||||
@pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
my @cookieArray=split ("; ",$ENV{'HTTP_COOKIE'});
|
||||
my $cookieName;my $cookieValue;
|
||||
foreach (@cookieArray){
|
||||
($cookieName,$cookieValue)=split("=",$_);
|
||||
$cookieHash{$cookieName}=$cookieValue;
|
||||
}
|
||||
if ($ENV{'QUERY_STRING'} ne '') {
|
||||
@qstr = split (/=/,$ENV{'QUERY_STRING'});
|
||||
$command = $qstr[0];
|
||||
$value = $qstr[1];
|
||||
$value =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
|
||||
if ($command eq "error"){$error=1;&displayDefault;}
|
||||
else {&displayDefault;}
|
||||
}
|
||||
else{&displayDefault;}
|
||||
sub displayDefault(){
|
||||
print "Content-type: text/html\n\n";
|
||||
print <<"EOF";
|
||||
<html>\n
|
||||
<head><script language="javascript">
|
||||
window.onload=function() {document.getElementById("in").focus();};
|
||||
</script>\n<title>Çà îêíîì</title>\n
|
||||
EOF
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
print <<"EOF";
|
||||
</head><body>
|
||||
Âû ñòàâèòå ñèíþþ êîíå÷íîñòü íà ñòåíó.Îíà ïðèðàñòàåò ê êàìíþ,è âû ëåãêî âñòà¸òå íà íå¸.Çàöåïèâøèñü çà êðàé ñòåíû,âû çàáèðàåòåñü íàâåðõ.<br>
|
||||
Íà ýòîì ìåñòå ÿ âûíóæäåí ïðèîñòàíîâèòü ìîé ðàññêàç. áóäóùåì îí ïðîäîëæèòñÿ.<br>
|
||||
Ñ óâàæåíèåì,<be>
|
||||
<em>Oreolek</em>
|
||||
EOF
|
||||
if ($error){print "<p id=\"err\">Êîìàíäà íå ðàñïîçíàíà.</p>";$error=0;}
|
||||
print "<FORM NAME='input' ACTION='outside.pl' METHOD='POST'>\n";
|
||||
print "<input type='hidden' name='location' id='location' value='outside'>\n";
|
||||
print "> <input type=text id=\"in\" name=\"input\" size=54 maxlength=65>\n";
|
||||
print "</body>\n</html>";
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,38 @@
|
|||
<b>Cara Mia</b>
|
||||
Baccara<br>
|
||||
<hr>
|
||||
<p>
|
||||
Take him in, who’s warm and gentle<br>
|
||||
Confidential, sentimental<br>
|
||||
That’s the guy who’ll open up your diamond eyes
|
||||
</p><p>
|
||||
He will be there when you’re cryin’<br>
|
||||
Bravely tryin’, self denyin’<br>
|
||||
He can wipe the tears from your sweet diamond eyes
|
||||
</p><p>
|
||||
Cara Mia mine, the stars are gonna shine forever<br>
|
||||
Cara Mia mine, the moon is lookin’ down on you<br>
|
||||
Lend your heart, beg steal or borrow<br>
|
||||
Lend your heart again tomorrow<br>
|
||||
Cara Mia why should diamond eyes be blue<br>
|
||||
<i>(repeat)</i>
|
||||
</p><p>
|
||||
Lady fair, your sigh’s infection<br>
|
||||
And he’s wishin’ for nights of passion<br>
|
||||
Look around and see the world through diamond eyes<br>
|
||||
</p><p>
|
||||
Love’s the game, it’s in your favour<br>
|
||||
It’s got the flavour, for modern behaviour<br>
|
||||
Take the cards and deal the hand with diamond eyes
|
||||
</p><p>
|
||||
Cara Mia mine, the stars are gonna shine forever<br>
|
||||
Cara Mia mine, the moon is lookin’ down on you
|
||||
</p><p>
|
||||
Cara Mia mine, the stars are gonna shine forever<br>
|
||||
Cara Mia mine, the moon is lookin’ down on you
|
||||
</p><p>
|
||||
Lend your heart, beg steal or borrow<br>
|
||||
Lend your heart again tomorrow<br>
|
||||
Cara Mia why should diamond eyes be blue
|
||||
<i>(repeat)</i>
|
||||
</p>
|
|
@ -0,0 +1,42 @@
|
|||
<b>Chris de Burgh</b><br>
|
||||
Lady In Red
|
||||
<hr>
|
||||
<p>
|
||||
I've never seen you looking so lovely as you did tonight<br>
|
||||
I've never seen you shine so bright<br>
|
||||
I've never seen so many men ask you if you wanted to dance<br>
|
||||
They're looking for a little romance<br>
|
||||
Given half a chance<br>
|
||||
And I've never seen that dress you're wearing<br>
|
||||
Or that highlights in your hair<br>
|
||||
That catch your eyes<br>
|
||||
I have been blind
|
||||
</p><p>
|
||||
The lady in red is dancing with me<br>
|
||||
Cheek to cheek<br>
|
||||
There's nobody here<br>
|
||||
It's just you and me<br>
|
||||
It's where I wanna be<br>
|
||||
But I hardly know this beauty by my side<br>
|
||||
I'll never forget the way you look tonight
|
||||
</p><p>
|
||||
I've never seen you looking so gorgeous as you did tonight<br>
|
||||
I've never seen you shine so bright you were amazing<br>
|
||||
I've never seen so many people want to be there by your side<br>
|
||||
And when you turned to me and smiled it took my breath away<br>
|
||||
And I have never had such a feeling such a feeling<br>
|
||||
Of complete and utter love, as I do tonight
|
||||
</p><p>
|
||||
The lady in red is dancing with me<br>
|
||||
Cheek to cheek<br>
|
||||
There's nobody here<br>
|
||||
It's just you and me<br>
|
||||
It's where I wanna be<br>
|
||||
But I hardly know this beauty by my side<br>
|
||||
I'll never forget the way you look tonight
|
||||
</p><p>
|
||||
I never will forget the way you look tonight<br>
|
||||
The lady in red<br>
|
||||
My lady in red<br>
|
||||
I love you
|
||||
</p>
|
|
@ -0,0 +1,59 @@
|
|||
<b>Joe Dassin</b><br>
|
||||
Le Champs-Elysees<br>
|
||||
<br>
|
||||
<i>Àâòîðû:Wilsh, Deighan<br>
|
||||
Adaptateur: P. Delanoe<br>
|
||||
Arrangements: Johnny Arthey<br>
|
||||
(p) 1969 ed. Music 18<br>
|
||||
Enregistrement: mars 1969<br>
|
||||
Îðèãèíàë: "Waterloo road" par Smacka Fitzgibbons </i><br>
|
||||
<hr>
|
||||
<p>
|
||||
Je m'baladais sur l'avenue<br>
|
||||
Le coeur ouvert a l'inconnu<br>
|
||||
J'avais envie de dire bonjour<br>
|
||||
A n'importe qui<br>
|
||||
N'importe qui ce fut toi<br>
|
||||
Je t'ai dit n'importe quoi<br>
|
||||
Il suffisait de te parler<br>
|
||||
Pour t'apprivoiser
|
||||
</p><p>
|
||||
Aux Champs-Elysees<br>
|
||||
Aux Champs-Elysees<br>
|
||||
Au soleil, sous la pluie<br>
|
||||
A midi ou a minuit<br>
|
||||
Il y a tout ce que vous voulez<br>
|
||||
Aux Champs-Elysees
|
||||
</p><p>
|
||||
Tu m'as dit "J'ai rendez-vous<br>
|
||||
Dans un sous-sol avec des fous<br>
|
||||
Qui vivent la guitare a la main<br>
|
||||
Du soir au matin"<br>
|
||||
Alors je t'ai accompagnee<br>
|
||||
On a chante, on a danse<br>
|
||||
Et l'on n'a meme pas pense<br>
|
||||
A s'embrasser
|
||||
</p><p>
|
||||
Aux Champs-Elysees<br>
|
||||
Aux Champs-Elysees<br>
|
||||
Au soleil, sous la pluie<br>
|
||||
A midi ou a minuit<br>
|
||||
Il y a tout ce que vous voulez<br>
|
||||
Aux Champs-Elysees
|
||||
</p><p>
|
||||
Hier soir deux inconnus<br>
|
||||
Et ce matin sur l'avenue<br>
|
||||
Deux amoureux tout etourdis<br>
|
||||
Par la longue nuit<br>
|
||||
Et de l'Etoile a la Concorde<br>
|
||||
Un orchestre a mille cordes<br>
|
||||
Tous les oiseaux du point du jour<br>
|
||||
Chantent l'amour
|
||||
</p><p>
|
||||
Aux Champs-Elysees<br>
|
||||
Aux Champs-Elysees<br>
|
||||
Au soleil, sous la pluie<br>
|
||||
A midi ou a minuit<br>
|
||||
Il y a tout ce que vous voulez<br>
|
||||
Aux Champs-Elysees
|
||||
</p>
|
|
@ -0,0 +1,76 @@
|
|||
<b>Linkin Park</b><br>
|
||||
In The End <br>
|
||||
<hr>
|
||||
<p>
|
||||
(It starts with) <br>
|
||||
One thing / I don’t know why<br>
|
||||
It doesn’t even matter how hard you try<br>
|
||||
Keep that in mind / I designed this rhyme<br>
|
||||
To explain in due time<br>
|
||||
All I know<br>
|
||||
time is a valuable thing<br>
|
||||
Watch it fly by as the pendulum swings<br>
|
||||
Watch it count down to the end of the day<br>
|
||||
The clock ticks life away<br>
|
||||
It’s so unreal<br>
|
||||
Didn’t look out below<br>
|
||||
Watch the time go right out the window<br>
|
||||
Trying to hold on / but didn’t even know<br>
|
||||
Wasted it all just to<br>
|
||||
Watch you go<br>
|
||||
I kept everything inside and even though I tried / it all fell apart<br>
|
||||
What it meant to me / will eventually / be a memory / of a time when
|
||||
</p><p>
|
||||
I tried so hard<br>
|
||||
And got so far<br>
|
||||
But in the end<br>
|
||||
It doesn't even matter<br>
|
||||
I had to fall<br>
|
||||
To lose it all<br>
|
||||
But in the end<br>
|
||||
It doesn't even matter
|
||||
</p><p>
|
||||
One thing / I don’t know why<br>
|
||||
It doesn’t even matter how hard you try<br>
|
||||
Keep that in mind / I designed this rhyme<br>
|
||||
To remind myself how<br>
|
||||
I tried so hard<br>
|
||||
In spite of the way you were mocking me<br>
|
||||
Acting like I was part of your property<br>
|
||||
Remembering all the times you fought with me<br>
|
||||
I’m surprised it got so (far) <br>
|
||||
Things aren’t the way they were before<br>
|
||||
You wouldn’t even recognize me anymore<br>
|
||||
Not that you knew me back then<br>
|
||||
But it all comes back to me<br>
|
||||
In the end<br>
|
||||
You kept everything inside and even though I tried / it all fell apart<br>
|
||||
What it meant to me / will eventually / be a memory / of a time when I
|
||||
</p><p>
|
||||
I tried so hard<br>
|
||||
And got so far<br>
|
||||
But in the end<br>
|
||||
It doesn’t even matter<br>
|
||||
I had to fall<br>
|
||||
To lose it all<br>
|
||||
But in the end<br>
|
||||
It doesn’t even matter
|
||||
</p><p>
|
||||
I’ve put my trust in you<br>
|
||||
Pushed as far as I can go<br>
|
||||
And for all this<br>
|
||||
There’s only one thing you should know<br>
|
||||
I’ve put my trust in you<br>
|
||||
Pushed as far as I can go<br>
|
||||
And for all this<br>
|
||||
There’s only one thing you should know
|
||||
</p><p>
|
||||
I tried so hard<br>
|
||||
And got so far<br>
|
||||
But in the end<br>
|
||||
It doesn’t even matter<br>
|
||||
I had to fall<br>
|
||||
To lose it all<br>
|
||||
But in the end<br>
|
||||
It doesn’t even matter
|
||||
</p>
|
|
@ -0,0 +1,53 @@
|
|||
<b>Metallica</b><br>
|
||||
The black album<br>
|
||||
Nothing Else Matters<br>
|
||||
<hr>
|
||||
<p>
|
||||
So close no matter how far<br>
|
||||
couldn't be much more from the heart<br>
|
||||
forever trusting who we are<br>
|
||||
and nothing else matters
|
||||
</p><p>
|
||||
never opened myself this way<br>
|
||||
life is ours, we live it our way<br>
|
||||
all these words I don't just say<br>
|
||||
and nothing else matters
|
||||
</p><p>
|
||||
trust I seek and I find in you<br>
|
||||
every day for us something new<br>
|
||||
open mind for a different view<br>
|
||||
and nothing else matters
|
||||
</p><p>
|
||||
never cared for what they do<br>
|
||||
never cared for what they know<br>
|
||||
but I know
|
||||
</p><p>
|
||||
so close no matter how far<br>
|
||||
couldn't be much more from the heart<br>
|
||||
forever trusting who we are<br>
|
||||
and nothing else matters
|
||||
</p><p>
|
||||
never cared for what they do<br>
|
||||
never cared for what they know<br>
|
||||
but I know
|
||||
</p><p>
|
||||
never opened myself this way<br>
|
||||
life is ours, we live it our way<br>
|
||||
all these words I don't just say
|
||||
</p><p>
|
||||
trust I seek and I find in you<br>
|
||||
every day for us something new<br>
|
||||
open mind for a different view<br>
|
||||
and nothing else matters
|
||||
</p><p>
|
||||
never cared for what they say<br>
|
||||
never cared for games they play<br>
|
||||
never cared for what they do<br>
|
||||
never cared for what they know<br>
|
||||
and I know
|
||||
</p><p>
|
||||
so close no matter how far<br>
|
||||
couldn't be much more from the heart<br>
|
||||
forever trusting who we are<br>
|
||||
no nothing else matters
|
||||
</p>
|
|
@ -0,0 +1,50 @@
|
|||
<b>Paul Engemann</b><br>
|
||||
Scarface (Push it to the limit)<br>
|
||||
<hr>
|
||||
<p>
|
||||
Push it to the limit<br>
|
||||
Walk along the razor's edge<br>
|
||||
but don't look down, just keep your head<br>
|
||||
and you'll be finished
|
||||
</p><p>
|
||||
Open up the limit<br>
|
||||
past the point of no return<br>
|
||||
You've reached the top but still you gotta learn<br>
|
||||
how to keep it
|
||||
</p><p>
|
||||
Hit the wheel and double the stakes<br>
|
||||
throttle wide open like a bat out of hell<br>
|
||||
and you crash the gates<br>
|
||||
<i>(crash the gates)</i>
|
||||
</p><p>
|
||||
Going for the back of beyond<br>
|
||||
Nothing gonna stop you<br>
|
||||
there's nothing that strong<br>
|
||||
So close now you're nearly at the brink<br>
|
||||
so, push it
|
||||
</p><p>
|
||||
<i>(Ooo yeah)</i>
|
||||
</p><p>
|
||||
Welcome to the limit<br>
|
||||
<i>(The limit)</i>
|
||||
Take it maybe one step more<br>
|
||||
The power game's still playing so<br>
|
||||
you better win it
|
||||
</p><p>
|
||||
Push it to the limit<br>
|
||||
<i>(The limit)</i>
|
||||
With no one left to stand in your way<br>
|
||||
you might get careless, but you'll never be safe<br>
|
||||
while you still feel it
|
||||
</p><p>
|
||||
Welcome to the limit<br>
|
||||
<i>(The limit)</i>
|
||||
Standing on the razor's edge<br>
|
||||
don't look down just keep your head<br>
|
||||
and you'll be finished
|
||||
</p><p>
|
||||
Welcome to the limit<br>
|
||||
<i>(The limit)</i>
|
||||
Push it to the limit<br>
|
||||
<i>(The limit)</i>
|
||||
</p>
|
|
@ -0,0 +1,20 @@
|
|||
<b>Пикник</b><br>
|
||||
"Иероглиф"<br>
|
||||
<hr>
|
||||
<p>
|
||||
Мое имя - cтершийся Иероглиф<br>
|
||||
Мои одежды залатаны ветром,<br>
|
||||
Что несу я в зажатых ладонях<br>
|
||||
Меня не спросят,и я не отвечу.
|
||||
</p><p>
|
||||
И как перед битвой,<br>
|
||||
Решительной битвой,<br>
|
||||
Стою у каждого перекрестка<br>
|
||||
Hа море асфальта я вижу свой берег,<br>
|
||||
Свою голубую россыпь.
|
||||
</p><p>
|
||||
Hа все вопросы pассмеюсь я тихо<br>
|
||||
Hа все вопросы не будет ответа,<br>
|
||||
Ведь имя мое - Иероглиф<br>
|
||||
Мои одежды залатаны ветром.
|
||||
</p>
|
|
@ -0,0 +1,23 @@
|
|||
<b>Пикник</b><br>
|
||||
"Великан"<br>
|
||||
<hr><p>
|
||||
Если б мне такие руки<br>
|
||||
Руки как у великана,<br>
|
||||
Я б сложил их на своих коленях<br>
|
||||
Сам сидел бы тихо, тише вздоха, тише камня.
|
||||
</p><p>
|
||||
Если б мне такие крылья<br>
|
||||
Чтоб несли меня по свету,<br>
|
||||
Ни минуты не колеблясь<br>
|
||||
Я бы вырвал их и бросил ветру, бросил ветру.
|
||||
</p><p>
|
||||
Если б мне глаза такие<br>
|
||||
Чтоб все видели, преград не зная,<br>
|
||||
Я б закрыл их плотно-плотно<br>
|
||||
Сам сидел бы тихо, головой качая, головой качая.
|
||||
</p><p>
|
||||
Если б залилась ты смехом,<br>
|
||||
С ветром косами играя,<br>
|
||||
Я летел бы вслед за эхом,<br>
|
||||
Дивный голос догоняя, догоняя.
|
||||
</p>
|
|
@ -0,0 +1,28 @@
|
|||
<b>Секрет</b><br>
|
||||
Дай мне<br>
|
||||
<br>
|
||||
<i>музыка и слова М.Леонидова, Н.Фоменко и А.Заблудовского </i><br>
|
||||
<hr>
|
||||
<p>
|
||||
Распахните ваши окна<br>
|
||||
Ветру свободы,<br>
|
||||
Этот день мы будем помнить<br>
|
||||
Долгие годы.<br>
|
||||
Дайте друг другу руки,<br>
|
||||
Пусть разбудят этот мир оркестра звуки!
|
||||
</p><p>
|
||||
<i>Пр:</i> <br>
|
||||
Дай мне тепло твоих ладоней!<br>
|
||||
Верь - мы вражду и смерть прогоним!<br>
|
||||
Встанем спиною к спине,<br>
|
||||
И нам будет легче вдвойне!
|
||||
</p><p>
|
||||
И, назло снегам и грому, ливням и бурям,<br>
|
||||
Пусть звенит над нашим домом<br>
|
||||
Солнце июля.<br>
|
||||
Здесь всем найдется место,<br>
|
||||
Пусть летит над сонным миром<br>
|
||||
Звук оркестра!
|
||||
</p><p>
|
||||
<i>Пр: (2 раза)</i>
|
||||
</p>
|
|
@ -0,0 +1,52 @@
|
|||
<b>Секрет</b><br>
|
||||
Именины у Кристины <br>
|
||||
<br>
|
||||
<i>музыка М.Леонидова, слова Д.Рубина </i>
|
||||
<hr>
|
||||
<p>
|
||||
Раз в год именины у Кристины, и вот<br>
|
||||
Раз в год всех друзей Кристина зовет.<br>
|
||||
Раз в год как положено<br>
|
||||
Все расположено,<br>
|
||||
Все разложено, все стынет и ждет.<br>
|
||||
Пол с утра натерт до блеска Кристиной,<br>
|
||||
Стол раздвинут и накрыт в гостиной,<br>
|
||||
Стулья расставлены,<br>
|
||||
Свечи заправлены<br>
|
||||
В праздничный пирог.
|
||||
</p><p>
|
||||
<i>Пр:</i>
|
||||
Именины, именины у Кристины -<br>
|
||||
Полон дом гостей.<br>
|
||||
Именины: розы, книги, апельсины<br>
|
||||
Дарят нынче ей.<br>
|
||||
Эй, Кристина, я нынче желаю тебе долгих лет!<br>
|
||||
Эй, Кристина, я нынче желаю тебе жить без бед!<br>
|
||||
Эй, Кристина!
|
||||
</p><p>
|
||||
Раз в год дом устанет от счастливых хлопот,<br>
|
||||
Раз в год до полуночи дом кругом пойдет,<br>
|
||||
Вот-вот праздник примется,<br>
|
||||
Ждет именинница:<br>
|
||||
Час назначенный сейчас пробьет.<br>
|
||||
Скорей! Все готово давно у Кристины.<br>
|
||||
Эй! Ждут начала именины:<br>
|
||||
Стулья расставлены,<br>
|
||||
Свечи заправлены<br>
|
||||
В праздничный пирог.
|
||||
</p><p>
|
||||
<i>Пр:</i>
|
||||
</p><p>
|
||||
Раз в год праздник кончится, когда рассветет,<br>
|
||||
Раз в год провожать друзей Кристина пойдет,<br>
|
||||
Вот-вот все закончится,<br>
|
||||
Ей плакать хочется,<br>
|
||||
Свечи гасятся, и сьеден торт.<br>
|
||||
Дом, где справлялись именины Кристины,<br>
|
||||
Сном покрыт, и комнаты пустынны.<br>
|
||||
Небо затянется, <br>
|
||||
Только останется<br>
|
||||
Вспоминать весь год...
|
||||
</p><p>
|
||||
<i>Пр:</i>
|
||||
</p>
|
|
@ -0,0 +1,39 @@
|
|||
<b>Cекрет</b><br>
|
||||
Твои шаги
|
||||
<hr>
|
||||
<p>1. Когда за окном глаза закроет день,<br>
|
||||
И на небе ночном проснется звезд сирень,<br>
|
||||
А там, там за углом фонарь качает тень,<br>
|
||||
Я вновь одинок, а ветер листья крутит.<br>
|
||||
Часы на стене мне снова вечер мерят,<br>
|
||||
В пустой темноте лишь только я и время,<br>
|
||||
Но кажется мне - твои шаги за дверью<br>
|
||||
Вечер разбудят.
|
||||
</p><p>
|
||||
Пр: Под луной голубой<br>
|
||||
Мы, обнявшись с тобой,<br>
|
||||
Над водой стоим.<br>
|
||||
Звезды в вечной дали<br>
|
||||
Дарят песни свои<br>
|
||||
Только нам двоим.<br>
|
||||
Город спит, но для нас<br>
|
||||
Заиграют сейчас<br>
|
||||
Фонари свой полуночный вальс,<br>
|
||||
Отдадимся беспечному ветру в обьятья -<br>
|
||||
Эта ночь будет только для нас.
|
||||
</p><p>
|
||||
2. Но вечер безмолвен,<br>
|
||||
И шагов не слышно.<br>
|
||||
Лишь белые волны<br>
|
||||
Облаков над крышей,<br>
|
||||
Плывут на восток,<br>
|
||||
Где скоро утро будет,<br>
|
||||
Я одинок,<br>
|
||||
А ветер листья крутит.<br>
|
||||
Часы на стене мне снова вечер мерят,<br>
|
||||
В пустой темноте лишь только я и время,<br>
|
||||
Но кажется мне - твои шаги за дверью<br>
|
||||
Вечер разбудят.<br>
|
||||
</p><p>
|
||||
<i>Пр: </i>
|
||||
</p>
|
|
@ -0,0 +1,429 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
require 'config.pl';
|
||||
$header = "$forumdir/header.txt";
|
||||
##########################################################################
|
||||
|
||||
################ NO EDITING NEEDED BELOW HERE ###################
|
||||
##########################################################################
|
||||
#
|
||||
|
||||
##########################################################################
|
||||
# parse form values
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
@pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# miscellaneous values
|
||||
$command = $in{'command'};
|
||||
@months = ("January","February","March","April","May","June","July","August","September","October","November","December");
|
||||
|
||||
##########################################################################
|
||||
# determine what sub-routine to run based on the $command form value
|
||||
if ($command eq '') {&login;}
|
||||
elsif ($command eq 'displayList') {&displayList;}
|
||||
elsif ($command eq 'displayThreads') {&displayThreads;}
|
||||
elsif ($command eq 'deleteThreads') {&deleteThreads;}
|
||||
elsif ($command eq 'displayEditThread') {&displayEditThread;}
|
||||
elsif ($command eq 'editThread') {&editThread;}
|
||||
|
||||
##########################################################################
|
||||
# prints the login page
|
||||
sub login {
|
||||
&printHeader("$forumclass");
|
||||
print <<"EOF";
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="410" class="border"><tr><td colspan="0" bgcolor="white"><br><table width="410" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="410" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Weblog Administrator - Please Login</h2> </span><BR><BR>
|
||||
<FORM ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<INPUT TYPE="Hidden" NAME="command" VALUE="displayList">
|
||||
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1>
|
||||
<TR><TD CLASS="txt">Username:</TD>
|
||||
<TD><INPUT TYPE="Text" CLASS="txt" NAME="username" SIZE="25"></TD></TR>
|
||||
<TR><TD CLASS="txt">Password:</TD>
|
||||
<TD><INPUT TYPE="Password" CLASS="txt" NAME="password" SIZE="25"></TD></TR>
|
||||
<TR><TD CLASS="headers"><BR><BR></TD>
|
||||
<td><INPUT TYPE="Submit" CLASS="submit" VALUE="Login"></td></TR>
|
||||
</TABLE>
|
||||
</FORM><BR>Return to your weblog by clicking <A HREF="weblog.pl">here</A><br>----------------------------------------------------------------------------------<BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# checks username and password, called from every sub-routine
|
||||
sub checkAccess {
|
||||
if ($in{'username'} ne $adminusername || $in{'password'} ne $adminpassword) {
|
||||
print "Content-type: text/html\n\n";
|
||||
print "Access Denied - Click Back to Retry Your Login and Password.";
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
##########################################################################
|
||||
# prints a list of months that have been archived
|
||||
sub displayList {
|
||||
&checkAccess;
|
||||
&printHeader("");
|
||||
print "<FORM ACTION=\"weblog-admin.pl\" METHOD=\"POST\">\n";
|
||||
open(MONTHS,"$forumdir/months.txt");
|
||||
@headerfiles = <MONTHS>;
|
||||
close(MONTHS);
|
||||
print <<"EOF";
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="410" class="border"><tr><td colspan="0" bgcolor="white"><BR><table width="410" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="410" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Choose Month to Edit</h2> </span><p> </p>
|
||||
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1>
|
||||
<TR BGCOLOR="#FFFFFF"><TD CLASS="headers">Month</TD><TD CLASS="headers">Year</TD></TR>
|
||||
EOF
|
||||
foreach $headerfile (@headerfiles) {
|
||||
if ($headerfile ne '') {
|
||||
$year = substr ($headerfile,0,4);
|
||||
$month = substr ($headerfile,4,5);
|
||||
$month = sprintf("%5.0f", $month);
|
||||
$monthname = $months[$month-1];
|
||||
$headerfile = substr ($headerfile,0,6);
|
||||
print "<TR BGCOLOR=\"#FFFFFF\"><TD><INPUT TYPE=\"Radio\" NAME=\"headerfile\" VALUE=\"$headerfile\">$monthname </TD><TD>$year</TD></TR>\n";
|
||||
}
|
||||
}
|
||||
print <<"EOF";
|
||||
<INPUT TYPE="Hidden" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="Hidden" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="Hidden" NAME="command" VALUE="displayThreads">
|
||||
<TR BGCOLOR="#FFFFFF"><TD><BR><BR><INPUT TYPE="Submit" class="submit" VALUE="Edit Month"></TD></TR>
|
||||
</TABLE>
|
||||
</FORM><br><BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# print the headers for a particular month
|
||||
sub displayThreads {
|
||||
&checkAccess;
|
||||
$headerfile = $in{'headerfile'};
|
||||
|
||||
$year = substr ($headerfile,0,4);
|
||||
$month = substr ($headerfile,4,5);
|
||||
$month = sprintf("%5.0f", $month);
|
||||
$monthname = $months[$month-1];
|
||||
|
||||
open(DATA,"$forumdir/$headerfile.txt");
|
||||
@headerlines = <DATA>;
|
||||
close(DATA);
|
||||
$length = @headerlines;
|
||||
|
||||
&printHeader("");
|
||||
print <<"EOF";
|
||||
<SCRIPT LANGUAGE="JavaScript">
|
||||
<!--
|
||||
|
||||
function submitForm(which) {
|
||||
df = document.forum
|
||||
if (which == 'delete') {
|
||||
var str = ""
|
||||
for (var i=0; i<$length; i++) {
|
||||
if (eval('df.delete'+i+'.checked == true')) {
|
||||
str += eval('df.delete'+i+'.value')+","
|
||||
}
|
||||
}
|
||||
if (str!="") {
|
||||
df.todelete.value = str.substring(0,str.length-1)
|
||||
df.command.value = "deleteThreads"
|
||||
df.submit()
|
||||
}
|
||||
else {
|
||||
df.todelete.value = str.substring(0,str.length-1)
|
||||
df.command.value = "deleteThreads"
|
||||
df.submit()
|
||||
}
|
||||
}
|
||||
else if (which == 'edit') {
|
||||
var editselected = false
|
||||
for (var i=0; i<df.toedit.length; i++) {
|
||||
if (df.toedit[i].checked == true) {
|
||||
editselected = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (editselected == false) {
|
||||
df.command.value = "displayEditThread"
|
||||
df.submit()
|
||||
}
|
||||
else {
|
||||
df.command.value = "displayEditThread"
|
||||
df.submit()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-->
|
||||
</SCRIPT>
|
||||
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="410" class="border"><tr><td colspan="0" bgcolor="white"><BR><table width="410" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="410" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Editing/Deleting Entries | <A HREF="weblog.pl"><B>$monthname $year</b></a></h2><BR><BR>
|
||||
<TABLE BORDER=0 width="650" CELLSPACING=1 CELLPADDING=1>
|
||||
<TR BGCOLOR="#FFFFFF"><TD class="border"> Delete</TD><TD class="border"> Edit</TD><TD class="border"> Subject</TD><TD class="border"> Entry</TD><TD CLASS="headers">Responses</TD>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
EOF
|
||||
for ($i=0;$i<@headerlines;$i++) {
|
||||
if ($headerlines[$i] ne '') {
|
||||
@info = split (/_/, $headerlines[$i]);
|
||||
$num = $info[0];
|
||||
$subject = $info[1];
|
||||
$name = $info[2];
|
||||
$date = $info[3];
|
||||
$responses = $info[6];
|
||||
print <<"EOF";
|
||||
<TR BGCOLOR="#FFFFFF"><TD ALIGN="CENTER"><INPUT TYPE="Checkbox" NAME="delete$i" VALUE="$num"></TD>
|
||||
<TD ALIGN="CENTER"><INPUT TYPE="Radio" NAME="toedit" VALUE="$num"></TD>
|
||||
<TD> $subject </TD><TD> $name </TD><TD ALIGN="CENTER">$responses</TD></TR>
|
||||
EOF
|
||||
}
|
||||
}
|
||||
print <<"EOF";
|
||||
<TR BGCOLOR="#FFFFFF">
|
||||
<TD><BR><BR><INPUT TYPE="BUTTON" class="submit" VALUE="Delete" onClick="submitForm('delete')"></TD>
|
||||
<TD><BR><BR><INPUT TYPE="BUTTON" class="submit" VALUE="Edit" onClick="submitForm('edit')"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<INPUT TYPE="HIDDEN" NAME="todelete">
|
||||
<INPUT TYPE="HIDDEN" NAME="headerfile" VALUE="$headerfile">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="">
|
||||
</FORM><br><BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# prints the edit thread page, where you edit the source file to a message
|
||||
sub displayEditThread {
|
||||
&checkAccess;
|
||||
$headerfile = $in{'headerfile'};
|
||||
$toedit = $in{'toedit'};
|
||||
$toedit =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
&printHeader("");
|
||||
print <<"EOF";
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="750" class="border"><tr><td colspan="0" bgcolor="white"><BR><table width="600" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="600" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Editing/Deleting Entries | <A HREF="weblog.pl">Thread $toedit</A></h2><br><font size="1">Edit within the first <name> parameters for the actual blog entry<br>Comments follow blog entry</font></span><center><BR><BR></B>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<TEXTAREA NAME="body" class="txt" ROWS=20>
|
||||
EOF
|
||||
open(DATA,"$forumdir/messages/$toedit.txt");
|
||||
@msglines = <DATA>;
|
||||
close(DATA);
|
||||
foreach $msgline (@msglines) {
|
||||
print $msgline;
|
||||
}
|
||||
print "</TEXTAREA>\n";
|
||||
print <<"EOF";
|
||||
<BR>
|
||||
<INPUT TYPE="HIDDEN" NAME="toedit" VALUE="$toedit">
|
||||
<INPUT TYPE="HIDDEN" NAME="headerfile" VALUE="$headerfile">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="editThread"><BR><BR>
|
||||
<INPUT TYPE="Submit" class="submit" VALUE="Ñîõðàíèòü">
|
||||
</FORM><br><BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# sub-routine of &displayPreview that wraps a block of text to a given line length
|
||||
# Deleted to see if it affect runing on Linux. Works okay on NTP on PC with Apache
|
||||
# Not needed for admin
|
||||
|
||||
##########################################################################
|
||||
# saves the message that was being edited
|
||||
sub editThread {
|
||||
&checkAccess;
|
||||
&printHeader("");
|
||||
$headerfile = $in{'headerfile'};
|
||||
$toedit = $in{'toedit'};
|
||||
$body = $in{'body'}; ### redid, dumped unneeded textwrap subroutine
|
||||
@msglines = split(/\n/,$body);
|
||||
|
||||
open(DATA,">$forumdir/messages/$toedit.txt");
|
||||
foreach $msgline (@msglines) {
|
||||
if ($msgline !~ /<\/msg>/) {chop($msgline);}
|
||||
print DATA "$msgline\n";
|
||||
}
|
||||
close(DATA);
|
||||
|
||||
for ($i=0; $i<@msglines; $i++) {
|
||||
if ($msglines[$i] =~ /<subject>(.*)<\/subject>/) {
|
||||
$subject = $1;
|
||||
}
|
||||
if ($msglines[$i] =~ /<name>(.*)<\/name>/) {
|
||||
$name = $1;
|
||||
}
|
||||
if ($msglines[$i] =~ /<date>(.*)<\/date>/) {
|
||||
$date = $1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
$replies = -1;
|
||||
for ($i=0; $i<@msglines; $i++) {
|
||||
if ($msglines[$i] =~ /<msg>/) {
|
||||
$replies += 1;
|
||||
$replytime
|
||||
}
|
||||
}
|
||||
open(HEADER,"$forumdir/$headerfile.txt");
|
||||
@headers = <HEADER>;
|
||||
close(HEADER);
|
||||
open(HEADER,">$forumdir/$headerfile.txt");
|
||||
foreach $headerline (@headers) {
|
||||
@headerdata = split(/_/, $headerline);
|
||||
$threadnum = $headerdata[0];
|
||||
if ($threadnum == $toedit) {
|
||||
@headerdata = split(/_/, $headerline);
|
||||
print HEADER "$toedit\_$subject\_$name\_$image\_$postm\_$date\_0\_ \n";
|
||||
}
|
||||
else {print HEADER "$headerline";}
|
||||
}
|
||||
close(HEADER);
|
||||
|
||||
open(ALL,"$forumdir/all.txt");
|
||||
@headers = <ALL>;
|
||||
close(ALL);
|
||||
open(ALL,">$forumdir/all.txt");
|
||||
foreach $headerline (@headers) {
|
||||
@headerdata = split(/_/, $headerline);
|
||||
$threadnum = $headerdata[0];
|
||||
if ($threadnum == $toedit) {
|
||||
@headerdata = split(/_/, $headerline);
|
||||
print ALL "$toedit\_$subject\_$name\_$image\_$postm\_$date\_0\_ \n";
|
||||
}
|
||||
else {print ALL "$headerline";}
|
||||
}
|
||||
close(ALL);
|
||||
print <<"EOF";
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="410" class="border"><tr><td colspan="0" bgcolor="white"><BR><table width="410" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="410" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Editing Entries | <A HREF="weblog.pl">Successful</A></h2><BR><BR>
|
||||
<P>Message number $toedit has been saved<BR><BR>
|
||||
<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="1"><TR>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="displayList">
|
||||
<INPUT TYPE="Submit" class="submit" VALUE="Choose Different Month">
|
||||
</FORM><br>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="headerfile" VALUE="$headerfile">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="displayThreads">
|
||||
<INPUT TYPE="Submit" class="submit" VALUE="Edit This Month Again">
|
||||
</FORM>
|
||||
|
||||
<FORM><br>
|
||||
<INPUT TYPE="BUTTON" class="submit" VALUE="View Weblog" onClick="document.location.href='weblog.pl'">
|
||||
</FORM><br><BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# deletes the messages that were selected in the &displayThreads page
|
||||
sub deleteThreads {
|
||||
&checkAccess;
|
||||
&printHeader("");
|
||||
$headerfile = $in{'headerfile'};
|
||||
$todelete = $in{'todelete'};
|
||||
@threads = split (/,/, $todelete);
|
||||
|
||||
open(HEADER,"$forumdir/$headerfile.txt");
|
||||
@headerlines = <HEADER>;
|
||||
close(HEADER);
|
||||
|
||||
open(HEADER,">$forumdir/$headerfile.txt");
|
||||
for ($i=0; $i<@headerlines; $i++) {
|
||||
$remove = "false";
|
||||
for ($j=0; $j<@threads; $j++) {
|
||||
if ($headerlines[$i] =~ /$threads[$j]_/) {
|
||||
$remove = "true";
|
||||
}
|
||||
}
|
||||
if ($remove eq "false") {print HEADER "$headerlines[$i]";}
|
||||
}
|
||||
close(HEADER);
|
||||
|
||||
open(ALL,"$forumdir/all.txt");
|
||||
@headerlines = <ALL>;
|
||||
close(ALL);
|
||||
|
||||
open(ALL,">$forumdir/all.txt");
|
||||
for ($i=0; $i<@headerlines; $i++) {
|
||||
$remove = "false";
|
||||
for ($j=0; $j<@threads; $j++) {
|
||||
if ($headerlines[$i] =~ /$threads[$j]_/) {
|
||||
$remove = "true";
|
||||
}
|
||||
}
|
||||
if ($remove eq "false") {print ALL "$headerlines[$i]";}
|
||||
}
|
||||
close(ALL);
|
||||
|
||||
foreach $thread (@threads) {
|
||||
unlink ("$forumdir/messages/$thread.txt");
|
||||
}
|
||||
print <<"EOF";
|
||||
<tr><td><table cellpadding="10" cellspacing="1" border="0" width="410" class="border"><tr><td colspan="0" bgcolor="white"><BR><table width="410" border="0" cellspacing="1" cellpadding="0" bordercolor="white"><table width="410" align="center" border="0" cellspacing="0" cellpadding="0"><h2>Deleting Entries | <A HREF="weblog.pl">Successful</A></h2><BR><BR><P>The following threads were removed:<BR>
|
||||
EOF
|
||||
foreach $thread (@threads) {
|
||||
print "$thread,";
|
||||
}
|
||||
print <<"EOF";
|
||||
<BR><BR>
|
||||
<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="1"><TR>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="displayList">
|
||||
<INPUT TYPE="Submit" class="submit" VALUE="Choose Different Month">
|
||||
</FORM><br>
|
||||
<FORM NAME="forum" ACTION="weblog-admin.pl" METHOD="POST">
|
||||
<INPUT TYPE="HIDDEN" NAME="username" VALUE="$in{username}">
|
||||
<INPUT TYPE="HIDDEN" NAME="password" VALUE="$in{password}">
|
||||
<INPUT TYPE="HIDDEN" NAME="headerfile" VALUE="$headerfile">
|
||||
<INPUT TYPE="HIDDEN" NAME="command" VALUE="displayThreads">
|
||||
<INPUT TYPE="Submit" class="submit" VALUE="Edit This Month Again">
|
||||
</FORM><br>
|
||||
<FORM>
|
||||
<INPUT TYPE="BUTTON" class="submit" VALUE="View weblog" onClick="document.location.href='weblog.pl'">
|
||||
</FORM><br><BR><small>Powered by PerlBlog</small><br><br></tr></table></td></tr></td></tr></table></div>
|
||||
EOF
|
||||
&printSooter;
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# common HTML header for all pages
|
||||
sub printHeader {
|
||||
my($title) = @_;
|
||||
print "Content-type: text/html\n\n";
|
||||
print "<html><meta http-equiv=\"Content-Type\" content='text/html; charset=$charset'><head>";
|
||||
if ($cookieHash{'light'}){print '<link type="text/css" rel="stylesheet" href="white.css">';}
|
||||
else {print '<link type="text/css" rel="stylesheet" href="black.css">';}
|
||||
print <<"EOF";
|
||||
<title>$blogtitle</title>
|
||||
<meta name="description" content="$description" />
|
||||
<meta name="keywords" content="$keywords" />
|
||||
<meta name="author" content="$author" />
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
print "<span class=ftitle>$title</span>\n";
|
||||
print "<P>\n";
|
||||
}
|
||||
##########################################################################
|
||||
# common HTML footer for all pages
|
||||
sub printFooter {
|
||||
open FOOTER, "$forumdir/footer.txt"
|
||||
or die "Can't open footer file because $!\n";
|
||||
print while (<FOOTER>);
|
||||
close FOOTER;
|
||||
}
|
||||
print "\n<br></body></html>\n\n";
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/perl
|
||||
use CGI":standard";
|
||||
require 'common.pl';
|
||||
#parse cookies
|
||||
my @cookieArray=split ("; ",$ENV{'HTTP_COOKIE'});
|
||||
my $cookieName;my $cookieValue;my %cookieHash;
|
||||
foreach (@cookieArray){
|
||||
($cookieName,$cookieValue)=split("=",$_);
|
||||
$cookieHash{$cookieName}=$cookieValue;
|
||||
}
|
||||
#parse GET input
|
||||
if ($ENV{'QUERY_STRING'} ne '') {
|
||||
@qstr = split (/=/,$ENV{'QUERY_STRING'});
|
||||
$command = $qstr[0];
|
||||
$value = $qstr[1];
|
||||
$value =~ s/[\x00-\x20<>\|;\(\)\$^\+!\^\[\]\?\"\'\`]//g;
|
||||
|
||||
if ($command eq "random") {&randomPost;}
|
||||
elsif ($command eq "write"){print redirect ('write.pl');}
|
||||
else {&default;}
|
||||
}
|
||||
else {&default;}
|
||||
#####SUBS
|
||||
sub default{
|
||||
&displaypost("temp.txt");
|
||||
# &printHeader("Áëîã Àëåêñàíäðà ßêîâëåâà a.k.a. Oreolek");
|
||||
# print "Ïîêà ïóñòî.\n<br>\n";
|
||||
# &printFooter;
|
||||
}
|
||||
sub displaypost(){
|
||||
$filename=shift;
|
||||
open (MESSAGE,"$filename");
|
||||
|
||||
while (<MESSAGE>){
|
||||
}
|
||||
&printHeader("$title");
|
||||
&printFooter;
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/perl
|
||||
require 'common.pl';
|
||||
#parse POST input
|
||||
my $temp;my $pair;my %in;
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
my @pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
if ($in{'body'} eq ""){
|
||||
&printHeader("Îøèáêà");
|
||||
print "<h2 align=\"center\">òåëî ñîîáùåíèÿ íå ïåðåäàíî.</h2>";
|
||||
&printFooter;
|
||||
die;
|
||||
}
|
||||
my $min;my $hour;my $mon;my $year;#reading date
|
||||
(undef,$min,$hour,$mday,$mon,$year,undef,undef,undef) = localtime(time);
|
||||
$year = 1900 + $year;$mon++;
|
||||
if ($mon <10){$mon = "0$mon";}
|
||||
if ($mday <10) {$mday = "0$mday";}
|
||||
if ($hour<10) {$hour = "0$hour";}
|
||||
if ($min<10) {$min = "0$min";}
|
||||
my $title;if ($in{'title'} gt " "){$title=$in{'title'};}#parsing title
|
||||
else {$title="$mday.$mon.$year, $hour:$min";}
|
||||
open (TEMP,">weblog/temp.txt");#íåãîæå ñòîëüêî êá â ïàìÿòè õðàíèòü
|
||||
print TEMP "$in{'body'}";
|
||||
close(TEMP);
|
||||
my $message = "messages/$year/$mon/$mday$hour$min.txt";
|
||||
open (MESSAGE,">$message");
|
||||
print MESSAGE "\<title\>$title\<\/title\>\n\<body\>\n";
|
||||
open (TEMP,"temp.txt");
|
||||
while (<TEMP>){
|
||||
$temp=$_;
|
||||
$temp =~ s/</[/g;
|
||||
$temp =~ s/>/]/g;#BBCode
|
||||
print MESSAGE "$temp<br>\n";#ñòðîêà çàêàí÷èâàåòñÿ \n,ýòî ìû ìåíÿåì íà <br>
|
||||
}
|
||||
close (TEMP);
|
||||
print MESSAGE "\n</body>\n";
|
||||
close (MESSAGE);
|
||||
&printHeader("Îòïðàâêà óñïåøíà",1);
|
||||
print "<h2 align=\"center\">Îòïðàâêà óñïåøíà.</h2>";
|
||||
&printFooter();
|
|
@ -0,0 +1,2 @@
|
|||
Привет тебе,о неизвестны!
|
||||
Пышу тебе <b>Я</b>!!!
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/perl
|
||||
require 'common.pl';
|
||||
#parse POST input
|
||||
my $temp;my $pair;my %in;
|
||||
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
|
||||
my @pairs = split(/&/, $buffer);
|
||||
foreach $pair (@pairs) {
|
||||
local($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;
|
||||
$in{$name} = $value;
|
||||
}
|
||||
if ($in{'username'}) {&writemessage;}#POST isn't empty,new message pending
|
||||
else {&checkaccess;}
|
||||
|
||||
sub writemessage{
|
||||
if ($in{'username'} eq "the master of universe" && $in{'password'} eq "the greatest man in the world"){
|
||||
&printHeader("Íàïèñàòü íîâîå ñîîáùåíèå",1);
|
||||
print <<"END";
|
||||
<h2 align="center">Íàïèñàòü íîâîå ñîîáùåíèå</h2>
|
||||
<FORM NAME="form" ACTION="post_message.pl" METHOD="POST">
|
||||
Çàãîëîâîê ñîîáùåíèÿ (åñëè ïóñò,îí áóäåò çàìåíåí íà òåêóùóþ äàòó):
|
||||
<p><input type="text" name="title" size="50" maxlength="225"></p>
|
||||
Òåêñò ñîîáùåíèÿ:
|
||||
<p><textarea cols="100" rows="15" name="body"></textarea></p>
|
||||
<br><INPUT TYPE="Submit" class='submit' VALUE="Îòïðàâèòü â áëîã">
|
||||
</form>
|
||||
END
|
||||
&printFooter;
|
||||
}
|
||||
else{
|
||||
&printHeader("Íåâåðíûå ëîãèí è ïàðîëü",1);
|
||||
print <<"END";
|
||||
<h3 align="center">Íåâåðíûå ëîãèí èëè ïàðîëü</h3>
|
||||
Òîò ëîãèí è ïàðîëü,÷òî âû ââåëè,îêàçàëèñü íåâåðíû.Âû íå ñìîæåòå íàïèñàòü ñîîáùåíèå â ýòîò äíåâíèê.Ñîæàëååì.
|
||||
END
|
||||
&printFooter;
|
||||
}
|
||||
}
|
||||
|
||||
sub checkaccess{
|
||||
&printHeader("Ïðîâåðêà ïîëüçîâàòåëÿ",1);
|
||||
print <<"END";
|
||||
<h3 align="center">Íàïèñàòü íîâîå ñîîáùåíèå</h3>
|
||||
<FORM NAME="forum" ACTION="?" METHOD="POST">
|
||||
<table border=0><tr><td>Èìÿ ïîëüçîâàòåëÿ:</td>
|
||||
<td><input type="text" name="username" size="35" maxlength="225"></td></tr>
|
||||
<tr><td>Ïàðîëü:</td>
|
||||
<td><input type="password" name="password" size="35" maxlength="225"></td></tr>
|
||||
</table>
|
||||
<input type="submit" value="Ïðîâåðèòü">
|
||||
</form>
|
||||
END
|
||||
&printFooter();
|
||||
}
|
Loading…
Reference in New Issue