hal: Branch 'master'

David Zeuthen david at kemper.freedesktop.org
Mon Oct 29 12:45:51 PDT 2007


 doc/spec/hal-spec-interfaces.xml  |   55 ++++++++++++++++++++++++++++++++++++++
 fdi/policy/10osvendor/30-wol.fdi  |   28 +++++++++++++++++++
 fdi/policy/10osvendor/Makefile.am |    3 +-
 policy/Makefile.am                |    3 +-
 policy/hal-wol.policy             |   35 ++++++++++++++++++++++++
 tools/Makefile.am                 |    3 ++
 tools/hal-system-wol-enable       |   24 ++++++++++++++++
 tools/hal-system-wol-enabled      |   20 +++++++++++++
 tools/hal-system-wol-supported    |   20 +++++++++++++
 tools/linux/Makefile.am           |   11 ++++++-
 10 files changed, 199 insertions(+), 3 deletions(-)

New commits:
commit eb6d5b9c24e4eb42a8e9993a3936cf95aafacf12
Author: Holger Macht <hmacht at suse.de>
Date:   Mon Oct 29 15:44:06 2007 -0400

    add support for Wake On LAN
    
    On Tue 28. Aug - 14:21:42, David Zeuthen wrote:
    >
    > On Tue, 2007-08-14 at 15:22 +0200, Holger Macht wrote:
    > > +wol_supported() {
    > > +    UDI=$1
    > > +
    > > +    IFACE=`hal-get-property --udi $UDI --key net.interface`
    > > +    if [ -z "$IFACE" ]; then
    > > +   echo "org.freedesktop.Hal.Device.WakeOnLAN.NotSupported"
    > > +   return 1
    > > +    fi
    >
    > Actually I think IFACE is the same as HAL_PROP_NET_INTERFACE; saves a
    > fork + some IPC. Ditto for getting other properties too.
    >
    > Btw, there should probably exist tools/hal-system-wol-* that looks sorta
    > like this (this is snipped from another script in tools/) to check
    > whether the caller is actually privileged to do this
    >
    > #!/bin/sh
    > . hal-functions
    >
    > hal_check_priv org.freedesktop.hal.wol.<the-action>
    > hal_exec_backend
    >
    > and you should define these PolicyKit actions in policy/hal-wol.policy
    
    Added PolicyKit support and included suggestions from Dan Nicholson.
    
    This time, everything is included in one single patch.

diff --git a/doc/spec/hal-spec-interfaces.xml b/doc/spec/hal-spec-interfaces.xml
index 4e5050f..ab1308b 100644
--- a/doc/spec/hal-spec-interfaces.xml
+++ b/doc/spec/hal-spec-interfaces.xml
@@ -878,6 +878,61 @@ $ dbus-send --system --print-reply --dest=org.freedesktop.Hal \
     </para>
   </sect1>
 
+  <sect1 id="interface-wakeonlan">
+    <title>org.freedesktop.Hal.Device.WakeOnLan interface</title>
+    <para>
+      This interface provides a mechanism to configure Wake On LAN
+      capabilities. The following methods are available:
+    </para>
+
+    <informaltable>
+      <tgroup cols="2">
+        <thead>
+          <row>
+            <entry>Method</entry>
+            <entry>Returns</entry>
+            <entry>Parameters</entry>
+            <entry>Throws</entry>
+            <entry>Description</entry>
+          </row>
+        </thead>
+        <tbody>
+          <row>
+            <entry>GetSupported</entry>
+            <entry>Bool</entry>
+            <entry></entry>
+            <entry>WakeOnLan.NoEthtool</entry>
+            <entry>
+	      Get if device supports Wake On LAN 
+            </entry>
+          </row>
+          <row>
+            <entry>GetEnabled</entry>
+            <entry>Bool</entry>
+            <entry></entry>
+            <entry>WakeOnLan.NoEthtool</entry>
+            <entry>
+              Get if Wake On LAN is enabled
+            </entry>
+          </row>
+          <row>
+            <entry>SetEnabled</entry>
+            <entry>Void</entry>
+            <entry>Bool</entry>
+            <entry>WakeOnLan.NoEthtool</entry>
+            <entry>
+	      Enable or disable Wake On LAN
+            </entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>
+      This interface does not emit any signals.
+    </para>
+  </sect1>
+
   <sect1 id="interface-device-laptop-panel">
     <title>org.freedesktop.Hal.Device.LaptopPanel interface</title>
     <para>
diff --git a/fdi/policy/10osvendor/30-wol.fdi b/fdi/policy/10osvendor/30-wol.fdi
new file mode 100644
index 0000000..a668968
--- /dev/null
+++ b/fdi/policy/10osvendor/30-wol.fdi
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deviceinfo version="0.2">
+
+  <device>
+   <match key="info.capabilities" contains="net.80203">
+    <append key="info.capabilities" type="strlist">wake_on_lan</append>
+    <append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.WakeOnLan</append>
+
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_names" type="strlist">GetSupported</append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_signatures" type="strlist"></append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_argnames" type="strlist"></append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_execpaths" type="strlist">hal-system-wol-supported</append>
+
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_names" type="strlist">GetEnabled</append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_signatures" type="strlist"></append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_argnames" type="strlist"></append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_execpaths" type="strlist">hal-system-wol-enabled</append>
+
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_names" type="strlist">SetEnabled</append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_signatures" type="strlist">b</append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_argnames" type="strlist">enable</append>
+    <append key="org.freedesktop.Hal.Device.WakeOnLan.method_execpaths" type="strlist">hal-system-wol-enable</append>
+
+   </match>
+      
+  </device>
+</deviceinfo>
diff --git a/fdi/policy/10osvendor/Makefile.am b/fdi/policy/10osvendor/Makefile.am
index 91b935e..5c05347 100644
--- a/fdi/policy/10osvendor/Makefile.am
+++ b/fdi/policy/10osvendor/Makefile.am
@@ -8,7 +8,8 @@ dist_fdi_DATA = 			\
 	10-rfkill-switch.fdi		\
 	10-laptop-panel-mgmt-policy.fdi	\
 	15-storage-luks.fdi		\
-	20-storage-methods.fdi
+	20-storage-methods.fdi		\
+	30-wol.fdi
 
 if BUILD_KEYMAPS
 dist_fdi_DATA += 10-keymap.fdi
diff --git a/policy/Makefile.am b/policy/Makefile.am
index a75808a..f3bcee6 100644
--- a/policy/Makefile.am
+++ b/policy/Makefile.am
@@ -6,7 +6,8 @@ dist_polkit_policy_DATA =    \
 	hal-lock.policy		\
 	hal-storage.policy	\
 	hal-power.policy	\
-	hal-killswitch.policy	
+	hal-killswitch.policy	\
+	hal-wol.policy
 
 if HAVE_ACLMGMT
 dist_polkit_policy_DATA += hal-device-file.policy
diff --git a/policy/hal-wol.policy b/policy/hal-wol.policy
new file mode 100644
index 0000000..e9fbd47
--- /dev/null
+++ b/policy/hal-wol.policy
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
+
+<policyconfig>
+
+  <action id="org.freedesktop.hal.wol.enabled">
+    <description>If Wake on LAN is enabled</description>
+    <message>System policy prevents checking if Wake on LAN is enabled</message>
+    <defaults>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>yes</allow_active>
+    </defaults>
+  </action>
+
+  <action id="org.freedesktop.hal.wol.enable">
+    <description>Enable or disable Wake on LAN</description>
+    <message>System policy prevents enabling or disabling Wake on LAN</message>
+    <defaults>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>yes</allow_active>
+    </defaults>
+  </action>
+
+  <action id="org.freedesktop.hal.wol.supported">
+    <description>If Wake on LAN is supported</description>
+    <message>System policy prevents checking if Wake on LAN is supported</message>
+    <defaults>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>yes</allow_active>
+    </defaults>
+  </action>
+
+</policyconfig>
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 077e362..d153ac3 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -167,6 +167,9 @@ script_SCRIPTS =				\
 	hal-system-power-set-power-save		\
 	hal-system-killswitch-get-power		\
 	hal-system-killswitch-set-power		\
+	hal-system-wol-supported		\
+	hal-system-wol-enabled			\
+	hal-system-wol-enable			\
 	hal-functions
 
 EXTRA_DIST=$(man_MANS) $(MAN_IN_FILES) gen-libgphoto-hal-fdi $(script_SCRIPTS)
diff --git a/tools/hal-system-wol-enable b/tools/hal-system-wol-enable
new file mode 100644
index 0000000..b4de461
--- /dev/null
+++ b/tools/hal-system-wol-enable
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Copyright (C) 2007 Holger Macht <holger at homac.de>
+#
+# Author: Holger Macht <holger at homac.de>
+#
+# This file is released under the GPLv2.
+#
+
+. hal-functions
+
+if [ -z "$UDI" -o -z "$HAL_PROP_NET_INTERFACE" ]; then
+    echo "org.freedesktop.Hal.Device.WakeOnLAN.UnknownError" >&2
+    echo "Missing or empty environment variable(s)." >&2
+    echo "This script should be started by hald." >&2
+    exit 1
+fi
+
+# read value for setting enabled or disabled
+read enable
+export enable
+
+hal_check_priv org.freedesktop.hal.wol.enable
+hal_exec_backend
diff --git a/tools/hal-system-wol-enabled b/tools/hal-system-wol-enabled
new file mode 100644
index 0000000..4901bc2
--- /dev/null
+++ b/tools/hal-system-wol-enabled
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (C) 2007 Holger Macht <holger at homac.de>
+#
+# Author: Holger Macht <holger at homac.de>
+#
+# This file is released under the GPLv2.
+#
+
+. hal-functions
+
+if [ -z "$UDI" -o -z "$HAL_PROP_NET_INTERFACE" ]; then
+    echo "org.freedesktop.Hal.Device.WakeOnLAN.UnknownError" >&2
+    echo "Missing or empty environment variable(s)." >&2
+    echo "This script should be started by hald." >&2
+    exit 1
+fi
+
+hal_check_priv org.freedesktop.hal.wol.enabled
+hal_exec_backend
diff --git a/tools/hal-system-wol-supported b/tools/hal-system-wol-supported
new file mode 100644
index 0000000..4879c3b
--- /dev/null
+++ b/tools/hal-system-wol-supported
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (C) 2007 Holger Macht <holger at homac.de>
+#
+# Author: Holger Macht <holger at homac.de>
+#
+# This file is released under the GPLv2.
+#
+
+. hal-functions
+
+if [ -z "$UDI" -o -z "$HAL_PROP_NET_INTERFACE" ]; then
+    echo "org.freedesktop.Hal.Device.WakeOnLAN.UnknownError" >&2
+    echo "Missing or empty environment variable(s)." >&2
+    echo "This script should be started by hald." >&2
+    exit 1
+fi
+
+hal_check_priv org.freedesktop.hal.wol.supported
+hal_exec_backend
diff --git a/tools/linux/Makefile.am b/tools/linux/Makefile.am
index 689b068..0aca29e 100644
--- a/tools/linux/Makefile.am
+++ b/tools/linux/Makefile.am
@@ -37,7 +37,8 @@ script_SCRIPTS =					\
 	hal-system-lcd-set-brightness-linux		\
 	hal-system-power-set-power-save-linux		\
 	hal-system-killswitch-get-power-linux		\
-	hal-system-killswitch-set-power-linux
+	hal-system-killswitch-set-power-linux		\
+	hal-system-wol-linux
 
 EXTRA_DIST = 90-hal.rules $(script_SCRIPTS)
 
@@ -58,3 +59,11 @@ check:
 
 clean-local :
 	rm -f *~
+
+install-data-local:
+	ln -sf $(DESTDIR)$(scriptdir)/hal-system-wol-linux $(DESTDIR)$(scriptdir)/hal-system-wol-enable-linux
+	ln -sf $(DESTDIR)$(scriptdir)/hal-system-wol-linux $(DESTDIR)$(scriptdir)/hal-system-wol-enabled-linux
+	ln -sf $(DESTDIR)$(scriptdir)/hal-system-wol-linux $(DESTDIR)$(scriptdir)/hal-system-wol-supported-linux
+
+uninstall-local:
+	rm -f $(DESTDIR)$(scriptdir)/hal-system-wol-*


More information about the hal-commit mailing list