2011-10-10 25 views
5

स्टैक ओवरव्लो के अच्छे लोग, कृपया मदद करें। मैंने अपनी उबंटू मशीन पर एक ejabberd सर्वर स्थापित किया है, वर्चुअल होस्ट जोड़ा गया है, सेट करें {एक्सेस, रजिस्टर, [{अनुमति, सभी}]}। और एक व्यवस्थापक खाता पंजीकृत है। मैं लिनक्स गुरु नहीं हूं, लेकिन मैंने यह बुनियादी सेट अप करने में कामयाब रहा है। अब, मेरी विन 7 मशीन से, पिजिन का उपयोग करके, मैं व्यवस्थापक के रूप में लॉगिन कर सकता हूं और कई प्रशासनिक सुविधाओं तक पहुंच सकता हूं। सबसे महत्वपूर्ण मैं सर्वर पर नए उपयोगकर्ता बना सकता हूं। समस्या यह है कि मैं अपने एंड्रॉइड क्लाइंट के साथ Asmack लाइब्रेरी का उपयोग कर ऐसा नहीं कर सकता। मैं कनेक्शन और लॉगिन स्थापित कर सकता हूं, लेकिन जब मैं एक नया उपयोगकर्ता या तो खाता खाता प्रबंधक या आईक्यू पैकेट भेजकर पंजीकरण करने की कोशिश करता हूं तो मुझे वर्जित त्रुटि (403) प्रतिक्रिया त्रुटि मिलती है।asmack XMPP नया उपयोगकर्ता पंजीकरण

AccountManager am = new AccountManager(connection); 
Map<String, String> attributes = new HashMap<String, String>(); 
attributes.put("username", "my_user_name"); 
attributes.put("password", "my_password"); 
attributes.put("email", "[email protected]"); 
attributes.put("name", "my_full_name"); 
am.createAccount("my_user_name", "my_password", attributes); 


Registration reg = new Registration(); 
reg.setType(IQ.Type.SET); 
reg.setTo(connection.getServiceName()); 
//  attributes.put("username", username); 
//  attributes.put("password", password); 
//  reg.setAttributes(attributes); 
reg.addAttribute("username", username); 
reg.addAttribute("password", password); 
reg.addAttribute("email", email); 
reg.addAttribute("name", fullName); 
PacketFilter filter = new AndFilter(new PacketIDFilter(
    reg.getPacketID()), new PacketTypeFilter(IQ.class)); 
PacketCollector collector = connection.createPacketCollector(filter); 
connection.sendPacket(reg); 

क्या किसी को भी ऐसी ही समस्याएं थीं या मुझे बता सकते हैं कि मैं क्या गलत कर रहा हूं?

धन्यवाद

यहाँ मेरी LogCat

