XMPP Ejabberd وأمر المستخدم الإضافي
سؤال
لدي خادمان Ejabberd ، واحد محلي بعيدة على الإنترنت على foobar.com.
باستخدام وحدة تحكم XMPP Pidgin يمكنني إرسال IQ stanzas للاختبارات:
الملقم المحلي اسم المضيف هو EEPC
<iq to='eeepc' from='greg@eeepc' id='get-registred-users-num-1' type='set'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
</iq>
<iq from='eeepc' to='greg@eeepc/3493331071251540036345753' id='get-registred-users-num-1' type='result'>
<command xmlns='http://jabber.org/protocol/commands' sessionid='2009-08-29T14:01:55.714639Z' node='http://jabber.org/protocol/admin#get-registered-users-num' status='completed'>
<x xmlns='jabber:x:data'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/admin</value>
</field>
<field type='text-single' label='Number of registered users' var='registeredusersnum'>
<value>7</value>
</field>
</x>
</command>
</iq>
خادم بعيد
<iq to='foobar.com' from='greg@foobar.com' id='get-registred-users-num-1' type='set'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
</iq>
<iq from='foobar.com' to='greg@foobar.com/36523779951251567671615394' id='get-registred-users-num-1' type='error'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
<error code='404' type='cancel'>
<item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>
لا أفهم لماذا أحصل على A ، لم أستطع رؤية أي خيارات معينة لإخبار الخادم بقبول الأوامر من Remote؟
المحلول
يمكن mod_configure
لا يتم تحميله ببساطة على الخادم البعيد. يمكنك التحقق عبر lists:member(mod_configure, gen_mod:loaded_modules("foobar.com")).
في قذيفة ejabberd المشرف. لا أستطيع أن أتخيل أن هذا يتعلق بكوني مستخدمًا عن بُعد ، لأنه لا يوجد أي اتصال S2S بين Foobar.com و greg@foobar.com.
نصائح أخرى
ينظر في رمز المصدر mod_configure.erl يبدو أن هناك فحص ACL للتأكد من أن أوامر التكوين ADHOC مسموح بها فقط عندما يكون الطالب على حساب المستخدم يكوين Priv على هذا المضيف الظاهري. بشكل افتراضي ، أعتقد أنهم لا يفعلون ذلك.
acl:match_rule(LServer, configure, From)
قد تحتاج إلى إضافة شيء مثل ...
{access, configure, [{allow, greg@foobar.com}]}.
... إلى ملف ejabberd.cfg الخاص بك.