Imported Upstream version 2.4

This commit is contained in:
Dave Hibberd 2015-11-22 14:56:30 +00:00
parent 4013fe89db
commit 0ed015b5b0
27 changed files with 1021 additions and 46 deletions

View File

@ -1,4 +1,3 @@
28/11/2008 v1.0.8 28/11/2008 v1.0.8
*notes lost, sorry. *notes lost, sorry.
@ -600,7 +599,104 @@ to the README file as well.
Changed the version in node.h to reflect this security patch. 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: Known NON-Critical Bugs:
Status memory/swap reporting fix Status memory/swap reporting fix

View File

@ -62,7 +62,7 @@ if you use inetd -
/etc/inetd.conf could have something like this in it: /etc/inetd.conf could have something like this in it:
# Listen at telnet port -> URONode # 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 - if you use xinetd -
/etc/xinetd.d/uronode should look like this: /etc/xinetd.d/uronode should look like this:
@ -72,7 +72,7 @@ service uronode
disable = no disable = no
socket_type = stream socket_type = stream
protocol = tcp protocol = tcp
user = nobody user = root
server = /usr/local/sbin/uronode server = /usr/local/sbin/uronode
wait = no wait = no
instances = 20 instances = 20

View File

@ -55,20 +55,19 @@ installconf: installhelp
installman: installman:
install -m 755 -D -d $(MAN_DIR)/man1 $(MAN_DIR)/man5 $(MAN_DIR)/man8 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/nodeusers.1 $(MAN_DIR)/man1
install -m 644 -p man/uronode.conf.5.gz $(MAN_DIR)/man5 install -m 644 -p man/uronode.conf.5 $(MAN_DIR)/man5
install -m 644 -p man/uronode.perms.5.gz $(MAN_DIR)/man5 install -m 644 -p man/uronode.perms.5 $(MAN_DIR)/man5
install -m 644 -p man/flexd.conf.5.gz $(MAN_DIR)/man5 install -m 644 -p man/flexd.conf.5 $(MAN_DIR)/man5
install -m 644 -p man/uronode.8.gz $(MAN_DIR)/man8 install -m 644 -p man/uronode.8 $(MAN_DIR)/man8
install -m 644 -p man/axdigi.8.gz $(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 upgrade: installman
install -m 755 -p uronode $(SBIN_DIR) install -m 755 -p uronode $(SBIN_DIR)
install -m 755 -p nodeusers $(SBIN_DIR) install -m 755 -p nodeusers $(SBIN_DIR)
install -m 755 -p flexd $(SBIN_DIR) install -m 755 -p flexd $(SBIN_DIR)
install -m 755 -p axdigi $(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: clean:
rm -f *.o *~ *.bak *.orig make.debug nodeusers uronode flexd axdigi 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) $(LD) $(LDFLAGS) -o flexd $(FLEXD_OBJS) $(LIBS) $(ZLIB)
axdigi: $(DIGI_OBJS) axdigi: $(DIGI_OBJS)
$(LD) $(LDFLAGS) -o axdigi $(DIGI_OBJS) $(LD) $(LDFLAGS) -o axdigi $(DIGI_OBJS) $(LIBS)
ifeq (.depend,$(wildcard .depend)) ifeq (.depend,$(wildcard .depend))
include .depend include .depend

View File

@ -1,6 +1,7 @@
/* /*
* axdigi: Cross and straight port digipeater program * axdigi: Cross and straight port digipeater program
* Copyright (C) 1995 Craig Small VK2XLZ * Copyright (C) 1995 Craig Small VK2XLZ
* modificatioins 2012-present Brian N1URO
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -32,7 +33,10 @@
/* below added by N1URO */ /* below added by N1URO */
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <signal.h>
#include <linux/ax25.h> #include <linux/ax25.h>
/* added by N1URO */
#include <netax25/daemon.h>
int recv_packet(unsigned char *buf, int size, unsigned char *port); int recv_packet(unsigned char *buf, int size, unsigned char *port);
void print_call(unsigned char *buf); void print_call(unsigned char *buf);
@ -48,12 +52,26 @@ void get_interfaces(int skt);
#define REPEATED 0x80 /* Has-been-repeated bit */ #define REPEATED 0x80 /* Has-been-repeated bit */
#define MAX_PORTS 16 #define MAX_PORTS 16
#define VERSION "0.2" #define VERSION "0.2"
#define AXDIGI_PID_FILE "/var/run/axdigi.pid"
int port_count = 0; int port_count = 0;
unsigned char portname[MAX_PORTS][20]; unsigned char portname[MAX_PORTS][20];
unsigned char portcall[MAX_PORTS][8]; 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[]) int main(int argc, char *argv[])
{ {
@ -63,12 +81,27 @@ int main(int argc, char *argv[])
struct sockaddr sa; struct sockaddr sa;
int asize; 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 */ /* Check our huge range of flags */
if (argc > 1) if (argc > 1)
{ {
if (strcmp(argv[1], "-v") == 0 || strcmp(argv[1], "-h") ==0) 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("axdigi comes with ABSOLUTELY NO WARRANTY.\n");
printf("This is free software, and you are welcome to redistribute it\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"); 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"); printf("(at your option) any later version.\n");
return 0; 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 */ /* Change to keep code more modern - N1URO */
if ((skt = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_AX25))) == -1) if ((skt = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_AX25))) == -1)
{ {
perror("socket"); perror("socket");
return(1); return(1);
} }
pidfile = fopen(AXDIGI_PID_FILE, "w");
fprintf(pidfile, "%d\n", (int)getpid());
fclose(pidfile);
get_interfaces(skt); get_interfaces(skt);
while(1) while(1)
@ -107,7 +152,9 @@ int main(int argc, char *argv[])
/* printf("Unknown port %s\n", sa.sa_data);*/ /* printf("Unknown port %s\n", sa.sa_data);*/
} /* recv_packet true */ } /* recv_packet true */
} /* while(1) */ } /* while(1) */
close(skt); close(skt);
// system("rm -f /var/run/axdigi.pid");
} }
int recv_packet(unsigned char *buf, int size, unsigned char *port) int recv_packet(unsigned char *buf, int size, unsigned char *port)
@ -252,4 +299,3 @@ void get_interfaces(int skt)
} }
} /* for */ } /* for */
} }

