4 * This is the "Art Vandelay" module. It is an importer/exporter.
16 #include <sys/types.h>
24 #include "sysdep_decls.h"
25 #include "citserver.h"
28 #include "dynloader.h"
36 void artv_export_users_backend(struct usersupp *usbuf, void *data) {
38 cprintf("%d\n", usbuf->version);
39 cprintf("%d\n", usbuf->uid);
40 cprintf("%s\n", usbuf->password);
41 cprintf("%u\n", usbuf->flags);
42 cprintf("%ld\n", usbuf->timescalled);
43 cprintf("%ld\n", usbuf->posted);
44 cprintf("%d\n", usbuf->axlevel);
45 cprintf("%ld\n", usbuf->usernum);
46 cprintf("%ld\n", usbuf->lastcall);
47 cprintf("%d\n", usbuf->USuserpurge);
48 cprintf("%s\n", usbuf->fullname);
49 cprintf("%d\n", usbuf->USscreenwidth);
50 cprintf("%d\n", usbuf->USscreenheight);
51 cprintf("%d\n", usbuf->moderation_filter);
55 void artv_export_users(void) {
56 ForEachUser(artv_export_users_backend, NULL);
60 void artv_export_room_msg(long msgnum) {
61 cprintf("%ld\n", msgnum);
65 void artv_export_rooms_backend(struct quickroom *qrbuf, void *data) {
67 cprintf("%s\n", qrbuf->QRname);
68 cprintf("%s\n", qrbuf->QRpasswd);
69 cprintf("%ld\n", qrbuf->QRroomaide);
70 cprintf("%ld\n", qrbuf->QRhighest);
71 cprintf("%ld\n", qrbuf->QRgen);
72 cprintf("%u\n", qrbuf->QRflags);
73 cprintf("%s\n", qrbuf->QRdirname);
74 cprintf("%ld\n", qrbuf->QRinfo);
75 cprintf("%d\n", qrbuf->QRfloor);
76 cprintf("%ld\n", qrbuf->QRmtime);
77 cprintf("%d\n", qrbuf->QRep.expire_mode);
78 cprintf("%d\n", qrbuf->QRep.expire_value);
79 cprintf("%ld\n", qrbuf->QRnumber);
80 cprintf("%d\n", qrbuf->QRorder);
82 getroom(&CC->quickroom, qrbuf->QRname);
83 /* format of message list export is all message numbers output
84 * one per line terminated by a 0.
86 CtdlForEachMessage(MSGS_ALL, 0L, (-127), NULL, NULL,
87 artv_export_room_msg);
94 void artv_export_rooms(void) {
95 ForEachRoom(artv_export_rooms_backend, NULL);
99 void artv_export_floors(void) {
103 for (i=0; i < MAXFLOORS; ++i) {
107 cprintf("%u\n", flbuf.f_flags);
108 cprintf("%s\n", flbuf.f_name);
109 cprintf("%d\n", flbuf.f_ref_count);
110 cprintf("%d\n", flbuf.f_ep.expire_mode);
111 cprintf("%d\n", flbuf.f_ep.expire_value);
120 * Traverse the room file...
122 void artv_export_visits(void) {
124 struct cdbdata *cdbv;
126 cdb_rewind(CDB_VISIT);
128 while (cdbv = cdb_next_item(CDB_VISIT), cdbv != NULL) {
129 memset(&vbuf, 0, sizeof(struct visit));
130 memcpy(&vbuf, cdbv->ptr,
131 ((cdbv->len > sizeof(struct visit)) ?
132 sizeof(struct visit) : cdbv->len));
136 cprintf("%ld\n", vbuf.v_roomnum);
137 cprintf("%ld\n", vbuf.v_roomgen);
138 cprintf("%ld\n", vbuf.v_usernum);
139 cprintf("%ld\n", vbuf.v_lastseen);
140 cprintf("%u\n", vbuf.v_flags);
152 void artv_do_export(void) {
153 cprintf("%d Yikes.\n", LISTING_FOLLOWS);
155 /* export the config file */
157 cprintf("%s\n", config.c_nodename);
158 cprintf("%s\n", config.c_fqdn);
159 cprintf("%s\n", config.c_humannode);
160 cprintf("%s\n", config.c_phonenum);
161 cprintf("%d\n", config.c_bbsuid);
162 cprintf("%d\n", config.c_creataide);
163 cprintf("%d\n", config.c_sleeping);
164 cprintf("%d\n", config.c_initax);
165 cprintf("%d\n", config.c_regiscall);
166 cprintf("%d\n", config.c_twitdetect);
167 cprintf("%s\n", config.c_twitroom);
168 cprintf("%s\n", config.c_moreprompt);
169 cprintf("%d\n", config.c_restrict);
170 cprintf("%ld\n", config.c_msgbase);
171 cprintf("%s\n", config.c_bbs_city);
172 cprintf("%s\n", config.c_sysadm);
173 cprintf("%s\n", config.c_bucket_dir);
174 cprintf("%d\n", config.c_setup_level);
175 cprintf("%d\n", config.c_maxsessions);
176 cprintf("%s\n", config.c_net_password);
177 cprintf("%d\n", config.c_port_number);
178 cprintf("%d\n", config.c_ipgm_secret);
179 cprintf("%d\n", config.c_ep.expire_mode);
180 cprintf("%d\n", config.c_ep.expire_value);
181 cprintf("%d\n", config.c_userpurge);
182 cprintf("%d\n", config.c_roompurge);
183 cprintf("%s\n", config.c_logpages);
184 cprintf("%d\n", config.c_createax);
185 cprintf("%ld\n", config.c_maxmsglen);
186 cprintf("%d\n", config.c_min_workers);
187 cprintf("%d\n", config.c_max_workers);
188 cprintf("%d\n", config.c_pop3_port);
189 cprintf("%d\n", config.c_smtp_port);
190 cprintf("%d\n", config.c_default_filter);
192 /* Export the control file */
194 cprintf("control\n");
195 cprintf("%ld\n", CitControl.MMhighest);
196 cprintf("%u\n", CitControl.MMflags);
197 cprintf("%ld\n", CitControl.MMnextuser);
198 cprintf("%ld\n", CitControl.MMnextroom);
199 cprintf("%d\n", CitControl.version);
203 artv_export_floors();
204 artv_export_visits();
212 void artv_do_import(void) {
213 cprintf("%d command not yet implemented\n", ERROR);
219 void cmd_artv(char *cmdbuf) {
222 if (CtdlAccessCheck(ac_aide)) return; /* FIXME should be intpgm */
224 extract(cmd, cmdbuf, 0);
225 if (!strcasecmp(cmd, "export")) artv_do_export();
226 else if (!strcasecmp(cmd, "import")) artv_do_import();
227 else cprintf("%d illegal command\n", ERROR);
233 char *Dynamic_Module_Init(void)
235 CtdlRegisterProtoHook(cmd_artv, "ARTV", "import/export data store");