Progress towards autofix working

This commit is contained in:
Michał Gdula 2022-11-03 18:00:05 +00:00
parent 2ef5b6d54a
commit 86bba69f81
11 changed files with 438 additions and 174 deletions

View file

@ -324,109 +324,6 @@ class Diff {
}
}
class Setup {
function create_tables($conn, $sql): bool
{
/*
$sql = "CREATE TABLE IF NOT EXISTS users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
pfp_path VARCHAR(255) NOT NULL,
admin BOOLEAN NOT NULL DEFAULT FALSE,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table users created successfully";
}
$sql = "CREATE TABLE IF NOT EXISTS images (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
imagename VARCHAR(255) NOT NULL,
alt VARCHAR(text) NOT NULL,
tags VARCHAR(text) NOT NULL,
author INT(11) NOT NULL,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table images created successfully";
}
$sql = "CREATE TABLE IF NOT EXISTS groups (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
group_name VARCHAR(255) NOT NULL,
image_list VARCHAR(text) NOT NULL,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table groups created successfully";
}
$sql = "CREATE TABLE IF NOT EXISTS logs (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
ipaddress VARCHAR(16) NOT NULL,
action VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table logs created successfully";
}
$sql = "CREATE TABLE IF NOT EXISTS bans (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
ipaddress VARCHAR(16) NOT NULL,
reason VARCHAR(255) NOT NULL,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
length VARCHAR(255) NOT NULL,
permanent BOOLEAN NOT NULL DEFAULT FALSE
)";
if ($conn->query($sql) === TRUE) {
echo "Table bans created successfully";
}
$sql = "CREATE TABLE IF NOT EXISTS tokens (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(59) NOT NULL,
used BOOLEAN NOT NULL DEFAULT FALSE,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Table tokens created successfully";
}
*/
return True;
}
function create_usr() {
if (!is_dir(__DIR__."/../usr")) {
mkdir("usr");
}
if (!is_dir(__DIR__."/../usr/images")) {
mkdir("usr/images");
}
if (!is_dir(__DIR__."/../usr/images/thumbnails")) {
mkdir("usr/images/thumbnails");
}
if (!is_dir(__DIR__."/../usr/images/previews")) {
mkdir("usr/images/previews");
}
if (!is_dir(__DIR__."/../usr/conf")) {
mkdir("usr/conf");
}
if (!is_file(__DIR__."/../usr/conf/conf.json")) {
$manifest = file_get_contents(__DIR__."/../usr/conf.default.json");
file_put_contents(__DIR__."/../usr/conf/conf.json", $manifest);
}
}
}
class Sanity {
function check_json(): array
{

View file

@ -1,5 +1,5 @@
{
"license": "GPL 3.0",
"version": "22.11.02",
"version": "22.11.03",
"branch": "main"
}

134
app/sanity/database.php Normal file
View file

@ -0,0 +1,134 @@
<?php
if (defined('ROOT')) {
function check_database($conn, $database) {
try {
$check = $conn->query("SELECT 1 FROM $database LIMIT 1");
if ($check) {
return true;
} else {
return false;
}
} catch (Exception $e) {
return false;
}
}
/*if (check_database($conn, 'images')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found images table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find images table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS images (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
imagename VARCHAR(255) NOT NULL,
alt VARCHAR(text) NOT NULL,
tags VARCHAR(text) NOT NULL,
author INT(11) NOT NULL,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table images made!</p>";
}
}
if (check_database($conn, 'users')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found users table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find users table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
pfp_path VARCHAR(255) NOT NULL,
admin BOOLEAN NOT NULL DEFAULT FALSE,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table users made!</p>";
}
}
if (check_database($conn, 'groups')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found groups table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find groups table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS groups (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
group_name VARCHAR(255) NOT NULL,
image_list VARCHAR(text) NOT NULL,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table groups made!</p>";
}
}
if (check_database($conn, 'logs')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found logs table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find logs table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS logs (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
ipaddress VARCHAR(16) NOT NULL,
action VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table logs made!</p>";
}
}
if (check_database($conn, 'bans')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found bans table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find bans table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS bans (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
ipaddress VARCHAR(16) NOT NULL,
reason VARCHAR(255) NOT NULL,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
length VARCHAR(255) NOT NULL,
permanent BOOLEAN NOT NULL DEFAULT FALSE
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table bans made!</p>";
}
}
if (check_database($conn, 'tokens')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found tokens table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[INFO]</span> Could not find tokens table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
$sql = "CREATE TABLE IF NOT EXISTS tokens (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(59) NOT NULL,
used BOOLEAN NOT NULL DEFAULT FALSE,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Table tokens made!</p>";
}
}*/
if (check_database($conn, 'test')) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found test table</p>";
} else {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> Could not find test table</p>";
echo "<p><span style='color: var(--alert);'>[INFO]</span> Creating test table...</p>";
}
}

58
app/sanity/folders.php Normal file
View file

@ -0,0 +1,58 @@
<?php
if (defined('ROOT')) {
if (is_dir(__DIR__."/../../usr")) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found usr/ folder!</p>";
} else {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/ folder not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/ folder...</p>";
mkdir("usr");
}
if (is_dir(__DIR__."/../../usr/images")) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found usr/images/ folder!</p>";
} else {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/images/ folder not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/images/ folder...</p>";
mkdir("usr/images");
}
if (!is_dir(__DIR__."/../../usr/images/thumbnails")) {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/images/thumbnails/ folder not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/images/thumbnails/ folder...</p>";
mkdir("usr/images/thumbnails");
}
if (!is_dir(__DIR__."/../../usr/images/previews")) {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/images/previews/ folder not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/images/previews/ folder...</p>";
mkdir("usr/images/previews");
}
if (!is_dir(__DIR__."/../../usr/conf")) {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/conf/ folder not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/conf/ folder...</p>";
mkdir("usr/conf");
}
if (is_file(__DIR__."/../../usr/conf/conf.json")) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Found usr/conf/conf.json file!</p>";
} else {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> usr/conf/conf.json file not found</p>";
echo "<p><span style='color: var(--accent);'>[INFO]</span> Creating usr/conf/conf.json file...</p>";
try {
$conf = file_get_contents(__DIR__."/../../usr/conf.default.json");
if (file_put_contents(__DIR__."/../../usr/conf/conf.json", $conf)) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> usr/conf/conf.json file created!</p>";
} else {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> Failed to create usr/conf/conf.json file</p>";
}
} catch (Exception $e) {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> Could not read usr/conf.default.json file</p>";
}
}
}