10-10 10:00:26.249: DEBUG/StatusBarPolicy(1639): [BRIGHTHY] curNetwork=22003 curHPLMN=22003 
10-10 10:00:26.839: INFO/System.out(21277): 10:00:26 AM SENT (1080244736): <iq id="fMJxx-4" to="morena.local" type="get"><query xmlns="jabber:iq:register"></query></iq> 
10-10 10:00:26.869: INFO/System.out(21277): 10:00:26 AM RCV (1080244736): <iq from='morena.local' to='[email protected]/Smack' id='fMJxx-4' type='result'><query xmlns='jabber:iq:register'><instructions>Choose a username and password to register with this server</instructions><username>admin</username><password/><registered/></query></iq> 
10-10 10:00:26.959: INFO/System.out(21277): 10:00:26 AM SENT (1080244736): <iq id="fMJxx-5" to="morena.local" type="set"><query xmlns="jabber:iq:register"><password>new_user</password><username>[email protected]</username></query></iq> 
10-10 10:00:26.969: INFO/System.out(21277): 10:00:26 AM RCV (1080244736): <iq from='morena.local' to='[email protected]/Smack' id='fMJxx-5' type='error'><query xmlns='jabber:iq:register'><password>new_user</password><username>[email protected]</username></query><error code='403' type='auth'><forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq> 
10-10 10:00:31.659: WARN/System.err(21277): forbidden(403) 
10-10 10:00:31.659: WARN/System.err(21277):  at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:246) 
10-10 10:00:31.659: WARN/System.err(21277):  at org.jivesoftware.smack.AccountManager.createAccount(AccountManager.java:207) 
10-10 10:00:31.659: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity.connectToServer(FriendProfileActivity.java:698) 
10-10 10:00:31.659: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity.connectLogin(FriendProfileActivity.java:578) 
10-10 10:00:31.659: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity$2.run(FriendProfileActivity.java:433) 
10-10 10:00:31.659: INFO/System.out(21277): 10:00:31 AM SENT (1080244736): <iq id="fMJxx-6" to="morena.local" type="get"><query xmlns="jabber:iq:register"></query></iq> 
10-10 10:00:31.679: INFO/System.out(21277): 10:00:31 AM RCV (1080244736): <iq from='morena.local' to='[email protected]/Smack' id='fMJxx-6' type='result'><query xmlns='jabber:iq:register'><instructions>Choose a username and password to register with this server</instructions><username>admin</username><password/><registered/></query></iq> 
10-10 10:00:31.689: INFO/System.out(21277): 10:00:31 AM SENT (1080244736): <iq id="fMJxx-7" to="morena.local" type="set"><query xmlns="jabber:iq:register"><email>[email protected]</email><password>new_user1</password><username>[email protected]</username><name>[email protected]</name></query></iq> 
10-10 10:00:31.699: INFO/System.out(21277): 10:00:31 AM RCV (1080244736): <iq from='morena.local' to='[email protected]/Smack' id='fMJxx-7' type='error'><query xmlns='jabber:iq:register'><email>[email protected]</email><password>new_user1</password><username>[email protected]</username><name>[email protected]</name></query><error code='403' type='auth'><forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq> 
10-10 10:00:31.729: WARN/System.err(21277): forbidden(403) 
10-10 10:00:31.729: WARN/System.err(21277):  at org.me.my_project.utilities.CreateChatAccount.createAccount(CreateChatAccount.java:100) 
10-10 10:00:31.729: WARN/System.err(21277):  at org.me.my_project.utilities.CreateChatAccount.createAccount(CreateChatAccount.java:143) 
10-10 10:00:31.729: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity.connectToServer(FriendProfileActivity.java:706) 
10-10 10:00:31.729: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity.connectLogin(FriendProfileActivity.java:578) 
10-10 10:00:31.729: WARN/System.err(21277):  at org.me.my_project.FriendProfileActivity$2.run(FriendProfileActivity.java:433) 
+0

शायद यह आपकी विंडोज मशीन पर –

+0

की मदद कर सकता है, क्या आप वाकई अपने फ़ायरवॉल 5222 पोर्ट को अवरुद्ध नहीं कर रहे हैं? – Maggie

+0

आप इस मुद्दे को हल करते हैं? – CoronaPintu

उत्तर

8

मुझे मिल गया है! समस्या सर्वर कॉन्फ़िगरेशन में है (लेकिन मुझे अभी भी समझ में नहीं आता है कि मैं इस परिवर्तन से पहले पिजिन से नए उपयोगकर्ता को क्यों पंजीकृत कर सकता हूं)।

%% In-band registration 
{access, register, [{allow, all}]}. 

ejabberd के नए संस्करणों के साथ काम नहीं कर रहा है। आपको

{mod_register, [ 
     {access_from, register}, 
     ... 
       ] ... 

जोड़ना होगा यदि आप सभी उपयोगकर्ताओं को पंजीकरण करने की अनुमति देना चाहते हैं। आप इस उपयोग करने के लिए केवल व्यवस्थापक चाहते हैं, तो आप व्यवस्थापक या किसी अन्य खाते में लॉग इन करने के बाद नए पहुँच नियम जोड़ने के लिए

{access, register_from, [{allow, admin}]}. 

और

{mod_register, [ 
     {access_from, register_from}, 
     ... 
       ] ... 
0

स्मैक लाइब्रेरी का उपयोग कर एक नया उपयोगकर्ता रजिस्टर करने के लिए की जरूरत है ।

/** * अस्पष्ट सर्वर पर एक नए ग्राहक रजिस्टर करने के लिए */

public void registerUser() 
{ 
    AccountManager manager = connection.getAccountManager(); 
    try { 
     manager.createAccount("Romain Guy","halejag");//username & paswd 


    } catch (XMPPException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

यह फेंक अपवाद। मैंने ओपनफायर और स्पार्क स्थापित किया था इसलिए कोई ejabbaer/ejabberd.cfg फ़ाइल नहीं है। क्या आप ओपनफायर – CoronaPintu

3

था आप mod_register में ip_access option निर्दिष्ट?

{mod_register, [ 
    ... 
    %% 
    %% Only clients in the server machine can register accounts 
    %% 
    {ip_access, [{allow, "127.0.0.0/8"}, 
       {deny, "0.0.0.0/0"}]}, 
    ... 
] ... 

खातों को पंजीकृत करने के लिए उन आईपी के दोनों की अनुमति होगी, लेकिन नहीं एक Android ग्राहक है कि एक का उपयोग कर रहा था: पिजिन और अपने ejabberd सर्वर किसी भी तरह दोनों एक ही आईपी, तो एक डिफ़ॉल्ट नियम है कि कुछ इस तरह दिखता का उपयोग कर रहे हैं अलग आईपी

मुझे एक संबंधित समस्या का सामना करना पड़ रहा है, और किसी कारण से {access_from, register_from} समाधान जो आपके लिए काम करता है, वह मेरे लिए अपेक्षित काम नहीं करता है। क्या आप केवल admin उपयोगकर्ता को नए खाते बनाने की क्षमता को प्रतिबंधित करने में सक्षम थे?

try 
{ 
    connection.connect(); 
    Log.i (TAG, "Connect"); 
    mAccount = new AccountManager (connection); 
    if (mAccount.supportsAccountCreation()) 
    { 
     mAccount.createAccount ("user", "pass"); 
    } 
निम्न सेटिंग्स ejabberd साथ

:

5

मेरे लिए काम करता है इस कोड को एक नया खाता रजिस्टर करने के लिए

{उपयोग, रजिस्टर, [{, अनुमति देने के सभी}]}।

यह एक बहुत ही सुरक्षित सेटअप है क्योंकि यह सर्वर पर हमारे प्रमाणित खातों के बिना रिकॉर्ड कर सकता है (विधि का समर्थन करता है। खाता निर्माण() हमें सत्य देता है)।

1

मैं एक ही समस्या का सामना करते आए और समाधान:

उर व्यवस्थापक इंटरफ़ेस से ejabbered में सर्वर

में परिवर्तन करें loggin के बाद। वर्चुअल होस्ट-नोड्स-मॉड्यूल-mod_register पर जाएँ और जोड़ें:

[{welcome_message, {"Welcome!", "Welcome to this Jabber server."}}, {access_from, register}] 

n u अपने ग्राहक से सफलतापूर्वक खाता बनाने के लिए

0
Create user everytime 
    Very easy and work everytime 


    open ejabberd.cfg file using 

    sudo nano /etc/ejabberd/ejabberd.cfg 

    change 600 option to infinity 

    {registration_timeout, 600}. 

    {registration_timeout, infinity}. 
+0

में मेरी मदद कर सकते हैं मैंने ओपनफायर और स्पार्क इंस्टॉल किया था इसलिए कोई ejabbaer/ejabberd.cfg फ़ाइल नहीं है। क्या आप ओपनफायर में मेरी मदद कर सकते हैं – CoronaPintu

0

ejabberd.cfg में परिवर्तन निम्नलिखित के साथ प्रयास करें सक्षम ख होगा।

%%{ip_access, [ 
%% {allow, "127.0.0.0/8"}, 
%% {deny, "0.0.0.0/0"}]} 
के साथ

-

%% In-band registration 
{access, register, [{allow, all}]}. 

&

{mod_register, [ 
     {access_from, register}, 
     ... 
       ] 

मैं अब आशा है कि यह आप के लिए काम करेंगे।