ejabberd中的访问规则配置
来源:互联网 发布:解析网络视频下载 编辑:程序博客网 时间:2024/05/08 12:25
ejabberd从14.07开始使用新的yaml格式的配置文件。在ejabberd中,与权限相关的配置基本上都由访问控制列表(ACL)和访问权限(Access Rights)来协同确定。ejabberd的配置文件中有两个选项acl和access分别代表acl的定义和access的定义。
acl说白了就是一个过滤表达式,所有的JID经过ACL的过滤之后才会传递给Access。access选项相当于一个布尔表达式,不过它只会返回allow与deny。allow代表可以符合ACL定义的那些JID可以访问某服务,deny代表符合ACL定义的那些JID不可以访问某服务。
配置文件中acl的声明语法如下:
acl: {ACLName: {ACLType: ACLValue }}
ACLType: ACLValue 可以是以下之一:
all 匹配所有的JID
user: Username 匹配第一个虚拟主机上用户名为Username的用户
user: {Username: Server} 匹配JID是Username@Server的用户,不管资源是什么
server: Server 匹配服务器上Server上的任何用户
resource: Resource 匹配资源是Resource的任何JID
shared_group: Groupname 匹配虚拟主机上共享组名为Groupname的任何组成员
shared_group: {Groupname: Server} 匹配虚拟主机Server上共享组名为Groupname的组的任何组成员
ip: Network 匹配网络Network中的任何ip地址
user_regexp: Regexp 匹配本地虚拟主机上用户名符合正则表达式Regexp的任何用户
user_regexp: {Regexp: Server}
server_regexp: Regexp
resource_regexp: Regexp
node_regexp: {UserRegexp: ServerRegexp}
user_glob: Glob
user_glob: {Glob: Server}
server_glob: Glob
resource_glob: Glob
node_glob: {UserGlob: ServerGlob}
all
none
访问权限的语法是:
access: {AccessName: {ACLName:allow|deny }}
有两个预定义的AccessName:
all 返回allow
none 返回deny
当JID用户要访问某服务的时候,如果该服务定义了access选项,则会检查相应的Accessname来决定该用户是否具有访问权限。
举个ejabberd-14.07中的例子:ejabberd-14.07编译安装完成之后是不支持带内注册(也就是通过客户端注册)的然而官方的文档却说默认支持带内注册,这是错误的。默认的与带内注册权限相关的配置信息是这样的:
acl:
loopback:
ip:
- "127.0.0.0/8"
access:
trusted_network:
loopback: allow
mod_register:
ip_access: trusted_network
ip_access选项中的Accessname是trusted_network。然后可以得出该AccessName对应的ACLName是loopback。也就是说符合loopback这个过滤表达式的JID都可以进行带内注册。再往上看得到只有位于子网127.0.0.0/8内的客户端才符合这个过滤表达式。因此如果你的客户端不在该子网内是不允许进行带内注册的。可以直接将ip_access对应的AccessN改为all即可。
acl说白了就是一个过滤表达式,所有的JID经过ACL的过滤之后才会传递给Access。access选项相当于一个布尔表达式,不过它只会返回allow与deny。allow代表可以符合ACL定义的那些JID可以访问某服务,deny代表符合ACL定义的那些JID不可以访问某服务。
配置文件中acl的声明语法如下:
acl: {ACLName: {ACLType: ACLValue }}
ACLType: ACLValue 可以是以下之一:
all 匹配所有的JID
user: Username 匹配第一个虚拟主机上用户名为Username的用户
user: {Username: Server} 匹配JID是Username@Server的用户,不管资源是什么
server: Server 匹配服务器上Server上的任何用户
resource: Resource 匹配资源是Resource的任何JID
shared_group: Groupname 匹配虚拟主机上共享组名为Groupname的任何组成员
shared_group: {Groupname: Server} 匹配虚拟主机Server上共享组名为Groupname的组的任何组成员
ip: Network 匹配网络Network中的任何ip地址
user_regexp: Regexp 匹配本地虚拟主机上用户名符合正则表达式Regexp的任何用户
user_regexp: {Regexp: Server}
server_regexp: Regexp
resource_regexp: Regexp
node_regexp: {UserRegexp: ServerRegexp}
user_glob: Glob
user_glob: {Glob: Server}
server_glob: Glob
resource_glob: Glob
node_glob: {UserGlob: ServerGlob}
all
none
访问权限的语法是:
access: {AccessName: {ACLName:allow|deny }}
有两个预定义的AccessName:
all 返回allow
none 返回deny
当JID用户要访问某服务的时候,如果该服务定义了access选项,则会检查相应的Accessname来决定该用户是否具有访问权限。
举个ejabberd-14.07中的例子:ejabberd-14.07编译安装完成之后是不支持带内注册(也就是通过客户端注册)的然而官方的文档却说默认支持带内注册,这是错误的。默认的与带内注册权限相关的配置信息是这样的:
acl:
loopback:
ip:
- "127.0.0.0/8"
access:
trusted_network:
loopback: allow
mod_register:
ip_access: trusted_network
ip_access选项中的Accessname是trusted_network。然后可以得出该AccessName对应的ACLName是loopback。也就是说符合loopback这个过滤表达式的JID都可以进行带内注册。再往上看得到只有位于子网127.0.0.0/8内的客户端才符合这个过滤表达式。因此如果你的客户端不在该子网内是不允许进行带内注册的。可以直接将ip_access对应的AccessN改为all即可。
0 0
- ejabberd中的访问规则配置
- ejabberd 集群配置中的"-sname"问题
- Ejabberd MUC的配置
- ejabberd服务器安装配置
- ejabberd集群配置
- Mac环境Ejabberd+MySQL配置
- Ejabberd服务器配置说明文档
- ejabberd安装步骤+Mysql配置
- Linux下ejabberd安装配置
- Ejabberd安装配置(一)
- ejabberd中的http反向推送
- Azure中配置网络安全组入站规则让外部网络访问VM中的网站
- ejabberd
- ejabberd
- MySQL配置端口访问规则 - 允许外网访问 3306
- Windows下配置Ejabberd和Mysql
- 求助关于ejabberd,怎么配置ejabberd,然后用外网ip连接服务器登录
- grails下acegi的访问规则的配置
- ios 屏幕跳转 多个stroyboard
- Android读取raw文件夹中的内容
- GMGDC专访戴亦斌:详解QAMAster全面测试服务6大功能
- Java Exception
- Linkin大话Java和internet概念
- ejabberd中的访问规则配置
- App Store 审核指南(中文版)
- JPA注解 fetch
- 总结Cocos2d-x 3.0 中新字体标签Label
- 迭代范围值
- linux下ImageMagick和Jmagic的安装
- Cocos2d-X 学习笔记3 常用宏
- 使用libboost_filesystem.so库递归查找目录下的文件
- TCP和UDP区别