[hamradio-commits] [uronode] 02/10: Imported Upstream version 2.4

Dave Hibberd hibby-guest at moszumanska.debian.org
Fri Apr 1 15:32:58 UTC 2016


This is an automated email from the git hooks/post-receive script.

hibby-guest pushed a commit to branch master
in repository uronode.

commit 0ed015b5b0e1fe85f86ed3f8a145c2d94ef4aa05
Author: Dave Hibberd <dave.hibberd at gmail.com>
Date:   Sun Nov 22 14:56:30 2015 +0000

    Imported Upstream version 2.4
---
 CHANGES.2              | 100 +++++++++++++++++++-
 INSTALL                |   4 +-
 Makefile.in            |  17 ++--
 axdigi.c               |  54 ++++++++++-
 calibrate              | Bin 0 -> 590605 bytes
 command.c              |   6 +-
 config.h.in            |   1 +
 configure              |  34 +++++--
 flexd.c                |   9 +-
 gateway.c              |  19 +++-
 man/axdigi.8           |  52 ++++++++++
 man/axdigi.8.gz        | Bin 1006 -> 0 bytes
 man/flexd.8            |  28 ++++++
 man/flexd.conf.5       |  51 ++++++++++
 man/flexd.conf.5.gz    | Bin 988 -> 0 bytes
 man/nodeusers.1        |  36 +++++++
 man/nodeusers.1.gz     | Bin 596 -> 0 bytes
 man/uronode.8          | 245 +++++++++++++++++++++++++++++++++++++++++++++++
 man/uronode.8.gz       | Bin 3287 -> 0 bytes
 man/uronode.conf.5     | 252 +++++++++++++++++++++++++++++++++++++++++++++++++
 man/uronode.conf.5.gz  | Bin 3333 -> 0 bytes
 man/uronode.perms.5    | 117 +++++++++++++++++++++++
 man/uronode.perms.5.gz | Bin 1267 -> 0 bytes
 node.c                 |  17 ++--
 node.h                 |   4 +-
 router.c               |  21 ++++-
 sysinfo.c              |   2 +-
 27 files changed, 1022 insertions(+), 47 deletions(-)

diff --git a/CHANGES.2 b/CHANGES.2
index 1e742f3..08bdb06 100644
--- a/CHANGES.2
+++ b/CHANGES.2
@@ -1,4 +1,3 @@
-
 28/11/2008 v1.0.8
 *notes lost, sorry.
 
@@ -600,7 +599,104 @@ to the README file as well.
 
 Changed the version in node.h to reflect this security patch.
 
-
+21/11/2015 - v2.4
+
+Made a change to gatway.c in which during an incoming ax.25 connect, if
+the user gateways out to another node/rose/flex/etc and does NOT request
+to "s"tay on the node, they will be disconnected from the node upon
+disconnect at the remote. No termination message from the node will be
+displayed either as to not conflict with a possible exit message from
+the remote. If the user DOES request to remain on the node, they will
+be presented with the return message and a disconnect will also generate
+a disconnect message. This should make the node a bit more HF friendly.
+
+Made a change in node.c and in command.c in regards to the prompts.
+This idea came via Mitch AB4MW. In the main loop, the buffer was already
+called to flush. By eliminating certain flush routines and only calling
+them where they're truly required, the functions now have their own
+buffer flushing and the prompts have their own.  This also should help
+reduce the number of frames required while keeping the prompts themselves
+intact. I have noticed for quite a while that it was possible to send
+a colored prompt BUT the ANSI reset code took it's own frame to follow
+the prompt leaving the user's input in color. While it didn't harm any
+functionality, it just looked a little sloppy.
+
+Mitch AB4MW caught a bug in node.c line 330ish where the ansi code was
+missing the "m" at the end of the sequence. This is fixed. I never noticed
+this in the terminal (xterm), however it appears to affect others.
+
+Paul G4APL convinced me on a minor issue where if a user requested his login
+be password protected that under the condition of NetRom ONLY the logins 
+failed to return any clue that the user properly authenticated in. It appears 
+as if the user is in a hung mode, and they need to break out of the session. 
+While this was not true, I concur that it does appear that way which can be 
+a tad confusing. Of course, if a user did "?" the command list would appear.
+I made a change in node.c so that ONLY if a user had to password authenticate
+to an incoming NetRom connect, once they did so the user will now be presented
+with a "ALIAS:CALL} Welcome." message. If the user does NOT have a password
+for NetRom, than the standard rules (as per Software2000 spec) apply. Note:
+I've not only added this for the end user but also in keeping with Software-
+2000 specs, I can't recall any situation where a user may wish to password
+his NetRom connections. While this login greeting upon a successful 
+authentication to the remote NetRom node may be out of spec, I had to first
+ask myself if requiring a password at a remote NetRom node is in spec? 
+Needless to say, in my past conversations with W0RLI (RLI BBS Fame and SK)
+we've decided that the specs were written with PBBS scripts in mind and
+that a robot forwarding session needs no extra frames to confuse it... so
+with that in mind, I can't think of a situation where a user who's call is
+also their pbbs may want to password themselves so I'm hoping this is a
+moot issue.
+
+Many dupe texts found by SP2L, removed. Thanks Tom.
+
+Added pidfile creation and daemonize routine for axdigi. No longer will you
+need to load it by calling "/usr/local/sbin/axdigi &", now you may simply
+call it using "/usr/local/sbin/axdigi".
+
+Fixed a bug in flexd where if you had to kill it, "killall -TERM flexd"
+failed... you had to "kill -9 #####" via the process id. Now the killall
+string will properly work.
+
+Added a README.flexd file for binary errors in regards to flexd failing to
+run on some systems. If you manually compile, this will help you if your
+flexd errors within two cycles of attempting to import remote routes.
+
+Removed the gzipped status of man pages, did some spell checks to others
+and added a flexd.8 manpage. This request came to me from Dave at Debian
+for downstream purposes.
+
+Considering more folks are beginning to use URONode on HF frequencies such
+as Net105, I've decided that a 60 second login timer on a 300 baud link may
+be too slow so I've extended this to a 3 minute login timer. Hopefully a 3
+minute login process will be long enough for those on HF frequencies to
+continue to enjoy URONode and the ability to telnet from an incoming ax25
+connection to say an amprnet connection to a remote URONode elsewhere. While
+I don't really expect or would imagine folks would route IP via HF (however
+it *can* be done!) I would think this should help this sort of a scenario
+so that users don't get logged off before even being able to log on!
+
+VE1JOT suggested that on busier frequencies where there may be a lot of
+beaconing that's via digipeated paths, a way to disable the MHeard auto
+router. Now when running the configure script, you will now be presented
+with such an option. The problem stems from the MHeard daemon from the
+ax25-tools package will pick up whatever path is last heard (which is
+actually correct behavior) but on some of the HF packet nets this will
+make the MHeard database to overwrite the last path to what may be a
+direct site. Sysops can do 2 things here in this case now:
+1) disable the AutoRouter for ax25 during configure.
+2) adding the remote node into uronode.routes as a direct static route.
+
+While working on this, I also noticed config.h was a tad sloppy and this
+got under my skin, so I cleaned this up while I was at it, along with
+deciding for now to make an official release for the upcoming holiday
+season. As for a developer's note, I did the above before but did a real
+bone-headed move and wiped out my email amongst other things by accident.
+Fortunatey I maintain monthly backups and restored from that. For me this
+meant minimum recreations of work lost. As for URONode, I only lost the
+suggestion by VE1JOT and other clean ups.
+
+
+---
 
 Known NON-Critical Bugs:
 Status memory/swap reporting fix
