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
|
may wish to continue to violate the NetRom protocol (and others) I will
|
||||||
do everything in my power NOT to.
|
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
|
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
|
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
|
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
|
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.
|
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 --------
|
----------- 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
|
||||||
|
|
|
@ -48,6 +48,7 @@ installhelp:
|
||||||
|
|
||||||
installconf: installhelp
|
installconf: installhelp
|
||||||
install -b -m 755 -D -d $(ETC_DIR)
|
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.conf $(ETC_DIR)
|
||||||
install -b -m 600 -p etc/uronode.perms $(ETC_DIR)
|
install -b -m 600 -p etc/uronode.perms $(ETC_DIR)
|
||||||
install -b -m 600 -p etc/uronode.info $(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
|
install -m 644 -p man/flexd.8 $(MAN_DIR)/man8
|
||||||
|
|
||||||
upgrade: installman installhelp
|
upgrade: installman installhelp
|
||||||
|
install -b -m 600 -p etc/uronode.announce $(ETC_DIR)
|
||||||
install -m 755 -p uronode $(SBIN_DIR)
|
install -m 755 -p uronode $(SBIN_DIR)
|
||||||
install -m 755 -p nodeusers $(SBIN_DIR)
|
install -m 755 -p nodeusers $(SBIN_DIR)
|
||||||
install -m 755 -p calibrate $(SBIN_DIR)
|
install -m 755 -p calibrate $(SBIN_DIR)
|
||||||
@IN@ install -m 755 -p flexd $(SBIN_DIR)
|
@IN@ install -m 755 -p flexd $(SBIN_DIR)
|
||||||
install -m 755 -p axdigi $(SBIN_DIR)
|
install -m 755 -p axdigi $(SBIN_DIR)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *~ *.bak *.orig make.debug nodeusers uronode flexd axdigi calibrate
|
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)
|
void init_nodecmds(void)
|
||||||
{
|
{
|
||||||
add_internal_cmd(&Nodecmds, "?", 1, do_help);
|
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, "Bye", 1, do_bye);
|
||||||
add_internal_cmd(&Nodecmds, "Escape", 1, do_escape);
|
add_internal_cmd(&Nodecmds, "Escape", 1, do_escape);
|
||||||
if (User.ul_type == AF_INET) {
|
if (User.ul_type == AF_INET) {
|
||||||
|
@ -125,9 +126,9 @@ void node_logout(char *reason)
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[03;36m");
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[0;m\b");
|
axio_printf(NodeIo, "\e[0;m");
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
if ((User.ul_type == AF_FLEXNET) || (User.ul_type == AF_AX25)) {
|
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);
|
axio_printf(NodeIo, "%s de %s\n73! ", User.call, FlexId);
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[0;m\b");
|
axio_printf(NodeIo, "\e[0;m");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -242,18 +243,28 @@ int do_help(int argc, char **argv)
|
||||||
}
|
}
|
||||||
if (*argv[0] == 'i') { /* "info" */
|
if (*argv[0] == 'i') { /* "info" */
|
||||||
strcpy(fname, CONF_NODE_INFO_FILE);
|
strcpy(fname, CONF_NODE_INFO_FILE);
|
||||||
|
} else if (*argv[0] == 'a') { /* announcements */
|
||||||
|
strcpy(fname, CONF_NODE_ANN_FILE);
|
||||||
|
|
||||||
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");
|
||||||
}
|
}
|
||||||
|
if (*argv[0] == 'i') {
|
||||||
|
// axio_printf(NodeIo,"%s - %s \n", VERSION, COMPILING);
|
||||||
axio_printf(NodeIo,"System Information:\n");
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[0;m");
|
axio_printf(NodeIo, "\e[0;m");
|
||||||
}
|
}
|
||||||
axio_printf(NodeIo,"%s - %s \n", VERSION, COMPILING);
|
|
||||||
} else if (!argv[1]) { /* "help" */
|
} else if (!argv[1]) { /* "help" */
|
||||||
strcpy(fname, DATA_NODE_HELP_DIR "help.hlp");
|
strcpy(fname, DATA_NODE_HELP_DIR "help.hlp");
|
||||||
} else { /* "help <cmd>" */
|
} else { /* "help <cmd>" */
|
||||||
|
@ -262,7 +273,7 @@ int do_help(int argc, char **argv)
|
||||||
fname[sizeof(fname) - 1] = 0;
|
fname[sizeof(fname) - 1] = 0;
|
||||||
}
|
}
|
||||||
if ((fp = fopen(fname, "r")) == NULL) {
|
if ((fp = fopen(fname, "r")) == NULL) {
|
||||||
if (*argv[0] != 'i')
|
if ((*argv[0] != 'a') || (*argv[0] != 'i'))
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
axio_printf(NodeIo,"%s} ", NodeId);
|
axio_printf(NodeIo,"%s} ", NodeId);
|
||||||
}
|
}
|
||||||
|
@ -273,9 +284,11 @@ int do_help(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (User.ul_type == AF_NETROM) {
|
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");
|
node_msg("Help for command %s", argv[1] ? argv[1] : "help");
|
||||||
while (fgets(line, 256, fp) != NULL)
|
while (fgets(line, 256, fp) != NULL)
|
||||||
axio_puts(line,NodeIo);
|
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.
|
* Return non-zero if `port' is a hidden port.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int is_hidden(const char *port)
|
int is_hidden(const char *port)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -54,6 +55,7 @@ int is_hidden(const char *port)
|
||||||
/*
|
/*
|
||||||
* Return non-zero if peer is on "local" or loopback network.
|
* Return non-zero if peer is on "local" or loopback network.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int is_local(unsigned long peer)
|
static int is_local(unsigned long peer)
|
||||||
{
|
{
|
||||||
return ((peer & LocalMask) == LocalNet) || ((peer & 0xff) == 127);
|
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)
|
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) {
|
if (argc < 2) {
|
||||||
return -1;
|
return -1;
|
||||||
Prompt = strdup(argv[1]);
|
Prompt = strdup(argv[1]);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#define CONF_NODE_PERMS_FILE "@ETC_DIR@/uronode.perms"
|
#define CONF_NODE_PERMS_FILE "@ETC_DIR@/uronode.perms"
|
||||||
@HAVEMOTD@ @MOTDPATH@
|
@HAVEMOTD@ @MOTDPATH@
|
||||||
#define CONF_NODE_INFO_FILE "@ETC_DIR@/uronode.info"
|
#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 AX_ROUTES_FILE "@ETC_DIR@/uronode.routes"
|
||||||
#define CONF_USERS_FILE "@ETC_DIR@/uronode.users"
|
#define CONF_USERS_FILE "@ETC_DIR@/uronode.users"
|
||||||
#define FLEXD_CONF_FILE "@ETC_DIR@/flexd.conf"
|
#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/rsconfig.h>
|
||||||
#include <netax25/procutils.h>
|
#include <netax25/procutils.h>
|
||||||
|
|
||||||
|
#include "sysinfo.h"
|
||||||
#include "procinfo.h"
|
#include "procinfo.h"
|
||||||
#include "node.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 */
|
/* Uncomment the below if you wish to have the node show a 'Trying' state */
|
||||||
if (check_perms(PERM_ANSI, 0L) != -1) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo, "\e[01;35m");
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_NETROM
|
#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 (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
if (User.ul_type == AF_NETROM) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
break;
|
break;
|
||||||
}
|
} if (User.ul_type != AF_NETROM) {
|
||||||
node_msg("\e[01;36mTrying %s... hit <Enter> to abort", User.dl_name);
|
node_msg("\e[01;36mTrying %s... <Enter> aborts. ", User.dl_name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
@ -199,7 +201,7 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
||||||
case AF_AX25:
|
case AF_AX25:
|
||||||
if (aliascmd==0) {
|
if (aliascmd==0) {
|
||||||
if (check_perms(PERM_AX25, 0L) == -1 || (is_hidden(addr[0]) && check_perms(PERM_HIDDEN, 0L) == -1)) {
|
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) {
|
if (User.ul_type == AF_NETROM) {
|
||||||
node_msg("");
|
node_msg("");
|
||||||
}
|
}
|
||||||
|
@ -328,13 +330,19 @@ static ax25io *connect_to(char **addr, int family, int escape, int compr)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* if ((check_perms(PERM_ANSI, 0L) != -1) && (family == AF_NETROM)) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;36m%s Trying %s... Type <RETURN> to abort. (Escape: %s%c) \n",NodeId,
|
axio_printf(NodeIo,"\e[01;36m");
|
||||||
User.dl_name,
|
}
|
||||||
escape < 32 ? "CTRL-" : "",
|
if (User.ul_type != AF_NETROM) {
|
||||||
escape < 32 ? (escape + 'A' - 1) : escape);
|
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);
|
axio_flush(NodeIo);
|
||||||
} */
|
}
|
||||||
|
}
|
||||||
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
|
axio_printf(NodeIo,"\e[0m");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (User.ul_type == AF_NETROM) {
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[01;32m");
|
axio_printf(NodeIo,"\e[01;32m");
|
||||||
}
|
} if (User.ul_type != AF_NETROM) {
|
||||||
node_msg("Socket established to %s:%s", User.dl_name, User.dl_port);
|
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) {
|
if (check_perms(PERM_ANSI, 0L) != -1) {
|
||||||
axio_printf(NodeIo,"\e[0;m");
|
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);
|
axio_printf(NodeIo,"%s} ",NodeId);
|
||||||
|
|
||||||
if(argc > 0) {
|
if(argc > 0) {
|
||||||
if(ax25_config_get_dev(argv[1]) == NULL
|
if(ax25_config_get_dev(argv[1]) == NULL)
|
||||||
|| (check_perms(PERM_HIDDEN, 0) == -1
|
// || (check_perms(PERM_HIDDEN, 0) == -1
|
||||||
&& is_hidden(argv[1]))) {
|
// && is_hidden(argv[1]))) {
|
||||||
|
{
|
||||||
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
||||||
|
|
||||||
if(User.ul_type == AF_NETROM)
|
if(User.ul_type == AF_NETROM)
|
||||||
|
@ -57,8 +58,8 @@ int do_jheard (int argc,char **argv) {
|
||||||
if(strcmp(argv[1],mh.portname))
|
if(strcmp(argv[1],mh.portname))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
// if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||||
continue;
|
// continue;
|
||||||
|
|
||||||
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
||||||
node_perror("do_mheard: calloc",errno);
|
node_perror("do_mheard: calloc",errno);
|
||||||
|
@ -163,11 +164,11 @@ int do_jlong (int argc,char **argv) {
|
||||||
axio_printf(NodeIo,"%s} ",NodeId);
|
axio_printf(NodeIo,"%s} ",NodeId);
|
||||||
|
|
||||||
if(argc > 0) {
|
if(argc > 0) {
|
||||||
if(ax25_config_get_dev(argv[1]) == NULL
|
if(ax25_config_get_dev(argv[1]) == NULL )
|
||||||
|| (check_perms(PERM_HIDDEN, 0) == -1
|
// || (check_perms(PERM_HIDDEN, 0) == -1
|
||||||
&& is_hidden(argv[1]))) {
|
// && is_hidden(argv[1])))
|
||||||
|
{
|
||||||
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
axio_printf(NodeIo,"Invalid interface: %s", argv[1]);
|
||||||
|
|
||||||
if(User.ul_type == AF_NETROM)
|
if(User.ul_type == AF_NETROM)
|
||||||
node_msg("");
|
node_msg("");
|
||||||
|
|
||||||
|
@ -184,8 +185,8 @@ int do_jlong (int argc,char **argv) {
|
||||||
if(strcmp(argv[1],mh.portname))
|
if(strcmp(argv[1],mh.portname))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
// if(check_perms(PERM_HIDDEN,0) == -1 && is_hidden(mh.portname))
|
||||||
continue;
|
// continue;
|
||||||
|
|
||||||
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
if((new = calloc(1,sizeof(struct mheard_list))) == NULL) {
|
||||||
node_perror("do_mheard: calloc",errno);
|
node_perror("do_mheard: calloc",errno);
|
||||||
|
|
|
@ -15,6 +15,11 @@ The following commands are supported for users of
|
||||||
.BI ?
|
.BI ?
|
||||||
Give short list of available commands.
|
Give short list of available commands.
|
||||||
.TP 13
|
.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
|
.BI Bye
|
||||||
Disconnect user from the node.
|
Disconnect user from the node.
|
||||||
.TP 13
|
.TP 13
|
||||||
|
|
2
node.c
2
node.c
|
@ -402,7 +402,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (User.ul_type == AF_NETROM) {
|
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");
|
node_logout("Too many invalid commands");
|
||||||
} else {
|
} else {
|
||||||
node_msg("Too many invalid commands, disconnecting you...");
|
node_msg("Too many invalid commands, disconnecting you...");
|
||||||
|
|
Loading…
Reference in New Issue