From 455f0c2602350f229e6f58d624790c3d7448a68b Mon Sep 17 00:00:00 2001 From: Paul Merrill Date: Thu, 4 Nov 2010 04:30:23 -0700 Subject: Improved large file size error message. --- inc/config.php | 4 ++-- inc/display.php | 2 +- inc/functions.php | 16 +++++++++++++++- post.php | 9 +++++++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/inc/config.php b/inc/config.php index 44dc60ec..fbaca0d8 100644 --- a/inc/config.php +++ b/inc/config.php @@ -40,7 +40,7 @@ define('ERROR_NOMOVE', 'The server failed to handle your upload.'); define('ERROR_FILEEXT', 'Unsupported image format.'); define('ERR_INVALIDIMG','Invalid image.'); - define('ERR_FILSIZE', 'The file was too large.'); + define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes
Your file\'s size: %filesz% bytes'); define('ERR_MAXSIZE', 'The file was too big.'); // For resizing, max values @@ -48,7 +48,7 @@ define('THUMB_HEIGHT', 200); // Maximum image upload size in bytes - define('MAX_FILESIZE', 1048576); // 10MB + define('MAX_FILESIZE', 10*1024*1024); // 10MB // Maximum image dimensions define('MAX_WIDTH', 10000); define('MAX_HEIGHT', MAX_WIDTH); diff --git a/inc/display.php b/inc/display.php index b988e3bc..92f6eca8 100644 --- a/inc/display.php +++ b/inc/display.php @@ -15,7 +15,7 @@ } function error($message) { - die(Element('page.html', Array('index' => ROOT, 'title'=>'Error', 'subtitle'=>'An error has occured.', 'body'=>"

$message

Go back.

"))); + die(Element('page.html', Array('index' => ROOT, 'title'=>'Error', 'subtitle'=>'An error has occured.', 'body'=>"

$message

Go back.

"))); } class Post { diff --git a/inc/functions.php b/inc/functions.php index b465488c..e251c054 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1,4 +1,18 @@ $v) { + $replaces[$delim . $k . $delim] = $v; + } + return str_replace(array_keys($replaces), + array_values($replaces), $str); + } + + function commaize($n) { + $n = strval($n); + return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3); + } + function sql_open() { global $sql; $sql = @mysql_connect(MY_SERVER, MY_USER, MY_PASSWORD) or error('Database error.'); @@ -502,4 +516,4 @@ function int_to_word($n) { return chr($n & 255).chr(($n >> 8) & 255); } -?> \ No newline at end of file +?> diff --git a/post.php b/post.php index 94b80f8c..52048be8 100644 --- a/post.php +++ b/post.php @@ -74,8 +74,13 @@ $post['filename'] = $_FILES['file']['name']; $post['has_file'] = $OP || !empty($_FILES['file']['tmp_name']); - if($post['has_file'] && $_FILES['file']['size'] > MAX_FILESIZE) - error(ERR_FILSIZE); + if($post['has_file']) { + $size = $_FILES['file']['size']; + if($size > MAX_FILESIZE) + error(sprintf3(ERR_FILESIZE, array( + 'filesz'=>commaize($size), + 'maxsz'=>commaize(MAX_FILESIZE)))); + } $trip = generate_tripcode($post['name']); $post['name'] = $trip[0]; -- cgit v1.3 From 5805de70b42d8674bcfd96cf57192f6c4a641d2c Mon Sep 17 00:00:00 2001 From: Paul Merrill Date: Thu, 4 Nov 2010 04:41:52 -0700 Subject: Reformatted error(), moved commaize() --- inc/display.php | 18 ++++++++++++++++-- inc/functions.php | 6 +----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/inc/display.php b/inc/display.php index 92f6eca8..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'=>"

$message

Go back.

"))); + die(Element('page.html', Array( + 'index'=>ROOT, + 'title'=>'Error', + 'subtitle'=>'An error has occured.', + 'body'=>"
" . + "

$message

" . + "

Go back.

