int
main (int argc, char *argv[])
{
	NMRemoteSettings *settings;
	GMainLoop *loop;
	GError *error = NULL;

#if !GLIB_CHECK_VERSION (2, 35, 0)
	/* Initialize GType system */
	g_type_init ();
#endif

	loop = g_main_loop_new (NULL, FALSE);

	/* Create our proxy for NetworkManager's settings service */
	settings = nm_remote_settings_new (NULL, &error);
	if (!settings) {
		g_message ("Error: Could not get system settings: %s.", error->message);
		g_error_free (error);
		return 1;
	}

	/* Ask the settings service to add the new connection */
	if (add_connection (settings, loop, "__Test connection__")) {
		/* Wait for the connection to be added */
		g_main_loop_run (loop);
	} else
		g_print ("Error adding connection to NetworkManager\n");

	/* Clean up */
	g_object_unref (settings);

	return 0;
}
int main (int argc, char *argv[])
{
	DBusGConnection *bus;
	NMRemoteSettings *settings;
	GMainLoop *loop;

	/* Initialize GType system */
	g_type_init ();

	loop = g_main_loop_new (NULL, FALSE);

	/* Get system bus */
	bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);

	/* Create our proxy for NetworkManager's settings service */
	settings = nm_remote_settings_new (bus);

	/* Ask the settings service to add the new connection */
	if (add_connection (settings, loop, "__Test connection__")) {
		/* Wait for the connection to be added */
		g_main_loop_run (loop);
	} else
		g_print ("Error adding connection to NetworkManager\n");

	/* Clean up */
	g_object_unref (settings);
	dbus_g_connection_unref (bus);

	return 0;
}
NmaBtDevice *
nma_bt_device_new (const char *bdaddr,
                   const char *alias,
                   const char *object_path,
                   gboolean has_pan,
                   gboolean has_dun)
{
	NmaBtDevice *self;
	GError *error = NULL;

	g_return_val_if_fail (bdaddr != NULL, NULL);
	g_return_val_if_fail (object_path != NULL, NULL);

	self = (NmaBtDevice *) g_object_new (NMA_TYPE_BT_DEVICE,
	                                     NMA_BT_DEVICE_BDADDR, bdaddr,
	                                     NMA_BT_DEVICE_ALIAS, alias,
	                                     NMA_BT_DEVICE_OBJECT_PATH, object_path,
	                                     NMA_BT_DEVICE_HAS_PAN, has_pan,
	                                     NMA_BT_DEVICE_HAS_DUN, has_dun,
	                                     NULL);
	if (self) {
		NmaBtDevicePrivate *priv = NMA_BT_DEVICE_GET_PRIVATE (self);
		struct ether_addr *addr;

		g_assert (priv->bdaddr);
		g_assert (priv->object_path);

		addr = ether_aton (priv->bdaddr);
		if (!addr) {
			g_warning ("%s: invalid Bluetooth address '%s'", __func__, priv->bdaddr);
			g_object_unref (self);
			return NULL;
		}

		priv->bdaddr_array = g_byte_array_sized_new (ETH_ALEN);
		g_byte_array_append (priv->bdaddr_array, (const guint8 *) addr->ether_addr_octet, ETH_ALEN);

		priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
		if (error) {
			g_warning ("%s: failed to connect to D-Bus: %s", __func__, error->message);
			g_object_unref (self);
			self = NULL;
		}

		priv->window_group = gtk_window_group_new ();

		priv->settings = nm_remote_settings_new (priv->bus);
		g_signal_connect (priv->settings,
				          NM_REMOTE_SETTINGS_CONNECTIONS_READ,
				          G_CALLBACK (connections_read),
				          self);
	}
	return self;
}
Exemple #4
0
static gboolean
network_initialize (Network *self,
                    GCancellable *cancellable,
                    GError **error)
{
  self->ifname_to_netinterface = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                        g_free, (GDestroyNotify) g_object_unref);

  self->client = nm_client_new ();
  self->settings = nm_remote_settings_new (dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL));
  g_signal_connect (self->settings, NM_REMOTE_SETTINGS_CONNECTIONS_READ,
                    G_CALLBACK (on_nm_settings_read), self);

  return TRUE;
}
Exemple #5
0
static void
device_removed (const char *bdaddr)
{
	GError *error = NULL;
	DBusGConnection *bus;
	RemoveInfo *info;
	struct ether_addr *addr;
	NmaBtDevice *device;

	g_message ("Device '%s' was removed; deleting connections", bdaddr);

	/* Remove any connections associated with the deleted device */

	addr = ether_aton (bdaddr);
	if (!addr) {
		g_warning ("Failed to convert Bluetooth address '%s'", bdaddr);
		return;
	}

	bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
	if (error || !bus) {
		g_warning ("%s: failed to get a connection to D-Bus! %s", __func__,
		           error ? error->message : "(unknown)");
		g_clear_error (&error);
		return;
	}

	info = g_malloc0 (sizeof (RemoveInfo));
	info->settings = nm_remote_settings_new (bus);

	info->bdaddr = g_byte_array_sized_new (ETH_ALEN);
	g_byte_array_append (info->bdaddr, (const guint8 *) addr->ether_addr_octet, ETH_ALEN);

	info->str_bdaddr = g_strdup (bdaddr);
	info->timeout_id = g_timeout_add_seconds (15, remove_timeout, info);

	g_signal_connect (info->settings,
	                  NM_REMOTE_SETTINGS_CONNECTIONS_READ,
	                  G_CALLBACK (remove_connections_read),
	                  info);

	dbus_g_connection_unref (bus);

	/* Kill the device */
	device = get_device (bdaddr);
	if (device)
		remove_device (device);
}
Exemple #6
0
static void
gis_network_page_constructed (GObject *object)
{
  GisNetworkPage *page = GIS_NETWORK_PAGE (object);
  GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
  const GPtrArray *devices;
  NMDevice *device;
  guint i;
  gboolean visible = FALSE;

  G_OBJECT_CLASS (gis_network_page_parent_class)->constructed (object);

  priv->icons = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);

  priv->nm_client = nm_client_new ();

  g_object_bind_property (priv->nm_client, "wireless-enabled",
                          priv->turn_on_switch, "active",
                          G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);

  devices = nm_client_get_devices (priv->nm_client);
  if (devices) {
    for (i = 0; i < devices->len; i++) {
      device = g_ptr_array_index (devices, i);

      if (!nm_device_get_managed (device))
        continue;

      if (nm_device_get_device_type (device) == NM_DEVICE_TYPE_WIFI) {
        /* FIXME deal with multiple, dynamic devices */
        priv->nm_device = g_object_ref (device);
        break;
      }
    }
  }

  if (priv->nm_device == NULL) {
    g_debug ("No network device found, hiding network page");
    goto out;
  }

  if (nm_device_get_state (priv->nm_device) == NM_DEVICE_STATE_ACTIVATED) {
    g_debug ("Activated network device found, hiding network page");
    goto out;
  }

  visible = TRUE;
  priv->nm_settings = nm_remote_settings_new (NULL);

  g_signal_connect (priv->nm_device, "notify::state",
                    G_CALLBACK (device_state_changed), page);
  g_signal_connect (priv->nm_client, "notify::active-connections",
                    G_CALLBACK (active_connections_changed), page);

  gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->network_list), GTK_SELECTION_NONE);
  gtk_list_box_set_header_func (GTK_LIST_BOX (priv->network_list), update_header_func, NULL, NULL);
  gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->network_list), ap_sort, NULL, NULL);
  g_signal_connect (priv->network_list, "row-activated",
                    G_CALLBACK (row_activated), page);

  refresh_wireless_list (page);
  sync_complete (page);

  gis_page_set_skippable (GIS_PAGE (page), TRUE);

 out:
  gtk_widget_set_visible (GTK_WIDGET (page), visible);
}
NMConnectionList *
nm_connection_list_new (void)
{
	NMConnectionList *list;
	DBusGConnection *bus;
	GError *error = NULL;
	const char *objects[] = { "NMConnectionList", NULL };

	list = g_object_new (NM_TYPE_CONNECTION_LIST, NULL);
	if (!list)
		return NULL;

	/* load GUI */
	list->gui = gtk_builder_new ();

	if (!gtk_builder_add_objects_from_file (list->gui,
	                                        UIDIR "/nm-connection-editor.ui",
	                                        (char **) objects,
	                                        &error)) {
		g_warning ("Couldn't load builder file: %s", error->message);
		g_error_free (error);
		goto error;
	}

	gtk_window_set_default_icon_name ("preferences-system-network");

	list->nm_client = nm_client_new ();
	if (!list->nm_client)
		goto error;

	bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
	if (error) {
		g_warning ("Could not connect to the system bus: %s", error->message);
		g_error_free (error);
		goto error;
	}

	list->settings = nm_remote_settings_new (bus);
	dbus_g_connection_unref (bus);
	g_signal_connect (list->settings,
	                  NM_REMOTE_SETTINGS_NEW_CONNECTION,
	                  G_CALLBACK (connection_added),
	                  list);
	g_signal_connect (list->settings,
	                  NM_REMOTE_SETTINGS_CONNECTIONS_READ,
	                  G_CALLBACK (initial_connections_read),
	                  list);

	list->connection_list = GTK_TREE_VIEW (gtk_builder_get_object (list->gui, "connection_list"));
	initialize_treeview (list);
	add_connection_buttons (list);

	/* Connect to the main dialog's response handler */
	list->dialog = GTK_WIDGET (gtk_builder_get_object (list->gui, "NMConnectionList"));
	if (!list->dialog)
		goto error;
	g_signal_connect (G_OBJECT (list->dialog), "response", G_CALLBACK (dialog_response_cb), list);

	if (!vpn_get_plugins (&error)) {
		g_warning ("%s: failed to load VPN plugins: %s", __func__, error->message);
		g_error_free (error);
	}

	return list;

error:
	g_object_unref (list);
	return NULL;
}
Exemple #8
0
int
main (int argc, char **argv)
{
	gboolean got_connections = FALSE;
	GOptionContext *opts;
	GError *error = NULL;
	NmtuiStartupData startup_data;
	const char *prgname;
	int i;

	setlocale (LC_ALL, "");
	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
	textdomain (GETTEXT_PACKAGE);

	opts = g_option_context_new (NULL);
	g_option_context_add_main_entries (opts, entries, NULL);

	if (!g_option_context_parse (opts, &argc, &argv, &error)) {
		g_printerr ("%s: %s: %s\n",
		            argv[0],
		            _("Could not parse arguments"),
		            error->message);
		exit (1);
	}
	g_option_context_free (opts);

	nm_editor_bindings_init ();

	nm_client = nm_client_new ();
	if (!nm_client_get_manager_running (nm_client)) {
		g_printerr ("%s\n", _("NetworkManager is not running."));
		exit (1);
	}

	nm_settings = nm_remote_settings_new (NULL);
	g_signal_connect (nm_settings, NM_REMOTE_SETTINGS_CONNECTIONS_READ,
	                  G_CALLBACK (connections_read), &got_connections);
	while (!got_connections)
		g_main_context_iteration (NULL, TRUE);

	if (sleep_on_startup)
		sleep (5);

	startup_data.subprogram = NULL;
	prgname = g_get_prgname ();
	if (g_str_has_prefix (prgname, "lt-"))
		prgname += 3;
	if (!strcmp (prgname, "nmtui")) {
		if (argc > 1) {
			for (i = 0; i < num_subprograms; i++) {
				if (!strcmp (argv[1], subprograms[i].name)) {
					argc--;
					argv[0] = (char *) subprograms[i].shortcut;
					memmove (&argv[1], &argv[2], argc * sizeof (char *));
					startup_data.subprogram = subprograms[i].func;
					break;
				}
			}
		} else
			startup_data.subprogram = nmtui_main;
	} else {
		for (i = 0; i < num_subprograms; i++) {
			if (!strcmp (prgname, subprograms[i].shortcut)) {
				startup_data.subprogram = subprograms[i].func;
				break;
			}
		}
	}
	if (!startup_data.subprogram)
		usage ();

	if (!noinit)
		nmt_newt_init ();

	startup_data.argc = argc;
	startup_data.argv = argv;
	g_idle_add (idle_run_subprogram, &startup_data);
	loop = g_main_loop_new (NULL, FALSE);
	g_main_loop_run (loop);
	g_main_loop_unref (loop);

	if (!noinit)
		nmt_newt_finished ();

	g_object_unref (nm_client);
	g_object_unref (nm_settings);

	return 0;
}