diff --git a/INSTALL b/INSTALL
index 3bf51a6..2a30317 100644
--- a/INSTALL
+++ b/INSTALL
@@ -62,7 +62,7 @@ if you use inetd -
 /etc/inetd.conf could have something like this in it:
 
 # Listen at telnet port -> URONode
-uronode  stream  tcp     nowait  nobody    /usr/local/sbin/uronode  uronode
+uronode  stream  tcp     nowait  root    /usr/local/sbin/uronode  uronode
 
 if you use xinetd -
 /etc/xinetd.d/uronode should look like this:
@@ -72,7 +72,7 @@ service uronode
         disable         = no
         socket_type     = stream
         protocol        = tcp
-        user            = nobody
+        user            = root
         server          = /usr/local/sbin/uronode
         wait            = no
         instances       = 20
diff --git a/Makefile.in b/Makefile.in
index 750e546..14efeb9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -55,20 +55,19 @@ installconf: installhelp
 
 installman:
 	install -m 755	  -D -d $(MAN_DIR)/man1 $(MAN_DIR)/man5 $(MAN_DIR)/man8
-	install -m 644    -p man/nodeusers.1.gz  $(MAN_DIR)/man1
-	install -m 644    -p man/uronode.conf.5.gz  $(MAN_DIR)/man5
-	install -m 644    -p man/uronode.perms.5.gz $(MAN_DIR)/man5
-	install -m 644    -p man/flexd.conf.5.gz $(MAN_DIR)/man5
-	install -m 644    -p man/uronode.8.gz       $(MAN_DIR)/man8
-	install -m 644	  -p man/axdigi.8.gz	 $(MAN_DIR)/man8
+	install -m 644    -p man/nodeusers.1  $(MAN_DIR)/man1
+	install -m 644    -p man/uronode.conf.5  $(MAN_DIR)/man5
+	install -m 644    -p man/uronode.perms.5 $(MAN_DIR)/man5
+	install -m 644    -p man/flexd.conf.5 $(MAN_DIR)/man5
+	install -m 644    -p man/uronode.8       $(MAN_DIR)/man8
+	install -m 644	  -p man/axdigi.8	 $(MAN_DIR)/man8
+	install -m 644	  -p man/flexd.8	 $(MAN_DIR)/man8
 
 upgrade: installman
 	install -m 755 -p uronode       $(SBIN_DIR)
 	install -m 755 -p nodeusers     $(SBIN_DIR)
 	install -m 755 -p flexd		$(SBIN_DIR)
 	install -m 755 -p axdigi	$(SBIN_DIR)
-	install -m 644 -p uronode.conf	$(ETC_DIR)
-	install -m 644 -p uronode.perms $(ETC_DIR)
  
 clean:
 	rm -f *.o *~ *.bak *.orig make.debug nodeusers uronode flexd axdigi
@@ -93,7 +92,7 @@ flexd: $(FLEXD_OBJS)
 	$(LD) $(LDFLAGS) -o flexd $(FLEXD_OBJS) $(LIBS) $(ZLIB)
 
 axdigi: $(DIGI_OBJS)
-	$(LD) $(LDFLAGS) -o axdigi $(DIGI_OBJS) 
+	$(LD) $(LDFLAGS) -o axdigi $(DIGI_OBJS) $(LIBS)
 
 ifeq (.depend,$(wildcard .depend))
 include .depend
diff --git a/axdigi.c b/axdigi.c
index 252d7e5..e82a553 100644
--- a/axdigi.c
+++ b/axdigi.c
@@ -1,6 +1,7 @@
 /* 
  * axdigi: Cross and straight port digipeater program
  * Copyright (C) 1995 Craig Small VK2XLZ
+ * modificatioins 2012-present Brian N1URO
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -32,7 +33,10 @@
 /* below added by N1URO */
 #include <string.h>
 #include <unistd.h>
+#include <signal.h>
 #include <linux/ax25.h>
+/* added by N1URO */
+#include <netax25/daemon.h>
 
 int recv_packet(unsigned char *buf, int size, unsigned char *port);
 void print_call(unsigned char *buf);
@@ -48,12 +52,26 @@ void get_interfaces(int skt);
 #define REPEATED 0x80	/* Has-been-repeated bit */
 #define MAX_PORTS 16
 #define VERSION "0.2"
-
+#define AXDIGI_PID_FILE  "/var/run/axdigi.pid"
 int port_count = 0;
 unsigned char portname[MAX_PORTS][20];
 unsigned char portcall[MAX_PORTS][8];
 
+void(*sigterm_defhnd)(int);
+
+static void quit_handler(int sig)
+{
+  signal(SIGTERM, SIG_IGN);
+
+  unlink(AXDIGI_PID_FILE);
 
+//  signal(SIGTERM, sigterm_defhnd);
+  signal(SIGTERM, quit_handler);
+  raise(SIGTERM);
+  unlink(AXDIGI_PID_FILE);
+  system("rm -f /var/run/axdigi.pid");
+  return;
+}
 
 int main(int argc, char *argv[])
 {
@@ -63,12 +81,27 @@ int main(int argc, char *argv[])
   struct sockaddr sa;
   int asize;
 	
+
+  system("rm -f /var/run/axdigi.pid");
+
+  FILE *pidfile;
+
+//  signal(SIGALRM, alarm_handler);
+//  signal(SIGTERM, term_handler);
+//  signal(SIGPIPE, quit_handler);
+//  signal(SIGQUIT, quit_handler);
+
+//  pidfile = fopen(AXDIGI_PID_FILE, "w");
+//  fprintf(pidfile, "%d\n", (int)getpid());
+//  fclose(pidfile);
+
   /* Check our huge range of flags */
   if (argc > 1)
     {
       if (strcmp(argv[1], "-v") == 0 || strcmp(argv[1], "-h") ==0)
 	{
-	  printf("axdigi version %s. Copyright (C) 1995 Craig Small VK2XLZ\n\n", VERSION);
+	  printf("axdigi version %s. Copyright (C) 1995 Craig Small VK2XLZ\n", VERSION);
+	  printf("modificatiions 2012-present by Brian N1URO\n\n");
 	  printf("axdigi comes with ABSOLUTELY NO WARRANTY.\n");
 	  printf("This is free software, and you are welcome to redistribute it\n");
 	  printf("under the terms of GNU General Public Licence as published\n");
@@ -76,13 +109,25 @@ int main(int argc, char *argv[])
 	  printf("(at your option) any later version.\n");
 	  return 0;
 	}
-    }		
+    }
+
+/* Routine to daemonize - added by N1URO */
+if (!daemon_start(TRUE)) {
+   fprintf(stderr, "Sorry, axdigi cannot become a daemon\n");
+   return 1;
+   }
+
 /* Change to keep code more modern - N1URO */
   if ((skt = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_AX25))) == -1)
     {
       perror("socket");
       return(1);
     }
+
+  pidfile = fopen(AXDIGI_PID_FILE, "w");
+  fprintf(pidfile, "%d\n", (int)getpid());
+  fclose(pidfile);
+
   get_interfaces(skt);
 	
   while(1)
@@ -107,7 +152,9 @@ int main(int argc, char *argv[])
 	  /*			printf("Unknown port %s\n", sa.sa_data);*/
 	} /* recv_packet true */
     } /* while(1) */
+
   close(skt);
+//  system("rm -f /var/run/axdigi.pid");
 }
 
 int recv_packet(unsigned char *buf, int size, unsigned char *port)
@@ -252,4 +299,3 @@ void get_interfaces(int skt)
 	}
     } /* for */
 }	
-		
diff --git a/calibrate b/calibrate
new file mode 100755
index 0000000..f6d3ace
Binary files /dev/null and b/calibrate differ
diff --git a/command.c b/command.c
index 53fbcbb..457522d 100644
--- a/command.c
+++ b/command.c
@@ -96,7 +96,7 @@ void node_prompt(const char *fmt, ...)
   if ((User.ul_type == AF_ROSE) && (check_perms(PERM_ANSI, 0L) != -1)) {
    axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m  \b");
   }
