测试ejabberd服务器RestAPI

编程

1.修改配置文件

vim /usr/local/etc/ejabberd/ejabberd.yml

2.在api_permissions:添加如下配置

  "API used from localhost allows all calls":

who:

ip: 127.0.0.1/8

what:

- "*"

- "!stop"

- "!start"

listen:下添加如下配置

  -

# Add by SummertGao start

# Using a separate port for oauth and API to make it easy to protect it

# differently than BOSH and Websocket HTTP interface.

port: 5281

# oauth and API only listen on localhost interface for security reason

# You can set ip to "0.0.0.0" to open it widely, but be careful!

ip: "127.0.0.1"

module: ejabberd_http

request_handlers:

"/oauth": ejabberd_oauth

"/api": mod_http_api

# Add by SummertGao end.

3.重启使新配置生效

ejabberdctl restart

4.用Postman或Restlet Client测试api

我的ejabberd.yml配置文件:

###

### ejabberd configuration file

###

### The parameters used in this configuration file are explained at

###

### https://docs.ejabberd.im/admin/configuration

###

### The configuration file is written in YAML.

### *******************************************************

### ******* !!! WARNING !!! *******

### ******* YAML IS INDENTATION SENSITIVE *******

### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY *******

### *******************************************************

### Refer to http://en.wikipedia.org/wiki/YAML for the brief description.

###

hosts:

- localhost

- example.com

loglevel: info

## If you already have certificates, list them here

# certfiles:

# - /etc/letsencrypt/live/domain.tld/fullchain.pem

# - /etc/letsencrypt/live/domain.tld/privkey.pem

listen:

-

port: 5222

ip: "127.0.0.1"

module: ejabberd_c2s

max_stanza_size: 262144

shaper: c2s_shaper

access: c2s

starttls_required: false

-

port: 5269

ip: "::"

module: ejabberd_s2s_in

max_stanza_size: 524288

-

port: 5443

ip: "0.0.0.0"

module: ejabberd_http

tls: true

request_handlers:

/admin: ejabberd_web_admin

/api: mod_http_api

/bosh: mod_bosh

/captcha: ejabberd_captcha

/upload: mod_http_upload

/ws: ejabberd_http_ws

-

port: 5280

ip: "127.0.0.1"

module: ejabberd_http

request_handlers:

/admin: ejabberd_web_admin

/.well-known/acme-challenge: ejabberd_acme

-

port: 1883

ip: "::"

module: mod_mqtt

backlog: 1000

-

# Add by SummertGao start

# Using a separate port for oauth and API to make it easy to protect it

# differently than BOSH and Websocket HTTP interface.

port: 5281

# oauth and API only listen on localhost interface for security reason

# You can set ip to "0.0.0.0" to open it widely, but be careful!

ip: "127.0.0.1"

module: ejabberd_http

request_handlers:

"/oauth": ejabberd_oauth

"/api": mod_http_api

# Add by SummertGao end.

s2s_use_starttls: optional

acl:

local:

user_regexp: ""

loopback:

ip:

- 127.0.0.0/8

- ::1/128

# Add by SummerGao start

admin:

user:

- "admin": "localhost"

- "summergao": "localhost"

access:

configure:

admin: allow

summergao: allow

# Add by SummerGao end.

access_rules:

local:

allow: local

c2s:

deny: blocked

allow: all

announce:

allow: admin

configure:

allow: admin

muc_create:

allow: local

pubsub_createnode:

allow: local

trusted_network:

allow: loopback

api_permissions:

"console commands":

from:

- ejabberd_ctl

who: all

what: "*"

"admin access":

who:

access:

allow:

acl: loopback

acl: admin

oauth:

scope: "ejabberd:admin"

access:

allow:

acl: loopback

acl: admin

what:

- "*"

- "!stop"

- "!start"

"public commands":

who:

ip: 127.0.0.1/8

what:

- status

- connected_users_number

"API used from localhost allows all calls":

who:

ip: 127.0.0.1/8

what:

- "*"

- "!stop"

- "!start"

# Add by SummerGao start

#commands_admin_access:

# - allow:

# - user: "admin@localhost"

#commands:

# - add_commands: [user, admin, open]

# Tokens are valid for a year as default:

#auth_expire: 31536000

#oauth_access: all

# Add by SummerGao end.

shaper:

normal: 1000

fast: 50000

shaper_rules:

max_user_sessions: 10

max_user_offline_messages:

5000: admin

100: all

c2s_shaper:

none: admin

normal: all

s2s_shaper: fast

modules:

mod_adhoc: {}

mod_admin_extra: {}

mod_announce:

access: announce

mod_avatar: {}

mod_blocking: {}

mod_bosh: {}

mod_caps: {}

mod_carboncopy: {}

mod_client_state: {}

mod_configure: {}

mod_disco: {}

mod_fail2ban: {}

mod_http_api: {}

mod_http_upload:

put_url: https://@HOST@:5443/upload

mod_last: {}

mod_mam:

## Mnesia is limited to 2GB, better to use an SQL backend

## For small servers SQLite is a good fit and is very easy

## to configure. Uncomment this when you have SQL configured:

## db_type: sql

assume_mam_usage: true

default: always

mod_mqtt: {}

mod_muc:

access:

- allow

access_admin:

- allow: admin

access_create: muc_create

access_persistent: muc_create

access_mam:

- allow

default_room_options:

mam: true

mod_muc_admin: {}

mod_offline:

access_max_user_messages: max_user_offline_messages

mod_ping: {}

mod_privacy: {}

mod_private: {}

mod_proxy65:

access: local

max_connections: 5

mod_pubsub:

access_createnode: pubsub_createnode

plugins:

- flat

- pep

force_node_config:

## Avoid buggy clients to make their bookmarks public

storage:bookmarks:

access_model: whitelist

mod_push: {}

mod_push_keepalive: {}

mod_register:

## Only accept registration requests from the "trusted"

## network (see access_rules section above).

## Think twice before enabling registration from any

## address. See the Jabber SPAM Manifesto for details:

## https://github.com/ge0rg/jabber-spam-fighting-manifesto

ip_access: trusted_network

mod_roster:

versioning: true

mod_s2s_dialback: {}

mod_shared_roster: {}

mod_stream_mgmt:

resend_on_timeout: if_offline

mod_vcard: {}

mod_vcard_xupdate: {}

mod_version:

show_os: false

### Local Variables:

### mode: yaml

### End:

### vim: set filetype=yaml tabstop=8

 

参考:

https://docs.ejabberd.im/developer/ejabberd-api/simple-configuration/

https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#get-offline-count

以上是 测试ejabberd服务器RestAPI 的全部内容, 来源链接: utcz.com/z/511386.html

回到顶部