]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
update the php code to work with php 8, add the possibility to edit texts, see the...
authorliedekef <franky.van.liedekerke@gmail.com>
Fri, 17 Feb 2023 15:56:12 +0000 (16:56 +0100)
committerGitea <gitea@fake.local>
Fri, 17 Feb 2023 21:09:56 +0000 (21:09 +0000)
contrib/web/php-admin/htdocs/logs.php [new file with mode: 0644]
contrib/web/php-admin/htdocs/texts.php [new file with mode: 0644]

diff --git a/contrib/web/php-admin/htdocs/logs.php b/contrib/web/php-admin/htdocs/logs.php
new file mode 100644 (file)
index 0000000..7634948
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+
+/* mlmmj/php-admin:
+ * Copyright (C) 2023 Franky Van Liedekerke <franky at e-dynamics dot be>
+ * Copyright (C) 2004 Christoph Thiel <ct at kki dot org>
+ *
+ * mlmmj/php-perl:
+ * Copyright (C) 2004 Morten K. Poulsen <morten at afdelingp.dk>
+ * Copyright (C) 2004 Christian Laursen <christian@pil.dk>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+require(dirname(dirname(__FILE__))."/conf/config.php");
+require(dirname(__FILE__)."/class.rFastTemplate.php");
+
+function mask($str, $first, $last) {
+    $len = strlen($str);
+    $toShow = $first + $last;
+    return substr($str, 0, $len <= $toShow ? 0 : $first).str_repeat("*", $len - ($len <= $toShow ? 0 : $toShow)).substr($str, $len - $last, $len <= $toShow ? 0 : $last);
+}
+
+function mask_email($email) {
+    $mail_parts = explode("@", $email);
+    $domain_parts = explode('.', $mail_parts[1]);
+
+    $mail_parts[0] = mask($mail_parts[0], 2, 1); // show first 2 letters and last 1 letter
+    $domain_parts[0] = mask($domain_parts[0], 2, 1); // same here
+    $mail_parts[1] = implode('.', $domain_parts);
+
+    return implode("@", $mail_parts);
+}
+
+function anonymize_line($text) {
+    $words = explode(" ", $text);
+    foreach ($words as $key => $word) {
+           if (strstr($word, '@')) {
+                   $words[$key] = mask_email($word);
+           }
+    }
+    return implode(" ", $words);
+}
+
+function read_filetail($file, $lines) {
+    //global $fsize;
+    $handle = fopen($file, "r");
+    $linecounter = $lines;
+    $pos = -2;
+    $beginning = false;
+    $text = array();
+    while ($linecounter > 0) {
+        $t = " ";
+        while ($t != "\n") {
+            if(fseek($handle, $pos, SEEK_END) == -1) {
+                $beginning = true; 
+                break; 
+            }
+            $t = fgetc($handle);
+            $pos --;
+        }
+        $linecounter --;
+        if ($beginning) {
+            rewind($handle);
+        }
+        $text[$lines-$linecounter-1] = fgets($handle);
+        if ($beginning) break;
+    }
+    fclose ($handle);
+    //return array_reverse(array_map('anonymize_line',$text));
+    return array_reverse($text);
+}
+
+if(empty($_GET['list']))
+       die("no list specified");
+$list = $_GET['list'];
+
+if (dirname(realpath($topdir."/".$list)) != realpath($topdir))
+die("list outside topdir");
+
+if(!is_dir($topdir."/".$list))
+die("non-existent list");
+
+$userfile = "$topdir/$list/control/admin_users";
+if (is_file($userfile)) {
+       // read users into array
+        $admin_users = array_map('trim',file($userfile));
+       // remove empty values from array
+       $admin_users = array_filter($admin_users);
+        if (!isset($_SERVER['PHP_AUTH_USER']) || !in_array($_SERVER['PHP_AUTH_USER'],$admin_users)) {
+                header("WWW-Authenticate: " .
+                        "Basic realm=\"Mlmmj Protected Area\"");
+                header("HTTP/1.0 401 Unauthorized");
+                //Show failure text, which browsers usually
+                //show only after several failed attempts
+                print("This page is protected by HTTP " .
+                        "Authentication.<br>\n");
+                exit;
+        }
+}
+
+$logfile = $topdir."/".$list."/mlmmj.operation.log";
+if (is_file($logfile)) {
+       $content = read_filetail($logfile,50);
+       print "Output (last 50 lines) of operations logfile: <br /><br />\n";
+       print nl2br(htmlentities(join('',$content))); 
+} else {
+       print "Operations logfile doesn't exist (yet)<br />\n";
+}
+
+print "<br /><a href='index.php'>Index</a>";
+?>
diff --git a/contrib/web/php-admin/htdocs/texts.php b/contrib/web/php-admin/htdocs/texts.php
new file mode 100644 (file)
index 0000000..a788725
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/* mlmmj/php-admin:
+ * Copyright (C) 2023 Franky Van Liedekerke <franky at e-dynamics dot be>
+ * Copyright (C) 2004 Christoph Thiel <ct at kki dot org>
+ *
+ * mlmmj/php-perl:
+ * Copyright (C) 2004 Morten K. Poulsen <morten at afdelingp.dk>
+ * Copyright (C) 2004 Christian Laursen <christian@pil.dk>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+require(dirname(dirname(__FILE__))."/conf/config.php");
+require(dirname(__FILE__)."/class.rFastTemplate.php");
+
+if(empty($_GET['list']))
+       die("no list specified");
+$list = $_GET['list'];
+
+if (dirname(realpath($topdir."/".$list)) != realpath($topdir))
+die("list outside topdir");
+
+if(!is_dir($topdir."/".$list))
+die("non-existent list");
+
+$userfile = "$topdir/$list/control/admin_users";
+if (is_file($userfile)) {
+       // read users into array
+        $admin_users = array_map('trim',file($userfile));
+       // remove empty values from array
+       $admin_users = array_filter($admin_users);
+        if (!isset($_SERVER['PHP_AUTH_USER']) || !in_array($_SERVER['PHP_AUTH_USER'],$admin_users)) {
+                header("WWW-Authenticate: " .
+                        "Basic realm=\"Mlmmj Protected Area\"");
+                header("HTTP/1.0 401 Unauthorized");
+                //Show failure text, which browsers usually
+                //show only after several failed attempts
+                print("This page is protected by HTTP " .
+                        "Authentication.<br>\n");
+                exit;
+        }
+}
+
+$files = glob($topdir."/".$list."/text/*");
+
+if (isset($_POST['save_texts'])) {
+       foreach ($files as $mlmmj_file) {
+               $name = basename($mlmmj_file);
+               // values need to be in linux line endings
+               $value = str_replace(array("\r\n", "\r", "\n"), "\n", $_POST[$name]);
+               file_put_contents($topdir."/".$list."/text/".$name, $value);
+       }
+       print "###### <br />\n";
+       print "###### Files updated <br />\n";
+       print "###### <br />\n";
+} 
+
+print "For info on the template directives used, see <a href='http://mlmmj.org/docs/readme-listtexts/'>here</a><br />\n";
+
+print "<form action=\"texts.php?list=".htmlspecialchars($list)."\" method=\"post\" style=\"margin: 0; margin-left: 1em\">";
+
+print "<table style='width: 95%; margin: 1em;'>";
+foreach ($files as $mlmmj_file) {
+       $name=basename($mlmmj_file);
+       $content = file_get_contents($mlmmj_file);
+       print "<tr><td style='width: 10%;'>".htmlentities($name)."</td><td><textarea name='$name' rows='10' style='width: 95%;'>". htmlentities($content). "</textarea></td></tr>";
+}
+print '</table>';
+print "<input type=\"submit\" name=\"save_texts\" value=\"Save\" />";
+print "</form>";
+print "<br /><a href='index.php'>Index</a>";
+?>