diff options
-rw-r--r-- | paste/get.php | 50 | ||||
-rw-r--r-- | paste/include/storage/MysqlStorage.php | 36 | ||||
-rw-r--r-- | paste/include/storage/StorageEngine.php | 1 |
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) { |