Moved both sanity check and fix into one file

This commit is contained in:
Michał Gdula 2022-11-05 18:02:54 +00:00
parent 45b79c9c33
commit fa7b2e2eb6
9 changed files with 312 additions and 428 deletions

View file

@ -322,241 +322,4 @@ class Diff {
if (!$full_date) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
}
class Sanity {
function check_json(): array
{
$results = array();
if (!is_file(__DIR__."/../usr/conf/msg.json")) {
$results[] = array(
'type'=>'warning',
'message'=>'msg.json is missing',
'fix'=>'auto'
);
}
if (!is_file(__DIR__."/../usr/conf/conf.json")) {
if (is_file(__DIR__."/../usr/conf/manifest.json")) {
$results[] = array(
'type'=>'critical',
'message'=>'manifest.json is deprecated, please rename it to conf.json',
'fix'=>'manual'
);
} else {
$results[] = array(
'type'=>'critical',
'message'=>'conf.json is missing, using conf.default.json instead',
'fix'=>'auto'
);
}
} else {
$manifest = json_decode(file_get_contents(__DIR__."/../usr/conf/conf.json"), true);
if (empty($manifest['user_name']) || $manifest['user_name'] == "[your name]") {
$results[] = array(
'type'=>'warning',
'message'=>'conf.json is missing your name',
'fix'=>'manual'
);
}
if ($manifest['upload']['rename_on_upload']) {
if (empty($manifest['upload']['rename_to'])) {
$results[] = array(
'type'=>'critical',
'message'=>'conf.json doesnt know what to rename your files to',
'fix'=>'manual'
);
} else {
$rename_to = $manifest['upload']['rename_to'];
$rename_rate = 0;
if (str_contains($rename_to, '{{autoinc}}')) $rename_rate = 5;
if (str_contains($rename_to, '{{time}}')) $rename_rate = 5;
if (str_contains($rename_to, '{{date}}')) $rename_rate += 2;
if (str_contains($rename_to, '{{filename}}')) $rename_rate += 2;
if (str_contains($rename_to, '{{username}}') || str_contains($rename_to, '{{userid}}')) $rename_rate += 1;
if ($rename_rate < 2) {
$results[] = array(
'type'=>'critical',
'message'=>'You will encounter errors when uploading images due to filenames, update your conf.json',
'fix'=>'manual'
);
} elseif ($rename_rate < 5 && $rename_rate > 2) {
$results[] = array(
'type'=>'warning',
'message'=>'You may encounter errors when uploading images due to filenames, concider modifying your conf.json',
'fix'=>'manual'
);
}
}
}
if ($manifest['is_testing']) {
$results[] = array(
'type'=>'warning',
'message'=>'You are currently in testing mode, errors will be displayed to the user. This is not recommended for production use.'
);
}
}
return $results;
}
function check_files(): array
{
$results = array();
if (!is_dir("usr/images")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to setup an images folder.',
'fix'=>'auto'
);
}
if (!is_dir("usr/images/pfp")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to setup an pfp folder.',
'fix'=>'auto'
);
}
if (!is_dir("usr/images/previews")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to setup an previews folder.',
'fix'=>'auto'
);
}
if (!is_dir("usr/images/thumbnails")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to setup an thumbnails folder.',
'fix'=>'auto'
);
}
return $results;
}
function check_version(): array
{
$results = array();
// Local app info
$app_local = json_decode(file_get_contents(__DIR__."/gallery.json"), true);
// Repo app info
$curl_url = "https://raw.githubusercontent.com/Fluffy-Bean/image-gallery/".$app_local['branch']."/app/settings/manifest.json";
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $curl_url);
$result = curl_exec($curl);
curl_close($curl);
$app_repo = json_decode($result, true);
if ($app_local['version'] < $app_repo['version']) {
$results[] = array(
'type'=>'critical',
'message'=>'You are not running the latest version of the app v'.$app_repo['version'],
'link'=>'https://github.com/Fluffy-Bean/image-gallery',
'fix'=>'manual'
);
} elseif ($app_local['version'] > $app_repo['version']) {
$results[] = array(
'type'=>'critical',
'message'=>'You are running a version of the app that is newer than the latest release v'.$app_repo['version'],
'link'=>'https://github.com/Fluffy-Bean/image-gallery',
'fix'=>'manual'
);
}
if (PHP_VERSION_ID < 80000) {
$results[] = array(
'type'=>'warning',
'message'=>'Your current version of PHP is '.PHP_VERSION.' The reccomended version is 8.0.0 or higher',
'link'=>'https://www.php.net/downloads.php',
'fix'=>'manual'
);
}
return $results;
}
function check_permissions(): array
{
$results = array();
if (!fileperms("usr")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to give PHP usr folder permissions',
'fix'=>'manual'
);
} else {
if (!fileperms("usr/images")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to give PHP images folder permissions',
'fix'=>'manual'
);
}
if (!fileperms("usr/images/pfp")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to give PHP pfp folder permissions',
'fix'=>'manual'
);
}
if (!fileperms("usr/images/previews")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to give PHP previews folder permissions',
'fix'=>'manual'
);
}
if (!fileperms("usr/images/thumbnails")) {
$results[] = array(
'type'=>'critical',
'message'=>'You need to give PHP thumbnails folder permissions',
'fix'=>'manual'
);
}
}
return $results;
}
function check_freshinstall(): array
{
$results = array();
if (!is_dir("usr/conf") && !is_dir("usr/images")) {
$results[] = array(
'type'=>'warning',
'message'=>'You are running a fresh install, please configure your app through the settings. Alternatively you can import usr folder from a previous install',
'fix'=>'manual'
);
}
return $results;
}
function get_results(): array
{
$results = array();
foreach ($this->check_json() as $result) $results[] = $result;
foreach ($this->check_files() as $result) $results[] = $result;
foreach ($this->check_permissions() as $result) $results[] = $result;
foreach ($this->check_version() as $result) $results[] = $result;
foreach ($this->check_freshinstall() as $result) $results[] = $result;
return $results;
}
}