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@ +@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@n1uro.com> +.SH THANKS TO +Stefano Noferi IZ5AWZ <iz5awz@radio-gw.cnuce.cnr.it> +.br +Tomi Manninen OH2BNS <tpmannin@cc.hut.fi> +.br +Alan Cox GW4PTS <gw4pts@gw4pts.ampr.org> +.br +Roy PE1RJA <roy@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@n1uro.com> +.br +Stefano Noferi IZ5AWZ <iz5awz@radio-ge.cnuce.cnr.it> +.br +Tomi Manninen OH2BNS <tpmannin@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@n1uro.com> +.SH THANKS TO +Stefano Noferi IZ5AWZ <iz5awz@radio-gw.cnuce.cnr.it> +.br +Tomi Manninen OH2BNS <tpmannin@cc.hut.fi> +.br +Alan Cox GW4PTS <gw4pts@gw4pts.ampr.org> +.br +Roy PE1RJA <roy@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@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@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@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) {