From f14509349747f6ebeaa3d70555eb08ecaea81ff2 Mon Sep 17 00:00:00 2001 From: Jarkko Toivanen Date: Fri, 27 Sep 2024 05:47:54 +0300 Subject: [PATCH] Started code yeaah --- .gitignore | 1 + .htaccess | 2 ++ README.md | 4 +++ api/.htaccess | 4 +++ api/index.php | 20 +++++++++++++++ favicon.ico | Bin 0 -> 1081406 bytes inc/.htaccess | 2 ++ inc/database.php | 63 +++++++++++++++++++++++++++++++++++++++++++++++ index.php | 33 +++++++++++++++++++++++++ 9 files changed, 129 insertions(+) create mode 100755 .gitignore create mode 100644 .htaccess create mode 100755 README.md create mode 100644 api/.htaccess create mode 100644 api/index.php create mode 100755 favicon.ico create mode 100755 inc/.htaccess create mode 100755 inc/database.php create mode 100755 index.php diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..a5cee70 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/database.db \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..3b6603b --- /dev/null +++ b/.htaccess @@ -0,0 +1,2 @@ +php_flag display_errors on +php_flag html_errors on \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..6b71c01 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +- Requires `SQLite3` (`sudo apt install php-sqlite3` on Debian) +- API requires mod_rewrite (`sudo a2enmod rewrite`) and configuring `AllowOverride all` for .htaccess + +The icon is from https://www.flaticon.com/authors/smashicons diff --git a/api/.htaccess b/api/.htaccess new file mode 100644 index 0000000..46d7c45 --- /dev/null +++ b/api/.htaccess @@ -0,0 +1,4 @@ +RewriteEngine on +RewriteCond %{HTTP:Authorization} ^(.*) +RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] +RewriteRule ^ index.php \ No newline at end of file diff --git a/api/index.php b/api/index.php new file mode 100644 index 0000000..d0d9a76 --- /dev/null +++ b/api/index.php @@ -0,0 +1,20 @@ + diff --git a/favicon.ico b/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..9f24a77d98edaa310d97cf6f7e310aabbaa7cc11 GIT binary patch literal 1081406 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 literal 0 HcmV?d00001 diff --git a/inc/.htaccess b/inc/.htaccess new file mode 100755 index 0000000..ff2beb8 --- /dev/null +++ b/inc/.htaccess @@ -0,0 +1,2 @@ +order deny,allow +deny from all diff --git a/inc/database.php b/inc/database.php new file mode 100755 index 0000000..a118c3e --- /dev/null +++ b/inc/database.php @@ -0,0 +1,63 @@ +open('database.db'); + + $sql = " + CREATE TABLE users ( + ID INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, + HANDLE TEXT NOT NULL UNIQUE, + NAME TEXT NOT NULL, + ABOUT TEXT NOT NULL + ); + + CREATE TABLE posts ( + ID INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, + TIME INTEGER NOT NULL, + USERID INTEGER NOT NULL, + TEXT TEXT NOT NULL + ); + + INSERT INTO users (ID, HANDLE, NAME, ABOUT) VALUES ('0', 'SYSTEM', 'SYSTEM', ''); + + "; + + $ret = $this->exec($sql); + if(!$ret) { + echo $this->lastErrorMsg(); + } else { + echo "Created required tables\n"; + } + + echo "Initialized database\n"; + + } + + function addUser($handle, $name, $about="") { + $sql = "INSERT INTO users (HANDLE, NAME, ABOUT) VALUES ('$handle', '$name', '$about')"; + $ret = $this->exec($sql); + if(!$ret) { + echo $this->lastErrorMsg(); + } else { + echo "User added\n"; + } + } + + function addPost($contents) { + $userid = 0; + $time = time(); + + $sql = "INSERT INTO posts (TIME, USERID, TEXT) values ('$time', '$userid', '$contents')"; + $ret = $this->exec($sql); + if(!$ret) { + echo $this->lastErrorMsg(); + } else { + echo "Post added\n"; + } + } +} +?> diff --git a/index.php b/index.php new file mode 100755 index 0000000..dad99f7 --- /dev/null +++ b/index.php @@ -0,0 +1,33 @@ + + + + + Snuffler + + +
+
+ + +

Snuffs

+ + + + +lastErrorMsg(); +} else { + echo "Opened database successfully\n"; +} + +$database->close(); + +?> \ No newline at end of file