home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / WWIV310S.ZIP / INIT.PAS < prev    next >
Pascal/Delphi Source File  |  1986-03-28  |  10KB  |  309 lines

  1. program init;
  2. {$V-} {$C-}
  3.  
  4.                       {*****************************}
  5.                       {Copyright (c) 1986 Wayne Bell}
  6.                       {*****************************}
  7.  
  8.  
  9. CONST strlen=160;
  10.       recv_buf_size=2048;
  11.  
  12. TYPE str=string[strlen];
  13.      restrictions=(rlogon,rchat,rvalidate,rbackspace,ramsg,rpostan,
  14.                    rpost,remail,rvoting,rmsg);
  15.      acrq='@'..'G';
  16.      newtyp=(rp,lt,rm);
  17.      deflts=(spcsr,onekey,wordwrap,pause);
  18.      pnr=record name:string[40]; number:string[14]; hs:boolean; end;
  19.      anontyp=(no,yes,forced,dearabby);
  20.      ansttype=(postn,emailn,pana,sanm,cosysop,lcosysop);
  21.      opts=(alert,smw,nomail);
  22.      slr=record
  23.            ttime:byte;
  24.            mallowed:integer;
  25.            emails,posts:byte;
  26.            anst:set of ansttype;
  27.          end;
  28.      messages=record
  29.                 ltr:char;
  30.                 number:integer;
  31.                 ext:byte;
  32.               end;
  33.      smalrec=record
  34.                name:string[25];
  35.                number:integer;
  36.              end;
  37.      userrec=record
  38.                name:string[25];
  39.                realname:string[14];
  40.                deleted:boolean;
  41.                pw:string[8];
  42.                ph:string[12];
  43.                waiting:byte;
  44.                laston:string[10];
  45.                loggedon:integer;
  46.                msgpost:integer;
  47.                emailsent:integer;
  48.                feedback:integer;
  49.                linelen:byte;
  50.                pagelen:byte;
  51.                defaults:set of deflts;
  52.                ontoday:byte;
  53.                illegal:byte;
  54.                cursor:string[10];
  55.                sl:byte;
  56.                ac:set of restrictions;
  57.                ar:set of acrq;
  58.                qscan:array[1..19] of messages;
  59.                qscn:array[1..19] of boolean;
  60.                macro:array[1..2] of string[79];
  61.                comptype:byte;
  62.                option:set of opts;
  63.                vote:array[1..9] of byte;
  64.                sbn:byte;
  65.                dsl:byte;
  66.                uploads,downloads:integer;
  67.                uk,dk:integer;
  68.              end;
  69.       boardrec=record
  70.                  name:string[25];
  71.                  filename:string[12];
  72.                  sl:byte;
  73.                  maxmsgs:byte;
  74.                  pw:string[10];
  75.                  anonymous:anontyp;
  76.                  ar:acrq;
  77.                  key:char;
  78.                end;
  79.       msgstat=(validated,unvalidated,deleted);
  80.       messagerec=record
  81.                    title:string[30];
  82.                    messagestat:msgstat;
  83.                    message:messages;
  84.                    owner:integer;
  85.                    date:integer;
  86.                    mage:byte;
  87.                  end;
  88.       systatrec=record
  89.                   boardpw:string[8];
  90.                   sysoppw:string[8];
  91.                   hmsg:messages;
  92.                   users:integer;
  93.                   lastdate:string[8];
  94.                   callernum:integer;
  95.                   activetoday:integer;
  96.                   callstoday:integer;
  97.                   msgposttoday:integer;
  98.                   emailtoday:integer;
  99.                   fbacktoday:integer;
  100.                   uptoday:integer;
  101.                   closedsystem:boolean;
  102.                 end;
  103.       mailrec=record
  104.                title:string[30];
  105.                 from,destin:integer;
  106.                 msg:messages;
  107.                 date:integer;
  108.                 mage:byte;
  109.               end;
  110.       gft=record
  111.             num:integer;
  112.             title:string[40];
  113.             filen:string[12];
  114.           end;
  115.       smr=record
  116.             msg:str;
  117.             destin:integer;
  118.           end;
  119.       vdatar=record
  120.                question:string[79];
  121.                numa:integer;
  122.                answ:array[0..9] of record
  123.                       ans:string[25];
  124.                       numres:integer;
  125.                     end;
  126.              end;
  127.       ulrec=record
  128.               name:string[25];
  129.               filename:string[12];
  130.               password:string[10];
  131.               dsl:byte;
  132.               maxfiles:integer;
  133.             end;
  134.  
  135. var sf:file of smalrec;
  136.     uf:file of userrec;
  137.     bf:file of boardrec;
  138.     mf:file of messagerec;
  139.     mailfile:file of mailrec;
  140.     slf,slf1:file of slr;
  141.     seclev:array[0..255] of slr;
  142.     systatf:file of systatrec;
  143.     systat:systatrec;
  144.     sr:smalrec;
  145.     buf,emailtitle,spd,irt,lastname,ll,cursor,i:str;
  146.     thisuser,user:userrec;
  147.     boards:boardrec;
  148.     fw,extramsgs,buf_start,buf_end,mread,board,numboards,t,usernum:integer;
  149.     pap,lil,realsl,ftoday,ptoday,etoday:integer;
  150.     c,ID:char;
  151.     hungup,useron,next,chatcall,expert,doneday,echo,hangup,incom,outcom:boolean;
  152.     extratime,timeon:real;
  153.     ch,quit:boolean;
  154.     recv_buffer:array[1..recv_buf_size] of byte;
  155.     smf:file of smr;
  156.     macok,lan:boolean;
  157.     x:file of str;
  158.     vdata:file of vdatar;
  159.     vd:vdatar;
  160.     ulf:file of ulrec;
  161.     fx:ulrec;
  162.     fi:text;
  163.     ns:pnr; fil:file of pnr;
  164.  
  165. function exist(fn:str):boolean;
  166. var f:file;
  167. begin
  168.   assign(f,fn);
  169.   {$I-} reset(f); {$I+}
  170.   exist:=(ioresult=0);
  171.   close(f);
  172. end;
  173.  
  174. procedure move(s:str);
  175. var s1,i:str; f,f1:text;
  176. begin
  177.   if not exist(s) then writeln('"',s,'" isn''t here.') else begin
  178.     writeln('  Moving '+s);
  179.     assign(f,s); s1:='gfiles\'+s; assign(f1,s1);
  180.     reset(f); rewrite(f1);
  181.     while not eof(f) do begin
  182.       readln(f,i); writeln(f1,i);
  183.     end;
  184.     close(f1); close(f);
  185.     erase(f);
  186.   end;
  187. end;
  188.  
  189. procedure make(s:str);
  190. var f:text;
  191. begin
  192.   if not exist('gfiles\'+s) then begin
  193.     writeln('  Creating: ',s);
  194.     assign(f,'gfiles\'+s);
  195.     rewrite(f);
  196.     writeln(f,'This is "'+s+'"');
  197.     close(f);
  198.   end;
  199. end;
  200.  
  201. procedure make1(s:str);
  202. var f:text;
  203. begin
  204.   if not exist('gfiles\'+s) then begin
  205.     writeln('  Creating: ',s);
  206.     assign(f,'gfiles\'+s);
  207.     rewrite(f);
  208.     writeln(f);
  209.     close(f);
  210.   end;
  211. end;
  212.  
  213. begin
  214.   clrscr;
  215.   if exist('gfiles\user.lst') then writeln('Already installed') else begin
  216.     writeln('WWIV v3.10 Initialization Program.');
  217.     writeln('Now beginning initialization.');
  218.     writeln('  Creating directories..');
  219.     mkdir('gfiles'); mkdir('msgs'); mkdir('dloads');
  220.     writeln('  Creating user files..');
  221.     assign(uf,'gfiles\user.lst'); assign(sf,'gfiles\names.lst');
  222.     assign(systatf,'gfiles\status');
  223.     rewrite(uf); write(uf,user);close(uf); rewrite(sf);
  224.     sr.number:=0; sr.name:='';
  225.     write(sf,sr);write(sf,sr);close(sf); rewrite(systatf);
  226.     with systat do begin boardpw:=''; sysoppw:='SYSOP';
  227.       hmsg.number:=-32767; hmsg.ltr:='A'; hmsg.ext:=1; users:=0;
  228.       lastdate:=''; callernum:=0; activetoday:=0; callstoday:=0; msgposttoday:=0;
  229.       emailtoday:=0; fbacktoday:=0; uptoday:=0; closedsystem:=false;
  230.     end;
  231.     write(systatf,systat); close(systatf);
  232.     make('WELCOME.MSG');
  233.     make('LOGON.MSG');
  234.     make('LOGOFF.MSG');
  235.     make('SYSTEM.MSG');
  236.     make('NEWUSER.MSG');
  237.     make1('USER.LOG');
  238.     make1('SYSOP.LOG');
  239.     make1('YSYSOP.LOG');
  240.     make1('BBSLIST.MSG');
  241.     make1('NONEWUSR.MSG');
  242.     writeln('  Creating board files..');
  243.     assign(bf,'gfiles\boards.dat');
  244.     with boards do begin
  245.       name:='General';
  246.       filename:='board1';
  247.       sl:=10;
  248.       maxmsgs:=50;
  249.       pw:='';
  250.       anonymous:=no;
  251.       ar:='@';
  252.       key:=' ';
  253.     end;
  254.     rewrite(bf); write(bf,boards); close(bf);
  255.     assign(ulf,'gfiles\uploads.dat'); rewrite(ulf);
  256.     fx.name:='Sysop'; fx.dsl:=100; fx.filename:='ubsysop'; fx.maxfiles:=50; fx.password:='';
  257.     write(ulf,fx);
  258.     fx.name:='Miscellaneous'; fx.dsl:=0; fx.filename:='ub1'; fx.maxfiles:=50; fx.password:='';
  259.     write(ulf,fx);
  260.     close(ulf);
  261.     assign(x,'gfiles\laston.fil'); rewrite(x);
  262.     i:='';
  263.     for t:=1 to 8 do write(x,i);
  264.     close(x);
  265.     assign(vdata,'gfiles\voting.dat');
  266.     rewrite(vdata);
  267.     vd.question:='<< NO QUESTION >>'; vd.numa:=0;
  268.     for t:=1 to 9 do write(vdata,vd);
  269.     close(vdata);
  270.     assign(mailfile,'gfiles\email.dat');
  271.     rewrite(mailfile);
  272.     close(mailfile);
  273.     assign(fi,'gfiles\trashcan.txt');
  274.     rewrite(fi); i:='FUCK'; writeln(fi,i); i:='SID VICIOUS'; writeln(fi,i);
  275.     i:='SYSOP'; writeln(fi,i); i:='JEFF THE RIPPER'; writeln(fi,i);
  276.     close(fi);
  277.     move('mainmenu.msg'); move('sysopmnu.msg');
  278.     move('dlmenu.msg'); move('dosmnu.msg'); move('help.msg');
  279.     if not exist('seclev.dat') then writeln('"seclev.dat" is missing.') else begin
  280.       writeln('  Moving seclev.dat');
  281.       assign(slf,'seclev.dat'); assign(slf1,'gfiles\seclev.dat');
  282.       reset(slf); rewrite(slf1);
  283.       for fw:=0 to 255 do begin read(slf,seclev[fw]); write(slf1,seclev[fw]); end;
  284.       close(slf1);
  285.       close(slf);
  286.       erase(slf);
  287.     end;
  288.     assign(fil,'gfiles\numbers.trm');
  289.     {$I-} reset(fil); {$I+}
  290.     if ioresult<>0 then begin
  291.       rewrite(fil);
  292.       ns.name:='========================================';
  293.       ns.number:='- --- --- ----';
  294.       ns.hs:=true;
  295.       for fw:=1 to 9 do write(fil,ns);
  296.     end; close(fil);
  297.     writeln('WWIV v3.10 initialization complete.');
  298.     writeln; writeln;
  299.     writeln('Thank you for using WWIV software.  A $25 donation is requested for using');
  300.     writeln('this software.  Please address any correspondences to:');
  301.     writeln;
  302.     writeln('             Wayne Bell');
  303.     writeln('             Box 636');
  304.     writeln('             904 Silver Spur Road');
  305.     writeln('             Rolling Hills Estates, CA  90274');
  306.   end;
  307. end.
  308.  
  309.