-  axio_flush(NodeIo);
+/*  axio_flush(NodeIo); */
 }
 
 void node_logout(char *reason)
@@ -795,7 +795,7 @@ int do_status(int argc, char **argv)
     axio_printf(NodeIo,"------------------ ---------- ---------- ---------- ----------\n");
     axio_printf(NodeIo,"Physical:          %-7d kB %-7d kB %-7d kB %3d %%\n", ma, mu, mf, (mu*100)/ma);
     
-    if  (!(mem = meminfo()) || mem[meminfo_stotal][meminfo_total] != 0) 
+    if  (!(mem = meminfo()) || mem[meminfo_stotal][meminfo_total] != 0)  
 { 
     sa = mem[meminfo_stotal][meminfo_total]; 
     su = (mem[meminfo_stotal][meminfo_total] - mem[meminfo_sfree][meminfo_total]);
@@ -803,7 +803,7 @@ int do_status(int argc, char **argv)
     axio_printf(NodeIo,"Swap:              %-7d kB %-7d kB %-7d kB %3d %%\n",sa,su,sf,(su*100)/sa);   
     } 
     else 
-/*    axio_printf(NodeIo,"Cannot get swap information!\n"); */
+    axio_printf(NodeIo,"Cannot get swap information!\n"); 
       axio_printf(NodeIo," ");
     
   }
diff --git a/config.h.in b/config.h.in
index 76a7e9e..6f8845d 100644
--- a/config.h.in
+++ b/config.h.in
@@ -10,6 +10,7 @@
 @HAVENETROM@
 @HAVEZLIB@
 @HAVEMHEARD@
+ at HAVEAUTOROUTE@
 @HAVETCPIP@
 #define	PROC_AX25_CALLS_FILE	"/proc/net/ax25_calls"
 
diff --git a/configure b/configure
index 68fde56..c238a02 100755
--- a/configure
+++ b/configure
@@ -14,12 +14,13 @@ echo "Cleaning the directory for a fresh configuration..."
 _sleep 2
 make distclean > make.debug
 
-ETC_DIR=/usr/local/etc/ax25
-SBIN_DIR=/usr/local/sbin
-BIN_DIR=/usr/local/bin
-LIB_DIR=/usr/local/lib
-MAN_DIR=/usr/local/share/man
-VAR_DIR=/usr/local/var/ax25
+[ "$ETC_DIR" ] || ETC_DIR=/usr/local/etc/ax25
+[ "$SBIN_DIR" ] || SBIN_DIR=/usr/local/sbin
+[ "$BIN_DIR" ] || BIN_DIR=/usr/local/bin
+[ "$LIB_DIR" ] || LIB_DIR=/usr/local/lib
+[ "$DATA_DIR" ] || DATA_DIR=/usr/local/share
+[ "$MAN_DIR" ] || MAN_DIR=/usr/local/share/man
+[ "$VAR_DIR" ] || VAR_DIR=/usr/local/var/ax25
 
 echo "Welcome to the configuration utility for URONode. This configure script"
 echo "will very simply and easily guide you into installling URONode with as"
@@ -81,6 +82,7 @@ fi
 	HAVENETROM="#undef HAVE_NETROM"
 	HAVEROSE="#undef HAVE_ROSE"
 	HAVEMHEARD="#undef HAVE_MHEARD"
+	HAVEAUTOROUTE="#undef HAVE_AUTOROUTE"
 	HAVETCPIP="#undef HAVE_TCPIP"
 	HAVEMOTD="#undef HAVE_MOTD"
 	MOTDPATH=
@@ -139,7 +141,7 @@ fi
 	if [ $? -ne 1 ]
 	then
 		HAVEAX25="#define HAVE_AX25	1"
-		HAVEROSE="#define HAVE_ROSE               1"
+		HAVEROSE="#define HAVE_ROSE	1"
 	fi
 	#
 #	echo -n "Include support for MHeard ports listen ? [Y/n]: "; read answer
@@ -156,6 +158,21 @@ fi
 		HAVEMHEARD="#define HAVE_MHEARD	1"
 	fi
 	#
+#       echo -n "Include support for ax25 AutoRouter ? [Y/n]: "; read answer
+#       if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ]
+        if [ "$NON_INTERACTIVE" = 1 ]
+        then
+                echo "$@" | grep -vqe "--without-autorouter"
+        else
+                whiptail --title "URONode Options:" --yesno "Support AutoRouter?" 7 23
+        fi
+        if [ $? -ne 1 ]
+        then
+                HAVEAX25="#define HAVE_AX25	1"
+                HAVEAUTOROUTE="#define HAVE_AUTOROUTE	1"
+        fi
+        #
+
 #	echo -n "Include support for TCP/IP functions ? [Y/n]: "; read answer
 #	if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ]
 	if [ "$NON_INTERACTIVE" = 1 ]
@@ -184,6 +201,7 @@ sed -e "s~@ARCH@~$ARCH~g; \
 	s~@SBIN_DIR@~$SBIN_DIR~g; \
 	s~@BIN_DIR@~$BIN_DIR~g; \
 	s~@VAR_DIR@~$VAR_DIR~g; \
+	s~@DATA_DIR@~$DATA_DIR~g; \
 	s~@MAN_DIR@~$MAN_DIR~g; \
 	s~@ZLIB@~$ZLIB~g" <Makefile.include.in >Makefile.include
 
@@ -195,11 +213,13 @@ sed -e "s~@ETC_DIR@~$ETC_DIR~g; \
 	s~@BIN_DIR@~$BIN_DIR~g; \
 	s~@VAR_DIR@~$VAR_DIR~g; \
 	s~@MAN_DIR@~$MAN_DIR~g; \
+	s~@DATA_DIR@~$DATA_DIR~g; \
 	s~@HAVEAX25@~$HAVEAX25~g; \
 	s~@HAVEFLEX@~$HAVEFLEX~g; \
 	s~@HAVENETROM@~$HAVENETROM~g; \
 	s~@HAVEROSE@~$HAVEROSE~g; \
 	s~@HAVEMHEARD@~$HAVEMHEARD~g; \
+	s~@HAVEAUTOROUTE@~$HAVEAUTOROUTE~g; \
 	s~@HAVETCPIP@~$HAVETCPIP~g; \
 	s~@HAVEMOTD@~$HAVEMOTD~g; \
 	s~@MOTDPATH@~$MOTDPATH~g; \
diff --git a/flexd.c b/flexd.c
index b82e5bd..663307a 100644
--- a/flexd.c
+++ b/flexd.c
@@ -117,7 +117,7 @@ void read_conf(void)
 int download_dest(char *gateway, char *fname)
 {
   FILE *tmp;
-  char buffer[1024], port[14], path[AX25_MAX_DIGIS*10];
+  char buffer[256], port[14], path[AX25_MAX_DIGIS*10];
   char *addr, *commands[10], *dlist[9]; /* Destination + 8 digipeaters */
   fd_set read_fd;
   int n, addrlen, cmd_send=0, cmd_ack=0, c, k;
@@ -390,6 +390,7 @@ void quit_handler(int sig)
   
   signal(SIGTERM, sigterm_defhnd);
   raise(SIGTERM);
+  return;
 }
 
 int main(int argc, char *argv[])
@@ -410,7 +411,7 @@ int main(int argc, char *argv[])
     return 1;
   }
 
-  signal(SIGTERM, quit_handler);
+//  signal(SIGTERM, quit_handler);
   pidfile = fopen(FLEXD_PID_FILE, "w");
   fprintf(pidfile, "%d\n", (int)getpid());
   fclose(pidfile);
