aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/object.py6
-rw-r--r--server/plugin.py14
-rw-r--r--server/user.py10
3 files changed, 24 insertions, 6 deletions
diff --git a/server/object.py b/server/object.py
index 6723481..c2b5d16 100644
--- a/server/object.py
+++ b/server/object.py
@@ -19,6 +19,9 @@ class Object:
def __init__(self, owner, hash):
self.owner = owner
+ if hash is None:
+ hash = hashlib.sha1(owner).hexdigest()
+
self.hash = hash
owner_path = config.root + self.owner + '/'
@@ -92,6 +95,9 @@ class Object:
content = file.read()
file.close()
return content, key
+
+ def get_private_key(self):
+ pass
if __name__ == '__main__':
pass
diff --git a/server/plugin.py b/server/plugin.py
index 892977e..393e675 100644
--- a/server/plugin.py
+++ b/server/plugin.py
@@ -17,7 +17,7 @@ class AliasQuery(ElementBase):
name = 'query'
plugin_attrib = 'alias'
interfaces = set(('node', 'type', 'content', 'permission', 'key'))
- sub_interfaces = set(('content', 'permission', 'key'))
+ sub_interfaces = set(('content', 'permission', 'key', 'salt'))
def addItem(self, node, key, permission = None):
item = AliasItem(None, self)
@@ -55,11 +55,21 @@ class AliasPlugin(base.base_plugin):
iq.send()
def handle_alias_query(self, iq):
+ caller = iq['from'].bare
+
+ if iq['alias']['type'] == 'keys':
+ key, salt = Object(caller).get_private_key();
+ iq.reply()
+ iq['alias']['type'] = 'keys'
+ iq['alias']['key'] = key
+ iq['alias']['salt'] = salt
+ iq.send()
+
try:
callee = base64.b64decode(iq['to'].user)
except TypeError:
logging.error("callee field not base64 encoded")
- caller = iq['from'].bare
+
node = iq['alias']['node']
if not node:
node = hashlib.sha1(callee).hexdigest()
diff --git a/server/user.py b/server/user.py
index 819ad51..ac6e2be 100644
--- a/server/user.py
+++ b/server/user.py
@@ -1,7 +1,6 @@
import os
import os.path
import shutil
-import object
import hashlib
class UserHandler:
@@ -11,9 +10,12 @@ class UserHandler:
def register(self, name):
userDir = self.root + '/' + name
- os.mkdir(userDir)
- handler = object.ObjectHandler(self.root,name)
- handler.create_home_node()
+ self.hash = hashlib.sha1(name).hexdigest()
+ root_node = userDir + '/' + self.hash[:2] + '/' + self.hash[2:]
+ os.mkdirs(root_node)
+ os.touch(root_node + '/permissions')
+ os.touch(root_node + '/childs')
+ os.touch(root_node + '/object')
def registered(self, name):
return os.path.exists(self.root + '/' + name)