summaryrefslogtreecommitdiff
path: root/inc/config.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/config.php')
-rw-r--r--inc/config.php202
1 files changed, 181 insertions, 21 deletions
diff --git a/inc/config.php b/inc/config.php
index 86ddd5aa..dc65068f 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -103,7 +103,7 @@
/*
* ====================
- * Cache settings
+ * Cache, lock and queue settings
* ====================
*/
@@ -120,6 +120,7 @@
// $config['cache']['enabled'] = 'apc';
// $config['cache']['enabled'] = 'memcached';
// $config['cache']['enabled'] = 'redis';
+ // $config['cache']['enabled'] = 'fs';
// Timeout for cached objects such as posts and HTML.
$config['cache']['timeout'] = 60 * 60 * 48; // 48 hours
@@ -142,6 +143,12 @@
// (this file will be explicitly loaded during cache hit, but not during cache miss).
$config['cache_config'] = false;
+ // Define a lock driver.
+ $config['lock']['enabled'] = 'fs';
+
+ // Define a queue driver.
+ $config['queue']['enabled'] = 'fs'; // xD
+
/*
* ====================
* Cookie settings
@@ -511,6 +518,13 @@
// The timeout for the above, in seconds.
$config['upload_by_url_timeout'] = 15;
+ // Enable early 404? With default settings, a thread would 404 if it was to leave page 3, if it had less
+ // than 3 replies.
+ $config['early_404'] = false;
+
+ $config['early_404_page'] = 3;
+ $config['early_404_replies'] = 5;
+
// A wordfilter (sometimes referred to as just a "filter" or "censor") automatically scans users’ posts
// as they are submitted and changes or censors particular words or phrases.
@@ -550,6 +564,9 @@
// When true, the sage won't be displayed
$config['hide_sage'] = false;
+ // Don't display user's email when it's not "sage"
+ $config['hide_email'] = false;
+
// Attach country flags to posts.
$config['country_flags'] = false;
@@ -763,7 +780,7 @@
// Location of thumbnail to use for spoiler images.
$config['spoiler_image'] = 'static/spoiler.png';
// Location of thumbnail to use for deleted images.
- // $config['image_deleted'] = 'static/deleted.png';
+ $config['image_deleted'] = 'static/deleted.png';
// When a thumbnailed image is going to be the same (in dimension), just copy the entire file and use
// that as a thumbnail instead of resizing/redrawing.
@@ -804,8 +821,17 @@
// Set this to true if you're using a BSD
$config['bsd_md5'] = false;
- // Set this to true if you're having problems with image duplicated error and bsd_md5 doesn't help.
- $config['php_md5'] = false;
+ // Set this to true if you're using Linux and you can execute `md5sum` binary.
+ $config['gnu_md5'] = false;
+
+ // Use Tesseract OCR to retrieve text from images, so you can use it as a spamfilter.
+ $config['tesseract_ocr'] = false;
+
+ // Tesseract parameters
+ $config['tesseract_params'] = '';
+
+ // Tesseract preprocess command
+ $config['tesseract_preprocess_command'] = 'convert -monochrome %s -';
// Number of posts in a "View Last X Posts" page
$config['noko50_count'] = 50;
@@ -928,8 +954,8 @@
// Show page navigation links at the top as well.
$config['page_nav_top'] = false;
- // Show "Catalog" link in page navigation. Use with the Catalog theme.
- // $config['catalog_link'] = 'catalog.html';
+ // Show "Catalog" link in page navigation. Use with the Catalog theme. Set to false to disable.
+ $config['catalog_link'] = 'catalog.html';
// Board categories. Only used in the "Categories" theme.
// $config['categories'] = array(
@@ -998,6 +1024,10 @@
// Minify Javascript using http://code.google.com/p/minify/.
$config['minify_js'] = false;
+ // Dispatch thumbnail loading and image configuration with JavaScript. It will need a certain javascript
+ // code to work.
+ $config['javascript_image_dispatch'] = false;
+
/*
* ====================
* Video embedding
@@ -1193,16 +1223,74 @@
// Try not to build pages when we shouldn't have to.
$config['try_smarter'] = true;
- // EXPERIMENTAL: Defer static HTML building to a moment, when a given file is actually accessed.
- // Warning: This option won't run out of the box. You need to tell your webserver, that a file
- // for serving 403 and 404 pages is /smart_build.php. Also, you need to turn off indexes.
+/*
+ * ====================
+ * Advanced build
+ * ====================
+ */
+
+ // Strategies for file generation. Also known as an "advanced build". If you don't have performance
+ // issues, you can safely ignore that part, because it's hard to configure and won't even work on
+ // your free webhosting.
+ //
+ // A strategy is a function, that given the PHP environment and ($fun, $array) variable pair, returns
+ // an $action array or false.
+ //
+ // $fun - a controller function name, see inc/controller.php. This is named after functions, so that
+ // we can generate the files in daemon.
+ //
+ // $array - arguments to be passed
+ //
+ // $action - action to be taken. It's an array, and the first element of it is one of the following:
+ // * "immediate" - generate the page immediately
+ // * "defer" - defer page generation to a moment a worker daemon gets to build it (serving a stale
+ // page in the meantime). The remaining arguments are daemon-specific. Daemon isn't
+ // implemented yet :DDDD inb4 while(true) { generate(Queue::Get()) }; (which is probably it).
+ // * "build_on_load" - defer page generation to a moment, when the user actually accesses the page.
+ // This is a smart_build behaviour. You shouldn't use this one too much, if you
+ // use it for active boards, the server may choke due to a possible race condition.
+ // See my blog post: https://engine.vichan.net/blog/res/2.html
+ //
+ // So, let's assume we want to build a thread 1324 on board /b/, because a new post appeared there.
+ // We try the first strategy, giving it arguments: 'sb_thread', array('b', 1324). The strategy will
+ // now return a value $action, denoting an action to do. If $action is false, we try another strategy.
+ //
+ // As I said, configuration isn't easy.
+ //
+ // 1. chmod 0777 directories: tmp/locks/ and tmp/queue/.
+ // 2. serve 403 and 404 requests to go thru smart_build.php
+ // for nginx, this blog post contains config snippets: https://engine.vichan.net/blog/res/2.html
+ // 3. disable indexes in your webserver
+ // 4. launch any number of daemons (eg. twice your number of threads?) using the command:
+ // $ tools/worker.php
+ // You don't need to do that step if you are not going to use the "defer" option.
+ // 5. enable smart_build_helper (see below)
+ // 6. edit the strategies (see inc/functions.php for the builtin ones). You can use lambdas. I will test
+ // various ones and include one that works best for me.
+ $config['generation_strategies'] = array();
+ // Add a sane strategy. It forces to immediately generate a page user is about to land on. Otherwise,
+ // it has no opinion, so it needs a fallback strategy.
+ $config['generation_strategies'][] = 'strategy_sane';
+ // Add an immediate catch-all strategy. This is the default function of imageboards: generate all pages
+ // on post time.
+ $config['generation_strategies'][] = 'strategy_immediate';
+ // NOT RECOMMENDED: Instead of an all-"immediate" strategy, you can use an all-"build_on_load" one (used
+ // to be initialized using $config['smart_build']; ) for all pages instead of those to be build
+ // immediately. A rebuild done in this mode should remove all your static files
+ // $config['generation_strategies'][1] = 'strategy_smart_build';
+
+ // Deprecated. Leave it false. See above.
$config['smart_build'] = false;
- // Smart build related: when a file doesn't exist, where should we redirect?
+ // Use smart_build.php for dispatching missing requests. It may be useful without smart_build or advanced
+ // build, for example it will regenerate the missing files.
+ $config['smart_build_helper'] = true;
+
+ // smart_build.php: when a file doesn't exist, where should we redirect?
$config['page_404'] = '/404.html';
- // Smart build related: extra entrypoints.
- $config['smart_build_entrypoints'] = array();
+ // Extra controller entrypoints. Controller is used only by smart_build and advanced build.
+ $config['controller_entrypoints'] = array();
/*
* ====================
@@ -1235,6 +1323,8 @@
$config['mod']['link_bumpunlock'] = '[-Sage]';
$config['mod']['link_editpost'] = '[Edit]';
$config['mod']['link_move'] = '[Move]';
+ $config['mod']['link_cycle'] = '[Cycle]';
+ $config['mod']['link_uncycle'] = '[-Cycle]';
// Moderator capcodes.
$config['capcode'] = ' <span class="capcode">## %s</span>';
@@ -1378,6 +1468,9 @@
$config['mod']['deletebyip_global'] = ADMIN;
// Sticky a thread
$config['mod']['sticky'] = MOD;
+ // Cycle a thread
+ $config['mod']['cycle'] = MOD;
+ $config['cycle_limit'] = &$config['reply_limit'];
// Lock a thread
$config['mod']['lock'] = MOD;
// Post in a locked thread
@@ -1488,6 +1581,9 @@
$config['mod']['ban_appeals'] = MOD;
// View the recent posts page
$config['mod']['recent'] = MOD;
+ // Create pages
+ $config['mod']['edit_pages'] = MOD;
+ $config['pages_max'] = 10;
// Config editor permissions
$config['mod']['config'] = array();
@@ -1534,25 +1630,30 @@
/*
* ====================
- * Public post search
+ * Public pages
* ====================
*/
+
+ // Public post search settings
$config['search'] = array();
// Enable the search form
$config['search']['enable'] = false;
// Maximal number of queries per IP address per minutes
- $config['search']['queries_per_minutes'] = Array(15, 2);
+ $config['search']['queries_per_minutes'] = Array(15, 2);
// Global maximal number of queries per minutes
- $config['search']['queries_per_minutes_all'] = Array(50, 2);
+ $config['search']['queries_per_minutes_all'] = Array(50, 2);
// Limit of search results
- $config['search']['search_limit'] = 100;
+ $config['search']['search_limit'] = 100;
// Boards for searching
- //$config['search']['boards'] = array('a', 'b', 'c', 'd', 'e');
+ //$config['search']['boards'] = array('a', 'b', 'c', 'd', 'e');
+
+ // Enable public logs? 0: NO, 1: YES, 2: YES, but drop names
+ $config['public_logs'] = 0;
/*
* ====================
@@ -1589,6 +1690,45 @@
// $config['api']['extra_fields'] = array('body_nomarkup' => 'com_nomarkup');
/*
+ * ==================
+ * NNTPChan settings
+ * ==================
+ */
+
+/*
+ * Please keep in mind that NNTPChan support in vichan isn't finished yet / is in an experimental
+ * state. Please join #nntpchan on Rizon in order to peer with someone.
+ */
+
+ $config['nntpchan'] = array();
+
+ // Enable NNTPChan integration
+ $config['nntpchan']['enabled'] = false;
+
+ // NNTP server
+ $config['nntpchan']['server'] = "localhost:1119";
+
+ // Global dispatch array. Add your boards to it to enable them. Please make
+ // sure that this setting is set in a global context.
+ $config['nntpchan']['dispatch'] = array(); // 'overchan.test' => 'test'
+
+ // Trusted peer - an IP address of your NNTPChan instance. This peer will have
+ // increased capabilities, eg.: will evade spamfilter.
+ $config['nntpchan']['trusted_peer'] = '127.0.0.1';
+
+ // Salt for message ID generation. Keep it long and secure.
+ $config['nntpchan']['salt'] = 'change_me+please';
+
+ // A local message ID domain. Make sure to change it.
+ $config['nntpchan']['domain'] = 'example.vichan.net';
+
+ // An NNTPChan group name.
+ // Please set this setting in your board/config.php, not globally.
+ $config['nntpchan']['group'] = false; // eg. 'overchan.test'
+
+
+
+/*
* ====================
* Other/uncategorized
* ====================
@@ -1670,8 +1810,28 @@
'<img style="width:360px;height:270px;" src="//img.youtube.com/vi/$2/0.jpg" class="post-image"/>'.
'</a></div>';
- // Slack Report Notification
- $config['slack'] = true;
- $config['slack_channel'] = "reports";
- $config['slack_incoming_webhook_endpoint'] = "https://hooks.slack.com/services/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";
+ // Slack Report Notification
+ $config['slack'] = true;
+ $config['slack_channel'] = "reports";
+ $config['slack_incoming_webhook_endpoint'] = "https://hooks.slack.com/services/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";
+
+ // Password hashing function
+ //
+ // $5$ <- SHA256
+ // $6$ <- SHA512
+ //
+ // 25000 rounds make for ~0.05s on my 2015 Core i3 computer.
+ //
+ // https://secure.php.net/manual/en/function.crypt.php
+ $config['password_crypt'] = '$6$rounds=25000$';
+
+ // Password hashing method version
+ // If set to 0, it won't upgrade hashes using old password encryption schema, only create new.
+ // You can set it to a higher value, to further migrate to other password hashing function.
+ $config['password_crypt_version'] = 1;
+
+ // Use CAPTCHA for reports?
+ $config['report_captcha'] = false;
+ // Allowed HTML tags in ?/edit_pages.
+ $config['allowed_html'] = 'a[href|title],p,br,li,ol,ul,strong,em,u,h2,b,i,tt,div,img[src|alt|title],hr';