1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
#define VERSION "URONode v2.9"
#define COMPILING "May 27, 2018"
#define STATE_IDLE 0
#define STATE_TRYING 1
#define STATE_CONNECTED 2
#define STATE_PINGING 3
#define STATE_EXTCMD 4
#define STATE_LOGIN 5
#define STATE_QUIT 6
#define LOGLVL_NONE 0
#define LOGLVL_ERROR 1
#define LOGLVL_LOGIN 2
#define LOGLVL_GW 3
#define PERM_LOGIN 1 /* Permit login */
#define PERM_AX25 2 /* AX.25 gatewaying */
#define PERM_NETROM 4 /* NETROM gatewaying */
#define PERM_TELNET_LOCAL 8 /* Telnet to "local" hosts */
#define PERM_TELNET_AMPR 16 /* Telnet to 44.xx.xx.xx hosts */
#define PERM_TELNET_INET 32 /* Telnet to other hosts */
#define PERM_ANSI 64 /* Ansi Color graphics */
#define PERM_ROSE 128 /* ROSE gatewaying */
#define PERM_NOESC 256 /* No escape character */
#define PERM_HIDDEN 512 /* Use hidden ports - to be removed */
#define PERM_TELNET (PERM_TELNET_LOCAL & PERM_TELNET_AMPR & PERM_TELNET_INET)
/* Fake id for Flexnet */
#define AF_FLEXNET 128
#include <sys/types.h>
#include <sys/ipc.h> /* for key_t */
#include <errno.h>
#include <netax25/ax25io.h>
#include "config.h"
struct user
{
pid_t pid;
key_t ipc_key;
time_t logintime;
time_t cmdtime;
unsigned char state;
char call[10];
unsigned short ul_type;
unsigned short dl_type;
char ul_name[32];
char dl_name[32];
char ul_port[32];
char dl_port[32];
char unused[92];
};
extern struct user User;
extern ax25io *NodeIo;
extern long IdleTimeout;
extern long ConnTimeout;
extern int ReConnectTo;
extern int LogLevel;
extern int EscChar;
extern int aliascmd;
extern char *Email;
extern char *HostName;
extern char *NodeId;
extern char *FlexId;
extern char *RoseId;
extern char *NrPort;
extern char *Prompt;
extern char *PassPrompt;
#define CMD_INTERNAL 1
#define CMD_ALIAS 2
#define CMD_EXTERNAL 3
struct cmd {
char *name;
int len;
int type;
int (*function) (int argc, char **argv);
char *command;
int flags;
int uid;
int gid;
char *path;
struct cmd *next;
};
extern struct cmd *Nodecmds;
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
/* in cmdparse.c */
void free_cmdlist(struct cmd *list);
extern void insert_cmd(struct cmd **list, struct cmd *new);
extern int add_internal_cmd(struct cmd **list, char *name, int len, int (*function) (int argc, char **argv));
/* extern char *expand_string(char *str, int argc, char **argv); */
extern int parse_args(char **argv, char *cmd);
extern int cmdparse(struct cmd *cmdp, char *cmdline);
/* in util.c */
extern void node_msg(const char *fmt, ...);
extern void node_perror(char *str, int err);
extern char *print_node(const char *alias, const char *call);
extern void node_log(int, const char *, ...);
/* in user.c */
extern void login_user(void);
extern void logout_user(void);
extern void update_user(void);
extern int user_list(int argc, char **argv);
extern int user_count(void);
extern int system_user_count(void);
/* in config.c */
extern int is_hidden(const char *port);
extern int check_perms(int what, unsigned long peer);
extern char *read_perms(struct user *up, unsigned long peer);
extern int read_config(void);
extern int get_escape(char *s);
/* in command.c */
void init_nodecmds(void);
extern void node_logout(char *reason);
extern int nuser_list(int argc, char **argv);
extern int do_bye(int argc, char **argv);
extern int do_escape(int argc, char **argv);
extern int do_help(int argc, char **argv);
extern int do_host(int argc, char **argv);
extern int do_ports(int argc, char **argv);
extern int do_sessions(int argc, char **argv);
extern int do_routes(int argc, char **argv);
extern int do_nodes(int argc, char **argv);
extern int do_status(int argc, char **argv);
extern int do_version(int argc, char **argv);
extern int do_last(int argc, char **last);
/* in gateway.c */
extern int do_connect(int argc, char **argv);
extern int do_finger(int argc, char **argv);
extern int do_ping(int argc, char **argv);
/* in router.c */
extern int do_links(int argc, char **argv);
extern int do_dest(int argc, char **argv);
/* in ipc.c */
extern int ipc_open(void);
extern int ipc_close(void);
extern int do_msg(int argc, char **argv);
/* in extcmd.c */
extern int extcmd(struct cmd *cmdp, char **argv);
/* in system.c */
extern int do_system(int argc, char **argv);
extern int examine_user(void);
extern void newmail(void);
extern void mailcheck(void);
extern void lastlog(void);
/* in jheard.c */
extern int do_jheard(int argc, char **argv);
extern int do_jlong(int argc, char **argv);
|