| 1 |
/* |
| 2 |
* Copyright (c) 2021 joshua stein <jcs@jcs.org> |
| 3 |
* |
| 4 |
* Permission to use, copy, modify, and distribute this software for any |
| 5 |
* purpose with or without fee is hereby granted, provided that the above |
| 6 |
* copyright notice and this permission notice appear in all copies. |
| 7 |
* |
| 8 |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 9 |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 10 |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| 11 |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| 12 |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| 13 |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| 14 |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| 15 |
*/ |
| 16 |
|
| 17 |
#ifndef __DB_H__ |
| 18 |
#define __DB_H__ |
| 19 |
|
| 20 |
#include <time.h> |
| 21 |
|
| 22 |
#define DB_CUR_VERS 22 |
| 23 |
|
| 24 |
#define SUBTEXT_CREATOR 'SUBT' |
| 25 |
#define DB_TYPE 'STDB' |
| 26 |
|
| 27 |
#define DB_TRUE 0x100 |
| 28 |
#define DB_FALSE 0x000 |
| 29 |
|
| 30 |
#define DB_CONFIG_RTYPE 'CONF' |
| 31 |
#define DB_USER_RTYPE 'USER' |
| 32 |
#define DB_BOARD_RTYPE 'BORD' |
| 33 |
#define DB_FOLDER_RTYPE 'FOLD' |
| 34 |
#define DB_VERS_RTYPE 'VERS' |
| 35 |
#define DB_MOTD_RTYPE 'MOTD' |
| 36 |
|
| 37 |
#define DB_USERNAME_LENGTH 16 |
| 38 |
|
| 39 |
#define SL_TYPE 'STSL' |
| 40 |
#define SL_LOG_RTYPE 'SLOG' |
| 41 |
#define SL_TALLY_RTYPE 'STLY' |
| 42 |
|
| 43 |
#define BOARD_FILENAME_EXT "brd" |
| 44 |
#define BOARD_THREAD_RTYPE 'BDTH' |
| 45 |
#define BOARD_POST_RTYPE 'BDPS' |
| 46 |
#define BOARD_FTN_POST_RTYPE 'BDFP' |
| 47 |
#define BOARD_FTN_MSGID_CACHE_RTYPE 'BDMC' |
| 48 |
#define BOARD_SORTED_ID_MAP_RTYPE 'BDDX' |
| 49 |
|
| 50 |
#define FOLDER_FILENAME_EXT "fld" |
| 51 |
#define FOLDER_FILE_RTYPE 'FILE' |
| 52 |
|
| 53 |
#define MAIL_SPOOL_TYPE 'STMS' |
| 54 |
#define MAIL_SPOOL_MESSAGE_RTYPE 'PMSG' |
| 55 |
|
| 56 |
#define FTN_SPOOL_PACKET_TYPE 'FNSP' |
| 57 |
|
| 58 |
#include "subtext.h" |
| 59 |
#include "bile.h" |
| 60 |
#include "board.h" |
| 61 |
#include "folder.h" |
| 62 |
#include "ipdb.h" |
| 63 |
#include "settings.h" |
| 64 |
|
| 65 |
struct config { |
| 66 |
char name[32]; |
| 67 |
char phone_number[32]; |
| 68 |
char location[64]; |
| 69 |
char hostname[32]; |
| 70 |
short telnet_port; |
| 71 |
short modem_port; |
| 72 |
char modem_init[96]; |
| 73 |
short max_idle_minutes; |
| 74 |
char timezone[8]; |
| 75 |
short open_signup; |
| 76 |
short max_login_seconds; |
| 77 |
short blanker_idle_seconds; |
| 78 |
short blanker_runtime_seconds; |
| 79 |
unsigned long trusted_proxy_ip; |
| 80 |
unsigned long modem_speed; |
| 81 |
unsigned short trusted_proxy_udp_port; |
| 82 |
short session_log_prune_days; |
| 83 |
char modem_parity[4]; |
| 84 |
char ftn_node_addr[32]; |
| 85 |
char ftn_hub_addr[32]; |
| 86 |
char ftn_hub_pkt_password[9]; |
| 87 |
char binkp_hostname[64]; |
| 88 |
unsigned short binkp_port; |
| 89 |
char binkp_password[32]; |
| 90 |
unsigned long binkp_interval_seconds; |
| 91 |
short binkp_delete_done; |
| 92 |
short timezone_utcoff; |
| 93 |
char ftn_network[16]; |
| 94 |
short mail_prune_days; |
| 95 |
unsigned long ftn_max_tossed_message_size; |
| 96 |
short max_sysop_idle_minutes; |
| 97 |
char ipdb_path[255]; |
| 98 |
short modem_rings; |
| 99 |
unsigned long syslog_ip; |
| 100 |
}; |
| 101 |
|
| 102 |
extern struct struct_field config_fields[]; |
| 103 |
extern size_t nconfig_fields; |
| 104 |
|
| 105 |
enum { |
| 106 |
DB_VIEW_MENU = 0, |
| 107 |
DB_VIEW_SHORTMENU, |
| 108 |
DB_VIEW_ISSUE, |
| 109 |
DB_VIEW_SIGNUP, |
| 110 |
DB_VIEW_PAGE_SYSOP, |
| 111 |
DB_VIEW_NO_FREE_NODES, |
| 112 |
DB_VIEW_SIGNOFF, |
| 113 |
DB_VIEW_MENU_OPTIONS, |
| 114 |
|
| 115 |
DB_VIEW_COUNT |
| 116 |
}; |
| 117 |
|
| 118 |
struct db { |
| 119 |
struct bile *bile; |
| 120 |
short fh; |
| 121 |
struct config config; |
| 122 |
struct username_cache *username_cache; |
| 123 |
short nusers; |
| 124 |
struct bile *sessions_bile; |
| 125 |
struct board *boards; |
| 126 |
short nboards; |
| 127 |
struct folder *folders; |
| 128 |
short nfolders; |
| 129 |
struct bile *mail_bile; |
| 130 |
struct ipdb_file *ipdb; |
| 131 |
char *views[DB_VIEW_COUNT]; |
| 132 |
}; |
| 133 |
|
| 134 |
struct db * db_open(Str255 file, short vrefnum, bool ignore_last); |
| 135 |
struct db * db_create(void); |
| 136 |
void db_close(struct db *tdb); |
| 137 |
void db_config_save(struct db *tdb); |
| 138 |
|
| 139 |
void db_cache_boards(struct db *tdb); |
| 140 |
struct bile * db_board_create(struct db *tdb, struct board *board, |
| 141 |
bool delete_first); |
| 142 |
void db_board_delete(struct db *tdb, struct board *board); |
| 143 |
|
| 144 |
void db_cache_folders(struct db *tdb); |
| 145 |
struct bile * db_folder_create(struct db *tdb, struct folder *folder, |
| 146 |
bool delete_first); |
| 147 |
void db_folder_delete(struct db *tdb, struct folder *folder); |
| 148 |
|
| 149 |
void db_cache_views(struct db *tdb); |
| 150 |
void db_view_write(struct db *tdb, short id, char *str, size_t size); |
| 151 |
|
| 152 |
#endif |