summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--paste/get.php50
-rw-r--r--paste/include/storage/MysqlStorage.php36
-rw-r--r--paste/include/storage/StorageEngine.php1
3 files changed, 84 insertions, 3 deletions
diff --git a/paste/get.php b/paste/get.php
new file mode 100644
index 0000000..33d8aae
--- /dev/null
+++ b/paste/get.php
@@ -0,0 +1,50 @@
+<?php
+/*
+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.
+*/
+
+require_once("config.php");
+require_once("include/pastify.inc");
+
+// check config
+if (!is_subclass_of($config['storage'], 'StorageEngine'))
+{
+ header('HTTP/1.0 503 Service Unavailable');
+ die('Invalid config');
+}
+
+if (isset($_GET['p']))
+ die($config['storage']->getContent($_GET['p']));
+
+header('Location: ' . $config['site_domain'] . $config['site_path']);
+?>
diff --git a/paste/include/storage/MysqlStorage.php b/paste/include/storage/MysqlStorage.php
index f33db64..fa8a9de 100644
--- a/paste/include/storage/MysqlStorage.php
+++ b/paste/include/storage/MysqlStorage.php
@@ -79,9 +79,11 @@ INDEX (nick)
{
$name = sha1(date('r') . rand(1000, getrandmax()));
if ($stmt = $this->mysql->prepare(
- 'INSERT INTO ' . $this->table . ' (pid, nick, language, content, description, remote) VALUES (?, ?, ?, ?, ?, ?)')) {
-
- /* bind parameters for markers */
+ 'INSERT INTO ' . $this->table . '
+ (pid, nick, language, content,
+ description, remote) VALUES
+ (?, ?, ?, ?, ?, ?)'))
+ {
$stmt->bind_param('ssssss', $name, $nick, $language, $content, $description, $_SERVER["REMOTE_ADDR"]);
/* execute query */
@@ -94,6 +96,34 @@ INDEX (nick)
$stmt->close();
}
}
+
+ public function getContent($pid)
+ {
+ if ($stmt = $this->mysql->prepare(
+ 'SELECT nick, language, content, description, time FROM ' . $this->table . '
+ WHERE pid = ? LIMIT 1'))
+ {
+ $stmt->bind_param('s', $pid);
+
+ /* execute query */
+ if (!$stmt->execute()) {
+ header('HTTP/1.0 503 Service Unavailable');
+ die('MySQL Error (' . $this->mysql->errno . ') ' .
+ $this->mysql->error);
+ }
+
+ $stmt->bind_result($nick, $lang, $content, $description, $time);
+
+ if (!$stmt->fetch()) {
+ header('HTTP/1.0 404 Not Found');
+ die('No such paste');
+ }
+
+ echo PastifyText($content, $lang, $description);
+
+ $shmt->close();
+ }
+ }
}
?>
diff --git a/paste/include/storage/StorageEngine.php b/paste/include/storage/StorageEngine.php
index 32eefdd..b0030d0 100644
--- a/paste/include/storage/StorageEngine.php
+++ b/paste/include/storage/StorageEngine.php
@@ -35,6 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
abstract class StorageEngine
{
abstract public function setContent($content, $language, $nick, $description);
+ abstract public function getContent($pid);
public function generateToken($name)
{