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 #include +#include #include +/* added by N1URO */ +#include 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 @@ -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/debian/patches/folder-update b/debian/patches/folder-update index bc3435e..c708e6b 100644 --- a/debian/patches/folder-update +++ b/debian/patches/folder-update @@ -11,22 +11,24 @@ Last-Update: 2015-10-16 _sleep() { [ "$NON_INTERACTIVE" = 1 ] || sleep "$@" -@@ -14,12 +14,12 @@ +@@ -14,13 +14,13 @@ _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/ax25 -+SBIN_DIR=/usr/sbin -+BIN_DIR=/usr/bin -+LIB_DIR=/usr/lib -+MAN_DIR=/usr/share/man -+VAR_DIR=/var/lib/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 ++[ "$ETC_DIR" ] || ETC_DIR=/etc/ax25 ++[ "$SBIN_DIR" ] || SBIN_DIR=/usr/sbin ++[ "$BIN_DIR" ] || BIN_DIR=/usr/bin ++[ "$LIB_DIR" ] || LIB_DIR=/usr/lib ++[ "$DATA_DIR" ] || DATA_DIR=/usr/share ++[ "$MAN_DIR" ] || MAN_DIR=/usr/share/man ++[ "$VAR_DIR" ] || VAR_DIR=/var/lib/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" diff --git a/debian/patches/series b/debian/patches/series index 5dd5f6e..5113b0a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,6 +1,5 @@ remove-cflags folder-update -no-install-gz-manpages install-dir-creation makefile-install-locations 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 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 via +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 +.SH THANKS TO +Stefano Noferi IZ5AWZ +.br +Tomi Manninen OH2BNS +.br +Alan Cox GW4PTS +.br +Roy PE1RJA 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 +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