2014-11-25 48 views
2

我正在爲我們的項目之一配置ejabber服務器。在此我們需要從ejabberd-contrib配置mod_rest模塊(https://github.com/processone/ejabberd-contrib)。下面是我的配置(YAML) 在聽爲ejabberd服務器配置mod_rest模塊

port: 5280 
    module: ejabberd_http 
    request_handlers: 
     "/rest": mod_rest 
    web_admin: true 
    http_poll: true 
    http_bind: true 
    ## register: true 
    captcha: true 


modules: 
    mod_rest: 
    allowed_ips: 
     - "host_one_ip" 
     - "host_one_ip" 
    access_commands: 
     - "registered_users" 
     - "connected_users" 
    allowed_destinations: 
     - "all" 

但每當我試圖用我試過其他(捲曲調用)的給我「TryPOSTING詩節」

prompt# curl --data 'registered_users domain' -X POST http://host:5280/rest/ 

Try POSTing a stanza. 

打ejabberd命令去論壇但找不到......有幫助的東西

我是新來的ejabber和erlang。任何指向這個方向的指針都會非常有幫助。請讓我知道是否需要更多細節。

+0

同樣在這裏的問題,可惜我不知道二郎,否則將對其進行調試。 – 2014-12-03 15:15:31

回答

2

夥計們,我已經找到了這個問題。我已經安裝了Ejabberd 14.05版本。 mod_rest模塊 包含其dev_include目錄的ejabberd_http.hrl文件。在Ejabberd 14.05中,ejabberd_http.hrl的記錄已更改。 「opts = [] :: list(),」是ejabber-contrib的include文件夾中的額外頭文件。我相應地調整了標題的位置並編譯了模塊。它爲我工作:)與此我得到了使用mod_rest工作的ejabberd命令。 。 現在我的我面臨的問題用mod_rest :(以消耗的節如果任何人有相同的有什麼想法,請讓我知道

+0

你能分享你的代碼/變化嗎?這裏將是一個很好的地方:https://github.com/processone/ejabberd-contrib/issues/45 一個要點或別的東西也可以。 – 2014-12-12 10:32:20

+0

嘿,克里斯我在那裏添加了我的評論,其實沒有代碼改變,只是我們需要指向正確的文件:)。但現在我面臨新的問題http://stackoverflow.com/questions/27442324/presence-stanze-for-ejabberd-now-working-via-mod-rest-module – sagar27 2014-12-12 11:07:50

+0

嘿,我已經看到它,非常好,謝謝!我會盡快嘗試。不幸的是,我不知道你的節日問題,對不起。 – 2014-12-13 18:19:55

-1

我想你誤解了ReST模塊的用途。 從文檔,你應該XMPP節發送給它: https://github.com/processone/ejabberd-contrib/tree/master/mod_rest

但是,您要發送純文本,而不是XMPP節(甚至XML)。

+0

嘿邁克爾,感謝您的答覆,但是,我想要的是,我需要得到使用mod_rest模塊工作的ejabber命令。在自述文件中,他們已經提到它應該如何工作。 – sagar27 2014-12-03 06:35:54

+0

帶WGET的示例命令 \t ============================== 要執行ejabberd命令,只需提供其名稱和參數在ejabberdctl中: wget http:// localhost:5280/rest/--server-response --post-data'registered_users localhost' 如果您配置access_commands選項,則必須提供如下所示的憑據: wget http:// localhost:5280/rest/--server-response --post-data'--auth user1 localhost thepass registered_users localhost' – sagar27 2014-12-03 06:36:40

+0

我不認爲它只是通過傳遞ejabberdctl命令來休息API。你必須將它們作爲ReST參數傳遞。 – 2014-12-03 12:03:59

0

我嘗試這一點,並努力:

在我來說,我使用ejabberd二進制安裝和在 /LIB/ejabberd安裝文件夾/ XXXX

編譯從ejabberd-的contrib的mod_rest.erl,這裏是參考,https://www.ejabberd.im/ejabberd-contrib

我使用這個命令編譯:

erlc -I /lib/ejabberd/include your_mod_rest_source_file 

如果成功,你將有.beam文件,其後的mod_rest.beam複製到ejabberd安裝文件夾

cp ~/ejabberd-contrib/mod_rest/src/mod_rest.beam /lib/ejabberd/ebin/ 

比我的情況下配置ejabberd.yml的YML位於(在/ etc/ejabberd /ejabberd.yml)是這樣的:

https://github.com/processone/ejabberd-contrib/issues/45#issuecomment-69767670