From e98422a09892675f23852320e0d46b4071bf22b4 Mon Sep 17 00:00:00 2001
From: Alexander Sulfrian <alexander@sulfrian.net>
Date: Fri, 11 Dec 2009 03:13:01 +0100
Subject: seperated storage classes

---
 paste/config.php                        |   4 +-
 paste/include/createpage.inc            | 154 --------------------------------
 paste/include/storage/FileStorage.php   |  71 +++++++++++++++
 paste/include/storage/MysqlStorage.php  |  95 ++++++++++++++++++++
 paste/include/storage/StorageEngine.php |  61 +++++++++++++
 5 files changed, 230 insertions(+), 155 deletions(-)
 delete mode 100644 paste/include/createpage.inc
 create mode 100644 paste/include/storage/FileStorage.php
 create mode 100644 paste/include/storage/MysqlStorage.php
 create mode 100644 paste/include/storage/StorageEngine.php

diff --git a/paste/config.php b/paste/config.php
index 2a41d7b..66d655a 100644
--- a/paste/config.php
+++ b/paste/config.php
@@ -1,4 +1,4 @@
-<?
+<?php
 /*
 This software is licensed through a BSD-style License.
 http://www.opensource.org/licenses/bsd-license.php
@@ -51,4 +51,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     'token_salt'    => 'saltsaltsalt',
   );
 
+require_once('include/storage/FileStorage.php');
+$storage = new MysqlStorage('mysql', 'rafb', 'rafb', 'paste', 'rafb');
 ?>
diff --git a/paste/include/createpage.inc b/paste/include/createpage.inc
deleted file mode 100644
index f1a16aa..0000000
--- a/paste/include/createpage.inc
+++ /dev/null
@@ -1,154 +0,0 @@
-<?
-/*
-This software is licensed through a BSD-style License.
-http://www.opensource.org/licenses/bsd-license.php
-
-Copyright (c) 2002 - 2009 Jacob D. Cohen
-Copyright (c) 2009 Alexander Sulfrian
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-Neither the name of Jacob D. Cohen nor the names of his contributors
-may be used to endorse or promote products derived from this software
-without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-abstract class StorageEngine
-{
-	abstract public function setContent($content);
-
-	public function generateToken($name)
-	{
-		global $config;
-
-		$ipAddr = $_SERVER["REMOTE_ADDR"];
-		return sha1($name . $ipAddr . $config['token_salt']);
-	}
-
-	public function prepareContent($name, $baseUrl, $content)
-	{
-		$content = preg_replace("/=\{this-paste-url\}/",
-					$baseUrl . '/' . $name, $content);
-
-		$content = preg_replace("/=\{remove-paste-url\}/", $baseUrl
-					. '/' . 'remove.php?id=' . $name
-					. '&t=' . $this->generateToken(),
-					$content);
-
-		return $content;
-	}
-}
-
-class FileStorage extends StorageEngine
-{
-	private $storage_path;
-
-	function __construct($path) {
-		$this->storage_path = $path;
-	}
-
-	public function setContent($content)
-	{
-		global $config;
-
-		do {
-			$filename = sha1(date('r') . rand(1000));
-		} while (file_exists(realpath($storage_path . '/' , $filename)));
-
-		if ($config['short_results_path']) {
-			$urlbase = $config['short_results_path'];
-		} else {
-			$urlbase = $config['site_domain'] . $config['site_path'] . '/' . $config['results_dir'];
-		}
-		$content = $this->prepareContent($filename, $urlbase, $content);
-		$filename = $filename . ".html";
-
-		// write content
-		$outfile = realpath($storage_path . '/' , $filename);
-		$fp = fopen($outfile, "w");
-		fwrite($fp, $content);
-		fclose($fp);
-
-		return $pasteUrl;
-	}
-}
-
-class MysqlStorage extends StorageEngine
-{
-	private $mysql;
-	private $table;
-
-	function __construct($host, $user, $password,  $database, $table) {
-		$this->mysql = new mysqli($host, $user, $password, $database);
-		if ($this->mysql->connect_error) {
-			header('HTTP/1.0 503 Service Unavailable');
-			die('MySQL Connect Error ('
-			    . $this->mysql->connect_errno . ') '
-			    . $this->mysql->connect_error);
-		}
-
-		$this->table = $table;
-		if (! $this->mysql->query("CREATE TABLE IF NOT EXISTS $table (
-pid VARCHAR(40) PRIMARY KEY,
-content MEDIUMTEXT,
-FULLTEXT INDEX (content)
-);"))
-		{
-			header('HTTP/1.0 503 Service Unavailable');
-			die('MySQL Error (' . $this->mysql->errno . ') ' .
-			    $this->mysql->error);
-		}
-	}
-
-	function __destruct()
-	{
-		if ($this->mysql)
-			$this->mysql->close();
-	}
-
-	public function setContent($content)
-	{
-		$name = sha1(date('r') . rand(1000));
-
-		if ($config['short_results_path']) {
-			$urlbase = $config['short_results_path'];
-		} else {
-			$urlbase = $config['site_domain'] . $config['site_path'] . '/' . $config['results_dir'];
-		}
-		$content = $this->prepareContent($name, $urlbase . 'get.php?id=' . $name, $content);
-
-		if ($stmt = $this->mysql->prepare(
-			    'INSERT INTO ? (pid, content) VALUES (?, ?)')) {
-
-			/* bind parameters for markers */
-			$stmt->bind_param("sb", $name, $content);
-
-			/* execute query */
-			$stmt->execute();
-
-			$stmt->close();
-		}
-	}
-}
-
-?>
diff --git a/paste/include/storage/FileStorage.php b/paste/include/storage/FileStorage.php
new file mode 100644
index 0000000..a6ea0f2
--- /dev/null
+++ b/paste/include/storage/FileStorage.php
@@ -0,0 +1,71 @@
+<?php
+/*
+This software is licensed through a BSD-style License.
+http://www.opensource.org/licenses/bsd-license.php
+
+Copyright (c) 2009 Alexander Sulfrian
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+Neither the name of Jacob D. Cohen nor the names of his contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('StorageEngine.php');
+
+class FileStorage extends StorageEngine
+{
+	private $storage_path;
+
+	function __construct($path) {
+		$this->storage_path = $path;
+	}
+
+	public function setContent($content)
+	{
+		global $config;
+
+		do {
+			$filename = sha1(date('r') . rand(1000));
+		} while (file_exists(realpath($storage_path . '/' , $filename)));
+
+		if ($config['short_results_path']) {
+			$urlbase = $config['short_results_path'];
+		} else {
+			$urlbase = $config['site_domain'] . $config['site_path'] . '/' . $config['results_dir'];
+		}
+		$content = $this->prepareContent($filename, $urlbase, $content);
+		$filename = $filename . ".html";
+
+		// write content
+		$outfile = realpath($storage_path . '/' , $filename);
+		$fp = fopen($outfile, "w");
+		fwrite($fp, $content);
+		fclose($fp);
+
+		return $pasteUrl;
+	}
+}
+
+?>
diff --git a/paste/include/storage/MysqlStorage.php b/paste/include/storage/MysqlStorage.php
new file mode 100644
index 0000000..239f113
--- /dev/null
+++ b/paste/include/storage/MysqlStorage.php
@@ -0,0 +1,95 @@
+<?php
+/*
+This software is licensed through a BSD-style License.
+http://www.opensource.org/licenses/bsd-license.php
+
+Copyright (c) 2009 Alexander Sulfrian
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+Neither the name of Jacob D. Cohen nor the names of his contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('StorageEngine.php');
+
+class MysqlStorage extends StorageEngine
+{
+	private $mysql;
+	private $table;
+
+	function __construct($host, $user, $password,  $database, $table) {
+		$this->mysql = new mysqli($host, $user, $password, $database);
+		if ($this->mysql->connect_error) {
+			header('HTTP/1.0 503 Service Unavailable');
+			die('MySQL Connect Error ('
+			    . $this->mysql->connect_errno . ') '
+			    . $this->mysql->connect_error);
+		}
+
+		$this->table = $table;
+		if (! $this->mysql->query("CREATE TABLE IF NOT EXISTS $table (
+pid VARCHAR(40) PRIMARY KEY,
+content MEDIUMTEXT,
+FULLTEXT INDEX (content)
+);"))
+		{
+			header('HTTP/1.0 503 Service Unavailable');
+			die('MySQL Error (' . $this->mysql->errno . ') ' .
+			    $this->mysql->error);
+		}
+	}
+
+	function __destruct()
+	{
+		if ($this->mysql)
+			$this->mysql->close();
+	}
+
+	public function setContent($content)
+	{
+		$name = sha1(date('r') . rand(1000));
+
+		if ($config['short_results_path']) {
+			$urlbase = $config['short_results_path'];
+		} else {
+			$urlbase = $config['site_domain'] . $config['site_path'] . '/' . $config['results_dir'];
+		}
+		$content = $this->prepareContent($name, $urlbase . 'get.php?id=' . $name, $content);
+
+		if ($stmt = $this->mysql->prepare(
+			    'INSERT INTO ? (pid, content) VALUES (?, ?)')) {
+
+			/* bind parameters for markers */
+			$stmt->bind_param("sb", $name, $content);
+
+			/* execute query */
+			$stmt->execute();
+
+			$stmt->close();
+		}
+	}
+}
+
+?>
diff --git a/paste/include/storage/StorageEngine.php b/paste/include/storage/StorageEngine.php
new file mode 100644
index 0000000..c32a7b6
--- /dev/null
+++ b/paste/include/storage/StorageEngine.php
@@ -0,0 +1,61 @@
+<?php
+/*
+This software is licensed through a BSD-style License.
+http://www.opensource.org/licenses/bsd-license.php
+
+Copyright (c) 2009 Alexander Sulfrian
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+Neither the name of Jacob D. Cohen nor the names of his contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+abstract class StorageEngine
+{
+	abstract public function setContent($content);
+
+	public function generateToken($name)
+	{
+		global $config;
+
+		$ipAddr = $_SERVER["REMOTE_ADDR"];
+		return sha1($name . $ipAddr . $config['token_salt']);
+	}
+
+	public function prepareContent($name, $baseUrl, $content)
+	{
+		$content = preg_replace("/=\{this-paste-url\}/",
+					$baseUrl . '/' . $name, $content);
+
+		$content = preg_replace("/=\{remove-paste-url\}/", $baseUrl
+					. '/' . 'remove.php?id=' . $name
+					. '&t=' . $this->generateToken(),
+					$content);
+
+		return $content;
+	}
+}
+
+?>
-- 
cgit v1.2.3