`

ken\trade

 
阅读更多
<?php

namespace 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'],
        ];
    }
}

分享到:
评论

相关推荐

    前端开源库-kenburns-webgl

    【前端开源库-kenburns-webgl】是一个利用WebGL技术实现肯·伯恩斯(Ken Burns)效果的开源项目。肯·伯恩斯效果,也称为缩放移动效果,通常用于图片展示,通过平移和缩放图像来创造动态视觉体验,常在纪录片和电视...

    前端开源库-kenburns-dom

    **前端开源库——KenBurns-DOM:DOM实现的肯·伯恩斯效果** 在现代网页设计中,视觉效果的创新和动态性是吸引用户注意力的关键要素之一。Ken Burns Effect,也称为“肯·伯恩斯效应”,是一种常见的摄影技巧,通过...

    基于OpenCV实现Ken Burns特效-python源码.zip

    在本资源中,我们关注的是如何使用Python编程语言和OpenCV库来实现Ken Burns特效,这是一种常见的视频制作技术,也被称为“相机移动”或“缩放”特效。Ken Burns效应通常用于历史纪录片,通过在静态图像上应用平移和...

    FCPX使用 Ken Burns 效果平移和缩放片段.pdf

    **FCPX中的Ken Burns效果详解** Final Cut Pro X(FCPX)是一款强大的视频编辑软件,其中包含了许多专业级的特效工具。"Ken Burns效果"是FCPX中的一个经典功能,它以美国纪录片导演Ken Burns的名字命名,常用于制作...

    Ken Burns 特效用到的jar

    《Android开发必知的50个诀窍》一书中《附加 Ken Burns 特效的幻灯片》需要的特效jar

    Ken Hultgren -动物绘画艺术英文原版

    Ken Hultgren 前迪士尼动画专家提供绘画方面的建议,无论是现实还是漫画。运用线条、刷子手法、建立心情、传递动作等。施工图揭示了动物形象塑造的发展过程。绘制动物个体形态的章节有:狗、猫、马、鹿、牛、狐狸、...

    KenBurns特效,可以控制图片是否自动移动

    KenBurns特效是一种在Android应用中广泛使用的动态图像展示技术,源自于著名的美国纪录片导演肯·伯恩斯(Ken Burns)的摄影手法。这种效果通过平移和缩放图像来创造出深度感和动感,使静态图片仿佛有了生命,通常被...

    sed英文资料2018版by Ken Pizzini, Paolo Bonzini

    标题中的“sed英文资料2018版by Ken Pizzini, Paolo Bonzini”表明文档是由Ken Pizzini和Paolo Bonzini编写,这两人可能是sed工具的开发者或贡献者,文档更新于2018年。sed是“stream editor”的缩写,意为流编辑器...

    附加Ken Burns特效的幻灯片

    Ken Burns特效只不过是视频产品中使用的一种平移和缩放静态图片的特效,要实现该特效,需要使用Jake Wharton开发的Nine Old Androids库。这个库可以让开发者在旧版本上使用Android3.0的动画API。

    仿Ken Burns效果jQuery幻灯片插件

    这是一款仿Ken Burns效果的jQuery幻灯片插件。该幻灯片插件是基于smartcrop.js插件的,smartcrop.js是一款用于剪裁图片的js插件。Ken Burns效果是将图片逐渐平移放大的动画效果。

    Ken的求职代码片段

    【标题】"Ken的求职代码片段"涉及到的是一个求职者,可能是Ken,为了展示自己的编程技能和项目经验而准备的代码示例。这样的代码片段通常包括个人在以往项目中的核心实现,或者是为解决特定问题而设计的小型程序,...

    swt designer(KEN)无敌破解器

    博文链接:https://8000.iteye.com/blog/154043

    ComponentOne 2007 ken gen

    ComponentOne 是一家知名的软件开发公司,专注于为开发者提供各种组件和工具,以简化软件开发过程。在2007年,他们发布了一系列针对不同平台和框架的开发工具,包括ComponentOne Studio for Mobile Devices、...

    ken_segfault.nasl

    ken_segfault

    前端开源库-kenburns-editor

    **Kenburns编辑器概述** Kenburns编辑器是一款专为前端开发者设计的开源库,它专注于实现Kenburns效果。Kenburns效果,又称肯勃兹效应,是一种在图像或视频背景上创建动态缩放和平移效果的技术,通常用于增强视觉...

    Ken-Website-Project:我的组织网站的新版本

    jekyll-gulp-sass-browser-sync 一个入门项目,包括对Jekyll,GulpJS,SASS,AutoPrefixer和BrowserSync的完整设置这是一个1.5分钟的显示您得到了什么。 这是显示CSS注入的GIF。系统准备要使用此入门项目,您需要在...

    ken-burns-css:用于图像的Ken Burns效果CSS

    Ken Burns效果,也被称为“Ken Burns Effect”,是一种在电视、电影和数字媒体中广泛应用的动态缩放和移动的摄影技术,以美国纪录片制作人Ken Burns的名字命名。这种效果通过在屏幕上逐渐放大或缩小图片,同时可能...

    《Quaternions》(四元数,作者Ken Shoemake)

    在《Quaternions》这篇文章中,Ken Shoemake详尽地讲解了四元数的各个方面,包括它们的定义、数学原理、如何使用、应用场景以及在使用时需要注意的问题。作者不仅介绍理论知识,还结合实际应用,使得四元数的学习和...

    Android特效的幻灯片-Ken Burns

    其中,"Ken Burns"特效,也被称为“Ken Burns效果”或“移动镜头”效果,是一种广泛应用于幻灯片、照片展示和视频制作中的动态图像处理技术。这种特效通过模拟摄像机对静态图像的平移和缩放,赋予静止的画面一种动态...

Global site tag (gtag.js) - Google Analytics