init 4chan
This commit is contained in:
@@ -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
File diff suppressed because it is too large
Load Diff
+422
@@ -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();
|
||||
@@ -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,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
File diff suppressed because it is too large
Load Diff
+1075
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
@@ -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>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<div id="azk53379"></div>
|
||||
@@ -0,0 +1 @@
|
||||
<div id="azk98887"></div>
|
||||
@@ -0,0 +1 @@
|
||||
<div id="azk91603"></div>
|
||||
@@ -0,0 +1 @@
|
||||
<div id="azk53379"></div>
|
||||
@@ -0,0 +1 @@
|
||||
<div id="azk98887"></div>
|
||||
@@ -0,0 +1 @@
|
||||
<div id="azk91603"></div>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user