TLingC's Zone
TLingC's Zone

TLingC's Zone
搜索什么...

iptables显示规则命中速率

之前一直使用watch 'iptables -vxL'来查看iptables规则实时状况,虽然通过这样查看累计数能够大概了解到规则命中的情况,但只能通过估算来得知命中速度,在有时候不太方便。 在优化iptables规则时,偶然阅读 Cloudflare 的 How to drop 10 million packets per second 这篇文章,发现其使用了mmwatch的工具,可以把iptables的规则从累计命中数转为每秒速度。 $ mmwatch 'iptables -L -v -n -x | head' Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes ta…

48   2020-03-27  

https://tlingc.com/wp-content/uploads/2020/01/TIM截图20200109163548.jpg

防御Source Engine Query泛洪攻击(二)

上一篇文章《防御Source Engine Query泛洪攻击(一)》提到使用限速模块对单IP进行请求限速,但若攻击者使用伪造的IP发送数据包,那么限速模块就不能很好地起到作用了。 在没有很好的方法防御的情况下,可以使用主动丢弃被攻击的端口的查询包(即类似于封禁端口)的方法来防止查询包到达游戏服务器,防止产生反射流量影响…

52   2020-03-23  

ThinkPHP 6 阿里云日志服务日志驱动

think-aliyunsls ThinkPHP 6 阿里云日志服务日志驱动 安装 composer require tlingc/think-aliyunsls 配置 config/log.php // 默认日志记录通道 'default' => 'aliyunsls', // 日志通道列表 'channels' => [ 'aliyunsls' => [ // 日志记录方式 'type' => 'Aliyunsls', // 阿里云 endpoint 'endpoint' => 'http://cn-beijing.sls.aliyuncs.com/', // 阿里云 AccessKey ID 'access_key_id' …

44   2020-03-16  

腾讯云 ThinkPHP Serverless Component

由 官方维护的ThinkPHP Component 已发布,可使用官方版。 由于官方对静态资源处理采用扩展名枚举实现,暂无法满足我的业务需求,故本仓库还会维护一段时间。如果官方版已经能够满足你的需求,建议使用官方版。 简介 腾讯云 ThinkPHP Serverless Component。 本项目基于 tencent-laravel 修改,以支持运行 ThinkPHP,同时优化了对静态资源的兼容性。 目录 准备 安装 配置 部署 移除 0. 准备 初始化 ThinkPHP 项目 在使用此组件之前,你需要先自己初始化一个 thinkphp …

44   2020-03-08  

Docker 19.03 设置Docker Hub镜像地址

在 Docker 19.03 中,通过修改/etc/default/docker文件: DOCKER_OPTS="--registry-mirror=https://docker.mirrors.ustc.edu.cn" 的方法已经不再可用,修改后仍然会使用 Docker Hub 自己的地址,并没有使用自己设置的镜像地址。 在本版本中可以通过/etc/docker/daemon.json实现镜像地址的修改,如果没有此文件,可以新建一个,文件内容为: { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } 然后重启 Docker 服务: service docker restart 最后运行dock…

105   2020-03-07  

使用dpkg安装teamviewer时依赖问题解决方法

在使用dpkg安装teamviewer的deb包时, dkpg -i teamviewer_15.2.2756_amd64.deb 有可能提示由于依赖问题无法正常安装,此时需要执行: apt-get install -f 修复依赖,然后重新运行dpkg安装即可。 如果执行修复后,提示的操作是移除teamviewer,此时需要执行: apt-get update 更新源后再执行修复。

67   2020-02-22  

使用Jenkins持续集成部署QQ小程序

QQ小程序提供了Docker镜像来对小程序项目进行CI构建(文档)。文档中提供的Github Actions及Drone CI两种CI工具都对Docker的相关操作进行了深度集成,以至于不需要调用docker自身的命令。 而改写成Jenkinsfile也很简单,在检出代码后,只需要先拉取镜像然后运行即可。 操作步骤 在QQ小程序后台获取AppToken,然后赋值到环境变量PLUGIN_APPTOKEN。 在检出代码后,新建一个拉取镜像的stage,拉取镜像。 stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:la…

83   2020-02-08  

让ThinkPHP 6.0语言包支持多级分组

