ken\trade
<?phpnamespace ken\trade;use Yii;
use yii\base\BootstrapInterface;
use yii\web\ForbiddenHttpException;/*** 交易模塊 - Ken Trade** 使用配置** ~~~* return [* 'bootstrap' => ['ktrade'],* 'modules' => [* 'ktrade' => [* 'class' => 'ken\trade\Module',* 'allowedIPs' => ['127.0.0.1', '192.168.*.*'],* ],* ],* ]* ~~~** 默認時此模塊僅允許在 localhost 上進行訪問,也可以通過配置 * [[allowedIPs]] 屬性來讓其它機器訪問.* * 訪問地址: `http://localhost/path/to/index.php?r=gii`** 如果啟用url 美化功能 [[\yii\web\UrlManager::enablePrettyUrl|pretty URLs]],* 則訪問地址為: `http://localhost/path/to/index.php/gii`** @author Xiaohan Xu <vb2005xu@qq.com>* @since 2.0*/
class Module extends \yii\base\Module implements BootstrapInterface
{/*** @inheritdoc*/public $controllerNamespace = 'ken\trade\controllers';/*** @var array * * 默認只允許 localhost 訪問.* 也可以設置 外網機器訪問,例如 ['127.0.0.1', '192.168.*.*']*/public $allowedIPs = ['127.0.0.1', '::1'];public $allowedHosts = [];/*** @var string 交易日志的目錄*/public $logPath = '@runtime/ktrade';/*** @var array 對外訪問的api列表*/public $apis = [];/*** @inheritdoc*/public function init(){parent::init();$this->logPath = Yii::getAlias($this->logPath);}/*** @inheritdoc*/public function bootstrap($app){$app->getUrlManager()->addRules([$this->id => $this->id,$this->id . '/<controller:[\w\-]+>/<action:[\w\-]+>' => $this->id . '/<controller>/<action>',], false);}/*** @inheritdoc*/public function beforeAction($action){if (!parent::beforeAction($action)) {return false;}if (Yii::$app instanceof \yii\web\Application && !$this->checkAccess()) {throw new ForbiddenHttpException('You are not allowed to access this page.');}foreach (array_merge($this->coreApis(), $this->apis) as $id => $config) {$this->apis[$id] = Yii::createObject($config);}$this->resetGlobalSettings();return true;}/*** Resets potentially incompatible global settings done in app config.*/protected function resetGlobalSettings(){if (Yii::$app instanceof \yii\web\Application) {Yii::$app->assetManager->bundles = [];}}/*** @return boolean whether the module can be accessed by the current user*/protected function checkAccess(){$ip = Yii::$app->getRequest()->getUserIP();foreach ($this->allowedIPs as $filter) {if ($filter === '*' || $filter === $ip || (($pos = strpos($filter, '*')) !== false && !strncmp($ip, $filter, $pos))) {return true;}}foreach ($this->allowedHosts as $hostname) {$filter = gethostbyname($hostname);if ($filter === $ip) {return true;}}Yii::warning('拒絕訪問 kentrade. 請求的 IP 是 ' . $ip, __METHOD__);return false;}/*** 返回 交易模塊提供的對外api接口* @return array*** */protected function coreApis(){return ['pay' => ['class' => 'ken\trade\apis'],'pay' => ['class' => 'ken\trade\apis'],];}
}
總結
- 上一篇: 嵌入式系统概述2-嵌入式系统组成和应用
- 下一篇: C语言描述:DNA