0){ define('ECAE_MODE', true); }else{ define('ECAE_MODE', false); } error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_WARNING); require_once(dirname(__FILE__) . '/lib/ego/ego.php'); class kernel{ static $base_url = null; static $url_app_map = array(); static $app_url_map = array(); static $console_output = false; static private $__online = null; static private $__router = null; static private $__db_instance = null; static private $__singleton_instance = array(); static private $__request_instance = null; static private $__single_apps = array(); static private $__service_list = array(); static private $__base_url = array(); static private $__language = null; static function cleanInstance() { self::$__db_instance = null; self::$__singleton_instance = []; self::$__request_instance =null; self::$__single_apps =[]; } static function boot(){ set_error_handler(array('kernel', 'exception_error_handler')); try{ // 如果已经安装直接引入CONFIG if (self::is_online()) { require ROOT_DIR . '/config/config.php'; @include APP_DIR . '/base/defined.php'; } // 兼容PHP ERROR if (defined('SENTRY_OPTIONS') && constant('SENTRY_OPTIONS') && is_array(constant('SENTRY_OPTIONS'))){ \Sentry\init(constant('SENTRY_OPTIONS')); } require(ROOT_DIR.'/config/mapper.php'); self::$url_app_map = $urlmap; foreach(self::$url_app_map AS $flag=>$value){ self::$app_url_map[$value['app']] = $flag; } /*// xss 和 sql 注入问题 $before_request = json_encode($_REQUEST); $after_request = json_encode(self::request_filter($_REQUEST)); if ($before_request != $after_request) { header("HTTP/1.1 508 Not Found"); exit; }*/ // if(!self::register_autoload()){ // require(dirname(__FILE__) . '/autoload.php'); // } $pathinfo = self::request()->get_path_info(); $jump = false; if(isset($pathinfo[1])){ if($p = strpos($pathinfo,'/',2)){ $part = substr($pathinfo,0,$p); }else{ $part = $pathinfo; $jump = true; } }else{ $part = '/'; } if($part=='/api'){ cachemgr::init(); if(isset($_POST['method']) && (substr($_POST['method'],0,4) == 'wms.' ||substr($_POST['method'],0,6) == 'store.' || in_array($_POST['method'],['ome.order.deliverypriority']))){ #wms请求处理 //return kernel::single('rpc_service')->process($pathinfo); return kernel::single('erpapi_rpc_service',1)->process($pathinfo); }else{ return kernel::single('base_rpc_service',1)->process($pathinfo); } }elseif($part=='/callback'){ // RPC callback 功能已移除 // cachemgr::init(); // return kernel::single('rpc_service',1)->callback($pathinfo); die('RPC callback function has been removed'); }elseif($part=='/openapi'){ cachemgr::init(); return kernel::single('base_rpc_service',1)->process($pathinfo); }elseif($part=='/app-doc'){ cachemgr::init(); return kernel::single('base_misc_doc',1)->display($pathinfo); }elseif($part=='/qimen'){ //qimen路由(birkenstock勃肯中间件使用) cachemgr::init(); return kernel::single('qimen_rpc_service',1)->process($pathinfo); } if(isset(self::$url_app_map[$part])){ if($jump){ $request_uri = self::request()->get_request_uri(); $urlinfo = parse_url($request_uri); $query = $urlinfo['query']?'?'.$urlinfo['query']:''; header('Location: '.$urlinfo['path'].'/'.$query); exit; }else{ $app = self::$url_app_map[$part]['app']; $prefix_len = strlen($part)+1; // kernel::set_lang(self::$url_app_map[$part]['lang']); } }else{ if ($part !== '/index.php') { header("HTTP/1.1 404 Not Found");exit; } $app = self::$url_app_map['/']['app']; $prefix_len = 1; // kernel::set_lang(self::$url_app_map['/']['lang']); } $lang = kernel::single('base_component_request', 1)->get_cookie('oms-language'); kernel::set_lang($lang ?: self::$url_app_map['/']['lang']); if(!$app){ readfile(ROOT_DIR.'/app/base/readme.html'); exit; } if(!self::is_online()){ if(file_exists(APP_DIR.'/setup/app.xml')){ if($app!='setup'){ //todo:进入安装check setcookie('LOCAL_SETUP_URL', app::get('setup')->base_url(1), 0, '/'); header('Location: '. kernel::base_url().'/app/setup/check.php'); exit; } }else{ echo '