Go to file
0chan 4e373ddfe8 fix read.php syntax 2023-04-22 20:10:46 +00:00
UTIL User validation (manual with db at this point) 2023-02-09 19:16:40 +06:00
captcha Initial commit 2014-04-28 22:30:10 +06:00
css Smaileys and sayers image gallery 2023-01-29 16:38:25 +05:00
dwoo Uploading files of any type 2023-01-28 20:04:53 +05:00
fav Initial commit 2014-04-28 22:30:10 +06:00
images Soundcloud logo & .png icons optimization 2020-01-31 15:33:50 +03:00
inc User validation (manual with db at this point) 2023-02-09 19:16:40 +06:00
lib Update getid3 library 2023-02-04 21:07:39 +05:00
pages Remove legacy AYAH require 2016-06-19 19:46:49 +05:00
.gitignore And another 2020-06-20 20:09:23 +03:00
.htaccess fix MIME bullshit in Firefox 2014-07-29 09:00:54 +06:00
README.md Saner installaton instructions 2022-01-03 12:18:53 +05:00
banned.php Introducing IP-less mode, global new thread delay 2018-05-28 20:46:07 +05:00
blotter.php Initial commit 2014-04-28 22:30:10 +06:00
board.php Security features 2023-02-09 18:26:36 +06:00
captcha.php Security features 2023-02-09 18:26:36 +06:00
clear.gif Initial commit 2014-04-28 22:30:10 +06:00
config.php User validation (manual with db at this point) 2023-02-09 19:16:40 +06:00
expand.php Complete removal of text, oekaki & upload board types 2018-03-31 18:32:55 +03:00
favicon.ico Initial commit 2014-04-28 22:30:10 +06:00
getpage.php CF proxy IP forwarding + Overboard regeneration check 2023-02-09 18:33:36 +06:00
getpreferredstylesheet.php Faster getpreferredstylesheet with custom style support and no dependencies 2020-06-02 22:24:32 +05:00
index.php Eliminate some more Notice-level PHP errors 2022-01-06 16:22:24 +05:00
instance-config.php.example Fix youtube thumbnails, add youtube-dl support 2022-01-03 00:43:52 +05:00
kusaba.php Initial commit 2014-04-28 22:30:10 +06:00
license.txt Initial commit 2014-04-28 22:30:10 +06:00
manage.php Replace external JQuery links with internal ones 2017-08-11 19:15:37 +03:00
manage_menu.php [⚠️SECURITY] Staff rights changes 2018-05-24 19:46:15 +05:00
manage_page.php Replace AYAH with build-in captcha 2016-03-27 17:35:12 +05:00
menu.php Initial commit 2014-04-28 22:30:10 +06:00
modlog.php CF proxy IP forwarding + Overboard regeneration check 2023-02-09 18:33:36 +06:00
newpostscount.php Fixed unprefixed newpostcount 2015-12-15 22:04:57 +05:00
news.php News/Faq/Rules in frames are back 2015-11-04 15:25:03 +05:00
nojscaptcha.php Eliminate some Notice-level PHP errors 2022-01-03 17:35:16 +05:00
nrand.php Fix captcha bug caused by different decimal point in some environments 2018-07-11 22:03:18 +05:00
ntp.php Time synchronization for TTL 2019-03-01 20:35:41 +05:00
postbynumber.php Whitespace purge 2018-05-02 17:36:50 +05:00
read.php fix read.php syntax 2023-04-22 20:10:46 +00:00
setstylesheet.php Eliminate some Notice-level PHP errors 2022-01-03 17:35:16 +05:00
tripinfo.php Fix for "Use of undefined constant" 2018-03-31 13:09:47 +03:00
youarebanned.jpg Scale up youare(not)banned 2018-02-01 22:01:01 +03:00
youarenotbanned.jpg Scale up youare(not)banned 2018-02-01 22:01:01 +03:00

README.md

Instant 0chan

Instant 0chan

Набор для быстрого развертывания нульчана на движке, использовавшемся на Nullch.org (форк Kusaba X).

Функции

  • Пользовательские доски (2.0чан) с максимальной свободой действий:
    • Полноценная модерация
    • Кастомные стили для досок
    • Раздельные спамлисты для каждой из досок
    • Автозамена
    • Баннеры
  • Мгновенное обновление тредов Временно не работает
  • Исправлены баги Kusaba X
  • Добавлены собственные баги
  • Главная страница на HTML5 с возможностью кастомизации
  • Полная совместимость с куклоскриптом
  • Тач-интерфейс (с превью по клику)
  • Подсветка кода
  • LaTEX
  • Эмбеды Youtube, Vimeo и Coub, не нагружающие страницу
  • Баннеры
  • Кириллическая протухающая капча с генератором произносимых слов
  • Улучшенный парсинг
  • Фильтры флуда и спама, детектирующие замену букв
  • Дайсы, useragent, катриболы
  • Множество улучшений в клиентском и серверном коде
  • Полный набор нульчановских досок в комплекте
  • Поддержка неограниченного количества вложений в постах

Выпилено

  • Watched threads (через эту фичу можно было досить Kusaba X)
  • Типы досок "Upload", "Оэкаки" и "Рисовач". Полностью и безвозвратно.

Требования

Для базового функционала

  • Apache
  • PHP (Поддерживается в том числе PHP7 и скорее всего PHP 7.1)
  • MySQL