@@ -420,8 +421,8 @@ int main(int argc, char *argv[])
   signal(SIGHUP, hup_handler);
   signal(SIGALRM, alarm_handler);
   sigterm_defhnd = signal(SIGTERM, quit_handler);
-  if (sigterm_defhnd == SIG_ERR)
-    sigterm_defhnd = SIG_DFL;
+//  if (sigterm_defhnd == SIG_ERR)
+//    sigterm_defhnd = SIG_DFL;
   alarm(poll_time); 
   
   for(;;) pause();
diff --git a/gateway.c b/gateway.c
index 603201d..5ee97a8 100644
--- a/gateway.c
+++ b/gateway.c
@@ -650,7 +650,7 @@ int do_connect(int argc, char **argv)
        else if (find_node(argv[1], NULL)!=NULL) { 
        family = AF_NETROM;
        } */
-	
+#ifdef HAVE_AUTOROUTE	
     else if ((ax=find_mheard(argv[1]))!=NULL) { /* Check Mheard database */
       k=1;
       /*	K2MF supplied code	*/
@@ -677,11 +677,14 @@ int do_connect(int argc, char **argv)
       argv[k]=NULL; 
       argc=k;
       family = AF_AX25;
-    } else {  /* Give up */
+
+    } 
+#endif
+      else {  /* Give up */
       if (User.ul_type == AF_NETROM) {
 	axio_printf(NodeIo,"%s} ", NodeId);
       }
-      axio_printf(NodeIo,"Remote not in Desti, NetRom, or MHeard tables. Retry your entry.");
+      axio_printf(NodeIo,"Remote not found, please retry your entry.");
       family = AF_UNSPEC;
       //      free_flex_dst(flx);
       //      free_ax_routes(ax);
@@ -771,6 +774,16 @@ int do_connect(int argc, char **argv)
     }
     axio_printf(NodeIo,"\nReturning you to the shell... ");
   } else
