Blame examples/C/glib/vpn-import-libnm.c

Packit Service dff8e4
/* SPDX-License-Identifier: LGPL-2.1-or-later */
Packit Service dff8e4
/*
Packit Service dff8e4
 * The example shows how to import VPN connection from a file.
Packit Service dff8e4
 * @author: Jagadeesh Kotra <jagadeesh@stdin.top>
Packit Service dff8e4
 *
Packit Service dff8e4
 * Compile with:
Packit Service dff8e4
 *   gcc -Wall vpn-import-libnm.c -o vpn-import-libnm `pkg-config --cflags --libs libnm`
Packit Service dff8e4
 */
Packit Service dff8e4
Packit Service dff8e4
#include <glib.h>
Packit Service dff8e4
#include <NetworkManager.h>
Packit Service dff8e4
#include <stdlib.h>
Packit Service dff8e4
Packit Service dff8e4
static void
Packit Service dff8e4
add_cb(NMClient *client, GAsyncResult *result, GMainLoop *loop)
Packit Service dff8e4
{
Packit Service dff8e4
    GError *err = NULL;
Packit Service dff8e4
    nm_client_add_connection_finish(client, result, &err;;
Packit Service dff8e4
    if (err != NULL) {
Packit Service dff8e4
        g_print("Error: %s\n", err->message);
Packit Service dff8e4
    } else {
Packit Service dff8e4
        g_print("Connection Added.\n");
Packit Service dff8e4
    }
Packit Service dff8e4
Packit Service dff8e4
    g_main_loop_quit(loop);
Packit Service dff8e4
}
Packit Service dff8e4
Packit Service dff8e4
int
Packit Service dff8e4
main(int argc, char **argv)
Packit Service dff8e4
{
Packit Service dff8e4
    GMainLoop *        loop = g_main_loop_new(NULL, FALSE);
Packit Service dff8e4
    GSList *           plugins;
Packit Service dff8e4
    GSList *           iter;
Packit Service dff8e4
    NMVpnEditorPlugin *editor;
Packit Service dff8e4
    NMClient *         client;
Packit Service dff8e4
    GError *           err  = NULL;
Packit Service dff8e4
    NMConnection *     conn = NULL;
Packit Service dff8e4
Packit Service dff8e4
    if (argc < 2) {
Packit Service dff8e4
        g_print("program takes exactly one(1) argument.\n");
Packit Service dff8e4
        exit(1);
Packit Service dff8e4
    }
Packit Service dff8e4
Packit Service dff8e4
    plugins = nm_vpn_plugin_info_list_load();
Packit Service dff8e4
    g_assert(plugins != NULL);
Packit Service dff8e4
Packit Service dff8e4
    for (iter = plugins; iter; iter = iter->next) {
Packit Service dff8e4
        const char *plugin_name = nm_vpn_plugin_info_get_name(iter->data);
Packit Service dff8e4
        g_print("Trying Plugin: %s\n", plugin_name);
Packit Service dff8e4
Packit Service dff8e4
        //try to load plugin
Packit Service dff8e4
        editor = nm_vpn_plugin_info_load_editor_plugin(iter->data, NULL);
Packit Service dff8e4
Packit Service dff8e4
        conn = nm_vpn_editor_plugin_import(editor, argv[1], &err;;
Packit Service dff8e4
        if (err != NULL) {
Packit Service dff8e4
            g_print("Error: %s\n", err->message);
Packit Service dff8e4
            g_error_free(err);
Packit Service dff8e4
            err = NULL;
Packit Service dff8e4
        } else {
Packit Service dff8e4
            g_print("%s imported with %s plugin.\n", argv[1], plugin_name);
Packit Service dff8e4
            break;
Packit Service dff8e4
        }
Packit Service dff8e4
    }
Packit Service dff8e4
Packit Service dff8e4
    g_slist_free_full(plugins, g_object_unref);
Packit Service dff8e4
    g_assert(conn != NULL);
Packit Service dff8e4
Packit Service dff8e4
    client = nm_client_new(NULL, NULL);
Packit Service dff8e4
Packit Service dff8e4
    nm_client_add_connection_async(client, conn, TRUE, NULL, (GAsyncReadyCallback) add_cb, loop);
Packit Service dff8e4
    g_main_loop_run(loop);
Packit Service dff8e4
Packit Service dff8e4
    return 0;
Packit Service dff8e4
}