Update upstream source from tag 'upstream/2.8'

Update to upstream version '2.8'
with Debian dir cb8bc58c64
This commit is contained in:
hibby 2017-11-24 18:00:45 +00:00
commit 66f6865097
10 changed files with 81 additions and 21 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
.pc/

View File

@ -298,6 +298,41 @@ 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.
15/06/2017 - v2.8
In gateway.c I cleaned up the do_ping routing slightly. I was going to add
a default timer but instead decided to let the user hit enter for their own
"timer" of sorts. Users are also now instructed on the node to hit enter
in order to abort a ping.
Cleaned up do_nodes so now if there's a slime trail node, rather than prefix
it with a colon ":", now it will display ##TEMP: instead. This was sorta
bugging me on just how to handle these. While I was at it, I made a
modification to gateway.c so if a user tried to "C ##TEMP" it instructs the
end user to use the callsign-ssid. I can't think of any other node that does
this.
Thanks to Dave Hibbard (at Debian) for pointing out a dropped "t" in the word
"software" in flexd.c when the -v switch is used.
Cleaned up some prompt routines including the ipv4/ipv6 login sequences.
Before (especially with ipv6) if a callsign had no permissions to login via
the internet they were never informed how to gain access - they were simply
denied. I found this to somewhat make the node a bit unfriendly. Fixed.
With all the chatter on the 44-net list about IPv6, I've decided to get my
block active for further testing. In doing so, I noticed that if a user
telnetted in via IPv6 and made a NetRom connect out, the node failed to
inform them that they were connected... fixed.
As of this writing there's no outboud telnet or dns functions for IPv6
but that's not to say it's not in the works. Personally, I don't see a
true need for IPv6 outbound for amateur radio as the amprnet is going
quite strong however that's not to say things may not change either. If
anything, IPv6 through an HE.net tunnel works as slick as the amprnet
does with the exception of how it handles dynamic clients. Other than
that, it does appear to tunnel through your ISP filters as amprnet
does which is a plus.
----------- Note on SystemD --------
In uronode.socket, you'll notice the line:
ListenStream=0.0.0.0:3694

View File

@ -99,10 +99,10 @@ void node_prompt(const char *fmt, ...)
axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m \b");
}
if ((User.ul_type ==AF_INET6) && (check_perms(PERM_ANSI, 0L) == -1)) {
axio_printf(NodeIo, "\nSystemD - %s@%s: ",User.call, HostName);
axio_printf(NodeIo, "\n%s@%s-IPv6: ",User.call, HostName);
}
if ((User.ul_type ==AF_INET6) && (check_perms(PERM_ANSI, 0L) != -1)) {
axio_printf(NodeIo, "\n\e[01;31mSystemD \e[0m- \e[01;34m%s@\e[0m%s: ",User.call, HostName);
axio_printf(NodeIo, "\n\e[01;34m%s\e[0m@\e[01;31m%s\e[0m-\e[01;33mIPv6\e[0m: ",User.call, HostName);
}
/* axio_flush(NodeIo); */
}
@ -119,6 +119,15 @@ void node_logout(char *reason)
axio_printf(NodeIo, "\e[0;m");
}
}
if (User.ul_type == AF_INET6) {
if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo, "\e[03;36m");
}
axio_printf(NodeIo, "Thank you %s, for connecting to the \n%s URONode IPv6 packet shell.\n", User.call, HostName);
if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo, "\e[0;m");
}
}
if (User.ul_type == AF_NETROM) {
axio_printf(NodeIo,"");
}
@ -662,6 +671,8 @@ int do_nodes(int argc, char **argv)
}
if ((User.ul_type == AF_NETROM) && (i % 4) != 0) {
node_msg("");
} else
if ((User.ul_type != AF_NETROM) && (i % 4) == 0) {
}
free_proc_nr_nodes(list);
return 0;
@ -981,7 +992,7 @@ int nuser_list(int argc, char **argv)
break;
case AF_INET6:
sprintf(buf, "\nTelnet6 (%.9s @ SystemD)", u.call);
sprintf(buf, "\nTelnet6 (%.9s @ IPv6)", u.call);
break;
case AF_UNSPEC:

View File

@ -413,7 +413,7 @@ int main(int argc, char *argv[])
printf("FlexD version %s.\n\r", VERSION);
printf("Copywrite (c) 2000-2003 by Roy PE1RJA and Stefano IZ5AWZ\n\r");
printf("Copywrite (c) 2003 - present by Brian Rogers - N1URO.\n\r");
printf("FlexD is free sofware and you are welcome to redistribute it\n\r");
printf("FlexD is free software and you are welcome to redistribute it\n\r");
printf("under the terms of GNU General Public Licence as published\n\r");
printf("by Free Software Foundation; either version 2 of the License, or\n\r");
printf("(at your option) any later version.\n\r");

