rpms/sugar/F-10 nm07-support.patch,NONE,1.1 sugar.spec,1.29,1.30
Simon Schampijer
erikos at fedoraproject.org
Mon Nov 17 16:50:57 UTC 2008
- Previous message: rpms/PyQt4/devel PyQt-x11-gpl-4.4.4-64bit.patch, NONE, 1.1 PyQt-x11-gpl-4.4.4-QT_SHARED.patch, NONE, 1.1 .cvsignore, 1.7, 1.8 PyQt4.spec, 1.15, 1.16 sources, 1.7, 1.8 PyQt-x11-gpl-4.4.3-64bit.patch, 1.1, NONE PyQt-x11-gpl-4.4.3-QT_SHARED.patch, 1.1, NONE
- Next message: rpms/gridengine/devel gridengine-6.2-db.patch, NONE, 1.1 gridengine.spec, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: erikos
Update of /cvs/pkgs/rpms/sugar/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19500
Modified Files:
sugar.spec
Added Files:
nm07-support.patch
Log Message:
* Mon Nov 17 2008 Simon Schampijer <simon at laptop.org> - 0.82.9-2
- NM07 support
nm07-support.patch:
--- NEW FILE nm07-support.patch ---
diff --git a/data/Makefile.am b/data/Makefile.am
index cdf9dc5..8800ad8 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -22,6 +22,9 @@ GTKRC_FILES = \
xsessionsdir = $(datadir)/xsessions
xsessions_DATA = sugar.desktop
+nmservicedir = $(sysconfdir)/dbus-1/system.d/
+nmservice_DATA = nm-user-settings.conf
+
mime_xml_in_files = sugar.xml.in
mime_xml_files = $(mime_xml_in_files:.xml.in=.xml)
@INTLTOOL_XML_RULE@
@@ -43,5 +46,5 @@ if ENABLE_UPDATE_MIMEDB
fi
endif
-EXTRA_DIST = $(sugar_DATA) $(xsessions_DATA) $(mime_xml_in_files) em.py gtkrc.em
+EXTRA_DIST = $(sugar_DATA) $(xsessions_DATA) $(nmservice_DATA) $(mime_xml_in_files) em.py gtkrc.em
CLEANFILES = $(GTKRC_FILES) $(mime_xml_files)
diff --git a/data/nm-user-settings.conf b/data/nm-user-settings.conf
new file mode 100644
index 0000000..af7c642
--- /dev/null
+++ b/data/nm-user-settings.conf
@@ -0,0 +1,34 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy user="root">
+ <allow own="org.freedesktop.NetworkManagerUserSettings"/>
+
+ <allow send_destination="org.freedesktop.NetworkManagerUserSettings"/>
+ <allow send_interface="org.freedesktop.NetworkManagerSettings"/>
+
+ <!-- Only root can get secrets -->
+ <allow send_interface="org.freedesktop.NetworkManagerSettings.Secrets"/>
+ </policy>
+ <policy at_console="true">
+ <allow own="org.freedesktop.NetworkManagerUserSettings"/>
+
+ <allow send_destination="org.freedesktop.NetworkManagerUserSettings"/>
+ <allow send_interface="org.freedesktop.NetworkManagerSettings"/>
+
+ <!-- Only root can get secrets -->
+ <deny send_interface="org.freedesktop.NetworkManagerSettings.Secrets"/>
+ </policy>
+ <policy context="default">
+ <deny own="org.freedesktop.NetworkManagerUserSettings"/>
+
+ <allow send_destination="org.freedesktop.NetworkManagerUserSettings"/>
+ <allow send_interface="org.freedesktop.NetworkManagerSettings"/>
+ <!-- Only root can get secrets -->
+ <deny send_interface="org.freedesktop.NetworkManagerSettings.Secrets"/>
+ </policy>
+
+ <limit name="max_replies_per_connection">512</limit>
+</busconfig>
+
diff --git a/src/hardware/Makefile.am b/src/hardware/Makefile.am
index 8cd9c77..f589d42 100644
--- a/src/hardware/Makefile.am
+++ b/src/hardware/Makefile.am
@@ -2,12 +2,4 @@ sugardir = $(pkgdatadir)/shell/hardware
sugar_PYTHON = \
__init__.py \
hardwaremanager.py \
- keydialog.py \
- nmclient.py \
- nminfo.py \
schoolserver.py
-
-dbusservicedir = $(sysconfdir)/dbus-1/system.d/
-dbusservice_DATA = NetworkManagerInfo.conf
-
-EXTRA_DIST = $(dbusservice_DATA)
diff --git a/src/hardware/NetworkManagerInfo.conf b/src/hardware/NetworkManagerInfo.conf
deleted file mode 100644
index 4fb8270..0000000
--- a/src/hardware/NetworkManagerInfo.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE busconfig PUBLIC
- "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <policy user="root">
- <allow own="org.freedesktop.NetworkManagerInfo"/>
-
- <allow send_destination="org.freedesktop.NetworkManagerInfo"/>
- <allow send_interface="org.freedesktop.NetworkManagerInfo"/>
- </policy>
- <policy at_console="true">
- <allow own="org.freedesktop.NetworkManagerInfo"/>
-
- <allow send_destination="org.freedesktop.NetworkManagerInfo"/>
- <allow send_interface="org.freedesktop.NetworkManagerInfo"/>
- </policy>
- <policy context="default">
- <deny own="org.freedesktop.NetworkManagerInfo"/>
-
- <deny send_destination="org.freedesktop.NetworkManagerInfo"/>
- <deny send_interface="org.freedesktop.NetworkManagerInfo"/>
- </policy>
-
- <limit name="max_replies_per_connection">512</limit>
-</busconfig>
-
diff --git a/src/hardware/hardwaremanager.py b/src/hardware/hardwaremanager.py
index c4f9f75..2e5a16b 100644
--- a/src/hardware/hardwaremanager.py
+++ b/src/hardware/hardwaremanager.py
@@ -19,7 +19,6 @@ import logging
import dbus
import gobject
-from hardware.nmclient import NMClient
from sugar.profile import get_profile
from sugar import env
from sugar import _sugarext
@@ -111,13 +110,5 @@ class HardwareManager(gobject.GObject):
def get_manager():
return _manager
-def get_network_manager():
- return _network_manager
-
_manager = HardwareManager()
-try:
- _network_manager = NMClient()
-except dbus.DBusException, e:
- _network_manager = None
- logging.info('Network manager service not found.')
diff --git a/src/hardware/keydialog.py b/src/hardware/keydialog.py
deleted file mode 100644
index 88a551f..0000000
--- a/src/hardware/keydialog.py
+++ /dev/null
@@ -1,354 +0,0 @@
-# vi: ts=4 ai noet
-#
-# Copyright (C) 2006-2007 Red Hat, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-import md5
-from gettext import gettext as _
-
-import gtk
-
-IW_AUTH_ALG_OPEN_SYSTEM = 0x00000001
-IW_AUTH_ALG_SHARED_KEY = 0x00000002
-
-IW_AUTH_WPA_VERSION_DISABLED = 0x00000001
-IW_AUTH_WPA_VERSION_WPA = 0x00000002
-IW_AUTH_WPA_VERSION_WPA2 = 0x00000004
-
-NM_802_11_CAP_NONE = 0x00000000
-NM_802_11_CAP_PROTO_NONE = 0x00000001
-NM_802_11_CAP_PROTO_WEP = 0x00000002
-NM_802_11_CAP_PROTO_WPA = 0x00000004
-NM_802_11_CAP_PROTO_WPA2 = 0x00000008
-NM_802_11_CAP_KEY_MGMT_PSK = 0x00000040
-NM_802_11_CAP_KEY_MGMT_802_1X = 0x00000080
-NM_802_11_CAP_CIPHER_WEP40 = 0x00001000
-NM_802_11_CAP_CIPHER_WEP104 = 0x00002000
-NM_802_11_CAP_CIPHER_TKIP = 0x00004000
-NM_802_11_CAP_CIPHER_CCMP = 0x00008000
-
-NM_AUTH_TYPE_WPA_PSK_AUTO = 0x00000000
-IW_AUTH_CIPHER_NONE = 0x00000001
-IW_AUTH_CIPHER_WEP40 = 0x00000002
-IW_AUTH_CIPHER_TKIP = 0x00000004
-IW_AUTH_CIPHER_CCMP = 0x00000008
-IW_AUTH_CIPHER_WEP104 = 0x00000010
-
-IW_AUTH_KEY_MGMT_802_1X = 0x1
-IW_AUTH_KEY_MGMT_PSK = 0x2
-
-def string_is_hex(key):
- is_hex = True
- for c in key:
- if not 'a' <= c.lower() <= 'f' and not '0' <= c <= '9':
- is_hex = False
[...4225 lines suppressed...]
+class WEPKeyDialog(KeyDialog):
+ def __init__(self, ssid, flags, wpa_flags, rsn_flags, dev_caps, response):
+ KeyDialog.__init__(self, ssid, flags, wpa_flags, rsn_flags,
+ dev_caps, response)
+
+ # WEP key type
+ self.key_store = gtk.ListStore(str, int)
+ self.key_store.append(["Passphrase (128-bit)", WEP_PASSPHRASE])
+ self.key_store.append(["Hex (40/128-bit)", WEP_HEX])
+ self.key_store.append(["ASCII (40/128-bit)", WEP_ASCII])
+
+ self.key_combo = gtk.ComboBox(self.key_store)
+ cell = gtk.CellRendererText()
+ self.key_combo.pack_start(cell, True)
+ self.key_combo.add_attribute(cell, 'text', 0)
+ self.key_combo.set_active(0)
+ self.key_combo.connect('changed', self._key_combo_changed_cb)
+
+ hbox = gtk.HBox()
+ hbox.pack_start(gtk.Label(_("Key Type:")))
+ hbox.pack_start(self.key_combo)
+ hbox.show_all()
+ self.vbox.pack_start(hbox)
+
+ # Key entry field
+ self.add_key_entry()
+
+ # WEP authentication mode
+ self.auth_store = gtk.ListStore(str, str)
+ self.auth_store.append(["Open System", IW_AUTH_ALG_OPEN_SYSTEM])
+ self.auth_store.append(["Shared Key", IW_AUTH_ALG_SHARED_KEY])
+
+ self.auth_combo = gtk.ComboBox(self.auth_store)
+ cell = gtk.CellRendererText()
+ self.auth_combo.pack_start(cell, True)
+ self.auth_combo.add_attribute(cell, 'text', 0)
+ self.auth_combo.set_active(0)
+
+ hbox = gtk.HBox()
+ hbox.pack_start(gtk.Label(_("Authentication Type:")))
+ hbox.pack_start(self.auth_combo)
+ hbox.show_all()
+
+ self.vbox.pack_start(hbox)
+
+ def _key_combo_changed_cb(self, widget):
+ self._update_response_sensitivity()
+
+ def _get_security(self):
+ key = self._entry.get_text()
+
+ it = self.key_combo.get_active_iter()
+ (key_type, ) = self.key_store.get(it, 1)
+
+ if key_type == WEP_PASSPHRASE:
+ key = hash_passphrase(key)
+ elif key_type == WEP_ASCII:
+ key = string_to_hex(key)
+
+ it = self.auth_combo.get_active_iter()
+ (auth_alg, ) = self.auth_store.get(it, 1)
+
+ return (key, auth_alg)
+
+ def print_security(self):
+ (key, auth_alg) = self._get_security()
+ print "Key: %s" % key
+ print "Auth: %d" % auth_alg
+
+ def create_security(self):
+ (key, auth_alg) = self._get_security()
+ secrets = Secrets()
+ secrets.wep_key = key
+ secrets.auth_alg = auth_alg
+ return secrets
+
+ def _update_response_sensitivity(self, ignored=None):
+ key = self._entry.get_text()
+ it = self.key_combo.get_active_iter()
+ (key_type, ) = self.key_store.get(it, 1)
+
+ valid = False
+ if key_type == WEP_PASSPHRASE:
+ # As the md5 passphrase can be of any length and has no indicator,
+ # we cannot check for the validity of the input.
+ if len(key) > 0:
+ valid = True
+ elif key_type == WEP_ASCII:
+ if len(key) == 5 or len(key) == 13:
+ valid = string_is_ascii(key)
+ elif key_type == WEP_HEX:
+ if len(key) == 10 or len(key) == 26:
+ valid = string_is_hex(key)
+
+ self.set_response_sensitive(gtk.RESPONSE_OK, valid)
+
+class WPAKeyDialog(KeyDialog):
+ def __init__(self, ssid, flags, wpa_flags, rsn_flags, dev_caps, response):
+ KeyDialog.__init__(self, ssid, flags, wpa_flags, rsn_flags,
+ dev_caps, response)
+ self.add_key_entry()
+
+ self.store = gtk.ListStore(str)
+ self.store.append([_("WPA & WPA2 Personal")])
+
+ self.combo = gtk.ComboBox(self.store)
+ cell = gtk.CellRendererText()
+ self.combo.pack_start(cell, True)
+ self.combo.add_attribute(cell, 'text', 0)
+ self.combo.set_active(0)
+
+ self.hbox = gtk.HBox()
+ self.hbox.pack_start(gtk.Label(_("Wireless Security:")))
+ self.hbox.pack_start(self.combo)
+ self.hbox.show_all()
+
+ self.vbox.pack_start(self.hbox)
+
+ def _get_security(self):
+ ssid = self._ssid
+ key = self._entry.get_text()
+ is_hex = string_is_hex(key)
+
+ real_key = None
+ if len(key) == 64 and is_hex:
+ # Hex key
+ real_key = key
+ elif len(key) >= 8 and len(key) <= 63:
+ # passphrase
+ from subprocess import Popen, PIPE
+ p = Popen(['/usr/sbin/wpa_passphrase', ssid, key], stdout=PIPE)
+ for line in p.stdout:
+ if line.strip().startswith("psk="):
+ real_key = line.strip()[4:]
+ if p.wait() != 0:
+ raise RuntimeError("Error hashing passphrase")
+ if real_key and len(real_key) != 64:
+ real_key = None
+
+ if not real_key:
+ raise RuntimeError("Invalid key")
+
+ return real_key
+
+ def print_security(self):
+ key = self._get_security()
+ print "Key: %s" % key
+
+ def create_security(self):
+ secrets = Secrets()
+ secrets.psk = self._get_security()
+ return secrets
+
+ def _update_response_sensitivity(self, ignored=None):
+ key = self._entry.get_text()
+ is_hex = string_is_hex(key)
+
+ valid = False
+ if len(key) == 64 and is_hex:
+ # hex key
+ valid = True
+ elif len(key) >= 8 and len(key) <= 63:
+ # passphrase
+ valid = True
+ self.set_response_sensitive(gtk.RESPONSE_OK, valid)
+ return False
+
+def create(ssid, flags, wpa_flags, rsn_flags, dev_caps, response):
+ if wpa_flags == network.NM_802_11_AP_SEC_NONE and \
+ rsn_flags == network.NM_802_11_AP_SEC_NONE:
+ key_dialog = WEPKeyDialog(ssid, flags, wpa_flags, rsn_flags,
+ dev_caps, response)
+ else:
+ key_dialog = WPAKeyDialog(ssid, flags, wpa_flags, rsn_flags,
+ dev_caps, response)
+
+ key_dialog.connect("response", _key_dialog_response_cb)
+ key_dialog.connect("destroy", _key_dialog_destroy_cb)
+ key_dialog.show_all()
+
+def _key_dialog_destroy_cb(key_dialog, data=None):
+ _key_dialog_response_cb(key_dialog, gtk.RESPONSE_CANCEL)
+
+def _key_dialog_response_cb(key_dialog, response_id):
+ response = key_dialog.get_response_object()
+ secrets = None
+ if response_id == gtk.RESPONSE_OK:
+ secrets = key_dialog.create_security()
+
+ if response_id in [gtk.RESPONSE_CANCEL, gtk.RESPONSE_NONE]:
+ # key dialog dialog was canceled; send the error back to NM
+ response.set_error(CanceledKeyRequestError())
+ elif response_id == gtk.RESPONSE_OK:
+ if not secrets:
+ raise RuntimeError("Invalid security arguments.")
+ response.set_secrets(secrets)
+ else:
+ raise RuntimeError("Unhandled key dialog response %d" % response_id)
+
+ key_dialog.destroy()
Index: sugar.spec
===================================================================
RCS file: /cvs/pkgs/rpms/sugar/F-10/sugar.spec,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- sugar.spec 25 Sep 2008 19:15:35 -0000 1.29
+++ sugar.spec 17 Nov 2008 16:50:26 -0000 1.30
@@ -4,7 +4,7 @@
Summary: OLPC desktop environment
Name: sugar
Version: 0.82.9
-Release: 1%{?dist}
+Release: 2%{?dist}
#Release: 2.%{alphatag}%{?dist}
URL: http://dev.laptop.org
# git clone git://dev.laptop.org/sugar
@@ -16,6 +16,8 @@
Group: System Environment/Libraries
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch1: nm07-support.patch
+
BuildRequires: pkgconfig
BuildRequires: perl-XML-Parser
BuildRequires: gettext
@@ -49,6 +51,8 @@
%prep
%setup -q
+%patch1 -p1 -b .nm07-support
+
%build
%configure
make
@@ -75,7 +79,7 @@
%defattr(-,root,root,-)
%doc COPYING README
-%config %{_sysconfdir}/dbus-1/system.d/NetworkManagerInfo.conf
+%config %{_sysconfdir}/dbus-1/system.d/nm-user-settings.conf
%dir %{_datadir}/sugar
%{_datadir}/sugar/*
@@ -93,6 +97,9 @@
%{_bindir}/sugar-emulator
%changelog
+* Mon Nov 17 2008 Simon Schampijer <simon at laptop.org> - 0.82.9-2
+- NM07 support
+
* Thu Sep 25 2008 Marco Pesenti Gritti <mpg at redhat.com> - 0.82.9-1
- #7969 Accidental searches lead to a "blank" Home screen
- #8662 xo man jumps around while zooming
- Previous message: rpms/PyQt4/devel PyQt-x11-gpl-4.4.4-64bit.patch, NONE, 1.1 PyQt-x11-gpl-4.4.4-QT_SHARED.patch, NONE, 1.1 .cvsignore, 1.7, 1.8 PyQt4.spec, 1.15, 1.16 sources, 1.7, 1.8 PyQt-x11-gpl-4.4.3-64bit.patch, 1.1, NONE PyQt-x11-gpl-4.4.3-QT_SHARED.patch, 1.1, NONE
- Next message: rpms/gridengine/devel gridengine-6.2-db.patch, NONE, 1.1 gridengine.spec, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list