New upstream version 2.12
This commit is contained in:
parent
ef4822cca2
commit
5f0010158a
19
CHANGES.3
19
CHANGES.3
|
@ -416,6 +416,25 @@ 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
|
||||
|
|
51
command.c
51
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);
|
||||
|
@ -769,7 +769,8 @@ int do_nodes(int argc, char **argv)
|
|||
/*
|
||||
* by Heikki Hannikainen <hessu@pspt.fi>
|
||||
* 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)
|
||||
{
|
||||
|
@ -792,17 +793,55 @@ 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 {
|
||||
|
@ -821,6 +860,7 @@ 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());
|
||||
|
||||
|
@ -846,7 +886,6 @@ int do_status(int argc, char **argv)
|
|||
else
|
||||
axio_printf(NodeIo,"Cannot get swap information or swap not active!\n");
|
||||
axio_printf(NodeIo," ");
|
||||
|
||||
}
|
||||
|
||||
#ifdef HAVE_AX25
|
||||
|
@ -903,6 +942,7 @@ int do_status(int argc, char **argv)
|
|||
if (User.ul_type == AF_NETROM) {
|
||||
node_msg("");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -935,6 +975,7 @@ int do_version(int argc, char **argv)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nuser_list(int argc, char **argv)
|
||||
{
|
||||
FILE *f;
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
URONode documentation in both ascii text and word-97 .doc format.
|
Binary file not shown.
243
docs/URONode.txt
243
docs/URONode.txt
|
@ -1,7 +1,244 @@
|
|||
Documentation for URONode program
|
||||
version 2.10 dated 27/01/2019
|
||||
dated 28/03/2020
|
||||
|
||||
Latest release of this program can be downloaded
|
||||
from one of two below sites:
|
||||
Contents:
|
||||
|
||||
I - Introduction
|
||||
II - What it is
|
||||
III - Generic commands
|
||||
IV - Extra commands
|
||||
V - Where to get it
|
||||
VI - Where to get support
|
||||
VII - Acknowledgements
|
||||
|
||||
Introduction:
|
||||
|
||||
I decided to make URONode primarily for my own use and purposes but those who
|
||||
came to login my node enjoyed it's functionality so much that they would want
|
||||
a copy of their own so I decided around the year 2000 to release it. At the
|
||||
time I was also helping K2MF with MFNOS and wanted something a bit similar
|
||||
in functionality with xNOS that would also keep true to form with the basics
|
||||
of the linux-nodes (and variants). Since the original code, there's been many
|
||||
changes and additions. Around 2015 it became a standard node in Debian and
|
||||
Red Hat repositories having proven itself as a sturdy node for native linux.
|
||||
|
||||
I took the best of all the linux based nodes, put them all together into one
|
||||
and made many changes including adding a color schema if a user desires full
|
||||
ansi colors to their screens. The prompt systems are also unique in nature
|
||||
as depending on how the user connects IN to a URONode system is the style of
|
||||
prompt they get returned to them. No other node system allows for such a
|
||||
thing. The advantage is that under no circumstance if a user (or bbs for that
|
||||
matter) connects via NetRom, never ever will a CTEXT or MOTD text get pushed
|
||||
out which can disrupt a BBS session. The same goes for any sort of DTEXT
|
||||
under a NetRom session.
|
||||
|
||||
All your configuration file manuals are online at a shell prompt. Just
|
||||
type: man <filename> 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 <int> <callsign-ssid> 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 <commandname-in-full> 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.
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
|
||||
USAGE
|
||||
STatus
|
||||
STatus [<l>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
|
||||
|
|
4
node.h
4
node.h
|
@ -1,5 +1,5 @@
|
|||
#define VERSION "URONode v2.11"
|
||||
#define COMPILING "03 March, 2020"
|
||||
#define VERSION "URONode v2.12"
|
||||
#define COMPILING "30 June, 2020"
|
||||
|
||||
#define STATE_IDLE 0
|
||||
#define STATE_TRYING 1
|
||||
|
|
Loading…
Reference in New Issue