View File

@ -271,6 +271,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
/* else node_msg("Trying %s on %s... Type <RETURN> to abort", User.dl_name, User.dl_port); */
break;
#endif
case AF_INET6:
case AF_INET:
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
node_perror("connect_to: socket", errno);
@ -493,7 +494,7 @@ 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");
}
if (User.ul_type == AF_INET) {
if ((User.ul_type == AF_INET) || (User.ul_type == AF_INET6)) {
axio_printf(NodeIo,"Virtual circuit established to %s\n", User.dl_name);
}
if (User.ul_type == AF_NETROM) {
@ -701,7 +702,12 @@ int do_connect(int argc, char **argv)
if (User.ul_type == AF_NETROM) {
axio_printf(NodeIo,"%s} ", NodeId);
}
axio_printf(NodeIo,"%s not found, please retry your entry.", argv[1]);
if (strcmp(argv[1], "##TEMP") == 0) {
axio_printf(NodeIo,"%s is not connectable. Use the callsign-ssid.", argv[1]);
} else {
axio_printf(NodeIo,"%s not found. Please retry your entry.", argv[1]);
}
family = AF_UNSPEC;
// free_flex_dst(flx);
// free_ax_routes(ax);
@ -789,7 +795,7 @@ int do_connect(int argc, char **argv)
if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo,"\e[01;31m");
}
axio_printf(NodeIo,"\nReturning you to the shell... ");
axio_printf(NodeIo,"Returning you to the shell...");
} else
if ((User.ul_type == AF_AX25) && (!stay)) {
axio_flush(NodeIo);
@ -1033,6 +1039,12 @@ int do_ping(int argc, char **argv)
node_perror("do_ping: socket", errno);
return 0;
}
if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo,"\e[01;32mPing engaged, hit <ENTER> to abort.\n\e[0m");
}
if (check_perms(PERM_ANSI, 0L) == -1) {
axio_printf(NodeIo, "Ping engaged, hit <ENTER> to abort.\n");
}
if (check_perms(PERM_ANSI, 0L) != -1) {
axio_printf(NodeIo,"\e[01;35mICMP Echo request sent to: \e[0m");
}

8
node.c
View File

@ -9,7 +9,8 @@
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
//IPv6
#include <netdb.h>
#include <netax25/ax25.h>
#include <netrose/rose.h>
#include <netax25/axlib.h>
@ -194,8 +195,8 @@ int main(int argc, char *argv[])
/* axio_flush(NodeIo); */
if(NodeIo!=NULL)
axio_flush(NodeIo);
if (system("telnet 127.0.0.1 3694") < 0 ) { /* VE3TOK - 18Nov2014, return value */
syslog(LOG_DEBUG, "Can't \"execute telnet 127.0.0.1 3694\"");
if (system("telnet localhost 3694") < 0 ) { /* VE3TOK - 18Nov2014, return value */
syslog(LOG_DEBUG, "Can't \"execute telnet ::1 or 127.0.0.1 3694\"");
return 1;
}
node_log(LOGLVL_ERROR,"Closing console telnet session.", -1);
@ -256,6 +257,7 @@ int main(int argc, char *argv[])
}
if ((pw = read_perms(&User, saddr.sin.sin_addr.s_addr)) == NULL) {
node_msg("Sorry, I'm not allowed to talk to you.");
axio_printf(NodeIo,"*** Password required! If you don't have a password please email\n%s for a password you wish to use.\n", Email);
node_log(LOGLVL_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name);
node_logout("Login denied");
}

4
node.h
View File

@ -1,5 +1,5 @@
#define VERSION "URONode v2.7"
#define COMPILING "June 1, 2017"
#define VERSION "URONode v2.8"
#define COMPILING "November 23, 2017"
#define STATE_IDLE 0
#define STATE_TRYING 1

View File

@ -206,9 +206,9 @@ int do_dest(int argc, char **argv)
}
if ((i % 4) != 0) axio_printf(NodeIo,"");
free_flex_dst(fdst);
if (User.ul_type == AF_NETROM) {
node_msg("");
}
// if (User.ul_type == AF_NETROM) {
// node_msg("");
// }
return 0;
}
if ((flgt=read_flex_gt()) == NULL) {

7
util.c
View File

@ -79,9 +79,10 @@ char *print_node(const char *alias, const char *call)
static char node[17];
sprintf(node, "%s%s%s",
!strcmp(alias, "*") ? "" : alias,
!strcmp(call, "*") ? "" : ":", call);
!strcmp(alias, "*") ? "##TEMP:" : alias,
!strcmp(alias, "*") ? "" : ":",
// !strcmp(call, "*") ? "" : call);
call);
return node;
}