diff options
author | Alexander Larsson <alexl@redhat.com> | 2016-04-22 11:08:30 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2016-04-25 18:59:17 +0200 |
commit | 8ac40150a64e3a491c38bfef01cf5ad40cd7fddb (patch) | |
tree | 43a4f11d15252bdc2130d426f678a5a8bad67ae1 /system-helper | |
parent | fee5d4d169f15e25967928ce0e8d4b713f53ebf8 (diff) | |
download | xdg-app-8ac40150a64e3a491c38bfef01cf5ad40cd7fddb.tar.gz |
Initial (empty) version of system helper
Diffstat (limited to 'system-helper')
-rw-r--r-- | system-helper/Makefile.am.inc | 34 | ||||
-rw-r--r-- | system-helper/org.freedesktop.XdgApp.SystemHelper.conf | 25 | ||||
-rw-r--r-- | system-helper/org.freedesktop.XdgApp.SystemHelper.service.in | 4 | ||||
-rw-r--r-- | system-helper/xdg-app-system-helper.c | 111 | ||||
-rw-r--r-- | system-helper/xdg-app-system-helper.service.in | 7 | ||||
-rw-r--r-- | system-helper/xdg-app.gresource.xml | 6 |
6 files changed, 187 insertions, 0 deletions
diff --git a/system-helper/Makefile.am.inc b/system-helper/Makefile.am.inc new file mode 100644 index 0000000..0bd2c6c --- /dev/null +++ b/system-helper/Makefile.am.inc @@ -0,0 +1,34 @@ +system_helper_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/system-helper/xdg-app.gresource.xml) + +libexec_PROGRAMS += \ + xdg-app-system-helper \ + $(NULL) + +system-helper/xdg-app-resources.h: system-helper/xdg-app.gresource.xml + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $< \ + --target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-header + +system-helper/xdg-app-resources.c: system-helper/xdg-app.gresource.xml $(system_helper_resource_files) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $< \ + --target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-source + +dbussystemservicedir = $(datadir)/dbus-1/system-services +service_in_files += system-helper/org.freedesktop.XdgApp.SystemHelper.service.in +dbussystemservice_DATA = system-helper/org.freedesktop.XdgApp.SystemHelper.service + +dbusconfdir = ${sysconfdir}/dbus-1/system.d +dbusconf_DATA = system-helper/org.freedesktop.XdgApp.SystemHelper.conf + +service_in_files += system-helper/xdg-app-system-helper.service.in +systemdsystemunit_DATA = system-helper/xdg-app-system-helper.service + +EXTRA_DIST += system-helper/xdg-app.gresource.xml + +xdg_app_system_helper_SOURCES = \ + system-helper/xdg-app-system-helper.c \ + system-helper/xdg-app-resources.h \ + system-helper/xdg-app-resources.c \ + $(NULL) + +xdg_app_system_helper_LDADD = $(BASE_LIBS) libxdgapp-common.la +xdg_app_system_helper_CFLAGS = $(BASE_CFLAGS) diff --git a/system-helper/org.freedesktop.XdgApp.SystemHelper.conf b/system-helper/org.freedesktop.XdgApp.SystemHelper.conf new file mode 100644 index 0000000..6b6a646 --- /dev/null +++ b/system-helper/org.freedesktop.XdgApp.SystemHelper.conf @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- --> + +<!DOCTYPE busconfig PUBLIC + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- This configuration file specifies the required security policies + for the the xdg-app system helper to work. --> + + <policy user="root"> + <allow own="org.freedesktop.XdgApp.SystemHelper"/> + </policy> + + <!-- Allow anyone to call into the service - we'll reject callers using PolicyKit --> + <policy context="default"> + <allow send_destination="org.freedesktop.XdgApp.SystemHelper" + send_interface="org.freedesktop.XdgApp.SystemHelper"/> + <allow send_destination="org.freedesktop.XdgApp.SystemHelper" + send_interface="org.freedesktop.DBus.Introspectable"/> + <allow send_destination="org.freedesktop.ColorManager" + send_interface="org.freedesktop.DBus.Peer"/> + </policy> + +</busconfig> diff --git a/system-helper/org.freedesktop.XdgApp.SystemHelper.service.in b/system-helper/org.freedesktop.XdgApp.SystemHelper.service.in new file mode 100644 index 0000000..c6ef627 --- /dev/null +++ b/system-helper/org.freedesktop.XdgApp.SystemHelper.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.freedesktop.XdgApp.SystemHelper +Exec=@libexecdir@/xdg-app-system-helper +SystemdService=xdg-app-system-helper.service diff --git a/system-helper/xdg-app-system-helper.c b/system-helper/xdg-app-system-helper.c new file mode 100644 index 0000000..8f17a49 --- /dev/null +++ b/system-helper/xdg-app-system-helper.c @@ -0,0 +1,111 @@ +/* + * Copyright © 2014 Red Hat, Inc + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Authors: + * Alexander Larsson <alexl@redhat.com> + */ + +#include "config.h" + +#include <locale.h> +#include <stdlib.h> +#include <string.h> +#include <gio/gio.h> + +#include "xdg-app-dbus.h" + +static GDBusNodeInfo *introspection_data = NULL; + +void +handle_deploy (void) +{ + g_print ("deploy!"); +} + +static void +on_bus_acquired (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + XdgAppSystemHelper *helper; + GError *error = NULL; + + helper = xdg_app_system_helper_skeleton_new (); + + g_signal_connect (helper, "handle-deploy", G_CALLBACK (handle_deploy), NULL); + + if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (helper), + connection, + "/org/freedesktop/XdgApp/SystemHelper", + &error)) + { + g_warning ("error: %s\n", error->message); + g_error_free (error); + } +} + +static void +on_name_acquired (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ +} + +static void +on_name_lost (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + exit (1); +} + +int +main (int argc, + char **argv) +{ + guint owner_id; + GMainLoop *loop; + GBytes *introspection_bytes; + + setlocale (LC_ALL, ""); + + g_setenv ("GIO_USE_VFS", "local", TRUE); + + g_set_prgname (argv[0]); + + introspection_bytes = g_resources_lookup_data ("/org/freedesktop/XdgApp/org.freedesktop.XdgApp.xml", 0, NULL); + g_assert (introspection_bytes != NULL); + + introspection_data = g_dbus_node_info_new_for_xml (g_bytes_get_data (introspection_bytes, NULL), NULL); + + owner_id = g_bus_own_name (G_BUS_TYPE_SYSTEM, + "org.freedesktop.XdgApp.SystemHelper", + G_BUS_NAME_OWNER_FLAGS_NONE, + on_bus_acquired, + on_name_acquired, + on_name_lost, + NULL, + NULL); + + loop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (loop); + + g_bus_unown_name (owner_id); + + g_dbus_node_info_unref (introspection_data); + + return 0; +} diff --git a/system-helper/xdg-app-system-helper.service.in b/system-helper/xdg-app-system-helper.service.in new file mode 100644 index 0000000..5f1e6ce --- /dev/null +++ b/system-helper/xdg-app-system-helper.service.in @@ -0,0 +1,7 @@ +[Unit] +Description=xdg-app system helper + +[Service] +BusName=org.freedesktop.XdgApp.SystemHelper +ExecStart=@libexecdir@/xdg-app-system-helper +Type=dbus diff --git a/system-helper/xdg-app.gresource.xml b/system-helper/xdg-app.gresource.xml new file mode 100644 index 0000000..492189a --- /dev/null +++ b/system-helper/xdg-app.gresource.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<gresources> + <gresource prefix='/org/freedesktop/XdgApp'> + <file alias="org.freedesktop.XdgApp.xml">data/org.freedesktop.XdgApp.xml</file> + </gresource> +</gresources> |