/** * @param $XAPP_BASE_DIRECTORY * @param $XAPP_APP_NAME * @param $XAPP_CLIENT_DIRECTORY * @param $REPOSITORY_ROOT * @param $REPOSITORY_START_PATH * @param $UPLOAD_EXTENSIONS * @param $XFILE_CONFIG * @param string $XAPP_JQUERY_THEME * @param $LOG_DIRECTORY * @param $CONF_FILE * @param $XAPP_SALT_KEY * @param $XF_PROHIBITED_PLUGINS * @param $RELATIVE_VARIABLES * @param $XAPP_COMPONENTS * @param $XAPP_RESOURCE_CONFIG * @param null $XAPP_BOOTSTRAP_OVERRIDE * * @return array */ function createApp($XAPP_BASE_DIRECTORY, $XAPP_APP_NAME, $XAPP_CLIENT_DIRECTORY, $REPOSITORY_ROOT, $REPOSITORY_START_PATH, $UPLOAD_EXTENSIONS, $XFILE_CONFIG, $XAPP_JQUERY_THEME = 'dot-luv', $LOG_DIRECTORY, $CONF_FILE, $XAPP_SALT_KEY, $XF_PROHIBITED_PLUGINS, $RELATIVE_VARIABLES, $XAPP_COMPONENTS, $XAPP_RESOURCE_CONFIG, $XAPP_BOOTSTRAP_OVERRIDE = null) { /*** * prepare and adjust bootstrapper for stand-alone */ if (!defined('XAPP_BASEDIR')) { define('XAPP_BASEDIR', $XAPP_BASE_DIRECTORY); } require_once XAPP_BASEDIR . 'XApp_Service_Entry_Utils.php'; XApp_Service_Entry_Utils::includeXAppCore(); XApp_Service_Entry_Utils::includeXAppRPC(); require_once XAPP_BASEDIR . 'app/Renderer.php'; require_once XAPP_BASEDIR . 'commander/Commander.php'; XApp_App_Commander::loadDependencies(); xapp_setup_language_standalone(); xapp_import('xapp.Utils.Strings'); xapp_import('xapp.Utils.Debugging'); $urlParams = array(); if (isset($_SERVER["QUERY_STRING"])) { XApp_Utils_Strings::parse_str($_SERVER["QUERY_STRING"], $urlParams); if (isset($urlParams['view'])) { unset($urlParams['view']); } } define('XAPP_INDEX', xapp_fix_index()); /*** * Quick'n dirty auth delegate * @TODO replace with new ACL/Permission system */ class XAPP_AUTH_DELEGATE { // salt key, passed from index.php public static $_salt; // xf config, passed from index.php public static $_config; /** * Reject RPC methods * @param $what * @return bool */ public static function authorize($what) { /** * Option 1. Use the xfile config passed from index.php */ if (self::$_config) { $data = (array) json_decode(self::$_config); $allowedActions = $data['ALLOWED_ACTIONS']; $intOp = intval(XApp_Service_Entry_Utils::opToInteger($what)); if ($intOp != XC_OPERATION_UNKOWN) { if ($intOp > 0 && $intOp < count($allowedActions)) { //boundary check return $allowedActions[$intOp]; } } } /** * Option 2. Reject via string match if you like */ switch ($what) { case XC_OPERATION_COPY_STR: case XC_OPERATION_MOVE_STR: case XC_OPERATION_DELETE_STR: case XC_OPERATION_READ_STR: case XC_OPERATION_EDIT_STR: case XC_OPERATION_COMPRESS_STR: case XC_OPERATION_RENAME_STR: case XC_OPERATION_DOWNLOAD_STR: case XC_OPERATION_FILE_UPDATE_STR: case XC_OPERATION_NEW_DIRECTORY_STR: case XC_OPERATION_NEW_FILE_STR: case XC_OPERATION_UPLOAD: case XC_OPERATION_DOWNLOAD: case XC_OPERATION_EXTRACT: return true; } return true; } public function getUserName() { return 'admin'; } public function getToken() { return md5(self::$_salt); } } XAPP_AUTH_DELEGATE::$_salt = $XAPP_SALT_KEY; XAPP_AUTH_DELEGATE::$_config = $XFILE_CONFIG; $authDelegate = new XAPP_AUTH_DELEGATE(); $XAPP_XFILE_CONFIG_ARRAY = array(); $XAPP_XFILE_CONFIG_ARRAY['XAPP_FILE_START_PATH'] = ''; $XAPP_XFILE_CONFIG_ARRAY['XAPP_FILE_ROOT'] = $REPOSITORY_ROOT; require_once XAPP_BASEDIR . 'lib/standalone/StoreDelegate.php'; $extraParams = count($urlParams) ? '&' . http_build_query($urlParams) : ''; if (!$XAPP_RESOURCE_CONFIG) { $XAPP_RESOURCE_CONFIG = ''; } $renderStruct = xapp_commander_render_app(XAPP_BASEDIR, 'xbox', $XAPP_CLIENT_DIRECTORY, $REPOSITORY_ROOT, $REPOSITORY_START_PATH, $UPLOAD_EXTENSIONS, $XFILE_CONFIG, $XAPP_JQUERY_THEME, dirname(XApp_Service_Entry_Utils::getUrl()) . '/', dirname(XApp_Service_Entry_Utils::getUrl()) . '/xapp/commander/plugins/', dirname(XApp_Service_Entry_Utils::getUrl()) . '/' . XAPP_INDEX . '?view=rpc', $authDelegate, '', '', $LOG_DIRECTORY, $XF_PROHIBITED_PLUGINS, 'standalone', 'XCOM_Resource_Renderer', '', new stdClass(), null, null, null, null, dirname(XApp_Service_Entry_Utils::getUrl()) . '/' . XAPP_INDEX . '?view=smdCall' . $extraParams, dirname(XApp_Service_Entry_Utils::getUrl()) . '/' . XAPP_INDEX . '?view=rpc' . $extraParams, 'XApp_Store_Delegate', $CONF_FILE, $XAPP_SALT_KEY, $RELATIVE_VARIABLES, XApp_Service_Entry_Utils::isDebug() === true, $XAPP_COMPONENTS, $XAPP_RESOURCE_CONFIG, $XAPP_BOOTSTRAP_OVERRIDE); return $renderStruct; }
public static function loadRPC() { if (!class_exists('XApp_Service_Entry_Utils')) { require_once XAPP_BASEDIR . '/XApp_Service_Entry_Utils.php'; } XApp_Service_Entry_Utils::includeXAppRPC(); }