[rhythmbox] webremote: store the access key in normal (non-secret) settings
- From: Jonathan Matthew <jmatthew src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rhythmbox] webremote: store the access key in normal (non-secret) settings
- Date: Sun, 15 May 2016 12:00:12 +0000 (UTC)
commit 3922e9c965e79e0a2440b8e0f4061313d05ddde3
Author: Jonathan Matthew <jonathan d14n org>
Date: Sun May 15 21:51:25 2016 +1000
webremote: store the access key in normal (non-secret) settings
The complexity of dealing with locked keyrings and async requests
to the secret service doesn't seem to be worth it in this case.
data/org.gnome.rhythmbox.gschema.xml | 6 +++-
plugins/webremote/webremote.py | 59 +++++----------------------------
2 files changed, 14 insertions(+), 51 deletions(-)
---
diff --git a/data/org.gnome.rhythmbox.gschema.xml b/data/org.gnome.rhythmbox.gschema.xml
index c529e7a..d5dbb9f 100644
--- a/data/org.gnome.rhythmbox.gschema.xml
+++ b/data/org.gnome.rhythmbox.gschema.xml
@@ -443,6 +443,10 @@
<summary>Listening port to use for the web remote control service</summary>
<description>Listening port to use for the web remote control service</description>
</key>
-
+ <key name="access-key" type="s">
+ <default>''</default>
+ <summary>Access key for the web remote control interface</summary>
+ <description>Access key for the web remote control interface</description>
+ </key>
</schema>
</schemalist>
diff --git a/plugins/webremote/webremote.py b/plugins/webremote/webremote.py
index e029563..ab70ffd 100644
--- a/plugins/webremote/webremote.py
+++ b/plugins/webremote/webremote.py
@@ -42,52 +42,6 @@ import siphash
import gettext
gettext.install('rhythmbox', RB.locale_dir())
-if rb.rbconfig.libsecret_enabled:
- gi.require_version('Secret', '1')
- try:
- from gi.repository import Secret
- SECRET_SCHEMA = Secret.Schema.new("org.gnome.rhythmbox.plugins.webremote",
- Secret.SchemaFlags.NONE,
- {'id': Secret.SchemaAttributeType.STRING})
- except ImportError as e:
- SECRET_SCHEMA = None
-else:
- SECRET_SCHEMA = None
-
-
-def get_access_key(id='default'):
- if SECRET_SCHEMA is None:
- return ''
-
- try:
- svc = Secret.Service.get_sync(Secret.ServiceFlags.OPEN_SESSION, None)
- items = svc.search_sync(SECRET_SCHEMA,
- {'id': id},
- Secret.SearchFlags.LOAD_SECRETS,
- None)
- if items:
- return items[0].get_secret().get().decode('utf-8')
-
- return ''
- except Exception as e:
- sys.excepthook(*sys.exc_info())
- return ''
-
-def store_access_key(key, id='default'):
- if SECRET_SCHEMA is None:
- return
-
- try:
- Secret.password_store_sync(SECRET_SCHEMA,
- {'id': id},
- Secret.COLLECTION_DEFAULT,
- "Rhythmbox web remote access key",
- key,
- None)
- except Exception as e:
- sys.excepthook(*sys.exc_info())
-
-
def get_host_name():
try:
p = Gio.DBusProxy.new_for_bus_sync(Gio.BusType.SYSTEM,
@@ -150,7 +104,7 @@ class ClientSession(object):
self.conn.send_text(message)
def disconnect(self):
- self.conn.close()
+ self.conn.close(0, "")
class TrackStreamer(object):
def __init__(self, server, message, track, content_type):
@@ -262,7 +216,7 @@ class WebRemotePlugin(GObject.Object, Peas.Activatable):
def get_sign_key(self, id):
# some day there will be multiple keys
- a = get_access_key(id)
+ a = self.settings['access-key']
ea = a.encode()
pa = (a + 4 * '\0').encode()
@@ -550,6 +504,9 @@ class WebRemotePlugin(GObject.Object, Peas.Activatable):
if self.http_server is not None and self.listen_reset is False:
self.http_server.disconnect()
self.http_listen()
+ elif key == 'access-key':
+ for c in self.connections.values():
+ c.disconnect()
def http_listen(self):
print("relistening")
@@ -614,7 +571,9 @@ class WebRemoteConfig(GObject.Object, PeasGtk.Configurable):
if k != self.access_key:
print("changing access key to %s" % k)
self.access_key = k
- store_access_key(k)
+ self.settings['access-key'] = k
+
+ return False
def update_port(self):
hostname = get_host_name()
@@ -644,7 +603,7 @@ class WebRemoteConfig(GObject.Object, PeasGtk.Configurable):
self.update_port()
self.key_entry = self.builder.get_object("accesskey")
- self.access_key = get_access_key()
+ self.access_key = self.settings['access-key']
if self.access_key:
self.key_entry.set_text(self.access_key)
self.key_entry.connect("focus-out-event", self.accesskey_focus_out_cb)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]