aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am7
-rw-r--r--src/Makefile.in37
-rw-r--r--src/aconfig.h.in6
-rw-r--r--src/main.c1
-rw-r--r--src/ui_nask.c48
5 files changed, 87 insertions, 12 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 202e7a2..9fa6b3e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,6 @@
bin_PROGRAMS=naskpass naskshell naskpass_check
-naskpass_SOURCES=main.c log.c opt.c status.c ui_ani.c ui.c ui_input.c ui_ipc.c ui_txtwindow.c ui_statusbar.c ui_nask.c
+naskpass_SOURCES=main.c log.c opt.c utils.c status.c ui_ani.c ui.c ui_input.c ui_ipc.c ui_txtwindow.c ui_statusbar.c ui_nask.c
+naskpass_LDFLAGS=
naskpass_check_SOURCES=check/check.c
naskshell_SOURCES=shell/shell.c
if DEBUG
@@ -7,3 +8,7 @@ naskpass_CFLAGS=-O0 -g3 -DDEBUG
else
naskpass_CFLAGS=-fPIC -fomit-frame-pointer -fexpensive-optimizations -Os
endif
+if RESOLVE
+naskpass_CFLAGS+=-DHAVE_RESOLVE
+naskpass_LDFLAGS+=-lresolv
+endif
diff --git a/src/Makefile.in b/src/Makefile.in
index 4a5a4cf..718ab6d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -80,6 +80,8 @@ build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = naskpass$(EXEEXT) naskshell$(EXEEXT) \
naskpass_check$(EXEEXT)
+@RESOLVE_TRUE@am__append_1 = -DHAVE_RESOLVE
+@RESOLVE_TRUE@am__append_2 = -lresolv
subdir = src
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(srcdir)/aconfig.h.in $(top_srcdir)/build/depcomp
@@ -94,15 +96,15 @@ CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_naskpass_OBJECTS = naskpass-main.$(OBJEXT) naskpass-log.$(OBJEXT) \
- naskpass-opt.$(OBJEXT) naskpass-status.$(OBJEXT) \
- naskpass-ui_ani.$(OBJEXT) naskpass-ui.$(OBJEXT) \
- naskpass-ui_input.$(OBJEXT) naskpass-ui_ipc.$(OBJEXT) \
- naskpass-ui_txtwindow.$(OBJEXT) \
+ naskpass-opt.$(OBJEXT) naskpass-utils.$(OBJEXT) \
+ naskpass-status.$(OBJEXT) naskpass-ui_ani.$(OBJEXT) \
+ naskpass-ui.$(OBJEXT) naskpass-ui_input.$(OBJEXT) \
+ naskpass-ui_ipc.$(OBJEXT) naskpass-ui_txtwindow.$(OBJEXT) \
naskpass-ui_statusbar.$(OBJEXT) naskpass-ui_nask.$(OBJEXT)
naskpass_OBJECTS = $(am_naskpass_OBJECTS)
naskpass_LDADD = $(LDADD)
-naskpass_LINK = $(CCLD) $(naskpass_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+naskpass_LINK = $(CCLD) $(naskpass_CFLAGS) $(CFLAGS) \
+ $(naskpass_LDFLAGS) $(LDFLAGS) -o $@
am__dirstamp = $(am__leading_dot)dirstamp
am_naskpass_check_OBJECTS = check/check.$(OBJEXT)
naskpass_check_OBJECTS = $(am_naskpass_check_OBJECTS)
@@ -273,11 +275,13 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-naskpass_SOURCES = main.c log.c opt.c status.c ui_ani.c ui.c ui_input.c ui_ipc.c ui_txtwindow.c ui_statusbar.c ui_nask.c
+naskpass_SOURCES = main.c log.c opt.c utils.c status.c ui_ani.c ui.c ui_input.c ui_ipc.c ui_txtwindow.c ui_statusbar.c ui_nask.c
+naskpass_LDFLAGS = $(am__append_2)
naskpass_check_SOURCES = check/check.c
naskshell_SOURCES = shell/shell.c
-@DEBUG_FALSE@naskpass_CFLAGS = -fPIC -fomit-frame-pointer -fexpensive-optimizations -Os
-@DEBUG_TRUE@naskpass_CFLAGS = -O0 -g3 -DDEBUG
+@DEBUG_FALSE@naskpass_CFLAGS = -fPIC -fomit-frame-pointer \
+@DEBUG_FALSE@ -fexpensive-optimizations -Os $(am__append_1)
+@DEBUG_TRUE@naskpass_CFLAGS = -O0 -g3 -DDEBUG $(am__append_1)
all: aconfig.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -418,6 +422,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/naskpass-ui_nask.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/naskpass-ui_statusbar.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/naskpass-ui_txtwindow.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/naskpass-utils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@check/$(DEPDIR)/check.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@shell/$(DEPDIR)/shell.Po@am__quote@
@@ -479,6 +484,20 @@ naskpass-opt.obj: opt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -c -o naskpass-opt.obj `if test -f 'opt.c'; then $(CYGPATH_W) 'opt.c'; else $(CYGPATH_W) '$(srcdir)/opt.c'; fi`
+naskpass-utils.o: utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -MT naskpass-utils.o -MD -MP -MF $(DEPDIR)/naskpass-utils.Tpo -c -o naskpass-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/naskpass-utils.Tpo $(DEPDIR)/naskpass-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='naskpass-utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -c -o naskpass-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
+
+naskpass-utils.obj: utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -MT naskpass-utils.obj -MD -MP -MF $(DEPDIR)/naskpass-utils.Tpo -c -o naskpass-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/naskpass-utils.Tpo $(DEPDIR)/naskpass-utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utils.c' object='naskpass-utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -c -o naskpass-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
+
naskpass-status.o: status.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(naskpass_CFLAGS) $(CFLAGS) -MT naskpass-status.o -MD -MP -MF $(DEPDIR)/naskpass-status.Tpo -c -o naskpass-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/naskpass-status.Tpo $(DEPDIR)/naskpass-status.Po
diff --git a/src/aconfig.h.in b/src/aconfig.h.in
index 333f005..cbae5a0 100644
--- a/src/aconfig.h.in
+++ b/src/aconfig.h.in
@@ -87,6 +87,12 @@
and to 0 otherwise. */
#undef HAVE_REALLOC
+/* Define to 1 if you have libc resolv. */
+#undef HAVE_RESOLVE
+
+/* Define to 1 if you have the <resolv.h> header file. */
+#undef HAVE_RESOLV_H
+
/* Define to 1 if you have the <semaphore.h> header file. */
#undef HAVE_SEMAPHORE_H
diff --git a/src/main.c b/src/main.c
index a8a5903..7f04358 100644
--- a/src/main.c
+++ b/src/main.c
@@ -77,6 +77,7 @@ run_cryptcreate(char *pass, char *crypt_cmd)
void sigfunc(int signal)
{
switch (signal) {
+ case SIGSEGV:
case SIGTERM:
ui_ipc_semtrywait(SEM_UI);
break;
diff --git a/src/ui_nask.c b/src/ui_nask.c
index 4857de6..32a8dcc 100644
--- a/src/ui_nask.c
+++ b/src/ui_nask.c
@@ -11,10 +11,13 @@
#include "ui_txtwindow.h"
#include "ui_nask.h"
+#include "utils.h"
#include "status.h"
#define APP_TIMEOUT 60
#define APP_TIMEOUT_FMT "%02d"
+#define NETUPD_INTERVAL 5
+#define NETUPD_STRLEN 128
#define BSTR_LEN 3
#define PASSWD_WIDTH 35
#define PASSWD_HEIGHT 5
@@ -30,9 +33,10 @@
static struct input *pw_input;
static struct anic *heartbeat;
-static struct statusbar *higher, *lower;
+static struct statusbar *higher, *lower, *netinfo;
static struct txtwindow *busywnd, *errwnd;
-static int atmout = APP_TIMEOUT;
+static unsigned int atmout = APP_TIMEOUT;
+static unsigned int netupd = 0;
static char *title = NULL;
static char busy_str[BSTR_LEN+1] = ".\0\0\0";
@@ -54,6 +58,41 @@ higher_statusbar_update(WINDOW *win, struct statusbar *bar, bool ui_timeout)
}
static int
+netinfo_statusbar_update(WINDOW *win, struct statusbar *bar, bool ui_timeout)
+{
+ if (ui_timeout == TRUE) {
+ if (netupd == 0) {
+ netupd = NETUPD_INTERVAL;
+ size_t len = 0;
+ char buf[NETUPD_STRLEN+1];
+ char *dev, *gwIp, *myIp;
+ memset(buf, '\0', NETUPD_STRLEN+1);
+ if (utGetDefaultGwInfo(&dev, &gwIp) == 0) {
+ if (utGetIpFromNetDev(dev, &myIp) == 0) {
+#ifdef HAVE_RESOLVE
+ char *dom, *srv;
+ if (utGetDomainInfo(&dom, &srv) == 0) {
+ snprintf(buf, NETUPD_STRLEN, "netdev: %s // address: %s // gateway: %s // dns: %s // domain: %s", dev, myIp, gwIp, srv, dom);
+ }
+ free(dom);
+ free(srv);
+#else
+ snprintf(buf, NETUPD_STRLEN, "netdev: %s // address: %s // gateway: %s", dev, myIp, gwIp);
+#endif
+ free(myIp);
+ }
+ free(dev);
+ free(gwIp);
+ }
+ set_statusbar_text(bar, buf);
+ } else {
+ netupd--;
+ }
+ }
+ return DOUI_OK;
+}
+
+static int
busywnd_update(WINDOW *win, struct txtwindow *tw, bool ui_timeout)
{
if (ui_timeout == TRUE && tw->active == TRUE) {
@@ -153,6 +192,8 @@ init_ui_elements(unsigned int max_x, unsigned int max_y)
higher_statusbar_update);
lower = init_statusbar(max_y - 1, max_x, COLOR_PAIR(3),
lower_statusbar_update);
+ netinfo = init_statusbar(1, max_x, COLOR_PAIR(2),
+ netinfo_statusbar_update);
busywnd = init_txtwindow_centered(INFOWND_WIDTH, INFOWND_HEIGHT,
busywnd_update);
errwnd = init_txtwindow_centered(INFOWND_WIDTH, INFOWND_HEIGHT,
@@ -161,6 +202,7 @@ init_ui_elements(unsigned int max_x, unsigned int max_y)
register_input(NULL, pw_input, passwd_input_cb);
register_statusbar(higher);
register_statusbar(lower);
+ register_statusbar(netinfo);
register_anic_default(heartbeat);
register_txtwindow(busywnd);
register_txtwindow(errwnd);
@@ -173,12 +215,14 @@ free_ui_elements(void)
{
unregister_ui_elt(lower);
unregister_ui_elt(higher);
+ unregister_ui_elt(netinfo);
unregister_ui_elt(heartbeat);
unregister_ui_elt(pw_input);
free_input(pw_input);
free_anic_default(heartbeat);
free_statusbar(higher);
free_statusbar(lower);
+ free_statusbar(netinfo);
free_txtwindow(busywnd);
free_txtwindow(errwnd);
free_ui();