" . + "
" + ))); } 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 e251c054..10f23e7f 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -8,11 +8,6 @@ array_values($replaces), $str); } - function commaize($n) { - $n = strval($n); - return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3); - } - function sql_open() { global $sql; $sql = @mysql_connect(MY_SERVER, MY_USER, MY_PASSWORD) or error('Database error.'); @@ -517,3 +512,4 @@ return chr($n & 255).chr(($n >> 8) & 255); } ?> + -- cgit v1.3 From 467ccdaf484b09a57367434344d72624e3dd1962 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Thu, 4 Nov 2010 23:07:50 +1100 Subject: ZIP support --- inc/config.php | 12 ++++++---- inc/functions.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/zip.png | Bin 0 -> 15221 bytes 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100755 src/zip.png diff --git a/inc/config.php b/inc/config.php index 44dc60ec..fdbe6174 100644 --- a/inc/config.php +++ b/inc/config.php @@ -40,7 +40,7 @@ define('ERROR_NOMOVE', 'The server failed to handle your upload.'); define('ERROR_FILEEXT', 'Unsupported image format.'); define('ERR_INVALIDIMG','Invalid image.'); - define('ERR_FILSIZE', 'The file was too large.'); + define('ERR_FILESIZE', 'Maximum file size: %maxsz%
Your file\'s size: %sz%'); define('ERR_MAXSIZE', 'The file was too big.'); // For resizing, max values @@ -48,11 +48,15 @@ define('THUMB_HEIGHT', 200); // Maximum image upload size in bytes - define('MAX_FILESIZE', 1048576); // 10MB + define('MAX_FILESIZE', 6930209); // 10MB // Maximum image dimensions define('MAX_WIDTH', 10000); define('MAX_HEIGHT', MAX_WIDTH); + define('ALLOW_ZIP', true); + define('ZIP_IMAGE', 'src/zip.png'); + + /** Redraw the image using GD functions to strip any excess data (commonly ZIP archives) WARNING: Very beta. Currently strips animated GIFs too :( @@ -63,7 +67,7 @@ define('REDRAW_GIF', false); // Display the aspect ratio in a post's file info - define('SHOW_RATIO', false); + define('SHOW_RATIO', true); define('DIR_IMG', 'src/'); define('DIR_THUMB', 'thumb/'); @@ -92,7 +96,7 @@ 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, '/')) . ')$/'); - if(!defined(IS_INSTALLATION)) { + if(!defined('IS_INSTALLATION')) { 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."); diff --git a/inc/functions.php b/inc/functions.php index b465488c..237a7724 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1,4 +1,18 @@ $v) { + $replaces[$delim . $k . $delim] = $v; + } + return str_replace(array_keys($replaces), + array_values($replaces), $str); + } + + function commaize($n) { + $n = strval($n); + return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3); + } + function sql_open() { global $sql; $sql = @mysql_connect(MY_SERVER, MY_USER, MY_PASSWORD) or error('Database error.'); @@ -15,6 +29,58 @@ } } + function post($post, $OP) { + global $sql; + if($OP) { + mysql_query( + sprintf("INSERT INTO `posts` VALUES ( NULL, NULL, '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%s', '%s', '%s', '%s' )", + $post['subject'], + $post['email'], + $post['name'], + $post['trip'], + $post['body'], + time(), + time(), + $post['thumb'], + $post['thumbwidth'], + $post['thumbheight'], + $post['file'], + $post['width'], + $post['height'], + $post['filesize'], + $post['filename'], + $post['filehash'], + $post['password'], + mysql_real_escape_string($_SERVER['REMOTE_ADDR']) + ), $sql) or error(mysql_error($sql)); + return mysql_insert_id($sql); + } else { + mysql_query( + sprintf("INSERT INTO `posts` VALUES ( NULL, '%d', '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%s', '%s', '%s', '%s' )", + $post['thread'], + $post['subject'], + $post['email'], + $post['name'], + $post['trip'], + $post['body'], + time(), + time(), + $post['has_file']?$post['thumb']:null, + $post['has_file']?$post['thumbwidth']:null, + $post['has_file']?$post['thumbheight']:null, + $post['has_file']?$post['file']:null, + $post['has_file']?$post['width']:null, + $post['has_file']?$post['height']:null, + $post['has_file']?$post['filesize']:null, + $post['has_file']?$post['filename']:null, + $post['has_file']?$post['filehash']:null, + $post['password'], + mysql_real_escape_string($_SERVER['REMOTE_ADDR']) + ), $sql) or error(mysql_error($sql)); + return mysql_insert_id($sql); + } + } + function index($page) { global $sql, $board; diff --git a/src/zip.png b/src/zip.png new file mode 100755 index 00000000..7886679a Binary files /dev/null and b/src/zip.png differ -- cgit v1.3 From f9357612af9660968d57947e8e4b303c7e0536ea Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Thu, 4 Nov 2010 23:09:01 +1100 Subject: Zip support --- post.php | 161 ++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 108 insertions(+), 53 deletions(-) diff --git a/post.php b/post.php index 94b80f8c..e4303fca 100644 --- a/post.php +++ b/post.php @@ -74,8 +74,13 @@ $post['filename'] = $_FILES['file']['name']; $post['has_file'] = $OP || !empty($_FILES['file']['tmp_name']); - if($post['has_file'] && $_FILES['file']['size'] > MAX_FILESIZE) - error(ERR_FILSIZE); + if($post['has_file']) { + $size = $_FILES['file']['size']; + if($size > MAX_FILESIZE) + error(sprintf3(ERR_FILESIZE, array( + 'sz'=>commaize($size), + 'maxsz'=>commaize(MAX_FILESIZE)))); + } $trip = generate_tripcode($post['name']); $post['name'] = $trip[0]; @@ -91,7 +96,8 @@ $post['file_id'] = rand(0, 1000000000); $post['file'] = DIR_IMG . $post['file_id'] . '.' . $post['extension']; $post['thumb'] = DIR_THUMB . $post['file_id'] . '.png'; - if(!in_array($post['extension'], $allowed_ext)) error(ERROR_FILEEXT); + $post['zip'] = $OP && $post['has_file'] && ALLOW_ZIP && $post['extension'] == 'zip' ? $post['file'] : false; + if(!($post['zip'] || in_array($post['extension'], $allowed_ext))) error(ERROR_FILEEXT); } // Check string lengths @@ -102,8 +108,6 @@ if(!(!$OP && $post['has_file']) && strlen($post['body']) < 1) error(ERROR_TOOSHORTBODY); if(strlen($post['password']) > 20) error(sprintf(ERROR_TOOLONG, 'password')); - - markup($post['body']); if($post['has_file']) { @@ -112,6 +116,11 @@ // Move the uploaded file if(!@move_uploaded_file($_FILES['file']['tmp_name'], $post['file'])) error(ERROR_NOMOVE); + if($post['zip']) { + $post['file'] = ZIP_IMAGE; + $post['extension'] = strtolower(substr($post['file'], strrpos($post['file'], '.') + 1)); + } + $size = @getimagesize($post['file']); $post['width'] = $size[0]; $post['height'] = $size[1]; @@ -132,7 +141,7 @@ $image = createimage($post['extension'], $post['file']); - if(REDRAW_IMAGE) { + if(REDRAW_IMAGE && !$post['zip']) { switch($post['extension']) { case 'jpg': case 'jpeg': @@ -156,7 +165,6 @@ // Create a thumbnail $thumb = resize($image, $post['width'], $post['height'], $post['thumb'], THUMB_WIDTH, THUMB_HEIGHT); - $post['thumbwidth'] = $thumb['width']; $post['thumbheight'] = $thumb['height']; } @@ -167,54 +175,101 @@ sql_open(); mysql_safe_array($post); - if($OP) { - mysql_query( - sprintf("INSERT INTO `posts` VALUES ( NULL, NULL, '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%s', '%s', '%s', '%s' )", - $post['subject'], - $post['email'], - $post['name'], - $post['trip'], - $post['body'], - time(), - time(), - $post['thumb'], - $post['thumbwidth'], - $post['thumbheight'], - $post['file'], - $post['width'], - $post['height'], - $post['filesize'], - $post['filename'], - $post['filehash'], - $post['password'], - mysql_real_escape_string($_SERVER['REMOTE_ADDR']) - ), $sql) or error(mysql_error($sql)); - } else { - mysql_query( - sprintf("INSERT INTO `posts` VALUES ( NULL, '%d', '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d', '%s', '%s', '%s', '%s' )", - $post['thread'], - $post['subject'], - $post['email'], - $post['name'], - $post['trip'], - $post['body'], - time(), - time(), - $post['has_file']?$post['thumb']:null, - $post['has_file']?$post['thumbwidth']:null, - $post['has_file']?$post['thumbheight']:null, - $post['has_file']?$post['file']:null, - $post['has_file']?$post['width']:null, - $post['has_file']?$post['height']:null, - $post['has_file']?$post['filesize']:null, - $post['has_file']?$post['filename']:null, - $post['has_file']?$post['filehash']:null, - $post['password'], - mysql_real_escape_string($_SERVER['REMOTE_ADDR']) - ), $sql) or error(mysql_error($sql)); + $id = post($post, $OP); + + if($post['zip']) { + // Open ZIP + $zip = zip_open($post['zip']); + // Read files + while($entry = zip_read($zip)) { + $filename = basename(zip_entry_name($entry)); + $extension = strtolower(substr($filename, strrpos($filename, '.') + 1)); + + if(in_array($extension, $allowed_ext)) { + if (zip_entry_open($zip, $entry, 'r')) { + + // Fake post + $dump_post = Array( + 'subject' => $post['subject'], + 'email' => $post['email'], + 'name' => $post['name'], + 'trip' => $post['trip'], + 'body' => '', + 'thread' => $id, + 'password' => '', + 'has_file' => true, + 'file_id' => rand(0, 1000000000), + 'filename' => $filename + ); + + $dump_post['file'] = DIR_IMG . $dump_post['file_id'] . '.' . $extension; + $dump_post['thumb'] = DIR_THUMB . $dump_post['file_id'] . '.png'; + + // Extract the image from the ZIP + $fp = fopen($dump_post['file'], 'w+'); + fwrite($fp, zip_entry_read($entry, zip_entry_filesize($entry))); + fclose($fp); + + $size = @getimagesize($dump_post['file']); + $dump_post['width'] = $size[0]; + $dump_post['height'] = $size[1]; + + // Check if the image is valid + if($dump_post['width'] < 1 || $dump_post['height'] < 1) { + unlink($dump_post['file']); + } else { + if($dump_post['width'] > MAX_WIDTH || $dump_post['height'] > MAX_HEIGHT) { + unlink($dump_post['file']); + error(ERR_MAXSIZE); + } else { + $dump_post['filehash'] = md5_file($dump_post['file']); + $dump_post['filesize'] = filesize($dump_post['file']); + + $image = createimage($extension, $dump_post['file']); + + $success = true; + if(REDRAW_IMAGE) { + switch($extension) { + case 'jpg': + case 'jpeg': + imagejpeg($image, $dump_post['file'], JPEG_QUALITY); + break; + case 'png': + imagepng($image, $dump_post['file'], 7); + break; + case 'gif': + if(REDRAW_GIF) + imagegif($image, $dump_post['file']); + break; + case 'bmp': + imagebmp($image, $dump_post['file']); + break; + default: + $success = false; + } + } + + + // Create a thumbnail + $thumb = resize($image, $dump_post['width'], $dump_post['height'], $dump_post['thumb'], THUMB_WIDTH, THUMB_HEIGHT); + + $dump_post['thumbwidth'] = $thumb['width']; + $dump_post['thumbheight'] = $thumb['height']; + + // Create the post + post($dump_post, false); + } + } + + // Close the ZIP + zip_entry_close($entry); + } + } + } + zip_close($zip); + unlink($post['zip']); } - $id = mysql_insert_id($sql); buildThread(($OP?$id:$post['thread'])); if(!$OP) { -- cgit v1.3 From 7b43892527e7cfdd86c3b8d451a21939e5982508 Mon Sep 17 00:00:00 2001 From: Paul Merrill Date: Thu, 4 Nov 2010 06:35:59 -0700 Subject: Support for site-instance specific configuration in instance-config.php --- inc/config.php | 110 ++++++++++++++++++++++++++++----------------------------- post.php | 3 ++ test.php | 3 ++ 3 files changed, 61 insertions(+), 55 deletions(-) diff --git a/inc/config.php b/inc/config.php index 13c8e9e1..43f4a449 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,104 +1,104 @@ 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
Your file\'s size: %filesz% bytes', true); + define('ERR_MAXSIZE', 'The file was too big.', true); // 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', 10*1024*1024); // 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); - define('ZIP_IMAGE', 'src/zip.png'); + define('ALLOW_ZIP', true, true); + define('ZIP_IMAGE', 'src/zip.png', true); /** 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 - define('SHOW_RATIO', true); + define('SHOW_RATIO', true, true); - 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')) { - 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); } -?> \ No newline at end of file +?> diff --git a/post.php b/post.php index a52de611..f6615ef9 100644 --- a/post.php +++ b/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'; diff --git a/test.php b/test.php index 0cab3ac6..73a4a0d8 100644 --- a/test.php +++ b/test.php @@ -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'; -- cgit v1.3 From dd9f0bb91765c2f01bb07957cee232a380f4e5a6 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 00:44:55 +1100 Subject: Added a gitignore file. --- .gitignore | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..d877863f --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# static html +\d.html + +# directories +res/ +src/ +thumb/ + +# instance-config +inc/instance-config.php \ No newline at end of file -- cgit v1.3 From 05dd518cb9ff2788f8b8d5dfc15ae511f7df7729 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 00:46:14 +1100 Subject: Fixed HTML files for gitignore. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d877863f..8108863c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # static html -\d.html +*.html # directories res/ -- cgit v1.3 From ad4d8ee0db2d1833a368ebee2099898cf251af97 Mon Sep 17 00:00:00 2001 From: Paul Merrill Date: Thu, 4 Nov 2010 06:56:21 -0700 Subject: Converted readme to unix line endings. Added part about instance-config.php. --- README.md | 91 ++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 3c9a6bf3..fd4e0f3b 100644 --- a/README.md +++ b/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. \ 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. Create an 'instance-config.php'. It should be a PHP script that redefines some values in '[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. + -- cgit v1.3 From 0296a7666f4e9fa2827edf6cc095fb05ad73440b Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 01:02:13 +1100 Subject: Comments in configs --- inc/config.php | 15 +++++++++++++++ inc/instance-config.php | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 inc/instance-config.php diff --git a/inc/config.php b/inc/config.php index 43f4a449..66b1e815 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,4 +1,19 @@ \ No newline at end of file -- cgit v1.3 From abc0cda57505b3040d8340e2d7e2d99edf55e354 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 01:06:53 +1100 Subject: ASCII art fix --- inc/config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/config.php b/inc/config.php index 66b1e815..c29b1861 100644 --- a/inc/config.php +++ b/inc/config.php @@ -4,11 +4,11 @@ * .d88888b d888888P .88888. 888888ba * 88. "' 88 d8' `8b 88 `8b * `Y88888b. 88 88 88 a88aaaa8P' - * `8b 88 88 88 88 + * `8b 88 88 88 88 * d8' .8P 88 Y8. .8P 88 * Y88888P dP `8888P' dP * - * Do not edit this file. Edit instance-config instead! + * Do not edit this file. Edit instance-config.php instead! * * This is the default configuration. You can copy values from here and use them in * your instance-config.php -- cgit v1.3 From 512227eaa946cdafb82ca6640db9e68a12de01e3 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 01:08:01 +1100 Subject: ASCII art fix --- inc/config.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/config.php b/inc/config.php index c29b1861..4f38bb7e 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,12 +1,12 @@ Date: Fri, 5 Nov 2010 01:09:25 +1100 Subject: ASCII art fix --- inc/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index 4f38bb7e..5e60f7e1 100644 --- a/inc/config.php +++ b/inc/config.php @@ -4,7 +4,7 @@ * .d88888b d888888P .88888. 888888ba * 88. "' 88 d8' `8b 88 `8b * `Y88888b. 88 88 88 a88aaaa8P' - * `8b 88 88 88 88 + * `8b 88 88 88 88 * d8' .8P 88 Y8. .8P 88 * Y88888P dP `8888P' dP * -- cgit v1.3 From 20a8dff1498749137521e92e80a234326f108bf4 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 01:10:45 +1100 Subject: Removal of ASCII --- inc/config.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/inc/config.php b/inc/config.php index 5e60f7e1..ecd51761 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,12 +1,7 @@ Date: Fri, 5 Nov 2010 01:16:23 +1100 Subject: Informing instead of demanding with the "do not edit" sign. --- inc/config.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/config.php b/inc/config.php index ecd51761..fbbfaa74 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,7 +1,8 @@ Date: Fri, 5 Nov 2010 01:18:23 +1100 Subject: Shorten warning --- inc/config.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/inc/config.php b/inc/config.php index fbbfaa74..ce005839 100644 --- a/inc/config.php +++ b/inc/config.php @@ -1,10 +1,8 @@