BIN
calibrate Executable file

Binary file not shown.

View File

@ -96,7 +96,7 @@ void node_prompt(const char *fmt, ...)
if ((User.ul_type == AF_ROSE) && (check_perms(PERM_ANSI, 0L) != -1)) { if ((User.ul_type == AF_ROSE) && (check_perms(PERM_ANSI, 0L) != -1)) {
axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m \b"); axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m \b");
} }
axio_flush(NodeIo); /* axio_flush(NodeIo); */
} }
void node_logout(char *reason) void node_logout(char *reason)
@ -795,7 +795,7 @@ int do_status(int argc, char **argv)
axio_printf(NodeIo,"------------------ ---------- ---------- ---------- ----------\n"); axio_printf(NodeIo,"------------------ ---------- ---------- ---------- ----------\n");
axio_printf(NodeIo,"Physical: %-7d kB %-7d kB %-7d kB %3d %%\n", ma, mu, mf, (mu*100)/ma); 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]; sa = mem[meminfo_stotal][meminfo_total];
su = (mem[meminfo_stotal][meminfo_total] - mem[meminfo_sfree][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); axio_printf(NodeIo,"Swap: %-7d kB %-7d kB %-7d kB %3d %%\n",sa,su,sf,(su*100)/sa);
} }
else else
/* axio_printf(NodeIo,"Cannot get swap information!\n"); */ axio_printf(NodeIo,"Cannot get swap information!\n");
axio_printf(NodeIo," "); axio_printf(NodeIo," ");
} }

View File

@ -10,6 +10,7 @@
@HAVENETROM@ @HAVENETROM@
@HAVEZLIB@ @HAVEZLIB@
@HAVEMHEARD@ @HAVEMHEARD@
@HAVEAUTOROUTE@
@HAVETCPIP@ @HAVETCPIP@
#define PROC_AX25_CALLS_FILE "/proc/net/ax25_calls" #define PROC_AX25_CALLS_FILE "/proc/net/ax25_calls"

34
configure vendored
View File

