summaryrefslogtreecommitdiff
path: root/docker/gen_config.php
blob: 71fd721d5c054d602d725d5d32629a73a318ca6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 <?php

include "/var/www/html/4get/data/config.php";

$refl = new ReflectionClass('config');
$config = ($refl->getConstants());

$env = getenv();
$fourget_env = array_filter($env, function($v, $k) {
        return str_starts_with($k, "FOURGET");
}, ARRAY_FILTER_USE_BOTH);


foreach($fourget_env as $key => $val)  {
        $target_key = preg_replace('/^FOURGET_/', '', $key);
        $config[$target_key] = $val;
};

function type_to_string($n) {
        $type = gettype($n);
        if ($type === "NULL") {
                return "null";
        }
        if ($type === "boolean") {
                return $n ? 'true' : 'false';
        }
        if ($type === "string") {
                return "\"$n\"";
        }
        if ($type === "array") {
                return json_encode($n);
        }
        return $n;
}


function detect_captcha_dirs() {
        $captcha_dir = "/var/www/html/4get/data/captcha/";
        $categories = (array_map(function ($n) {
                return explode("/", $n)[7];
        }, glob($captcha_dir . "*")));


        $result = array_map(function($category) {
                return [$category, count(glob("/var/www/html/4get/data/captcha/" . $category . "/*" ))];
        }, $categories);

        return $result;
}


$special_keys = ["CAPTCHA_DATASET"];

$output = "<?php\n // This file was generated by docker/gen_config.php\n";

$output = $output . "class config {\n";
foreach(($config) as $key => $val){
        if(!in_array($key, $special_keys)) {
$output = $output . "\tconst " . $key . " = " . type_to_string($val) . ";\n";
continue;
        }


if($key === "CAPTCHA_DATASET") {
        $output = $output . "\tconst " . $key . " = " . type_to_string(detect_captcha_dirs()) . ";\n";
        }

}

$output = $output . "}\n";
$output = $output . "?>";

file_put_contents("./data/config.php", $output);
?>