New upstream version 2.8
This commit is contained in:
parent
fa52d5a185
commit
e5129d408c
35
CHANGES.3
35
CHANGES.3
|
@ -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
|
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.
|
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 --------
|
----------- 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
|
||||||
|
|
19
command.c
19
command.c
|
@ -99,10 +99,10 @@ void node_prompt(const char *fmt, ...)
|
||||||
axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m \b");
|
axio_printf(NodeIo,"\r\e[01;35m-=>\e[0m \b");
|
||||||
}
|
}
|
||||||
if ((User.ul_type ==AF_INET6) && (check_perms(PERM_ANSI, 0L) == -1)) {
|
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)) {
|
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); */
|
/* axio_flush(NodeIo); */
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,16 @@ void node_logout(char *reason)
|
||||||
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
axio_printf(NodeIo,"");
|
axio_printf(NodeIo,"");
|
||||||
}
|
}
|
||||||
|
@ -662,6 +671,8 @@ int do_nodes(int argc, char **argv)
|
||||||
}
|
}
|
||||||
if ((User.ul_type == AF_NETROM) && (i % 4) != 0) {
|
if ((User.ul_type == AF_NETROM) && (i % 4) != 0) {
|
||||||
node_msg("");
|
node_msg("");
|
||||||
|
} else
|
||||||
|
if ((User.ul_type != AF_NETROM) && (i % 4) == 0) {
|
||||||
}
|
}
|
||||||
free_proc_nr_nodes(list);
|
free_proc_nr_nodes(list);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -981,7 +992,7 @@ int nuser_list(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
sprintf(buf, "\nTelnet6 (%.9s @ SystemD)", u.call);
|
sprintf(buf, "\nTelnet6 (%.9s @ IPv6)", u.call);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AF_UNSPEC:
|
case AF_UNSPEC:
|
||||||
|
|
2
extcmd.c
2
extcmd.c
|
@ -144,7 +144,7 @@ static int pipe_extcmd(struct cmd *cmdp, char **argv)
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[01;31m");
|
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) {
|
} else if (User.ul_type == AF_AX25) {
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;31m");
|
axio_printf(NodeIo,"\e[01;31m");
|
||||||
|
|
2
flexd.c
2
flexd.c
|
@ -413,7 +413,7 @@ int main(int argc, char *argv[])
|
||||||
printf("FlexD version %s.\n\r", VERSION);
|
printf("FlexD version %s.\n\r", VERSION);
|
||||||
printf("Copywrite (c) 2000-2003 by Roy PE1RJA and Stefano IZ5AWZ\n\r");
|
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("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("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("by Free Software Foundation; either version 2 of the License, or\n\r");
|
||||||
printf("(at your option) any later version.\n\r");
|
printf("(at your option) any later version.\n\r");
|
||||||
|
|
18
gateway.c
18
gateway.c
|
@ -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); */
|
/* else node_msg("Trying %s on %s... Type <RETURN> to abort", User.dl_name, User.dl_port); */
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case AF_INET6:
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||||
node_perror("connect_to: socket", errno);
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;32m");
|
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);
|
axio_printf(NodeIo,"Virtual circuit established to %s\n", User.dl_name);
|
||||||
}
|
}
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
|
@ -701,7 +702,12 @@ int do_connect(int argc, char **argv)
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
axio_printf(NodeIo,"%s} ", NodeId);
|
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;
|
family = AF_UNSPEC;
|
||||||
// free_flex_dst(flx);
|
// free_flex_dst(flx);
|
||||||
// free_ax_routes(ax);
|
// free_ax_routes(ax);
|
||||||
|
@ -789,7 +795,7 @@ int do_connect(int argc, char **argv)
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;31m");
|
axio_printf(NodeIo,"\e[01;31m");
|
||||||
}
|
}
|
||||||
axio_printf(NodeIo,"\nReturning you to the shell... ");
|
axio_printf(NodeIo,"Returning you to the shell...");
|
||||||
} else
|
} else
|
||||||
if ((User.ul_type == AF_AX25) && (!stay)) {
|
if ((User.ul_type == AF_AX25) && (!stay)) {
|
||||||
axio_flush(NodeIo);
|
axio_flush(NodeIo);
|
||||||
|
@ -1033,6 +1039,12 @@ int do_ping(int argc, char **argv)
|
||||||
node_perror("do_ping: socket", errno);
|
node_perror("do_ping: socket", errno);
|
||||||
return 0;
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;35mICMP Echo request sent to: \e[0m");
|
axio_printf(NodeIo,"\e[01;35mICMP Echo request sent to: \e[0m");
|
||||||
}
|
}
|
||||||
|
|
8
node.c
8
node.c
|
@ -9,7 +9,8 @@
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
//IPv6
|
||||||
|
#include <netdb.h>
|
||||||
#include <netax25/ax25.h>
|
#include <netax25/ax25.h>
|
||||||
#include <netrose/rose.h>
|
#include <netrose/rose.h>
|
||||||
#include <netax25/axlib.h>
|
#include <netax25/axlib.h>
|
||||||
|
@ -194,8 +195,8 @@ int main(int argc, char *argv[])
|
||||||
/* axio_flush(NodeIo); */
|
/* axio_flush(NodeIo); */
|
||||||
if(NodeIo!=NULL)
|
if(NodeIo!=NULL)
|
||||||
axio_flush(NodeIo);
|
axio_flush(NodeIo);
|
||||||
if (system("telnet 127.0.0.1 3694") < 0 ) { /* VE3TOK - 18Nov2014, return value */
|
if (system("telnet localhost 3694") < 0 ) { /* VE3TOK - 18Nov2014, return value */
|
||||||
syslog(LOG_DEBUG, "Can't \"execute telnet 127.0.0.1 3694\"");
|
syslog(LOG_DEBUG, "Can't \"execute telnet ::1 or 127.0.0.1 3694\"");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
node_log(LOGLVL_ERROR,"Closing console telnet session.", -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) {
|
if ((pw = read_perms(&User, saddr.sin.sin_addr.s_addr)) == NULL) {
|
||||||
node_msg("Sorry, I'm not allowed to talk to you.");
|
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_log(LOGLVL_LOGIN, "Login denied for %s @ %s", User.call, User.ul_name);
|
||||||
node_logout("Login denied");
|
node_logout("Login denied");
|
||||||
}
|
}
|
||||||
|
|
4
node.h
4
node.h
|
@ -1,5 +1,5 @@
|
||||||
#define VERSION "URONode v2.7"
|
#define VERSION "URONode v2.8"
|
||||||
#define COMPILING "June 1, 2017"
|
#define COMPILING "November 23, 2017"
|
||||||
|
|
||||||
#define STATE_IDLE 0
|
#define STATE_IDLE 0
|
||||||
#define STATE_TRYING 1
|
#define STATE_TRYING 1
|
||||||
|
|
6
router.c
6
router.c
|
@ -206,9 +206,9 @@ int do_dest(int argc, char **argv)
|
||||||
}
|
}
|
||||||
if ((i % 4) != 0) axio_printf(NodeIo,"");
|
if ((i % 4) != 0) axio_printf(NodeIo,"");
|
||||||
free_flex_dst(fdst);
|
free_flex_dst(fdst);
|
||||||
if (User.ul_type == AF_NETROM) {
|
// if (User.ul_type == AF_NETROM) {
|
||||||
node_msg("");
|
// node_msg("");
|
||||||
}
|
// }
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((flgt=read_flex_gt()) == NULL) {
|
if ((flgt=read_flex_gt()) == NULL) {
|
||||||
|
|
7
util.c
7
util.c
|
@ -79,9 +79,10 @@ char *print_node(const char *alias, const char *call)
|
||||||
static char node[17];
|
static char node[17];
|
||||||
|
|
||||||
sprintf(node, "%s%s%s",
|
sprintf(node, "%s%s%s",
|
||||||
!strcmp(alias, "*") ? "" : alias,
|
!strcmp(alias, "*") ? "##TEMP:" : alias,
|
||||||
!strcmp(call, "*") ? "" : ":", call);
|
!strcmp(alias, "*") ? "" : ":",
|
||||||
|
// !strcmp(call, "*") ? "" : call);
|
||||||
|
call);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue