From b926d9b21c60f64cdf4aa2e7a1ce5a159b8524b2 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 01:39:02 +1100 Subject: [PATCH 1/3] Fix of corrupted file --- inc/functions.php | 109 ++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 61 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index 58a88e0b..9a33a16b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -3,23 +3,11 @@ $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.'); @@ -29,13 +17,13 @@ global $sql; @mysql_close($sql); } - + function mysql_safe_array(&$array) { foreach($array as &$item) { $item = mysql_real_escape_string($item); } } - + function post($post, $OP) { global $sql; if($OP) { @@ -87,19 +75,19 @@ return mysql_insert_id($sql); } } - + function index($page) { global $sql, $board; - + $body = ''; $offset = round($page*THREADS_PER_PAGE-THREADS_PER_PAGE); - + sql_open(); $query = mysql_query('SELECT * FROM `posts` WHERE `thread` IS NULL ORDER BY `bump` DESC LIMIT ' . $offset . ',' . THREADS_PER_PAGE, $sql) or error(mysql_error($sql)); if(mysql_num_rows($query) < 1 && $page > 1) return false; while($th = mysql_fetch_array($query)) { $thread = new Thread($th['id'], $th['subject'], $th['email'], $th['name'], $th['trip'], $th['body'], $th['time'], $th['thumb'], $th['thumbwidth'], $th['thumbheight'], $th['file'], $th['filewidth'], $th['fileheight'], $th['filesize'], $th['filename']); - + $newposts = mysql_query(sprintf( "SELECT `id`, `subject`, `email`, `name`, `trip`, `body`, `time`, `thumb`, `thumbwidth`, `thumbheight`, `file`, `filewidth`, `fileheight`, `filesize`, `filename` FROM `posts` WHERE `thread` = '%s' ORDER BY `time` DESC LIMIT %d", $th['id'], @@ -121,39 +109,39 @@ $thread->add(new Post($po['id'], $th['id'], $po['subject'], $po['email'], $po['name'], $po['trip'], $po['body'], $po['time'], $po['thumb'], $po['thumbwidth'], $po['thumbheight'], $po['file'], $po['filewidth'], $po['fileheight'], $po['filesize'], $po['filename'])); } mysql_free_result($newposts); - + $thread->posts = array_reverse($thread->posts); $body .= $thread->build(true); } mysql_free_result($query); return Array('button'=>BUTTON_NEWTOPIC, 'board'=>$board, 'body'=>$body, 'post_url' => POST_URL, 'index' => ROOT); } - + function buildIndex() { global $sql; sql_open(); - + $res = mysql_query("SELECT COUNT(`id`) as `num` FROM `posts` WHERE `thread` IS NULL", $sql) or error(mysql_error($sql)); $arr = mysql_fetch_array($res); $count = floor((THREADS_PER_PAGE + $arr['num'] - 1) / THREADS_PER_PAGE); - + $pages = Array(); for($x=0;$x<$count && $x $x+1, 'link' => $x==0 ? ROOT . FILE_INDEX : ROOT . sprintf(FILE_PAGE, $x+1)); } - + mysql_free_result($res); unset($arr); unset($count); - + $page = 1; while($page <= MAX_PAGES && $content = index($page)) { $filename = $page==1 ? FILE_INDEX : sprintf(FILE_PAGE, $page); if(file_exists($filename)) $md5 = md5_file($filename); - + $content['pages'] = $pages; @file_put_contents($filename, Element('index.html', $content)) or error("Couldn't write to file."); - + if(isset($md5) && $md5 == md5_file($filename)) { break; } @@ -166,18 +154,18 @@ } } } - + function markup(&$body) { global $sql; - + if(AUTO_UNICODE) { $body = str_replace('...', '…', $body); $body = str_replace('<--', '←', $body); $body = str_replace('--', '—', $body); } - + $body = utf8tohtml($body, true); - + // Cites if(preg_match_all('/(^|\s)>>([0-9]+?)(\s|$)/', $body, $cites)) { $previousPosition = 0; @@ -189,7 +177,7 @@ strlen($cites[1][$index]), strlen($cites[3][$index]), ); - + $result = mysql_query(sprintf("SELECT `thread`,`id` FROM `posts` WHERE `id` = '%d'", $cite), $sql); if($post = mysql_fetch_array($result)) { $replacement = '>>' . $cite . ''; @@ -197,32 +185,32 @@ $replacement = ">>{$cite}"; } mysql_free_result($result); - + // Find the position of the cite $position = strpos($body, $cites[0][$index]); // Replace the found string with "xxxx[...]". (allows duplicate tags). Keeps whitespace. $body = substr_replace($body, str_repeat('x', strlen($cites[0][$index]) - $whitespace[0] - $whitespace[1]), $position + $whitespace[0], strlen($cites[0][$index]) - $whitespace[0] - $whitespace[1]); - + $temp .= substr($body, $previousPosition, $position-$previousPosition) . $cites[1][$index] . $replacement . $cites[3][$index]; $previousPosition = $position+strlen($cites[0][$index]); } // The rest $temp .= substr($body, $previousPosition); - + $body = $temp; } - + $body = str_replace("\r", '', $body); - + if(MARKUP_URLS) $body = preg_replace(URL_REGEX, "$0", $body); - + $body = preg_replace("/(^|\n)([\s]+)?(>)([^\n]+)?($|\n)/m", '$1$2$3$4$5', $body); $body = preg_replace("/(^|\n)==(.+?)==\n?/m", "

