|
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 |
}
|