/* * Strukturen * und * Definitionen * */ /************************************* systemspezifisch !!!!! */ #include #define computersystem "Atari ST" typedef struct { int col_bg; int col_fg; int eff_col; int eff_mono; } COLOR_REP; typedef struct { int type ; /* Typ : 0 = Zeiger auf Brett */ /* 1 = Unterordner */ /* 2 = letzter Eintrag */ /* +256 = Systemeintrag */ /* nicht l”schbar */ long serial ; /* Seriennummer */ char show_level ; /* Anzeigen ab Level ... */ char name[30] ; /* 0 Name des Brettes */ /* 1 Name des Unterbrettes */ /* 2 Name des bergeordneten */ /* Brettes */ int nameaccess ; /* Zugangsschutz (nur Ordner) */ /* 0 = kein Zugangsschutz */ /* 1 = Zugangsschutz */ /* 2 = neg. Zugangsschutz */ int ibm68000; /* 0x1234 = no change */ char reserved[12] ; /* reserviert */ } FILEDIR ; /* Systemroot : ROOT.DIR FILEDIR dir[]={{256,0,8,"Userdaten" ,0,0x1234,""}, {256,1,8,"Mailboxen" ,0,0x1234,""}, {256,2,8,"Bretter" ,0,0x1234,""}, {256,3,0,"Mail" ,0,0x1234,""}, {256,4,8,"Unzustellbar",0,0x1234,""}, {...}, { 2,n,0,"" ,0,0x1234,""}}; */ typedef struct { char name[30] ; /* Name des Brettes */ char resdv[5] ; /* */ char remark[80] ; /* Anmerkung zum Brett */ time_t lastaccess ; /* Letzter Zugriff */ int usergrp; /* 0 = frei ; >=1 nur Usergrp. */ struct { unsigned write:4 ; /* Schreibzugriff ab Level */ unsigned read:4 ; /* Lesezugriff ab Level */ unsigned dir:4 ; /* Inhaltzugriff ab Level */ } access ; struct { unsigned group:4 ; /* Gruppe : 0 = ASCII */ /* 1 = Bin„r */ /* 2 = A+B */ /* 4 = nur lesen */ unsigned censor:4 ; /* Zensur : 0 = keine */ } pgc ; /* 1+ = bis Level */ long maxmsg ; /* maximale # Msgs */ time_t delntime ; /* l”sche ungel. ab Alter */ time_t deltime ; /* l”sche gel. ab Alter */ long serial ; /* Seriennummer */ int cryptmode ; /* ID des Codieralgorithmus */ int entered ; /* Anzahl der Verweise auf Brett */ int filesystem ; /* # des Filesystems (s.OWNBOXPAR) */ int nameaccess ; /* Zugangsschutz */ /* 0 = kein Zugangsschutz */ /* 1 = Zugangsschutz */ unsigned int cost; /* Default Gebhr zum Lesen */ char phcode[6] ; /* Netcode PhoenixNet */ char resvd[40] ; /* */ int ibm68000; /* 0x1234 = no change */ char codekey[10] ; /* Kodierschlssel */ int freedownload; /* freier Download */ char code[10]; /* Brettcode MagicNet */ char zercode[80]; /* Brettname Zerberus */ char usenetcode[80]; /* Brettname UseNet */ char omnicode[40]; /* Brettname OmniNet */ int realname; /* Realnamepflicht */ } FILEPAR ; typedef struct { int type ; /* Typ des Eintrags : */ /* 0 = ASCII */ /* 1 = Bin„r I */ /* Datei unter diesem */ /* Namen zu finden */ /* 2 = User */ /* 3 = Brett */ /* 4 = Box */ /* 5 = Bin„r II */ /* Datei unter Iserial.BIN */ /* zu finden */ char receiver[30] ; /* 0 Empf„nger */ /* 1 Brett */ /* 2 Vertreter */ /* 3 Verwalter */ /* 4 Sysop */ /* 5 Empf„nger */ char reply[80] ; /* 0 Reply auf ... */ char sender[30]; /* 0 Absendernode */ /* 1 Absendernode */ char sendername[30]; /* 0 Absender */ /* 1 Absender */ /* 2 Pažwort */ /* 3 Pažwort */ /* 4 Netzpažwort */ /* 5 Absender */ char topic[80] ; /* 0 Betreff */ /* 1 Betreff */ /* 2 Username */ /* 3 Brettname */ /* 4 Boxname */ /* 4 Betreff */ char route[30] ; /* 0 Routing */ /* 1 Dateiname */ /* 4 Routing ber */ /* 5 Routing */ time_t time ; /* 0 Einsortiert am/um */ /* 1 dito */ /* 2 letzter Anruf */ /* 3 letzter Schreibzugriff */ /* 4 letzter Poll */ /* 5 abgesendet */ long lines ; /* 0 Zeilen */ /* 1 Dateil„nge */ /* 2 Level */ /* 5 Dateil„nge */ long accesses ; /* 0 Lesezugriffe */ /* 1 Lesezugriffe */ /* 2 Anrufe */ /* 5 Lesezugriffe */ long offset ; /* 0 Offset in der Datendatei */ /* 1 Offset des Kommentars */ /* -1 : keiner */ /* 2 Seriennummer */ /* 3 Seriennummer */ /* 4 Seriennummer */ /* 5 Offset des Kommentars */ /* -1 : keiner */ char censor ; /* Zensierungsflag */ /* <>0 : muž noch zensiert */ /* werden */ char ack ; /* Empfangsbest„tigung */ /* 0 : keine */ /* + 1 : Empfang best„tigen */ /* + 2 : Sortieren best„tigen */ /* + 4 : Empfang best„tigt */ /* + 8 : Sortieren best„tigt */ long msg_length ; /* L„nge der Nachricht in Bytes */ long sorted1 ; /* alphab. Sortierung */ /* -1 : Ende der Liste */ int ansiflag ; /* 0 = ASCII */ /* 1 = VT52 */ /* 2 = ANSI */ long sorted2 ; /* Sortierung II */ long sorted3 ; /* Sortierung III */ char filename[30] ; /* Orginaldateiname */ unsigned int cost ; /* Gebhren zum Lesen der Msg */ long binindex ; /* Index fr Bin„rfiles */ struct { unsigned noreply; /* Kein Reply auf diese Nachricht */ unsigned replypm; /* Reply -> Brief */ } opt; char force_pm[60]; /* PMs an jdn. weiterleiten */ long force_am; /* AMs in Brett weiterleiten */ char rec_net[30]; /* Empf„ngernetzwerk */ char send_net[30]; /* Absendernetzwerk */ char realname[40]; /* Realname */ char msgid[70]; /* MSG-ID */ char replymsgid[70]; /* Reply auf MSG-ID */ char propaganda[60]; /* Werbetext f. Boxprogramm */ time_t time_creat; /* Datum der Erstellung */ long sys_info; /* Offset der Systeminfos */ long sys_len; /* L„nge der Systeminfos */ int ibm68000; /* 0x1234 = no change */ /* char routing_zer[256]; */ /* Routweg der Mail im Z-NETZ */ } FILEENTRY ; #define sysinfo_route 0 #define sysinfo_pointname 1 #define sysinfo_o_from 2 #define sysinfo_o_date 3 #define sysinfo_o_newsgr 4 #define sysinfo_o_subject 5 #define sysinfo_o_msgid 6 #define sysinfo_o_path 7 #define sysinfo_o_followup 8 #define sysinfo_o_expires 9 #define sysinfo_o_replyto 10 #define sysinfo_o_sender 11 #define sysinfo_o_refs 12 #define sysinfo_o_control 13 #define sysinfo_o_distrib 14 #define sysinfo_o_keywords 15 #define sysinfo_o_summary 16 #define sysinfo_o_approved 17 #define sysinfo_o_lines 18 #define sysinfo_o_xref 19 #define sysinfo_o_org 20 #define sysinfo_o_received 21 #define sysinfo_o_unknown 22 typedef struct { char announce[70] ; /* Ansagetext */ long upload ; /* Bytes ins. upgeloaded */ long download ; /* dito download */ long downfree ; /* Downloadfreiraum */ char proportion ; /* Up-/Downloadverh„ltnis */ long account ; /* Kontostand */ struct { unsigned emu:4 ; /* Terminalmode : 0 = ASCII */ /* 1 = VT52 */ /* 2 = VT100 */ unsigned uml:1 ; /* 1 = Umlaute */ unsigned close:1 ; /* 1 = Account gesperrt */ unsigned dir:1 ; /* 1 = neu->alt */ unsigned new:1 ; /* 1 = nur neue Nachrichten */ unsigned address:1; /* 1 = Adresse freigegeben */ unsigned time:1; /* 1 = Uhrzeit anzeigen */ unsigned fullscr:1; /* 1 = Fullscreeneditor */ unsigned sale:1; /* 1 = Gebhrenanzeige */ unsigned realname:1;/* 1 = Realname einfgen */ unsigned ashowf:1; /* 1 = 'B'/'I' nach 'B name' */ unsigned color:1; /* 1 = Farbdarstellung */ } xpar ; int usergrp; /* Bit 0 = Usergruppe 1 */ char surname[30] ; /* Nachname */ char firstname[30]; /* Vorname */ char street[40]; /* Straže */ char city[40]; /* PLZ, Ort */ char country[40]; /* Land (leer = Land der MB) */ char phone[40]; /* Telefonnr. */ char computer[40]; /* Computer */ char datebirth[12]; /* Geburtsdatum */ long serial ; /* Seriennummer */ clock_t sale ; /* Zeit fr 1 Einheit */ int paging ; /* Paging */ int groupsupervisor; /* Supervisor fr Usergrupen */ /* Bitbelegung wie usergrp */ long bytwritten; /* Bytes geschrieben */ long bytread; /* Bytes gelesen */ int menu_folder; /* vert. Gr”že Eintr„ge */ int menu_content; /* vert. Gr”že Inhalt */ int login_fail; /* Loginfehlversuche */ long circular_list; /* Rundschreibenliste existiert */ char protocoll[20]; /* šbertragungsprotokoll */ int ibm68000; /* 0x1234 = no change */ int video_height; /* Gr”že des Bildschirms in Zeilen */ long headershow; /* Headerinfos unterdrcken */ char codetab[8]; /* Name der Zeichentabelle */ } USERDATA ; typedef struct { char boxname[30]; /* Boxname */ char phone[40]; /* Telefonnr. */ long baud ; /* max. Baudrate */ int charge_n; /* Gebhr normal */ int charge_f; /* Gebhr eil */ int pre_sorted; /* Voraussortiertes File vorh. */ int optflags; /* optionale Flags */ long presorted; /* Anzahl voraussortierte Files */ unsigned char redials; /* Wahlwiederholungen */ int type; /* 0 = Box ; 1 = Point */ int initstring; /* # Initstring */ long serial; /* Seriennummer */ char place[50]; /* Standort */ int msg_flag; /* Flag fr vorhandene Eilmails */ char codekey[20]; /* Codierschlssel */ char packer[20]; /* Name des Packers */ char protocoll[20]; /* Name des Protokolls */ long net_id; /* Net ID */ int ibm68000; /* 0x1234 = no change */ int localflag; /* Box nicht ber Net erreichbar */ } BOXPAR ; /* Brettgruppen werden in einer separaten Datei gehalten. Mserial.NTC */ typedef struct { char magicstr[30]; /* Magic */ /* = "MultiBox (C) R.Stupp" */ int version; /* 1 : >= 1.4 */ char boxname[30]; /* Boxname MagicNet */ char boxnamep[30]; /* Boxname PhoenixNet */ char sysop[30]; /* Name des Sysop */ char boxnamezer[30]; /* Boxname Zerberus */ long baud; /* Maximale Baudrate */ char computer[40]; /* Computer */ char proportion; /* Default Up-/Downld.-Verh. */ long free; /* Default Freiraum */ clock_t time_l[10]; /* onlinezeit Level 0-9 */ clock_t filecrtime; /* Zeit f. autom. Brettercrunchen */ clock_t usercrtime; /* Zeit f. autom. Usercrunchen */ time_t lastfcrunch; /* Letzter File crunch */ time_t lastccrunch; /* Letzter User crunch */ char paths[20][40]; /* bis zu 20 Pfade, auf denen */ /* Mailboxdaten gehalten werden */ /* k”nnen. (Filesysteme) */ /* Leere Pfade werden ignoriert */ int net_ulevel; /* Mindestlevel fr NET-PMs */ int sale; /* Kosten fr eine Einheit (Pfg.) */ long nextuserial; /* N„chste Seriennummer f. User */ long nextfserial; /* dito Bretter */ long nextdserial; /* dito Ordner */ long zer_msgid; /* MSG-ID fr Zerberus */ struct { unsigned console:1 ; /* Console besetzt */ unsigned online:1 ; /* Box online */ unsigned warn:1 ; /* User warnen vor Pollzeiten */ unsigned prelogoff:1 ; /* User nicht reinlassen */ unsigned offhook:1 ; /* Anheben bei Consolenlogin */ } switches ; time_t online_from; /* Online von ... */ time_t online_to; /* Online bis ... */ int capt_cnt; /* Z„hler fr Captures */ char origin[70]; /* Origin */ long call_cnt; /* Z„hler Anrufe */ char lastuser[30]; /* letzter User */ char place[50]; /* Standort der Box */ char shellpath[80]; /* Shellprogramm */ char shellparam[30]; /* Shellparameter */ int autoeventcnt; /* Autoevent-Schlange Z„hler */ char modem_dial[30]; /* W„hlkommando frs Modem */ char arc_extr[10]; /* extract kommando fr ARC */ char arc_add[10]; /* add kommando fr ARC */ time_t today_date; /* Datum fr Statistik */ time_t today_logon; /* Datum fr Statistik */ long today_ams; /* neue AMs */ long today_pms; /* neue PMs */ long today_calls; /* Anrufe heute */ long today_files; /* neue Files */ long today_user; /* neue User */ time_t kickouttime; /* User um ... rausschmeižen */ int usergroups; /* eingerichtete Usergruppen */ char groupname[16][30]; /* Gruppennamen */ char handshake; /* Konfigurationswert f. RS232 */ char logoff_cmd[60]; /* Logoffkommando */ char phone[50]; /* Telefonnr. */ int sorted_flag; /* Bit 0 : User */ /* Bit 1 : Boxen */ long sort_user; /* 1. Index User */ long sort_box_a; /* 1. Index Boxen alph. */ long sort_box_t; /* 1. Index Boxen tele. */ int fmailbase; /* Grundgebhr Eilmails */ int const_baud; /* Flag fr konst. Baudrate */ char cent_rout_mag[30]; /* Brett f. Zentralrouting */ char phone_country[10]; /* Landesvorwahl */ char phone_city[20]; /* Vorwahl der Stadt */ long zer_len_pm; /* max. L„nge von PMs in Zerberus */ long zer_len_am; /* max. L„nge von AMs in Zerberus */ char external_editor[70]; /* Dateiname externer Editor */ int force_new_pw; /* Tage fr neues User-PW */ char actual_version[50]; /* aktuelle Versionsnummer */ char actual_vshort[50]; /* aktuelle Versionsnummer (kurz) */ int ibm68000; /* 0x1234 = no change */ int crypted_filedata; /* Brettdaten verschlsselt */ char filedata_codekey[10]; /* Codierschlssel Brettdaten */ char external_terminal[70]; /* externes Terminalprg. */ int shell_term; int shell_windflag; int cryptmode; /* ID Codieralgorithmus */ int downcalcmode; /* Modus z Berechnung Downl.fr. */ int colorsset; /* Farbdarstellung gesetzt */ COLOR_REP colors[20]; /* Farbdarstellung */ } OWNBOXPAR ; typedef struct { char inq_str[10][80]; /* Umfrage - Fragen */ int inq_yes[10]; /* Umfrage - ja */ int inq_no[10]; /* Umfrage - nein */ int inq_abs[10]; /* Umfrage - enthalten */ int inq_tot[10]; /* Umfrage - total */ int inq_level[10]; /* Umfrage - Mindestlevel */ int ibm68000; /* 0x1234 = no change */ char reserved[50]; /* reserviert */ } inq_type; typedef struct { time_t date ; /* Datum */ long calls ; /* Anrufe */ time_t logon ; /* Anrufe */ long ams ; /* AMs */ long pms ; /* PMs */ long files ; /* Files */ long user ; /* User */ int ibm68000; /* 0x1234 = no change */ char reserved[70] ; /* reserviert */ } STATIS ; typedef struct { time_t td ; /* Zeit , Datum */ char user[30] ; /* wer tat was ? */ int kind ; /* 0 = Login */ /* 1 = normaler Logoff */ /* 2 = imm. Logoff */ /* 3 = Loginfehler */ /* 4 = šbertragungsfehler */ /* 5 = Upload */ /* 6 = Download */ /* 7 = Nachricht geschrieben */ /* 8 = gecruncht */ /* 9 = Shellaufruf */ /* 10 = Anruf */ /* 11 = Userdaten ge„ndert */ /* 12 = Chat */ /* 13 = Brett gel”scht */ /* 14 = Brett angelegt */ /* 15 = Mailbox gel”scht */ /* 16 = Mailbox angelegt */ /* 17 = Point gel”scht */ /* 18 = Point angelegt */ /* 19 = Rausschmiž */ /* 20 = Timeout */ /* 21 = neuer User */ /* 22 = System montiert */ /* 23 = Carrier Lost */ /* 24 = Poll */ char additional[60]; /* zus. String */ int ibm68000; /* 0x1234 = no change */ char reserved[18]; /* reserviert */ } INFOBLK ; typedef struct { char number[10]; /* Vorwahl */ clock_t time_normal; /* Zeit fr 1 Einheit */ unsigned int charge_n; /* Kosten fr PM normal */ unsigned int charge_f; /* Kosten fr PM eil */ clock_t time_cheap; /* Zeit fr 1 Einheit */ int ibm68000; /* 0x1234 = no change */ } ZONE ; typedef struct { time_t eventtime; /* Uhrzeit */ char eventname[40]; /* Name des Events */ char execstr[80]; /* auszufhrender String */ time_t lastexecuted; /* zuletzt ausgefhrt */ int ibm68000; /* 0x1234 = no change */ char reserved[250]; /* reserviert */ } AUTOEVENT ; typedef struct { char name[10]; char strlen; void (*call)(int port); int min_level; char password[30]; int attribflag; /* Bit Bedeutung 0 Parameter 1 Zugangsschutz 2 versteckt 3 Alias 4 end of structure */ char aliasto[10]; int ibm68000; /* 0x1234 = no change */ char reserved[50]; } cmdparblk ; typedef struct { char ex_name[30]; char ex_file[60]; char ex_path[60]; char ex_par[60]; int ex_level; int ibm68000; /* 0x1234 = no change */ int terminal; /* Terminalemulation */ int windflag; /* kann im Fenster laufen */ int nocharred; int nocarwdg; char resvd[118]; } EXTERN ; typedef struct { char pak_name[20]; /* Name des Packers */ char pak_file[20]; /* Dateiname des Packers */ char pak_ext[4]; /* extension */ char pak_list[60]; /* Kommandostring */ /* verbose list */ char pak_add[60]; /* add to archive */ char pak_extract[60]; /* extract from ar. */ int ibm68000; /* 0x1234 = no change */ char reserved[510]; } PACKER; typedef struct { char pro_name[20]; /* Name des Protokolls */ char pro_file_rec[20]; /* Dateiname (rec. + bi) */ char pro_file_send[20]; /* Dateiname (send) */ int pro_type; /* 0 = undirektional */ /* (1 Programm) */ /* 1 = undirektional */ /* (2 Programme) */ /* 2 = bidirektional */ char pro_receive[60]; /* Kommandostring */ /* receive (bidir.) */ char pro_send[60]; /* send */ int ibm68000; /* 0x1234 = no change */ char reserved[510]; } PROTOCOLL; typedef struct { char name[20]; /* Name des Alias */ char replace[60]; /* ersetzt durch */ int ibm68000; /* 0x1234 = no change */ char reservd[126]; } ALIAS; typedef struct { char name[15]; long fileID; time_t t_creat; time_t t_lastedit; int ibm68000; char resvd[98]; } SCRIPT_DIR;