ejabberd中的访问规则配置

    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即可。
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值