diff options
Diffstat (limited to 'scripts/openvpn-script.c')
-rw-r--r-- | scripts/openvpn-script.c | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/scripts/openvpn-script.c b/scripts/openvpn-script.c index 3d463843..e359c314 100644 --- a/scripts/openvpn-script.c +++ b/scripts/openvpn-script.c @@ -27,11 +27,23 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <syslog.h> +#include <libgen.h> #include <dbus/dbus.h> extern char **environ; +static void print(const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + vsyslog(LOG_INFO, format, ap); + va_end(ap); +} + + static void append(DBusMessageIter *dict, const char *pattern) { DBusMessageIter entry; @@ -61,6 +73,9 @@ int main(int argc, char *argv[]) DBusMessage *msg; DBusMessageIter iter, dict; char **envp, *busname, *interface, *path, *reason; + int ret = 0; + + openlog(basename(argv[0]), LOG_NDELAY | LOG_PID, LOG_DAEMON); busname = getenv("CONNMAN_BUSNAME"); interface = getenv("CONNMAN_INTERFACE"); @@ -69,27 +84,29 @@ int main(int argc, char *argv[]) reason = getenv("script_type"); if (!busname || !interface || !path || !reason) { - fprintf(stderr, "Required environment variables not set\n"); - return 1; + print("Required environment variables not set"); + ret = 1; + goto out; } dbus_error_init(&error); conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (conn == NULL) { if (dbus_error_is_set(&error) == TRUE) { - fprintf(stderr, "%s\n", error.message); + print("%s", error.message); dbus_error_free(&error); } else - fprintf(stderr, "Failed to get on system bus\n"); - return 0; + print("Failed to get on system bus"); + + goto out; } msg = dbus_message_new_method_call(busname, path, interface, "notify"); if (msg == NULL) { dbus_connection_unref(conn); - fprintf(stderr, "Failed to allocate method call\n"); - return 0; + print("Failed to allocate method call"); + goto out; } dbus_message_set_no_reply(msg, TRUE); @@ -110,8 +127,10 @@ int main(int argc, char *argv[]) dbus_message_iter_close_container(&iter, &dict); - if (dbus_connection_send(conn, msg, NULL) == FALSE) - fprintf(stderr, "Failed to send message\n"); + if (dbus_connection_send(conn, msg, NULL) == FALSE) { + print("Failed to send message"); + goto out; + } dbus_connection_flush(conn); @@ -119,5 +138,8 @@ int main(int argc, char *argv[]) dbus_connection_unref(conn); - return 0; +out: + closelog(); + + return ret; } |