home *** CD-ROM | disk | FTP | other *** search
- #include "msgg.h"
- #include "twindow.h"
- #include "keys.h"
- #include "scrntitl.h"
-
- extern char msk78[];
- extern char mskdate[];
- extern char mskphone[];
- #define msk5 "_____"
- #define msk35 msk78+43
- #define msk36 msk78+42
- #define mskst msk35+33
- #define mskzip msk35+30
- #define mskcit msk35+11
- #define msk1 msk78+77
- #define msk2 msk78+76
- #define msk3 msk35+32
- #define msk4 msk35+31
- #define msk6 msk35+29
- #define msk47 msk78+31
- #define msk63 msk78+15
- #define msk15 msk78+63
- #define msk12 msk78+66
- #define msk58 msk78+20
- #define msk46 msk78+32
-
-
- void readconfig (void);
- void configure(void);
- void saveconfig(void);
- void newuserr(void);
- void bbs(void);
- void matrix(void);
- void setdefaults(void);
- void prompts(void);
- void miscel(void);
- void paths(void);
- void prepare_config(void);
- int window1(void);
- int window2(void);
- int window3(void);
- int window4(void);
- int prompt1(void);
- int prompt2(void);
- int prompt3(void);
- int addbackslash(char *,int);
- char * rstrip(char *);
- void quit(void);
- void quitnosave(void);
- void quitsave(void);
- int elevell(char *,int);
- int shltype(char *,int);
- int yesorno(char *,int);
- void fboardd(void);
- void mboardd(void);
- void params(void);
- void printscreen(void);
- void jumptodos(void);
-
-
- /* Global variables */
-
- extern struct _config conf; /* System configuration read from CONFIG.BBS */
- extern struct _user newuser;
- extern struct _logconfig logconf;
- extern char nonstop;
- extern unsigned char usemouse;
- extern int VERSION;
-
-
-
- void saveconfig (void) {
-
- FILE *fp;
- struct ffblk f;
- char both=0;
- register int x;
-
- newuser.pointid=0;
-
- conf.version=VERSION;
-
- if (!nonstop) {
- clear_message();
- cursor(0,25);
- prepare_config();
- }
-
- remove("config.bak");
- rename("config.bbs","config.bak");
-
- if(!(fp=fopen("config.bbs","wb")))
- {
- if (!nonstop) {
- goto savenew;
- }
- else {
- printf("Error writing config file");
- exit(1);
- }
- }
-
- rewind(fp);
- fwrite(&conf,sizeof(struct _config),1,fp);
- both=1;
-
- fclose(fp);
-
- savenew:
-
- if (nonstop==1) return;
-
- if(!logconf.loglimit) {
- error_message(" Awful hard to log on in 0 minutes... ");
- sleep(1);
- clear_message();
- }
- if(conf.nolmrs<50 || conf.nolmrs>10000) {
- error_message(" I'd check your number of LMRs if I were you... ");
- sleep(1);
- clear_message();
- }
- if(conf.packsize<1024) {
- error_message(" Ludicrous msg compression size. ");
- conf.packsize=1024;
- sleep(1);
- clear_message();
- }
- if(conf.commport>64) {
- error_message(" Ludicrous commport value...expect lockups. ");
- sleep(2);
- clear_message();
- }
- if(strlen(conf.homepath)>78 || strlen(conf.outpath)>78 || strlen(conf.menupath)>78
- || strlen(conf.messpath)>78 || strlen(conf.sysop)>35
- || strlen(conf.system)>63 || strlen(conf.logfile)>78
- || strlen(conf.edansi)>78 || strlen(conf.edline)>78
- || strlen(conf.edlocal)>78 || strlen(conf.quotestring)>3
- || strlen(conf.lastcaller)>35 || strlen(conf.origin)>58
- || strlen(conf.quote_file)>12 || strlen(conf.domain)>36
- || strlen(conf.alt_domain)>36 || strlen(conf.edgraph)>78
- || strlen(conf.nodelist)>78) {
- error_message(" Incorrectly terminated string field...expect lockups. ");
- sleep(2);
- clear_message();
- }
- for(x=0;x<10;x++) {
- if(strlen(conf.jumpfile[x])>12 || strlen(conf.subfile[x])>12) {
- error_message(" Incorrectly terminated file string...expect lockups. ");
- sleep(2);
- clear_message();
- break;
- }
- }
-
- if(!(fp=fopen("newuser.bbs","wb")))
- {
- if (!nonstop) {
- goto Tellem;
- }
- else {
- printf("Error writing logon config file");
- exit(1);
- }
- }
-
- rewind(fp);
- fwrite(&newuser,sizeof(struct _user),1,fp);
- fwrite(&logconf,sizeof(struct _logconfig),1,fp);
-
- fclose(fp);
- both=both+2;
-
- Tellem:
-
- if (nonstop) return;
- clear_message();
- switch (both) {
- case 3: any_message(" Saved Logon & Main configurations ");
- break;
- case 2: any_message(" Saved Logon configuration ");
- break;
- case 1: any_message(" Saved Main configuration ");
- break;
- case 0: any_message(" No configurations saved! ");
- }
-
- }
-
-
- char * rstrip(char *a) {
-
- while ((strlen(a)!=0) and (a[strlen(a)-1]==' ')) a[strlen(a)-1]=0;
- return a;
- }
-
-
- void prepare_config(void) {
-
- int register x;
-
- rstrip(newuser.name);
- rstrip(newuser.handle);
- rstrip(newuser.city);
- rstrip(newuser.state);
- rstrip(conf.homepath);
- rstrip(conf.mailpath);
- rstrip(conf.filepath);
- rstrip(conf.outpath);
- rstrip(conf.menupath);
- rstrip(conf.messpath);
- rstrip(conf.sysop);
- rstrip(conf.system);
- rstrip(conf.logfile);
- rstrip(conf.edansi);
- rstrip(conf.edline);
- rstrip(conf.edlocal);
- rstrip(conf.edgraph);
- rstrip(conf.lastcaller);
- rstrip(conf.mboard.name);
- rstrip(conf.mboard.forceto);
- rstrip(conf.nodelist);
- for(x=0;x<10;x++) {
- rstrip(conf.subfile[x]);
- rstrip(conf.jumpfile[x]);
- rstrip(conf.subkey[x]);
- rstrip(conf.jumpkey[x]);
- }
- rstrip(conf.fboard.name);
- rstrip(conf.fboard.dpath);
- rstrip(conf.fboard.upath);
- rstrip(conf.origin);
- if(conf.nolmrs>4095) {
- conf.nolmrs=4095;
- error_message(" High probability you screwed up your reconfiguration. RTFM. ");
- sleep(2);
- }
- }
-
-
-
- void jumptodos(void) {
-
- char middle[82];
- int drive;
- char dir[MAXDIR];
-
- printf("\x1b[2J Type `EXIT' to return to XCONFIG.\n");
- drive=getdisk();
- getcurdir(++drive,dir);
- spawnlp (P_WAIT,"command.com",NULL);
- setdisk (--drive);
- strcpy(middle,"\\");
- strcat(middle,dir);
- chdir(middle);
- printscreen();
- if(usemouse) {
- _AX=0;
- geninterrupt(0x33);
- _AX=2;
- geninterrupt(0x33);
- }
- }
-
- void printscreen (void) {
-
- int register x;
-
- printf("\x1b[2J");
- textattr(CYAN);
- cursor(0,1);
- cprintf("%s\r\n",TOP);
- cprintf("%s\r\n",ROW2);
- cprintf("%s\r\n",BOTTOM);
- cprintf("%s\r\n",TOP);
- for (x=5;x<22;x++) cprintf("%s\r\n",MIDDLE);
- cprintf("%s\r\n",BOTTOM);
- cprintf("%s\r\n",ROW23);
- cprintf("%s\r\n",ROW24);
- cputs(ROW25);
-
- }
-
-
-
-
- int prompt1(void) {
-
- WINDOW *wnd;
- FIELD *fld;
- int exitcode;
-
- char name [2];
- char handle [2];
- char phone1 [2];
- char phone2[2];
- char graphics[2];
- char ansiedit[2];
- char scrnclr[2];
- char pagepause[2];
- char commflag[2];
- char zipcode[2];
- char city[2];
- char state[2];
- char pass[2];
- char birth[2];
- char length[2];
- char width[2];
-
- if (logconf.name) strcpy(name,"X");
- else strcpy(name,"-");
- if (logconf.handle) strcpy(handle,"X");
- else strcpy(handle,"-");
- if (logconf.phone1) strcpy(phone1,"X");
- else strcpy(phone1,"-");
- if (logconf.phone2) strcpy(phone2,"X");
- else strcpy(phone2,"-");
- if (logconf.graphics) strcpy(graphics,"X");
- else strcpy(graphics,"-");
- if (logconf.ansiedit) strcpy(ansiedit,"X");
- else strcpy(ansiedit,"-");
- if (logconf.scrnclr) strcpy(scrnclr,"X");
- else strcpy(scrnclr,"-");
- if (logconf.pagepause) strcpy(pagepause,"X");
- else strcpy(pagepause,"-");
- if (logconf.commflag) strcpy(commflag,"X");
- else strcpy(commflag,"-");
- if (logconf.zipcode) strcpy(zipcode,"X");
- else strcpy(zipcode,"-");
- if (logconf.city) strcpy(city,"X");
- else strcpy(city,"-");
- if (logconf.state) strcpy(state,"X");
- else strcpy(state,"-");
- if (logconf.pass) strcpy(pass,"X");
- else strcpy(pass,"-");
- if (logconf.birth) strcpy(birth,"X");
- else strcpy(birth,"-");
- if (logconf.length) strcpy(length,"X");
- else strcpy(length,"-");
- if (logconf.width) strcpy(width,"X");
- else strcpy(width,"-");
-
- wnd=establish_window(0,2,20,35);
- set_title(wnd," Logon Prompts ");
- set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- display_window(wnd);
- wprompt(wnd,2,1,"Ask for Real Name?");
- wprompt(wnd,2,2,"Ask for Handle?");
- wprompt(wnd,2,3,"Ask for Phone#1?");
- wprompt(wnd,2,4,"Ask for Phone#2?");
- wprompt(wnd,2,5,"Ask for ANSI?");
- wprompt(wnd,2,6,"Ask for ANSI Editor?");
- wprompt(wnd,2,7,"Ask for Screen Clearing?");
- wprompt(wnd,2,8,"Ask for Page Pausing?");
- wprompt(wnd,2,9,"Ask for Special Flag?");
- wprompt(wnd,2,10,"Ask for Zip Code?");
- wprompt(wnd,2,11,"Ask for City?");
- wprompt(wnd,2,12,"Ask for State?");
- wprompt(wnd,2,13,"Ask for Password?");
- wprompt(wnd,2,14,"Ask for Birthdate?");
- wprompt(wnd,2,15,"Ask for Length?");
- wprompt(wnd,2,16,"Ask for Width?");
- init_template(wnd);
- fld=establish_field(wnd,28,1,msk1,name,'O');
- field_window(fld,"namep ",40,10);
- fld=establish_field(wnd,28,2,msk1,handle,'O');
- field_window(fld,"handlep ",40,10);
- fld=establish_field(wnd,28,3,msk1,phone1,'O');
- field_window(fld,"phone1p ",40,10);
- fld=establish_field(wnd,28,4,msk1,phone2,'O');
- field_window(fld,"phone2p ",40,10);
- fld=establish_field(wnd,28,5,msk1,graphics,'O');
- field_window(fld,"ansip ",40,10);
- fld=establish_field(wnd,28,6,msk1,ansiedit,'O');
- field_window(fld,"ansiedp ",40,10);
- fld=establish_field(wnd,28,7,msk1,scrnclr,'O');
- field_window(fld,"scrnclrp ",40,10);
- fld=establish_field(wnd,28,8,msk1,pagepause,'O');
- field_window(fld,"pagep ",40,10);
- fld=establish_field(wnd,28,9,msk1,commflag,'O');
- field_window(fld,"specp ",40,10);
- fld=establish_field(wnd,28,10,msk1,zipcode,'O');
- field_window(fld,"zipp ",40,10);
- fld=establish_field(wnd,28,11,msk1,city,'O');
- field_window(fld,"cityp ",40,10);
- fld=establish_field(wnd,28,12,msk1,state,'O');
- field_window(fld,"statep ",40,10);
- fld=establish_field(wnd,28,13,msk1,pass,'O');
- field_window(fld,"passp ",40,10);
- fld=establish_field(wnd,28,14,msk1,birth,'O');
- field_window(fld,"birthp ",40,10);
- fld=establish_field(wnd,28,15,msk1,length,'O');
- field_window(fld,"lengthp ",40,10);
- fld=establish_field(wnd,28,16,msk1,width,'O');
- field_window(fld,"widthp ",40,10);
- prep_template(wnd);
- exitcode=data_entry(wnd);
-
- logconf.name=(*name=='X');
- logconf.handle=(*handle=='X');
- logconf.phone1=(*phone1=='X');
- logconf.phone2=(*phone2=='X');
- logconf.graphics=(*graphics=='X');
- logconf.ansiedit=(*ansiedit=='X');
- logconf.scrnclr=(*scrnclr=='X');
- logconf.pagepause=(*pagepause=='X');
- logconf.commflag=(*commflag=='X');
- logconf.zipcode=(*zipcode=='X');
- logconf.city=(*city=='X');
- logconf.state=(*state=='X');
- logconf.pass=(*pass=='X');
- logconf.birth=(*birth=='X');
- logconf.length=(*length=='X');
- logconf.width=(*width=='X');
-
- delete_window(wnd);
- return (exitcode);
-
- }
-
-
- void miscel(void)
-
- {
-
- WINDOW *wnd;
- FIELD *fld;
- char locallog[2];
- char loglimit[4];
- char nameattempts[4];
- char passattempts[4];
- char minbaud[6];
- char ansibaud[6];
- WINDOW *instruct;
-
- clear_message();
- instruct=establish_window(25,22,3,21);
- set_border(instruct,2);
- set_title(instruct,"Logon Miscellaneous");
- set_colors(instruct,ALL,GREEN,BLACK,DIM);
- set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
- display_window(instruct);
- wprintf(instruct," [F1] for help ");
-
- sprintf(nameattempts,"%-hu",logconf.nameattempts);
- sprintf(passattempts,"%-hu",logconf.passattempts);
- sprintf(minbaud,"%-u",logconf.minbaud);
- sprintf(ansibaud,"%-u",conf.ansibaud);
- if (logconf.locallog==1) strcpy(locallog,"Y");
- else strcpy(locallog,"N");
-
- wnd=establish_window(6,6,10,54);
- set_border(wnd,3);
- set_title(wnd," Logon Miscellaneous ");
- set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- display_window(wnd);
- wprompt(wnd,2,1,"Do automatic logon in local mode? ");
- wprompt(wnd,2,2,"Minutes for logon procedure:");
- wprompt(wnd,2,3,"Number of attempts allowed to enter name:");
- wprompt(wnd,2,4,"Number of attempts allowed to enter password:");
- wprompt(wnd,2,5,"Minimum baud rate for callers:");
- wprompt(wnd,2,6,"Minimum baud rate for ANSI:");
- init_template(wnd);
- fld=establish_field(wnd,36,1,msk1,locallog,'A');
- field_window(fld,"local ",52,10);
- field_validate(fld,yesorno);
- fld=establish_field(wnd,31,2,mskst,loglimit,'N');
- field_window(fld,"loglim ",52,12);
- fld=establish_field(wnd,44,3,mskst,nameattempts,'N');
- field_window(fld,"namea ",52,1);
- fld=establish_field(wnd,48,4,mskst,passattempts,'N');
- field_window(fld,"passa ",52,2);
- fld=establish_field(wnd,33,5,mskzip,minbaud,'N');
- field_window(fld,"minbaud ",52,2);
- fld=establish_field(wnd,33,6,mskzip,ansibaud,'N');
- field_window(fld,"ansibaud ",52,3);
-
- sprintf(loglimit,"%-2hu",logconf.loglimit);
- prep_template(wnd);
- data_entry(wnd);
- delete_window(wnd);
- logconf.loglimit=(byte)atoi(loglimit);
- logconf.nameattempts=(byte)atoi(nameattempts);
- logconf.passattempts=(byte)atoi(passattempts);
- logconf.minbaud=(word)atol(minbaud);
- conf.ansibaud=(word)atol(ansibaud);
- if (*locallog=='Y')logconf.locallog=1;
- else logconf.locallog=0;
- delete_window(instruct);
-
- }
-
-
-
- void bbs(void)
-
- {
-
- WINDOW *wnd;
- FIELD *fld;
- WINDOW *instruct;
-
- clear_message();
- instruct=establish_window(25,22,3,21);
- set_border(instruct,2);
- set_title(instruct," General BBS ");
- set_colors(instruct,ALL,GREEN,BLACK,DIM);
- set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
- display_window(instruct);
- wprintf(instruct," [F1] for help ");
-
- wnd=establish_window(0,4,17,80);
- set_border(wnd,3);
- set_title(wnd," General BBS ");
- set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- display_window(wnd);
- wprompt(wnd,2,1,"SysOp's name:");
- wprompt(wnd,2,2,"System name:");
- wprompt(wnd,2,3,"Path/Name of Logfile:");
- wprompt(wnd,2,5,"Line Editor String:");
- wprompt(wnd,2,7,"Full Screen Editor String:");
- wprompt(wnd,2,9,"Local Editor String:");
- wprompt(wnd,2,11,"Graphics Editor String:");
- wprompt(wnd,2,13,"Last Caller:");
- init_template(wnd);
- fld=establish_field(wnd,17,1,msk35,conf.sysop,'a');
- field_window(fld,"sysop ",42,10);
- fld=establish_field(wnd,17,2,msk63,conf.system,'a');
- field_window(fld,"system ",42,12);
- fld=establish_field(wnd,0,4,msk78,conf.logfile,'A');
- field_window(fld,"logfile ",42,14);
- fld=establish_field(wnd,0,6,msk78,conf.edline,'a');
- field_window(fld,"edline ",42,2);
- fld=establish_field(wnd,0,8,msk78,conf.edansi,'a');
- field_window(fld,"edansi ",42,4);
- fld=establish_field(wnd,0,10,msk78,conf.edlocal,'a');
- field_window(fld,"edlocal ",42,5);
- fld=establish_field(wnd,0,12,msk78,conf.edgraph,'a');
- field_window(fld,"edgraph ",42,6);
- fld=establish_field(wnd,16,13,msk35,conf.lastcaller,'a');
- field_window(fld,"lastcaller",42,7);
-
- prep_template(wnd);
- data_entry(wnd);
- delete_window(wnd);
- delete_window(instruct);
- }
-
-
-
- void matrix(void)
-
- {
-
- WINDOW *wnd;
- FIELD *fld;
- char net[6];
- char node[6];
- char zone[6];
- char altnet[6];
- char altnode[6];
- char altzone[6];
- char netmailboard[6];
- char altnetboard[6];
- char domain[37];
- char altdomain[37];
- WINDOW *instruct;
-
- clear_message();
- instruct=establish_window(25,22,3,19);
- set_border(instruct,2);
- set_title(instruct," Matrix ");
- set_colors(instruct,ALL,GREEN,BLACK,DIM);
- set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
- display_window(instruct);
- wprintf(instruct," [F1] for help ");
-
- sprintf(net,"%-u",conf.net);
- sprintf(node,"%-u",conf.node);
- sprintf(zone,"%-hu",conf.zone);
- sprintf(altnet,"%-u",conf.alt_net);
- sprintf(altnode,"%-u",conf.alt_node);
- sprintf(altzone,"%-hu",conf.alt_zone);
- sprintf(netmailboard,"%-u",conf.netmailboard);
- sprintf(altnetboard,"%-u",conf.altnetboard);
- strcpy(domain,conf.domain);
- strcpy(altdomain,conf.alt_domain);
-
- wnd=establish_window(2,6,11,68);
- set_border(wnd,2);
- set_title(wnd," Matrix Information ");
- set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
- set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
- display_window(wnd);
- wprompt(wnd,2,1,"Zone:");
- wprompt(wnd,17,1,"Net:");
- wprompt(wnd,31,1,"Node:");
- wprompt(wnd,2,2,"Net Mail Board #:");
- wprompt(wnd,2,3,"Alternate Zone:");
- wprompt(wnd,27,3,"Alternate Net:");
- wprompt(wnd,2,4,"Alternate Node:");
- wprompt(wnd,27,4,"Alternate Net Mail Board #:");
- wprompt(wnd,2,5,"Primary address' domain:");
- wprompt(wnd,2,7,"Alternate address' domain:");
- init_template(wnd);
- fld=establish_field(wnd,9,1,mskzip,zone,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,23,1,mskzip,net,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,38,1,mskzip,node,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,21,2,mskzip,netmailboard,'N');
- field_window(fld,"netboard ",52,13);
- fld=establish_field(wnd,19,3,mskzip,altzone,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,43,3,mskzip,altnet,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,19,4,mskzip,altnode,'N');
- field_window(fld,"net ",52,13);
- fld=establish_field(wnd,56,4,mskzip,altnetboard,'N');
- field_window(fld,"altboard ",52,13);
- fld=establish_field(wnd,1,6,msk36,domain,'a');
- field_window(fld,"domain ",52,3);
- fld=establish_field(wnd,1,8,msk36,altdomain,'a');
- field_window(fld,"altdomain ",52,3);
-
- prep_template(wnd);
- data_entry(wnd);
- delete_window(wnd);
- conf.zone=(byte)atoi(zone);
- conf.net=(word)atoi(net);
- conf.node=(word)atoi(node);
- conf.alt_zone=(byte)atoi(altzone);
- conf.alt_net=(word)atoi(altnet);
- conf.alt_node=(word)atoi(altnode);
- conf.netmailboard=(word)atoi(netmailboard);
- conf.altnetboard=(word)atoi(altnetboard);
- lstrip(domain);
- rstrip(domain);
- lstrip(altdomain);
- rstrip(altdomain);
- strcpy(conf.domain,domain);
- strcpy(conf.alt_domain,altdomain);
- delete_window(instruct);
-
- }
-
-
- void newuserr (void)
-
- {
-
- int exitcode;
- signed char which=1;
- WINDOW *instruct;
-
- clear_message();
- instruct=establish_window(4,20,3,55);
- set_border(instruct,2);
- set_title(instruct,"Setup NewUsers");
- set_colors(instruct,ALL,GREEN,BLACK,DIM);
- set_colors(instruct,ACCENT,GREEN,WHITE,BRIGHT);
- display_window(instruct);
- wprintf(instruct," [PGUP] and [PGDN] to toggle windows, [F1] for help ");
-
- exitcode=window1();
- Loop:
- if (exitcode==ESC) {
- delete_window(instruct);
- return;
- }
- if (exitcode==PGUP) which--;
- if (exitcode==PGDN) which++;
- if (which<1) which=4;
- if (which>4) which=1;
-
- switch (which) {
- case 1: exitcode=window1();
- break;
- case 2: exitcode=window2();
- break;
- case 3: exitcode=window3();
- break;
- case 4: exitcode=window4();
- break;
- }
-
- goto Loop;
-
- }
-