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
|
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!)
|
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 --------
|
----------- Note on SystemD --------
|
||||||
In uronode.socket, you'll notice the line:
|
In uronode.socket, you'll notice the line:
|
||||||
ListenStream=0.0.0.0:3694
|
ListenStream=0.0.0.0:3694
|
||||||
|
|
55
command.c
55
command.c
|
@ -39,7 +39,7 @@ void init_nodecmds(void)
|
||||||
add_internal_cmd(&Nodecmds, "Help", 1, do_help);
|
add_internal_cmd(&Nodecmds, "Help", 1, do_help);
|
||||||
add_internal_cmd(&Nodecmds, "Info", 1, do_help);
|
add_internal_cmd(&Nodecmds, "Info", 1, do_help);
|
||||||
add_internal_cmd(&Nodecmds, "Quit", 1, do_bye);
|
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);
|
add_internal_cmd(&Nodecmds, "Version", 1, do_version);
|
||||||
#ifdef HAVEMOTD
|
#ifdef HAVEMOTD
|
||||||
add_internal_cmd(&Nodecmds, "Who", 1, do_last);
|
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, "Connect", 1, do_connect);
|
||||||
add_internal_cmd(&Nodecmds, "Links", 1, do_links);
|
add_internal_cmd(&Nodecmds, "Links", 1, do_links);
|
||||||
add_internal_cmd(&Nodecmds, "INTerfaces", 3, do_ports);
|
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);
|
add_internal_cmd(&Nodecmds, "Users", 1, nuser_list);
|
||||||
#ifdef HAVE_FLEX
|
#ifdef HAVE_FLEX
|
||||||
add_internal_cmd(&Nodecmds, "Desti", 1, do_dest);
|
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>
|
* by Heikki Hannikainen <hessu@pspt.fi>
|
||||||
* The following was mostly learnt from the procps package and the
|
* 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)
|
int do_status(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -792,21 +793,59 @@ int do_status(int argc, char **argv)
|
||||||
int na, nl, nd;
|
int na, nl, nd;
|
||||||
#endif
|
#endif
|
||||||
int ma, mu, mf, sa, su, sf;
|
int ma, mu, mf, sa, su, sf;
|
||||||
|
/* "Status" */
|
||||||
|
if (argc == 1) {
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
axio_printf(NodeIo,"%s} ", NodeId);
|
axio_printf(NodeIo,"%s} ", NodeId);
|
||||||
}
|
}
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[01;37m");
|
axio_printf(NodeIo, "\e[01;37m");
|
||||||
}
|
}
|
||||||
node_msg("Status:");
|
node_msg("Status report:");
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[0;m");
|
axio_printf(NodeIo, "\e[0;m");
|
||||||
}
|
}
|
||||||
time(&t);
|
time(&t);
|
||||||
|
axio_printf(NodeIo,"Version: %s\n", VERSION);
|
||||||
axio_printf(NodeIo,"System time: %s", ctime(&t));
|
axio_printf(NodeIo,"System time: %s", ctime(&t));
|
||||||
if (uname(&name) == -1) axio_printf(NodeIo,"Cannot get system name\n");
|
if (uname(&name) == -1) axio_printf(NodeIo,"Cannot get system name\n");
|
||||||
else {
|
else {
|
||||||
axio_printf(NodeIo,"Hostname: %s\n", HostName);
|
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);
|
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 */
|
/* read and calculate the amount of uptime and format it nicely */
|
||||||
|
@ -821,9 +860,10 @@ int do_status(int argc, char **argv)
|
||||||
if(uphours) axio_printf(NodeIo,"%d hour%s ", uphours, (uphours != 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" : "");
|
axio_printf(NodeIo,"%d minute%s\n", upminutes, (upminutes != 1) ? "s" : "");
|
||||||
loadavg(&av[0], &av[1], &av[2]);
|
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,"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());
|
axio_printf(NodeIo,"Users: %d node, %d system\n", user_count(), system_user_count());
|
||||||
|
|
||||||
// if (!(mem = meminfo()) || meminfo("memtotal") == 0) {
|
// if (!(mem = meminfo()) || meminfo("memtotal") == 0) {
|
||||||
/* cannot normalize mem usage */
|
/* cannot normalize mem usage */
|
||||||
// axio_printf(NodeIo,"Cannot get memory information!\n");
|
// axio_printf(NodeIo,"Cannot get memory information!\n");
|
||||||
|
@ -845,8 +885,7 @@ int do_status(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
axio_printf(NodeIo,"Cannot get swap information or swap not active!\n");
|
axio_printf(NodeIo,"Cannot get swap information or swap not active!\n");
|
||||||
axio_printf(NodeIo," ");
|
axio_printf(NodeIo," ");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_AX25
|
#ifdef HAVE_AX25
|
||||||
|
@ -902,6 +941,7 @@ int do_status(int argc, char **argv)
|
||||||
#endif
|
#endif
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
node_msg("");
|
node_msg("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -935,6 +975,7 @@ int do_version(int argc, char **argv)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nuser_list(int argc, char **argv)
|
int nuser_list(int argc, char **argv)
|
||||||
{
|
{
|
||||||
FILE *f;
|
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
|
Documentation for URONode program
|
||||||
version 2.10 dated 27/01/2019
|
dated 28/03/2020
|
||||||
|
|
||||||
Latest release of this program can be downloaded
|
Contents:
|
||||||
from one of two below sites:
|
|
||||||
|
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/
|
ftp://ftp.n1uro.net/pub/hamradio/packet/
|
||||||
https://sourceforge.net/projects/uronode/
|
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
|
USAGE
|
||||||
STatus
|
STatus [<l>ong]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Returns information about the status of the Linux system which this
|
Returns information about the status of the Linux system which this
|
||||||
URONode runs on. All information is taken directly from the
|
URONode runs on. All information is taken directly from the
|
||||||
operating system.
|
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
|
The "load average" values indicate the average amount of processes
|
||||||
waiting for processor time during the last 1, 5 and 15 minutes.
|
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
|
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 VERSION "URONode v2.12"
|
||||||
#define COMPILING "03 March, 2020"
|
#define COMPILING "30 June, 2020"
|
||||||
|
|
||||||
#define STATE_IDLE 0
|
#define STATE_IDLE 0
|
||||||
#define STATE_TRYING 1
|
#define STATE_TRYING 1
|
||||||
|
|
2
system.c
2
system.c
|
@ -496,7 +496,7 @@ void lastlog(void)
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case AF_INET: strcpy(hostname, User.call);
|
case AF_INET: strcpy(hostname, User.call);
|
||||||
strcat(hostname, " from ip ");
|
strcat(hostname, " on IPv4 ");
|
||||||
strcat(hostname, User.ul_name);
|
strcat(hostname, User.ul_name);
|
||||||
break;
|
break;
|
||||||
case AF_INET6: strcpy(hostname6, User.ul_name);
|
case AF_INET6: strcpy(hostname6, User.ul_name);
|
||||||
|
|
Loading…
Reference in New Issue