Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/zeroconf/zeroconf_bonjour.py')
-rw-r--r--src/common/zeroconf/zeroconf_bonjour.py50
1 files changed, 25 insertions, 25 deletions
diff --git a/src/common/zeroconf/zeroconf_bonjour.py b/src/common/zeroconf/zeroconf_bonjour.py
index b46f82523..4fa9fc013 100644
--- a/src/common/zeroconf/zeroconf_bonjour.py
+++ b/src/common/zeroconf/zeroconf_bonjour.py
@@ -31,23 +31,23 @@ except ImportError, e:
resolve_timeout = 1
class Zeroconf:
- def __init__(self, new_serviceCB, remove_serviceCB, name_conflictCB,
+ def __init__(self, new_serviceCB, remove_serviceCB, name_conflictCB,
disconnected_CB, error_CB, name, host, port):
self.domain = None # specific domain to browse
- self.stype = '_presence._tcp'
- self.port = port # listening port that gets announced
+ self.stype = '_presence._tcp'
+ self.port = port # listening port that gets announced
self.username = name
self.host = host
self.txt = pybonjour.TXTRecord() # service data
-
- # XXX these CBs should be set to None when we destroy the object
- # (go offline), because they create a circular reference
+
+ # XXX these CBs should be set to None when we destroy the object
+ # (go offline), because they create a circular reference
self.new_serviceCB = new_serviceCB
self.remove_serviceCB = remove_serviceCB
self.name_conflictCB = name_conflictCB
self.disconnected_CB = disconnected_CB
self.error_CB = error_CB
-
+
self.contacts = {} # all current local contacts with data
self.connected = False
self.announced = False
@@ -64,7 +64,7 @@ class Zeroconf:
if not (flags & pybonjour.kDNSServiceFlagsAdd):
self.remove_service_callback(serviceName)
return
-
+
# asynchronous resolving
resolve_sdRef = pybonjour.DNSServiceResolve(0, interfaceIndex, serviceName, regtype, replyDomain, self.service_resolved_callback)
@@ -100,9 +100,9 @@ class Zeroconf:
items = pybonjour.TXTRecord.parse(txt)._items
return dict((v[0], v[1]) for v in items.values())
- def service_resolved_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname,
+ def service_resolved_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname,
hosttarget, port, txtRecord):
-
+
# TODO: do proper decoding...
escaping= {
r'\.': '.',
@@ -114,7 +114,7 @@ class Zeroconf:
result = re.split('(?<!\\\\)\.', fullname)
name = result[0]
protocol, domain = result[2:4]
-
+
# Replace the escaped values
for src, trg in escaping.items():
name = name.replace(src, trg)
@@ -126,11 +126,11 @@ class Zeroconf:
if not self.connected:
return
-
+
bare_name = name
if '@' not in name:
name = name + '@' + name
-
+
# we don't want to see ourselves in the list
if name != self.name:
self.contacts[name] = (name, domain, interfaceIndex, protocol, hosttarget, hosttarget, port, bare_name, txtRecord)
@@ -146,10 +146,10 @@ class Zeroconf:
self.resolved.append(True)
# different handler when resolving all contacts
- def service_resolved_all_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname, hosttarget, port, txtRecord):
+ def service_resolved_all_callback(self, sdRef, flags, interfaceIndex, errorCode, fullname, hosttarget, port, txtRecord):
if not self.connected:
return
-
+
escaping= {
r'\.': '.',
r'\032': ' ',
@@ -157,7 +157,7 @@ class Zeroconf:
}
name, stype, protocol, domain, dummy = fullname.split('.')
-
+
# Replace the escaped values
for src, trg in escaping.items():
name = name.replace(src, trg)
@@ -165,7 +165,7 @@ class Zeroconf:
bare_name = name
if name.find('@') == -1:
name = name + '@' + name
-
+
# we don't want to see ourselves in the list
if name != self.name:
self.contacts[name] = (name, domain, interfaceIndex, protocol, hosttarget, hosttarget, port, bare_name, txtRecord)
@@ -201,12 +201,12 @@ class Zeroconf:
def create_service(self):
txt = {}
-
+
#remove empty keys
for key,val in self.txt:
if val:
txt[key] = val
-
+
txt['port.p2pj'] = self.port
txt['version'] = 1
txt['txtvers'] = 1
@@ -218,7 +218,7 @@ class Zeroconf:
txt['status'] = 'avail'
self.txt = pybonjour.TXTRecord(txt, strict=True)
-
+
try:
sdRef = pybonjour.DNSServiceRegister(name = self.name,
regtype = self.stype, port = self.port, txtRecord = self.txt,
@@ -257,7 +257,7 @@ class Zeroconf:
self.name = self.username + '@' + self.host # service name
self.connected = True
-
+
# start browsing
if self.domain is None:
# Explicitly browse .local
@@ -268,7 +268,7 @@ class Zeroconf:
else:
self.browse_domain(self.domain)
-
+
return True
def disconnect(self):
@@ -276,8 +276,8 @@ class Zeroconf:
self.connected = False
self.browse_sdRef.close()
self.remove_announce()
-
-
+
+
def browse_domain(self, domain=None):
gajim.log.debug('starting to browse')
try:
@@ -320,7 +320,7 @@ class Zeroconf:
if not jid in self.contacts:
return None
return self.contacts[jid]
-
+
def update_txt(self, show = None):
if show:
self.txt['status'] = self.replace_show(show)