diff options
| author | Savetheinternet <savetheinternet@n0v4.com> | 2010-11-05 01:35:53 +1100 |
|---|---|---|
| committer | Savetheinternet <savetheinternet@n0v4.com> | 2010-11-05 01:35:53 +1100 |
| commit | 599530e935ac85978ced7198b52212308a6b0f88 (patch) | |
| tree | 5e78f53b7ffd8a504913d0bb39d6c813b505de7c | |
| parent | 664dce496a9259cc60ec39c31e47023f3c3eb788 (diff) | |
| parent | 6cdaed486e6c373b52f639d3e92d7365242f6a89 (diff) | |
Merge branch 'master' of github.com:savetheinternet/Tinyboard
Conflicts:
inc/config.php
inc/functions.php
post.php
| -rw-r--r-- | .gitignore | 10 | ||||
| -rw-r--r-- | README.md | 91 | ||||
| -rw-r--r-- | inc/config.php | 113 | ||||
| -rw-r--r-- | inc/display.php | 18 | ||||
| -rw-r--r-- | inc/functions.php | 10 | ||||
| -rw-r--r-- | inc/instance-config.php | 19 | ||||
| -rw-r--r-- | post.php | 7 | ||||
| -rw-r--r-- | test.php | 3 |
8 files changed, 185 insertions, 86 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..8108863c --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# static html
+*.html
+
+# directories
+res/
+src/
+thumb/
+
+# instance-config
+inc/instance-config.php
\ No newline at end of file @@ -1,45 +1,46 @@ -# Tinyboard - A lightweight PHP imageboard.
-
-## About
-Tinyboard is an imageboard software package written in PHP. It aims to maintain a stable, fast, clean and user-friendly engine for imageboards. Development for Tinyboard started in October 2010 and the project is being lead by [OmegaSDG][o] ("Omega Software Develop Group"). You can contact the development team over IRC at irc.n0v4.com #tinyboard.
-
-Tinyboard is not currently at a stable state.
-
-[o]: http://omegadev.org/
-
-## Installation
- 1. Tinyboard requires a MySQL database and a user to work. Create one.
- 2. Import 'install.sql' into the database. There are several ways to do this.
- - using phpMyAdmin
- - `mysql -uUSERNAME -pPASSWORD DATABASE < install.sql`
- 3. Edit '[inc/config.php][c]' to suit your installation
- 4. Make sure that the directories used by Tinyboard are writable. Depending on your setup, you may need to `chmod` the directories to 777.
- The default directories are:
- - ./res
- - ./src
- - ./thumb
- - . (document root)
- 5. Ensure everything is okay by running [test.php][t] in a browser. The script will try and help you correct your errors.
- 6. Run the [post.php][p] script. It should create an index.html and redirect you to it if everything is okay.
- 7. Optional (highly recommended): Either delete or chmod as unreadable the following files: [test.php][t], [install.sql][i], and this [README][r].
-
-[t]: http://github.com/savetheinternet/Tinyboard/blob/master/test.php
-[p]: http://github.com/savetheinternet/Tinyboard/blob/master/post.php
-[c]: http://github.com/savetheinternet/Tinyboard/blob/master/inc/config.php
-[i]: http://github.com/savetheinternet/Tinyboard/blob/master/install.sql
-[r]: http://github.com/savetheinternet/Tinyboard/blob/master/README.md
-
-## License
-Copyright (c) 2010 by Omega Software Development Group
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file +# Tinyboard - A lightweight PHP imageboard. + +## About +Tinyboard is an imageboard software package written in PHP. It aims to maintain a stable, fast, clean and user-friendly engine for imageboards. Development for Tinyboard started in October 2010 and the project is being lead by [OmegaSDG][o] ("Omega Software Develop Group"). You can contact the development team over IRC at irc.n0v4.com #tinyboard. + +Tinyboard is not currently at a stable state. + +[o]: http://omegadev.org/ + +## Installation + 1. Tinyboard requires a MySQL database and a user to work. Create one. + 2. Import 'install.sql' into the database. There are several ways to do this. + - using phpMyAdmin + - `mysql -uUSERNAME -pPASSWORD DATABASE < install.sql` + 3. Edit 'instance-config.php' to suit your installation. You should copy some values from '[inc/config.php][c]' to redefine them in the instance-config. + 4. Make sure that the directories used by Tinyboard are writable. Depending on your setup, you may need to `chmod` the directories to 777. + The default directories are: + - ./res + - ./src + - ./thumb + - . (document root) + 5. Ensure everything is okay by running [test.php][t] in a browser. The script will try and help you correct your errors. + 6. Run the [post.php][p] script. It should create an index.html and redirect you to it if everything is okay. + 7. Optional (highly recommended): Either delete or chmod as unreadable the following files: [test.php][t], [install.sql][i], and this [README][r]. + +[t]: http://github.com/savetheinternet/Tinyboard/blob/master/test.php +[p]: http://github.com/savetheinternet/Tinyboard/blob/master/post.php +[c]: http://github.com/savetheinternet/Tinyboard/blob/master/inc/config.php +[i]: http://github.com/savetheinternet/Tinyboard/blob/master/install.sql +[r]: http://github.com/savetheinternet/Tinyboard/blob/master/README.md + +## License +Copyright (c) 2010 by Omega Software Development Group + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above copyright +notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + diff --git a/inc/config.php b/inc/config.php index 24c84fbb..6f07e640 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,36 +1,46 @@ <?php + +/* + * WARNING: This is a project-wide configuration file shared by all Tinyboard users around the globe. + * If you would like to make instance-specific changes to your own setup, please use instance-config.php. + * + * This is the default configuration. You can copy values from here and use them in + * your instance-config.php + * + */ // Database stuff - define('MY_SERVER', 'localhost'); - define('MY_USER', ''); - define('MY_PASSWORD', ''); - define('MY_DATABASE', ''); + define('MY_SERVER', 'localhost', true); + define('MY_USER', '', true); + define('MY_PASSWORD', '', true); + define('MY_DATABASE', '', true); // The name of the session cookie (PHP's $_SESSION) - define('SESS_COOKIE', 'imgboard'); + define('SESS_COOKIE', 'imgboard', true); // Used to safely determine when the user was first seen, to prevent floods. // time() - define('TIME_COOKIE', 'arrived'); + define('TIME_COOKIE', 'arrived', true); // HASH_COOKIE contains an MD5 hash of TIME_COOKIE+SALT for verification. - define('HASH_COOKIE', 'hash'); + define('HASH_COOKIE', 'hash', true); // How long should the cookies last (in seconds) - define('COOKIE_EXPIRE', 15778463); //6 months + define('COOKIE_EXPIRE', 15778463, true); //6 months - define('SALT', 'wefaw98YHEWUFuo'); + define('SALT', 'wefaw98YHEWUFuo', true); // How many seconds before you can post, after the first visit - define('LURKTIME', 30); + define('LURKTIME', 30, true); // Max body length - define('MAX_BODY', 1800); + define('MAX_BODY', 1800, true); - define('THREADS_PER_PAGE', 10); - define('MAX_PAGES', 5); - define('THREADS_PREVIEW', 5); + define('THREADS_PER_PAGE', 10, true); + define('MAX_PAGES', 5, true); + define('THREADS_PREVIEW', 5, true); // Error messages +<<<<<<< HEAD define('ERROR_LURK', 'Lurk some more before posting.'); define('ERROR_BOT', 'You look like a bot.'); define('ERROR_TOOLONG', 'The %s field was too long.'); @@ -42,16 +52,33 @@ define('ERR_INVALIDIMG','Invalid image.'); define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes<br>Your file\'s size: %filesz% bytes'); define('ERR_MAXSIZE', 'The file was too big.'); +======= + define('ERROR_LURK', 'Lurk some more before posting.', true); + define('ERROR_BOT', 'You look like a bot.', true); + define('ERROR_TOOLONG', 'The %s field was too long.', true); + define('ERROR_TOOLONGBODY', 'The body was too long.', true); + define('ERROR_TOOSHORTBODY', 'The body was too short or empty.', true); + define('ERROR_NOIMAGE', 'You must upload an image.', true); + define('ERROR_NOMOVE', 'The server failed to handle your upload.', true); + define('ERROR_FILEEXT', 'Unsupported image format.', true); + define('ERR_INVALIDIMG','Invalid image.', true); + define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes<br>Your file\'s size: %filesz% bytes', true); + define('ERR_MAXSIZE', 'The file was too big.', true); +>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 // For resizing, max values - define('THUMB_WIDTH', 200); - define('THUMB_HEIGHT', 200); + define('THUMB_WIDTH', 200, true); + define('THUMB_HEIGHT', 200, true); // Maximum image upload size in bytes - define('MAX_FILESIZE', 1048576); // 10MB + define('MAX_FILESIZE', 10*1024*1024, true); // 10MB // Maximum image dimensions - define('MAX_WIDTH', 10000); - define('MAX_HEIGHT', MAX_WIDTH); + define('MAX_WIDTH', 10000, true); + define('MAX_HEIGHT', MAX_WIDTH, true); + + define('ALLOW_ZIP', true, true); + define('ZIP_IMAGE', 'src/zip.png', true); + define('ALLOW_ZIP', true); define('ZIP_IMAGE', 'src/zip.png'); @@ -61,44 +88,54 @@ Redraw the image using GD functions to strip any excess data (commonly ZIP archives) WARNING: Very beta. Currently strips animated GIFs too :( **/ - define('REDRAW_IMAGE', true); + define('REDRAW_IMAGE', false, true); // Redrawing configuration - define('JPEG_QUALITY', 100); - define('REDRAW_GIF', false); + define('JPEG_QUALITY', 100, true); + define('REDRAW_GIF', false, true); // Display the aspect ratio in a post's file info +<<<<<<< HEAD define('SHOW_RATIO', true); +======= + define('SHOW_RATIO', true, true); +>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 - define('DIR_IMG', 'src/'); - define('DIR_THUMB', 'thumb/'); - define('DIR_RES', 'res/'); + define('DIR_IMG', 'src/', true); + define('DIR_THUMB', 'thumb/', true); + define('DIR_RES', 'res/', true); // The root directory, including the trailing slash, for Tinyboard. // examples: '/', '/board/', '/chan/' - define('ROOT', '/'); - define('POST_URL', ROOT . 'post.php'); - define('FILE_INDEX', 'index.html'); - define('FILE_PAGE', '%d.html'); + define('ROOT', '/', true); + define('POST_URL', ROOT . 'post.php', true); + define('FILE_INDEX', 'index.html', true); + define('FILE_PAGE', '%d.html', true); // Automatically convert things like "..." to Unicode characters ("�") - define('AUTO_UNICODE', true); + define('AUTO_UNICODE', true, true); // Whether to turn URLs into functional links - define('MARKUP_URLS', true); - define('URL_REGEX', '/' . '(https?|ftp):\/\/' . '([\w\-]+\.)+[a-zA-Z]{2,6}' . '(\/([\w\-~\.#\/?=&;:+%]+))?' . '/'); + define('MARKUP_URLS', true, true); + define('URL_REGEX', '/' . '(https?|ftp):\/\/' . '([\w\-]+\.)+[a-zA-Z]{2,6}' . '(\/([\w\-~\.#\/?=&;:+%]+))?' . '/', true); // Allowed file extensions - $allowed_ext = Array('jpg', 'jpeg', 'bmp', 'gif', 'png'); + $allowed_ext = Array('jpg', 'jpeg', 'bmp', 'gif', 'png', true); - define('BUTTON_NEWTOPIC', 'New Topic'); - define('BUTTON_REPLY', 'New Reply'); + define('BUTTON_NEWTOPIC', 'New Topic', true); + define('BUTTON_REPLY', 'New Reply', true); - define('ALWAYS_NOKO', false); + define('ALWAYS_NOKO', false, true); - define('URL_MATCH', '/^' . (@$_SERVER['HTTPS']?'https':'http').':\/\/'.$_SERVER['HTTP_HOST'] . '(' . preg_quote(ROOT, '/') . '|' . preg_quote(ROOT, '/') . '' . preg_quote(FILE_INDEX, '/') . '|' . preg_quote(ROOT, '/') . '' . str_replace('%d', '\d+', preg_quote(FILE_PAGE, '/')) . ')$/'); + define('URL_MATCH', '/^' . (@$_SERVER['HTTPS']?'https':'http').':\/\/'.$_SERVER['HTTP_HOST'] . '(' . preg_quote(ROOT, '/') . '|' . preg_quote(ROOT, '/') . '' . preg_quote(FILE_INDEX, '/') . '|' . preg_quote(ROOT, '/') . '' . str_replace('%d', '\d+', preg_quote(FILE_PAGE, '/')) . ')$/', true); if(!defined('IS_INSTALLATION')) { +<<<<<<< HEAD if(!file_exists(DIR_IMG)) @mkdir(DIR_IMG) or error("Couldn't create " . DIR_IMG . ". Install manually."); if(!file_exists(DIR_THUMB)) @mkdir(DIR_THUMB) or error("Couldn't create " . DIR_IMG . ". Install manually."); if(!file_exists(DIR_RES)) @mkdir(DIR_RES) or error("Couldn't create " . DIR_IMG . ". Install manually."); +======= + if(!file_exists(DIR_IMG)) @mkdir(DIR_IMG) or error("Couldn't create " . DIR_IMG . ". Install manually.", true); + if(!file_exists(DIR_THUMB)) @mkdir(DIR_THUMB) or error("Couldn't create " . DIR_IMG . ". Install manually.", true); + if(!file_exists(DIR_RES)) @mkdir(DIR_RES) or error("Couldn't create " . DIR_IMG . ". Install manually.", true); +>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 } -?>
\ No newline at end of file +?> diff --git a/inc/display.php b/inc/display.php index b988e3bc..132dcac5 100644 --- a/inc/display.php +++ b/inc/display.php @@ -14,8 +14,21 @@ return round($size, 2).$units[$i]; } + function commaize($n) { + $n = strval($n); + return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3); + } + function error($message) { - die(Element('page.html', Array('index' => ROOT, 'title'=>'Error', 'subtitle'=>'An error has occured.', 'body'=>"<h1>$message</h1><p style=\"text-align:center;\"><a href=\"" . ROOT . FILE_INDEX . "\">Go back</a>.</p>"))); + die(Element('page.html', Array( + 'index'=>ROOT, + 'title'=>'Error', + 'subtitle'=>'An error has occured.', + 'body'=>"<center>" . + "<h2>$message</h2>" . + "<p><a href=\"" . ROOT . FILE_INDEX . "\">Go back</a>.</p>" . + "</center>" + ))); } class Post { @@ -180,4 +193,5 @@ return $built; } }; -?>
\ No newline at end of file +?> + diff --git a/inc/functions.php b/inc/functions.php index 237a7724..58a88e0b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -3,16 +3,23 @@ $replaces = array(); foreach($vars as $k => $v) { $replaces[$delim . $k . $delim] = $v; +<<<<<<< HEAD } +======= + } +>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 return str_replace(array_keys($replaces), array_values($replaces), $str); } +<<<<<<< HEAD function commaize($n) { $n = strval($n); return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3); } +======= +>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 function sql_open() { global $sql; $sql = @mysql_connect(MY_SERVER, MY_USER, MY_PASSWORD) or error('Database error.'); @@ -568,4 +575,5 @@ function int_to_word($n) { return chr($n & 255).chr(($n >> 8) & 255); } -?>
\ No newline at end of file +?> + diff --git a/inc/instance-config.php b/inc/instance-config.php new file mode 100644 index 00000000..7655d344 --- /dev/null +++ b/inc/instance-config.php @@ -0,0 +1,19 @@ +<?php
+/*
+ * Instance Configuration
+ * ----------------------
+ * Edit this file and not config.php for imageboard configuration.
+ *
+ * You can copy values from config.php (defaults) and paste them here.
+ */
+
+ /*
+
+ define('MY_SERVER', 'localhost', true);
+ define('MY_USER', '', true);
+ define('MY_PASSWORD', '', true);
+ define('MY_DATABASE', '', true);
+
+// define('FOO', 'bar');
+ */
+?>
\ No newline at end of file @@ -2,6 +2,9 @@ require 'inc/functions.php';
require 'inc/display.php';
require 'inc/template.php';
+ if (file_exists('inc/instance-config.php')) {
+ require 'inc/instance-config.php';
+ }
require 'inc/config.php';
require 'inc/user.php';
@@ -78,7 +81,11 @@ $size = $_FILES['file']['size'];
if($size > MAX_FILESIZE)
error(sprintf3(ERR_FILESIZE, array(
+<<<<<<< HEAD 'sz'=>commaize($size),
+======= + 'filesz'=>commaize($size),
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 'maxsz'=>commaize(MAX_FILESIZE))));
}
@@ -4,6 +4,9 @@ require 'inc/functions.php';
require 'inc/display.php';
require 'inc/template.php';
+ if (file_exists('inc/instance-config.php')) {
+ require 'inc/instance-config.php';
+ }
require 'inc/config.php';
require 'inc/user.php';
|