@ -14,12 +14,13 @@ echo "Cleaning the directory for a fresh configuration..."
_sleep 2 _sleep 2
make distclean > make.debug make distclean > make.debug
ETC_DIR=/usr/local/etc/ax25 [ "$ETC_DIR" ] || ETC_DIR=/usr/local/etc/ax25
SBIN_DIR=/usr/local/sbin [ "$SBIN_DIR" ] || SBIN_DIR=/usr/local/sbin
BIN_DIR=/usr/local/bin [ "$BIN_DIR" ] || BIN_DIR=/usr/local/bin
LIB_DIR=/usr/local/lib [ "$LIB_DIR" ] || LIB_DIR=/usr/local/lib
MAN_DIR=/usr/local/share/man [ "$DATA_DIR" ] || DATA_DIR=/usr/local/share
VAR_DIR=/usr/local/var/ax25 [ "$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 "Welcome to the configuration utility for URONode. This configure script"
echo "will very simply and easily guide you into installling URONode with as" echo "will very simply and easily guide you into installling URONode with as"
@ -81,6 +82,7 @@ fi
HAVENETROM="#undef HAVE_NETROM" HAVENETROM="#undef HAVE_NETROM"
HAVEROSE="#undef HAVE_ROSE" HAVEROSE="#undef HAVE_ROSE"
HAVEMHEARD="#undef HAVE_MHEARD" HAVEMHEARD="#undef HAVE_MHEARD"
HAVEAUTOROUTE="#undef HAVE_AUTOROUTE"
HAVETCPIP="#undef HAVE_TCPIP" HAVETCPIP="#undef HAVE_TCPIP"
HAVEMOTD="#undef HAVE_MOTD" HAVEMOTD="#undef HAVE_MOTD"
MOTDPATH= MOTDPATH=
@ -139,7 +141,7 @@ fi
if [ $? -ne 1 ] if [ $? -ne 1 ]
then then
HAVEAX25="#define HAVE_AX25 1" HAVEAX25="#define HAVE_AX25 1"
HAVEROSE="#define HAVE_ROSE 1" HAVEROSE="#define HAVE_ROSE 1"
fi fi
# #
# echo -n "Include support for MHeard ports listen ? [Y/n]: "; read answer # echo -n "Include support for MHeard ports listen ? [Y/n]: "; read answer
@ -156,6 +158,21 @@ fi
HAVEMHEARD="#define HAVE_MHEARD 1" HAVEMHEARD="#define HAVE_MHEARD 1"
fi 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 # echo -n "Include support for TCP/IP functions ? [Y/n]: "; read answer
# if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ] # if [ "$answer" = "Y" -o "$answer" = "y" -o "$answer" = "" ]
if [ "$NON_INTERACTIVE" = 1 ] if [ "$NON_INTERACTIVE" = 1 ]
@ -184,6 +201,7 @@ sed -e "s~@ARCH@~$ARCH~g; \
s~@SBIN_DIR@~$SBIN_DIR~g; \ s~@SBIN_DIR@~$SBIN_DIR~g; \
s~@BIN_DIR@~$BIN_DIR~g; \ s~@BIN_DIR@~$BIN_DIR~g; \
s~@VAR_DIR@~$VAR_DIR~g; \ s~@VAR_DIR@~$VAR_DIR~g; \
s~@DATA_DIR@~$DATA_DIR~g; \
s~@MAN_DIR@~$MAN_DIR~g; \ s~@MAN_DIR@~$MAN_DIR~g; \
s~@ZLIB@~$ZLIB~g" <Makefile.include.in >Makefile.include 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~@BIN_DIR@~$BIN_DIR~g; \
s~@VAR_DIR@~$VAR_DIR~g; \ s~@VAR_DIR@~$VAR_DIR~g; \
s~@MAN_DIR@~$MAN_DIR~g; \ s~@MAN_DIR@~$MAN_DIR~g; \
s~@DATA_DIR@~$DATA_DIR~g; \
s~@HAVEAX25@~$HAVEAX25~g; \ s~@HAVEAX25@~$HAVEAX25~g; \
s~@HAVEFLEX@~$HAVEFLEX~g; \ s~@HAVEFLEX@~$HAVEFLEX~g; \
s~@HAVENETROM@~$HAVENETROM~g; \ s~@HAVENETROM@~$HAVENETROM~g; \
s~@HAVEROSE@~$HAVEROSE~g; \ s~@HAVEROSE@~$HAVEROSE~g; \
s~@HAVEMHEARD@~$HAVEMHEARD~g; \ s~@HAVEMHEARD@~$HAVEMHEARD~g; \
s~@HAVEAUTOROUTE@~$HAVEAUTOROUTE~g; \
s~@HAVETCPIP@~$HAVETCPIP~g; \ s~@HAVETCPIP@~$HAVETCPIP~g; \
s~@HAVEMOTD@~$HAVEMOTD~g; \ s~@HAVEMOTD@~$HAVEMOTD~g; \
s~@MOTDPATH@~$MOTDPATH~g; \ s~@MOTDPATH@~$MOTDPATH~g; \

View File

@ -117,7 +117,7 @@ void read_conf(void)
int download_dest(char *gateway, char *fname) int download_dest(char *gateway, char *fname)
{ {
FILE *tmp; 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 */ char *addr, *commands[10], *dlist[9]; /* Destination + 8 digipeaters */
fd_set read_fd; fd_set read_fd;
int n, addrlen, cmd_send=0, cmd_ack=0, c, k; int n, addrlen, cmd_send=0, cmd_ack=0, c, k;
@ -390,6 +390,7 @@ void quit_handler(int sig)
signal(SIGTERM, sigterm_defhnd); signal(SIGTERM, sigterm_defhnd);
raise(SIGTERM); raise(SIGTERM);
return;
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -410,7 +411,7 @@ int main(int argc, char *argv[])
return 1; return 1;
} }
signal(SIGTERM, quit_handler); // signal(SIGTERM, quit_handler);
pidfile = fopen(FLEXD_PID_FILE, "w"); pidfile = fopen(FLEXD_PID_FILE, "w");
fprintf(pidfile, "%d\n", (int)getpid()); fprintf(pidfile, "%d\n", (int)getpid());
fclose(pidfile); fclose(pidfile);
@ -420,8 +421,8 @@ int main(int argc, char *argv[])
signal(SIGHUP, hup_handler); signal(SIGHUP, hup_handler);
signal(SIGALRM, alarm_handler); signal(SIGALRM, alarm_handler);
sigterm_defhnd = signal(SIGTERM, quit_handler); sigterm_defhnd = signal(SIGTERM, quit_handler);
if (sigterm_defhnd == SIG_ERR) // if (sigterm_defhnd == SIG_ERR)
sigterm_defhnd = SIG_DFL; // sigterm_defhnd = SIG_DFL;
alarm(poll_time); alarm(poll_time);
for(;;) pause(); for(;;) pause();

View File

@ -650,7 +650,7 @@ int do_connect(int argc, char **argv)
else if (find_node(argv[1], NULL)!=NULL) { else if (find_node(argv[1], NULL)!=NULL) {
family = AF_NETROM; family = AF_NETROM;
} */ } */
#ifdef HAVE_AUTOROUTE
else if ((ax=find_mheard(argv[1]))!=NULL) { /* Check Mheard database */ else if ((ax=find_mheard(argv[1]))!=NULL) { /* Check Mheard database */
k=1; k=1;
/* K2MF supplied code */ /* K2MF supplied code */
@ -677,11 +677,14 @@ int do_connect(int argc, char **argv)
argv[k]=NULL; argv[k]=NULL;
argc=k; argc=k;
family = AF_AX25; family = AF_AX25;
} else { /* Give up */
}
#endif
else { /* Give up */
if (User.ul_type == AF_NETROM) { if (User.ul_type == AF_NETROM) {
axio_printf(NodeIo,"%s} ", NodeId); 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; family = AF_UNSPEC;
// free_flex_dst(flx); // free_flex_dst(flx);
// free_ax_routes(ax); // free_ax_routes(ax);
@ -771,6 +774,16 @@ int do_connect(int argc, char **argv)
} }
axio_printf(NodeIo,"\nReturning you to the shell... "); axio_printf(NodeIo,"\nReturning you to the shell... ");
} else } 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 (User.ul_type == AF_AX25) {
if (check_perms(PERM_ANSI, 0L) != -1) { if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo,"\e[01;31m"); axio_printf(NodeIo,"\e[01;31m");

52
man/axdigi.8 Normal file
View File

@ -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).

Binary file not shown.

28
man/flexd.8 Normal file
View File

@ -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>

51
man/flexd.conf.5 Normal file
View File

@ -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).

