]> 91.132.146.200 Git - selfpaste.git/commitdiff
more basis stuff.
authorBanana <banana@mirage>
Thu, 19 Dec 2019 22:17:15 +0000 (23:17 +0100)
committerBanana <banana@mirage>
Thu, 19 Dec 2019 22:17:15 +0000 (23:17 +0100)
CHANGELOG
README
webroot/.htaccess
webroot/config.default.php
webroot/index.php
webroot/lib/summoner.class.php [new file with mode: 0644]

index 5f9cf19979e1b29d3528fbf4ba6e8f552b09c27e..77916a7f46f903bb56f258ec53300dd4cd892416 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1 +1,2 @@
-TBA version 0.1 Hydrogen
\ No newline at end of file
+TBA version 0.1 Hydrogen
+    Initial creation. Not polished yet.
\ No newline at end of file
diff --git a/README b/README
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..78d11004f0ac2606f752e40b0b609009d28a0a29 100644 (file)
--- a/README
+++ b/README
@@ -0,0 +1,3 @@
+selfpaste is a small self hosting paste service.
+
+Link shortening inspired and some code used from: https://www.jwz.org/base64-shortlinks/
\ No newline at end of file
index b66643cc900601aa56838bec22ee6803c32ecbe2..14bfbbf65684260ba92c5f1cf268bdb49d17d9c4 100644 (file)
@@ -7,4 +7,9 @@ AddDefaultCharset utf-8
 <IfModule mod_deflate.c>
     SetOutputFilter DEFLATE
     SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
+</IfModule>
+
+<IfModule mod_rewrite.c>
+    RewriteEngine On
+    RewriteRule ^(.*)$ index.php?s=$1 [QSA,L]
 </IfModule>
\ No newline at end of file
index ca72d159ebc281d558b32ffd1c5f83733386854d..b6c9f0ddbcd12679c2e3fa931922a9247021dedd 100644 (file)
@@ -1,10 +1,12 @@
 <?php
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
-#
-# You should have received a copy of the
-# COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-# along with this program.  If not, see http://www.sun.com/cddl/cddl.html
-
-# 2019 https://www.bananas-playground.net/projekt/selfpaste
+/**
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+ *
+ * You should have received a copy of the
+ * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+ * along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+ *
+ * 2019 https://www.bananas-playground.net/projekt/selfpaste
+ */
 
index d7a617290089b16dd602c369c5f0f63dae42b15d..c29702b73f9a6e28fc81f2c4afd9ecbad0035ec6 100644 (file)
@@ -1,12 +1,14 @@
 <?php
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
-#
-# You should have received a copy of the
-# COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-# along with this program.  If not, see http://www.sun.com/cddl/cddl.html
-
-# 2019 https://www.bananas-playground.net/projekt/selfpaste
+/**
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+ *
+ * You should have received a copy of the
+ * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+ * along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+ *
+ * 2019 https://www.bananas-playground.net/projekt/selfpaste
+ */
 
 # global debug setting
 define('DEBUG',true);
@@ -37,5 +39,15 @@ else {
     ini_set('display_errors',false);
 }
 
+# static helper class
+require 'lib/summoner.class.php';
+
+if(isset($_GET['s']) && !empty($_GET['s'])) {
+    $_short = trim($_GET['s']);
+    $_short = Summoner::validate($_short,'nospace') ? $_short : "";
+}
+
 # header information
-header('Content-type: text/html; charset=UTF-8');
\ No newline at end of file
+header('Content-type: text/html; charset=UTF-8');
+
+var_dump($_SERVER);
\ No newline at end of file
diff --git a/webroot/lib/summoner.class.php b/webroot/lib/summoner.class.php
new file mode 100644 (file)
index 0000000..a000128
--- /dev/null
@@ -0,0 +1,139 @@
+<?php
+/**
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
+ *
+ * You should have received a copy of the
+ * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+ * along with this program.  If not, see http://www.sun.com/cddl/cddl.html
+ *
+ * 2019 https://www.bananas-playground.net/projekt/selfpaste
+ */
+
+/**
+ * a static helper class
+ */
+class Summoner {
+    /**
+     * validate the given string with the given type. Optional check the string
+     * length
+     *
+     * @param string $input The string to check
+     * @param string $mode How the string should be checked
+     * @param mixed $limit If int given the string is checked for length
+     *
+     * @return bool
+     *
+     * @see http://de.php.net/manual/en/regexp.reference.unicode.php
+     * http://www.sql-und-xml.de/unicode-database/#pc
+     *
+     * the pattern replaces all that is allowed. the correct result after
+     * the replace should be empty, otherwise are there chars which are not
+     * allowed
+     */
+    static function validate($input,$mode='text',$limit=false) {
+        // check if we have input
+        $input = trim($input);
+
+        if($input == "") return false;
+
+        $ret = false;
+
+        switch ($mode) {
+            case 'mail':
+                if(filter_var($input,FILTER_VALIDATE_EMAIL) === $input) {
+                    return true;
+                }
+                else {
+                    return false;
+                }
+                break;
+
+            case 'url':
+                if(filter_var($input,FILTER_VALIDATE_URL) === $input) {
+                    return true;
+                }
+                else {
+                    return false;
+                }
+                break;
+
+            case 'nospace':
+                // text without any whitespace and special chars
+                $pattern = '/[\p{L}\p{N}]/u';
+                break;
+
+            case 'nospaceP':
+                // text without any whitespace and special chars
+                // but with Punctuation other
+                # http://www.sql-und-xml.de/unicode-database/po.html
+                $pattern = '/[\p{L}\p{N}\p{Po}\-]/u';
+                break;
+
+            case 'digit':
+                // only numbers and digit
+                // warning with negative numbers...
+                $pattern = '/[\p{N}\-]/';
+                break;
+
+            case 'pageTitle':
+                // text with whitespace and without special chars
+                // but with Punctuation
+                $pattern = '/[\p{L}\p{N}\p{Po}\p{Z}\s-]/u';
+                break;
+
+            # strange. the \p{M} is needed.. don't know why..
+            case 'filename':
+                $pattern = '/[\p{L}\p{N}\p{M}\-_\.\p{Zs}]/u';
+                break;
+
+            case 'text':
+            default:
+                $pattern = '/[\p{L}\p{N}\p{P}\p{S}\p{Z}\p{M}\s]/u';
+        }
+
+        $value = preg_replace($pattern, '', $input);
+
+        if($value === "") {
+            $ret = true;
+        }
+
+        if(!empty($limit)) {
+            # isset starts with 0
+            if(isset($input[$limit])) {
+                # too long
+                $ret = false;
+            }
+        }
+
+        return $ret;
+    }
+
+    /**
+     * check if a string starts with a given string
+     *
+     * @param string $haystack
+     * @param string $needle
+     * @return boolean
+     */
+    static function startsWith($haystack, $needle) {
+        $length = strlen($needle);
+        return (substr($haystack, 0, $length) === $needle);
+    }
+
+    /**
+     * check if a string ends with a given string
+     *
+     * @param string $haystack
+     * @param string $needle
+     * @return boolean
+     */
+    static function endsWith($haystack, $needle) {
+        $length = strlen($needle);
+        if ($length == 0) {
+            return true;
+        }
+
+        return (substr($haystack, -$length) === $needle);
+    }
+}