From 27ce6520b91cb43772eb50bed02ea770bec7714e Mon Sep 17 00:00:00 2001 From: tony mancill Date: Sun, 10 Jan 2021 13:12:57 -0800 Subject: [PATCH] New upstream version 2.12 --- CHANGES.3 | 46 +++++++- axdigi.c | 2 +- command.c | 59 ++++++++-- docs/README | 1 + docs/URONode.doc | Bin 0 -> 106496 bytes docs/URONode.txt | 244 ++++++++++++++++++++++++++++++++++++++++ etc/help/status.hlp | 7 +- gateway.c | 15 ++- node.h | 4 +- system.c | 9 +- systemd/uronode.service | 17 --- user.c | 3 + 12 files changed, 371 insertions(+), 36 deletions(-) create mode 100644 docs/README create mode 100644 docs/URONode.doc create mode 100644 docs/URONode.txt delete mode 100644 systemd/uronode.service diff --git a/CHANGES.3 b/CHANGES.3 index 3e89b96..e2b9e5f 100644 --- a/CHANGES.3 +++ b/CHANGES.3 @@ -393,6 +393,48 @@ Changed a call that was in axdigi.c which had a lib call hardcoded and could break compiles under different archs. Patch supplied by Helmut Grohne, thanks to KI6ZHD for relaying the mail that included the patch. +03/03/2020 v2.11 +Changed node.h to reflect current version. + +Note: The system has been behaving as best as it can be expected considering +it's a front-end to the linux protocol stacks. As long as there can be an +ax# or sp# interface, it can attach to it and work the protocol(s) the user +wishes to use. There's still the 2-line patch that the kernel maintainers +need to add to ax25.ko so that netrom will continue to properly function +however that's not the issue of URONode, it's the kernel ax25 module. + +Made a couple of changes in gateway.c where the color schema wasn't properly +resetting the netrom prompt only in regards to aborting ping or a connect +request. This is now fixed. + +Made changes in system.c where it wasn't displaying the user being on IPv6 +properly. While at it, I changed how it handles the user when they're on +IPv4 in the lastlog and loggedin databases. + +Changed user.c to reflect incoming session is via IPv6 which also fixes the +output of nodeusers so that instead of displaying ??????? it now shows that +Telnet6 is being used as the incoming protocol. This one was really getting +under my skin. Now I can rest in peace (as per QST 2/2020 haha!) + +28/03/2020 v2.12 +Edited node.h to reflect new version. + +ADDED documentation! I wrote docs in both .txt and .doc format. Choose your +poison hihi! Unless you're a new sysop, I'm sure these are a waste of time +for you to read. + +Modified the do_sessions command so that a plain S now shows SEssions and +ST is the minimum required now for do_status. This also cleans up the +commandset so it's more alphabetical. + +I also modified do_status so that it now may require an argument to show +the full screen worth of system status otherwise by default it will only +show very basic stats of version/date/hostname/uptime and now requires +"ST" to be called. Calling "ST L" will show the long (original) status +screens. I did this after noticing some other node softwares go to the +extreme in showing stats that most end users would never understand nor +even care about. This also saves a lot of bandwidth! + ----------- Note on SystemD -------- In uronode.socket, you'll notice the line: ListenStream=0.0.0.0:3694 @@ -436,7 +478,7 @@ ftp://ftp.n1uro.net/packet and https://uronode.sourceforge.net. You may also find URONode in your distro's repositories. search uronode -Join our support mail list graciously donated by TAPR! -http://www.tapr.org/mailman/listinfo/uronode +Join our support mail list: +https://uronode.n1uro.com/list/ 73 de Brian N1URO diff --git a/axdigi.c b/axdigi.c index 06ecb2f..2f3dbe6 100644 --- a/axdigi.c +++ b/axdigi.c @@ -21,7 +21,7 @@ * 12th June 1997. */ -#include +#include #include #include #include diff --git a/command.c b/command.c index c6b18f9..7d5c4be 100644 --- a/command.c +++ b/command.c @@ -39,7 +39,7 @@ void init_nodecmds(void) add_internal_cmd(&Nodecmds, "Help", 1, do_help); add_internal_cmd(&Nodecmds, "Info", 1, do_help); add_internal_cmd(&Nodecmds, "Quit", 1, do_bye); - add_internal_cmd(&Nodecmds, "Status", 1, do_status); + add_internal_cmd(&Nodecmds, "STatus", 2, do_status); add_internal_cmd(&Nodecmds, "Version", 1, do_version); #ifdef HAVEMOTD add_internal_cmd(&Nodecmds, "Who", 1, do_last); @@ -49,7 +49,7 @@ void init_nodecmds(void) add_internal_cmd(&Nodecmds, "Connect", 1, do_connect); add_internal_cmd(&Nodecmds, "Links", 1, do_links); add_internal_cmd(&Nodecmds, "INTerfaces", 3, do_ports); - add_internal_cmd(&Nodecmds, "SEssions", 2, do_sessions); + add_internal_cmd(&Nodecmds, "Sessions", 1, do_sessions); add_internal_cmd(&Nodecmds, "Users", 1, nuser_list); #ifdef HAVE_FLEX add_internal_cmd(&Nodecmds, "Desti", 1, do_dest); @@ -77,6 +77,10 @@ void init_nodecmds(void) void node_prompt(const char *fmt, ...) { + + if ((User.ul_type == AF_NETROM) && (check_perms(PERM_ANSI, 0L) != -1)) { + axio_printf(NodeIo,"\e[0m"); + } if (User.ul_type == AF_NETROM) { axio_printf(NodeIo,"%s} ", NodeId); } @@ -765,7 +769,8 @@ int do_nodes(int argc, char **argv) /* * by Heikki Hannikainen * The following was mostly learnt from the procps package and the - * gnu sh-utils (mainly uname). + * gnu sh-utils (mainly uname). Addition of argument switches added + * by N1URO. */ int do_status(int argc, char **argv) { @@ -788,21 +793,59 @@ int do_status(int argc, char **argv) int na, nl, nd; #endif int ma, mu, mf, sa, su, sf; +/* "Status" */ + if (argc == 1) { if (User.ul_type == AF_NETROM) { axio_printf(NodeIo,"%s} ", NodeId); } if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo, "\e[01;37m"); } - node_msg("Status:"); + node_msg("Status report:"); if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo, "\e[0;m"); } time(&t); + axio_printf(NodeIo,"Version: %s\n", VERSION); axio_printf(NodeIo,"System time: %s", ctime(&t)); if (uname(&name) == -1) axio_printf(NodeIo,"Cannot get system name\n"); else { axio_printf(NodeIo,"Hostname: %s\n", HostName); +// axio_printf(NodeIo,"Operating system: %s %s (%s)\n", name.sysname, name.release, name.machine); + } + /* read and calculate the amount of uptime and format it nicely */ + uptime(&uptime_secs, &idle_secs); + updays = (int) uptime_secs / (60*60*24); + upminutes = (int) uptime_secs / 60; + uphours = upminutes / 60; + uphours = uphours % 24; + upminutes = upminutes % 60; + axio_printf(NodeIo,"Uptime: "); + if (updays) axio_printf(NodeIo,"%d day%s, ", updays, (updays != 1) ? "s" : ""); + if(uphours) axio_printf(NodeIo,"%d hour%s ", uphours, (uphours != 1) ? "s" : ""); + axio_printf(NodeIo,"%d minute%s\n", upminutes, (upminutes != 1) ? "s" : ""); + loadavg(&av[0], &av[1], &av[2]); +// } + return 0; +} +/* "Status L" */ + if (argc == 2) { + if (User.ul_type == AF_NETROM) { + axio_printf(NodeIo,"%s} ", NodeId); + } + if (check_perms(PERM_ANSI, 0L) != -1) { + axio_printf(NodeIo, "\e[01;37m"); + } + node_msg("Full Status report:"); + if (check_perms(PERM_ANSI, 0L) != -1) { + axio_printf(NodeIo, "\e[0;m"); + } + time(&t); + axio_printf(NodeIo,"Version: %s\n", VERSION); + axio_printf(NodeIo,"System time: %s", ctime(&t)); + if (uname(&name) == -1) axio_printf(NodeIo,"Cannot get system name\n"); + else { + axio_printf(NodeIo,"Hostname: %s\n", HostName); axio_printf(NodeIo,"Operating system: %s %s (%s)\n", name.sysname, name.release, name.machine); } /* read and calculate the amount of uptime and format it nicely */ @@ -817,9 +860,10 @@ int do_status(int argc, char **argv) if(uphours) axio_printf(NodeIo,"%d hour%s ", uphours, (uphours != 1) ? "s" : ""); axio_printf(NodeIo,"%d minute%s\n", upminutes, (upminutes != 1) ? "s" : ""); loadavg(&av[0], &av[1], &av[2]); + axio_printf(NodeIo,"Load average: %.2f, %.2f, %.2f\n", av[0], av[1], av[2]); axio_printf(NodeIo,"Users: %d node, %d system\n", user_count(), system_user_count()); - + // if (!(mem = meminfo()) || meminfo("memtotal") == 0) { /* cannot normalize mem usage */ // axio_printf(NodeIo,"Cannot get memory information!\n"); @@ -841,8 +885,7 @@ int do_status(int argc, char **argv) } else axio_printf(NodeIo,"Cannot get swap information or swap not active!\n"); - axio_printf(NodeIo," "); - + axio_printf(NodeIo," "); } #ifdef HAVE_AX25 @@ -898,6 +941,7 @@ int do_status(int argc, char **argv) #endif if (User.ul_type == AF_NETROM) { node_msg(""); + } } return 0; } @@ -931,6 +975,7 @@ int do_version(int argc, char **argv) } return 0; } + int nuser_list(int argc, char **argv) { FILE *f; diff --git a/docs/README b/docs/README new file mode 100644 index 0000000..7836984 --- /dev/null +++ b/docs/README @@ -0,0 +1 @@ +URONode documentation in both ascii text and word-97 .doc format. diff --git a/docs/URONode.doc b/docs/URONode.doc new file mode 100644 index 0000000000000000000000000000000000000000..d8f25a0b9fc00a8ca590be9680ab85aa57f44f97 GIT binary patch literal 106496 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 to view the online help. Ex: man uronode.conf to +read up on the main uronode configuration file or man flexd.conf to see how +to add flexnet routing into your node. If by chance you do find a man page +missing feel free to let me know. + +There's some what I call helper apps included for you such as axDigi and +FlexD for example. AxDigi is a true cross-interface digipeater. There's NO +configuration you need to do for axDigi at all. It will auto-sense your ax.25 +interfaces and simply listen for requests to digi in from one and out the +other interface. For more information on this, type "man axdigi". + + +What URONode is: + +What many people get extremely confused about it is the fact it's not a +daemon - it's a shell. Like with bash/dash/sh/etc, it doesn't stay in +memory. You'll only see it listed in your process list if someone is +connected to you and it's been commanded to spawn so it doesn't hog up +any system resources when it's not needed unlike other systems that do. +It's also much smaller than bash, and with all features compiled into +URONode it's still under 500K in size. This makes it a smart choice to +use as it's not sitting there using CPU for nothing, which makes the CPU +run cooler thus improving it's lifespan. + +It also locks the connected user to the command-set either within the +shell itself or any external commands the sysop may allow for, so +there's no file manipulation available, or system info available to +"steal" such as user account information. It also never overrides a +human command like some other systems may do. for an example, +c won't force a user to use an internet gated +route to the remote end, but will follow the human instruction to use +the RF interface as commanded. If a user wishes to stay RF they may do +so and not be forced on wired internet because the systems sees it's a +quicker path. + +For those who still believe IP is a wire link only and not a protocol, +if you wish not to use it, say NO during the configuration to TCP/IP. +Same with ROSE, NetRom, FlexNet, etc. when you compile it if you compile +your own. I believe when it's packaged by the various distributions all +options are flagged on (which would make sense). + +All protocol routing is handled by the kernel and various tools. Like +with bash, it doesn't provide any routing whatsoever. All routing for +all protocols is handled internally within the linux kernel. The same +for firewalling. By not introducing a "middle man" or trying to +re-invent the wheel by using the native protocol stacks within linux +itself, URONode is a much faster system. + +For those who aren't that linux savvy, I've made 2 versions of an install +script for URONode, axMail-FAX (an SMTP plugin module for the node), and +a library installer to get you ready for LinFBB if you so choose to run a +BBS with your node. This gives you the opportunity to be fully messaging +compliant. One version of the install system is for sysvinit, the other +for systemd. It also will install ampr-ripd routing daemon if you're looking +to run as an internet gateway, along with an axip and an axudp interface along +with what I consider to be a master control file I call ax25 and is located in +/usr/local/bin/. All your amateur services can be controlled from this one +file quite easily. + + +Generic node commands: + +Online help is available for all native compiled commands. The user simply +does: help to see the online help. If a sysop wishes +to add more commands to their node they should follow the format of the +online help files (located in /path/to/node/help) to keep consistent with +the online help system. Every node may be configured with different commands +as sysops often may develop their own tools/apps for their set of users. + +A brief description of compiled-in commands would be: +announcements - local news/announcements to share. +bye/exit (ipv4/ipv6 only)/quit - leave the node. +connect - gateway out to another system/node. +desti - bring up a list of flexnet destinations if applicable. +escape - This can change/display/disable your escape character. Defaults to + ctrl-T +finger - finger information from the local or a remote host. +host - look up an IP or Hostname in dns. +info - read the uronode.info file and display it to the end user. +jheard - the most recent 20 just heard stations +jlong - a long list of stations heard. This may be quite long. +links - connectable nodes hard coded into the uronode.routes file. +msg - an "instant message" utility build into the node to talk to another user. +nodes - display a listing of NetRom based nodes. +ping - an ICMP ping utility to see how fast a path to a remote is. +ports - a display of the ax.25 interfaces available on the node. +routes - a display of direct neighbor NetRom links. +status - a display of some of the hosts statistics including uptime. +telnet - a means to use tcp/ip to gateway out to a remote site. +users - who's online at the moment. +version - display information about the node's version. +who - information about a node's users or a specific user. + +This command set is automatically compiled into URONode for you based on the +options you choose at pre-compilation time with the configure command. + + +Extra commands: + +URONode supports execution of external commands from it's own shell such as +the axMail-FAX plugin. Some standard shell commands such as "netstat" are +preconfigured for you so that you may easily see how to duplicate adding a +custom command for your system. Typically these are commanded by executing +bash scripts. + +The ideas of added commands you may choose are endless in nature! I have the +old Z-80 based game Zork available on my node for example. I also run an +Ambient Weather station to which users may pull real-time weather information +from via my URONode that calls Lynx (text based browser) and other formulas +to gather real-time statistics on my local weather. + +I do provide a bunch of add-ons both on my FTP server and on SourceForge for +those who wish to add even more functionality to their node(s). An example +of one very useful one is NodeSearch where a user may enter a string either +by alias or by callsign to find a NetRom node. An example of searching for +either type of string: +n1uro-15@n1uro.ampr.org:/uronode6: ns +Executing command... +Which node are you looking for (no * please): n9 +Searching NetRom nodes for N9 ... +BBSLYA:N9LYA-4 IN105:N9LYA-7 INNOS:N9LYA-5 +NodeSearch v2.2 by N1URO for URONode. +Goodbye. +End of command. +n1uro-15@n1uro.ampr.org:/uronode6: ns +Executing command... +Which node are you looking for (no * please): in +Searching NetRom nodes for IN ... +DZINOD:SV1DZI-11 DZINOS:SV1DZI-12 IN105:N9LYA-7 INNOS:N9LYA-5 +NodeSearch v2.2 by N1URO for URONode. +Goodbye. +End of command. + +Bob Tenty has written a parallel for flexnet destis: +n1uro-15@n1uro.ampr.org:/uronode6: ds +Executing command... +Enter the first character or more of a flexnet digi callsign: k1y +Searching Flexnet Digi nodes for K1Y ... +K1YON 1-1 K1YON 2-14 + +Flexnet DigiSearch by VE3TOK for URONode. +Adaptation of NodeSearch v1.7 by N1URO. +Goodbye. +End of command. + +While URONode handles HF just fine such as on Net105, some guys seem to live +by the game of "he with the most nodes listing on their node wins", a listing +of more than 80 nodes may time out a guest connecting into you via HF thus +NOT making them feel welcome. Having easy to use search utilities for example +will make their stay with you pleasant and easier to use than some other +systems. + + +Where to get it: + +Latest release of URONode and various plug-ins may be downloaded from one of +two below sites: + ftp://ftp.n1uro.net/pub/hamradio/packet/ + https://sourceforge.net/projects/uronode/ + +It's always best to wait until you see a new version with .tgz or .tar.gz +appended so you know the code has been tested to be as bug-free as possible +or else you're on your own. + + +Where to get support: + +I run an email list server which you may subscribe to by visiting the official +URONode website at https://uronode.n1uro.com/ just look for the link. + + +Acknowledgements: + +I'd like to acknowledge the following people and groups for their various +contributions and support of the project: + +Marius Petrescu - code contributor and member of the URONode development + team + +Bob Tenty - code contributor and member of the URONode development team + +Paul Lewis - supplied many great ideas for URONode + +Tomasz Stankiewicz - supplied many great ideas for URONode + +Barry Siegfried - supplied code for URONode + +Dave Hibbard - Debian contact + +Jaroslav Skarvada - Red Hat contact and code contributor + +Craig Small - originated axDigi + +Tomi Manninen - original (linux) node creator + +Alan Cox - early linux ax.25 developer + +Roy Van Zundert - FlexNode developer + +Stefano Noferi - AWZNode developer + +TAPR - very supportive of URONode + +... and the many others involved as sysops and developers of the ax.25 and +tcp/ip stacks for linux. + +URONode comes with absolutely NO WARRANTEE whatsoever. Use at your own risk. +There are no fees to use this software and unlike others we will never "beg" +for donations either. Thanks for your support by using URONode. diff --git a/etc/help/status.hlp b/etc/help/status.hlp index 44c18c7..664005c 100644 --- a/etc/help/status.hlp +++ b/etc/help/status.hlp @@ -1,12 +1,17 @@ USAGE - STatus + STatus [ong] DESCRIPTION Returns information about the status of the Linux system which this URONode runs on. All information is taken directly from the operating system. + By itself STatus will show 4 lines of basic status of the system: + Version, System time, Hostname, and Uptime. When followed with a + Long or L it will give you more detailed information about the + host. + The "load average" values indicate the average amount of processes waiting for processor time during the last 1, 5 and 15 minutes. Load average of 1.0 would mean that the all of the processor time is diff --git a/gateway.c b/gateway.c index e480b8f..7b2dd3b 100644 --- a/gateway.c +++ b/gateway.c @@ -266,7 +266,12 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr) if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo, "\e[01;33m"); } + if (check_perms(PERM_ANSI, 0L) == -1) { axio_printf(NodeIo,"link setup (%s)...", User.dl_port); + } + if (check_perms(PERM_ANSI, 0L) != -1) { + axio_printf(NodeIo,"link setup (%s)...\e[0;m", User.dl_port); + } } /* else node_msg("Trying %s on %s... Type to abort", User.dl_name, User.dl_port); */ break; @@ -795,7 +800,7 @@ int do_connect(int argc, char **argv) if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo,"\e[01;31m"); } - axio_printf(NodeIo,"Returning you to the shell..."); + axio_printf(NodeIo, "Returning you to the shell..."); } else if ((User.ul_type == AF_AX25) && (!stay)) { axio_flush(NodeIo); @@ -1146,17 +1151,17 @@ int do_ping(int argc, char **argv) if (User.ul_type == AF_NETROM){ axio_printf(NodeIo,"%s} ", NodeId); } - if (User.ul_type == AF_INET) { +// if (User.ul_type == AF_INET) { if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo, "\e[05;31m"); - } +// } } axio_printf(NodeIo,"Ping aborted."); - if (User.ul_type == AF_INET) { +// if (User.ul_type == AF_INET) { if (check_perms(PERM_ANSI, 0L) != -1) { axio_printf(NodeIo, "\e[0;m"); } - } +// } if (User.ul_type == AF_NETROM) { node_msg(""); } diff --git a/node.h b/node.h index fa9dfe5..af7f581 100644 --- a/node.h +++ b/node.h @@ -1,5 +1,5 @@ -#define VERSION "URONode v2.10" -#define COMPILING "December, 2018" +#define VERSION "URONode v2.12" +#define COMPILING "30 June, 2020" #define STATE_IDLE 0 #define STATE_TRYING 1 diff --git a/system.c b/system.c index f1079d5..2e69ef4 100644 --- a/system.c +++ b/system.c @@ -458,6 +458,7 @@ void lastlog(void) int UserId=0; char tty[LAST_DATA_SIZE]; char hostname[LAST_DATA_SIZE]; + char hostname6[LAST_DATA_SIZE]; char usercall[10]; char *cp; int escape; @@ -494,7 +495,13 @@ void lastlog(void) } break; #endif - case AF_INET: strcpy(hostname, User.ul_name); + case AF_INET: strcpy(hostname, User.call); + strcat(hostname, " on IPv4 "); + strcat(hostname, User.ul_name); + break; + case AF_INET6: strcpy(hostname6, User.ul_name); + strcat(hostname, User.call); + strcat(hostname, " on IPv6"); break; case AF_UNSPEC: strcpy(hostname, User.call); strcat(hostname, " on local"); diff --git a/systemd/uronode.service b/systemd/uronode.service deleted file mode 100644 index b380c87..0000000 --- a/systemd/uronode.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description = URONode Server -Requires = uronode.socket -After=syslog.target network.target - -[Service] -Type=oneshot -ExecStartPre=systemctl start uronode.socket -ExecStart=/usr/local/sbin/uronode -ExecStartPost=systemctl restart uronode.socket -StandardInput=socket -Sockets=uronode.socket - -[Install] -Also = uronode.socket -WantedBy = multi-user.target -WantedBy = network.target diff --git a/user.c b/user.c index 2b1fb44..c0f2b26 100644 --- a/user.c +++ b/user.c @@ -185,6 +185,9 @@ int user_list(int argc, char **argv) sprintf(buf, "\nTelnet (%.9s @ %.16s)", u.call, u.ul_name); break; + case AF_INET6: + sprintf(buf, "\nTelnet6 (%.9s via IPv6)", u.call); + break; case AF_UNSPEC: sprintf(buf, "\nHost (%.9s on local)", u.call);