summaryrefslogtreecommitdiff
path: root/poezio/connection.py
diff options
context:
space:
mode:
Diffstat (limited to 'poezio/connection.py')
-rw-r--r--poezio/connection.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/poezio/connection.py b/poezio/connection.py
index 8a74635d..c97365f8 100644
--- a/poezio/connection.py
+++ b/poezio/connection.py
@@ -14,6 +14,8 @@ log = logging.getLogger(__name__)
import getpass
import subprocess
import sys
+import base64
+import random
import slixmpp
from slixmpp.xmlstream import ET
@@ -38,6 +40,13 @@ class Connection(slixmpp.ClientXMPP):
keyfile = config.get('keyfile')
certfile = config.get('certfile')
+ device_id = config.get('device_id')
+ if not device_id:
+ rng = random.SystemRandom()
+ device_id = base64.urlsafe_b64encode(
+ rng.getrandbits(24).to_bytes(3, 'little')).decode('ascii')
+ config.set_and_save('device_id', device_id)
+
if config.get('jid'):
# Field used to know if we are anonymous or not.
# many features will be handled differently
@@ -72,6 +81,7 @@ class Connection(slixmpp.ClientXMPP):
jid = config.get('server')
password = None
jid = safeJID(jid)
+ jid.resource = '%s-%s' % (jid.resource, device_id) if jid.resource else 'poezio-%s' % device_id
# TODO: use the system language
slixmpp.ClientXMPP.__init__(
self, jid, password, lang=config.get('lang'))