HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/limestate-api/Models/Api.php
<?php

class Api {
    static $version = '1.0';
    static $userId = 0;
    static $apps = array(
        'mobile' => 'sdfmwn2',
	    'foachbot' => 'mysecret'
    );

    /**
     * @param bool|array $data
     */
    public static function success($data = null)
    {
    	header('Access-Control-Allow-Origin: *');
        header('Content-Type: application/json');
        $res = array(
            'status' => 'ok'
        );

        if (!is_null($data)) {
            $res['data'] = $data;
        }

        echo json_encode($res);
        exit;
    }

    /**
     * @param (int) $code – код ошибки
     * @param string|bool $msg — сообщение
     */
    public static function error($code, $msg = false)
    {
	    header('Access-Control-Allow-Origin: *');
        header('Content-Type: application/json');
        $res = array(
            'status' => 'error',
            'code' => $code,
            'msg' => $msg
        );

        echo json_encode($res);
        exit;
    }

    public static function getValidCrc($app)
    {
        $params = strtolower($_SERVER['REQUEST_METHOD']) == 'post' ? $_POST : $_GET;
        unset($params['crc']);
        unset($params['url']);

        $secret = self::$apps[$app];
        return md5(json_encode($params) . 'todoAPI' . $secret);
    }

    public static function checkCrc($crc, $app = false)
    {
    	return true;
        if ($app) {
            $validCrc = self::getValidCrc($app);

            return $crc == $validCrc;
        } else {
            foreach (self::$apps as $app => $secret) {
                $validCrc = self::getValidCrc($app);
                if ($crc == $validCrc) return true;
            }
            return false;
        }
    }

    public static function getVar($name, $default = NULL, $method = NULL, $type = NULL, $required = true)
    {
        $var = Data::getVar($name, $default, $method);

        if ($var === NULL) {
            if ($required) {
                Api::error(3, 'Отсутсвует обязательный параметр: ' . $name);
            } else {
                return $default;
            }
        }

        switch ($type) {
            case 'email':
                if (!filter_var($var, FILTER_VALIDATE_EMAIL)) {
                    Api::error(4, 'Невалидный формат поля email: ' . $var);
                }
                break;
            case 'password':
                if (trim($var) == '') {
                    Api::error(5, 'Пароль не может быть пустым.');
                }
                 break;
            case 'token':
                if (!Token::findUser($var)) {
                    Api::error(1, 'Неправильный token');
                }
                break;
            case '[0,1]':
                if (!is_numeric($var) || !in_array($var, array(0, 1))) {
                    Api::error(1, 'Неправильное значение поля ' . $name . '(' . $var . '). Допустимые значения: 0 или 1');
                }
                break;
            default:
                break;
        }

        return $var;
    }
}