42
app/sanity/sanity.php Normal file
View file

@ -0,0 +1,42 @@
<?php
session_start();
include dirname(__DIR__) . "/conn.php";
include dirname(__DIR__) . "/app.php";
use App\Sanity;
$sanity = new Sanity();
if (isset($_POST['autofix'])) {
$autofix_start = microtime(true);
echo "<p><span style='color: var(--accent);'>[INFO]</span> Starting autofix</p>";
if ($_SESSION['id'] != 1) {
echo "<p><span style='color: var(--warning);'>[ERRO]</span> You cannot use Autofix as an Admin currently.</p>";
exit();
}
$check_sanity = $sanity->get_results();
if (empty($check_sanity)) {
echo "<p><span style='color: var(--accent);'>[INFO]</span> Sanity check passed. No errors found.</p>";
exit();
} else {
//echo "<p><span style='color: var(--alert);'>[WARN]</span> Sanity check failed</p>";
}
define('ROOT', true); // Only run scripts from this file
echo "<p>==== Databases ====</p>";
include_once "database.php";
echo "<p>==== Folders ====</p>";
include_once "folders.php";
$autofix_end = microtime(true);
$autofix_time = ($autofix_end - $autofix_start);
$autofix_time = round($autofix_time, 6) * 1000;
echo "<p><span style='color: var(--accent);'>[INFO]</span> Autofix complete in $autofix_time ms</p>";
}