Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Wakaba 3.0.9.
Скачать бесплатно Wakaba 3.0.9.
(Вакаба, 若葉) — движок имиджборда, созданный из древних скриптов Futaba и Futallaby. Она написана на языке Perl, использует бд SQL/SQLite, HTTP-сервер - Apache, работает через CGI. Этот скрипт, из-за его открытости, широко используется на различных чанах (хотя, конечно, сейчас понемногу вытесняется более новыми). Движок поддерживает все стандартные плюшки вроде трипкодов, капч, сажи, антифлуда, оэкаки-борд, смены стилей и т. д.
Установка
Для начала нужно создать файл .htaccess и вписать в него следующее.
Кодировку для этого файла стоит выбрать utf8
DirectoryIndex wakaba.pl
AddCharset UTF-8 .html
Options +ExecCGI
AddHandler cgi-script .pl
Deny from all
Deny from all
Deny from all
Header add Expires "Mon, 26 Jul 1997 05:00:00 GMT"
Header add Pragma "no-cache"
Header add Cache-Control "max-age=0; must-revalidate; no-cache"
Header unset Vary
так же файлам и папкам вакабы стоит выставить разные права (chmod)
этим файлам стоит выставить права 755
captcha.pl
config.pl
config_defaults.pl
futaba_style.pl
strings_en.pl
wakaba.pl
wakautils.pl
папкам res, src, thumb, css, arch, extras нужно выставить права 777 ибо это папки для тредов
js файлу wakaba3.js тоже 777 права (служит для добавления и редактирования js скриптов)
Настройка
в папке include лежат файлы header.html и footer.html. в них можно записать различный код.
ниже приведён пример:
[ [url=/d/]d[/url] / [url=/pr/]pr[/url] ]
ваш ява скрипт
если вакаба установлена на локальной машине или же просто нехотят работать header и footer, то в файле futaba_style.pl поправьте 42, 61, 109 строчки по такому принципу: "/var/www/b/include/footer.html" (заменить на своё)
config.pl это файл с настройками вашей вакабы, ниже приведён сэмпл
use utf8;
use constant ADMIN_PASS => 'xxxx'; # Пароль Администратора.
use constant NUKE_PASS => 'xxxyyyxxx'; # Пароль для уничтожения имейджборды.
use constant SECRET => 'qwertyqwerty'; # Криптографическая тайна. Измените на что-то совершенно случайное, и длинное.
use constant SQL_DBI_SOURCE => 'DBI:mysql:database=xxx;host=localhost'; # БД инфа (MySQL версия, написать сюда сервер и имя базы данных)
use constant SQL_USERNAME => 'root'; # MySQL логин
use constant SQL_PASSWORD => 'xxxxxx'; # MySQL пароль
##use constant SQL_DBI_SOURCE => 'dbi:SQLite:dbname=wakaba.sql';# DBI data source string (SQLite version, put database filename in here)
##use constant SQL_USERNAME => ''; # Not used by SQLite
##use constant SQL_PASSWORD => ''; # Not used by SQLite
use constant SQL_TABLE => 'a_comments'; # Префикс борды (допустим для бреда b_, для автомобилей au_ )
#use constant SQL_ADMIN_TABLE => 'admin'; # Table used for admin information
#use constant SQL_PROXY_TABLE => 'proxy'; # Table used for proxy information
#use constant USE_TEMPFILES => 1; # Set this to 1 under Unix and 0 under Windows! (Use tempfiles when creating pages)
# Настройки страницы
use constant TITLE => 'Впишите имя раздела'; # имя раздела
use constant SHOWTITLETXT => 1; # показывать заголовок (1: да 0: нет)
#use constant SHOWTITLEIMG => 0; # показывать картинку на заглавной (0: нет, 1: single, 2: rotating)
#use constant TITLEIMG => 'title.jpg'; # Картинка-логотип раздела
use constant FAVICON => 'wakaba.ico'; # Favicon.ico файл (иконочка во вкладке, имя файла)
use constant HOME => '/'; # Домашняя дирректория сайта
use constant IMAGES_PER_PAGE => 5; # Картинок на странице
use constant REPLIES_PER_THREAD => 5; # Число ответов
use constant IMAGE_REPLIES_PER_THREAD => 0; # Number of image replies per thread to show, set to 0 for no limit.
use constant S_ANONAME => 'няша'; # Defines what to print if there is no text entered in the name field
#use constant S_ANOTEXT => ''; # Defines what to print if there is no text entered in the comment field
#use constant S_ANOTITLE => ''; # Defines what to print if there is no text entered into subject field
#use constant SILLY_ANONYMOUS => ''; # Make up silly names for anonymous people (0 or '': don't display, any combination of 'day' or 'board': make names change for each day or board, 'static': static names)
use constant DEFAULT_STYLE => 'photon'; #Название стиля по умолчанию.
# Лимиты
use constant MAX_KB => 50000; # Максимальный размер загрузки KB
use constant MAX_W => 200; # Ширина изображения
use constant MAX_H => 200; # Высота изображения
use constant MAX_RES => 20; # Maximum topic bumps
use constant MAX_POSTS => 500; # Максимальное количество ответов в треде ( 0 - выключить)
use constant MAX_THREADS => 0; # Максимальное количество тредов ( 0 - выключить)
use constant MAX_AGE => 0; # Время жизни тредов в часах ( 0 - выключить)
use constant MAX_MEGABYTES => 0; # Maximum size to use for all images in megabytes (set to 0 to disable)
#use constant MAX_FIELD_LENGTH => 100; # Maximum number of characters in subject, name, and email
#use constant MAX_COMMENT_LENGTH => 8192; # Maximum number of characters in a comment
#use constant MAX_LINES_SHOWN => 15; # Max lines shown per post (0 = no limit)
#use constant MAX_IMAGE_WIDTH => 16384; # Maximum width of image before rejecting
#use constant MAX_IMAGE_HEIGHT => 16384; # Maximum height of image before rejecting
#use constant MAX_IMAGE_PIXELS => 50000000; # Maximum width*height of image before rejecting
# Капча
use constant ENABLE_CAPTCHA => 1; #включить капчу ( 1-да 0 нет )
#use constant SQL_CAPTCHA_TABLE => 'captcha'; # таблица капчи sql
use constant CAPTCHA_LIFETIME => 1440; # Время жизни капчи в секундах
use constant CAPTCHA_SCRIPT => 'captcha.pl'; #файл капчи (если вдруг захотите поставить рекапчу или что-то другое)
use constant CAPTCHA_HEIGHT => 18;
use constant CAPTCHA_SCRIBBLE => 0.2;
use constant CAPTCHA_SCALING => 0.15;
use constant CAPTCHA_ROTATION => 0.3;
use constant CAPTCHA_SPACING => 2.5;
# Load Balancing
#use constant ENABLE_LOAD => 0; # Enable the distribution of image files across multiple hosts (0: no, 1: yes). May not work on a windows host. Do not enable if using STUPID_THUMBNAILING.
#use constant LOAD_SENDER_SCRIPT => './sender.pl';
#use constant LOAD_LOCAL => 120; # Gigabytes of available bandwidth relative to other hosts (please read documentation)
#use constant LOAD_HOSTS => (['http://somesite/loader.pl', 'password', 100]);
#use constant LOAD_KBRATE => 25; # minimum send rate that will be accepted without timing out
# Proxy
#use constant ENABLE_PROXY_CHECK => 0; # Enable proxy checking (0: no, 1:yes). Please read the documentation first!
#use constant PROXY_COMMAND => 'proxycheck -s -d CHANGEME -c chat:CHANGEME ESMTP" -aaaa'; # Only uncomment if you know what you're doing...
#use constant PROXY_WHITE_AGE => 604800; # Seconds until confirmed non-proxy entry expires.
#use constant PROXY_BLACK_AGE => 604800; # Seconds until confirmed proxy entry expires.
# Tweaks
#use constant THUMBNAIL_SMALL => 1; # Thumbnail small images (1: yes, 0: no)
#use constant THUMBNAIL_QUALITY => 70; # Thumbnail JPEG quality
#use constant DELETED_THUMBNAIL => ''; # Thumbnail to show for deleted images (leave empty to show text message)
#use constant DELETED_IMAGE => ''; # Image to link for deleted images (only used together with DELETED_THUMBNAIL)
#use constant ALLOW_TEXTONLY => 1; # Allow textonly posts (1: yes, 0: no)
#use constant ALLOW_IMAGES => 1; # Allow image posting (1: yes, 0: no)
#use constant ALLOW_IMAGE_SPOILERS => 1; # Allow image spoilers (1: yes, 0: no)
#use constant ALLOW_TEXT_REPLIES => 1; # Allow replies (1: yes, 0: no)
#use constant ALLOW_IMAGE_REPLIES => 1; # Allow replies with images (1: yes, 0: no)
#use constant ALLOW_UNKNOWN => 0; # Allow unknown filetypes (1: yes, 0: no)
#use constant MUNGE_UNKNOWN => '.unknown'; # Munge unknown file type extensions with this. If you remove this, make sure your web server is locked down properly.
#use constant FORBIDDEN_EXTENSIONS => ('php','php3','php4','phtml','shtml','cgi','pl','pm','py','r','exe','dll','scr','pif','asp','cfm','jsp','vbs'); # file extensions which are forbidden
#use constant RENZOKU => 5; # Seconds between posts (floodcheck)
#use constant RENZOKU2 => 10; # Seconds between image posts (floodcheck)
#use constant RENZOKU3 => 900; # Seconds between identical posts (floodcheck)
#use constant NOSAGE_WINDOW => 1200; # Seconds that you can post to your own thread without increasing the sage count
#use constant USE_SECURE_ADMIN => 0; # Use HTTPS for the admin panel.
use constant CHARSET => 'utf-8'; # Character set to use, typically 'utf-8' or 'shift_jis'. Disable charset handling by setting to ''. Remember to set Apache to use the same character set for .html files! (AddCharset shift_jis html)
use constant CONVERT_CHARSETS => 1; # Do character set conversions internally
#use constant TRIM_METHOD => 0; # Which threads to trim (0: oldest - like futaba 1: least active - furthest back)
#use constant ARCHIVE_MODE => 0; # Old images and posts are moved into an archive dir instead of deleted (0: no 1: yes). It is HIGHLY RECOMMENDED you use TRIM_METHOD => 1 with this, or you may end up with unreferenced pictures in your archive
#use constant DATE_STYLE => 'futaba'; # Date style ('futaba', '2ch', 'localtime', 'tiny')
#use constant DISPLAY_ID => ''; # How to display user IDs (0 or '': don't display,
# 'day' and 'board' in any combination: make IDs change for each day or board,
# 'mask': display masked IP address (similar IPs look similar, but are still encrypted)
# 'sage': don't display ID when user sages, 'link': don't display ID when the user fills out the link field,
# 'ip': display user's IP, 'host': display user's host)
#use constant DISPLAY_ID => 0; # Display user IDs (0: never, 1: if no email, 2:always)
#use constant EMAIL_ID => 'Heaven'; # ID string to use when DISPLAY_ID is 1 and the user uses an email.
#use constant TRIPKEY => '!'; # this character is displayed before tripcodes
#use constant ENABLE_WAKABAMARK => 1; # Enable WakabaMark formatting. (0: no, 1: yes)
#use constant APPROX_LINE_LENGTH => 150; # Approximate line length used by reply abbreviation code to guess at the length of a reply.
#use constant STUPID_THUMBNAILING => 0; # Bypass thumbnailing code and just use HTML to resize the image. STUPID, wastes bandwidth. (1: enable, 0: disable)
#use constant ALTERNATE_REDIRECT => 0; # Use alternate redirect method. (javascript/meta-refresh instead of HTTP forwards. Needed to run on certain servers, like IIS.)
#use constant COOKIE_PATH => 'root'; # Path argument for cookies ('root': cookies apply to all boards on the site, 'current': cookies apply only to this board, 'parent': cookies apply to all boards in the parent directory)
#use constant FORCED_ANON => 0; # Force anonymous posting (0: no, 1: yes)
#use constant USE_XHTML => 1; # Send pages as application/xhtml+xml to browsers that support this (0:no, 1:yes)
#use constant SPAM_TRAP => 1; # Enable the spam trap (empty, hidden form fields that spam bots usually fill out) (0:no, 1:yes)
# Internal paths and files - might as well leave this alone.
#use constant IMG_DIR => 'src/'; # Image directory (needs to be writeable by the script)
#use constant THUMB_DIR => 'thumb/'; # Thumbnail directory (needs to be writeable by the script)
#use constant RES_DIR => 'res/'; # Reply cache directory (needs to be writeable by the script)
#use constant ARCHIVE_DIR => 'arch/'; # Root of archive directories (all need to be writeable by the script)
#use constant REDIR_DIR => 'redir/'; # Redir directory, used for redirecting clients when load balancing
#use constant HTML_SELF => 'wakaba.html'; # Name of main html file
#use constant JS_FILE => 'wakaba.js'; # Location of the js file
#use constant PAGE_EXT => '.html'; # Extension used for board pages after first
#use constant SPOILER_IMAGE => 'extras/icons/spoiler.png'; # Path to image spoilers image
#use constant ERRORLOG => ''; # Writes out all errors seen by user, mainly useful for debugging
#use constant CONVERT_COMMAND => 'convert'; # location of the ImageMagick convert command (usually just 'convert', but sometime a full path is needed)
##use constant CONVERT_COMMAND => '/usr/X11R6/bin/convert';
#use constant SPAM_FILES => ('spam.txt'); # Spam definition files, as a Perl list.
# Hints: * Set all boards to use the same file for easy updating.
# * Set up two files, one being the official list from
# http://wakaba.c3.cx/antispam/spam.txt, and one your own additions.
# Icons for filetypes - file extensions specified here will not be renamed, and will get icons
# (except for the built-in image formats). These example icons can be found in the extras/ directory.
#use constant FILETYPES => (
# # Audio files
# mp3 => 'icons/audio-mp3.png',
# ogg => 'icons/audio-ogg.png',
# aac => 'icons/audio-aac.png',
# m4a => 'icons/audio-aac.png',
# mpc => 'icons/audio-mpc.png',
# mpp => 'icons/audio-mpp.png',
# mod => 'icons/audio-mod.png',
# it => 'icons/audio-it.png',
# xm => 'icons/audio-xm.png',
# fla => 'icons/audio-flac.png',
# flac => 'icons/audio-flac.png',
# sid => 'icons/audio-sid.png',
# mo3 => 'icons/audio-mo3.png',
# spc => 'icons/audio-spc.png',
# nsf => 'icons/audio-nsf.png',
# # Archive files
# zip => 'icons/archive-zip.png',
# rar => 'icons/archive-rar.png',
# lzh => 'icons/archive-lzh.png',
# lha => 'icons/archive-lzh.png',
# gz => 'icons/archive-gz.png',
# bz2 => 'icons/archive-bz2.png',
# '7z' => 'icons/archive-7z.png',
# # Other files
# swf => 'icons/flash.png',
# torrent => 'icons/torrent.png',
# # To stop Wakaba from renaming image files, put their names in here like this:
gif => '.',
jpg => '.',
png => '.',
bmp => '.',
#);
# no encoding; # Uncomment this if you uncommented the "use encoding" at the top of the file
1;
strings_en.pl это языковой файл (strings_ru/strings_de/strings_jp) русский приведён ниже
use utf8;
use constant S_HOME => 'На главную';
use constant S_ADMIN => 'Админка';
use constant S_RETURN => 'Назад';
use constant S_POSTING => 'Ответ';
use constant S_NAME => 'Имя';
use constant S_EMAIL => 'E-mail';
use constant S_SUBJECT => 'Sage';
use constant S_SUBMIT => 'Отправить';
use constant S_COMMENT => 'Комментарий';
use constant S_UPLOADFILE => 'Файл';
use constant S_NOFILE => 'Нет файла';
use constant S_CAPTCHA => 'Подтверждение';
use constant S_PARENT => 'Родительский';
use constant S_DELPASS => 'Пароль';
use constant S_DELEXPL => '(Чтобы удалить файл или пост)';
use constant S_SPAMTRAP => 'Оставьте эти поля пустыми (спам-ловушки): ';
use constant S_THUMB => 'Показана уменьшенная копия, оригинал по клику.';
use constant S_HIDDEN => 'Скрытая миниатюра, оригинал по клику.';
use constant S_NOTHUMB => 'Не
миниатюрами';
use constant S_PICNAME => 'Файл: ';
use constant S_REPLY => 'Ответить';
use constant S_OLD => 'Помечено для удаления (старый).';
use constant S_ABBR => '%d Сообщения скрыты. Нажмите Ответить для просмотра.';
use constant S_ABBRIMG => '%d сообщений и %d изображений скрыто. Нажмите Ответить для просмотра.';
use constant S_ABBRTEXT => 'Комментарий слишком длинный. Нажмите здесь чтобы увидеть полный текст.';
use constant S_REPDEL => 'Удалить пост ';
use constant S_DELPICONLY => 'Только файл';
use constant S_DELKEY => 'Пароль ';
use constant S_DELETE => 'Удалить';
use constant S_PREV => 'Предыдущая';
use constant S_FIRSTPG => 'Предыдущая';
use constant S_NEXT => 'Следующая';
use constant S_LASTPG => 'Следующая';
use constant S_WEEKDAYS => ('Вс','Пн','Вт','Ср','Чт','Пт','Сб');
use constant S_MANARET => 'Назад';
use constant S_MANAMODE => 'Админка';
use constant S_MANALOGIN => 'Логин';
use constant S_ADMINPASS => 'Пароль:';
use constant S_MANAPANEL => 'Список тредов';
use constant S_MANABANS => 'Баны/Список';
use constant S_MANAPROXY => 'Панель Прокси';
use constant S_MANASPAM => 'Спам';
use constant S_MANASQLDUMP => 'SQL Дамп';
use constant S_MANASQLINT => 'SQL Интерфэйс';
use constant S_MANAPOST => 'Пост админа';
use constant S_MANAREBUILD => 'Пересобрать кэш';
use constant S_MANANUKE => 'Уничтожить доску';
use constant S_MANALOGOUT => 'Выход';
use constant S_MANASAVE => 'Запомнить меня на этом компьютере';
use constant S_MANASUB => 'Вперёд!';
use constant S_NOTAGS => 'HTML теги разрешены. Форматирование произведено не будет, Вы должны использовать HTML-теги для разрывов линий и параграфов.';
use constant S_MPDELETEIP => 'Удалить всё';
use constant S_MPDELETE => 'Удалить';
use constant S_MPARCHIVE => 'Архив';
use constant S_MPRESET => 'Перезагрузить';
use constant S_MPONLYPIC => 'Только файл';
use constant S_MPDELETEALL => 'Del all';
use constant S_MPBAN => 'Бан';
use constant S_MPTABLE => '
'
use constant S_IMGSPACEUSAGE => '[ Использовано места на диске: %d KB ]';
use constant S_BANTABLE => '
use constant S_BANIPLABEL => 'IP';
use constant S_BANMASKLABEL => 'Маска';
use constant S_BANCOMMENTLABEL => 'Коментарий';
use constant S_BANWORDLABEL => 'Текст';
use constant S_BANIP => 'Бан поIP';
use constant S_BANWORD => 'Бан по тексту';
use constant S_BANWHITELIST => 'Список';
use constant S_BANREMOVE => 'Удалить';
use constant S_BANCOMMENT => 'Коментарий';
use constant S_BANTRUST => 'Без капчи';
use constant S_BANTRUSTTRIP => 'Трипкод';
use constant S_PROXYTABLE => '
use constant S_PROXYIPLABEL => 'IP';
use constant S_PROXYTIMELABEL => 'Секунд жизни';
use constant S_PROXYREMOVEBLACK => 'Удалить';
use constant S_PROXYWHITELIST => 'Список';
use constant S_PROXYDISABLED => 'Обнаружение Прокси в настоящее время отключено в конфигурации.';
use constant S_BADIP => 'Плохое значение IP';
use constant S_SPAMEXPL => 'Этот список доменных имен вакабы считает спамом.
'.
'Вы можете найти более новый вариант тут, '.
'или вы можете получить
spam.txt
дирректория файла тут.';use constant S_SPAMSUBMIT => 'Сохранить';
use constant S_SPAMCLEAR => 'Очистить';
use constant S_SPAMRESET => 'Обновить';
use constant S_SQLNUKE => 'Пароль уничтожения:';
use constant S_SQLEXECUTE => 'Выполнить';
use constant S_TOOBIG => 'Это изображение слишком велико. Добавь что-то поменьше.';
use constant S_TOOBIGORNONE => 'Либо это изображение слишком велико либо изображения нет вообще. Такие дела.';
use constant S_REPORTERR => 'Ошибка: не удается найти ответ.';
use constant S_UPFAIL => 'Ошибка: Сбой при загрузке.';
use constant S_NOREC => 'Ошибка: Не удается найти запись.';
use constant S_NOCAPTCHA => 'Ошибка: Капча протухла, so slow';
use constant S_BADCAPTCHA => 'Ошибка: Неверно введена капча';
use constant S_BADFORMAT => 'Ошибка: Формат файла не поддерживается.';
use constant S_STRREF => 'Ошибка: строка отклонена.';
use constant S_UNJUST => 'Ошибка: неверное сообщение.';
use constant S_NOPIC => 'Ошибка: Файл не выбран. Вы забыли нажать на кнопку "Ответить"?';
use constant S_NOTEXT => 'Ошибка: Нет комментариев';
use constant S_TOOLONG => 'Ошибка: Слишком много символов в текстовом поле.';
use constant S_NOTALLOWED => 'Ошибка: Ваше сообшение проходит премодерацию. ожидайте.';
use constant S_UNUSUAL => 'Ошибка: Неверный ответ.';
use constant S_BADHOST => 'Ошибка: хост забанен.';
use constant S_BADHOSTPROXY => 'Ошибка: прокси забанен.';
use constant S_RENZOKU => 'Ошибка: Обнаружен флуд, сообщение отклонено.';
use constant S_RENZOKU2 => 'Ошибка: Обнаружен флуд, файл отклонён.';
use constant S_RENZOKU3 => 'Ошибка: Обнаружен флуд.';
use constant S_PROXY => 'Ошибка: Обнаружена открытая прокси.';
use constant S_DUPE => 'Ошибка: Этот файл уже размещен тут.';
use constant S_DUPENAME => 'Ошибка: файл с таким же именем уже существует.';
use constant S_NOTHREADERR => 'Ошибка: темы не существует.';
use constant S_BADDELPASS => 'Ошибка: Неверный пароль для удаления.';
use constant S_WRONGPASS => 'Ошибка: Неверный пароль.';
use constant S_VIRUS => 'Ошибка: Возможно зараженный вирусом файл.';
use constant S_NOTWRITE => 'Ошибка: не удалось записать в директорию.';
use constant S_SPAM => 'Спамерам здесь не рады.';
use constant S_SQLCONF => 'Ошибка подключения к SQL';
use constant S_SQLFAIL => 'Критическая ошибка SQL';
use constant S_REDIR => 'Если редирект не работает, пожалуйста выберете одно из следующих зеркал:';
use constant S_GOTO => 'Перейти к';
use constant S_GOTO_BOARD => 'доске';
use constant S_GOTO_THREAD => 'треду';
use constant S_IMG_SPOILER => 'Спойлер';
1;
Nginx и Apache
Пример конфига Nginx`a, проксирующего на Apache
Nginx:
server {
listen 80;
server_name desuchan.ru;
access_log /var/log/nginx/all.access.log;
location / {
#limit_conn pervhost 30;
proxy_pass http://127.0.0.1:800;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-for $remote_addr;
}
}
Apache
ServerAdmin [email protected]
DocumentRoot /var/www/desuchan
ServerName desuchan.ru
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
wakaba_3.0.9.zip [176.13 Kb] (cкачиваний: 382)
MD5: 72b483c629a7bf36eaac689bdd1e9796
MD5: 72b483c629a7bf36eaac689bdd1e9796