-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbbs.h
183 lines (153 loc) · 4.21 KB
/
bbs.h
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
174
175
176
177
178
179
180
181
182
183
#ifndef __BBS_H__
#define __BBS_H__
#include <time.h>
#include "lua/lua.h"
#include "lua/lauxlib.h"
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_STR "alpha"
#define NETWORK_FIDO 1
#define NETWORK_WWIV 2
#define TYPE_LOCAL_AREA 0
#define TYPE_NETMAIL_AREA 1
#define TYPE_ECHOMAIL_AREA 2
struct fido_addr {
unsigned short zone;
unsigned short net;
unsigned short node;
unsigned short point;
};
struct last10_callers {
char name[17];
char location[33];
time_t time;
}__attribute__((packed));
struct text_file {
char *name;
char *path;
};
struct door_config {
char *name;
char key;
char *command;
int stdio;
};
struct mail_area {
char *name;
char *path;
int read_sec_level;
int write_sec_level;
int type;
};
struct mail_conference {
char *name;
char *path;
char *tagline;
int networked;
int nettype;
int realnames;
int sec_level;
int mail_area_count;
struct mail_area **mail_areas;
struct fido_addr *fidoaddr;
int wwivnode;
};
struct file_sub {
char *name;
char *database;
char *upload_path;
int upload_sec_level;
int download_sec_level;
};
struct file_directory {
char *name;
char *path;
int sec_level;
int file_sub_count;
struct file_sub **file_subs;
};
struct bbs_config {
char *bbs_name;
char *sysop_name;
char *ansi_path;
char *bbs_path;
char *log_path;
char *script_path;
char *echomail_sem;
char *netmail_sem;
char *default_tagline;
char *irc_server;
int irc_port;
char *irc_channel;
char *external_editor_cmd;
int external_editor_stdio;
int nodes;
int newuserlvl;
int automsgwritelvl;
int mail_conference_count;
struct mail_conference **mail_conferences;
int door_count;
struct door_config **doors;
int file_directory_count;
struct file_directory **file_directories;
int text_file_count;
struct text_file **text_files;
};
struct sec_level_t {
int timeperday;
};
struct user_record {
int id;
char *loginname;
char *password;
char *firstname;
char *lastname;
char *email;
char *location;
int sec_level;
struct sec_level_t *sec_info;
time_t laston;
int timeleft;
int cur_mail_conf;
int cur_mail_area;
int cur_file_dir;
int cur_file_sub;
int timeson;
};
extern void automessage_write(int socket, struct user_record *user);
extern void automessage_display(int socket);
extern void dolog(char *fmt, ...);
extern void runbbs(int sock, char *config, char *ipaddress);
extern struct fido_addr *parse_fido_addr(const char *str);
extern void s_putchar(int socket, char c);
extern void s_putstring(int socket, char *c);
extern void s_displayansi_p(int socket, char *file);
extern void s_displayansi(int socket, char *file);
extern char s_getchar(int socket);
extern void s_readpass(int socket, char *buffer, int max);
extern void s_readstring(int socket, char *buffer, int max);
extern char s_getc(int socket);
extern void disconnect(int socket);
extern void display_info(int socket);
extern void display_last10_callers(int socket, struct user_record *user);
extern int save_user(struct user_record *user);
extern int check_user(char *loginname);
extern struct user_record *new_user(int socket);
extern struct user_record *check_user_pass(int socket, char *loginname, char *password);
extern void list_users(int socket, struct user_record *user);
extern void main_menu(int socket, struct user_record *user);
extern void mail_scan(int socket, struct user_record *user);
extern int mail_menu(int socket, struct user_record *user);
extern char *editor(int socket, struct user_record *user, char *quote, char *from);
extern char *external_editor(int socket, struct user_record *user, char *to, char *from, char *quote, char *qfrom, char *subject, int email);
extern int door_menu(int socket, struct user_record *user);
extern void rundoor(int socket, struct user_record *user, char *cmd, int stdio);
extern void bbs_list(int socket, struct user_record *user);
extern void chat_system(int sock, struct user_record *user);
extern int mail_getemailcount(struct user_record *user);
extern void send_email(int socket, struct user_record *user);
extern void list_emails(int socket, struct user_record *user);
extern int file_menu(int socket, struct user_record *user);
extern void settings_menu(int sock, struct user_record *user);
extern void lua_push_cfunctions(lua_State *L);
#endif