Ejabberd 虚拟主机公告昵称
Posted
技术标签:
【中文标题】Ejabberd 虚拟主机公告昵称【英文标题】:Ejabberd virtual host announcement nickname 【发布时间】:2019-02-09 15:32:14 【问题描述】:当我在 ejabberd 中向用户发送通知时(例如使用“向所有主机上的所有用户发送通知”),收件人将其视为来自虚拟主机的消息,昵称为“ejabberd”,用户不清楚。
我想知道如何将这个“ejabberd”昵称更改为更方便的名称?
很奇怪,文档中完全没有关于此的信息,甚至没有其他人对此提出任何问题。怎么可能没人关心这个?也许我的 ejabberd 配置有问题,虚拟主机默认不应该有“ejabberd”昵称?
【问题讨论】:
【参考方案1】:尝试添加此选项:
mod_disco:
name: "ejabberd server"
关于服务器 vcard,试试这样的补丁:
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -197,7 +197,7 @@ process_local_iq(#iqtype = set, lang = Lang = IQ) ->
xmpp:make_error(IQ, xmpp:err_not_allowed(Txt, Lang));
process_local_iq(#iqtype = get, lang = Lang = IQ) ->
xmpp:make_iq_result(
- IQ, #vcard_tempfn = <<"ejabberd">>,
+ IQ, #vcard_tempfn = <<"ejabberd server nickname">>,
url = ejabberd_config:get_uri(),
desc = misc:get_descr(Lang, ?T("Erlang Jabber Server")),
bday = <<"2002-11-16">>).
【讨论】:
【参考方案2】:在我的测试中,用户收到了以 vhost 作为发件人地址的消息:
<message to='user1@localhost/tka1'
from='localhost'
type='headline'>
<body xml:lang='en'>Hi
This is the content.
The localhost admins.</body>
<subject xml:lang='en'>This is the subject</subject>
</message>
我在协议中没有看到关于其外观的示例:https://xmpp.org/extensions/xep-0133.html#announce
【讨论】:
是的,sender 是一个虚拟主机地址,这是正确的。但是 XMPP 客户端(至少其中一些客户端)正在请求发件人昵称而不是 JID,并且 ejabberd 回复说 vhost 有昵称“ejabberd”:<iq xml:lang="en" to="admin@localhost/LOCATION" from="localhost" type="result" id="mir_315"> <query xmlns="http://jabber.org/protocol/disco#info"> <identity type="pep" category="pubsub" /> <identity name="ejabberd" type="im" category="server" />
<iq xml:lang="en" to="admin@localhost/LOCATION" from="localhost" type="result" id="mir_357"> <vCard xmlns="vcard-temp"> <FN>ejabberd</FN> <URL>http://www.process-one.net/en/ejabberd/</URL> <BDAY>2002-11-16</BDAY> <DESC>Erlang Jabber ServerCopyright (c) ProcessOne</DESC> </vCard> </iq>
以上是关于Ejabberd 虚拟主机公告昵称的主要内容,如果未能解决你的问题,请参考以下文章
ejabberd -- 在 ejabberd 上设置昵称在我注销之前不会反映 Pidgin/Empathy