ejabberd为游戏免除注册限制
ejabberd为游戏免除注册限制
(金庆的专栏 2016.11)
ejabberd聊天服务器默认会限制同一IP注册帐号须间隔600s。
在游戏中需要为每个角色注册一个聊天帐号,不应该有此限制。
可以更改服务器代码,为游戏服务器免除这一注册间隔时间。
假设游戏服用专用的帐号登录ejabberd, 然后为这种帐号免除注册限制。
在ejabberd.yml配置访问控制列表(ACL)中添加 game_master:
acl:
game_master:
user:
- "game_master_1@localhost"
- "game_master_2@localhost"
game_master 帐号预先创建,供游戏服务器登录ejabberd.
mod_register的配置中,将 “access_from: deny” 改为 “access_from: all”.
“access_from: deny” 表示任何用户都不能注册帐号,只能是登录前注册。
“access_from: all” 表示登录用户也能注册帐号。
这样game_master帐号先登录,然后就可以注册新帐号了。
添加 access_from_without_time_limit,允许game_master无注册限制。
mod_register:
access_from: all
access: register
## Allow some user register accounts without registration_timeout limit.
access_from_without_time_limit:
- allow: game_master
实际上也可以这样直接配置:
access_from_without_time_limit:
- allow:
- user: game_master_1@localhost
- user: game_master_2@localhost
配置成 acl 的好处是,可以用
ejabberdctl reload_config
重新加载 acl, 而模块配置部分无法重新加载。
acl 配置还可以在 http admin 界面更改。
代码需稍加更改,修改mod_register.erl.
try_register/5 添加 From 参数改为 try_register/6
try_register(User, Server, Password, From, SourceRaw, Lang)
并将其中
case check_timeout(Source) of
改成
CheckTimeout = case check_from_without_time_limit(From, Server) of
allow -> true;
_ -> check_timeout(Source)
end,
case CheckTimeout of
即如果From是gm帐号时,CheckTimeout直接通过,不再判断600s的间隔。
check_from_without_time_limit/2 仿照check_from/2,这样实现:
check_from_without_time_limit(JID, Server) ->
Access = gen_mod:get_module_opt(Server, ?MODULE, access_from_without_time_limit,
fun(A) -> A end,
none),
acl:match_rule(Server, Access, JID).
添加:
mod_opt_type(access_from_without_time_limit) ->
fun acl:access_rules_validator/1;
...
mod_opt_type(_) ->
[..., access_from_without_time_limit, ...].
ejabberd为游戏免除注册限制的更多相关文章
- 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景
最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现.原本在C#中很方便地就可以完成的一个小场景,使用Unity3 ...
- 【技术】JavaSE环境下JPA实体类自动注册
在没有容器支持的环境下,JPA的实体类(Entity)一般要在persistence.xml中逐个注册,类似下面这样: <?xml version="1.0" encodin ...
- [C++] 井字棋游戏源码
TicTac.h #define EX 1 //该点左鼠标 #define OH 2 //该点右鼠标 class CMyApp : public CWinApp { public: virtual B ...
- [游戏学习22] MFC 井字棋 双人对战
>_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...
- [游戏学习26] MFC 时间函数 画图形
>_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似. >_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别 >_<:ABC.h #d ...
- 小白学数据分析----->学习注册转化率
你的注册转化率及格了吗? 注册转化率,一个基本上可以忽略的指标,虽然简单,但是却真实反映渠道,发行商,开发者的实力,以及对待产品的态度. 所谓的注册转化率,其实指的是玩家从下载游戏后,打开激活游戏,注 ...
- 游戏被App Store下架 如何快速上线?
游戏被App Store下架 如何快速上线? 发布者: sea_bug | 发布时间: 2014-12-20 14:17| 评论数: 0 近日,有媒体报道出国内某家CP的产品被苹果从App Store ...
- lua脚本在游戏中的应用
为什么要在游戏中使用脚本语言? 要解释这个问题首先我们先来了解一下脚本语言的特性: 学习门槛低,快速上手 开发成本低,可维护性强 动态语言,灵活性高 相对于C/C++这类高复杂性.高风险的编译型语言来 ...
- 自我介绍+github注册
我是网络工程141的蒋易,学号是1413042018 个人兴趣:打篮球,打羽毛球,打游戏 github注册流程 id:Scorpio1 注册困难:1.刚开始网页没打开. 2.全英文的界面无法看懂,要查 ...
随机推荐
- property()函数
class C: def __init__(self, size=10): self.size = size def getXSize(self): return self.size def setX ...
- 深入java多线程一
涉及到 1.线程的启动(start) 2.线程的暂停(suspend()和resume()) 3.线程的停止(interrupt与异常停止,interrupt与睡眠中停止,stop(),return) ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- 【NOIP2009】Hankson 的趣味题
题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解 ...
- codeforces round #419 A. Karen and Morning
Karen is getting ready for a new school day! It is currently hh:mm, given in a 24-hour format. As yo ...
- ●HDU 3507 Print Article
题链: http://acm.hdu.edu.cn/showproblem.php?pid=3507 题解: 斜率优化DP 一个入门题,就不给题解了,网上的好讲解很多的. 这里就只提一个小问题吧( ...
- ●BZOJ 4289 PA2012 Tax
●赘述题目 算了,题目没有重复的必要. 注意理解:对答案造成贡献的是每个点,就是了. 举个栗子: 对于如下数据: 2 1 1 2 1 答案是 2: ●题解 方法:建图(难点)+最短路. 先来几个链接: ...
- hdu 1166 线段树(sum+单点修改)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- [bzoj4868][Shoi2017]期末考试
来自FallDream 的博客,未经允许,请勿转载,谢谢. 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在 ...
- pytorch_SRU(Simple Recurrent Unit)
导读 本文讨论了最新爆款论文(Training RNNs as Fast as CNNs)提出的LSTM变种SRU(Simple Recurrent Unit),以及基于pytorch实现了SRU,并 ...