Binary file not shown.

36
man/nodeusers.1 Normal file
View File

@ -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>

Binary file not shown.

245
man/uronode.8 Normal file
View File

@ -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>

Binary file not shown.

252
man/uronode.conf.5 Normal file
View File

@ -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).

Binary file not shown.

117
man/uronode.perms.5 Normal file
View File

@ -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).

Binary file not shown.

17
node.c
View File

@ -239,7 +239,7 @@ int main(int argc, char *argv[])
if (User.call[0] == 0) { if (User.call[0] == 0) {
axio_printf(NodeIo,"(%s:uronode) login: ", HostName); axio_printf(NodeIo,"(%s:uronode) login: ", HostName);
axio_flush(NodeIo); axio_flush(NodeIo);
alarm(60L); /* 1 min timeout */ alarm(180L); /* 3 min timeout */
if ((p = axio_getline(NodeIo)) == NULL) if ((p = axio_getline(NodeIo)) == NULL)
node_logout("User disconnected"); node_logout("User disconnected");
alarm(0L); 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_log(LOGLVL_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name);
node_logout("Login denied"); node_logout("Login denied");
} else if (strcmp(pw, "*") != 0) { } 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,"*** Password required! If you don't have a password please email\n%s for a password you wish to use.", Email);
axio_printf(NodeIo,"\rPassword: "); axio_printf(NodeIo,"\nPassword: ");
if (User.ul_type == AF_INET) { if (User.ul_type == AF_INET) {
axio_tn_will_echo(NodeIo); axio_tn_will_echo(NodeIo);
axio_eolmode(NodeIo, EOLMODE_BINARY); axio_eolmode(NodeIo, EOLMODE_BINARY);
@ -272,6 +272,9 @@ int main(int argc, char *argv[])
axio_eolmode(NodeIo, EOLMODE_TEXT); axio_eolmode(NodeIo, EOLMODE_TEXT);
/* axio_puts("\n",NodeIo); */ /* 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) { if (p == NULL || strcmp(p, pw) != 0) {
axio_printf(NodeIo, "\n"); axio_printf(NodeIo, "\n");
if (User.ul_type == AF_NETROM) { if (User.ul_type == AF_NETROM) {
@ -301,7 +304,7 @@ int main(int argc, char *argv[])
if ((fp = fopen(HAVEMOTD, "r")) != NULL) { if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
while (fgets(buf,256, fp) != NULL) axio_puts(buf,NodeIo); while (fgets(buf,256, fp) != NULL) axio_puts(buf,NodeIo);
axio_printf (NodeIo, "\n"); axio_printf (NodeIo, "\n");
axio_flush(NodeIo); /* axio_flush(NodeIo); */
} }
} else if (User.ul_type == AF_AX25) { } else if (User.ul_type == AF_AX25) {
if (check_perms(PERM_ANSI, 0L) != -1) { if (check_perms(PERM_ANSI, 0L) != -1) {
@ -311,14 +314,14 @@ int main(int argc, char *argv[])
if ((fp = fopen(HAVEMOTD, "r")) != NULL) { if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo); while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo);
axio_puts ("\n",NodeIo); axio_puts ("\n",NodeIo);
axio_flush(NodeIo); /* axio_flush(NodeIo); */
} }
} else if (User.ul_type == AF_ROSE) { } else if (User.ul_type == AF_ROSE) {
node_msg("%s - Welcome to %s", VERSION, RoseId); node_msg("%s - Welcome to %s", VERSION, RoseId);
if ((fp = fopen(HAVEMOTD, "r")) != NULL) { if ((fp = fopen(HAVEMOTD, "r")) != NULL) {
while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo); while (fgets(buf, 256, fp) != NULL) axio_puts(buf,NodeIo);
axio_puts ("\n",NodeIo); axio_puts ("\n",NodeIo);
axio_flush(NodeIo); /* axio_flush(NodeIo); */
} }
} }
lastlog(); lastlog();
@ -327,7 +330,7 @@ int main(int argc, char *argv[])
while (1) { if (User.ul_type != AF_NETROM) { while (1) { if (User.ul_type != AF_NETROM) {
axio_flush(NodeIo); axio_flush(NodeIo);
if (check_perms(PERM_ANSI, 0L) != -1) { if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo,"\e[01;34"); axio_printf(NodeIo,"\e[01;34m");
} }
if (no_password == 2) { if (no_password == 2) {
node_prompt(); node_prompt();

4
node.h
View File

@ -1,5 +1,5 @@
#define VERSION "URONode v2.3.1" #define VERSION "URONode v2.4"
#define COMPILING "February 14, 2015" #define COMPILING "November 21, 2015"
#define STATE_IDLE 0 #define STATE_IDLE 0
#define STATE_TRYING 1 #define STATE_TRYING 1

View File

@ -95,9 +95,24 @@ int do_links(int argc, char **argv)
} }
return 0; 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" */ /* "links v" */
if ((*argv[1]=='v') && (strlen(argv[1])==1)) { if ((*argv[1]=='v') && (strlen(argv[1])==1)) {
node_msg("AX25 Links via digipeaters:"); node_msg("AX25 Links via digipeaters:");

View File

@ -110,7 +110,7 @@ int loadavg(double *av1, double *av5, double *av15) {
labels which do not *begin* with digits, though. 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 #define MAX_COL 2
unsigned** meminfo(void) { unsigned** meminfo(void) {