HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/676643/root/usr/local/lsws/admin/html.open/lib/ows/ConfValidation.php
<?php

class ConfValidation extends CValidation
{
	// to hold special validation
	protected function isValidAttr($attr, $cval)
	{
		$isValid = parent::isValidAttr($attr, $cval);

		if ($isValid == 1 && $attr->_type == 'modulename') {
			$res = $this->chkAttr_modulename($attr, $cval);
			$this->setValid($isValid, $res);
		}
		return $isValid;
	}

	protected function chkAttr_modulename($attr, $cval)
	{
		$name = $cval->Get(CNode::FLD_VAL);
		if ( preg_match( "/[<>&%\s]/", $name) ) {
			$cval->SetErr('invalid characters in name');
			return -1;
		}
		else
			return 1;
	}

	protected function validatePostTbl($tbl, $extracted)
	{
		if ($tbl->Get(DTbl::FLD_ID) == 'S_MOD') {
			$isValid = $this->chkPostTbl_SERV_MODULE($extracted);
		}
		else {
			$isValid = parent::validatePostTbl($tbl, $extracted);
		}
		return $isValid;
	}

    protected function chkPostTbl_SERV_MODULE($extracted)
    {
        $isValid = 1;

        $name = $extracted->GetChildVal('name');
        if ($extracted->GetChildVal('internal') == 0) {
            if ($name != 'cache') {
                $module = SERVER_ROOT . "modules/{$name}.so";
                if (!file_exists($module)) {
                    $extracted->SetChildErr('name', "cannot find external module: $module");
                    $isValid = -1;
                }
            } else {
                $extracted->SetChildErr('internal', 'This is a built-in internal module');
                $isValid = -1;
            }
        }

        return $isValid;
    }    
}