Особых требований к версиям нет, должно встать на среднестатичтический виртуальный хостинг. Читайте ошибки, если что-то не заработает. Теоретически возможна работа с базами SQLite и PostgreSQL, но это не тестировалось, и дампы базы данных для них еще нужно написать. Вместо Apache можно использовать Nginx.

Для расширенного функционала

  • PHP 5.3+ (для 2.0 и мгновенных обновлений)
  • Node.JS (для мгновенных обновлений)
  • Cloudflare или GeoIP (для кантриболлов)
  • FFMpeg (для WEBM)

Установка

Конфигурация

config.php

Файл config.php в корневой папке содержит основную конфигурацию, которую нужно выполнить в первую очередь. Конфигурация же при этом выполняется в instance-config.php. Для редактирования настроек из config.php необходимо скопировать туда нужные строчки.

  • KU_DBTYPE (=mysqli): тип базы данных
  • KU_DBHOST, KU_DBDATABASE, KU_DBUSERNAME, KU_DBPASSWORD: данные для доступа к БД.
  • KU_NAME: название сайта.
  • KU_SLOGAN: слоган сайта.
  • KU_WEBFOLDER: подпапка кусабы на вашем сайте, если она лежит не в корне. (Например, для http://example.com/board/b KU_WEBFOLDER = "/board/").
  • KU_LIVEUPD_ENA (true | false): включает/выключает мгновенные обновления. Смотри "Настройка мгновенных обновлений" ниже.
  • KU_CSSVER, KU_CSSVER (любая строка): версии CSS и JS, отдаваемые клиенту. При внесении изменений в CSS или JS, рекомендуется инкрементировать версию и пересобрать все файлы.
  • KU_CAPTCHALIFE (число): время жизни капчи в секундах.
  • KU_20_BOARDSLIMIT (число): сколько досок может иметь пользователь 2.0-ча.
  • KU_20_CLOUDTIME (strtotime-совместимая строка со знаком минус): период времени, за который подсчитываются посты на 2.0 досках при сортировке.
  • KU_USERAGENT_ENABLED: список досок, на которых работает ##useragent##

Дополнительно

  • При необходимости добавьте содержимое UTIL/nginx.snippets.conf в ваш файл конфигурации хоста nginx.

Процесс установки

  • Убедитесь, что база данных, указанная в конфигурации, создана.
  • Убедитесь, что файл instance-config.php.example переименован в instance-config.php и отредактирован должным образом.
  • Скопируйте install.php, install-mysql.php и kusaba_freshinstall.mysql.php из папки UTIL в корневую папку.
  • Запустите install.php. После проверки доступности базы данных вам предложат импортировать данные в базу.
  • После дампа базы данных введите логин и пароль администратора.
  • Удалите файлы, скопированные из папки UTIL.

Треки с главной страницы

Треки не включены в репозиторий; скачать их можно отсюда. Скопируйте их в /pages/loops/.

Установка мгновенных обновлений

Данный функционал давно не обновлялся и скорее всего работать не будет. Это ненадолго.

  • Скопируйте содержимое util/updates в папку, в которой собираетесь запускать Node.js.
  • Находясь в этой папке, выполните "npm install".
  • Введите имя сайта (sitename) и соответствующую ему случайную строку (srvtoken). Присвойте это же значение $cf['KU_LIVEUPD_SITENAME'], $cf['KU_LIVEUPD_SRVTOKEN'] в config.php.
  • Задайте порт и IP (node_port, node_ip), на которых будет работать процесс node. Внесите эти значения в config.php в форме URL (KU_LOCAL_LIVEUPD_API и KU_CLI_LIVEUPD_API). Если сервис обновлений будет работать на субдомене, но вместо IP в качестве KU_CLI_LIVEUPD_API введите этот субдомен.
  • Запустите процесс node updates.js.
    • Для стабильной работы node.js в продакшене нужно воспользоваться одним из способов по демонизации и мониторингу этого процесса. Наилучшим способом является systemd.
  • Активируйте фичу (в config.php: KU_LIVEUPD_ENA = true).
  • Пересоберите все файлы и папки.

Кастомизация

  • Логотипы сайта и 2.0-ча располагаются в папке /images/.
  • Для редактирования паттерна на главной странице выполните команду editmode(); из консоли браузера на главной странице. Нарисуйте нужный паттерн и нажмите "Получить паттерн". Скопируйте паттерн и размеры паттерна в /pages/patterns/main.php (или другой файл).
  • Данные для доната располагаются в /pages/contents/donate.php. По умолчанию там указаны кошельки ЕФГ.
  • Чтобы добавить собственные лупы на главную, их нужно скопировать в /pages/loops/, после чего внести в список loops в /pages/index.js. Файлы должны быть в формате OGG.

Управление сайтом

manage.php

  • Derp

Управление версиями и кэшем

  • Возможно обновление сайта с помощью git, если в движок не вносились никакие изменения. Просто запустите git pull.
  • При обновении движка на новую версию бывает необходимо обновить БД. Смотрите лог коммитов и соответствующие SQL-файлы в папке UTIL.
  • При изменении CSS или JS файлов рекомендуется инкрементировать KU_CSSVER и KU_JSVER в файле config.php после чего пересобирать все файлы.
  • При изменении других файлов, если вы используете Cloudflare, необходимо вручную удалить файл из кэша. Если вы не уверены, что пользователям отдается свежая версия ресурсов или если что-то пошло не так, очищайте кэш Cloudflare полностью.

TODO

  • Дописать README (лол)
  • Удостовериться в правильности работы мгновенных обновлений
  • Починить перенос тредов
  • Починить или выпилить KU_FIRSTLAST