def _seed_xs_cookie(): ''' Create a HTTP Cookie to authenticate with the Schoolserver ''' client = gconf.client_get_default() backup_url = client.get_string('/desktop/sugar/backup_url') if not backup_url: _logger.debug('seed_xs_cookie: Not registered with Schoolserver') return jabber_server = client.get_string( '/desktop/sugar/collaboration/jabber_server') pubkey = profile.get_profile().pubkey cookie_data = {'color': profile.get_color().to_string(), 'pkey_hash': sha.new(pubkey).hexdigest()} db_path = os.path.join(_profile_path, 'cookies.sqlite') try: cookies_db = sqlite3.connect(db_path) c = cookies_db.cursor() c.execute('''CREATE TABLE IF NOT EXISTS moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT, expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER)''') c.execute('''SELECT id FROM moz_cookies WHERE name=? AND host=? AND path=?''', ('xoid', jabber_server, '/')) if c.fetchone(): _logger.debug('seed_xs_cookie: Cookie exists already') return expire = int(time.time()) + 10*365*24*60*60 c.execute('''INSERT INTO moz_cookies (name, value, host, path, expiry, lastAccessed, isSecure, isHttpOnly) VALUES(?,?,?,?,?,?,?,?)''', ('xoid', cjson.encode(cookie_data), jabber_server, '/', expire, 0, 0, 0 )) cookies_db.commit() cookies_db.close() except sqlite3.Error, e: _logger.error('seed_xs_cookie: %s' % e)
def _seed_xs_cookie(cookie_jar): """Create a HTTP Cookie to authenticate with the Schoolserver. Do nothing if the laptop is not registered with Schoolserver, or if the cookie already exists. """ client = GConf.Client.get_default() backup_url = client.get_string('/desktop/sugar/backup_url') if backup_url == '': _logger.debug('seed_xs_cookie: Not registered with Schoolserver') return jabber_server = client.get_string( '/desktop/sugar/collaboration/jabber_server') soup_uri = Soup.URI() soup_uri.set_scheme('xmpp') soup_uri.set_host(jabber_server) soup_uri.set_path('/') xs_cookie = cookie_jar.get_cookies(soup_uri, for_http=False) if xs_cookie is not None: _logger.debug('seed_xs_cookie: Cookie exists already') return pubkey = profile.get_profile().pubkey cookie_data = { 'color': profile.get_color().to_string(), 'pkey_hash': sha1(pubkey).hexdigest() } expire = int(time.time()) + 10 * 365 * 24 * 60 * 60 xs_cookie = Soup.Cookie() xs_cookie.set_name('xoid') xs_cookie.set_value(json.dumps(cookie_data)) xs_cookie.set_domain(jabber_server) xs_cookie.set_path('/') xs_cookie.set_max_age(expire) cookie_jar.add_cookie(xs_cookie) _logger.debug('seed_xs_cookie: Updated cookie successfully')
def _seed_xs_cookie(cookie_jar): """Create a HTTP Cookie to authenticate with the Schoolserver. Do nothing if the laptop is not registered with Schoolserver, or if the cookie already exists. """ client = GConf.Client.get_default() backup_url = client.get_string('/desktop/sugar/backup_url') if backup_url == '': _logger.debug('seed_xs_cookie: Not registered with Schoolserver') return jabber_server = client.get_string( '/desktop/sugar/collaboration/jabber_server') soup_uri = Soup.URI() soup_uri.set_scheme('xmpp') soup_uri.set_host(jabber_server) soup_uri.set_path('/') xs_cookie = cookie_jar.get_cookies(soup_uri, for_http=False) if xs_cookie is not None: _logger.debug('seed_xs_cookie: Cookie exists already') return pubkey = profile.get_profile().pubkey cookie_data = {'color': profile.get_color().to_string(), 'pkey_hash': sha1(pubkey).hexdigest()} expire = int(time.time()) + 10 * 365 * 24 * 60 * 60 xs_cookie = Soup.Cookie() xs_cookie.set_name('xoid') xs_cookie.set_value(json.dumps(cookie_data)) xs_cookie.set_domain(jabber_server) xs_cookie.set_path('/') xs_cookie.set_max_age(expire) cookie_jar.add_cookie(xs_cookie) _logger.debug('seed_xs_cookie: Updated cookie successfully')
def __init__(self, handle): activity.Activity.__init__(self, handle) # abiword uses the current directory for all its file dialogs os.chdir(os.path.expanduser('~')) # create our main abiword canvas self.abiword_canvas = DocumentView() self._new_instance = True toolbar_box = ToolbarBox() self.activity_button = ActivityToolbarButton(self) toolbar_box.toolbar.insert(self.activity_button, -1) separator = Gtk.SeparatorToolItem() separator.show() self.activity_button.props.page.insert(separator, 2) ExportButtonFactory(self, self.abiword_canvas) self.activity_button.show() edit_toolbar = ToolbarButton() edit_toolbar.props.page = EditToolbar(self, toolbar_box) edit_toolbar.props.icon_name = 'toolbar-edit' edit_toolbar.props.label = _('Edit') toolbar_box.toolbar.insert(edit_toolbar, -1) view_toolbar = ToolbarButton() view_toolbar.props.page = ViewToolbar(self.abiword_canvas) view_toolbar.props.icon_name = 'toolbar-view' view_toolbar.props.label = _('View') toolbar_box.toolbar.insert(view_toolbar, -1) # due to http://bugzilla.abisource.com/show_bug.cgi?id=13585 if self.abiword_canvas.get_version() != '3.0': self.speech_toolbar_button = ToolbarButton(icon_name='speak') toolbar_box.toolbar.insert(self.speech_toolbar_button, -1) self._init_speech() separator = Gtk.SeparatorToolItem() toolbar_box.toolbar.insert(separator, -1) text_toolbar = ToolbarButton() text_toolbar.props.page = TextToolbar(self.abiword_canvas) text_toolbar.props.icon_name = 'format-text' text_toolbar.props.label = _('Text') toolbar_box.toolbar.insert(text_toolbar, -1) para_toolbar = ToolbarButton() para_toolbar.props.page = ParagraphToolbar(self.abiword_canvas) para_toolbar.props.icon_name = 'paragraph-bar' para_toolbar.props.label = _('Paragraph') toolbar_box.toolbar.insert(para_toolbar, -1) insert_toolbar = ToolbarButton() insert_toolbar.props.page = InsertToolbar(self.abiword_canvas) insert_toolbar.props.icon_name = 'insert-table' insert_toolbar.props.label = _('Table') toolbar_box.toolbar.insert(insert_toolbar, -1) image = ToolButton('insert-picture') image.set_tooltip(_('Insert Image')) self._image_id = image.connect('clicked', self._image_cb) toolbar_box.toolbar.insert(image, -1) palette = image.get_palette() content_box = Gtk.VBox() palette.set_content(content_box) image_floating_checkbutton = Gtk.CheckButton(_('Floating')) image_floating_checkbutton.connect( 'toggled', self._image_floating_checkbutton_toggled_cb) content_box.pack_start(image_floating_checkbutton, True, True, 0) content_box.show_all() self.floating_image = False separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_size_request(0, -1) separator.set_expand(True) separator.show() toolbar_box.toolbar.insert(separator, -1) stop = StopButton(self) toolbar_box.toolbar.insert(stop, -1) toolbar_box.show_all() self.set_toolbar_box(toolbar_box) # add a overlay to be able to show a icon while joining a shared doc overlay = Gtk.Overlay() overlay.add(self.abiword_canvas) overlay.show() self._connecting_box = ConnectingBox() overlay.add_overlay(self._connecting_box) self.set_canvas(overlay) # we want a nice border so we can select paragraphs easily self.abiword_canvas.set_show_margin(True) # Read default font face and size client = GConf.Client.get_default() self._default_font_face = client.get_string( '/desktop/sugar/activities/write/font_face') if not self._default_font_face: self._default_font_face = 'Sans' self._default_font_size = client.get_int( '/desktop/sugar/activities/write/font_size') if self._default_font_size == 0: self._default_font_size = 12 # activity sharing self.participants = {} self.joined = False self.connect('shared', self._shared_cb) if self.shared_activity: # we are joining the activity logger.error('We are joining an activity') # display a icon while joining self._connecting_box.show() # disable the abi widget self.abiword_canvas.set_sensitive(False) self._new_instance = False self.connect('joined', self._joined_cb) self.shared_activity.connect('buddy-joined', self._buddy_joined_cb) self.shared_activity.connect('buddy-left', self._buddy_left_cb) if self.get_shared(): self._joined_cb(self) else: # we are creating the activity logger.error("We are creating an activity") self.abiword_canvas.zoom_width() self.abiword_canvas.show() self.connect_after('map-event', self.__map_activity_event_cb) self.abiword_canvas.connect('size-allocate', self.size_allocate_cb)