New upstream version 2.7
This commit is contained in:
parent
a3886f2ff6
commit
fa52d5a185
69
CHANGES.3
69
CHANGES.3
|
@ -220,20 +220,6 @@ robot scripts such as PBBS mail forwarding sessions. While other systems
|
|||
may wish to continue to violate the NetRom protocol (and others) I will
|
||||
do everything in my power NOT to.
|
||||
|
||||
An anonymous user from sourceforge had a compiler warning on the
|
||||
do_prompt cycle in config.c and provided a fix for it. I don't know if
|
||||
the user is even a ham but their alias is dcb314, and we thank them. Their
|
||||
report and fix which is included:
|
||||
config.c:407:35: warning: logical 'or' of collectively exhaustive tests is always true [-Wlogical-op]
|
||||
Source code is
|
||||
if ((User.ul_type != AF_NETROM) || (User.ul_type != AF_INET) ||
|
||||
(User.ul_type != AF_INET6)) {
|
||||
Maybe better code
|
||||
if ((User.ul_type != AF_NETROM) && (User.ul_type != AF_INET) &&
|
||||
(User.ul_type != AF_INET6)) {
|
||||
While I don't get the warning he had, the logistics seem to be fine. Thanks
|
||||
again to dcb314 at sourceforge for their report.
|
||||
|
||||
I have made a diff file for JNOS2.0K that makes it a bit more user
|
||||
compatible with URONode, and other linux-based nodes. For almost 30 years
|
||||
TCP port 3694 has been used for inbound telnet for linux-based nodes, and
|
||||
|
@ -257,6 +243,61 @@ yes, a sysop could require a password on an ax25/NetRom/Rose interface which
|
|||
would be exposed. Now, if a sysop mistakenly tries to force a password
|
||||
on RF, it will be ignored by the node so it's not exposed.
|
||||
|
||||
25/05/2017 - v2.7
|
||||
|
||||
Added an "A"nnouncements command. Sysops can use this to give users a chance
|
||||
to read any announcements you and/or your club may have. I figured that I
|
||||
would segment this from the "I"nformation command since a lot of guys tend
|
||||
to post their system specs in the uronode.info file. If a user is seeking any
|
||||
news or announcements they won't have to sort through the other information
|
||||
contained within the system.info file and vice versa. A new file called
|
||||
uronode.announce now needs to be with your other uronode.* files.
|
||||
|
||||
Added a trying state display for telnet where before there was none. Actually
|
||||
there was a whole bunch of info but I had it commented out. This I did after
|
||||
a recent user poll was in support of such and other "trying" state messages.
|
||||
Such messages are still filtered for netrom connects.
|
||||
|
||||
Removed uronode.service file from the systemd group. Only uronode.socket and
|
||||
uronode@service needs to be placed and engaged. This was discovered by SP2L
|
||||
on his systems and I verified this on my Fedora test system (which is systemd).
|
||||
Thanks to Tomasz for finding this and pointing it out to me. Without the
|
||||
uronode@.service file, the uronode.socket file won't properly engage upon
|
||||
a connection request via IP. Without uronode@.service your systemd will
|
||||
report an error in loading the uronode.socket file:
|
||||
root@vbfc25:~# systemctl status uronode.socket
|
||||
● uronode.socket - URONode Server Activation Socket
|
||||
Loaded: loaded (/usr/lib/systemd/system/uronode.socket; enabled; vendor preset:
|
||||
Active: failed (Result: resources) since Sat 2016-12-31 11:30:54 CET; 45s ago
|
||||
Listen: 0.0.0.0:3694 (Stream)
|
||||
Accepted: 4; Connected: 0
|
||||
|
||||
Dec 31 12:18:11 vbfc25 systemd[1]: Listening on URONode Server Activation Socket.
|
||||
Dec 31 11:30:54 vbfc25 systemd[1]: uronode.socket: Failed to queue service startup
|
||||
Dec 31 11:30:54 vbfc25 systemd[1]: uronode.socket: Unit entered failed state.
|
||||
lines 1-9/9 (END)
|
||||
|
||||
Fixed a bug in JHeard and JLong in regards to flagging an interface that
|
||||
has existed I'll guess since the beginning of time. This bug was found and
|
||||
reported to me by Han PE1FAM. I was considering removing this feature
|
||||
however I can understand it's usage in the way Han is using it. In the way
|
||||
I have it now, the "Hidden" interface now will lock an end user from trying
|
||||
to attempt connects out an interface a sysop doesn't want users connecting
|
||||
out from such as an APRS interface. The interface in an "int' will not be
|
||||
displayed as to be a subtle message that the interface is not usable, however
|
||||
it will be displayed in a NetRom "Routes" list and in J/JL request.
|
||||
If an attempt to connect out a "hidden port" is made the user is shown an error:
|
||||
n1uro-15@n1uro.ampr.org:/uronode$ c ax1 foo
|
||||
Not a user interface.
|
||||
The reason I did this was so that you may see propagation in a heard list
|
||||
in the event of ducting for some VHF/UHF "dx"ing so to speak.
|
||||
**Note: do NOT flag a L4 protocol interface such as a NetRom interface
|
||||
as a locked interface or the node will not deliberately load.
|
||||
Thanks to Han for reporting this.
|
||||
|
||||
While working on new node W1WCG, I noticed some code clean up in node.c
|
||||
There's still a lot more to do especially with ANSI.
|
||||
|
||||
----------- Note on SystemD --------
|
||||
In uronode.socket, you'll notice the line:
|
||||
ListenStream=0.0.0.0:3694
|
||||
|
|
|
@ -48,6 +48,7 @@ installhelp:
|
|||
|
||||
installconf: installhelp
|
||||
install -b -m 755 -D -d $(ETC_DIR)
|
||||
install -b -m 600 -p etc/uronode.announce $(ETC_DIR)
|
||||
install -b -m 600 -p etc/uronode.conf $(ETC_DIR)
|
||||
install -b -m 600 -p etc/uronode.perms $(ETC_DIR)
|
||||
install -b -m 600 -p etc/uronode.info $(ETC_DIR)
|
||||
|
@ -68,11 +69,13 @@ installman:
|
|||
install -m 644 -p man/flexd.8 $(MAN_DIR)/man8
|
||||
|
||||
upgrade: installman installhelp
|
||||
install -b -m 600 -p etc/uronode.announce $(ETC_DIR)
|
||||
install -m 755 -p uronode $(SBIN_DIR)
|
||||
install -m 755 -p nodeusers $(SBIN_DIR)
|
||||
install -m 755 -p calibrate $(SBIN_DIR)
|
||||
@IN@ install -m 755 -p flexd $(SBIN_DIR)
|
||||
install -m 755 -p axdigi $(SBIN_DIR)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o *~ *.bak *.orig make.debug nodeusers uronode flexd axdigi calibrate
|
||||
|
|
29
command.c
29
command.c
|
@ -30,6 +30,7 @@ struct cmd *Nodecmds = NULL;
|
|||
void init_nodecmds(void)
|
||||
{
|
||||
add_internal_cmd(&Nodecmds, "?", 1, do_help);
|
||||
add_internal_cmd(&Nodecmds, "Announce", 1, do_help);
|
||||
add_internal_cmd(&Nodecmds, "Bye", 1, do_bye);
|
||||
add_internal_cmd(&Nodecmds, "Escape", 1, do_escape);
|
||||
if (User.ul_type == AF_INET) {
|
||||
|
@ -125,9 +126,9 @@ void node_logout(char *reason)
|
|||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[03;36m");
|
||||
}
|
||||
axio_printf(NodeIo, "%s, thank you for connecting to the %s\nURONode ROSE network node. Come back again soon, 73!\r ", User.call, RoseId);
|
||||
axio_printf(NodeIo, "%s, thank you for connecting to the %s\nURONode ROSE network node. Come back again soon, 73!\n", User.call, RoseId);
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[0;m\b");
|
||||
axio_printf(NodeIo, "\e[0;m");
|
||||
}
|
||||
} else
|
||||
if ((User.ul_type == AF_FLEXNET) || (User.ul_type == AF_AX25)) {
|
||||
|
@ -136,7 +137,7 @@ void node_logout(char *reason)
|
|||
}
|
||||
axio_printf(NodeIo, "%s de %s\n73! ", User.call, FlexId);
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[0;m\b");
|
||||
axio_printf(NodeIo, "\e[0;m");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -242,18 +243,28 @@ int do_help(int argc, char **argv)
|
|||
}
|
||||
if (*argv[0] == 'i') { /* "info" */
|
||||
strcpy(fname, CONF_NODE_INFO_FILE);
|
||||
} else if (*argv[0] == 'a') { /* announcements */
|
||||
strcpy(fname, CONF_NODE_ANN_FILE);
|
||||
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
|
||||
axio_printf(NodeIo,"%s} ", NodeId);
|
||||
// axio_printf(NodeIo,"%s} ", NodeId);
|
||||
}
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[01;37m");
|
||||
}
|
||||
if (*argv[0] == 'i') {
|
||||
// axio_printf(NodeIo,"%s - %s \n", VERSION, COMPILING);
|
||||
axio_printf(NodeIo,"System Information:\n");
|
||||
} else if (*argv[0] == 'a') {
|
||||
// axio_printf(NodeIo,"%s - %s \n", VERSION, COMPILING);
|
||||
// axio_printf(NodeIo,"System Announcements/News:\n");
|
||||
axio_printf(NodeIo," NEWS & ANNOUNCEMENTS NEWS & ANNOUNCEMENTS NEWS & ANNOUNCEMENTS\n");
|
||||
axio_printf(NodeIo," -------------------- -------------------- --------------------\n");
|
||||
}
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[0;m");
|
||||
}
|
||||
axio_printf(NodeIo,"%s - %s \n", VERSION, COMPILING);
|
||||
} else if (!argv[1]) { /* "help" */
|
||||
strcpy(fname, DATA_NODE_HELP_DIR "help.hlp");
|
||||
} else { /* "help <cmd>" */
|
||||
|
@ -262,7 +273,7 @@ int do_help(int argc, char **argv)
|
|||
fname[sizeof(fname) - 1] = 0;
|
||||
}
|
||||
if ((fp = fopen(fname, "r")) == NULL) {
|
||||
if (*argv[0] != 'i')
|
||||
if ((*argv[0] != 'a') || (*argv[0] != 'i'))
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
axio_printf(NodeIo,"%s} ", NodeId);
|
||||
}
|
||||
|
@ -273,9 +284,11 @@ int do_help(int argc, char **argv)
|
|||
return 0;
|
||||
}
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
axio_printf(NodeIo,"%s} ", NodeId);
|
||||
// axio_printf(NodeIo,"%s} ", NodeId);
|
||||
}
|
||||
if (*argv[0] != 'i')
|
||||
if ((*argv[0] != 'a') || (*argv[0] != 'i'))
|
||||
axio_printf(NodeIo,"");
|
||||
else
|
||||
node_msg("Help for command %s", argv[1] ? argv[1] : "help");
|
||||
while (fgets(line, 256, fp) != NULL)
|
||||
axio_puts(line,NodeIo);
|
||||
|
|
6
config.c
6
config.c
|
@ -40,7 +40,8 @@ static char *HiddenPorts[32] = {0};
|
|||
|
||||
/*
|
||||
* Return non-zero if `port' is a hidden port.
|
||||
*/
|
||||
*/
|
||||
|
||||
int is_hidden(const char *port)
|
||||
{
|
||||
int i;
|
||||
|
@ -54,6 +55,7 @@ int is_hidden(const char *port)
|
|||
/*
|
||||
* Return non-zero if peer is on "local" or loopback network.
|
||||
*/
|
||||
|
||||
static int is_local(unsigned long peer)
|
||||
{
|
||||
return ((peer & LocalMask) == LocalNet) || ((peer & 0xff) == 127);
|
||||
|
@ -404,7 +406,7 @@ static int do_roseid(int argc, char **argv)
|
|||
|
||||
static int do_prompt(int argc, char **argv)
|
||||
{
|
||||
if ((User.ul_type != AF_NETROM) && (User.ul_type != AF_INET) && (User.ul_type != AF_INET6)) {
|
||||
if ((User.ul_type != AF_NETROM) || (User.ul_type != AF_INET) || (User.ul_type != AF_INET6)) {
|
||||
if (argc < 2) {
|
||||
return -1;
|
||||
Prompt = strdup(argv[1]);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#define CONF_NODE_PERMS_FILE "@ETC_DIR@/uronode.perms"
|
||||
@HAVEMOTD@ @MOTDPATH@
|
||||
#define CONF_NODE_INFO_FILE "@ETC_DIR@/uronode.info"
|
||||
#define CONF_NODE_ANN_FILE "@ETC_DIR@/uronode.announce"
|
||||
#define AX_ROUTES_FILE "@ETC_DIR@/uronode.routes"
|
||||
#define CONF_USERS_FILE "@ETC_DIR@/uronode.users"
|
||||
#define FLEXD_CONF_FILE "@ETC_DIR@/flexd.conf"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Place your news/announcements in here. Good place for announcing
|
||||
club meetings, club announcements, area flea markets, etc.
|
39
gateway.c
39
gateway.c
|
@ -24,6 +24,7 @@
|
|||
#include <netax25/rsconfig.h>
|
||||
#include <netax25/procutils.h>
|
||||
|
||||
#include "sysinfo.h"
|
||||
#include "procinfo.h"
|
||||
#include "node.h"
|
||||
|
||||
|
@ -138,9 +139,10 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
|||
/* Uncomment the below if you wish to have the node show a 'Trying' state */
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo, "\e[01;35m");
|
||||
}
|
||||
axio_printf(NodeIo,"Trying %s... press <Enter> to abort", User.dl_name);
|
||||
|
||||
}
|
||||
if (User.ul_type != AF_NETROM) {
|
||||
axio_printf(NodeIo,"Trying %s... <Enter> aborts. ", User.dl_name);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef HAVE_NETROM
|
||||
|
@ -189,8 +191,8 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
|||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
break;
|
||||
}
|
||||
node_msg("\e[01;36mTrying %s... hit <Enter> to abort", User.dl_name);
|
||||
} if (User.ul_type != AF_NETROM) {
|
||||
node_msg("\e[01;36mTrying %s... <Enter> aborts. ", User.dl_name);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
@ -199,7 +201,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
|||
case AF_AX25:
|
||||
if (aliascmd==0) {
|
||||
if (check_perms(PERM_AX25, 0L) == -1 || (is_hidden(addr[0]) && check_perms(PERM_HIDDEN, 0L) == -1)) {
|
||||
axio_printf(NodeIo,"Permission denied");
|
||||
axio_printf(NodeIo,"Not a user interface.");
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
node_msg("");
|
||||
}
|
||||
|
@ -328,13 +330,19 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
/* if ((check_perms(PERM_ANSI, 0L) != -1) && (family == AF_NETROM)) {
|
||||
axio_printf(NodeIo,"\e[01;36m%s Trying %s... Type <RETURN> to abort. (Escape: %s%c) \n",NodeId,
|
||||
User.dl_name,
|
||||
escape < 32 ? "CTRL-" : "",
|
||||
escape < 32 ? (escape + 'A' - 1) : escape);
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo,"\e[01;36m");
|
||||
}
|
||||
if (User.ul_type != AF_NETROM) {
|
||||
axio_printf(NodeIo,"Trying %s:%s... <Enter> aborts. ", User.dl_name, User.dl_port);
|
||||
// escape < 32 ? "CTRL-" : "",
|
||||
// escape < 32 ? (escape + 'A' - 1) : escape);
|
||||
axio_flush(NodeIo);
|
||||
} */
|
||||
}
|
||||
}
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo,"\e[0m");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
|
@ -448,8 +456,11 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
|||
}
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo,"\e[01;32m");
|
||||
}
|
||||
node_msg("Socket established to %s:%s", User.dl_name, User.dl_port);
|
||||
} if (User.ul_type != AF_NETROM) {
|
||||
node_msg("\nSocket established to %s:%s", User.dl_name, User.dl_port);
|
||||
} else {
|
||||
node_msg("Socket established to %s:%s", User.dl_name, User.dl_port);
|
||||
}
|
||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||
axio_printf(NodeIo,"\e[0;m");
|
||||
}
|
||||
|
|
23
jheard.c
23
jheard.c
|
@ -36,9 +36,10 @@ int do_jheard (int argc,char **argv) {
|
|||
axio_printf(NodeIo,"%s} ",NodeId);
|
||||
|
||||
if(argc > 0) {
|
||||
if(ax25_config_get_dev(argv[1]) == NULL
|
||||
|| (check_perms(PERM_HIDDEN, 0) == -1
|
||||
&& is_hidden(argv[1]))) {
|
||||
if(ax25_config_get_dev(argv[1]) == NULL)
|
||||
// || (check_perms(PERM_HIDDEN, 0) == -1
|
||||
// && is_hidden(argv[1]))) {
|
||||
{
|
||||
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
||||
|
||||
if(User.ul_type == AF_NETROM)
|
||||
|
@ -57,8 +58,8 @@ int do_jheard (int argc,char **argv) {
|
|||
if(strcmp(argv[1],mh.portname))
|
||||
continue;
|
||||
}
|
||||
if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||
continue;
|
||||
// if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||
// continue;
|
||||
|
||||
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
||||
node_perror("do_mheard: calloc",errno);
|
||||
|
@ -163,11 +164,11 @@ int do_jlong (int argc,char **argv) {
|
|||
axio_printf(NodeIo,"%s} ",NodeId);
|
||||
|
||||
if(argc > 0) {
|
||||
if(ax25_config_get_dev(argv[1]) == NULL
|
||||
|| (check_perms(PERM_HIDDEN, 0) == -1
|
||||
&& is_hidden(argv[1]))) {
|
||||
if(ax25_config_get_dev(argv[1]) == NULL )
|
||||
// || (check_perms(PERM_HIDDEN, 0) == -1
|
||||
// && is_hidden(argv[1])))
|
||||
{
|
||||
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
||||
|
||||
if(User.ul_type == AF_NETROM)
|
||||
node_msg("");
|
||||
|
||||
|
@ -184,8 +185,8 @@ int do_jlong (int argc,char **argv) {
|
|||
if(strcmp(argv[1],mh.portname))
|
||||
continue;
|
||||
}
|
||||
if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||
continue;
|
||||
// if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||
// continue;
|
||||
|
||||
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
||||
node_perror("do_mheard: calloc",errno);
|
||||
|
|
|
@ -15,6 +15,11 @@ The following commands are supported for users of
|
|||
.BI ?
|
||||
Give short list of available commands.
|
||||
.TP 13
|
||||
.BI Announce
|
||||
Reads the file uronode.announce. This is like a local announcement wall
|
||||
where you can give your locals connecting into your node a chance to see
|
||||
the local activities going on like a cork board with posted announcements.
|
||||
.TP 13
|
||||
.BI Bye
|
||||
Disconnect user from the node.
|
||||
.TP 13
|
||||
|
|
2
node.c
2
node.c
|
@ -402,7 +402,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
else {
|
||||
if (User.ul_type == AF_NETROM) {
|
||||
node_msg("%s Too many invalid commands. Disconnecting...", NodeId);
|
||||
node_msg("%s} Too many invalid commands. Disconnecting...", NodeId);
|
||||
node_logout("Too many invalid commands");
|
||||
} else {
|
||||
node_msg("Too many invalid commands, disconnecting you...");
|
||||
|
|
Loading…
Reference in New Issue