Merge branch 'master' of github.com:savetheinternet/Tinyboard
Conflicts: inc/config.php inc/functions.php post.php
This commit is contained in:
commit
599530e935
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# static html
|
||||
*.html
|
||||
|
||||
# directories
|
||||
res/
|
||||
src/
|
||||
thumb/
|
||||
|
||||
# instance-config
|
||||
inc/instance-config.php
|
91
README.md
91
README.md
@ -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.
|
||||
# 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.
|
||||
|
||||
|
113
inc/config.php
113
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 ("<22>")
|
||||
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
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
?>
|
||||
?>
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
|
19
inc/instance-config.php
Normal file
19
inc/instance-config.php
Normal file
@ -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');
|
||||
*/
|
||||
?>
|
7
post.php
7
post.php
@ -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))));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user