init 4chan
This commit is contained in:
commit
c850337f1e
390 changed files with 195936 additions and 0 deletions
109
Rakefile
Normal file
109
Rakefile
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
require 'rake/testtask'
|
||||||
|
require 'uglifier'
|
||||||
|
require 'openssl'
|
||||||
|
require 'json'
|
||||||
|
require 'open3'
|
||||||
|
require 'fileutils'
|
||||||
|
|
||||||
|
Encoding.default_external = 'UTF-8'
|
||||||
|
|
||||||
|
include Rake
|
||||||
|
|
||||||
|
def minify_js(basename)
|
||||||
|
root = 'js'
|
||||||
|
|
||||||
|
u = Uglifier.new(
|
||||||
|
:harmony => true
|
||||||
|
#screw_ie8: true,
|
||||||
|
#source_map: {
|
||||||
|
# source_filename: "#{basename}#{version}.js",
|
||||||
|
# output_filename: "#{basename}.min#{version}.js"
|
||||||
|
#}
|
||||||
|
)
|
||||||
|
|
||||||
|
js, sm = u.compile_with_map(File.read("#{root}/#{basename}.js"))
|
||||||
|
|
||||||
|
#hash = OpenSSL::Digest::MD5.hexdigest(sm)[0,8]
|
||||||
|
#js << "\n//# sourceMappingURL=#{basename}.min.map?#{hash}"
|
||||||
|
|
||||||
|
out = if (basename =~ /-unminified$/)
|
||||||
|
"#{root}/#{basename.sub(/-.+$/, '')}.js"
|
||||||
|
else
|
||||||
|
"#{root}/#{basename}.min.js"
|
||||||
|
end
|
||||||
|
|
||||||
|
File.open(out, 'w') { |f| f.write js }
|
||||||
|
#File.open("#{root}/#{basename}.min.map", 'w') { |f| f.write sm }
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'Minify JavaScript and generate source maps'
|
||||||
|
task :minify, [:js] do |t, args|
|
||||||
|
puts "Compiling #{args[:js]}.js"
|
||||||
|
minify_js(args[:js])
|
||||||
|
end
|
||||||
|
|
||||||
|
task :jshint, [:js] do |t, args|
|
||||||
|
root = 'js'
|
||||||
|
|
||||||
|
basename = args[:js]
|
||||||
|
|
||||||
|
if !basename
|
||||||
|
abort 'File not found.'
|
||||||
|
end
|
||||||
|
|
||||||
|
file = "#{root}/#{basename}.js"
|
||||||
|
|
||||||
|
if !File.exist?(file)
|
||||||
|
abort 'File not found.'
|
||||||
|
end
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
laxbreak: true,
|
||||||
|
esversion: 6,
|
||||||
|
boss: true,
|
||||||
|
expr: true,
|
||||||
|
sub: true,
|
||||||
|
browser: true,
|
||||||
|
devel: true,
|
||||||
|
strict: 'implied',
|
||||||
|
multistr: true,
|
||||||
|
scripturl: true,
|
||||||
|
unused: 'vars',
|
||||||
|
evil: true,
|
||||||
|
'-W079' => true # no-native-reassign
|
||||||
|
}
|
||||||
|
|
||||||
|
opts[:globals] = Hash[[
|
||||||
|
'$', '$L', 'Chart', 'Feedback', 'Tip', 'APP', 'Tegaki', 'MathJax', 'Main', 'UA',
|
||||||
|
'Draggable', 'Config', 'Parser', 'ThreadUpdater', 'SettingsMenu', 'QR', 'FC',
|
||||||
|
'grecaptcha', 'Recaptcha', 'ados_refresh', 'style_group', 'StickyNav',
|
||||||
|
'PostMenu', 'StorageSync', 'OGVPlayer', 'TCaptcha'
|
||||||
|
].collect { |v| [v, false] }]
|
||||||
|
|
||||||
|
cfg_path = 'tmp_jshint.json'
|
||||||
|
|
||||||
|
File.write(cfg_path, opts.to_json)
|
||||||
|
|
||||||
|
puts "--> #{file}"
|
||||||
|
output, outerr, status = Open3.capture3('jshint', file, '--config', cfg_path)
|
||||||
|
puts output
|
||||||
|
|
||||||
|
FileUtils.rm(cfg_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
namespace :concat do
|
||||||
|
desc 'Concatenate painter.js files'
|
||||||
|
task :painter do
|
||||||
|
puts 'Building painter.js'
|
||||||
|
|
||||||
|
root = 'js'
|
||||||
|
out_file = "#{root}/painter.js"
|
||||||
|
js = []
|
||||||
|
|
||||||
|
['tegaki.js', 'painter-strings.js'].each do |file|
|
||||||
|
js << File.binread("#{root}/#{file}")
|
||||||
|
end
|
||||||
|
|
||||||
|
File.binwrite(out_file, js.join("\n"))
|
||||||
|
end
|
||||||
|
end
|
4447
admin-test.php
Normal file
4447
admin-test.php
Normal file
File diff suppressed because it is too large
Load diff
422
auth-test.php
Normal file
422
auth-test.php
Normal file
|
@ -0,0 +1,422 @@
|
||||||
|
<?php
|
||||||
|
die();
|
||||||
|
define('IS_4CHANNEL', preg_match('/(^|\.)4channel.org$/', $_SERVER['HTTP_HOST']));
|
||||||
|
|
||||||
|
if (IS_4CHANNEL) {
|
||||||
|
define('THIS_DOMAIN', '4channel.org');
|
||||||
|
define('OTHER_DOMAIN', '4chan.org');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
define('THIS_DOMAIN', '4chan.org');
|
||||||
|
define('OTHER_DOMAIN', '4channel.org');
|
||||||
|
}
|
||||||
|
|
||||||
|
define('PASS_TIMEOUT', 900); // 15 minutes
|
||||||
|
define('LOGIN_FAIL_HOURLY', 5);
|
||||||
|
|
||||||
|
require_once 'lib/db.php';
|
||||||
|
require_once 'lib/geoip2.php';
|
||||||
|
|
||||||
|
class App {
|
||||||
|
protected
|
||||||
|
// Routes
|
||||||
|
$actions = array(
|
||||||
|
'index'
|
||||||
|
),
|
||||||
|
|
||||||
|
$is_xhr = false
|
||||||
|
;
|
||||||
|
|
||||||
|
const VIEW_TPL = 'views/pass_auth.tpl.php';
|
||||||
|
|
||||||
|
const PASS_TABLE = 'pass_users';
|
||||||
|
|
||||||
|
const
|
||||||
|
AUTH_NO = 0,
|
||||||
|
AUTH_SUCCESS = 1,
|
||||||
|
AUTH_YES = 2,
|
||||||
|
AUTH_ERROR = -1,
|
||||||
|
AUTH_OUT = 4
|
||||||
|
;
|
||||||
|
|
||||||
|
const
|
||||||
|
ERR_BAD_REQUEST = 'Bad Request.',
|
||||||
|
ERR_GENERIC = 'Internal Server Error (%s)',
|
||||||
|
ERR_FLOOD = 'You have to wait a while before attempting this again.',
|
||||||
|
ERR_EMPTY_FIELD = 'You have left one or more fields blank.',
|
||||||
|
ERR_TOKEN_LEN = 'Your Token must be exactly 10 characters.',
|
||||||
|
ERR_DB = 'We are currently having database issues. Please try again later.',
|
||||||
|
ERR_BAD_AUTH = 'Incorrect Token or PIN.',
|
||||||
|
ERR_IN_USE = 'This Pass is already in use by another IP. Please wait %s and re-authorize by visiting this page again to change IPs.',
|
||||||
|
ERR_EXPIRED = 'This Pass has expired. Please visit <a href="https://www.4chan.org/pass.php?renew=%s">this page</a> to renew it.', // status 1
|
||||||
|
ERR_REFUNDED = 'This Pass has been refunded and disabled. You cannot use it anymore.', // status 2
|
||||||
|
ERR_DISPUTED = 'This Pass has a disputed payment. You cannot use it until the dispute is resolved.', // status 3
|
||||||
|
ERR_REVOKED_SPAM = 'This Pass has been revoked due to spamming, which is a violation of the <a href="https://www.4chan.org/pass#termsofuse">Terms of Use</a>.', // status 4
|
||||||
|
ERR_REVOKED_ILLEGAL = 'This Pass has been revoked due to illegal content being posted, which is a violaton of the <a href="https://www.4chan.org/pass#termsofuse">Terms of Use</a>.' // status 5
|
||||||
|
;
|
||||||
|
|
||||||
|
private function error($msg) {
|
||||||
|
$this->renderResponse(self::AUTH_ERROR, $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderResponse($status, $msg = null) {
|
||||||
|
if ($this->is_xhr) {
|
||||||
|
header('Content-type: application/json');
|
||||||
|
echo json_encode(array('status' => $status, 'message' => $msg));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->auth_status = $status;
|
||||||
|
$this->message = $msg;
|
||||||
|
require_once(self::VIEW_TPL);
|
||||||
|
}
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function pretty_duration($sec) {
|
||||||
|
$duration = '';
|
||||||
|
|
||||||
|
$hours = (int)($sec / 3600);
|
||||||
|
$minutes = (int)($sec / 60);
|
||||||
|
|
||||||
|
if ($hours) {
|
||||||
|
$duration .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ' hour';
|
||||||
|
|
||||||
|
if ($hours != 1) {
|
||||||
|
$duration .= 's';
|
||||||
|
}
|
||||||
|
|
||||||
|
$duration .= ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($minutes) {
|
||||||
|
$minutes = (int)(($sec / 60) % 60);
|
||||||
|
|
||||||
|
$duration .= str_pad($minutes, 2, '0', STR_PAD_LEFT). ' minute';
|
||||||
|
|
||||||
|
if ($minutes != 1) {
|
||||||
|
$duration .= 's';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$seconds = intval($sec % 60);
|
||||||
|
|
||||||
|
return $duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_csrf_token() {
|
||||||
|
return bin2hex(openssl_random_pseudo_bytes(16));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_referer() {
|
||||||
|
if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] === '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/^https:\/\/sys\.(4chan|4channel)\.org(\/|$)/', $_SERVER['HTTP_REFERER'])) {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_csrf() {
|
||||||
|
if (!isset($_COOKIE['csrf']) || !isset($_POST['csrf'])
|
||||||
|
|| $_COOKIE['csrf'] === '' || $_POST['csrf'] === '') {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_COOKIE['csrf'] !== $_POST['csrf']) {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_auth_flood($long_ip) {
|
||||||
|
if (!$long_ip) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "SELECT COUNT(ip) FROM user_actions WHERE ip = $long_ip AND action = 'fail_pass_auth' AND time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)";
|
||||||
|
|
||||||
|
$res = mysql_global_call($query);
|
||||||
|
|
||||||
|
if (!$res) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = (int)mysql_fetch_row($res)[0];
|
||||||
|
|
||||||
|
if ($count >= LOGIN_FAIL_HOURLY) {
|
||||||
|
$this->error(self::ERR_FLOOD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function register_auth_failure($long_ip) {
|
||||||
|
if (!$long_ip) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "INSERT INTO user_actions (ip, board, action, time) VALUES(%d, '', 'fail_pass_auth', NOW())";
|
||||||
|
$res = mysql_global_call($query, $long_ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function convert_new_pass_status($user_hash, $hashed_pin) {
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET pin = '%s', status = 0 WHERE user_hash = '%s' AND status = 6 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $hashed_pin, $user_hash);
|
||||||
|
|
||||||
|
$this->set_cookie('pass_email', '', -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function convert_delayed_pass_status($user_hash, $hashed_pin) {
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET pin = '%s', status = 0, expiration_date = NOW() + INTERVAL 1 YEAR WHERE user_hash = '%s' AND status = 7 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $hashed_pin, $user_hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function set_cookie($name, $value, $expire, $secure = false, $http_only = false) {
|
||||||
|
setcookie($name, $value, $expire, '/', '.' . THIS_DOMAIN, $secure, $http_only);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function clear_cookies() {
|
||||||
|
$cookie_time = $_SERVER['REQUEST_TIME'] - 3600;
|
||||||
|
$this->set_cookie('pass_id', null, $cookie_time, true, true);
|
||||||
|
$this->set_cookie('pass_enabled', null, $cookie_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_random_base64bytes($length = 64) {
|
||||||
|
$data = openssl_random_pseudo_bytes($length);
|
||||||
|
|
||||||
|
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_salt() {
|
||||||
|
$salt = file_get_contents('/www/keys/2014_admin.salt');
|
||||||
|
|
||||||
|
if (!$salt) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'gs'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $salt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login
|
||||||
|
*/
|
||||||
|
private function authenticate() {
|
||||||
|
$this->validate_referer();
|
||||||
|
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$time_now = time();
|
||||||
|
|
||||||
|
// Token
|
||||||
|
if (!isset($_POST['id']) || $_POST['id'] === '') {
|
||||||
|
$this->error(self::ERR_EMPTY_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($_POST['id']) != 10) {
|
||||||
|
$this->error(self::ERR_TOKEN_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
// Pin
|
||||||
|
if (!isset($_POST['pin']) || $_POST['pin'] === '') {
|
||||||
|
$this->error(self::ERR_EMPTY_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pin = $_POST['pin'];
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
$ip = $_SERVER['REMOTE_ADDR'];
|
||||||
|
$long_ip = ip2long($ip);
|
||||||
|
|
||||||
|
$this->validate_auth_flood($long_ip);
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
$plain_pin = $pin;
|
||||||
|
$pin = crypt($pin, substr($id, 4, 9));
|
||||||
|
|
||||||
|
$query = "SELECT * FROM $table WHERE user_hash = '%s' AND (pin = '%s' OR pin = '%s') LIMIT 1";
|
||||||
|
|
||||||
|
$res = mysql_global_call($query, $id, $pin, $plain_pin);
|
||||||
|
|
||||||
|
if (!$res) {
|
||||||
|
$this->error(self::ERR_DB);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mysql_num_rows($res) !== 1) {
|
||||||
|
$this->register_auth_failure($long_ip);
|
||||||
|
$this->error(self::ERR_BAD_AUTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pass = mysql_fetch_assoc($res);
|
||||||
|
|
||||||
|
if (!$pass) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'mfa1'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$last_used = strtotime($pass['last_used']);
|
||||||
|
|
||||||
|
$last_ip_mask = ip2long($pass['last_ip']) & (~65535);
|
||||||
|
|
||||||
|
$ip_mask = $long_ip & (~65535);
|
||||||
|
|
||||||
|
if ($last_ip_mask !== 0 && ($time_now - $last_used) < PASS_TIMEOUT && $last_ip_mask != $ip_mask) {
|
||||||
|
$remaining = $this->pretty_duration(PASS_TIMEOUT - ($time_now - $last_used));
|
||||||
|
$this->error(sprintf(self::ERR_IN_USE, $remaining));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($pass['status']){
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(sprintf(self::ERR_EXPIRED, $pass['pending_id']));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REFUNDED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_DISPUTED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REVOKED_SPAM);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REVOKED_ILLEGAL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
$this->convert_new_pass_status($pass['user_hash'], $pin);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
$this->convert_delayed_pass_status($pass['user_hash'], $pin);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update country
|
||||||
|
$geo_data = GeoIP2::get_country($ip);
|
||||||
|
|
||||||
|
if ($geo_data && isset($geo_data['country_code'])) {
|
||||||
|
$country_code = mysql_real_escape_string($geo_data['country_code']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$country_code = 'XX';
|
||||||
|
}
|
||||||
|
|
||||||
|
$update_country = ", last_country = '$country_code'";
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET last_ip = '%s', last_used = NOW() $update_country WHERE user_hash = '%s' AND last_ip != '%s' AND status = 0 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $ip, $id, $ip);
|
||||||
|
|
||||||
|
// Update session id
|
||||||
|
if (!$pass['session_id']) {
|
||||||
|
$pass_session = $this->get_random_base64bytes(32);
|
||||||
|
|
||||||
|
if (!$pass_session) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'grb'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET session_id = '$pass_session' WHERE user_hash = '%s' AND status = 0 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$pass_session = $pass['session_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$admin_salt = $this->get_salt();
|
||||||
|
|
||||||
|
$hashed_pass_session = substr(hash('sha256', $pass_session . $admin_salt), 0, 32);
|
||||||
|
|
||||||
|
if (!$hashed_pass_session) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'hps'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST['long_login'])) {
|
||||||
|
$cookie_time = $time_now + 31556900;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$cookie_time = $time_now + 86400;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->set_cookie('pass_id', "$id.$hashed_pass_session", $cookie_time, true, true);
|
||||||
|
$this->set_cookie('pass_enabled', '1', $cookie_time);
|
||||||
|
|
||||||
|
$this->renderResponse(self::AUTH_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Index
|
||||||
|
*/
|
||||||
|
public function index() {
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
if (isset($_POST['logout'])) {
|
||||||
|
$this->validate_referer();
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->renderResponse(self::AUTH_OUT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $this->authenticate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_COOKIE['pass_enabled'])) {
|
||||||
|
$this->renderResponse(self::AUTH_YES);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->renderResponse(self::AUTH_NO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
|
public function run() {
|
||||||
|
$method = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;
|
||||||
|
|
||||||
|
if (isset($method['action'])) {
|
||||||
|
$action = $method['action'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$action = 'index';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($action, $this->actions)) {
|
||||||
|
if (isset($method['xhr'])) {
|
||||||
|
/*
|
||||||
|
if (isset($_SERVER['HTTP_ORIGIN']) && preg_match('/^https:\/\/sys\.(4chan|4channel)\.org$/', $_SERVER['HTTP_ORIGIN'])) {
|
||||||
|
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
|
||||||
|
header('Access-Control-Allow-Methods: OPTIONS, POST');
|
||||||
|
header('Access-Control-Allow-Credentials: true');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
$this->is_xhr = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->$action();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->error('Bad request');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ctrl = new App();
|
||||||
|
$ctrl->run();
|
451
auth.php
Normal file
451
auth.php
Normal file
|
@ -0,0 +1,451 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
define('IS_4CHANNEL', preg_match('/(^|\.)4channel.org$/', $_SERVER['HTTP_HOST']));
|
||||||
|
|
||||||
|
if (IS_4CHANNEL) {
|
||||||
|
define('THIS_DOMAIN', '4channel.org');
|
||||||
|
define('OTHER_DOMAIN', '4chan.org');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
define('THIS_DOMAIN', '4chan.org');
|
||||||
|
define('OTHER_DOMAIN', '4channel.org');
|
||||||
|
}
|
||||||
|
|
||||||
|
define('PASS_TIMEOUT', 900); // 15 minutes
|
||||||
|
define('LOGIN_FAIL_HOURLY', 5);
|
||||||
|
|
||||||
|
require_once 'lib/db.php';
|
||||||
|
require_once 'lib/geoip2.php';
|
||||||
|
|
||||||
|
class App {
|
||||||
|
protected
|
||||||
|
// Routes
|
||||||
|
$actions = array(
|
||||||
|
'index'
|
||||||
|
),
|
||||||
|
|
||||||
|
$is_xhr = false
|
||||||
|
;
|
||||||
|
|
||||||
|
const VIEW_TPL = 'views/pass_auth.tpl.php';
|
||||||
|
|
||||||
|
const PASS_TABLE = 'pass_users';
|
||||||
|
|
||||||
|
const
|
||||||
|
AUTH_NO = 0,
|
||||||
|
AUTH_SUCCESS = 1,
|
||||||
|
AUTH_YES = 2,
|
||||||
|
AUTH_ERROR = -1,
|
||||||
|
AUTH_OUT = 4
|
||||||
|
;
|
||||||
|
|
||||||
|
const
|
||||||
|
ERR_BAD_REQUEST = 'Bad Request.',
|
||||||
|
ERR_GENERIC = 'Internal Server Error (%s)',
|
||||||
|
ERR_FLOOD = 'You have to wait a while before attempting this again.',
|
||||||
|
ERR_EMPTY_FIELD = 'You have left one or more fields blank.',
|
||||||
|
ERR_TOKEN_LEN = 'Your Token must be exactly 10 characters.',
|
||||||
|
ERR_DB = 'We are currently having database issues. Please try again later.',
|
||||||
|
ERR_BAD_AUTH = 'Incorrect Token or PIN.',
|
||||||
|
ERR_IN_USE = 'This Pass is already in use by another IP. Please wait %s and re-authorize by visiting this page again to change IPs.',
|
||||||
|
ERR_EXPIRED = 'This Pass has expired. Please visit <a href="https://www.4chan.org/pass.php?renew=%s">this page</a> to renew it.', // status 1
|
||||||
|
ERR_REFUNDED = 'This Pass has been refunded and disabled. You cannot use it anymore.', // status 2
|
||||||
|
ERR_DISPUTED = 'This Pass has a disputed payment. You cannot use it until the dispute is resolved.', // status 3
|
||||||
|
ERR_REVOKED_SPAM = 'This Pass has been revoked due to spamming, which is a violation of the <a href="https://www.4chan.org/pass#termsofuse">Terms of Use</a>.', // status 4
|
||||||
|
ERR_REVOKED_ILLEGAL = 'This Pass has been revoked due to illegal content being posted, which is a violaton of the <a href="https://www.4chan.org/pass#termsofuse">Terms of Use</a>.' // status 5
|
||||||
|
;
|
||||||
|
|
||||||
|
private function error($msg) {
|
||||||
|
$this->renderResponse(self::AUTH_ERROR, $msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function renderResponse($status, $msg = null) {
|
||||||
|
if ($this->is_xhr) {
|
||||||
|
header('Content-type: application/json');
|
||||||
|
echo json_encode(array('status' => $status, 'message' => $msg));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->auth_status = $status;
|
||||||
|
$this->message = $msg;
|
||||||
|
require_once(self::VIEW_TPL);
|
||||||
|
}
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function pretty_duration($sec) {
|
||||||
|
$duration = '';
|
||||||
|
|
||||||
|
$hours = (int)($sec / 3600);
|
||||||
|
$minutes = (int)($sec / 60);
|
||||||
|
|
||||||
|
if ($hours) {
|
||||||
|
$duration .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ' hour';
|
||||||
|
|
||||||
|
if ($hours != 1) {
|
||||||
|
$duration .= 's';
|
||||||
|
}
|
||||||
|
|
||||||
|
$duration .= ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($minutes) {
|
||||||
|
$minutes = (int)(($sec / 60) % 60);
|
||||||
|
|
||||||
|
$duration .= str_pad($minutes, 2, '0', STR_PAD_LEFT). ' minute';
|
||||||
|
|
||||||
|
if ($minutes != 1) {
|
||||||
|
$duration .= 's';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$seconds = intval($sec % 60);
|
||||||
|
|
||||||
|
return $duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_csrf_token() {
|
||||||
|
return bin2hex(openssl_random_pseudo_bytes(16));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_referer() {
|
||||||
|
if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] === '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preg_match('/^https:\/\/sys\.(4chan|4channel)\.org(\/|$)/', $_SERVER['HTTP_REFERER'])) {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_csrf() {
|
||||||
|
if (!isset($_COOKIE['csrf']) || !isset($_POST['csrf'])
|
||||||
|
|| $_COOKIE['csrf'] === '' || $_POST['csrf'] === '') {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_COOKIE['csrf'] !== $_POST['csrf']) {
|
||||||
|
$this->error(self::ERR_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function validate_auth_flood($long_ip) {
|
||||||
|
if (!$long_ip) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "SELECT COUNT(ip) FROM user_actions WHERE ip = $long_ip AND action = 'fail_pass_auth' AND time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)";
|
||||||
|
|
||||||
|
$res = mysql_global_call($query);
|
||||||
|
|
||||||
|
if (!$res) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = (int)mysql_fetch_row($res)[0];
|
||||||
|
|
||||||
|
if ($count >= LOGIN_FAIL_HOURLY) {
|
||||||
|
$this->error(self::ERR_FLOOD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function register_auth_failure($long_ip) {
|
||||||
|
if (!$long_ip) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "INSERT INTO user_actions (ip, board, action, time) VALUES(%d, '', 'fail_pass_auth', NOW())";
|
||||||
|
$res = mysql_global_call($query, $long_ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function convert_new_pass_status($user_hash, $hashed_pin) {
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET pin = '%s', status = 0 WHERE user_hash = '%s' AND status = 6 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $hashed_pin, $user_hash);
|
||||||
|
|
||||||
|
$this->set_cookie('pass_email', '', -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function convert_delayed_pass_status($user_hash, $hashed_pin) {
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET pin = '%s', status = 0, expiration_date = NOW() + INTERVAL 1 YEAR WHERE user_hash = '%s' AND status = 7 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $hashed_pin, $user_hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function set_cookie($name, $value, $ttl, $secure = false, $http_only = false) {
|
||||||
|
$name = rawurlencode($name);
|
||||||
|
$value = rawurlencode($value);
|
||||||
|
|
||||||
|
$domain = '.' . THIS_DOMAIN;
|
||||||
|
|
||||||
|
$flags = array();
|
||||||
|
|
||||||
|
if ($secure) {
|
||||||
|
$flags[] = 'Secure';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($http_only) {
|
||||||
|
$flags[] = 'HttpOnly';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($flags)) {
|
||||||
|
$flags = '; ' . implode('; ', $flags);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$flags = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ttl !== 0) {
|
||||||
|
$max_age = " Max-Age=$ttl;";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$max_age = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Set-Cookie: $name=$value; Path=/;$max_age Domain=$domain; SameSite=None$flags", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function clear_cookies() {
|
||||||
|
$cookie_time = -3600;
|
||||||
|
$this->set_cookie('pass_id', '', $cookie_time, true, true);
|
||||||
|
$this->set_cookie('pass_enabled', '', $cookie_time, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_random_base64bytes($length = 64) {
|
||||||
|
$data = openssl_random_pseudo_bytes($length);
|
||||||
|
|
||||||
|
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_salt() {
|
||||||
|
$salt = file_get_contents('/www/keys/2014_admin.salt');
|
||||||
|
|
||||||
|
if (!$salt) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'gs'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $salt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login
|
||||||
|
*/
|
||||||
|
private function authenticate() {
|
||||||
|
$this->validate_referer();
|
||||||
|
|
||||||
|
$table = self::PASS_TABLE;
|
||||||
|
|
||||||
|
$time_now = time();
|
||||||
|
|
||||||
|
// Token
|
||||||
|
if (!isset($_POST['id']) || $_POST['id'] === '') {
|
||||||
|
$this->error(self::ERR_EMPTY_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($_POST['id']) != 10) {
|
||||||
|
$this->error(self::ERR_TOKEN_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = $_POST['id'];
|
||||||
|
|
||||||
|
// Pin
|
||||||
|
if (!isset($_POST['pin']) || $_POST['pin'] === '') {
|
||||||
|
$this->error(self::ERR_EMPTY_FIELD);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pin = $_POST['pin'];
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
$ip = $_SERVER['REMOTE_ADDR'];
|
||||||
|
$long_ip = ip2long($ip);
|
||||||
|
|
||||||
|
$this->validate_auth_flood($long_ip);
|
||||||
|
|
||||||
|
// ---
|
||||||
|
|
||||||
|
$plain_pin = $pin;
|
||||||
|
$pin = crypt($pin, substr($id, 4, 9));
|
||||||
|
|
||||||
|
$query = "SELECT * FROM $table WHERE user_hash = '%s' AND (pin = '%s' OR pin = '%s') LIMIT 1";
|
||||||
|
|
||||||
|
$res = mysql_global_call($query, $id, $pin, $plain_pin);
|
||||||
|
|
||||||
|
if (!$res) {
|
||||||
|
$this->error(self::ERR_DB);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mysql_num_rows($res) !== 1) {
|
||||||
|
$this->register_auth_failure($long_ip);
|
||||||
|
$this->error(self::ERR_BAD_AUTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pass = mysql_fetch_assoc($res);
|
||||||
|
|
||||||
|
if (!$pass) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'mfa1'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$last_used = strtotime($pass['last_used']);
|
||||||
|
|
||||||
|
$last_ip_mask = ip2long($pass['last_ip']) & (~65535);
|
||||||
|
|
||||||
|
$ip_mask = $long_ip & (~65535);
|
||||||
|
|
||||||
|
if ($last_ip_mask !== 0 && ($time_now - $last_used) < PASS_TIMEOUT && $last_ip_mask != $ip_mask) {
|
||||||
|
$remaining = $this->pretty_duration(PASS_TIMEOUT - ($time_now - $last_used));
|
||||||
|
$this->error(sprintf(self::ERR_IN_USE, $remaining));
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($pass['status']){
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(sprintf(self::ERR_EXPIRED, $pass['pending_id']));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REFUNDED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_DISPUTED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REVOKED_SPAM);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->error(self::ERR_REVOKED_ILLEGAL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
$this->convert_new_pass_status($pass['user_hash'], $pin);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
$this->convert_delayed_pass_status($pass['user_hash'], $pin);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update country
|
||||||
|
$geo_data = GeoIP2::get_country($ip);
|
||||||
|
|
||||||
|
if ($geo_data && isset($geo_data['country_code'])) {
|
||||||
|
$country_code = mysql_real_escape_string($geo_data['country_code']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$country_code = 'XX';
|
||||||
|
}
|
||||||
|
|
||||||
|
$update_country = ", last_country = '$country_code'";
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET last_ip = '%s', last_used = NOW() $update_country WHERE user_hash = '%s' AND last_ip != '%s' AND status = 0 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $ip, $id, $ip);
|
||||||
|
|
||||||
|
// Update session id
|
||||||
|
if (!$pass['session_id']) {
|
||||||
|
$pass_session = $this->get_random_base64bytes(32);
|
||||||
|
|
||||||
|
if (!$pass_session) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'grb'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "UPDATE $table SET session_id = '$pass_session' WHERE user_hash = '%s' AND status = 0 LIMIT 1";
|
||||||
|
|
||||||
|
mysql_global_call($query, $id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$pass_session = $pass['session_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$admin_salt = $this->get_salt();
|
||||||
|
|
||||||
|
$hashed_pass_session = substr(hash('sha256', $pass_session . $admin_salt), 0, 32);
|
||||||
|
|
||||||
|
if (!$hashed_pass_session) {
|
||||||
|
$this->error(sprintf(self::ERR_GENERIC, 'hps'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST['long_login'])) {
|
||||||
|
$cookie_time = 31556900;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$cookie_time = 86400;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->set_cookie('pass_id', "$id.$hashed_pass_session", $cookie_time, true, true);
|
||||||
|
$this->set_cookie('pass_enabled', '1', $cookie_time, true);
|
||||||
|
|
||||||
|
$this->renderResponse(self::AUTH_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Index
|
||||||
|
*/
|
||||||
|
public function index() {
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
if (isset($_POST['logout'])) {
|
||||||
|
$this->validate_referer();
|
||||||
|
$this->clear_cookies();
|
||||||
|
$this->renderResponse(self::AUTH_OUT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return $this->authenticate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_COOKIE['pass_enabled'])) {
|
||||||
|
$this->renderResponse(self::AUTH_YES);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->renderResponse(self::AUTH_NO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
|
public function run() {
|
||||||
|
$method = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;
|
||||||
|
|
||||||
|
if (isset($method['action'])) {
|
||||||
|
$action = $method['action'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$action = 'index';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($action, $this->actions)) {
|
||||||
|
if (isset($method['xhr'])) {
|
||||||
|
/*
|
||||||
|
if (isset($_SERVER['HTTP_ORIGIN']) && preg_match('/^https:\/\/sys\.(4chan|4channel)\.org$/', $_SERVER['HTTP_ORIGIN'])) {
|
||||||
|
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
|
||||||
|
header('Access-Control-Allow-Methods: OPTIONS, POST');
|
||||||
|
header('Access-Control-Allow-Credentials: true');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
$this->is_xhr = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->$action();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->error('Bad request');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ctrl = new App();
|
||||||
|
$ctrl->run();
|
0
block_resync_removed
Normal file
0
block_resync_removed
Normal file
1
boardlist.txt
Normal file
1
boardlist.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
a aco c d e f g gif h his hr k m n o p r s t u v w wg i ic cm y an cgl ck co fa fit jp mlp mu po sp tg toy trv tv x b soc r9k test adv lit int sci 3 vp diy pol hc vg hm j wsg out lgbt vr gd s4s biz qa trash news wsr qst bant vip vrpg vmg vst vt vm pw xs
|
1127
captcha-test.php
Normal file
1127
captcha-test.php
Normal file
File diff suppressed because it is too large
Load diff
1075
captcha.php
Normal file
1075
captcha.php
Normal file
File diff suppressed because it is too large
Load diff
553
catalog-test.php
Normal file
553
catalog-test.php
Normal file
|
@ -0,0 +1,553 @@
|
||||||
|
<?php
|
||||||
|
// haha i named this file catalog.php now everyone but me will find it
|
||||||
|
// awkward to type
|
||||||
|
// nvm moot is a nerd
|
||||||
|
function generate_catalog()
|
||||||
|
{
|
||||||
|
global $log;
|
||||||
|
|
||||||
|
if( !STATIC_REBUILD ) log_cache();
|
||||||
|
$catalogjson = array();
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
foreach( $log['THREADS'] as $thread ) {
|
||||||
|
catalog_thread($log[$thread], $catalogjson, $i);
|
||||||
|
++$i;
|
||||||
|
}
|
||||||
|
|
||||||
|
$catalogjson = array(
|
||||||
|
'threads' => $catalogjson,
|
||||||
|
|
||||||
|
'count' => count( $log['THREADS'] ),
|
||||||
|
'slug' => BOARD_DIR,
|
||||||
|
'anon' => S_ANONAME,
|
||||||
|
'mtime' => time(),
|
||||||
|
'pagesize' => DEF_PAGES
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!REPLIES_SHOWN && IS_REBUILDD) {
|
||||||
|
$catalogjson['no_lr'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SHOW_COUNTRY_FLAGS) {
|
||||||
|
$catalogjson['flags'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( SPOILERS ) $catalogjson['custom_spoiler'] = (int)SPOILER_NUM;
|
||||||
|
|
||||||
|
$catalogjson = json_encode( $catalogjson );
|
||||||
|
|
||||||
|
$catalog = catalog( $catalogjson );
|
||||||
|
|
||||||
|
print_page( INDEX_DIR . 'catalog.html', $catalog );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function catalog_thread($res, &$json, $pos)
|
||||||
|
{
|
||||||
|
global $log;
|
||||||
|
|
||||||
|
$reps = $res['replycount'];
|
||||||
|
$sub = $res['sub'];
|
||||||
|
|
||||||
|
$imgs = $res['imgreplycount'];
|
||||||
|
$last_reply_id = null;
|
||||||
|
$capcodelist = array();
|
||||||
|
|
||||||
|
if (TEXT_ONLY) {
|
||||||
|
$time_prop = 'now';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$time_prop = 'time';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach( $res['children'] as $reply => $unused ) {
|
||||||
|
$last_reply_id = $reply;
|
||||||
|
|
||||||
|
if( META_BOARD && $log[$reply]['capcode'] != 'none' ) {
|
||||||
|
$tCapcode = $log[$reply]['capcode'];
|
||||||
|
if( $tCapcode == 'admin_highlight' ) $tCapcode = 'admin';
|
||||||
|
|
||||||
|
if( $tCapcode != 'none' ) {
|
||||||
|
$capcodelist[$tCapcode] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($last_reply_id === null) {
|
||||||
|
$last_reply = array( 'id' => $res['no'] );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$lr_data = $log[$last_reply_id];
|
||||||
|
|
||||||
|
$last_reply = array(
|
||||||
|
'id' => $last_reply_id,
|
||||||
|
'date' => $lr_data['time']
|
||||||
|
);
|
||||||
|
|
||||||
|
if( $lr_data['capcode'] != 'none' ) $last_reply['capcode'] = $lr_data['capcode'];
|
||||||
|
|
||||||
|
$force_anon = ( ( FORCED_ANON || META_BOARD ) && $lr_data['capcode'] != 'admin' && $lr_data['capcode'] != 'admin_highlight' );
|
||||||
|
|
||||||
|
if( !$force_anon ) {
|
||||||
|
if( strpos( $lr_data['name'], '</span> <span class="postertrip">' ) !== false ) {
|
||||||
|
list( $last_reply['author'], $last_reply['trip'] ) = explode( '</span> <span class="postertrip">', $lr_data['name'] );
|
||||||
|
} else {
|
||||||
|
$last_reply['author'] = $lr_data['name'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$last_reply['author'] = S_ANONAME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$json[$res['no']] = array(
|
||||||
|
'date' => $res[$time_prop],
|
||||||
|
'file' => mb_convert_encoding($res['filename'], 'UTF-8', 'UTF-8') . $res['ext'],
|
||||||
|
'r' => $reps,
|
||||||
|
'i' => $imgs,
|
||||||
|
'lr' => $last_reply,
|
||||||
|
'b' => $pos
|
||||||
|
);
|
||||||
|
/*
|
||||||
|
if( META_BOARD && $capcodelist ) {
|
||||||
|
$json[$res['no']]['capcodereps'] = implode(',', array_keys($capcodelist));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if ($res['capcode'] == 'none') {
|
||||||
|
if (SHOW_COUNTRY_FLAGS && (!ENABLE_BOARD_FLAGS || $res['board_flag'] == '')) {
|
||||||
|
$json[$res['no']]['country'] = $res['country'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$com = $res['com'];
|
||||||
|
|
||||||
|
if( strpos( $com, 'class="abbr"' ) !== false ) {
|
||||||
|
$com = preg_replace( '#(<br>)+<span class="abbr">(.+)$#s', '', $com );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TEXT_ONLY) {
|
||||||
|
$com = preg_replace( '#(<br>)+#', ' ', $com );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$com = preg_replace( '#(<br>)+#', "\n", $com );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BOARD_DIR === 'b') { // fixme, hardcoded for now
|
||||||
|
$com = truncate_comment($com, 300, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (SJIS_TAGS) {
|
||||||
|
$com = preg_replace('/<span class="sjis".+?<\/span>/', '[SJIS]', $com);
|
||||||
|
}
|
||||||
|
$com = strip_tags($com, '<s>');
|
||||||
|
}
|
||||||
|
|
||||||
|
$has_spoilers = (bool)SPOILERS;
|
||||||
|
|
||||||
|
if (!$res['permaage'] && !$res['sticky']) {
|
||||||
|
if( $reps >= MAX_RES ) $json[$res['no']]['bumplimit'] = 1;
|
||||||
|
if( $imgs >= MAX_IMGRES ) $json[$res['no']]['imagelimit'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['sticky'] ) $json[$res['no']]['sticky'] = 1;
|
||||||
|
if( $res['closed'] ) $json[$res['no']]['closed'] = 1;
|
||||||
|
|
||||||
|
if( $res['capcode'] != 'none' ) $json[$res['no']]['capcode'] = $res['capcode'];
|
||||||
|
|
||||||
|
$force_anon = ( ( FORCED_ANON || META_BOARD ) && $res['capcode'] != 'admin' && $res['capcode'] != 'admin_highlight' );
|
||||||
|
|
||||||
|
if( !$force_anon ) {
|
||||||
|
if( strpos( $res['name'], '</span> <span class="postertrip">' ) !== false ) {
|
||||||
|
list( $json[$res['no']]['author'], $json[$res['no']]['trip'] ) = explode( '</span> <span class="postertrip">', $res['name'] );
|
||||||
|
} else {
|
||||||
|
$json[$res['no']]['author'] = $res['name'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$json[$res['no']]['author'] = S_ANONAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['fsize'] != 0 && $res['filedeleted'] != 1 ) {
|
||||||
|
$json[$res['no']]['imgurl'] = $res['tim'];
|
||||||
|
$json[$res['no']]['tn_w'] = $res['tn_w'];
|
||||||
|
$json[$res['no']]['tn_h'] = $res['tn_h'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['filedeleted'] == 1 ) $json[$res['no']]['imgdel'] = true;
|
||||||
|
|
||||||
|
if( strpos( $res['sub'], 'SPOILER<>' ) !== false ) {
|
||||||
|
$json[$res['no']]['imgspoiler'] = true;
|
||||||
|
$sub = substr( $res['sub'], 9 );
|
||||||
|
}
|
||||||
|
|
||||||
|
$json[$res['no']]['sub'] = $sub;
|
||||||
|
$json[$res['no']]['teaser'] = $com;
|
||||||
|
}
|
||||||
|
|
||||||
|
function catalog($catjson) {
|
||||||
|
$nav = file_get_contents_cached( NAV_TXT );
|
||||||
|
$foot = file_get_contents_cached( NAV2_TXT );
|
||||||
|
|
||||||
|
$nav = preg_replace( '/href="(\/\/boards.(?:4chan|4channel).org)?\/([a-z0-9]+)\/"/', 'href="$1/$2/catalog"', $nav );
|
||||||
|
$nav = preg_replace( '/href="(\/\/boards.(?:4chan|4channel).org)?\/f\/catalog"/', 'href="$1/f/"', $nav );
|
||||||
|
|
||||||
|
$title = strip_tags( TITLE );
|
||||||
|
|
||||||
|
$js = '';
|
||||||
|
|
||||||
|
// danbo ads start
|
||||||
|
if (defined('ADS_DANBO') && ADS_DANBO) {
|
||||||
|
$js .= '<script>';
|
||||||
|
|
||||||
|
if (DEFAULT_BURICHAN) {
|
||||||
|
$js .= "var danbo_rating = '__SFW__';";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$js .= "var danbo_rating = '__NSFW__';";
|
||||||
|
}
|
||||||
|
|
||||||
|
$_danbo_fallbacks = [];
|
||||||
|
|
||||||
|
if (defined('AD_BIDGEAR_TOP') && AD_BIDGEAR_TOP) {
|
||||||
|
$_danbo_fallbacks['t_bg'] = AD_BIDGEAR_TOP;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (defined('AD_ABC_TOP_DESKTOP') && AD_ABC_TOP_DESKTOP) {
|
||||||
|
$_danbo_fallbacks['t_abc_d'] = AD_ABC_TOP_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined('AD_ABC_TOP_MOBILE') && AD_ABC_TOP_MOBILE) {
|
||||||
|
$_danbo_fallbacks['t_abc_m'] = AD_ABC_TOP_MOBILE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined('AD_BIDGEAR_BOTTOM') && AD_BIDGEAR_BOTTOM) {
|
||||||
|
$_danbo_fallbacks['b_bg'] = AD_BIDGEAR_BOTTOM;
|
||||||
|
}
|
||||||
|
else if (defined('AD_ABC_BOTTOM_MOBILE') && AD_ABC_BOTTOM_MOBILE) {
|
||||||
|
$_danbo_fallbacks['b_abc_m'] = AD_ABC_BOTTOM_MOBILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$_danbo_fallbacks) {
|
||||||
|
$_danbo_fallbacks = 'null';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$_danbo_fallbacks = json_encode($_danbo_fallbacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= 'var danbo_fb = ' . $_danbo_fallbacks . ';';
|
||||||
|
|
||||||
|
$js .= '</script>';
|
||||||
|
|
||||||
|
$js .= '<script src="https://static.danbo.org/publisher/q2g345hq2g534-4chan/js/preload.4chan.js" defer></script>';
|
||||||
|
}
|
||||||
|
// danbo ads end
|
||||||
|
|
||||||
|
// PubFuture
|
||||||
|
if (DEFAULT_BURICHAN) {
|
||||||
|
$js .= '<script async data-cfasync="false" src="https://cdn.pubfuture-ad.com/v2/unit/pt.js"></script>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TEST_BOARD) {
|
||||||
|
// Main catalog JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/catalog-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>';
|
||||||
|
|
||||||
|
// Painter JS + CSS
|
||||||
|
if (ENABLE_PAINTERJS) {
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/tegaki-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>'
|
||||||
|
. '<link rel="stylesheet" href="' . STATIC_SERVER . 'css/tegaki-8psvqAqszI.' . CSS_VERSION_TEST . '.css">';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Core JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/core-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Main catalog JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/catalog.min.' . JS_VERSION_CATALOG . '.js"></script>';
|
||||||
|
|
||||||
|
// Painter JS + CSS
|
||||||
|
if (ENABLE_PAINTERJS) {
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/tegaki.min.' . JS_VERSION_PAINTER . '.js"></script>'
|
||||||
|
. '<link rel="stylesheet" href="' . STATIC_SERVER . 'css/tegaki.' . CSS_VERSION_PAINTER . '.css">';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Core JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/core.min.' . JS_VERSION_CORE . '.js"></script>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$css = STATIC_SERVER . 'css';
|
||||||
|
$cssv = TEST_BOARD ? CSS_VERSION_TEST : CSS_VERSION_CATALOG;
|
||||||
|
$style_group = style_group();
|
||||||
|
|
||||||
|
$flags = SHOW_COUNTRY_FLAGS ? '<link rel="stylesheet" type="text/css" href="' . $css . '/flags.' . CSS_VERSION_FLAGS . '.css">' : '';
|
||||||
|
|
||||||
|
$titlepart = $subtitle = '';
|
||||||
|
|
||||||
|
if( TITLE_IMAGE_TYPE == 1 ) {
|
||||||
|
$titleimg = rand_from_flatfile( YOTSUBA_DIR, 'title_banners.txt' );
|
||||||
|
$titlepart .= '<div id="bannerCnt" class="title desktop" data-src="' . $titleimg . '"></div>';
|
||||||
|
} elseif( TITLE_IMAGE_TYPE == 2 ) {
|
||||||
|
$titlepart .= '<img class="title" src="' . TITLEIMG . '" onclick="this.src = this.src;">';
|
||||||
|
}
|
||||||
|
|
||||||
|
if( defined( 'SUBTITLE' ) ) {
|
||||||
|
$subtitle = '<div class="boardSubtitle">' . SUBTITLE . '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ADS
|
||||||
|
*/
|
||||||
|
$topad = '';
|
||||||
|
|
||||||
|
$bottomad = '';
|
||||||
|
|
||||||
|
if (defined('AD_CUSTOM_BOTTOM') && AD_CUSTOM_BOTTOM) {
|
||||||
|
$bottomad .= '<div>' . AD_CUSTOM_BOTTOM . '<hr></div>';
|
||||||
|
}/*
|
||||||
|
else if (defined('AD_ABC_BOTTOM_MOBILE') && AD_ABC_BOTTOM_MOBILE) {
|
||||||
|
$bottomad .= '<div class="adg-rects mobile"><div class="adg-m adp-250" data-abc="' . AD_ABC_BOTTOM_MOBILE . '"></div><hr></div>';
|
||||||
|
}
|
||||||
|
else if (defined('AD_BIDGEAR_BOTTOM') && AD_BIDGEAR_BOTTOM) {
|
||||||
|
$bottomad .= '<div class="adc-resp-bg" data-ad-bg="' . AD_BIDGEAR_BOTTOM . '"></div>';
|
||||||
|
}*/
|
||||||
|
else if (defined('ADS_DANBO') && ADS_DANBO) {
|
||||||
|
$bottomad .= '<div id="danbo-s-b" class="danbo-slot"></div><div class="adl">[<a target="_blank" href="https://www.4channel.org/advertise">Advertise on 4chan</a>]</div><hr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$favicon = FAVICON;
|
||||||
|
$meta_robots = META_ROBOTS;
|
||||||
|
$meta_description = META_DESCRIPTION;
|
||||||
|
$meta_keywords = META_KEYWORDS;
|
||||||
|
|
||||||
|
$body_class = explode('_', $style_group);
|
||||||
|
$body_class = $body_class[0];
|
||||||
|
$body_class .= ' is_catalog board_' . BOARD_DIR;
|
||||||
|
|
||||||
|
$canonical = '<link rel="canonical" href="https://boards.4chan.org/'.BOARD_DIR.'/catalog">';
|
||||||
|
|
||||||
|
$embedearly = EMBEDEARLY;
|
||||||
|
$embedlate = EMBEDLATE;
|
||||||
|
$adembedearly = AD_EMBEDEARLY;
|
||||||
|
|
||||||
|
$start_thread = S_FORM_THREAD;
|
||||||
|
|
||||||
|
$jsVersion = TEST_BOARD ? JS_VERSION_TEST : JS_VERSION;
|
||||||
|
$comlen = MAX_COM_CHARS;
|
||||||
|
$maxfs = MAX_KB * 1024;
|
||||||
|
$jsCooldowns = json_encode(array(
|
||||||
|
'thread' => RENZOKU3,
|
||||||
|
'reply' => RENZOKU,
|
||||||
|
'image' => RENZOKU2
|
||||||
|
));
|
||||||
|
|
||||||
|
if (defined('CSS_EVENT_NAME') && CSS_EVENT_NAME) {
|
||||||
|
$event_css_html = '<option value="_special">Special</option>';
|
||||||
|
|
||||||
|
// Christmas 2021
|
||||||
|
if (CSS_EVENT_NAME === 'tomorrow') {
|
||||||
|
$js .= <<<JJS
|
||||||
|
<script src='//s.4cdn.org/js/snow.js'></script>
|
||||||
|
<script>
|
||||||
|
function fc_tomorrow_init() {
|
||||||
|
if (window.matchMedia && window.matchMedia('(min-width: 481px)').matches) {
|
||||||
|
fc_spawn_snow(Math.floor(Math.random() * 50) + 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function fc_tomorrow_cleanup() {
|
||||||
|
fc_remove_snow();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.boardBanner, #delform, .navLinksBot.desktop {
|
||||||
|
border-image-slice: 50 0 50 0;
|
||||||
|
border-image-width: 40px 0px 0px 0px;
|
||||||
|
border-image-outset: 0px 0px 0px 0px;
|
||||||
|
border-image-repeat: repeat repeat;
|
||||||
|
border-image-source: url('https://s.4cdn.org/image/temp/garland.png');
|
||||||
|
border-style: solid;
|
||||||
|
padding-top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
JJS;
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= '<script>var css_event = "' . CSS_EVENT_NAME . '";';
|
||||||
|
|
||||||
|
if (defined('CSS_EVENT_VERSION')) {
|
||||||
|
$_css_event_version = (int)CSS_EVENT_VERSION;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$_css_event_version = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= 'var css_event_v = ' . $_css_event_version . ';';
|
||||||
|
|
||||||
|
$js .= '</script>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$event_css_html = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PARTY) {
|
||||||
|
$partyHats = 'var partyHats = "' . PARTY_IMAGE . '";';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$partyHats = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ENABLE_ARCHIVE) {
|
||||||
|
$archive_link = ' <span class="btn-wrap"><a href="./archive" class="button">' . S_ARCHIVE . '</a></span>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$archive_link = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TEXT_ONLY) {
|
||||||
|
$text_only = 'var text_only = true;';
|
||||||
|
$body_text_css = ' text_only';
|
||||||
|
$ctrl_css = ' hidden';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$text_only = $body_text_css = '';
|
||||||
|
$ctrl_css = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$adg_js = 'var _adg = 1;';
|
||||||
|
|
||||||
|
$postform = '';
|
||||||
|
form( $postform, 0, '', false, true );
|
||||||
|
|
||||||
|
$cat = <<<HTML
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>$title - Catalog - 4chan</title>
|
||||||
|
<meta name="robots" content="$meta_robots">
|
||||||
|
<meta name="description" content="$meta_description">
|
||||||
|
<meta name="keywords" content="$meta_keywords">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
$canonical
|
||||||
|
<link id="mobile-css" rel="stylesheet" href="$css/catalog_mobile.$cssv.css" />
|
||||||
|
$js
|
||||||
|
$flags
|
||||||
|
<script type="text/javascript">$partyHats
|
||||||
|
$text_only
|
||||||
|
$adg_js
|
||||||
|
var jsVersion = $jsVersion;
|
||||||
|
var comlen = $comlen;
|
||||||
|
var maxFilesize = $maxfs;
|
||||||
|
var cooldowns = $jsCooldowns;
|
||||||
|
var catalog = $catjson;
|
||||||
|
var style_group = "$style_group";
|
||||||
|
var check_for_block = true;
|
||||||
|
var fourcat = new FC();
|
||||||
|
fourcat.applyCSS(null, "$style_group", $cssv);
|
||||||
|
</script>
|
||||||
|
<link rel="shortcut icon" href="$favicon" type="image/x-icon">
|
||||||
|
$embedearly
|
||||||
|
$adembedearly
|
||||||
|
</head>
|
||||||
|
<body class="$body_class$body_text_css">
|
||||||
|
<div id="topnav" class="boardnav">$nav</div>
|
||||||
|
<div class="boardBanner">
|
||||||
|
$titlepart
|
||||||
|
<div class="boardTitle">$title</div>
|
||||||
|
$subtitle
|
||||||
|
</div>
|
||||||
|
<hr class="abovePostForm">
|
||||||
|
$topad
|
||||||
|
<div id="togglePostForm" class="mobilebtn mobile"><span class="btn-wrap"><span id="togglePostFormLinkMobile" class="button">$start_thread</span></span></div>
|
||||||
|
$postform
|
||||||
|
<hr>
|
||||||
|
<div id="content">
|
||||||
|
<div id="ctrl">
|
||||||
|
<div id="info">
|
||||||
|
<span class="navLinks mobilebtn"><span class="btn-wrap"><a href="./" class="button">Return</a></span>$archive_link <span id="tobottom" class="btn-wrap"><span class="button">Bottom</span></span> <span class="btn-wrap"><a id="refresh-btn" href="./catalog" class="button">Refresh</a></span></span><span id="filtered-label"> — Filtered threads: <span id="filtered-count"></span></span><span id="hidden-label"> — Hidden threads: <span id="hidden-count"></span> <span class="btn-wrap"><a id="filters-clear-hidden" href="">Show</a></span></span><span id="search-label"> — Search results for: <span id="search-term"></span></span>
|
||||||
|
</div>
|
||||||
|
<hr class="mobile">
|
||||||
|
<div id="settings" class="mobilebtn">
|
||||||
|
<span class="ctrl-wrap">Sort By:
|
||||||
|
<select id="order-ctrl" size="1">
|
||||||
|
<option value="alt">Bump order</option>
|
||||||
|
<option value="absdate">Last reply</option>
|
||||||
|
<option value="date">Creation date</option>
|
||||||
|
<option value="r">Reply count</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="ctrl-wrap$ctrl_css">Image Size:
|
||||||
|
<select id="size-ctrl" size="1">
|
||||||
|
<option value="small">Small</option>
|
||||||
|
<option value="large">Large</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="ctrl-wrap$ctrl_css">Show OP Comment:
|
||||||
|
<select id="teaser-ctrl" size="1">
|
||||||
|
<option value="off">Off</option>
|
||||||
|
<option value="on">On</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="btn-wrap"><span id="filters-ctrl" class="button">Filters</span></span>
|
||||||
|
<span class="btn-wrap"><span id="qf-ctrl" class="button">Search</span></span>
|
||||||
|
<span style="display:none" id="qf-cnt">
|
||||||
|
<input type="text" id="qf-box" name="qf-box"><span id="qf-clear" class="button">✖</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div><hr>
|
||||||
|
<div id="threads"></div>
|
||||||
|
<hr>
|
||||||
|
<span class="navLinks navLinksBottom mobilebtn"><span class="btn-wrap"><a href="./" class="button">Return</a></span>$archive_link <span id="totop" class="btn-wrap"><span class="button">Top</span></span> <span class="btn-wrap"><a href="./catalog" class="button">Refresh</a></span></span><span id="filtered-label-bottom"> — Filtered threads: <span id="filtered-count-bottom"></span></span><span id="hidden-label-bottom"> — Hidden threads: <span id="hidden-count-bottom"></span> <span class="btn-wrap"><a id="filters-clear-hidden-bottom" href="">Show</a></span></span><span id="search-label-bottom"> — Search results for: <span id="search-term-bottom"></span></span>
|
||||||
|
<hr>
|
||||||
|
$bottomad
|
||||||
|
<div id="styleSwitcher">Style: <select id="styleSelector" size="1">
|
||||||
|
<option value="Yotsuba New">Yotsuba</option>
|
||||||
|
<option value="Yotsuba B New">Yotsuba B</option>
|
||||||
|
<option value="Futaba New">Futaba</option>
|
||||||
|
<option value="Burichan New">Burichan</option>
|
||||||
|
<option value="Tomorrow">Tomorrow</option>
|
||||||
|
<option value="Photon">Photon</option>$event_css_html
|
||||||
|
</select></div>
|
||||||
|
</div>
|
||||||
|
$foot
|
||||||
|
<div id="backdrop" class="hidden"></div>
|
||||||
|
<noscript>
|
||||||
|
<style scoped type="text/css">
|
||||||
|
#nojs {
|
||||||
|
background-color: #000;
|
||||||
|
text-align: center;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
#nojs > span {
|
||||||
|
color: #000;
|
||||||
|
background-color: #8C92AC;
|
||||||
|
padding: 5px;
|
||||||
|
position: relative;
|
||||||
|
top: 35%;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="nojs">
|
||||||
|
<span>Your web browser must have JavaScript enabled in order for this site to display correctly.</span>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
<menu type="context" id="ctxmenu-main"></menu>
|
||||||
|
<menu type="context" id="ctxmenu-thread"></menu>
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
initAnalytics();
|
||||||
|
fourcat.init();
|
||||||
|
fourcat.loadCatalog(catalog);
|
||||||
|
$.on($.id('tobottom'), 'click', function() { window.scrollTo(0, document.documentElement.scrollHeight); });
|
||||||
|
$.on($.id('totop'), 'click', function() { window.scrollTo(0, 0); });
|
||||||
|
}, false);
|
||||||
|
</script>
|
||||||
|
$embedlate</body>
|
||||||
|
</html>
|
||||||
|
HTML;
|
||||||
|
|
||||||
|
return $cat;
|
||||||
|
|
||||||
|
}
|
553
catalog.php
Normal file
553
catalog.php
Normal file
|
@ -0,0 +1,553 @@
|
||||||
|
<?php
|
||||||
|
// haha i named this file catalog.php now everyone but me will find it
|
||||||
|
// awkward to type
|
||||||
|
// nvm moot is a nerd
|
||||||
|
function generate_catalog()
|
||||||
|
{
|
||||||
|
global $log;
|
||||||
|
|
||||||
|
if( !STATIC_REBUILD ) log_cache();
|
||||||
|
$catalogjson = array();
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
|
||||||
|
foreach( $log['THREADS'] as $thread ) {
|
||||||
|
catalog_thread($log[$thread], $catalogjson, $i);
|
||||||
|
++$i;
|
||||||
|
}
|
||||||
|
|
||||||
|
$catalogjson = array(
|
||||||
|
'threads' => $catalogjson,
|
||||||
|
|
||||||
|
'count' => count( $log['THREADS'] ),
|
||||||
|
'slug' => BOARD_DIR,
|
||||||
|
'anon' => S_ANONAME,
|
||||||
|
'mtime' => time(),
|
||||||
|
'pagesize' => DEF_PAGES
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!REPLIES_SHOWN && IS_REBUILDD) {
|
||||||
|
$catalogjson['no_lr'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SHOW_COUNTRY_FLAGS) {
|
||||||
|
$catalogjson['flags'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( SPOILERS ) $catalogjson['custom_spoiler'] = (int)SPOILER_NUM;
|
||||||
|
|
||||||
|
$catalogjson = json_encode( $catalogjson );
|
||||||
|
|
||||||
|
$catalog = catalog( $catalogjson );
|
||||||
|
|
||||||
|
print_page( INDEX_DIR . 'catalog.html', $catalog );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function catalog_thread($res, &$json, $pos)
|
||||||
|
{
|
||||||
|
global $log;
|
||||||
|
|
||||||
|
$reps = $res['replycount'];
|
||||||
|
$sub = $res['sub'];
|
||||||
|
|
||||||
|
$imgs = $res['imgreplycount'];
|
||||||
|
$last_reply_id = null;
|
||||||
|
$capcodelist = array();
|
||||||
|
|
||||||
|
if (TEXT_ONLY) {
|
||||||
|
$time_prop = 'now';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$time_prop = 'time';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach( $res['children'] as $reply => $unused ) {
|
||||||
|
$last_reply_id = $reply;
|
||||||
|
|
||||||
|
if( META_BOARD && $log[$reply]['capcode'] != 'none' ) {
|
||||||
|
$tCapcode = $log[$reply]['capcode'];
|
||||||
|
if( $tCapcode == 'admin_highlight' ) $tCapcode = 'admin';
|
||||||
|
|
||||||
|
if( $tCapcode != 'none' ) {
|
||||||
|
$capcodelist[$tCapcode] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($last_reply_id === null) {
|
||||||
|
$last_reply = array( 'id' => $res['no'] );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$lr_data = $log[$last_reply_id];
|
||||||
|
|
||||||
|
$last_reply = array(
|
||||||
|
'id' => $last_reply_id,
|
||||||
|
'date' => $lr_data['time']
|
||||||
|
);
|
||||||
|
|
||||||
|
if( $lr_data['capcode'] != 'none' ) $last_reply['capcode'] = $lr_data['capcode'];
|
||||||
|
|
||||||
|
$force_anon = ( ( FORCED_ANON || META_BOARD ) && $lr_data['capcode'] != 'admin' && $lr_data['capcode'] != 'admin_highlight' );
|
||||||
|
|
||||||
|
if( !$force_anon ) {
|
||||||
|
if( strpos( $lr_data['name'], '</span> <span class="postertrip">' ) !== false ) {
|
||||||
|
list( $last_reply['author'], $last_reply['trip'] ) = explode( '</span> <span class="postertrip">', $lr_data['name'] );
|
||||||
|
} else {
|
||||||
|
$last_reply['author'] = $lr_data['name'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$last_reply['author'] = S_ANONAME;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$json[$res['no']] = array(
|
||||||
|
'date' => $res[$time_prop],
|
||||||
|
'file' => mb_convert_encoding($res['filename'], 'UTF-8', 'UTF-8') . $res['ext'],
|
||||||
|
'r' => $reps,
|
||||||
|
'i' => $imgs,
|
||||||
|
'lr' => $last_reply,
|
||||||
|
'b' => $pos
|
||||||
|
);
|
||||||
|
/*
|
||||||
|
if( META_BOARD && $capcodelist ) {
|
||||||
|
$json[$res['no']]['capcodereps'] = implode(',', array_keys($capcodelist));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if ($res['capcode'] == 'none') {
|
||||||
|
if (SHOW_COUNTRY_FLAGS && (!ENABLE_BOARD_FLAGS || $res['board_flag'] == '')) {
|
||||||
|
$json[$res['no']]['country'] = $res['country'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$com = $res['com'];
|
||||||
|
|
||||||
|
if( strpos( $com, 'class="abbr"' ) !== false ) {
|
||||||
|
$com = preg_replace( '#(<br>)+<span class="abbr">(.+)$#s', '', $com );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TEXT_ONLY) {
|
||||||
|
$com = preg_replace( '#(<br>)+#', ' ', $com );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$com = preg_replace( '#(<br>)+#', "\n", $com );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BOARD_DIR === 'b') { // fixme, hardcoded for now
|
||||||
|
$com = truncate_comment($com, 300, true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (SJIS_TAGS) {
|
||||||
|
$com = preg_replace('/<span class="sjis".+?<\/span>/', '[SJIS]', $com);
|
||||||
|
}
|
||||||
|
$com = strip_tags($com, '<s>');
|
||||||
|
}
|
||||||
|
|
||||||
|
$has_spoilers = (bool)SPOILERS;
|
||||||
|
|
||||||
|
if (!$res['permaage'] && !$res['sticky']) {
|
||||||
|
if( $reps >= MAX_RES ) $json[$res['no']]['bumplimit'] = 1;
|
||||||
|
if( $imgs >= MAX_IMGRES ) $json[$res['no']]['imagelimit'] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['sticky'] ) $json[$res['no']]['sticky'] = 1;
|
||||||
|
if( $res['closed'] ) $json[$res['no']]['closed'] = 1;
|
||||||
|
|
||||||
|
if( $res['capcode'] != 'none' ) $json[$res['no']]['capcode'] = $res['capcode'];
|
||||||
|
|
||||||
|
$force_anon = ( ( FORCED_ANON || META_BOARD ) && $res['capcode'] != 'admin' && $res['capcode'] != 'admin_highlight' );
|
||||||
|
|
||||||
|
if( !$force_anon ) {
|
||||||
|
if( strpos( $res['name'], '</span> <span class="postertrip">' ) !== false ) {
|
||||||
|
list( $json[$res['no']]['author'], $json[$res['no']]['trip'] ) = explode( '</span> <span class="postertrip">', $res['name'] );
|
||||||
|
} else {
|
||||||
|
$json[$res['no']]['author'] = $res['name'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$json[$res['no']]['author'] = S_ANONAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['fsize'] != 0 && $res['filedeleted'] != 1 ) {
|
||||||
|
$json[$res['no']]['imgurl'] = $res['tim'];
|
||||||
|
$json[$res['no']]['tn_w'] = $res['tn_w'];
|
||||||
|
$json[$res['no']]['tn_h'] = $res['tn_h'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if( $res['filedeleted'] == 1 ) $json[$res['no']]['imgdel'] = true;
|
||||||
|
|
||||||
|
if( strpos( $res['sub'], 'SPOILER<>' ) !== false ) {
|
||||||
|
$json[$res['no']]['imgspoiler'] = true;
|
||||||
|
$sub = substr( $res['sub'], 9 );
|
||||||
|
}
|
||||||
|
|
||||||
|
$json[$res['no']]['sub'] = $sub;
|
||||||
|
$json[$res['no']]['teaser'] = $com;
|
||||||
|
}
|
||||||
|
|
||||||
|
function catalog($catjson) {
|
||||||
|
$nav = file_get_contents_cached( NAV_TXT );
|
||||||
|
$foot = file_get_contents_cached( NAV2_TXT );
|
||||||
|
|
||||||
|
$nav = preg_replace( '/href="(\/\/boards.(?:4chan|4channel).org)?\/([a-z0-9]+)\/"/', 'href="$1/$2/catalog"', $nav );
|
||||||
|
$nav = preg_replace( '/href="(\/\/boards.(?:4chan|4channel).org)?\/f\/catalog"/', 'href="$1/f/"', $nav );
|
||||||
|
|
||||||
|
$title = strip_tags( TITLE );
|
||||||
|
|
||||||
|
$js = '';
|
||||||
|
|
||||||
|
// danbo ads start
|
||||||
|
if (defined('ADS_DANBO') && ADS_DANBO) {
|
||||||
|
$js .= '<script>';
|
||||||
|
|
||||||
|
if (DEFAULT_BURICHAN) {
|
||||||
|
$js .= "var danbo_rating = '__SFW__';";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$js .= "var danbo_rating = '__NSFW__';";
|
||||||
|
}
|
||||||
|
|
||||||
|
$_danbo_fallbacks = [];
|
||||||
|
|
||||||
|
if (defined('AD_BIDGEAR_TOP') && AD_BIDGEAR_TOP) {
|
||||||
|
$_danbo_fallbacks['t_bg'] = AD_BIDGEAR_TOP;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (defined('AD_ABC_TOP_DESKTOP') && AD_ABC_TOP_DESKTOP) {
|
||||||
|
$_danbo_fallbacks['t_abc_d'] = AD_ABC_TOP_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined('AD_ABC_TOP_MOBILE') && AD_ABC_TOP_MOBILE) {
|
||||||
|
$_danbo_fallbacks['t_abc_m'] = AD_ABC_TOP_MOBILE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined('AD_BIDGEAR_BOTTOM') && AD_BIDGEAR_BOTTOM) {
|
||||||
|
$_danbo_fallbacks['b_bg'] = AD_BIDGEAR_BOTTOM;
|
||||||
|
}
|
||||||
|
else if (defined('AD_ABC_BOTTOM_MOBILE') && AD_ABC_BOTTOM_MOBILE) {
|
||||||
|
$_danbo_fallbacks['b_abc_m'] = AD_ABC_BOTTOM_MOBILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$_danbo_fallbacks) {
|
||||||
|
$_danbo_fallbacks = 'null';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$_danbo_fallbacks = json_encode($_danbo_fallbacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= 'var danbo_fb = ' . $_danbo_fallbacks . ';';
|
||||||
|
|
||||||
|
$js .= '</script>';
|
||||||
|
|
||||||
|
$js .= '<script src="https://static.danbo.org/publisher/q2g345hq2g534-4chan/js/preload.4chan.js" defer></script>';
|
||||||
|
}
|
||||||
|
// danbo ads end
|
||||||
|
|
||||||
|
// PubFuture
|
||||||
|
if (DEFAULT_BURICHAN) {
|
||||||
|
$js .= '<script async data-cfasync="false" src="https://cdn.pubfuture-ad.com/v2/unit/pt.js"></script>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TEST_BOARD) {
|
||||||
|
// Main catalog JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/catalog-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>';
|
||||||
|
|
||||||
|
// Painter JS + CSS
|
||||||
|
if (ENABLE_PAINTERJS) {
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/tegaki-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>'
|
||||||
|
. '<link rel="stylesheet" href="' . STATIC_SERVER . 'css/tegaki-8psvqAqszI.' . CSS_VERSION_TEST . '.css">';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Core JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/test/core-8psvqAqszI.' . JS_VERSION_TEST . '.js"></script>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Main catalog JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/catalog.min.' . JS_VERSION_CATALOG . '.js"></script>';
|
||||||
|
|
||||||
|
// Painter JS + CSS
|
||||||
|
if (ENABLE_PAINTERJS) {
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/tegaki.min.' . JS_VERSION_PAINTER . '.js"></script>'
|
||||||
|
. '<link rel="stylesheet" href="' . STATIC_SERVER . 'css/tegaki.' . CSS_VERSION_PAINTER . '.css">';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Core JS
|
||||||
|
$js .= '<script type="text/javascript" src="' . STATIC_SERVER . 'js/core.min.' . JS_VERSION_CORE . '.js"></script>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$css = STATIC_SERVER . 'css';
|
||||||
|
$cssv = TEST_BOARD ? CSS_VERSION_TEST : CSS_VERSION_CATALOG;
|
||||||
|
$style_group = style_group();
|
||||||
|
|
||||||
|
$flags = SHOW_COUNTRY_FLAGS ? '<link rel="stylesheet" type="text/css" href="' . $css . '/flags.' . CSS_VERSION_FLAGS . '.css">' : '';
|
||||||
|
|
||||||
|
$titlepart = $subtitle = '';
|
||||||
|
|
||||||
|
if( TITLE_IMAGE_TYPE == 1 ) {
|
||||||
|
$titleimg = rand_from_flatfile( YOTSUBA_DIR, 'title_banners.txt' );
|
||||||
|
$titlepart .= '<div id="bannerCnt" class="title desktop" data-src="' . $titleimg . '"></div>';
|
||||||
|
} elseif( TITLE_IMAGE_TYPE == 2 ) {
|
||||||
|
$titlepart .= '<img class="title" src="' . TITLEIMG . '" onclick="this.src = this.src;">';
|
||||||
|
}
|
||||||
|
|
||||||
|
if( defined( 'SUBTITLE' ) ) {
|
||||||
|
$subtitle = '<div class="boardSubtitle">' . SUBTITLE . '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ADS
|
||||||
|
*/
|
||||||
|
$topad = '';
|
||||||
|
|
||||||
|
$bottomad = '';
|
||||||
|
|
||||||
|
if (defined('AD_CUSTOM_BOTTOM') && AD_CUSTOM_BOTTOM) {
|
||||||
|
$bottomad .= '<div>' . AD_CUSTOM_BOTTOM . '<hr></div>';
|
||||||
|
}/*
|
||||||
|
else if (defined('AD_ABC_BOTTOM_MOBILE') && AD_ABC_BOTTOM_MOBILE) {
|
||||||
|
$bottomad .= '<div class="adg-rects mobile"><div class="adg-m adp-250" data-abc="' . AD_ABC_BOTTOM_MOBILE . '"></div><hr></div>';
|
||||||
|
}
|
||||||
|
else if (defined('AD_BIDGEAR_BOTTOM') && AD_BIDGEAR_BOTTOM) {
|
||||||
|
$bottomad .= '<div class="adc-resp-bg" data-ad-bg="' . AD_BIDGEAR_BOTTOM . '"></div>';
|
||||||
|
}*/
|
||||||
|
else if (defined('ADS_DANBO') && ADS_DANBO) {
|
||||||
|
$bottomad .= '<div id="danbo-s-b" class="danbo-slot"></div><div class="adl">[<a target="_blank" href="https://www.4channel.org/advertise">Advertise on 4chan</a>]</div><hr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$favicon = FAVICON;
|
||||||
|
$meta_robots = META_ROBOTS;
|
||||||
|
$meta_description = META_DESCRIPTION;
|
||||||
|
$meta_keywords = META_KEYWORDS;
|
||||||
|
|
||||||
|
$body_class = explode('_', $style_group);
|
||||||
|
$body_class = $body_class[0];
|
||||||
|
$body_class .= ' is_catalog board_' . BOARD_DIR;
|
||||||
|
|
||||||
|
$canonical = '<link rel="canonical" href="https://boards.4chan.org/'.BOARD_DIR.'/catalog">';
|
||||||
|
|
||||||
|
$embedearly = EMBEDEARLY;
|
||||||
|
$embedlate = EMBEDLATE;
|
||||||
|
$adembedearly = AD_EMBEDEARLY;
|
||||||
|
|
||||||
|
$start_thread = S_FORM_THREAD;
|
||||||
|
|
||||||
|
$jsVersion = TEST_BOARD ? JS_VERSION_TEST : JS_VERSION;
|
||||||
|
$comlen = MAX_COM_CHARS;
|
||||||
|
$maxfs = MAX_KB * 1024;
|
||||||
|
$jsCooldowns = json_encode(array(
|
||||||
|
'thread' => RENZOKU3,
|
||||||
|
'reply' => RENZOKU,
|
||||||
|
'image' => RENZOKU2
|
||||||
|
));
|
||||||
|
|
||||||
|
if (defined('CSS_EVENT_NAME') && CSS_EVENT_NAME) {
|
||||||
|
$event_css_html = '<option value="_special">Special</option>';
|
||||||
|
|
||||||
|
// Christmas 2021
|
||||||
|
if (CSS_EVENT_NAME === 'tomorrow') {
|
||||||
|
$js .= <<<JJS
|
||||||
|
<script src='//s.4cdn.org/js/snow.js'></script>
|
||||||
|
<script>
|
||||||
|
function fc_tomorrow_init() {
|
||||||
|
if (window.matchMedia && window.matchMedia('(min-width: 481px)').matches) {
|
||||||
|
fc_spawn_snow(Math.floor(Math.random() * 50) + 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function fc_tomorrow_cleanup() {
|
||||||
|
fc_remove_snow();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.boardBanner, #delform, .navLinksBot.desktop {
|
||||||
|
border-image-slice: 50 0 50 0;
|
||||||
|
border-image-width: 40px 0px 0px 0px;
|
||||||
|
border-image-outset: 0px 0px 0px 0px;
|
||||||
|
border-image-repeat: repeat repeat;
|
||||||
|
border-image-source: url('https://s.4cdn.org/image/temp/garland.png');
|
||||||
|
border-style: solid;
|
||||||
|
padding-top: 50px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
JJS;
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= '<script>var css_event = "' . CSS_EVENT_NAME . '";';
|
||||||
|
|
||||||
|
if (defined('CSS_EVENT_VERSION')) {
|
||||||
|
$_css_event_version = (int)CSS_EVENT_VERSION;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$_css_event_version = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$js .= 'var css_event_v = ' . $_css_event_version . ';';
|
||||||
|
|
||||||
|
$js .= '</script>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$event_css_html = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PARTY) {
|
||||||
|
$partyHats = 'var partyHats = "' . PARTY_IMAGE . '";';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$partyHats = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ENABLE_ARCHIVE) {
|
||||||
|
$archive_link = ' <span class="btn-wrap"><a href="./archive" class="button">' . S_ARCHIVE . '</a></span>';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$archive_link = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TEXT_ONLY) {
|
||||||
|
$text_only = 'var text_only = true;';
|
||||||
|
$body_text_css = ' text_only';
|
||||||
|
$ctrl_css = ' hidden';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$text_only = $body_text_css = '';
|
||||||
|
$ctrl_css = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$adg_js = 'var _adg = 1;';
|
||||||
|
|
||||||
|
$postform = '';
|
||||||
|
form( $postform, 0, '', false, true );
|
||||||
|
|
||||||
|
$cat = <<<HTML
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>$title - Catalog - 4chan</title>
|
||||||
|
<meta name="robots" content="$meta_robots">
|
||||||
|
<meta name="description" content="$meta_description">
|
||||||
|
<meta name="keywords" content="$meta_keywords">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
$canonical
|
||||||
|
<link id="mobile-css" rel="stylesheet" href="$css/catalog_mobile.$cssv.css" />
|
||||||
|
$js
|
||||||
|
$flags
|
||||||
|
<script type="text/javascript">$partyHats
|
||||||
|
$text_only
|
||||||
|
$adg_js
|
||||||
|
var jsVersion = $jsVersion;
|
||||||
|
var comlen = $comlen;
|
||||||
|
var maxFilesize = $maxfs;
|
||||||
|
var cooldowns = $jsCooldowns;
|
||||||
|
var catalog = $catjson;
|
||||||
|
var style_group = "$style_group";
|
||||||
|
var check_for_block = true;
|
||||||
|
var fourcat = new FC();
|
||||||
|
fourcat.applyCSS(null, "$style_group", $cssv);
|
||||||
|
</script>
|
||||||
|
<link rel="shortcut icon" href="$favicon" type="image/x-icon">
|
||||||
|
$embedearly
|
||||||
|
$adembedearly
|
||||||
|
</head>
|
||||||
|
<body class="$body_class$body_text_css">
|
||||||
|
<div id="topnav" class="boardnav">$nav</div>
|
||||||
|
<div class="boardBanner">
|
||||||
|
$titlepart
|
||||||
|
<div class="boardTitle">$title</div>
|
||||||
|
$subtitle
|
||||||
|
</div>
|
||||||
|
<hr class="abovePostForm">
|
||||||
|
$topad
|
||||||
|
<div id="togglePostForm" class="mobilebtn mobile"><span class="btn-wrap"><span id="togglePostFormLinkMobile" class="button">$start_thread</span></span></div>
|
||||||
|
$postform
|
||||||
|
<hr>
|
||||||
|
<div id="content">
|
||||||
|
<div id="ctrl">
|
||||||
|
<div id="info">
|
||||||
|
<span class="navLinks mobilebtn"><span class="btn-wrap"><a href="./" class="button">Return</a></span>$archive_link <span id="tobottom" class="btn-wrap"><span class="button">Bottom</span></span> <span class="btn-wrap"><a id="refresh-btn" href="./catalog" class="button">Refresh</a></span></span><span id="filtered-label"> — Filtered threads: <span id="filtered-count"></span></span><span id="hidden-label"> — Hidden threads: <span id="hidden-count"></span> <span class="btn-wrap"><a id="filters-clear-hidden" href="">Show</a></span></span><span id="search-label"> — Search results for: <span id="search-term"></span></span>
|
||||||
|
</div>
|
||||||
|
<hr class="mobile">
|
||||||
|
<div id="settings" class="mobilebtn">
|
||||||
|
<span class="ctrl-wrap">Sort By:
|
||||||
|
<select id="order-ctrl" size="1">
|
||||||
|
<option value="alt">Bump order</option>
|
||||||
|
<option value="absdate">Last reply</option>
|
||||||
|
<option value="date">Creation date</option>
|
||||||
|
<option value="r">Reply count</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="ctrl-wrap$ctrl_css">Image Size:
|
||||||
|
<select id="size-ctrl" size="1">
|
||||||
|
<option value="small">Small</option>
|
||||||
|
<option value="large">Large</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="ctrl-wrap$ctrl_css">Show OP Comment:
|
||||||
|
<select id="teaser-ctrl" size="1">
|
||||||
|
<option value="off">Off</option>
|
||||||
|
<option value="on">On</option>
|
||||||
|
</select></span>
|
||||||
|
<span class="btn-wrap"><span id="filters-ctrl" class="button">Filters</span></span>
|
||||||
|
<span class="btn-wrap"><span id="qf-ctrl" class="button">Search</span></span>
|
||||||
|
<span style="display:none" id="qf-cnt">
|
||||||
|
<input type="text" id="qf-box" name="qf-box"><span id="qf-clear" class="button">✖</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div><hr>
|
||||||
|
<div id="threads"></div>
|
||||||
|
<hr>
|
||||||
|
<span class="navLinks navLinksBottom mobilebtn"><span class="btn-wrap"><a href="./" class="button">Return</a></span>$archive_link <span id="totop" class="btn-wrap"><span class="button">Top</span></span> <span class="btn-wrap"><a href="./catalog" class="button">Refresh</a></span></span><span id="filtered-label-bottom"> — Filtered threads: <span id="filtered-count-bottom"></span></span><span id="hidden-label-bottom"> — Hidden threads: <span id="hidden-count-bottom"></span> <span class="btn-wrap"><a id="filters-clear-hidden-bottom" href="">Show</a></span></span><span id="search-label-bottom"> — Search results for: <span id="search-term-bottom"></span></span>
|
||||||
|
<hr>
|
||||||
|
$bottomad
|
||||||
|
<div id="styleSwitcher">Style: <select id="styleSelector" size="1">
|
||||||
|
<option value="Yotsuba New">Yotsuba</option>
|
||||||
|
<option value="Yotsuba B New">Yotsuba B</option>
|
||||||
|
<option value="Futaba New">Futaba</option>
|
||||||
|
<option value="Burichan New">Burichan</option>
|
||||||
|
<option value="Tomorrow">Tomorrow</option>
|
||||||
|
<option value="Photon">Photon</option>$event_css_html
|
||||||
|
</select></div>
|
||||||
|
</div>
|
||||||
|
$foot
|
||||||
|
<div id="backdrop" class="hidden"></div>
|
||||||
|
<noscript>
|
||||||
|
<style scoped type="text/css">
|
||||||
|
#nojs {
|
||||||
|
background-color: #000;
|
||||||
|
text-align: center;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
#nojs > span {
|
||||||
|
color: #000;
|
||||||
|
background-color: #8C92AC;
|
||||||
|
padding: 5px;
|
||||||
|
position: relative;
|
||||||
|
top: 35%;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="nojs">
|
||||||
|
<span>Your web browser must have JavaScript enabled in order for this site to display correctly.</span>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
<menu type="context" id="ctxmenu-main"></menu>
|
||||||
|
<menu type="context" id="ctxmenu-thread"></menu>
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
initAnalytics();
|
||||||
|
fourcat.init();
|
||||||
|
fourcat.loadCatalog(catalog);
|
||||||
|
$.on($.id('tobottom'), 'click', function() { window.scrollTo(0, document.documentElement.scrollHeight); });
|
||||||
|
$.on($.id('totop'), 'click', function() { window.scrollTo(0, 0); });
|
||||||
|
}, false);
|
||||||
|
</script>
|
||||||
|
$embedlate</body>
|
||||||
|
</html>
|
||||||
|
HTML;
|
||||||
|
|
||||||
|
return $cat;
|
||||||
|
|
||||||
|
}
|
77
clippy.html
Normal file
77
clippy.html
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
<style type="text/css">
|
||||||
|
.clippy {text-align:left; z-index:300;position:absolute;font-family: tahoma, verdana; font-size: 11px;}
|
||||||
|
.balloon {background: url(//s.4cdn.org/image/bubble.gif); width: 280px; height: 300px;}
|
||||||
|
.balloon-text {padding: 40px; text-align: left;}
|
||||||
|
.clippy-img {margin-left: 155px;}
|
||||||
|
</style>
|
||||||
|
<div class="clippy" id="clippybox" style="display:none">
|
||||||
|
<div class="balloon"><div class="balloon-text"><div id="clippy-insert-into"> </div><input type="checkbox">Don't show me this tip again</input></div></div>
|
||||||
|
<img class="clippy-img" src="//s.4cdn.org/image/Sticky2.gif" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var clippy, clippy_text, com, email, filename;
|
||||||
|
var introtext = "Hello, I'm Sticky, the 4chan assistant.<br/>";
|
||||||
|
|
||||||
|
function idle() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function helpful() {
|
||||||
|
var text = com.value, etxt = email.value, filetxt = filename.value;
|
||||||
|
|
||||||
|
if (filetxt.search(/[0-9]{12,13}/) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you're reposting an old image.<br>Would you like help?<br><br><ul><li>Get help posting original content</li><li>Continue killing 4chan by myself</li></ul>";
|
||||||
|
|
||||||
|
else if (filetxt.search(/C:\\WINDOWS\\/i) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you're posting from your \"hidden\" porn folder.<br>Would you like help?<br><br><ul><li>Get help moving into my own house</li><li>Just live in the basement without help</li></ul>";
|
||||||
|
|
||||||
|
else if (text.search(/MODS=/) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you're posting \"MODS=FAGS\".<br>Would you like help?<br><br><ul><li>Get help with my anger issues</li><li><a href=\"http://wakaba.c3.cx\">Get help starting my own /b/ ripoff</a></li></ul>";
|
||||||
|
|
||||||
|
else if (text.search(/[a-z]/) == -1 && text.length >= 4)
|
||||||
|
clippy_text.innerHTML = "It looks like your capslock key is broken.<br>Would you like help?<br><br><ul><li>Get help <a href=\"http://www.ebay.com/\">finding a new keyboard</a></li><li>Just type the post without help</li></ul>";
|
||||||
|
|
||||||
|
else if (text.search(/moar/i) >= 0 || text.search(/lulz/i) >= 0 || text.search(/rule 34/i) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you're a moron.<br>Would you like help?<br><br><ul><li>Get help <a href=\"http://ninjawords.com/more\">learning to spell</a></li><li>Just type the post without help</li></ul>";
|
||||||
|
|
||||||
|
else if (etxt.search(/sage/) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you don't like this thread!<br>Maybe you shouldn't read it?";
|
||||||
|
|
||||||
|
else if (text.search(/fag/i) >= 0)
|
||||||
|
clippy_text.innerHTML = "It looks like you're calling someone a fag.<br>Would you like help?<br><br><ul><li>Get help <a href=\"http://orz.4chan.org/y/imgboard.html\">finding myself</a></li><li>Just type the post without help</li></ul>";
|
||||||
|
|
||||||
|
else clippy_text.innerHTML = "Would you like help with:<br><ul><li><a href=\"javascript:void(com.value='DICK BUTT')\">Trolling</a></li><li>Finding copypasta</li><li>Being arrested</li><li><a href=\"http://www.4chan.org/rules.php\">Complaining about rules</a></li><li>Being wapanese</li></ul>";
|
||||||
|
setTimeout(idle, 15000);
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove_listeners(fn) {
|
||||||
|
com.removeEventListener("keyup", fn, false);
|
||||||
|
email.removeEventListener("keyup", fn, false);
|
||||||
|
filename.removeEventListener("keyup", fn, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_listeners(fn) {
|
||||||
|
/*com.addEventListener("keyup", fn, false);
|
||||||
|
email.addEventListener("keyup", fn, false);
|
||||||
|
filename.addEventListener("keyup", fn, false);*/
|
||||||
|
com.onkeyup = email.onkeyup = filename.onchange = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
function intro() {
|
||||||
|
clippy_text.innerHTML = introtext;
|
||||||
|
clippy.style.display = "";
|
||||||
|
//remove_listeners(intro);
|
||||||
|
setTimeout('add_listeners(helpful);helpful();', 3500);
|
||||||
|
}
|
||||||
|
|
||||||
|
clippy = document.getElementById("clippybox");
|
||||||
|
clippy_text = document.getElementById("clippy-insert-into");
|
||||||
|
clippy.style.top = 100+'px';
|
||||||
|
clippy.style.right = 20+'px';
|
||||||
|
com = document.getElementsByName("com")[0];
|
||||||
|
email = document.getElementsByName("email")[0];
|
||||||
|
filename = document.getElementsByName("upfile")[0];
|
||||||
|
add_listeners(intro);
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
1
config/ads/adblock.txt
Normal file
1
config/ads/adblock.txt
Normal file
File diff suppressed because one or more lines are too long
1
config/ads/nws.bottom.txt
Normal file
1
config/ads/nws.bottom.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk53379"></div>
|
1
config/ads/nws.middle.txt
Normal file
1
config/ads/nws.middle.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk98887"></div>
|
1
config/ads/nws.top.txt
Normal file
1
config/ads/nws.top.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk91603"></div>
|
1
config/ads/ws.bottom.txt
Normal file
1
config/ads/ws.bottom.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk53379"></div>
|
1
config/ads/ws.middle.txt
Normal file
1
config/ads/ws.middle.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk98887"></div>
|
1
config/ads/ws.top.txt
Normal file
1
config/ads/ws.top.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<div id="azk91603"></div>
|
14
config/boards/3.config.ini
Normal file
14
config/boards/3.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[3's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/3/ - 3DCG" is 4chan's board for 3D modeling and imagery.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,3d,3dcg,modeling,rendering,maya,adobe
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
45
config/boards/a.config.ini
Normal file
45
config/boards/a.config.ini
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
[a's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; J-List ads for index pages
|
||||||
|
AD_INTERTHREAD_ENABLED = no
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 180
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-a1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/a/ - Anime & Manga" is 4chan's imageboard dedicated to the discussion of Japanese animation and manga.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,anime,manga,japanese,animation
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
;EMBED_INDEX = <iframe style="display:none" width="0" height="0" src="https://www.youtube.com/embed/YQYPmtK03c0?start=1&autoplay=1&loop=1&playlist=YQYPmtK03c0" frameborder="0"></iframe>
|
||||||
|
|
||||||
|
; Use rebuildd
|
||||||
|
STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
27
config/boards/aco.config.ini
Normal file
27
config/boards/aco.config.ini
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
[aco's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
; Secondary anti flood interval and threshold for threads (only the IP's posting history used here)
|
||||||
|
ANTI_FLOOD_INTERVAL_RAW = 5
|
||||||
|
ANTI_FLOOD_THRES_RAW = 4
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/aco/ - Adult Cartoons" is 4chan's imageboard for posting western-styled adult cartoon artwork.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,western,adult,cartoon,r34,rule34
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
22
config/boards/adv.config.ini
Normal file
22
config/boards/adv.config.ini
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[adv's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/adv/ - Advice" is 4chan's board for giving and receiving advice.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,advice,help,dating,relationships
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>AdBlock users: The default ruleset blocks images on /adv/. You must disable AdBlock to browse /adv/ properly.</li>\
|
||||||
|
<li style="color: red;">Are you in crisis? Call the <a href="http://www.suicidepreventionlifeline.org/" target="_blank">National Suicide Prevention Lifeline</a> at +1 (800) 273-8255.</li>
|
14
config/boards/an.config.ini
Normal file
14
config/boards/an.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[an's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/an/ - Animals & Nature" is 4chan's imageboard for posting pictures of animals, pets, and nature.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,animals,nature,flora,fauna,pets,cats,dogs
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
17
config/boards/asp.config.ini
Normal file
17
config/boards/asp.config.ini
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[asp's config]
|
||||||
|
|
||||||
|
LOCKDOWN = yes
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/asp/ - Alternative Sports & Wrestling" is 4chan's imageboard for the discussion of alternative and extreme sports such as wrestling and paintball.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,sports,alternative,wrestling,skateboarding,airsoft,paintball,boxing
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
101
config/boards/b.config.ini
Normal file
101
config/boards/b.config.ini
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
[b's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
HTML_IFRAME_WHITELIST = %^(https?:)?//(www\.youtube(-nocookie)?\.com/embed/|interactives\.ap\.org/)%
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Seconds between posts
|
||||||
|
RENZOKU = 30
|
||||||
|
; Seconds between image posts
|
||||||
|
RENZOKU2 = 30
|
||||||
|
; Seconds between intra thread posts
|
||||||
|
RENZOKU_INTRA = 30
|
||||||
|
; Seconds between intra thread image posts
|
||||||
|
RENZOKU2_INTRA = 30
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 90
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 15
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 2048
|
||||||
|
MAX_WEBM_FILESIZE = 2048
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
REPLIES_SHOWN = 3
|
||||||
|
; Maximum number of lines shown on index pages
|
||||||
|
MAX_LINES_SHOWN = 10
|
||||||
|
; Maximum number of lines allowed in a post
|
||||||
|
MAX_LINES = 50
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 15
|
||||||
|
; Number of bumps before thread will no longer bump
|
||||||
|
MAX_RES = 300
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 150
|
||||||
|
; Seconds between new threads
|
||||||
|
;RENZOKU3 = 600
|
||||||
|
; Sage OPs replies if the length since their last post is too short
|
||||||
|
RENZOKU_OP = yes
|
||||||
|
; Time since last post when OPs replies will sage
|
||||||
|
RENZOKU_OP_TIME = 600
|
||||||
|
|
||||||
|
; Remove the threads least recently replied to
|
||||||
|
EXPIRE_NEGLECTED = yes
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Enable archiving of expired posts?
|
||||||
|
ENABLE_ARCHIVE = no
|
||||||
|
|
||||||
|
; Use rebuildd
|
||||||
|
STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
; Enable wordfilters
|
||||||
|
WORD_FILT = no
|
||||||
|
|
||||||
|
; Show number of unique IPs in the post log
|
||||||
|
SHOW_UNIQUES = no
|
||||||
|
|
||||||
|
; Enable fortune-teller (use #fortune as tripcode)
|
||||||
|
FORTUNE_TRIP = yes
|
||||||
|
|
||||||
|
; Sticky these posts
|
||||||
|
AUTOSTICKY =
|
||||||
|
|
||||||
|
; Hide name and subject field
|
||||||
|
FORCED_ANON = no
|
||||||
|
|
||||||
|
; Allow rolling of dice
|
||||||
|
DICE_ROLL = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = no
|
||||||
|
|
||||||
|
; Strip tripcodes from names
|
||||||
|
STRIP_TRIPCODE = yes
|
||||||
|
|
||||||
|
; Put party hats on images :)
|
||||||
|
;PARTY = yes
|
||||||
|
;PARTY_IMAGE = xmashat.gif
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/b/ - Random" is the birthplace of Anonymous, and where people go to discuss random topics and create memes on 4chan.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,anonymous,random,memes
|
||||||
|
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; skip doubles enabled at /b/ postcount ~381720221, disabled at ~584248512
|
||||||
|
SKIP_DOUBLES = no
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
SUBTITLE = The stories and information posted here are artistic works of fiction and falsehood.<br>Only a fool would take anything posted here as fact.
|
78
config/boards/bant.config.ini
Normal file
78
config/boards/bant.config.ini
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
[bant's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
HTML_IFRAME_WHITELIST = %^(https?:)?//(www\.youtube(-nocookie)?\.com/embed/|interactives\.ap\.org/)%
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/bant/ - International/Random" is 4chan's international hanging out board, where you can have fun with Anonymous all over the world.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,international,foreign,culture,language
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = yes
|
||||||
|
; If DISP_ID is enabled, make IDs per-thread instead of per-board?
|
||||||
|
DISP_ID_PER_THREAD = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
DISP_ID_NO_HEAVEN = yes
|
||||||
|
; Show country flags next to names
|
||||||
|
SHOW_COUNTRY_FLAGS = yes
|
||||||
|
|
||||||
|
; Enable archiving of expired posts?
|
||||||
|
ENABLE_ARCHIVE = no
|
||||||
|
|
||||||
|
; Allow credit allocation for captcha bypassing.
|
||||||
|
CAPTCHA_ALLOW_BYPASS = no
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
; Based on /b/
|
||||||
|
; Seconds between posts
|
||||||
|
RENZOKU = 15
|
||||||
|
; Seconds between image posts
|
||||||
|
RENZOKU2 = 15
|
||||||
|
; Seconds between intra thread posts
|
||||||
|
RENZOKU_INTRA = 15
|
||||||
|
; Seconds between intra thread image posts
|
||||||
|
RENZOKU2_INTRA = 15
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 60
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 15
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 2048
|
||||||
|
MAX_WEBM_FILESIZE = 2048
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
REPLIES_SHOWN = 3
|
||||||
|
; Maximum number of lines shown on index pages
|
||||||
|
MAX_LINES_SHOWN = 10
|
||||||
|
; Maximum number of lines allowed in a post
|
||||||
|
MAX_LINES = 50
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 15
|
||||||
|
; Number of bumps before thread will no longer bump
|
||||||
|
MAX_RES = 300
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 150
|
||||||
|
; Seconds between new threads
|
||||||
|
;RENZOKU3 = 600
|
||||||
|
; Sage OPs replies if the length since their last post is too short
|
||||||
|
RENZOKU_OP = yes
|
||||||
|
; Time since last post when OPs replies will sage
|
||||||
|
RENZOKU_OP_TIME = 600
|
||||||
|
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
; Remove the threads least recently replied to
|
||||||
|
EXPIRE_NEGLECTED = yes
|
26
config/boards/biz.config.ini
Normal file
26
config/boards/biz.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[biz's config]
|
||||||
|
|
||||||
|
; slotid (desktop,mobile)
|
||||||
|
;ADS_LOCKERDOME_TOP = 12600775138545254,13389524239594598
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/biz/ - Business & Finance" is 4chan's imageboard for the discussion of business and finance, and cryptocurrencies such as Bitcoin and Dogecoin.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,business,finance,cryptocurrency,bitcoin,dogecoin
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = yes
|
||||||
|
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
DISP_ID_NO_HEAVEN = yes
|
||||||
|
|
||||||
|
; Threads per page
|
||||||
|
DEF_PAGES = 20
|
17
config/boards/c.config.ini
Normal file
17
config/boards/c.config.ini
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[c's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/c/ - Anime/Cute" is 4chan's imageboard for cute and moe anime images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,anime,cute,moe,waifu
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
RENZOKU2_INTRA = 30
|
||||||
|
|
14
config/boards/cgl.config.ini
Normal file
14
config/boards/cgl.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[cgl's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/cgl/ - Cosplay & EGL" is 4chan's imageboard for the discussion of cosplay, elegant gothic lolita (EGL), and anime conventions.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,anime con,cosplay,egl,elegant gothic lolita,anime convention,otakon,anime expo
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
18
config/boards/ck.config.ini
Normal file
18
config/boards/ck.config.ini
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[ck's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/ck/ - Food & Cooking" is 4chan's imageboard for food pictures and cooking recipes.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,cooking,recipes,food
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
;DONATE = <center><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/zb4vhJaX1hw?autoplay=1&loop=1" frameborder="0" allowfullscreen></iframe></center>
|
20
config/boards/cm.config.ini
Normal file
20
config/boards/cm.config.ini
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
[cm's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; Secondary anti flood interval and threshold for threads (only the IP's posting history used here)
|
||||||
|
ANTI_FLOOD_INTERVAL_RAW = 15
|
||||||
|
ANTI_FLOOD_THRES_RAW = 3
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/cm/ - Cute/Male" is 4chan's imageboard for posting pictures of cute anime males.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,anime,hentai,yaoi,men,cute
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
RENZOKU2_INTRA = 30
|
34
config/boards/co.config.ini
Normal file
34
config/boards/co.config.ini
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[co's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; Secondary anti flood interval and threshold for threads (only the IP's posting history used here)
|
||||||
|
ANTI_FLOOD_INTERVAL_RAW = 5
|
||||||
|
ANTI_FLOOD_THRES_RAW = 4
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-co1.png,spoiler-co2.png,spoiler-co3.png,spoiler-co4.png,spoiler-co5.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 5
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/co/ - Comics & Cartoons" is 4chan's imageboard dedicated to the discussion of Western cartoons and comics.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,western,american,cartoons,comics
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
23
config/boards/d.config.ini
Normal file
23
config/boards/d.config.ini
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[d's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
AD_ABC_TOP_MOBILE =
|
||||||
|
AD_ABC_TOP_DESKTOP =
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/d/ - Hentai/Alternative" is 4chan's imageboard for alternative hentai images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,japan,hentai,bondage,tentacle,futanari
|
||||||
|
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
14
config/boards/diy.config.ini
Normal file
14
config/boards/diy.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[diy's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/diy/ - Do It Yourself" is 4chan's imageboard for DIY/do it yourself projects, home improvement, and makers.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,diy,do it yourself,home improvement,makers,crafts,instructables
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
23
config/boards/e.config.ini
Normal file
23
config/boards/e.config.ini
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[e's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/e/ - Ecchi" is 4chan's imageboard for suggestive (ecchi) hentai images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,japan,anime,hentai,ecchi,suggestive
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
50
config/boards/f.config.ini
Normal file
50
config/boards/f.config.ini
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
[f's config]
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <iframe width="728" height="90" scrolling="no" frameborder="0" src="https://a.adtng.com/get/10011953?time=1602949803326" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10011953"></iframe>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <iframe width="300" height="250" scrolling="no" frameborder="0" src="https://a.adtng.com/get/10001654?time=1602949803326" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10001654"></iframe>
|
||||||
|
|
||||||
|
NO_TEXTONLY = yes
|
||||||
|
|
||||||
|
; Archiving and catalog aren't supported for /f/...
|
||||||
|
ENABLE_ARCHIVE = no
|
||||||
|
ENABLE_CATALOG = no
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 0
|
||||||
|
|
||||||
|
CAPTCHA_TWISTER = no
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum number of entries before oldest thread is pruned
|
||||||
|
LOG_MAX = 500
|
||||||
|
; Threads per page (f only has 1 page)
|
||||||
|
DEF_PAGES = 30
|
||||||
|
PAGE_MAX = 1
|
||||||
|
EXPIRE_NEGLECTED = no
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 10240
|
||||||
|
|
||||||
|
[General Locations]
|
||||||
|
|
||||||
|
IMG_SERVER = //i.4cdn.org/
|
||||||
|
|
||||||
|
UPLOAD_BOARD = yes
|
||||||
|
SQLLOGMD5 = f_md5
|
||||||
|
|
||||||
|
CLEANUP_UPLOADS = no
|
||||||
|
|
||||||
|
USE_RSS = no
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/f/ - Flash" is 4chan's upload board for sharing Adobe Flash files (SWFs).
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,upload,adobe,macromedia,flash,swf
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Supported file types are: SWF</li>\
|
||||||
|
<li>Maximum file size allowed is {{MAX_KB}} KB.</li>\
|
||||||
|
<li>Check out the 4chan <a href="//www.4chan.org/flash" target="_blank">Flash archive</a>!</li>
|
18
config/boards/fa.config.ini
Normal file
18
config/boards/fa.config.ini
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[fa's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/fa/ - Fashion" is 4chan's imageboard for images and discussion relating to fashion and apparel.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,fashion,clothing,apparel
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
18
config/boards/fit.config.ini
Normal file
18
config/boards/fit.config.ini
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[fit's config]
|
||||||
|
; slotid (desktop,mobile)
|
||||||
|
ADS_LOCKERDOME_TOP = 12600781614550630,13389525380445286
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
;AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/fit/ - Fitness" is 4chan's imageboard for weightlifting, health, and fitness.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,health,fitness,diet,exercise,weightlighting,lifting,bodybuilding
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
29
config/boards/g.config.ini
Normal file
29
config/boards/g.config.ini
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
[g's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/g/ - Technology" is 4chan's imageboard for discussing computer hardware and software, programming, and general technology.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,computer,technology,hardware,software,microsoft,apple,pc,mobile,programming
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Enable [code] tags
|
||||||
|
CODE_TAGS = yes
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
; Rules below form (tip: use backslash to continue to next line)
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>You may highlight syntax and preserve whitespace by using [code] tags.</li>
|
30
config/boards/gd.config.ini
Normal file
30
config/boards/gd.config.ini
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
[gd's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/gd/ - Graphic Design" is 4chan's imageboard for graphic design.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,photoshop,graphic,design,illustrator,adobe
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 10000
|
||||||
|
|
||||||
|
; Allow PDF upload and thumbnailing (needs /usr/local/bin/gs)
|
||||||
|
ENABLE_PDF = yes
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
; Rules below form (tip: use backslash to continue to next line)
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Additional supported file types are: PDF</li>
|
47
config/boards/gif.config.ini
Normal file
47
config/boards/gif.config.ini
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[gif's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 4096
|
||||||
|
; Maximum filesize for webm files. Must be <= MAX_KB
|
||||||
|
MAX_WEBM_FILESIZE = 4096
|
||||||
|
; Maximum duration of a video stream in seconds
|
||||||
|
MAX_WEBM_DURATION = 300
|
||||||
|
; Allow audio streams in webm
|
||||||
|
ENABLE_WEBM_AUDIO = yes
|
||||||
|
; Only allow gifs
|
||||||
|
GIF_ONLY = yes
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/gif/ - Adult GIF" is 4chan's imageboard dedicated to animated adult GIFs and WEBMs.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,animated,gif,adult,gifs,webm,webms
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
SUBTITLE = Worksafe Board: /<a href="//boards.4chan.org/wsg/" title="Worksafe GIF">wsg</a>/
|
||||||
|
|
||||||
|
; Detect and handle embedded data in file uploads:
|
||||||
|
; - Rejects PNGs and JPGs.
|
||||||
|
; - Removes embedded data from GIFs, modifying the original file.
|
||||||
|
CLEANUP_UPLOADS = no
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 24
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
PAGE_MAX = 5
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Supported file types are: GIF, WEBM</li>
|
23
config/boards/h.config.ini
Normal file
23
config/boards/h.config.ini
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[h's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/h/ - Hentai" is 4chan's imageboard for adult Japanese anime hentai images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,japan,anime,hentai,pornography,adult,ecchi
|
||||||
|
; The boards's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
32
config/boards/hc.config.ini
Normal file
32
config/boards/hc.config.ini
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
[hc's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/hc/ - Hardcore" is 4chan's imageboard for the posting of adult hardcore pornography.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,hardcore,pornography,sex,porn
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 8000
|
||||||
|
|
||||||
|
; Minimum dimensions of an image
|
||||||
|
MIN_W = 500
|
||||||
|
MIN_H = 500
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Images smaller than {{MIN_W}}x{{MIN_H}} pixels are not allowed.</li>
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
31
config/boards/his.config.ini
Normal file
31
config/boards/his.config.ini
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
[his's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
PERMASAGE_HOURS = 168
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/his/ - History & Humanities" is 4chan's board for discussing and debating history.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,history,humanities,debate
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
;DISP_ID = no
|
||||||
|
; If DISP_ID is enabled, make IDs per-thread instead of per-board?
|
||||||
|
;DISP_ID_PER_THREAD = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
;DISP_ID_NO_HEAVEN = yes
|
||||||
|
; Show country flags next to names
|
||||||
|
;SHOW_COUNTRY_FLAGS = yes
|
28
config/boards/hm.config.ini
Normal file
28
config/boards/hm.config.ini
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
[hm's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011954" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10002309" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 150
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 8000
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/hm/ - Handsome Men" is 4chan's imageboard dedicated to sharing adult images of handsome men.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,handsome,men,nudes,softcore,porn,sex
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
34
config/boards/hr.config.ini
Normal file
34
config/boards/hr.config.ini
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[hr's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Minimum dimensions of an image
|
||||||
|
MIN_W = 1000
|
||||||
|
MIN_H = 1000
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 10000
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/hr/ - High Resolution" is 4chan's imageboard for the sharing of high resolution images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,hq,hi res,high resolution,hi rez
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Enable pre-upload CAPTCHA?
|
||||||
|
PREUPLOAD_CAPTCHA = yes
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Maximum file size allowed is {{MAX_KB}} KB.</li>\
|
||||||
|
<li>Images smaller than {{MIN_W}}x{{MIN_H}} pixels are not allowed.</li>\
|
||||||
|
<li>Images greater than {{MAX_DIMENSION}}x{{MAX_DIMENSION}} pixels are not allowed.</li>
|
33
config/boards/i.config.ini
Normal file
33
config/boards/i.config.ini
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
[i's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Enable Oekaki board features
|
||||||
|
ENABLE_PAINTERJS = yes
|
||||||
|
ENABLE_OEKAKI_REPLAYS = yes
|
||||||
|
|
||||||
|
; Oekaki min/max widths
|
||||||
|
OEKAKI_MIN_W = 100
|
||||||
|
OEKAKI_MIN_H = 100
|
||||||
|
OEKAKI_MAX_W = 800
|
||||||
|
OEKAKI_MAX_H = 800
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
; period for user thread limit, in hours
|
||||||
|
MAX_USER_THREADS_PERIOD = 168
|
||||||
|
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/i/ - Oekaki" is 4chan's oekaki board for drawing and sharing art.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,oekaki,drawing,art
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
17
config/boards/ic.config.ini
Normal file
17
config/boards/ic.config.ini
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[ic's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/ic/ - Artwork/Critique" is 4chan's imageboard for the discussion and critique of art.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,art,critique
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
29
config/boards/int.config.ini
Normal file
29
config/boards/int.config.ini
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
[int's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/int/ - International" is 4chan's international board, for the exchange of foreign language and culture.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,international,foreign,culture,language
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show country flags next to names
|
||||||
|
SHOW_COUNTRY_FLAGS = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 235
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
156
config/boards/j.config.ini
Normal file
156
config/boards/j.config.ini
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
[j's config]
|
||||||
|
|
||||||
|
; Disabling stuff to prevent data leakage to non-janitors
|
||||||
|
; !!! DO NOT CHANGE THESE !!!
|
||||||
|
USE_RSS = no
|
||||||
|
ENABLE_JSON = no
|
||||||
|
ENABLE_JSON_INDEXES = no
|
||||||
|
ENABLE_JSON_CATALOG = no
|
||||||
|
ENABLE_JSON_THREADS = no
|
||||||
|
ENABLE_CATALOG = no
|
||||||
|
ENABLE_ARCHIVE = no
|
||||||
|
SHOW_UNIQUES = no
|
||||||
|
SHOW_THREAD_UNIQUES = no
|
||||||
|
DISP_ID = no
|
||||||
|
CAN_REPORT_POSTS = no
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 0
|
||||||
|
|
||||||
|
; Enable/disable lockdown mode for /j/ (disallows posting)
|
||||||
|
|
||||||
|
; Lockdown
|
||||||
|
;LOCKDOWN = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum number of entries before oldest thread is pruned
|
||||||
|
LOG_MAX = 1000000000
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
PAGE_MAX = 0
|
||||||
|
|
||||||
|
; Number of bumps
|
||||||
|
MAX_RES = 1000
|
||||||
|
|
||||||
|
[General Locations]
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
TITLE = /j/ - Janitor & Moderator Discussion
|
||||||
|
|
||||||
|
; Name of the first index page
|
||||||
|
SELF_PATH2_FILE = {{DATA_ROOT}}imgboard.html.php
|
||||||
|
; URL to index.html
|
||||||
|
SELF_PATH2_ABS = //sys.4chan.org/j/
|
||||||
|
; the extension of saved HTML files
|
||||||
|
PHP_EXT = .html.php
|
||||||
|
PHP_EXT2 =
|
||||||
|
DATA_ROOT = /www/4chan.org/web/sys/{{BOARD_DIR}}/
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Different roots to obscure image locations
|
||||||
|
BOARD_DIR = j
|
||||||
|
THUMB_ROOT = /www/4chan.org/web/thumbs/{{BOARD_DIR}}/h8x8FnR5iwB4J8q8/
|
||||||
|
IMG_ROOT = /www/4chan.org/web/images/{{BOARD_DIR}}/v7Wtc0EJILEQFuTo/
|
||||||
|
IMG_DIR2 = {{IMG_SERVER}}{{BOARD_DIR}}/v7Wtc0EJILEQFuTo/
|
||||||
|
; image URLs, note RES_DIR2 is not an absolute URL atm
|
||||||
|
THUMB_DIR2_PART = i.4cdn.org/{{BOARD_DIR}}/h8x8FnR5iwB4J8q8/
|
||||||
|
|
||||||
|
RES_DIR2 = thread/
|
||||||
|
|
||||||
|
; Text to be shown at the top of each board (disabled)
|
||||||
|
GLOBAL_MSG_FILE =
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Enable janitor board features
|
||||||
|
JANITOR_BOARD = yes
|
||||||
|
|
||||||
|
; Refuse text only posts (yes = refuse them, no = allow them!)
|
||||||
|
NO_TEXTONLY = no
|
||||||
|
|
||||||
|
; Specify custom favicon
|
||||||
|
FAVICON = //s.4cdn.org/image/favicon-j.ico
|
||||||
|
|
||||||
|
; Specify CSS to force
|
||||||
|
CSS_FORCE = //s.4cdn.org/css/janichan.css
|
||||||
|
|
||||||
|
; Gzip won't work on /j/
|
||||||
|
USE_GZIP = no
|
||||||
|
|
||||||
|
; Disable reCAPTCHA
|
||||||
|
CAPTCHA = no
|
||||||
|
|
||||||
|
; Disable blotter
|
||||||
|
SHOW_BLOTTER = no
|
||||||
|
|
||||||
|
; For that HPH thread
|
||||||
|
CODE_TAGS = yes
|
||||||
|
MAX_COM_CHARS_AUTHED = 50000
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; Remove ads
|
||||||
|
|
||||||
|
AD_PLEA = no
|
||||||
|
AD_EMBEDEARLY =
|
||||||
|
AD_TOP_ENABLE = no
|
||||||
|
AD_MIDDLE_ENABLE = no
|
||||||
|
AD_BOTTOM_ENABLE = no
|
||||||
|
AD_TOP_PLEA =
|
||||||
|
AD_MIDDLE_PLEA =
|
||||||
|
AD_BOTTOM_PLEA =
|
||||||
|
|
||||||
|
; desktop top
|
||||||
|
AD_ADGLARE_TOP =
|
||||||
|
; desktop bottom
|
||||||
|
AD_ADGLARE_BOTTOM =
|
||||||
|
; mobile top
|
||||||
|
AD_ADGLARE_TOP_MOBILE =
|
||||||
|
; mobile bottom
|
||||||
|
AD_ADGLARE_BOTTOM_MOBILE =
|
||||||
|
; desktop catalog top
|
||||||
|
AD_ADGLARE_TOP_CATALOG =
|
||||||
|
; desktop catalog bottom
|
||||||
|
AD_ADGLARE_BOTTOM_CATALOG =
|
||||||
|
; desktop revcontent top
|
||||||
|
AD_RC_TOP =
|
||||||
|
; desktop revcontent bottom
|
||||||
|
AD_RC_BOTTOM =
|
||||||
|
; desktop revcontent top catalog
|
||||||
|
AD_RC_TOP_CATALOG =
|
||||||
|
; desktop revcontent bottom catalog
|
||||||
|
AD_RC_BOTTOM_CATALOG =
|
||||||
|
; mobile revcontent top
|
||||||
|
AD_RC_TOP_MOBILE =
|
||||||
|
; mobile revcontent bottom
|
||||||
|
AD_RC_BOTTOM_MOBILE =
|
||||||
|
; adnium mobile top
|
||||||
|
AD_ADNIUM_TOP_MOBILE =
|
||||||
|
; adnium mobile bottom
|
||||||
|
AD_ADNIUM_BOTTOM_MOBILE =
|
||||||
|
; content abc desktop top: left,right
|
||||||
|
AD_ABC_TOP_DESKTOP =
|
||||||
|
; content abc mobile top
|
||||||
|
AD_ABC_TOP_MOBILE =
|
||||||
|
; content abc bottom top
|
||||||
|
AD_ABC_BOTTOM_MOBILE =
|
||||||
|
; juicyads catalog top
|
||||||
|
AD_JUICY_TOP_CATALOG =
|
||||||
|
; juicyads catalog bottom
|
||||||
|
AD_JUICY_BOTTOM_CATALOG =
|
||||||
|
; juicyads index bottom
|
||||||
|
AD_JUICY_BOTTOM_DESKTOP =
|
||||||
|
|
||||||
|
ADS_DANBO = no
|
||||||
|
|
||||||
|
ADS_BIDGLASS = no
|
||||||
|
|
||||||
|
ADS_BIDGLASS_TOP_DESKTOP =
|
||||||
|
ADS_BIDGLASS_BOTTOM_DESKTOP =
|
||||||
|
|
||||||
|
ADS_BIDGLASS_TOP_MOBILE =
|
||||||
|
ADS_BIDGLASS_BOTTOM_MOBILE =
|
||||||
|
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
SQL_DEBUG = 0
|
49
config/boards/jp.config.ini
Normal file
49
config/boards/jp.config.ini
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
[jp's config]
|
||||||
|
|
||||||
|
;AD_CUSTOM_TOP = <div style="max-height:100px;margin:auto;width:720px;max-width: 100%;"><a target="_blank" href="https://www.fakku.net/read-hentai" title="Hentai Manga"><img style="max-width:100%" src="https://t.fakku.net/images/upload/1dxB446v1y107uR5.gif"></a></div>
|
||||||
|
;AD_CUSTOM_BOTTOM = <div style="max-height:100px;margin:auto;width:720px;max-width: 100%;"><a target="_blank" href="https://www.fakku.net/read-hentai" title="Hentai Manga"><img style="max-width:100%" src="https://t.fakku.net/images/upload/1dxB446v1y107uR5.gif"></a></div>
|
||||||
|
;AD_TERRA_TOP_DESKTOP =
|
||||||
|
;AD_TERRA_BOTTOM_DESKTOP =
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
AUTOARCHIVE_CAP = 1500
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/jp/ - Otaku Culture" is 4chan's board for discussing Japanese otaku culture.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,general,otaku,waifu,japanese
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 3600
|
||||||
|
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 300
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-jp1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
SJIS_TAGS = yes
|
||||||
|
|
||||||
|
MAX_COM_CHARS = 5000
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>[sjis] tags are available. Install the <a href="http://monafont.sourceforge.net/index-e.html" target="_blank">Mona font</a> to view SJIS art properly.</li>
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 250
|
21
config/boards/k.config.ini
Normal file
21
config/boards/k.config.ini
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[k's config]
|
||||||
|
|
||||||
|
;AD_TERRA_TOP_DESKTOP = tumultrecast.com,eaed4d55144c813097d5aa84a204a7c2
|
||||||
|
;AD_TERRA_BOTTOM_DESKTOP = tumultrecast.com,c0b83c42f274bdfa2042504993ae51a2
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/k/ - Weapons" is 4chan's imageboard for discussing all types of weaponry, from military tanks to guns and knives.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,weapons,tanks,guns,knives,military
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
25
config/boards/lgbt.config.ini
Normal file
25
config/boards/lgbt.config.ini
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[lgbt's config]
|
||||||
|
|
||||||
|
;AD_TERRA_TOP_DESKTOP = tumultrecast.com,eaed4d55144c813097d5aa84a204a7c2
|
||||||
|
;AD_TERRA_BOTTOM_DESKTOP = tumultrecast.com,c0b83c42f274bdfa2042504993ae51a2
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/lgbt/ - LGBT" is 4chan's imageboard for Lesbian-Gay-Bisexual-Transgender-Queer and sexuality discussion.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,lgbt,lesbian,gay,bisexual,transgender,lgbtq,queer,sexuality
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
TITLE = /lgbt/ - Lesbian, Gay, Bisexual, & Transgender
|
||||||
|
|
||||||
|
; User selectable flags. Will break boards without the board_flag table column.
|
||||||
|
ENABLE_BOARD_FLAGS = no
|
26
config/boards/lit.config.ini
Normal file
26
config/boards/lit.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[lit's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/lit/ - Literature" is 4chan's board for the discussion of books, authors, and literature.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,literature,reading,books,authors
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-lit1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum comment length
|
||||||
|
MAX_COM_CHARS = 3000
|
19
config/boards/m.config.ini
Normal file
19
config/boards/m.config.ini
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[m's config]
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-m1.png,spoiler-m2.png,spoiler-m3.png,spoiler-m4.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 4
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/m/ - Mecha" is 4chan's imageboard for discussing Japanese mecha robots and anime, like Gundam and Macross.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,anime,mecha,gundam,macross,robot
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
40
config/boards/mlp.config.ini
Normal file
40
config/boards/mlp.config.ini
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
[mlp's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
CSS_VERSION_BOARD_FLAGS = 3
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/mlp/ - Pony" is 4chan's imageboard dedicated to the discussion of My Little Pony: Friendship is Magic.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,pony,ponies,brony,bronies,my little pony,mlp,lauren faust,friendship is magic
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-mlp1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Allow rolling of dice
|
||||||
|
DICE_ROLL = yes
|
||||||
|
; Maximum comment length
|
||||||
|
MAX_COM_CHARS = 3000
|
||||||
|
|
||||||
|
; User selectable flags. Will break boards without the board_flag table column.
|
||||||
|
ENABLE_BOARD_FLAGS = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Number of bumps
|
||||||
|
MAX_RES = 500
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 300
|
16
config/boards/mu.config.ini
Normal file
16
config/boards/mu.config.ini
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[mu's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/mu/ - Music" is 4chan's imageboard for discussing all types of music.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,music,mp3,cd,radio,band,ipod,music industry
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
14
config/boards/n.config.ini
Normal file
14
config/boards/n.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[n's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/n/ - Transportation" is 4chan's imageboard for discussing modes of transportation like trains and bicycles.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,transportation,trains,planes,boats,bicycle,bike,cycling
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
43
config/boards/news.config.ini
Normal file
43
config/boards/news.config.ini
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
[news' config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
WORD_FILT = no
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
; Text-only mode
|
||||||
|
TEXT_ONLY = yes
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
PERMASAGE_HOURS = 48
|
||||||
|
; Regex for comment validation.
|
||||||
|
COM_REGEX = @https?://@
|
||||||
|
; When the OP doesn't pass the regex validation
|
||||||
|
S_INVALID_COM = Your post must contain at least one valid URL
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-a1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/news/ - Current News; is 4chan's board for current news.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,news,finance,international,celebrity
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
MAX_USER_THREADS = 5
|
||||||
|
MAX_USER_THREADS_PERIOD = 120
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
14
config/boards/o.config.ini
Normal file
14
config/boards/o.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[o's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/o/ - Auto" is 4chan's imageboard for discussing cars and motorcycles.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,automobiles,cars,motorcycles,auto,automotive
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
25
config/boards/out.config.ini
Normal file
25
config/boards/out.config.ini
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[out's config]
|
||||||
|
; slotid (desktop,mobile)
|
||||||
|
ADS_LOCKERDOME_TOP = 12528905840213094,13389526319969382
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
;AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_LOCKERDOME_TOP = <div id="ld-1996-5165"></div><script>(function(w,d,s,i){w.ldAdInit=w.ldAdInit||[];w.ldAdInit.push({slot:12528905840213094,size:[0, 0],id:"ld-1996-5165"});if(!d.getElementById(i)){var j=d.createElement(s),p=d.getElementsByTagName(s)[0];j.async=true;j.src="//cdn2.lockerdomecdn.com/_js/ajs.js";j.id=i;p.parentNode.insertBefore(j,p);}})(window,document,"script","ld-ajs");</script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/out/ - Outdoors" is 4chan's imageboard for discussing survivalist skills and outdoor activities such as hiking.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,outdoors,survivalist,hiking,outdoor activities
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 5120
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 8000
|
26
config/boards/p.config.ini
Normal file
26
config/boards/p.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[p's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 5120
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Strip EXIF tags from images
|
||||||
|
; for privacy, but changes MD5s!
|
||||||
|
STRIP_EXIF = no
|
||||||
|
|
||||||
|
; Enable EXIF parsing during post (needs /www/global/bin/exiftags)
|
||||||
|
ENABLE_EXIF = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/p/ - Photography" is 4chan's imageboard for sharing and critiquing photos.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,photography,camera,critique,photos
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
26
config/boards/po.config.ini
Normal file
26
config/boards/po.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[po's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
|
||||||
|
; Allow PDF upload and thumbnailing (needs /usr/local/bin/gs)
|
||||||
|
ENABLE_PDF = yes
|
||||||
|
|
||||||
|
META_DESCRIPTION = "/po/ - Papercraft & Origami" is 4chan's imageboard for posting papercraft and origami templates and instructions.
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,papercraft,origami,japan,paper,crafting
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
; Rules below form (tip: use backslash to continue to next line)
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Additional supported file types are: PDF</li>
|
121
config/boards/pol.config.ini
Normal file
121
config/boards/pol.config.ini
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
[pol's config]
|
||||||
|
CSS_VERSION_BOARD_FLAGS = 2
|
||||||
|
|
||||||
|
; desktop top
|
||||||
|
AD_ADGLARE_TOP =
|
||||||
|
; desktop bottom
|
||||||
|
AD_ADGLARE_BOTTOM =
|
||||||
|
; mobile top
|
||||||
|
AD_ADGLARE_TOP_MOBILE =
|
||||||
|
; mobile bottom
|
||||||
|
AD_ADGLARE_BOTTOM_MOBILE =
|
||||||
|
; desktop catalog top
|
||||||
|
AD_ADGLARE_TOP_CATALOG =
|
||||||
|
; desktop catalog bottom
|
||||||
|
AD_ADGLARE_BOTTOM_CATALOG =
|
||||||
|
; desktop revcontent top
|
||||||
|
AD_RC_TOP =
|
||||||
|
; desktop revcontent bottom
|
||||||
|
AD_RC_BOTTOM =
|
||||||
|
; desktop revcontent top catalog
|
||||||
|
AD_RC_TOP_CATALOG =
|
||||||
|
; desktop revcontent bottom catalog
|
||||||
|
AD_RC_BOTTOM_CATALOG =
|
||||||
|
; mobile revcontent top
|
||||||
|
AD_RC_TOP_MOBILE =
|
||||||
|
; mobile revcontent bottom
|
||||||
|
AD_RC_BOTTOM_MOBILE =
|
||||||
|
; adnium mobile top
|
||||||
|
AD_ADNIUM_TOP_MOBILE =
|
||||||
|
; adnium mobile bottom
|
||||||
|
AD_ADNIUM_BOTTOM_MOBILE =
|
||||||
|
; content abc desktop top: left,right
|
||||||
|
AD_ABC_TOP_DESKTOP =
|
||||||
|
; content abc mobile top
|
||||||
|
AD_ABC_TOP_MOBILE =
|
||||||
|
; content abc mobile top
|
||||||
|
AD_ABC_BOTTOM_MOBILE =
|
||||||
|
; content abc mobile inter-replies
|
||||||
|
AD_ABC_REPLIES_MOBILE =
|
||||||
|
; juicyads catalog top
|
||||||
|
AD_JUICY_TOP_CATALOG =
|
||||||
|
; juicyads catalog bottom
|
||||||
|
AD_JUICY_BOTTOM_CATALOG =
|
||||||
|
; juicyads index bottom
|
||||||
|
AD_JUICY_BOTTOM_DESKTOP =
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,0,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
ADS_BIDGLASS = no
|
||||||
|
|
||||||
|
ADS_BIDGLASS_TOP_DESKTOP =
|
||||||
|
ADS_BIDGLASS_BOTTOM_DESKTOP =
|
||||||
|
|
||||||
|
ADS_BIDGLASS_TOP_MOBILE =
|
||||||
|
ADS_BIDGLASS_BOTTOM_MOBILE =
|
||||||
|
|
||||||
|
HTML_IFRAME_WHITELIST = %^(https?:)?//(www\.youtube(-nocookie)?\.com/embed/|interactives\.ap\.org/)%
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
; period for user thread limit, in hours
|
||||||
|
MAX_USER_THREADS_PERIOD = 6
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 72
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/pol/ - Politically Incorrect" is 4chan's board for discussing and debating politics and current events.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,politics,current events,debate,politically incorrect
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = yes
|
||||||
|
; If DISP_ID is enabled, make IDs per-thread instead of per-board?
|
||||||
|
DISP_ID_PER_THREAD = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
DISP_ID_NO_HEAVEN = yes
|
||||||
|
; Show country flags next to names
|
||||||
|
SHOW_COUNTRY_FLAGS = yes
|
||||||
|
|
||||||
|
; Only works on /pol/, will break other boards. Requires SHOW_COUNTRY_FLAGS.
|
||||||
|
USE_TROLL_FLAGS = no
|
||||||
|
|
||||||
|
; User selectable flags. Will break boards without the board_flag table column.
|
||||||
|
ENABLE_BOARD_FLAGS = yes
|
||||||
|
|
||||||
|
; Use rebuildd
|
||||||
|
STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
; Allow credit allocation for captcha bypassing.
|
||||||
|
CAPTCHA_ALLOW_BYPASS = no
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Seconds between posts
|
||||||
|
RENZOKU = 30
|
||||||
|
; Seconds between image posts
|
||||||
|
RENZOKU2 = 30
|
||||||
|
; Seconds between intra thread posts
|
||||||
|
RENZOKU_INTRA = 30
|
||||||
|
; Seconds between intra thread image posts
|
||||||
|
RENZOKU2_INTRA = 30
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 90
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 15
|
||||||
|
; Threads per page
|
||||||
|
DEF_PAGES = 20
|
17
config/boards/pw.config.ini
Normal file
17
config/boards/pw.config.ini
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[pw's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/pw/ - Professional Wrestling" is 4chan's imageboard for the discussion of professional wrestling.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,sports,alternative,wrestling
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
28
config/boards/qa.config.ini
Normal file
28
config/boards/qa.config.ini
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
[qa's config]
|
||||||
|
|
||||||
|
;AD_TERRA_TOP_DESKTOP = tumultrecast.com,eaed4d55144c813097d5aa84a204a7c2
|
||||||
|
;AD_TERRA_BOTTOM_DESKTOP = tumultrecast.com,c0b83c42f274bdfa2042504993ae51a2
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
LOCKDOWN = yes
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
META_DESCRIPTION = "/qa/ - Question & Answer" is 4chan's imageboard for question and answer threads.
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,question,answer,q&a,ama,ask me anything,question and answer
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
;NO_DELETE_REPLY = yes
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
MAX_USER_THREADS_PERIOD = 48
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
PERMASAGE_HOURS = 168
|
16
config/boards/qb.config.ini
Normal file
16
config/boards/qb.config.ini
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[qb's config]
|
||||||
|
|
||||||
|
LOCKDOWN = yes
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,0,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/qb/ - Quebec"
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
79
config/boards/qst.config.ini
Normal file
79
config/boards/qst.config.ini
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
[qst's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/qst/ - Quests" is 4chan's imageboard for grinding XP.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,quests,choose your own adventure
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
;SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-tg1.png,spoiler-tg2.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
;SPOILER_NUM = 2
|
||||||
|
|
||||||
|
; Allow PDF upload and thumbnailing (needs /usr/local/bin/gs)
|
||||||
|
ENABLE_PDF = yes
|
||||||
|
|
||||||
|
; Allow rolling of dice
|
||||||
|
DICE_ROLL = yes
|
||||||
|
|
||||||
|
; Require a subject
|
||||||
|
REQUIRE_SUBJECT = yes
|
||||||
|
|
||||||
|
OP_MARKUP = yes
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 5
|
||||||
|
; period for user thread limit, in hours
|
||||||
|
MAX_USER_THREADS_PERIOD = 72
|
||||||
|
|
||||||
|
ENABLE_PAINTERJS = yes
|
||||||
|
|
||||||
|
MAX_COM_CHARS = 3000
|
||||||
|
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = yes
|
||||||
|
; If DISP_ID is enabled, make IDs per-thread instead of per-board?
|
||||||
|
DISP_ID_PER_THREAD = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
DISP_ID_NO_HEAVEN = yes
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
PERMASAGE_HOURS = 120
|
||||||
|
|
||||||
|
; Number of bumps
|
||||||
|
MAX_RES = 750
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 375
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 5
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 30
|
||||||
|
; Maximum number of lines allowed in a post
|
||||||
|
MAX_LINES = 100
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
; Rules below form (tip: use backslash to continue to next line)
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Additional supported file types are: PDF</li>\
|
||||||
|
<li>Roll dice with "dice+<strong>number</strong>d<strong>faces</strong>" in the options field (without quotes).</li>
|
26
config/boards/r.config.ini
Normal file
26
config/boards/r.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[r's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/r/ - Request" is 4chan's imageboard dedicated to fulfilling all types of user requests.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,request
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 10000
|
||||||
|
|
||||||
|
ENABLE_WEBM_AUDIO = yes
|
42
config/boards/r9k.config.ini
Normal file
42
config/boards/r9k.config.ini
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
[r9k's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 16
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 15
|
||||||
|
; Number of bumps before thread will no longer bump
|
||||||
|
MAX_RES = 500
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 150
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 600
|
||||||
|
|
||||||
|
; Remove the threads least recently replied to
|
||||||
|
EXPIRE_NEGLECTED = yes
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/r9k/ - ROBOT9001" is a board for hanging out and posting greentext stories.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,ROBOT9000,ROBOT9001,r9k,xkcd,robots,green text,feels
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
TITLE = /r9k/ - ROBOT9001
|
||||||
|
|
||||||
|
ROBOT9000 = yes
|
||||||
|
ROBOT9000_POSTS = r9k_posts
|
||||||
|
ROBOT9000_MUTES = r9k_mutes
|
34
config/boards/s.config.ini
Normal file
34
config/boards/s.config.ini
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[s's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/s/ - Sexy Beautiful Women" is 4chan's imageboard dedicated to sharing images of softcore pornography.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,sexy,beautiful,women,nudes,softcore,pornography
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_IMGRES = 150
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 8000
|
||||||
|
|
||||||
|
; Minimum dimensions of an image
|
||||||
|
MIN_W = 500
|
||||||
|
MIN_H = 500
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Images smaller than {{MIN_W}}x{{MIN_H}} pixels are not allowed.</li>
|
79
config/boards/s4s.config.ini
Normal file
79
config/boards/s4s.config.ini
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
[s4s's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
;CSS_FORCE = //s.4cdn.org/css/yotsubluenew.662.css
|
||||||
|
;CSS_SPOOKY = yes
|
||||||
|
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 16
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 2048
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
;REPLIES_SHOWN = 3
|
||||||
|
; Maximum number of lines shown on index pages
|
||||||
|
;MAX_LINES_SHOWN = 10
|
||||||
|
; Maximum number of lines allowed in a post
|
||||||
|
;MAX_LINES = 50
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 15
|
||||||
|
; Number of bumps before thread will no longer bump
|
||||||
|
;MAX_RES = 500
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
;MAX_IMGRES = 250
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 300
|
||||||
|
; Sage OPs replies if the length since their last post is too short
|
||||||
|
RENZOKU_OP = yes
|
||||||
|
; Time since last post when OPs replies will sage
|
||||||
|
RENZOKU_OP_TIME = 120
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "[s4s] - Shit 4chan Says" is 4chan's imageboard for posting dank memes :^)
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,s4s,memes
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
TITLE = [s4s] - Sh*t 4chan Says
|
||||||
|
|
||||||
|
; Enable wordfilters
|
||||||
|
WORD_FILT = no
|
||||||
|
|
||||||
|
; Enable recording of seconds in the date (changing this does not affect old posts)
|
||||||
|
SHOW_SECONDS = yes
|
||||||
|
|
||||||
|
; Show number of unique IPs in the post log
|
||||||
|
SHOW_UNIQUES = no
|
||||||
|
|
||||||
|
; Enable fortune-teller (use #fortune as tripcode)
|
||||||
|
FORTUNE_TRIP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-s4s1.png,spoiler-s4s2.png,spoiler-s4s3.png,spoiler-s4s4.png,spoiler-s4s5.png,spoiler-s4s6.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 6
|
||||||
|
|
||||||
|
; Sticky these posts
|
||||||
|
AUTOSTICKY = no
|
||||||
|
|
||||||
|
; Hide name and subject field
|
||||||
|
FORCED_ANON = no
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = no
|
||||||
|
|
||||||
|
; Strip tripcodes from names
|
||||||
|
STRIP_TRIPCODE = yes
|
33
config/boards/sci.config.ini
Normal file
33
config/boards/sci.config.ini
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
[sci's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/sci/ - Science & Math" is 4chan's board for the discussion of science and math.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,science,math,mathematics
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; jsMath support
|
||||||
|
JSMATH = yes
|
||||||
|
|
||||||
|
; Allow PDF upload and thumbnailing (needs /usr/local/bin/gs)
|
||||||
|
ENABLE_PDF = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
MAX_IMGRES = 250
|
||||||
|
|
||||||
|
; abbreviator might eat math
|
||||||
|
MAX_LINES_SHOWN = 20
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Additional supported file types are: PDF</li>\
|
||||||
|
<li>Use <span class="tex-logo">T<sub>e</sub>X</span> with [math] tags for inline and [eqn] tags for block equations.</li>\
|
||||||
|
<li>Right-click equations to view the source.</li>
|
51
config/boards/soc.config.ini
Normal file
51
config/boards/soc.config.ini
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
[soc's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/soc/ - Cams & Meetups" is 4chan's board for camwhores and meetups.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,social,meetup,hookup,cams,camwhore,chans,camwhoring,kik,snapchat
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Strip EXIF tags from images
|
||||||
|
; for privacy, but changes MD5s!
|
||||||
|
STRIP_EXIF = yes
|
||||||
|
|
||||||
|
; Strip tripcodes from names
|
||||||
|
;STRIP_TRIPCODE = yes
|
||||||
|
|
||||||
|
; Hide name and subject field
|
||||||
|
;FORCED_ANON = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
DISP_ID_NO_HEAVEN = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Number of bumps before thread will no longer bump
|
||||||
|
MAX_RES = 500
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 300
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 600
|
||||||
|
; Sage OPs replies if the length since their last post is too short
|
||||||
|
RENZOKU_OP = yes
|
||||||
|
; Time since last post when OPs replies will sage
|
||||||
|
RENZOKU_OP_TIME = 300
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 5120
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 8000
|
||||||
|
|
||||||
|
; Remove the threads least recently replied to
|
||||||
|
EXPIRE_NEGLECTED = yes
|
40
config/boards/sp.config.ini
Normal file
40
config/boards/sp.config.ini
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
[sp's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 250
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/sp/ - Sports" is 4chan's imageboard for sports discussion.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,sports,football,baseball,basketball,soccer,wrestling,banter,hockey,rugby
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Use this only for big games like the Superb Owl...
|
||||||
|
; rebuild with rebuildd instead of each post
|
||||||
|
;STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Show country flags next to names
|
||||||
|
SHOW_COUNTRY_FLAGS = yes
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Number of bumps
|
||||||
|
MAX_RES = 500
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 300
|
21
config/boards/t.config.ini
Normal file
21
config/boards/t.config.ini
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[t's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/t/ - Torrents" is 4chan's imageboard for posting links and descriptions to torrents.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,torrent,tracker,torrenting
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
REPLIES_SHOWN = 1
|
||||||
|
; Maximum number of lines shown on index pages
|
||||||
|
MAX_LINES_SHOWN = 6
|
217
config/boards/test.config.ini
Normal file
217
config/boards/test.config.ini
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
[test's config]
|
||||||
|
|
||||||
|
MAIN_DOMAIN = 4chan.org
|
||||||
|
PHP_SERVER = https://sys.4chan.org/
|
||||||
|
|
||||||
|
CAPTCHA_ALLOW_BYPASS = yes
|
||||||
|
|
||||||
|
;ENABLE_PAINTERJS = yes
|
||||||
|
;ENABLE_OEKAKI_REPLAYS = yes
|
||||||
|
|
||||||
|
;AUTOARCHIVE_CAP = 3
|
||||||
|
|
||||||
|
;S_ANONAME = =
|
||||||
|
|
||||||
|
;MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; maximum number of reposted live reply images, 0 for no limit
|
||||||
|
MAX_IMG_REPOST_COUNT = 0
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 5
|
||||||
|
|
||||||
|
REPLIES_SHOWN = 5
|
||||||
|
|
||||||
|
ADS_BIDGLASS = no
|
||||||
|
|
||||||
|
ADS_DANBO = no
|
||||||
|
;AD_EMBEDEARLY = <script src="//cdn-s2s.buysellads.net/pub/4channel.js" data-cfasync="false"></script><script>BSAS2S_targeting.push(['board', [ '{{BOARD_DIR}}' ]])</script>
|
||||||
|
|
||||||
|
; content abc mobile inter-replies
|
||||||
|
;AD_RC_TOP = 107704
|
||||||
|
;AD_RC_TOP_MOBILE = 107761
|
||||||
|
|
||||||
|
;AD_INTERTHREAD_ENABLED = yes
|
||||||
|
|
||||||
|
; Text-only mode
|
||||||
|
;TEXT_ONLY = yes
|
||||||
|
; Allow thread OPs to have files when in TEXT_ONLY mode
|
||||||
|
;TEXT_ONLY_ALLOW_OP = no
|
||||||
|
|
||||||
|
;PERMASAGE_HOURS = 0
|
||||||
|
;COM_REGEX = no
|
||||||
|
|
||||||
|
;S_INVALID_COM = Your post must contain at least one valid URL
|
||||||
|
|
||||||
|
; Event CSS. Name must correspond to a stylesheet file.
|
||||||
|
;CSS_EVENT_NAME = spooky
|
||||||
|
|
||||||
|
;ROBOT9000 = yes
|
||||||
|
;ROBOT9000_POSTS = r9k_posts
|
||||||
|
;ROBOT9000_MUTES = r9k_mutes
|
||||||
|
|
||||||
|
OP_MARKUP = yes
|
||||||
|
;MAX_IMGRES = 3
|
||||||
|
|
||||||
|
MAX_USER_THREADS = 50
|
||||||
|
;MAX_USER_THREADS_PERIOD = 24
|
||||||
|
|
||||||
|
SQLLOGMD5 = f_md5
|
||||||
|
;UPLOAD_BOARD = yes
|
||||||
|
|
||||||
|
;GIF_ONLY = yes
|
||||||
|
;FORTUNE_TRIP = yes
|
||||||
|
|
||||||
|
;CAPTCHA = no
|
||||||
|
|
||||||
|
;DICE_ROLL = yes
|
||||||
|
|
||||||
|
;FORCED_ANON = yes
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 4096
|
||||||
|
; Maximum filesize for webm files. Must be <= MAX_KB
|
||||||
|
MAX_WEBM_FILESIZE = 4096
|
||||||
|
; Maximum duration of a video stream in seconds
|
||||||
|
;MAX_WEBM_DURATION = 30
|
||||||
|
|
||||||
|
ENABLE_WEBM_AUDIO = yes
|
||||||
|
|
||||||
|
;JSMATH = yes
|
||||||
|
|
||||||
|
META_DESCRIPTION = /test/ - Testing
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,test,testing
|
||||||
|
|
||||||
|
;PASS_POST_ONLY = yes
|
||||||
|
|
||||||
|
;PARTY = yes
|
||||||
|
;PARTY_IMAGE = xmashat.gif
|
||||||
|
;CSS_EVENT_NAME = tomorrow
|
||||||
|
;CSS_EVENT_VERSION = 1
|
||||||
|
|
||||||
|
;STICKY_CAP = 3
|
||||||
|
|
||||||
|
ENABLE_ARCHIVE = yes
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
;ARCHIVE_MAX_AGE = 0
|
||||||
|
ARCHIVE_REBUILD_DELAY = 60
|
||||||
|
|
||||||
|
EMBEDEARLY =
|
||||||
|
|
||||||
|
;PAGE_MAX = 1
|
||||||
|
; Threads per page
|
||||||
|
;DEF_PAGES = 3
|
||||||
|
|
||||||
|
; Maximum number of entries before oldest thread is pruned
|
||||||
|
LOG_MAX = 500
|
||||||
|
|
||||||
|
;EXPIRE_NEGLECTED = no
|
||||||
|
|
||||||
|
; Disable lockdown mode for /test/
|
||||||
|
LOCKDOWN = no
|
||||||
|
|
||||||
|
CLEANUP_UPLOADS = yes
|
||||||
|
NOSCRIPT_CAPTCHA_ONLY = no
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
;DISP_ID = yes
|
||||||
|
; If DISP_ID is enabled, make IDs per-thread instead of per-board?
|
||||||
|
;DISP_ID_PER_THREAD = yes
|
||||||
|
; If DISP_ID is enabled, stop ID from being Heaven when sage is used
|
||||||
|
;DISP_ID_NO_HEAVEN = yes
|
||||||
|
|
||||||
|
SHOW_BLOTTER = yes
|
||||||
|
|
||||||
|
S_RULES =
|
||||||
|
|
||||||
|
CODE_TAGS = yes
|
||||||
|
SJIS_TAGS = no
|
||||||
|
|
||||||
|
STRIP_EXIF = yes
|
||||||
|
|
||||||
|
;SHOW_COUNTRY_FLAGS = yes
|
||||||
|
;ENABLE_BOARD_FLAGS = yes
|
||||||
|
; If not set, BOARD_DIR will be used.
|
||||||
|
; Flag settings are inside lib/flags_*.php
|
||||||
|
; Flag images and CSS files are inside image/flags/* on STATIC_SERVER
|
||||||
|
;BOARD_FLAGS_TYPE = pol
|
||||||
|
|
||||||
|
;CSS_VERSION_BOARD_FLAGS = 1
|
||||||
|
|
||||||
|
;PREUPLOAD_CAPTCHA = yes
|
||||||
|
|
||||||
|
[General Locations]
|
||||||
|
|
||||||
|
; The default value for BOARD_DIR is automatically set by config.php.
|
||||||
|
; it can be overridden, but it can't be defined as any useful value in this file.
|
||||||
|
; Directory name of this board relative to DOCUMENT_ROOT
|
||||||
|
; e.g. "b", "e", "hr"
|
||||||
|
BOARD_DIR = test
|
||||||
|
|
||||||
|
; The category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; CloudFlare API
|
||||||
|
;CLOUDFLARE_PURGE_ON_DEL = no
|
||||||
|
|
||||||
|
; Enable code tags
|
||||||
|
;CODE_TAGS = yes
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
TITLE = /test/ - Test
|
||||||
|
|
||||||
|
; Text to be shown at the top of each board
|
||||||
|
;GLOBAL_MSG_FILE = /www/global/globalmsg.test.txt
|
||||||
|
|
||||||
|
; Paths of header and fooder
|
||||||
|
NAV_TXT = /www/global/yotsuba/header.txt
|
||||||
|
NAV2_TXT = /www/global/yotsuba/footer.txt
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Enable recording of seconds in the date (changing this does not affect old posts)
|
||||||
|
SHOW_SECONDS = yes
|
||||||
|
SPOILERS = yes
|
||||||
|
|
||||||
|
WORD_FILT = yes
|
||||||
|
|
||||||
|
FAVICON = //s.4cdn.org/image/favicon-test.ico
|
||||||
|
|
||||||
|
ENABLE_CATALOG = yes
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
USE_RSS = no
|
||||||
|
|
||||||
|
; JSON Stuff
|
||||||
|
ENABLE_JSON = yes
|
||||||
|
ENABLE_JSON_INDEXES = no
|
||||||
|
ENABLE_JSON_CATALOG = no
|
||||||
|
ENABLE_JSON_THREADS = no
|
||||||
|
|
||||||
|
; Enable EXIF parsing during post (needs /www/global/bin/exiftags)
|
||||||
|
ENABLE_EXIF = yes
|
||||||
|
|
||||||
|
[Testing]
|
||||||
|
|
||||||
|
SQL_DEBUG = yes
|
||||||
|
|
||||||
|
TEST_BOARD = yes
|
||||||
|
|
||||||
|
RENZOKU3 = 30
|
||||||
|
|
||||||
|
TENSORCHAN_MODE = 2
|
||||||
|
TENSORCHAN_LOG_ONLY = no
|
||||||
|
|
||||||
|
;AD_MIDDLE_PLEA =
|
||||||
|
;AD_BOTTOM_PLEA =
|
||||||
|
|
||||||
|
;RECORD_POSTS = no
|
||||||
|
|
||||||
|
;PROFILING = no
|
||||||
|
|
||||||
|
;PROCESSLIST = no
|
||||||
|
|
||||||
|
;META_BOARD = yes
|
||||||
|
|
||||||
|
;STRIP_TRIPCODE = yes
|
46
config/boards/tg.config.ini
Normal file
46
config/boards/tg.config.ini
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
[tg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/tg/ - Traditional Games" is 4chan's imageboard for discussing traditional gaming, such as board games and tabletop RPGs.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,d&d,warhammer,traditional games,board games,quests
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-tg1.png,spoiler-tg2.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 2
|
||||||
|
|
||||||
|
; Allow PDF upload and thumbnailing (needs /usr/local/bin/gs)
|
||||||
|
ENABLE_PDF = yes
|
||||||
|
|
||||||
|
; Allow rolling of dice
|
||||||
|
DICE_ROLL = yes
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
;PERMASAGE_HOURS = 168
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
; Rules below form (tip: use backslash to continue to next line)
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Additional supported file types are: PDF</li>\
|
||||||
|
<li>Roll dice with "dice+<strong>number</strong>d<strong>faces</strong>" in the options field (without quotes).</li>
|
18
config/boards/toy.config.ini
Normal file
18
config/boards/toy.config.ini
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[toy's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
; 14 days
|
||||||
|
PERMASAGE_HOURS = 336
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/toy/ - Toys" is 4chan's imageboard for talking about all kinds of toys!
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,toy,toys,figures
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
42
config/boards/trash.config.ini
Normal file
42
config/boards/trash.config.ini
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
[trash's config]
|
||||||
|
|
||||||
|
AD_JUICY_TOP_CATALOG = 665069
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/trash/ - Off-topic" is 4chan's imageboard jail for off-topic threads.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,anonymous,random,memes
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Remove the threads least recently replied to
|
||||||
|
EXPIRE_NEGLECTED = yes
|
||||||
|
|
||||||
|
; Enable archiving of expired posts?
|
||||||
|
ENABLE_ARCHIVE = no
|
||||||
|
|
||||||
|
; skip doubles enabled at /b/ postcount ~381720221, disabled at ~584248512
|
||||||
|
SKIP_DOUBLES = no
|
||||||
|
|
||||||
|
; Show number of unique IPs in the post log
|
||||||
|
SHOW_UNIQUES = no
|
||||||
|
|
||||||
|
; Hide name and subject field
|
||||||
|
;FORCED_ANON = yes
|
||||||
|
|
||||||
|
; Show poster's unique ID based on IP and date, if email field is blank
|
||||||
|
DISP_ID = no
|
||||||
|
|
||||||
|
; Strip tripcodes from names
|
||||||
|
;STRIP_TRIPCODE = yes
|
||||||
|
|
||||||
|
; Allow credit allocation for captcha bypassing.
|
||||||
|
CAPTCHA_ALLOW_BYPASS = no
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
SUBTITLE = The stories and information posted here are artistic works of fiction and falsehood.<br>Only a fool would take anything posted here as fact.
|
27
config/boards/trv.config.ini
Normal file
27
config/boards/trv.config.ini
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
[trv's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 10000
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/trv/ - Travel" is 4chan's imageboard dedicated to travel and the countries of the world.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,travel,japan,vacation,world
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Maximum file size allowed is {{MAX_KB}} KB.</li>\
|
||||||
|
<li>Images greater than {{MAX_DIMENSION}}x{{MAX_DIMENSION}} pixels are not allowed.</li>
|
35
config/boards/tv.config.ini
Normal file
35
config/boards/tv.config.ini
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
[tv's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 250
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/tv/ - Television & Film" is 4chan's imageboard dedicated to the discussion of television and film.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,tv,television,film,movies,celebrity
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-tv1.png,spoiler-tv2.png,spoiler-tv3.png,spoiler-tv4.png,spoiler-tv5.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 5
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
27
config/boards/u.config.ini
Normal file
27
config/boards/u.config.ini
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
[u's config]
|
||||||
|
|
||||||
|
[Advertisements]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/u/ - Yuri" is 4chan's imageboard for yuri hentai images.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,japan,hentai,yuri
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
; Expire least recently replied threads
|
||||||
|
EXPIRE_NEGLECTED = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
59
config/boards/v.config.ini
Normal file
59
config/boards/v.config.ini
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
[v's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; Threads per page
|
||||||
|
DEF_PAGES = 20
|
||||||
|
|
||||||
|
[Temporary]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 170
|
||||||
|
|
||||||
|
;EMBED_INDEX = <center><iframe style="display:none;" width="640" height="360" src="https://www.youtube.com/embed/zwHZwvTdnPI?autoplay=1&loop=1&playlist=zwHZwvTdnPI" frameborder="0"></iframe></center>
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
;skip doubles enabled on /v/ at ~129889805
|
||||||
|
SKIP_DOUBLES = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-v1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/v/ - Video Games" is 4chan's imageboard dedicated to the discussion of PC and console video games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam,vidya
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; rebuild with rebuildd instead of each post
|
||||||
|
STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
; Time in seconds after thread creation during which the OP cannot bump his thread
|
||||||
|
RENZOKU_OP_TIME = 600
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
64
config/boards/vg.config.ini
Normal file
64
config/boards/vg.config.ini
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
[vg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
;skip doubles enabled on /vg/ at 93794
|
||||||
|
SKIP_DOUBLES = yes
|
||||||
|
|
||||||
|
; Require a subject
|
||||||
|
REQUIRE_SUBJECT = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 140
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-vg1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vg/ - Video Game Generals" is 4chan's imageboard dedicated to the discussion of PC and console video games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; rebuild with rebuildd instead of each post
|
||||||
|
STATIC_REBUILD = 1
|
||||||
|
|
||||||
|
MAX_W = 200
|
||||||
|
MAX_H = 200
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Number of bumps
|
||||||
|
MAX_RES = 750
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 375
|
||||||
|
; Maximum number of pages (overrides LOG_MAX; 0 = disable)
|
||||||
|
;PAGE_MAX = 5
|
||||||
|
; Threads per page
|
||||||
|
DEF_PAGES = 20
|
||||||
|
; Maximum number of lines allowed in a post
|
||||||
|
MAX_LINES = 100
|
||||||
|
; Maximum number of replies shown to a thread on index pages
|
||||||
|
REPLIES_SHOWN = 0
|
||||||
|
|
||||||
|
; Seconds between intra thread posts
|
||||||
|
RENZOKU = 90
|
||||||
|
; Seconds between intra thread image posts
|
||||||
|
RENZOKU2 = 120
|
41
config/boards/vip.config.ini
Normal file
41
config/boards/vip.config.ini
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
[vip's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
PASS_POST_ONLY = yes
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
SHOW_THREAD_UNIQUES = no
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
; Enable Oekaki board features
|
||||||
|
ENABLE_PAINTERJS = yes
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
;SPOILER_NUM = 0
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vip/ - Very Important Posts" is 4chan's imageboard for Pass users.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,random
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
;EMBED_INDEX = <iframe style="display:none" width="0" height="0" src="https://www.youtube.com/embed/YQYPmtK03c0?start=1&autoplay=1&loop=1&playlist=YQYPmtK03c0" frameborder="0"></iframe>
|
||||||
|
|
||||||
|
SJIS_TAGS = yes
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 300
|
||||||
|
MAX_IMGRES = 300
|
39
config/boards/vm.config.ini
Normal file
39
config/boards/vm.config.ini
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
[vm's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Temporary]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 120
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-v1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vmg/ - Video Games/Multiplayer" is 4chan's imageboard dedicated to the discussion of multiplayer video games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam,vidya
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
39
config/boards/vmg.config.ini
Normal file
39
config/boards/vmg.config.ini
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
[vrpg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Temporary]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 120
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-vmg1.png,spoiler-vmg2.png,spoiler-vmg3.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 3
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vmg/ - Video Games/Mobile" is 4chan's imageboard dedicated to the discussion of video games on mobile devices.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam,vidya
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
26
config/boards/vp.config.ini
Normal file
26
config/boards/vp.config.ini
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[vp's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vp/ - Pokémon" is 4chan's imageboard dedicated to discussing the Pokémon series of video games and shows.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,nintendo,wii,ds,video games,pokemon,pikachu
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; The title of the image board
|
||||||
|
;TITLE = /vp/ - Pokémon
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-vp1.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
32
config/boards/vr.config.ini
Normal file
32
config/boards/vr.config.ini
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
[vr's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; Permasage threads after X hours. 0 to disable.
|
||||||
|
PERMASAGE_HOURS = 336
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vr/ - Retro Games" is 4chan's imageboard for discussing retro console video games and classic arcade games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,games,video,retro,arcade,classics,consoles
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
;skip doubles enabled on /vr/ at 743
|
||||||
|
SKIP_DOUBLES = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-vr1.png,spoiler-vr2.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 2
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
39
config/boards/vrpg.config.ini
Normal file
39
config/boards/vrpg.config.ini
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
[vrpg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Temporary]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 160
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-vrpg1.png,spoiler-vrpg2.png,spoiler-vrpg3.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 3
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vrpg/ - Video Games/RPG" is 4chan's imageboard dedicated to the discussion of role-playing video games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam,vidya
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
39
config/boards/vst.config.ini
Normal file
39
config/boards/vst.config.ini
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
[vst's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Temporary]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 120
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/spoiler-vst.png
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 1
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vst/ - Video Games/Strategy" is 4chan's imageboard dedicated to the discussion of strategy video games.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,consoles,playstation,psp,wii,ds,xbox,video games,mmorpg,wii u,pc game,ps3,ps4,xbone,xbox one,vita,nintendo,microsoft,steam,vidya
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; maximum number of threads per user, per board
|
||||||
|
MAX_USER_THREADS = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
MAX_RES = 500
|
||||||
|
MAX_IMGRES = 300
|
47
config/boards/vt.config.ini
Normal file
47
config/boards/vt.config.ini
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[vt's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
AUTOARCHIVE_CAP = 1500
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
JSON_TAIL_SIZE = 50
|
||||||
|
|
||||||
|
MOBILE_IMG_RESIZE = yes
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/vt/ - Virtual YouTubers" is 4chan's board for discussing virtual YouTubers ("VTubers").
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,vtuber,youtuber
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Don't allow user deletion of threads
|
||||||
|
NO_DELETE_OP = yes
|
||||||
|
|
||||||
|
; Seconds between new threads
|
||||||
|
RENZOKU3 = 3600
|
||||||
|
|
||||||
|
; Maximum amount of image replies in a thread
|
||||||
|
MAX_IMGRES = 300
|
||||||
|
|
||||||
|
; Enable spoilers
|
||||||
|
SPOILERS = yes
|
||||||
|
; URL of thumbnail for spoilers
|
||||||
|
SPOILER_THUMB = {{STATIC_SERVER}}image/{{!rand spoiler-vt1.png,spoiler-vt2.png,spoiler-vt3.png}}
|
||||||
|
; How many custom spoilers?
|
||||||
|
SPOILER_NUM = 3
|
||||||
|
|
||||||
|
MAX_COM_CHARS = 5000
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 72
|
||||||
|
|
||||||
|
; Use inference server to detect NSFW content.
|
||||||
|
; 0 = disabled, 1 = OPs only, 2 = All posts
|
||||||
|
TENSORCHAN_MODE = 2
|
31
config/boards/w.config.ini
Normal file
31
config/boards/w.config.ini
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
[w's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 6144
|
||||||
|
; Minimum dimensions of an image
|
||||||
|
MIN_W = 480
|
||||||
|
MIN_H = 600
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/w/ - Anime/Wallpapers" is 4chan's imageboard for posting Japanese anime wallpapers.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,japan,japanese,anime,wallpaper,wallpapers,desktop
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; override "worksafe" defaults to match /wg/
|
||||||
|
MAX_IMGRES = 300
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Maximum file size allowed is {{MAX_KB}} KB.</li>\
|
||||||
|
<li>Images smaller than {{MIN_W}}x{{MIN_H}} pixels are not allowed.</li>
|
31
config/boards/wg.config.ini
Normal file
31
config/boards/wg.config.ini
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
[wg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5148,5f599fefc6c73,0,2,5149,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5187,5f5ef92eec034,176,2,5188,5f5ef93fac7ed
|
||||||
|
|
||||||
|
;ADS_BIDGLASS_TOP_DESKTOP_FB = <div id="nwstfb" data-pid="10011953" data-w="728" data-h="90"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
;ADS_BIDGLASS_TOP_MOBILE_FB = <div id="nwstfb" data-pid="10001654" data-w="300" data-h="250"><\/div><script src="//s.4cdn.org/js/house_banners_nws.js"><\/script>
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 6144
|
||||||
|
; Minimum dimensions of an image
|
||||||
|
MIN_W = 480
|
||||||
|
MIN_H = 600
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/wg/ - Wallpapers/General" is 4chan's imageboard for posting general wallpapers.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,general,wallpaper,wallpapers,desktop
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = nws
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Maximum file size allowed is {{MAX_KB}} KB.</li>\
|
||||||
|
<li>Images smaller than {{MIN_W}}x{{MIN_H}} pixels are not allowed.</li>
|
44
config/boards/wsg.config.ini
Normal file
44
config/boards/wsg.config.ini
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
[wsg's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
; maximum number of reposted live reply images, 0 for no limit
|
||||||
|
MAX_IMG_REPOST_COUNT = 3
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 6144
|
||||||
|
; Maximum filesize for webm files. Must be <= MAX_KB
|
||||||
|
MAX_WEBM_FILESIZE = 6144
|
||||||
|
; Maximum duration of a video stream in seconds
|
||||||
|
MAX_WEBM_DURATION = 400
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/wsg/ - Worksafe GIF" is 4chan's imageboard dedicated to sharing worksafe animated GIFs and WEBMs.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,animated,gif,gifs,webm,webms
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
; Detect and handle embedded data in file uploads:
|
||||||
|
; - Rejects PNGs and JPGs.
|
||||||
|
; - Removes embedded data from GIFs, modifying the original file.
|
||||||
|
CLEANUP_UPLOADS = no
|
||||||
|
|
||||||
|
; Allow audio streams in webm
|
||||||
|
ENABLE_WEBM_AUDIO = yes
|
||||||
|
; Only allow gifs
|
||||||
|
GIF_ONLY = yes
|
||||||
|
|
||||||
|
; Archived threads max age in hours for archive trimming. 0 disables trimming.
|
||||||
|
ARCHIVE_MAX_AGE = 48
|
||||||
|
|
||||||
|
[Misc]
|
||||||
|
|
||||||
|
S_RULES = <li>Please read the <a href="//www.4chan.org/rules#{{BOARD_DIR}}">Rules</a> and <a href="//www.4chan.org/faq">FAQ</a> before posting.</li>\
|
||||||
|
<li>Supported file types are: GIF, WEBM, MP4</li>
|
23
config/boards/wsr.config.ini
Normal file
23
config/boards/wsr.config.ini
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[wsr's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/wsr/ - Worksafe Requests" is 4chan's imageboard dedicated to fulfilling non-NSFW requests.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,request
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
||||||
|
|
||||||
|
[Limits]
|
||||||
|
|
||||||
|
; Maximum upload size in KB
|
||||||
|
MAX_KB = 8192
|
||||||
|
; Maximum width or height of an image (MUST be 11000 or less)
|
||||||
|
MAX_DIMENSION = 10000
|
||||||
|
|
||||||
|
ENABLE_WEBM_AUDIO = yes
|
14
config/boards/x.config.ini
Normal file
14
config/boards/x.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[x's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/x/ - Paranormal" is 4chan's imageboard for the discussion of paranormal, spooky pictures and conspiracy theories.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,paranormal,spooky,creepy,halloween,conspiracies,conspiracy theories
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
14
config/boards/xs.config.ini
Normal file
14
config/boards/xs.config.ini
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[xs's config]
|
||||||
|
|
||||||
|
; domainid,sizeid,zoneid,k (desktop then mobile)
|
||||||
|
AD_BIDGEAR_TOP = 176,1,5050,5f599fefc6c73,176,2,470,5f59a00f01673
|
||||||
|
AD_BIDGEAR_BOTTOM = 176,1,5078,5f5ef92eec034,176,2,5079,5f5ef93fac7ed
|
||||||
|
|
||||||
|
[Features and related config]
|
||||||
|
|
||||||
|
; Text to go inside of the meta-description tag
|
||||||
|
META_DESCRIPTION = "/xs/ - Extreme Sports" is 4chan's imageboard imageboard dedicated to the discussion of extreme sports.
|
||||||
|
; Text to go inside of the meta-keywords tag
|
||||||
|
META_KEYWORDS = imageboard,worksafe,sports,alternative,skateboarding,surfing,climbing,airsoft,paintball
|
||||||
|
; The board's category
|
||||||
|
CATEGORY = ws
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue