aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/object.py12
-rw-r--r--server/user.py3
-rw-r--r--server/xep_0077.py38
3 files changed, 28 insertions, 25 deletions
diff --git a/server/object.py b/server/object.py
index 91ec3c7..d3bdf87 100644
--- a/server/object.py
+++ b/server/object.py
@@ -90,9 +90,7 @@ class ObjectReader(Object):
k, v = line.split()
content[k] = v
- #return content, key
- return content
-
+ return content, key
class ObjectWriter(ObjectReader):
@@ -134,11 +132,15 @@ class ObjectWriter(ObjectReader):
for k, v in content.iteritems():
file.write('{} {}\n'.format(k,v))
#give all the permissions to the user
+ ALLPERM = READ + MODIFY + APPEND + LIST
with open(os.path.join(self.object_path, 'permissions'), "a") as file:
- file.write('{} 15 xxxxxx\n'.format(user,v))
+ file.write('{} {} xxxxxx\n'.format(user,ALLPERM))
if __name__ == '__main__':
- pass
+ jid = 'thrasibule@alias.im'
+ hash = hashlib.sha1(jid).hexdigest()
+ config.root = '/var/lib/alias'
+ print ObjectReader(hash).get_content(jid)
diff --git a/server/user.py b/server/user.py
index c6e6e87..a818005 100644
--- a/server/user.py
+++ b/server/user.py
@@ -17,7 +17,8 @@ class User:
ObjectWriter(self.hash).create_root_object(self.jid, registration)
def get_registration(self):
- ObjectReader(self.hash).get_content(self.jid)
+ registration, key = ObjectReader(self.hash).get_content(self.jid)
+ return registration
def registered(self):
return Object(self.hash).exists()
diff --git a/server/xep_0077.py b/server/xep_0077.py
index 6018c55..fa5ddfe 100644
--- a/server/xep_0077.py
+++ b/server/xep_0077.py
@@ -18,7 +18,7 @@ class Registration(ElementBase):
namespace = 'jabber:iq:register'
name = 'query'
plugin_attrib = 'register'
- interfaces = set(('registered', 'remove', 'instructions'))
+ interfaces = set(('registered', 'remove', 'instructions', 'form'))
sub_interfaces = interfaces
subitem = (Form,)
@@ -46,14 +46,18 @@ class Registration(ElementBase):
itemXML = ET.Element('{%s}%s' % (self.namespace, name))
self.xml.append(itemXML)
- def add_form(self, values=None):
- aliasform = Form(None,self)
+ def add_form(self):
+ aliasform = Form(None, self)
aliasform.addField(ftype="hidden",var="FORM_TYPE",value=self.namespace)
aliasform.addField(var="pubkey",ftype="text-single", label="Public Key", required=True)
aliasform.addField(var="privkey",ftype="text-single", label="Private Key", required=True)
aliasform.addField(var="salt",ftype="text-single", label="Salt", required=True)
- if values:
- aliasform.setValues(values)
+
+ def get_form(self):
+ return Form(self.xml.find('{jabber:x:data}x'))
+
+ def set_form(self, values):
+ self.get_form().setValues(values)
class xep_0077(base_plugin):
"""
@@ -90,19 +94,17 @@ class xep_0077(base_plugin):
iq.reply().send()
return
- aliasforms = iq['register']['substanzas']
- for aliasform in aliasforms:
- aliasdict = aliasform.getValues()
+ registration_form = iq['register']['form']
+ registration_info = registration_form.getValues()
for field in self.form_fields:
- if not aliasdict[field]:
+ if not registration_info[field]:
# Incomplete Registration
self._send_error(iq, '406', 'modify', 'not-acceptable',
"Please fill in all fields.")
return
try:
- print aliasdict
- registrant.register(aliasdict)
+ registrant.register(registration_info)
# Successful registration
#self.xmpp.event('registered_user', iq)
iq.reply().setPayload(iq['register'].xml)
@@ -122,14 +124,13 @@ class xep_0077(base_plugin):
def send_registration_form(self, iq, registrant):
reg = iq['register']
+ reg.add_form()
if self.form_instructions:
reg['instructions'] = self.form_instructions
if registrant.registered():
- print "yoyoyo"
- print registrant.get_registration()
reg['registered'] = True
- reg.add_form(registrant.get_registration())
+ reg['form'] = registrant.get_registration()
else:
reg.add_form()
@@ -148,8 +149,7 @@ class xep_0077(base_plugin):
if __name__=='__main__':
test = Registration()
test.add_form()
- test['registered']=True
- print test
- #why doesn't this work?
- form = test.xml.findall('{jabber:x:data}x')
- print form
+ print '{}\n'.format(test['form'])
+ values = {'privkey': 'pomme', 'pubkey': 'poire', 'salt': 'abricot'}
+ test['form']=values
+ print test \ No newline at end of file