最近在做一个多语言网站项目,需要给一个多级导航栏编写语言包。虽然ThinkPHP 6.0多语言功能引入了语言分组,但其分组最深只能支持两层,在如我的这种情况下无法满足需要。 可通过修改框架src/think/Lang.php来实现多层级的支持。 在src/think/Lang.php中,替换对应方法: public function has(string $name, string $range = ''): bool { $range = $range ?: $this->range; if ($this->config['allow_group'] && strpos($name, '.')) { $names = e…

100   2020-02-05  

ThinkPHP 6.0 多语言优化扩展包

think-lang ThinkPHP 6.0 多语言优化扩展包 特色 支持通过如 mywebsite.com/zh-hans/ 的二级目录访问对应语言页面。 支持每种语言的语言包单独成目录,目录下可设有二级目录。 安装 composer require tlingc/think-lang 使用 基础配置 请参照 官方文档 进行相关配置。同时注意如下与官方文档的不同点。 开启和加载语言包 中间件名称为: 'tlingc\lang\middleware\LoadLangPack', 由于多语言通过二级目录访问,使用Cookie保存语言 功能无效。 语言文件定义 自…

177   2020-02-04  

ThinkPHP 6 多模型下事务处理

mysql下,事务不是针对某个特定的表或者特定的模型的,因此在多模型的情况下,不需要针对每个模型分别startTrans、commit和rollback。即使模型中有继承startTrans方法,可以通过Model::startTrans();启动事务,但其作用等同于Db:startTrans();。因此可以直接写为以下形式。 通过测试,在出现异常时,通过图中自增值可看出(自增值在rollback时也会增加),三个模型尝试新增数据都被rollback。同时把Table3中的name字段改为test233的操作也没有成功。 <?php namespace app\cont…

139   2020-01-20  

https://tlingc.com/wp-content/uploads/2020/01/TIM截图20200109163548.jpg

防御Source Engine Query泛洪攻击(一)

Source Engine Query泛洪是使用Source引擎游戏服务器的查询协议来进行的攻击,攻击者只需要发送一小段数据包,服务端会返回几倍的数据,形成反射性攻击。由于正常玩家在查询服务器时也会使用到此协议,因此不能直接封禁,否则将影响正常玩家。我的策略是对数据包进行限流,若超出阈值则拉黑,使用linux iptables来实现,主…

120   2020-01-09  

修改linux iptables recent模块的ip_list_tot参数

linux下iptables的recent模块默认一个表只能保存100条数据,不能满足需求,因此需要把这个参数调高一点。 起初找到这个配置文件,位于sys/module/xt_recent/parameters目录下,由于是内核级模块,在root下也没有权限直接修改,因此需要用以下办法。 首先先清理iptables的现有规则(记得备份现有规则)。 iptables -F 然后先删除模块。 rmmod xt_recent 调整配置 modprobe ipt_recent ip_list_tot=50000 重新配置iptables规则。 查看最新配置,如果返回的是调整后的…

122   2020-01-09  

小程序云开发 - 二维码生成工具

wxcloud-qrcode-generator 小程序云开发 - 二维码生成工具 实现 根据前端传递到需要生成的内容,生成二维码后上传至云存储,返回对应文件的URL。 二维码生成使用了qrcode库,可参考:https://www.npmjs.com/package/qrcode 使用 wx.showLoading() wx.cloud.callFunction({ name: 'qrcode_generator', data: { text: '需要生成的文字内容' }, complete: res => { wx.hideLoading() wx.previewImage({ urls: [res.result], }) }, fail: err…

140   2019-12-14  

https://tlingc.com/wp-content/uploads/2019/12/TIM截图20191208174038_conew2.jpg

在Composer中使用自己修改的包

在使用composer组件时,有时候需要对包进行一些自定义修改,有一些教程中写需要修改composer.json,然后发布到Packagist,但如果只是适应自己需求所作的小修改,其实并没有必要发布到Packagist,而这样做也是Packagist不推荐的: Do not submit forks of existing packages. If you need to test changes to a package…

108   2019-12-08  

解决微信小程序在7.0.8及电脑版上的cookie问题

微信小程序在7.0.8版本及电脑版上,response header的Set-Cookie参数变成小写,可能导致通过直接获取res.header['Set-Cookie']来存储Cookie的方法不可用。 这个问题在7.0.8上首次出现(我当时使用的是测试版),而电脑版长期有这个问题(我原本以为是电脑版还不完善导致不兼容,直到这个问题在手机版上也出现了)。 解决方案: 通过先遍历res.header,把参数转小写后判断。 let found = false for(let header in res.header){ if(header.toLocaleLowerCase() == 'set-cookie')…

222   2019-11-10  

加载更多