diff options
author | Sascha Silbe <silbe@activitycentral.com> | 2011-03-12 16:52:56 (GMT) |
---|---|---|
committer | Sascha Silbe <silbe@activitycentral.com> | 2011-03-12 16:52:56 (GMT) |
commit | 132428cb62a031901e84067a99ff53ee58bdc74d (patch) | |
tree | 5944192c7f2e9170e2a75ea6e8a91bac1482be23 /src/jarabe/desktop/schoolserver.py | |
parent | 92047238f7a780d7bdddd30e9f23e0490efbcfd6 (diff) | |
parent | 2d4125336c2479a9b4c21fac99e54ab8f2c4aaa2 (diff) |
Merge commit 'refs/top-bases/t/vnc+sugar-i18n-shell' into t/vnc+sugar-i18n-shellt/vnc+sugar-i18n-shell
* commit 'refs/top-bases/t/vnc+sugar-i18n-shell': (87 commits)
Fix up style issues introduced by commit 3f8a1e1
Don't set default timezone
Restore setting a language with the command line OLPC #10681
battery frame device: replace HAL with UPower
use ConsoleKit instead of HAL for shutdown/reboot
fix recognition of JEBs outside of data store
Adjust the year in the licence visible in the control panel
Handle activities that cycle through windows dlo#10695
Speaker frame device: pop up palette on left-click instead of toggling mute
recognise translations using pgettext
Remove last few pieces of buddy-icon.jpg handling
fix whitespace error introduced by 4b6a534 (revert of 4a3416b)
Commit from Sugar Labs: Translation System by user RafaelOrtiz.: 374 of 374 messages translated (0 fuzzy).
Intro: Fall back to user name if GECOS real name field is empty
Sugar Ad-hoc icons show in search results when connect/disconnect to AP OLPC #10412
Show busy cursor during session shutdown
Show free space for the Journal in the Journal volumes toolbar (SL#2318)
Fix incorrect logging level for warning about missing GSM configuration
simplify extension loading exception error
Revert "Add cpu and memory resource indicator to frame" as agreed on with erikos. Scheduling for inclusion in 0.94 after potential artwork changes based on feedback from the Design Team.
...
Diffstat (limited to 'src/jarabe/desktop/schoolserver.py')
-rw-r--r-- | src/jarabe/desktop/schoolserver.py | 65 |
1 files changed, 47 insertions, 18 deletions
diff --git a/src/jarabe/desktop/schoolserver.py b/src/jarabe/desktop/schoolserver.py index a05f56c..aea2357 100644 --- a/src/jarabe/desktop/schoolserver.py +++ b/src/jarabe/desktop/schoolserver.py @@ -16,8 +16,9 @@ import logging from gettext import gettext as _ -from xmlrpclib import ServerProxy, Error +import xmlrpclib import socket +import httplib import os from string import ascii_uppercase import random @@ -29,15 +30,17 @@ import gconf from sugar import env from sugar.profile import get_profile -REGISTER_URL = 'http://schoolserver:8080/' +_REGISTER_URL = 'http://schoolserver:8080/' +_REGISTER_TIMEOUT = 8 -def generate_serial_number(): + +def _generate_serial_number(): """ Generates a serial number based on 3 random uppercase letters and the last 8 digits of the current unix seconds. """ serial_part1 = [] - for y_ in range(3) : + for y_ in range(3): serial_part1.append(random.choice(ascii_uppercase)) serial_part1 = ''.join(serial_part1) @@ -46,7 +49,8 @@ def generate_serial_number(): return serial -def store_identifiers(serial_number, uuid, backup_url): + +def _store_identifiers(serial_number, uuid_, backup_url): """ Stores the serial number, uuid and backup_url in the identifier folder inside the profile directory so that these identifiers can be used for backup. """ @@ -64,7 +68,7 @@ def store_identifiers(serial_number, uuid, backup_url): if os.path.exists(os.path.join(identifier_path, 'uuid')): os.remove(os.path.join(identifier_path, 'uuid')) uuid_file = open(os.path.join(identifier_path, 'uuid'), 'w') - uuid_file.write(uuid) + uuid_file.write(uuid_) uuid_file.close() if os.path.exists(os.path.join(identifier_path, 'backup_url')): @@ -73,33 +77,56 @@ def store_identifiers(serial_number, uuid, backup_url): backup_url_file.write(backup_url) backup_url_file.close() + class RegisterError(Exception): pass -def register_laptop(url=REGISTER_URL): + +class _TimeoutHTTP(httplib.HTTP): + + def __init__(self, host='', port=None, strict=None, timeout=None): + if port == 0: + port = None + # FIXME: Depending on undocumented internals that can break between + # Python releases. Please have a look at SL #2350 + self._setup(self._connection_class(host, + port, strict, timeout=_REGISTER_TIMEOUT)) + + +class _TimeoutTransport(xmlrpclib.Transport): + + def make_connection(self, host): + host, extra_headers, x509_ = self.get_host_info(host) + return _TimeoutHTTP(host, timeout=_REGISTER_TIMEOUT) + + +def register_laptop(url=_REGISTER_URL): profile = get_profile() client = gconf.client_get_default() - if have_ofw_tree(): - sn = read_ofw('mfg-data/SN') - uuid_ = read_ofw('mfg-data/U#') + if _have_ofw_tree(): + sn = _read_ofw('mfg-data/SN') + uuid_ = _read_ofw('mfg-data/U#') sn = sn or 'SHF00000000' uuid_ = uuid_ or '00000000-0000-0000-0000-000000000000' else: - sn = generate_serial_number() + sn = _generate_serial_number() uuid_ = str(uuid.uuid1()) - setting_name = '/desktop/sugar/collaboration/jabber_server' - jabber_server = client.get_string(setting_name) - store_identifiers(sn, uuid_, jabber_server) + + setting_name = '/desktop/sugar/collaboration/jabber_server' + jabber_server = client.get_string(setting_name) + _store_identifiers(sn, uuid_, jabber_server) + + if jabber_server: url = 'http://' + jabber_server + ':8080/' nick = client.get_string('/desktop/sugar/user/nick') - server = ServerProxy(url) + server = xmlrpclib.ServerProxy(url, _TimeoutTransport()) try: data = server.register(sn, nick, uuid_, profile.pubkey) - except (Error, TypeError, socket.error): + except (xmlrpclib.Error, TypeError, socket.error): logging.exception('Registration: cannot connect to server') raise RegisterError(_('Cannot connect to the server.')) @@ -114,10 +141,12 @@ def register_laptop(url=REGISTER_URL): return True -def have_ofw_tree(): + +def _have_ofw_tree(): return os.path.exists('/ofw') -def read_ofw(path): + +def _read_ofw(path): path = os.path.join('/ofw', path) if not os.path.exists(path): return None |