[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3964 - in gnunet-gtk: . src/plugins/daemon
From: |
grothoff |
Subject: |
[GNUnet-SVN] r3964 - in gnunet-gtk: . src/plugins/daemon |
Date: |
Sun, 17 Dec 2006 16:18:24 -0800 (PST) |
Author: grothoff
Date: 2006-12-17 16:18:20 -0800 (Sun, 17 Dec 2006)
New Revision: 3964
Modified:
gnunet-gtk/gnunet-gtk.glade
gnunet-gtk/src/plugins/daemon/Makefile.am
gnunet-gtk/src/plugins/daemon/daemon.c
Log:
fixing Mantis 1088
Modified: gnunet-gtk/gnunet-gtk.glade
===================================================================
--- gnunet-gtk/gnunet-gtk.glade 2006-12-17 23:14:44 UTC (rev 3963)
+++ gnunet-gtk/gnunet-gtk.glade 2006-12-18 00:18:20 UTC (rev 3964)
@@ -476,6 +476,23 @@
<property name="fill">False</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkImage"
id="statusPixmapError">
+ <property agent="glademm"
name="cxx_visibility">public</property>
+ <property
name="stock">gtk-dialog-error</property>
+ <property
name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property
name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
</child>
@@ -510,6 +527,72 @@
</child>
<child>
+ <widget class="GtkHBox" id="hbox67">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label152">
+ <property name="visible">True</property>
+ <property name="label"
translatable="yes">_configuration file that should be used when starting
gnunetd:</property>
+ <property
name="use_underline">True</property>
+ <property
name="use_markup">False</property>
+ <property
name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property
name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">5</property>
+ <property name="ypad">0</property>
+ <property
name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property
name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFileChooserButton"
id="gnunetdconfigFileChooserButton">
+ <property name="visible">True</property>
+ <property name="title"
translatable="yes">Select gnunetd configuration File</property>
+ <property
name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+ <property
name="local_only">True</property>
+ <property
name="show_hidden">True</property>
+ <property
name="do_overwrite_confirmation">False</property>
+ <property name="width_chars">-1</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="label_xalign">0</property>
@@ -572,6 +655,16 @@
</child>
<child>
+ <widget class="GtkHSeparator" id="hseparator2">
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkFrame" id="daemonConfigFrame">
<property name="label_xalign">0</property>
<property name="label_yalign">0.5</property>
@@ -749,7 +842,7 @@
<child>
<widget class="GtkLabel"
id="daemonConfigLabel">
<property name="visible">True</property>
- <property name="label"
translatable="yes"><b>GNUnet daemon configuration</b></property>
+ <property name="label"
translatable="yes"><b>GNUnet configuration</b></property>
<property
name="use_underline">False</property>
<property
name="use_markup">True</property>
<property
name="justify">GTK_JUSTIFY_LEFT</property>
@@ -775,6 +868,57 @@
<property name="fill">False</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox68">
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkRadioButton"
id="configureClientRadioButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label"
translatable="yes">C_onfigure client</property>
+ <property
name="use_underline">True</property>
+ <property
name="relief">GTK_RELIEF_NORMAL</property>
+ <property
name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property
name="inconsistent">False</property>
+ <property
name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton"
id="configureDaemonRadioButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label"
translatable="yes">Configure da_emon</property>
+ <property
name="use_underline">True</property>
+ <property
name="relief">GTK_RELIEF_NORMAL</property>
+ <property
name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property
name="inconsistent">False</property>
+ <property
name="draw_indicator">True</property>
+ <property
name="group">configureClientRadioButton</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
Modified: gnunet-gtk/src/plugins/daemon/Makefile.am
===================================================================
--- gnunet-gtk/src/plugins/daemon/Makefile.am 2006-12-17 23:14:44 UTC (rev
3963)
+++ gnunet-gtk/src/plugins/daemon/Makefile.am 2006-12-18 00:18:20 UTC (rev
3964)
@@ -16,6 +16,7 @@
$(top_builddir)/src/common/libgnunetgtk_common.la \
-lgnunetutil \
-lgnunetutil_cron \
+ -lgnunetutil_config \
-lgnunetgetoption_api \
-lgnunetutil_network_client
libgnunetgtkmodule_daemon_la_LDFLAGS = \
Modified: gnunet-gtk/src/plugins/daemon/daemon.c
===================================================================
--- gnunet-gtk/src/plugins/daemon/daemon.c 2006-12-17 23:14:44 UTC (rev
3963)
+++ gnunet-gtk/src/plugins/daemon/daemon.c 2006-12-18 00:18:20 UTC (rev
3964)
@@ -26,7 +26,9 @@
#include "platform.h"
#include "gnunetgtk_common.h"
+#include <GNUnet/gnunet_directories.h>
#include <GNUnet/gnunet_getoption_lib.h>
+#include <GNUnet/gnunet_util_config_impl.h>
#include <GNUnet/gnunet_util_cron.h>
#include <GNUnet/gnunet_util_network_client.h>
#include <gtk/gtk.h>
@@ -114,9 +116,16 @@
static GtkWidget * launchEntry = NULL;
static GtkWidget * statsEntryYes = NULL;
static GtkWidget * statsEntryNo = NULL;
+ static GtkWidget * statsEntryError = NULL;
+ static GtkWidget * chooser = NULL;
static int once = 1;
static int isLocal;
char * host;
+ int canStart;
+ struct GC_Configuration * dcfg;
+ char * fn;
+ char * user;
+ struct passwd * pws;
if (once) {
once = 0;
@@ -132,6 +141,12 @@
statsEntryNo
= glade_xml_get_widget(getMainXML(),
"statusPixmapNo");
+ statsEntryError
+ = glade_xml_get_widget(getMainXML(),
+ "statusPixmapError");
+ chooser
+ = glade_xml_get_widget(getMainXML(),
+ "gnunetdconfigFileChooserButton");
GC_get_configuration_value_string(cfg,
"NETWORK",
"HOST",
@@ -141,16 +156,53 @@
isLocal = TRUE;
else
isLocal = FALSE;
- FREENONNULL(host);
+ FREE(host);
}
updateAppModelSafe(NULL);
- if (ret == SYSERR) {
+ if (ret == 0) {
+ canStart = 0;
+ if ( (isLocal) &&
+ (NULL != (fn =
gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)))) ) {
+ if (disk_file_test(ectx, fn) == YES) {
+ dcfg = GC_create_C_impl();
+ canStart = 1;
+ if (0 != GC_parse_configuration(dcfg, fn))
+ canStart = 0;
+ user = NULL;
+ GC_get_configuration_value_string(dcfg,
+ "GNUNETD",
+ "USER",
+ "",
+ &user);
+ if (strlen(user) > 0) {
+ if (NULL == (pws = getpwnam(user))) {
+ canStart = 0;
+ } else {
+ if (pws->pw_uid != getuid())
+ canStart = (geteuid() == 0);
+ else
+ canStart = 1;
+ }
+ }
+ FREE(user);
+ GC_free(dcfg);
+ }
+ g_free(fn);
+ }
gtk_widget_hide(statsEntryYes);
- gtk_widget_show_all(statsEntryNo);
gtk_widget_set_sensitive(killEntry, FALSE);
- gtk_widget_set_sensitive(launchEntry, (TRUE & isLocal) );
+ if (canStart && isLocal) {
+ gtk_widget_set_sensitive(launchEntry, TRUE);
+ gtk_widget_show_all(statsEntryNo);
+ gtk_widget_hide(statsEntryError);
+ } else {
+ gtk_widget_set_sensitive(launchEntry, FALSE);
+ gtk_widget_show_all(statsEntryError);
+ gtk_widget_hide(statsEntryNo);
+ }
} else {
gtk_widget_hide(statsEntryNo);
+ gtk_widget_hide(statsEntryError);
gtk_widget_show_all(statsEntryYes);
gtk_widget_set_sensitive(killEntry, TRUE);
gtk_widget_set_sensitive(launchEntry, FALSE);
@@ -159,15 +211,14 @@
}
static void cronCheckDaemon(void * dummy) {
- static int last = 42;
int ret;
- ret = connection_test_running(ectx,
- cfg);
- if (ret != last) {
- last = ret;
- gtkSaveCall(&doUpdateMenus, &ret);
- }
+ if (OK == connection_test_running(ectx,
+ cfg))
+ ret = 1;
+ else
+ ret = 0;
+ gtkSaveCall(&doUpdateMenus, &ret);
}
@@ -177,7 +228,9 @@
void on_startDaemon_clicked_daemon(GtkWidget * widget,
gpointer data) {
GtkWidget * launchEntry;
-
+ GtkWidget * chooser;
+ char * fn;
+
launchEntry
= glade_xml_get_widget(getMainXML(),
"startDaemon");
@@ -188,14 +241,21 @@
return;
} else {
addLogEntry(_("Launching gnunetd..."));
+ chooser
+ = glade_xml_get_widget(getMainXML(),
+ "gnunetdconfigFileChooserButton");
+ fn = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
+ GE_BREAK(ectx, fn != NULL);
if (SYSERR != os_daemon_start(ectx,
cfg,
- NULL, /* fixme: cfgFile */
+ fn,
YES)) {
addLogEntry(_("Launched gnunetd"));
} else {
addLogEntry(_("Launching gnunetd failed"));
}
+ if (fn != NULL)
+ g_free(fn);
}
}
@@ -242,6 +302,7 @@
GtkListStore * model;
GtkCellRenderer * renderer;
int col;
+ char * daemon_config;
ectx = e;
cfg = c;
@@ -277,6 +338,22 @@
= glade_xml_get_widget(getMainXML(),
"daemonScrolledWindow");
gtk_widget_show(tab);
+ daemon_config = NULL;
+ GC_get_configuration_value_filename(cfg,
+ "DAEMON",
+ "CONFIGFILE",
+ DEFAULT_DAEMON_CONFIG_FILE,
+ &daemon_config);
+ if (YES == disk_file_test(NULL, daemon_config)) {
+
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(getMainXML(),
+
"gnunetdconfigFileChooserButton")),
+ daemon_config);
+ } else {
+ addLogEntry(_("Configuration file for GNUnet daemon `%s' does not exist!
Run `gnunet-setup -d'."),
+ daemon_config);
+ }
+ FREE(daemon_config);
+
cron = cron_create(ectx);
cron_add_job(cron,
&cronCheckDaemon,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3964 - in gnunet-gtk: . src/plugins/daemon,
grothoff <=