155 lines
7.2 KiB
PHP
155 lines
7.2 KiB
PHP
<?php
|
||
// ---------------------------------------------------------------------------------
|
||
// _____ _ _ _ _____
|
||
// | __ \ | | | | /\ (_) | __ \
|
||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||
// | |
|
||
// |_|
|
||
// PhalApi Pro 专业版
|
||
// 广州果创网络科技有限公司
|
||
//
|
||
// ---------------------------------------------------------------------------------
|
||
//
|
||
// 一、协议的许可和权利
|
||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||
// 法律义务;
|
||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||
// 指定的方式获得指定范围内的技术支持服务;
|
||
//
|
||
// 二、协议的约束和限制
|
||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||
// 以及以盈利为目的或实现盈利产品);
|
||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||
// 方版本用于重新开发;
|
||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||
//
|
||
// 三、有限担保和免责声明
|
||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||
//
|
||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||
//
|
||
// ---------------------------------------------------------------------------------
|
||
|
||
/**
|
||
* DI依赖注入配置文件
|
||
*
|
||
* @license http://www.phalapi.net/license GPL 协议
|
||
* @link http://www.phalapi.net/
|
||
* @author dogstar <chanzonghuang@gmail.com> 2017-07-13
|
||
*/
|
||
|
||
use PhalApi\Config\FileConfig;
|
||
use PhalApi\Logger;
|
||
use PhalApi\Logger\FileLogger;
|
||
use PhalApi\Database\NotORMDatabase;
|
||
use Base\Common\Context;
|
||
use PhalApi\Error\ApiError;
|
||
|
||
// 对客户端加密的数据进行解密
|
||
if (!empty($_REQUEST['encrypt_data'])) {
|
||
// 公钥加密-由客户端完成-示例
|
||
// $public_key = openssl_pkey_get_public(file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pub'));
|
||
// openssl_public_encrypt('{"name":"phalapi pro"}', $crypted, $public_key);
|
||
// $_REQUEST['encrypt_data'] = base64_encode($crypted);
|
||
// K07LIy/V+cfZqfHgZpIPnmdkwlkFbTkyRXVXx2JfQrF3YFAIsFcHnC9TjGTezzyup2f0V24nYH71Uf3oXVIqz/X9wgPXW0AGAbJw4kDOIq9Jao5L0mG7t5FV/2DLzJ14qO6fvANv6e/Hy2pFBcKvHnQ8uRJ/wyAV+RpUAa21wCY6zzuo9OhS89NPZg4B4CUORR8SIuIqWTUlXHB0woFIfRiO/AKCGltc9oDkyzJFYVvgI0LwijkQUV9RoruCEx6EvmZY7OVLB5+AXwfnfFKKtCw3jucqHyclzXwCQoif8FXN1NzCNpYvwj7DbzqU/WzRgxnPgXQSyjbCDlw19BrWoQ==
|
||
|
||
// 私钥解密-由服务端完成
|
||
$privateKey = file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pri');
|
||
if($privateKey){
|
||
openssl_private_decrypt(base64_decode($_REQUEST['encrypt_data']), $decrypted, $privateKey);
|
||
$decrypted = $decrypted ? json_decode($decrypted, TRUE) : array();
|
||
if(!empty($decrypted) && is_array($decrypted)) {
|
||
$_REQUEST = array_merge($_REQUEST, $decrypted);
|
||
$_POST = array_merge($_POST, $decrypted);
|
||
}
|
||
}
|
||
}
|
||
|
||
/** ---------------- 基本注册 必要服务组件 ---------------- **/
|
||
|
||
$di = \PhalApi\DI();
|
||
|
||
// 配置
|
||
$di->config = new FileConfig(API_ROOT . DIRECTORY_SEPARATOR . 'config');
|
||
|
||
// 调试模式,$_GET['__debug__']可自行改名
|
||
$di->debug = !empty($_GET['__debug__']) ? true : $di->config->get('sys.debug');
|
||
|
||
// 日记纪录
|
||
$di->logger = FileLogger::create($di->config->get('sys.file_logger'));
|
||
|
||
// 数据操作 - 基于NotORM
|
||
$di->notorm = new NotORMDatabase($di->config->get('dbs'), $di->config->get('sys.notorm_debug'));
|
||
|
||
// 连接其他数据库(或项目原有的数据库,需要时去掉注释)
|
||
// $di->notorm_plus = new NotORMDatabase($di->config->get('dbs_plus'), $di->config->get('sys.notorm_debug'));
|
||
|
||
// 当前上下文,通过签名验证后将会刷新此数据
|
||
$di->context = new Context();
|
||
|
||
// JSON中文输出
|
||
// $di->response = new \PhalApi\Response\JsonResponse(JSON_UNESCAPED_UNICODE);
|
||
|
||
// 错误处理
|
||
$di->error = new ApiError();
|
||
|
||
/** ---------------- 第三应用 服务注册 ---------------- **/
|
||
|
||
// 加载plugins目录下的第三方应用初始化文件
|
||
foreach (glob(API_ROOT . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . '*.php') as $pluginFile) {
|
||
include_once $pluginFile;
|
||
}
|
||
|
||
/** ---------------- 定制注册 可选服务组件 ---------------- **/
|
||
|
||
// 签名验证服务
|
||
$di->filter = new \App\Common\Filter();
|
||
// 如果你需要使用第二套加密算法,请开启以下服务
|
||
// $di->filter = new \App\Common\SignFilter();
|
||
|
||
// 缓存
|
||
$di->cache = new \PhalApi\Cache\FileCache(array('path' => API_ROOT . '/runtime'));
|
||
|
||
// 计划任务
|
||
$mq = new \PhalApi\Task\MQ\DBMQ();
|
||
$di->taskLite = new \PhalApi\Task\Lite($mq);
|
||
|
||
// 支持JsonP的返回
|
||
// if (!empty($_GET['callback'])) {
|
||
// $di->response = new \PhalApi\Response\JsonpResponse($_GET['callback']);
|
||
// }
|
||
|
||
// 生成二维码扩展,参考示例:?s=App.Examples_QrCode.Png
|
||
$di->qrcode = function() {
|
||
return new \PhalApi\QrCode\Lite();
|
||
};
|
||
|
||
// 拼音拓展
|
||
$di->pinyin = function() {
|
||
return new \PhalApi\Pinyin\Lite();
|
||
};
|
||
|
||
// 条形码
|
||
$di->barcode = function() {
|
||
return new \PhalApi\BarCode\Lite();
|
||
};
|
||
|
||
// 注册扩展的追踪器,将SQL写入日志文件
|
||
// $di->tracer = function() {
|
||
// return new \App\Common\Tracer();
|
||
// };
|