$2

", $body); $body = preg_replace("/'''(.+?)'''/m", "$1", $body); $body = preg_replace("/\n/", '
', $body); } - + function utf8tohtml($utf8, $encodeTags=true) { $result = ''; for ($i = 0; $i < strlen($utf8); $i++) { @@ -261,17 +249,17 @@ } return $result; } - + function buildThread($id) { global $sql, $board; $id = round($id); - + $query = mysql_query(sprintf( "SELECT `id`,`thread`,`subject`,`name`,`email`,`trip`,`body`,`time`,`thumb`,`thumbwidth`,`thumbheight`,`file`,`filewidth`,`fileheight`,`filesize`,`filename` FROM `posts` WHERE (`thread` IS NULL AND `id` = '%s') OR `thread` = '%s' ORDER BY `thread`,`time`", $id, $id ), $sql) or error(mysql_error($sql)); - + while($post = mysql_fetch_array($query)) { if(!isset($thread)) { $thread = new Thread($post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['body'], $post['time'], $post['thumb'], $post['thumbwidth'], $post['thumbheight'], $post['file'], $post['filewidth'], $post['fileheight'], $post['filesize'], $post['filename'], false); @@ -282,7 +270,7 @@ } mysql_free_result($query); } - + // A lot of the bellow of from BBSchan (An old project by savetheinternet) function generate_tripcode ( $name, $length = 10 ) { $name = stripslashes ( $name ); @@ -312,7 +300,7 @@ return array ( $nameo ); } } - + // Highest common factor function hcf($a, $b){ $gcd = 1; @@ -338,7 +326,7 @@ $gcf = hcf($numerator, $denominator); $numerator = $numerator / $gcf; $denominator = $denominator / $gcf; - + return "{$numerator}{$sep}{$denominator}"; } @@ -365,13 +353,13 @@ $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4); $BMP['decal'] = 4-(4*$BMP['decal']); if ($BMP['decal'] == 4) $BMP['decal'] = 0; - + $PALETTE = array(); if ($BMP['colors'] < 16777216) { $PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4)); } - + $IMG = fread($f1,$BMP['size_bitmap']); $VIDE = chr(0); @@ -461,7 +449,7 @@ } return $image; } - + function resize($src, $width, $height, $destination_pic, $max_width, $max_height) { $return = Array(); @@ -478,32 +466,32 @@ $tn_width = ceil($y_ratio * $width); $tn_height = $max_height; } - + $return['width'] = $tn_width; $return['height'] = $tn_height; - + $tmp = imagecreatetruecolor($tn_width, $tn_height); imagecolortransparent($tmp, imagecolorallocatealpha($tmp, 0, 0, 0, 0)); imagealphablending($tmp, false); imagesavealpha($tmp, true); - + imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height); - + imagepng($tmp, $destination_pic, 4); imagedestroy($src); imagedestroy($tmp); - + return $return; } - + function imagebmp(&$img, $filename='') { $widthOrig = imagesx($img); $widthFloor = ((floor($widthOrig/16))*16); $widthCeil = ((ceil($widthOrig/16))*16); $height = imagesy($img); - + $size = ($widthCeil*$height*3)+54; - + // Bitmap File Header $result = 'BM'; // header (2b) $result .= int_to_dword($size); // size of file (4b) @@ -521,16 +509,16 @@ $result .= int_to_dword(0); // biYPelsPerMeter (4b) $result .= int_to_dword(0); // Number of palettes used (4b) $result .= int_to_dword(0); // Number of important colour (4b) - + // is faster than chr() $arrChr = array(); for($i=0; $i<256; $i++){ $arrChr[$i] = chr($i); } - + // creates image data $bgfillcolor = array('red'=>0, 'green'=>0, 'blue'=>0); - + // bottom to top - left to right - attention blue green red !!! $y=$height-1; for ($y2=0; $y2<$height; $y2++) { @@ -558,7 +546,7 @@ } $y--; } - + // see imagegif if($filename == '') { echo $result; @@ -575,5 +563,4 @@ function int_to_word($n) { return chr($n & 255).chr(($n >> 8) & 255); } -?> - +?> \ No newline at end of file From 6c20b0ab03e86e16bdf63ac4da92449ca6efc014 Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Fri, 5 Nov 2010 02:20:19 +1100 Subject: [PATCH 3/3] Remove excess --- inc/config.php | 76 ++++++++++++++++---------------------------------- post.php | 9 ++---- 2 files changed, 27 insertions(+), 58 deletions(-) diff --git a/inc/config.php b/inc/config.php index 6f07e640..7115c2dc 100644 --- a/inc/config.php +++ b/inc/config.php @@ -8,51 +8,38 @@ * your instance-config.php * */ - + // Database stuff 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', true); - + // Used to safely determine when the user was first seen, to prevent floods. // time() define('TIME_COOKIE', 'arrived', true); // HASH_COOKIE contains an MD5 hash of TIME_COOKIE+SALT for verification. define('HASH_COOKIE', 'hash', true); - + // How long should the cookies last (in seconds) define('COOKIE_EXPIRE', 15778463, true); //6 months - + define('SALT', 'wefaw98YHEWUFuo', true); - + // How many seconds before you can post, after the first visit define('LURKTIME', 30, true); - + // Max body length define('MAX_BODY', 1800, true); - + 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.'); - define('ERROR_TOOLONGBODY', 'The body was too long.'); - define('ERROR_TOOSHORTBODY', 'The body was too short or empty.'); - define('ERROR_NOIMAGE', 'You must upload an image.'); - define('ERROR_NOMOVE', 'The server failed to handle your upload.'); - define('ERROR_FILEEXT', 'Unsupported image format.'); - define('ERR_INVALIDIMG','Invalid image.'); - define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes
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); @@ -64,26 +51,21 @@ 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); ->>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 - + // For resizing, max values define('THUMB_WIDTH', 200, true); define('THUMB_HEIGHT', 200, true); - + // Maximum image upload size in bytes define('MAX_FILESIZE', 10*1024*1024, true); // 10MB // Maximum image dimensions 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'); - - + + /** Redraw the image using GD functions to strip any excess data (commonly ZIP archives) WARNING: Very beta. Currently strips animated GIFs too :( @@ -92,50 +74,40 @@ // Redrawing configuration 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/', 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', '/', 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, true); // Whether to turn URLs into functional links 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', true); - + define('BUTTON_NEWTOPIC', 'New Topic', true); define('BUTTON_REPLY', 'New Reply', true); - + 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, '/')) . ')$/', 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/post.php b/post.php index a69c7c8e..1c875f40 100644 --- a/post.php +++ b/post.php @@ -80,12 +80,9 @@ if($post['has_file']) { $size = $_FILES['file']['size']; if($size > MAX_FILESIZE) - error(sprintf3(ERR_FILESIZE, array( -<<<<<<< HEAD - 'sz'=>commaize($size), -======= - 'filesz'=>commaize($size), ->>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89 + error(sprintf3(ERR_FILESIZE, array( + 'sz'=>commaize($size), + 'filesz'=>commaize($size), 'maxsz'=>commaize(MAX_FILESIZE)))); }