+      if ((User.ul_type == AF_AX25) && (!stay)) {
+  axio_flush(NodeIo);
+  axio_end_all();
+  logout_user();
+  ipc_close();
+  node_log(LOGLVL_LOGIN, "%s @ %s logged out", User.call, User.ul_name);
+  free_cmdlist(Nodecmds);
+  Nodecmds = NULL;
+  exit(0);
+  }
     if (User.ul_type == AF_AX25) {
       if (check_perms(PERM_ANSI, 0L) != -1) {
 	axio_printf(NodeIo,"\e[01;31m");
diff --git a/man/axdigi.8 b/man/axdigi.8
new file mode 100644
index 0000000..f764c6e
--- /dev/null
+++ b/man/axdigi.8
@@ -0,0 +1,52 @@
+.TH AXDIGI 8 "28 April 2013" Linux "Linux Programmer's Manual"
+.SH NAME
+axdigi \- axdigi file.
+.SH DESCRIPTION
+.LP
+.B axdigi
+This executable should be loaded in your startup script with the command:
+/usr/local/sbin/axdigi (or path to where you installed it). This file enables
+cross-port digipeating within your linux's ax25 stack.
+.LP
+Special Conditions:
+.B axdigi
+In order to digipeat, you or the user *must* know your SSID associated
+with the ifconfig <interface> that is the direct link to the outbound
+path they wish to digi to. axdigi will handle the appropriate digipeat
+accordingly. If you have multiple ax25 interfaces, you should somehow
+list them for the users in the axports description so they will see
+them when doing an "Interface" command while on URONode. If the user
+wishes to log off URONode and digi through, then they must use the
+interface's SSID associated with the OUTBOUND path to their destination.
+.sp
+commands are:
+.TP 14
+.B C <destination> via <your interface-SSID>
+If the user heard station A1BCD-7 on your ax0 interface, and that
+interface's SSID is: W1XYZ-9 (NOT the FlexID of URONode!) then the user
+would enter:
+c a1bcd-7 via w1xyz-9 
+even if their inbound interface might be ax1 and it's ifconfig shows 
+your SSID as w1xyz-10!
+.TP 14
+.B Detailed information
+If you have 3 ax25 interfaces ifconfigured as:
+ax0 - w1xyz-9
+ax1 - w1xyz-10
+ax2 - w1xyz-11
+
+User k2lmn would enter your node via ax2 and they wish to digi to
+a1bcd-7 which is heard on ax0 they would simply enter:
+c a1bcd-7 via w1xyz-9 to connect. Axdigi handles the crossport
+functions. If they tried:
+c a1bcd-7 via w1xyz-11
+the connect would fail because it would attempt to digi OUT on your
+ax2 interface. This may get tricky so expect a need to educate your
+users on this. Unfortunately, linux lacks native cross-port digipeating
+at this time so this is a work-around.
+.SH FILES
+.LP
+/usr/local/sbin/axdigi
+.SH "SEE ALSO"
+.BR axports (5),
+.BR ax25 (4).
diff --git a/man/axdigi.8.gz b/man/axdigi.8.gz
deleted file mode 100644
index a058441..0000000
Binary files a/man/axdigi.8.gz and /dev/null differ
diff --git a/man/flexd.8 b/man/flexd.8
new file mode 100644
index 0000000..0186d6a
--- /dev/null
+++ b/man/flexd.8
@@ -0,0 +1,28 @@
+.TH FLEXD 8 "FLEXNET ROUTING DAEMON" Linux "Linux System Managers Manual"
+.SH NAME
+flexd \- flexnet routing daemon backend for URONode.
+.SH SYNOPSIS
+.B routing daemon
+.SH DESCRIPTION
+.LP
+.B Flexd
+is a simple flexnet routing daemon back end. The purpose of this daemon is to
+import pc/FlexNet destinations into URONode for auto-ax25 routing.
+.SH COMMANDS
+There are no commands for flexd. The runtime parameters are in flexd.conf
+.SH FILES
+.LP
+.TP 5 
+.B /usr/local/etc/ax25/flexd.conf
+flexd configuration file.
+.br
+.SH AUTHOR
+Brian Rogers N1URO <n1uro at n1uro.com>
+.SH THANKS TO
+Stefano Noferi IZ5AWZ <iz5awz at radio-gw.cnuce.cnr.it>
+.br
+Tomi Manninen OH2BNS <tpmannin at cc.hut.fi>
+.br 
+Alan Cox GW4PTS <gw4pts at gw4pts.ampr.org>
+.br 
+Roy PE1RJA <roy at esrac.ele.tue.nl>
diff --git a/man/flexd.conf.5 b/man/flexd.conf.5
new file mode 100644
index 0000000..60c50cb
--- /dev/null
+++ b/man/flexd.conf.5
@@ -0,0 +1,51 @@
+.TH FLEXD.CONF 5 "28 April 2013" Linux "Linux Programmer's Manual"
+.SH NAME
+flexd.conf \- flexd configuration file.
+.SH DESCRIPTION
+.LP
+.B flexd.conf
+file is read by flexd at program startup and is used to modify the
+behaviour of the robot.
+.LP
+The lines within
+.B flexd.conf
+must either be a comment line, which starts with a # in the first column, or
+one of the commands listed below. Commands and arguments are delimited
+by white space. Arguments can contain white space if they are enclosed
+in double quotes. Also C-style escapes (\\n, \\x0A, \\012 etc.) are parsed
+within double quotes.
+.sp
+Available configuration commands are:
+.TP 14
+.B MyCall	<xx#xx>
+Sets up the callsign AND ssid you wish to use to connect to your flexnet
+neighbor for destinations import. Do NOT use an ssid of your ax25 interface
+which you'll be polling from as you may create a loop between your system
+and the flexnet neighbor.
+An example: MyCall	kb1uuu-13
+.TP 14
+.B PollInterval	<time/secs>
+This string tells the robot how many times in SECONDS to poll your flexnet
+neighbor and import their destination table. In my production environment
+300 (or 5 minutes) seemed to be fine. I would NOT go below 180 (3 minutes)
+as you may create more traffic than needed.
+.TP 14
+.B FlexGate	<xx#xx-##>
+This is the callsign of your flexnet neighbor. The robot will read this 
+callsign-ssid and attempt a connect to it every ## minutes assigned in
+PollInterval <time/mins>. Be sure you do NOT configure it to connect to
+a service linked within the flexnet neighbor such as a BBS! You will NOT
+receive any destinations to your system that way and the BBS will think
+you're attempting a feed.
+.TP 14
+
+
+
+.SH FILES
+.LP
+/usr/local/etc/ax25/flexd.conf
+.SH "SEE ALSO"
+.BR uronode (8),
+.BR uronode.perms (5),
+.BR axports (5),
+.BR ax25 (4).
diff --git a/man/flexd.conf.5.gz b/man/flexd.conf.5.gz
deleted file mode 100644
index efa7cc8..0000000
Binary files a/man/flexd.conf.5.gz and /dev/null differ
diff --git a/man/nodeusers.1 b/man/nodeusers.1
new file mode 100644
index 0000000..36456cd
--- /dev/null
+++ b/man/nodeusers.1
@@ -0,0 +1,36 @@
+.TH NODEUSERS 1 "28 April 1998" Linux "Linux Programmer's Manual"
+.SH NAME
+nodeusers \- URONode user information lookup program
+.SH SYNOPSIS
+.B nodeusers [-a] [-i] [-l]
+.SH DESCRIPTION
+.LP
+.B Nodeusers 
+displays information about current URONode users.
+.SH OPTIONS
+.TP 10
+.BI \-a
+Tells nodeusers to use a plain <CR> as end-of-line. This is useful
+if nodeusers is called from ax25d.
+.TP 10
+.BI \-i
+Tells nodeusers to use a <CR><LF> pair as end-of-line sequence and also
+to wait for one line of input before sending the user data. This
+should be used if nodeusers is used in an internet environment (eg. as
+a fingerd replacement).
+.TP 10
+.BI \-l
+Enables logging of errors to the system logging facility.
+.SH FILES
+.LP
+.TP 5
+.B /var/ax25/node/loggedin
+Database of current users.
+.SH "SEE ALSO"
+.BR uronode (8)
+.SH AUTHOR
+Brian Rogers N1URO <n1uro at n1uro.com>
+.br
+Stefano Noferi IZ5AWZ <iz5awz at radio-ge.cnuce.cnr.it>
+.br
+Tomi Manninen OH2BNS <tpmannin at cc.hut.fi>
diff --git a/man/nodeusers.1.gz b/man/nodeusers.1.gz
deleted file mode 100644
index f5e2430..0000000
Binary files a/man/nodeusers.1.gz and /dev/null differ
diff --git a/man/uronode.8 b/man/uronode.8
new file mode 100644
index 0000000..a6a7f08
--- /dev/null
+++ b/man/uronode.8
@@ -0,0 +1,245 @@
+.TH URONODE 8 "28 April 1998" Linux "Linux System Managers Manual"
+.SH NAME
+URONode \- Node front end for AX.25, NET/ROM, Rose and TCP
+.SH SYNOPSIS
+.B node
+.SH DESCRIPTION
+.LP
+.B URONode
+is a simple node front end, modelled after the node shells of LinuxNode,
+AWZNode, and Flexnode.
+.SH COMMANDS
+The following commands are supported for users of
+.B URONode:
+.TP 14
+.BI ?
+Give short list of available commands.
+.TP 14
+.BI Bye
+Disconnect user from the node.
+.TP 14
+.BI "Connect <call | alias> [s|d]                  For NETROM"
+.TP 14
+.BI "Connect <port> <call> [via <call1> ...] [d|s] For AX.25"
+.TP 14
+.BI "Connect <call> <address> [<digi>] [d|s]       For ROSE"
+.TP 14
+.BI "Connect <destination> [s|d]                   For FlexNet"
+.sp 1
+Initiates an AX25, NET/ROM, ROSE or Flexnet connection to a remote host. 
+If more than two parameters are entered and the second parameter is ten 
+charachers in length then it is interpreted as a ROSE connection, 
+otherwise the first parameter is interpreted as a port name and AX25 is 
+used to make the connection via that port. If only one parameter is given 
+the connection is made searching for the callsign in NET/ROM nodes, 
+in AX25 Fixed links, in FlexNet destinations and last in Mheard database 
+in this order.	
+.sp
+For a ROSE connection the <address> part must be exactly six or ten digits.
+If only six digits are supplied, the DNIC (first four digits) default to the
+local DNIC. The local DNIC is assumed to be that of the first configured
+Rose port in /etc/ax25/rsports.
+.sp
+The user may optionally supply as the last argument a single character
+which modifies the default behaviour on disconnection of the connection.
+If a single `s' is entered as the last argument, then when the remote host
+disconnects you will be returned to this node. If a single `d' is entered as
+the last argument, you will be disconnected from this node too. The Default
+behaviour (neither `s' nor `d' entered) is configured in the node configuration
+file and depends on the sysop preference.
+.TP 14
+.BI "CAllbook <call>[@<server>]"
+Retrieve data about a callsign from an internet-accessible
+callbook server. The server name can usually be omitted, since
+the default server configured by the operator is usually
+valid. The default setting can be overridden by specifying
+a host name.
+.TP 14
+.BI "Escape [<escape string>]"
+Override the sysop configured default escape character setting. If the Escape
+command is given without an argument then the current escape character setting
+is returned to the user. The escape string may be specified using any of the
+well known codings:
+.IP
+.BI "<char>"
+to enter the escape character in its binary form.
+.IP
+.BI "^C"
+to enter the escape character as a control character value.
+.IP
+.BI "NNN"
+to set the escape character to a Decimal value.
+.IP
+.BI "0xNN"
+to set the escape character to a HexaDecimal value.
+.IP
+.BI "0NNN"
+to set the escape character to an Octal value.
+.IP
+.BI "off"
+to disable the escape character.
+.TP 14
+.BI "Finger [<username>][@<hostname>]"
+Retrieve information about users of a system. If the user
+name is omitted, shows the users currently logged on the
+host. If the hostname is omitted, defaults to the local host.
+.TP 14
+.BI "Help [<command>]"
+Give help for the specified command or this text if no
+command is specified. Commands can not be abbreviated.
+Use the "?" command to retrieve a list of available commands.
+.TP 14
+.BI "HOst <hostname> | <ip address>"
+Give the Domain Name Service host name information about <hostname> or
+<ip address>.
+.TP 14
+.BI Info
+Display the version information and the contents of the
+/usr/local/etc/ax25/uronode.info file, which should describe any aspects
+of your system that you would like to brag about.
+.TP 14
+.BI INTerfaces
+Display the node's interface schema, most folks often call these "ports".
+.TP 14
+.BI "Links [d | n | v | <call>]"
+Shows the AX25 link table of the local node. The destinations 
+on this list can be reached using the Connect command without 
+knowing the actual network path used (assuming the network is OK).
+
+The optional parameter d show the AX25 nodes directly linked.
+The optional parameter n show the AX25 nodes linked connecting 
+another node and passing a string like "C XX0XX".
+The optional parameter v show the AX25 links via digipeaters.
+
+You can also specify a destination callsign to get the verbose 
+information for a single destination.
+.TP 14
+.BI "Mheard [<portname>]"
+Give a list of heard AX.25 stations on the specified port.
+.TP 14
+.BI "Nodes [* | <node>]"
+Show the NET/ROM node table of the local host. The nodes on this
+list can be reached using the Connect command without knowing the
+actual network path used (assuming the network is OK).
+.sp
+The optional argument '*' toggles verbose mode, showing the
+Obsolescence counter, relative path quality and the port and
+neighbour node used to reach each node. You can also specify
+a node callsign to get the verbose information for a single node.
+In that case a "which" field that tells what route the kernel
+will use to reach the node is also shown.
+.TP 14
+.BI "Ping <host> [<size>]"
+Check if a host can be reached trough the network by sending
+an ICMP Echo Request packet to the host and waiting for it to
+reply. If a reply is received the round-trip-time (RTT)
+between the local and remote hosts is shown.
+.sp
+If an optional length is specified the data portion of the
+packet is filled with length number of bytes.
+.TP 14
+.BI Routes
+Shows the NET/ROM route table of the local host (eg. the nodes
+which the local node directly talks with). These nodes are used
+to reach the other nodes on the node table. Fields shown are:
+.IP
+.BI "Link"
+Is there an AX25 connection active to this node.
+.IP
+.BI "Port"
+Which port is this route on.
+.IP
+.BI "Callsign"
+The callsign of the neighbour node.
+.IP
+.BI "Quality"
+A relative quality for the path (0-255).
+.IP
+.BI "Destinations"
+Number of other nodes reached via this route.
+.IP
+.BI "Lock"
+Is the quality of this route locked by the operator.
+.IP
+.BI "QSO"
+Number of NET/ROM session enties.
+.TP 14
+.BI "Telnet <host> [<port>] [<string>] [d|s]"
+Initiate a telnet session to a remote host using TCP/IP.
+By default, the telnet command connects to the TCP port 23
+(allocated for telnet). You can specify another TCP port or
+a TCP port name.
+.sp
+If an optional third argument <string> is given, that string, followed
+by a CRLF is sent to the remote host right after the connection is
+established. This is mainly useful for command aliases.
+.sp
+If a single `s' is entered as the last parameter, then when
+the remote host disconnects you will be returned to this node.
+If a single `d' is entered as the last parameter, you will
+be disconnected from this node too. Default behaviour (neither
+`s' nor `d' entered) depends on sysop configuration.
+.TP 14
+.BI "MSG <user> <message>"
+Send a message to another user of the node. The user
+in question must be in idle state (ie. not connected/connecting
+anywhere or running a program).
+.sp
+If the user has an SSID other than zero, the SSID must be
+specified. If multiple users are logged in with the same
+callsign/SSID pair, those who are in idle state, get the message.
+.TP 14
+.BI Users
+Show a list of users currently connected to the local node,
+where the users are coming from, and what are they doing at the
+moment.
+.SH FILES
+.LP
+.TP 5 
+.B /usr/local/etc/ax25/uronode.conf
+URONode configuration file.
+.br
+.TP 5
+.B /usr/local/etc/ax25/uronode.perms
+URONode permissions file.
+.br
+.TP 5
+.B /usr/local/etc/ax25/uronode.users
+URONode users settings file.
+.br
+.TP 5
+.B /usr/local/etc/ax25/uronode.motd
+URONode message of the day file.
+.br
+.TP 5 
+.B /usr/local/etc/ax25/uronode.info
+The response to the 'info' command.  
+This file should be edited to reflect the local configuration.
+.br
+.TP 5 
+.B /usr/local/var/ax25/node/loggedin
+Database of current users.
+.br
+.TP 5
+.B /usr/local/var/ax25/mheard/mheard.dat
+Information about AX.25 stations heard.
+.br
+.TP 5 
+.B /usr/local/var/ax25/node/help/*.hlp
+The online help files.
+.SH "SEE ALSO"
+.BR uronode.conf (5),
+.BR uronode.perms (5),
+.BR axports (5),
+.BR ax25d (8),
+.BR mheardd (8).
+.SH AUTHOR
+Brian Rogers N1URO <n1uro at n1uro.com>
+.SH THANKS TO
+Stefano Noferi IZ5AWZ <iz5awz at radio-gw.cnuce.cnr.it>
+.br
+Tomi Manninen OH2BNS <tpmannin at cc.hut.fi>
+.br 
+Alan Cox GW4PTS <gw4pts at gw4pts.ampr.org>
+.br 
+Roy PE1RJA <roy at esrac.ele.tue.nl>
diff --git a/man/uronode.8.gz b/man/uronode.8.gz
deleted file mode 100644
index 7d2e410..0000000
Binary files a/man/uronode.8.gz and /dev/null differ
diff --git a/man/uronode.conf.5 b/man/uronode.conf.5
new file mode 100644
index 0000000..7e8571f
--- /dev/null
+++ b/man/uronode.conf.5
@@ -0,0 +1,252 @@
+.TH URONODE.CONF 5 "28 April 1998" Linux "Linux Programmer's Manual"
+.SH NAME
+uronode.conf \- URONode configuration file.
+.SH DESCRIPTION
+.LP
+.B uronode.conf
+file is read by URONode at program startup and is used to modify the
+behaviour of the node. The URONode node.conf is no compatible with
+the LinuxNode file, as it add new entries: FlexId Prompt and PassPromt.
+.LP
+The lines within
+.B uronode.conf
+must either be a comment line, which starts with a # in the first column, or
+one of the commands listed below. Commands and arguments are delimited
+by white space. Arguments can contain white space if they are enclosed
+in double quotes. Also C-style escapes (\\n, \\x0A, \\012 etc.) are parsed
+within double quotes. Tabs may also be used for delimiting columns.
+.sp
+Available configuration commands are:
+.TP 14
+.B Alias <NAme> \(lq<command> [<args...>]\(rq
+Sets up a command alias. The number of uppercase characters at the
+beginning of <NAme> specifies how much the user may abbreviate the
+command. The uppercase part should be long enough to separate the command
+from other commands starting with the same letters. If there are no
+uppercase letters in the beginning, the whole name is converted to upper
+case and user can not abbreviate the command.
+The command and arguments are subject to
+.B parameter expansion
+(see below).
+.TP 14
+.B ConnTimeout <timeout>
+When user is connected to another system via this system and the
+connection is idle (no data flowing in either direction) for <timeout>
+seconds the connection is dropped and user disconnected from node.
+Default is 3600 seconds
+(1 hour).
+.TP 14
+.B Email	<your at node.ampr.org>
+This is your amprnet or commercial email address that's displayed
+to users on interfaces you require having a password on to access
+your node, highly suggested on inet interfaces. You may leave
+off the <>'s. If you do not have an Email line in node.conf
+then your email address to users will display as (null) and
+will make you look sloppy :-)
+.TP 14
+.B EscapeChar <escape>
+Specifies the escape character. <escape> should be the decimal 
+representation of the ASCII code of the wanted escape character.
+Setting escape character to \-1 disables the feature altogether.
+The default is 20 (ctrl-t).
+.sp
+Note that the escape mechanism breaks 8-bit transparency of URONode
+and you should either disable it or set the no-escape flag in node.perms
+for the forwarding stations if (compressed) forward is run trough
+URONode.
+.TP 14
+.B ExtCmd <NAme> <flags> <uid> <exec> <args...>
+.RS
+.TP 10
+.B NAme
+This is the name under which the command appears at nodes command list.
+The number of uppercase characters at the beginning of <NAme> specifies
+how much the user may abbreviate the command.
+The uppercase part should be long enough to separate the command
+from other commands starting with the same letters. If there are no
+uppercase letters in the beginning, the whole name is converted to upper
+case and user can not abbreviate the command.
+.TP 10
+.B flags
+This is a sum of flags that control the way the external
+command is executed. Currently two flags are implemented:
+.RS
+.TP 5
+.B 1
+Run command through pipe. Without this flag node just fork()s and exec()s
+the specified command and then waits for it to terminate. The command must
+it self be aware about the underlying protocol. It must handle packetising
+and any end of line conversions. With this flag however node sets up a pipe
+between it self and the command and handles packetising and end of line
+conversions for it.
+.TP 5
+.B 2
+Reconnected to flag. If this flag is set, the user gets a reconnected to
+prompt after the external command is finished.
+.RE
+.TP 10
+.B uid
+This is the userid that the following command should run under when
+executing.
+.TP 10
+.B exec
+This is the executable that should be executed.
+.TP 10
+.B args...
+These are the optional arguments that are passed to the executable.
+The arguments are subject to
+.SM
+.B "parameter expansion"
+(see below).
+.RE
+.TP 14
+.B HiddenPorts <portname> ...
+Marks <portname> as hidden. Hidden ports are not shown to users in
+Links, Mheard, Ports and Routes commands and can not be used to make
+AX.25 downlink connections unless user is specially permitted to do
+so (see node.perms(5)). Up to 32 hidden ports can be specified with
+this command.
+.TP 14
+.B HostName <hostname>
+This is the visible hostname of the node. It will be shown at telnet
+login and in the node welcome message.
+.TP 14
+.B IdleTimeout <timeout>
+After <timeout> seconds of inactivity while waiting for a command user
+is disconnected from node. Default is 900 seconds (15 mins).
+.TP 14
+.B LocalNet <network>
+Defines a "local" network. Users telneting from hosts in this network
+are treated separately (see node.perms(5)). <network> is a KA9Q NOS
+style network address consisting of a dotted quad ip address of the
+network and a number of significant bits separated by a slash. Note
+that 127.0.0.0/8 (loopback net) is also considered "local" by default.
+.TP 14
+.B LogLevel <loglevel>
+Specifies what node should log. The available levels are:
+.RS
+.TP 5
+.B 0
+Don't log anything.
+.TP 5
+.B 1
+Log only critical errors.
+.TP 5
+.B 2
+Log errors and logins/logouts.
+.TP 5
+.B 3
+Log errors, logins/logouts and all gateway commands.
+.LP
+Default is to log only critical errors.
+.RE
+.TP 14
+.B NodeId <nodeid>
+This is the node id that is shown in every message from node. Default
+is "URONode".
+.TP 14
+.B FlexID <flexid>
+This is typically your ax25 callsign-ssid that links to flexnet and/or
+to your user interface set by the sysop in ax25d.conf.
+.TP 14
+.B RoseID <rosecall at dnic,######>
+This is your node's rosecall-ssid and your full dnic number typically
+consisting of your country code, area code, and phone extension. An
+example is: 3100,860906. The full string would be for this part of
+the conf file using my config: RoseID n1uro-8 at 3100860906 or if you do not
+use rose enter: RoseID none
+.TP 14
+.B NrPort <portname>
+This is the name of the netrom port that is used when making outgoing
+netrom connects. Normally it should match the portname that is used
+in ax25d.conf to listen for incoming netrom calls. Default is the first
+netrom port.
+.TP 14
+.B ReConnect on|off
+ReConnect flag. If this is on, users gatewaying to another host
+get reconnected to this node after the remote host closes connection.
+If it's off connection to the user will also be closed. User can
+override the default behaviour with a single `s' or `d' at the end
+of the gatewaying command (connect or telnet). Default is off.
+.TP 14
+.B Prompt <NodePrompt>
+This is the prompt string of the node. It's delimited by double quotes.
+You can use also a "\\n" character for a multi-lines prompt.
+.TP 14
+.B PassPrompt <PasswordPrompt>
+This is the prompt string for sysop password request.  It's delimited by 
+double quotes. You can use also a "\\n" character for a multi-lines prompt.
+.SH PARAMETER EXPANSION
+.LP
+The arguments passed to the real command by the Alias and ExtCmd
+commands are subject to parameter expansion. If a word starts with a %,
+it is expanded. The following formats are expanded:
+.TP 14
+.B %parameter
+This is substituted with the value of
+.B parameter
+.
+.TP 14
+.B %{parameter}
+The same as above.
+.TP 14
+.B %{parameter:default}
+If
+.B parameter
+is defined this is susbtituted with the value of it. If not, the default
+value is substituted. This currently applies only to positional parameters
+0...9.
+.LP
+The following parameters are defined:
+.LP
+.TP 8
+.B 0...9
+The positional parameters.
+.TP 8
+.B U
+The username (callsign) of the remote station in upper case without the SSID.
+.TP 8
+.B u
+The username (callsign) of the remote station in lower case without the SSID.
+.TP 8
+.B S
+The username (callsign) of the remote station in upper case with the SSID.
+.TP 8
+.B s
+The username (callsign) of the remote station in lower case with the SSID.
+.TP 8
+.B P
+The nodename (callsign) of the remote station (NET/ROM), the portname the
+user is coming in via (AX.25) or the ip address of the remote host (TCP).
+In upper case without the SSID.
+.TP 8
+.B p
+The nodename (callsign) of the remote station (NET/ROM), the portname the
+user is coming in via (AX.25) or the ip address of the remote host (TCP).
+In lower case without the SSID.
+.TP 8
+.B R
+The nodename (callsign) of the remote station (NET/ROM), the portname the
+user is coming in via (AX.25) or the ip address of the remote host (TCP).
+In upper case with the SSID.
+.TP 8
+.B r
+The nodename (callsign) of the remote station (NET/ROM), the portname the
+user is coming in via (AX.25) or the ip address of the remote host (TCP).
+In lower case with the SSID.
+.TP 8
+.B t
+The type of the user connection (ax25, netrom, rose, inet, host) in lower case.
+.TP 8
+.B T
+The type of the user connection (ax25, netrom, rose, inet, host) in upper case.
+.LP
+Anything else after a % is substituted with a %.
+.SH FILES
+.LP
+/usr/local/etc/ax25/uronode.conf
+.SH "SEE ALSO"
+.BR uronode (8),
+.BR uronode.perms (5),
+.BR axports (5),
+.BR ax25 (4).
diff --git a/man/uronode.conf.5.gz b/man/uronode.conf.5.gz
deleted file mode 100644
index 5ab80b0..0000000
Binary files a/man/uronode.conf.5.gz and /dev/null differ
diff --git a/man/uronode.perms.5 b/man/uronode.perms.5
new file mode 100644
index 0000000..470b51f
--- /dev/null
+++ b/man/uronode.perms.5
@@ -0,0 +1,117 @@
+.TH URONODE.PERMS 5 "28 April 1998" Linux "Linux Programmer's Manual"
+.SH NAME
+uronode.perms \- URONode permissions file.
+.SH DESCRIPTION
+.LP
+.B URONode.perms
+file is read at program startup with the knowledge of users username
+(call), connection type (AX.25, NET/ROM, ROSE, TCP/IP), peers IP address
+(for TCP/IP) and port name (for AX.25). The first entry matching this
+information is taken and user is asked for password and given permissions
+according to it.
+.LP
+The lines within
+.B uronode.perms
+must either be a comment line, which starts with a # in the first column, or
+a permission entry in the following format, each field being delimited by
+white space:
+.sp
+.RS
+username type portname password permissions
+.RE
+.sp
+The field descriptions are:
+.sp
+.TP 14
+.B username
+This is matched against users username (call) without SSID. An asterisk
+(*) matches any username.
+.TP 14
+.B type
+This is matched against the type of the connection to user.
+Possible values for this field are:
+.RS 14
+.TP
+.B *
+matches any type of connection.
+.TP
+.B ax25
+matches users coming in with AX.25 and FlexNet.
+.TP
+.B netrom
+matches users coming in with NET/ROM.
+.TP
+.B rose
+matches users coming in with ROSE.
+.TP
+.B local
+matches TCP/IP connections where users host is in "local" network
+as defined in uronode.conf(5).
+.TP
+.B ampr
+matches TCP/IP connections where users host is in amprnet (44.0.0.0/8).
+.TP
+.B inet
+matches TCP/IP connections where users host is neither in "local"
+network nor in amprnet.
+.TP
+.B host
+matches users starting URONode from
+shell.
+.RE
+.TP 14
+.B portname
+If user is coming in with AX.25 this field is matched against the
+local port name the user is coming in via. An asterisk (*) matches
+any port name.
+.TP 14
+.B password
+If the previous three fields match and this field is not a single
+asterisk (*) the user is asked for a password. The password is
+then matched against this field.
+.TP 14
+.B permissions
+This field represents a a bitmask of operations the user is permitted
+to do. It is a sum of the values listed here:
+.RS 14
+.TP
+.B 1
+permits logging in even if no other permissions are given.
+.TP
+.B 2
+permits outgoing AX.25 and Flexnet connects.
+.TP
+.B 4
+permits outgoing NET/ROM connects.
+.TP
+.B 8
+permits telneting to hosts in the "local" network as defined in
+uronode.conf(5).
+.TP
+.B 16
+permits telneting to hosts in amprnet.
+.TP
+.B 32
+permits telneting to hosts neither in the "local" network nor in amprnet.
+.TP
+.B 64
+ANSI Color flag. Enable per interface to allow the user to have ANSI color
+graphics on their terminal. A "*" for the interface will flag color ON for
+all interfaces for that callsign. Suggested to leave OFF unless requested
+by the end user... but looks kewl in a shell terminal.
+.TP
+.B 128
+permits outgoing ROSE connects.
+.TP
+.B 256
+The no-escape flag. Disables the escape mechanism for this user.
+.TP
+.RE
+.SH FILES
+.LP
+/usr/local/etc/ax25/uronode.perms
+.SH "SEE ALSO"
+.BR uronode (8),
+.BR uronode.conf (5),
+.BR axports (5),
+.BR ax25 (4).
diff --git a/man/uronode.perms.5.gz b/man/uronode.perms.5.gz
deleted file mode 100644
index 9e88876..0000000
Binary files a/man/uronode.perms.5.gz and /dev/null differ
diff --git a/node.c b/node.c
index f1ebafc..be6ff87 100644
--- a/node.c
+++ b/node.c
@@ -239,7 +239,7 @@ int main(int argc, char *argv[])
   if (User.call[0] == 0) {
     axio_printf(NodeIo,"(%s:uronode) login: ", HostName);
     axio_flush(NodeIo);
-    alarm(60L);			/* 1 min timeout */
+    alarm(180L);		/* 3 min timeout */
     if ((p = axio_getline(NodeIo)) == NULL)
       node_logout("User disconnected");
     alarm(0L);
@@ -259,8 +259,8 @@ int main(int argc, char *argv[])
     node_log(LOGLVL_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name);
     node_logout("Login denied");
   } else if (strcmp(pw, "*") != 0) {
-    node_msg("*** Password required! If you don't have a password please email\r\n%s for a password you wish to use.", Email);
-    axio_printf(NodeIo,"\rPassword: ");
+    axio_printf(NodeIo,"*** Password required! If you don't have a password please email\n%s for a password you wish to use.", Email);
+    axio_printf(NodeIo,"\nPassword: ");
     if (User.ul_type == AF_INET) {
       axio_tn_will_echo(NodeIo);
       axio_eolmode(NodeIo, EOLMODE_BINARY);
@@ -272,6 +272,9 @@ int main(int argc, char *argv[])
       axio_eolmode(NodeIo, EOLMODE_TEXT);
       /*			axio_puts("\n",NodeIo); */
     }
+   if ((User.ul_type == AF_NETROM) && (strcmp(p, pw) == 0)) {
+      node_msg("%s} Welcome.", NodeId);
+   }
     if (p == NULL || strcmp(p, pw) != 0) {
       axio_printf(NodeIo, "\n");
       if (User.ul_type == AF_NETROM) {
@@ -301,7 +304,7 @@ int main(int argc, char *argv[])
       if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
 	while (fgets(buf,256, fp) != NULL) axio_puts(buf,NodeIo);
 	axio_printf (NodeIo, "\n");
-	axio_flush(NodeIo);
+/*	axio_flush(NodeIo); */
       }
     } else if (User.ul_type == AF_AX25) { 
       if (check_perms(PERM_ANSI, 0L) != -1) {
@@ -311,14 +314,14 @@ int main(int argc, char *argv[])
       if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
 	while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo);
 	axio_puts ("\n",NodeIo);
-	axio_flush(NodeIo);
+/*	axio_flush(NodeIo); */
       } 
     } else if (User.ul_type == AF_ROSE) {
 	node_msg("%s - Welcome to %s", VERSION, RoseId);
         if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
         while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo);
         axio_puts ("\n",NodeIo);
-        axio_flush(NodeIo);
+/*        axio_flush(NodeIo); */
       }      
     }
   lastlog();
@@ -327,7 +330,7 @@ int main(int argc, char *argv[])
   while (1) { if (User.ul_type != AF_NETROM) {
       axio_flush(NodeIo);
       if (check_perms(PERM_ANSI, 0L) != -1) {
-	axio_printf(NodeIo,"\e[01;34");
+	axio_printf(NodeIo,"\e[01;34m");
       }
       if (no_password == 2) 	{ 
 	node_prompt();
diff --git a/node.h b/node.h
index 20a0f87..e2d5375 100644
--- a/node.h
+++ b/node.h
@@ -1,5 +1,5 @@
-#define VERSION                "URONode v2.3.1"
-#define COMPILING	       "February 14, 2015"
+#define VERSION                "URONode v2.4"
+#define COMPILING	       "November 21, 2015"
 
 #define STATE_IDLE	0
 #define STATE_TRYING	1
diff --git a/router.c b/router.c
index e68f54c..2132148 100644
--- a/router.c
+++ b/router.c
@@ -95,9 +95,24 @@ int do_links(int argc, char **argv)
     }
     return 0;
   }
-  
-  
-  
+/*  
+   // "links r" 
+  if ((*argv[1]=='r') && (strlen(argv[1])==1)) {
+    node_msg("ROSE Links:");
+    if (check_perms(PERM_ANSI, 0L) != -1) {
+      axio_printf(NodeIo, "\e[0;m");
+    }
+    axio_printf(NodeIo,"Call      Dnic      Interf  Description\n");
+    axio_printf(NodeIo,"--------- --------- ------- -----------");
+    for(p=axrt;p!=NULL;p=p->next)
+      {  if (*p->conn_type==CONN_TYPE_ROSE)  axio_printf(NodeIo,"\n%-9s %-9s  %-7s %s", p->dest_call, p->alias, p->dev, p->description); }
+    free_ax_routes(axrt);
+    if (User.ul_type == AF_NETROM) {
+      node_msg("");
+    }
+    return 0;
+  }
+*/  
   /* "links v" */
   if ((*argv[1]=='v') && (strlen(argv[1])==1)) {
     node_msg("AX25 Links via digipeaters:");
diff --git a/sysinfo.c b/sysinfo.c
index 564164c..884eaca 100644
--- a/sysinfo.c
+++ b/sysinfo.c
@@ -110,7 +110,7 @@ int loadavg(double *av1, double *av5, double *av15) {
    labels which do not *begin* with digits, though.
 */
 
-#define MAX_ROW 27	/* these are a little liberal for flexibility */
+#define MAX_ROW 22	/* these are a little liberal for flexibility */
 #define MAX_COL 2
 
 unsigned** meminfo(void) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/uronode.git



More information about the pkg-hamradio-commits mailing list