Renegade-1.19/RGUPDT1.PAS

777 lines
28 KiB
Plaintext
Raw Normal View History

2013-02-04 15:56:58 -08:00
{$M 49152,0,65536}
PROGRAM RGUPDT1;
USES
Crt,
Dos;
{$I RECORDS.PAS}
CONST
DYNY: BOOLEAN = FALSE;
TYPE
OldValidationRecordType =
{$IFDEF WIN32} PACKED {$ENDIF} RECORD
Description: STRING[25]; { description }
NewSL, { new SL }
NewDSL, { new DSL }
NewMenu: Byte; { User start out menu }
Expiration: Word; { days until expiration }
NewFP, { nothing }
NewCredit: LongInt; { new credit }
ExpireTo: Char; { validation level to expire to }
SoftAR, { TRUE=AR added to current, else replaces }
SoftAC: Boolean; { TRUE=AC " " " " " }
NewAR: ARFlagSet; { new AR }
NewAC: FlagSet; { new AC }
END;
OldGeneralRecordType =
{$IFDEF WIN32} PACKED {$ENDIF} RECORD
ForgotPWQuestion: STRING[70];
QWKWelcome, { QWK welcome file name }
QWKNews, { QWK news file name }
QWKGoodbye, { QWK goodbye file name }
Origin: STRING[50]; { Default Origin line }
DataPath, { DATA path }
MiscPath, { MISC path }
LogsPath, { LOGS path }
MsgPath, { MSGS path }
NodePath, { NODE list path }
TempPath, { TEMP path }
ProtPath, { PROT path }
ArcsPath, { ARCS path }
MultPath, { MULT path }
FileAttachPath, { directory for file attaches }
QWKLocalPath, { QWK path for local usage }
DefEchoPath, { default echomail path }
NetmailPath, { path to netmail }
BBSName: STRING[40]; { BBS name }
SysOpName: STRING[30]; { SysOp's name }
Version: STRING[20];
BBSPhone: STRING[12]; { BBS phone number }
LastDate: STRING[10]; { last system date }
PacketName, { QWK packet name }
BulletPrefix: STRING[8]; { default bulletins filename }
SysOpPW, { SysOp password }
NewUserPW, { newuser password }
MinBaudOverride, { override minimum baud rate }
QWKNetworkACS, { QWK network REP ACS }
LastOnDatACS,
SOP, { SysOp }
CSOP, { Co-SysOp }
MSOP, { Message SysOp }
FSOP, { File SysOp }
SPW, { SysOp PW at logon }
AddChoice, { Add voting choices acs }
NormPubPost, { make normal public posts }
NormPrivPost, { send normal e-mail }
AnonPubRead, { see who posted public anon }
AnonPrivRead, { see who sent anon e-mail }
AnonPubPost, { make anon posts }
AnonPrivPost, { send anon e-mail }
SeeUnval, { see unvalidated files }
DLUnval, { DL unvalidated files }
NoDLRatio, { no UL/DL ratio }
NoPostRatio, { no post/call ratio }
NoFileCredits, { no file credits checking }
ULValReq, { uploads require validation }
TeleConfMCI, { ACS access for MCI codes while teleconfin' }
OverrideChat, { override chat hours }
NetMailACS, { do they have access to netmail? }
Invisible, { Invisible mode? }
FileAttachACS, { ACS to attach files to messages }
ChangeVote: ACString; { ACS to change their vote }
MaxPrivPost, { max email can send per call }
MaxFBack, { max feedback per call }
MaxPubPost, { max posts per call }
MaxChat, { max sysop pages per call }
MaxWaiting, { max mail waiting }
CSMaxWaiting, { max mail waiting for Co-SysOp + }
MaxMassMailList,
MaxLogonTries, { tries allowed for PW's at logon }
SysOpColor, { SysOp color in chat mode }
UserColor, { user color in chat mode }
SliceTimer,
MaxBatchDLFiles,
MaxBatchULFiles,
Text_Color, { color OF standard text }
Quote_Color, { color OF quoted text }
Tear_Color, { color OF tear line }
Origin_Color, { color OF origin line }
BackSysOpLogs, { days to keep SYSOP##.LOG }
EventWarningTime, { minutes before event to warn user }
WFCBlankTime, { minutes before blanking WFC menu }
AlertBeep, { time between alert beeps - Was Integer }
FileCreditComp, { file credit compensation ratio }
FileCreditCompBaseSize, { file credit area compensation size }
ULRefund, { percent OF time to refund on ULs }
GlobalMenu,
AllStartMenu,
ShuttleLogonMenu,
NewUserInformationMenu,
FileListingMenu,
MessageReadMenu,
CurWindow, { type OF SysOp window in use }
SwapTo: Byte; { Swap where? }
LowTime, { SysOp begin minute (in minutes) }
HiTime, { SysOp END time }
DLLowTime, { normal downloading hours begin.. }
DLHiTime, { ..and END }
MinBaudLowTime, { minimum baud calling hours begin.. }
MinBaudHiTime, { ..and END }
MinBaudDLLowTime, { minimum baud downloading hours begin.. }
MinBaudDLHiTime, { ..and END }
MinSpaceForPost, { minimum drive space left to post }
MinSpaceForUpload, { minimum drive space left to upload }
NewApp, { send new user application to # }
TimeOutBell, { minutes before timeout beep }
TimeOut, { minutes before timeout }
ToSysOpDir, { SysOp file area }
CreditMinute, { Credits per minute }
CreditPost, { Credits per post }
CreditEmail, { Credits per Email sent }
CreditFreeTime, { Amount OF "Free" time given to user at logon }
NumUsers, { number OF users }
PasswordChange, { change password at least every x days }
RewardRatio, { % OF file points to reward back }
CreditInternetMail, { cost for Internet mail }
BirthDateCheck: Integer; { check user's birthdate every xx logons }
MaxQWKTotal, { max msgs in a packet, period }
MaxQWKBase, { max msgs in a area }
DaysOnline: Word; { days online }
MinimumBaud, { minimum baud rate to logon }
MinimumDLBaud, { minimum baud rate to download }
MaxDepositEver,
MaxDepositPerDay,
MaxWithdrawalPerDay,
CallerNum, { system caller number }
RegNumber, { registration number }
TotalCalls, { incase different from callernum }
TotalUsage, { total usage in minutes }
TotalPosts, { total number OF posts }
TotalDloads, { total number OF dloads }
TotalUloads, { total number OF uloads }
MinResume, { min K to allow resume-later }
MaxInTemp: LongInt; { max K allowed in TEMP }
AllowAlias, { allow handles? }
PhonePW, { phone number password in logon? }
LocalSec, { use local security? }
GlobalTrap, { trap everyone's activity? }
AutoChatOpen, { automatically open chat buffer? }
AutoMInLogon, { Auto-Message at logon? }
BullInLogon, { bulletins at logon? }
YourInfoInLogon, { "Your Info" at logon? }
OffHookLocalLogon, { phone off-hook for local logons? }
ForceVoting, { manditory voting? }
CompressBases, { "compress" file/msg area numbers? }
SearchDup, { search for dupes files when UL? }
ForceBatchDL,
LogonQuote,
UserAddQuote,
StripCLog, { strip colors from SysOp log? }
SKludge, { show kludge lines? }
SSeenby, { show SEEN-BY lines? }
SOrigin, { show origin line? }
AddTear, { show tear line? }
ShuttleLog, { Use Shuttle Logon? }
ClosedSystem, { Allow new users? }
SwapShell, { Swap on shell? }
UseEMS, { use EMS for overlay }
UseBios, { use BIOS for video output }
UseIEMSI, { use IEMSI }
ULDLRatio, { use UL/DL ratios? }
FileCreditRatio, { use auto file-credit compensation? }
ValidateAllFiles, { validate files automatically? }
FileDiz, { Search/Import file_id.diz }
SysOpPword, { check for sysop password? }
TrapTeleConf, { Trap teleconferencing to ROOMx.TRP? }
IsTopWindow, { is window at top OF screen? }
ReCompress, { recompress like archives? }
RewardSystem, { use file rewarding system? }
TrapGroup, { record group chats? }
QWKTimeIgnore, { ignore time remaining for qwk download? }
NetworkMode, { Network mode ? }
WindowOn, { is the sysop window on? }
ChatCall, { Whether system keeps beeping after chat}
DailyLimits, { Daily file limits on/off }
MultiNode, { enable multinode support }
PerCall, { time limits are per call or per day?}
TestUploads: Boolean; { perform integrity tests on uploads? }
FileArcInfo:
ARRAY [1..MaxArcs] OF FileArcInfoRecordType; { archive specs }
FileArcComment:
ARRAY [1..3] OF STRING[40]; { BBS comment files for archives }
Aka: ARRAY [0..20] OF
{$IFDEF WIN32} PACKED {$ENDIF} RECORD { 20 Addresses }
Zone, { 21st is for UUCP address }
Net,
Node,
Point: Word;
END;
NewUserToggles: ARRAY [1..20] OF Byte;
OldValidation: ARRAY ['A'..'Z'] OF
OldValidationRecordType; { Validation records A - Z }
Macro: ARRAY [0..9] OF STRING[100]; { sysop macros }
Netattribute: NetAttribs; { default netmail attribute }
TimeAllow, { time allowance }
CallAllow, { call allowance }
DLRatio, { # ULs/# DLs ratios }
DLKRatio, { DLk/ULk ratios }
PostRatio, { posts per call ratio }
DLOneday, { Max number OF dload files in one day}
DLKOneDay: SecurityRangeType; { Max k downloaded in one day}
END;
function sqoutsp(s:string):string;
begin
while (pos(' ',s)>0) do delete(s,pos(' ',s),1);
sqoutsp:=s;
end;
function exist(fn: astr): boolean;
var
srec: searchrec;
begin
findfirst(sqoutsp(fn),anyfile,srec);
exist := (doserror = 0);
end;
FUNCTION SYN(B: BOOLEAN): STRING;
BEGIN
IF (B) THEN
SYN := 'Yes'
ELSE
SYN := 'No ';
END;
FUNCTION YN: BOOLEAN;
VAR
C: CHAR;
BEGIN
Write(SQOutSp(SYN(DYNY)));
REPEAT
C := UpCase(Char(ReadKey));
UNTIL (C IN ['Y','N',^M]);
IF (DYNY) AND (C <> 'N') THEN
C := 'Y';
IF (DYNY) AND (C = 'N') THEN
Write(#8#8#8'No ')
ELSE IF (NOT DYNY) AND (C = 'Y') THEN
Write(#8#8'Yes');
WriteLn;
YN := (C = 'Y');
DYNY := FALSE;
end;
FUNCTION PYNQ(CONST S: AStr): BOOLEAN;
BEGIN
Write(S);
PYNQ := YN;
END;
FUNCTION Caps(s: STRING): STRING;
VAR
Counter: Integer; { must be Integer }
BEGIN
IF (s[1] IN ['a'..'z']) THEN
Dec(s[1],32);
FOR Counter := 2 TO Length(s) DO
IF (s[Counter - 1] IN ['a'..'z','A'..'Z']) THEN
IF (s[Counter] IN ['A'..'Z']) THEN
Inc(s[Counter],32)
ELSE
ELSE
IF (s[Counter] IN ['a'..'z']) THEN
Dec(s[Counter],32);
Caps := s;
END;
FUNCTION IntToStr(L: LongInt): STRING;
VAR
S: STRING[11];
BEGIN
Str(L,S);
IntToStr := S;
END;
FUNCTION ReadUsers(OldGeneral: OldGeneralRecordType): Boolean;
VAR
TFile: Text;
UserFile: FILE OF UserRecordType;
User: UserRecordType;
RecNum,
RecNum1,
RecNum2: Integer;
BEGIN
Assign(UserFile,OldGeneral.DataPath+'USERS.DAT');
Reset(UserFile);
Write('Number of users with invalid expiration setup ... ');
Assign(TFile,'EXPIRE.TXT');
ReWrite(TFile);
WriteLn(TFile,'Users with invalid expiration setup:');
Writeln(TFile,'');
RecNum1 := 0;
RecNum := 0;
WHILE (RecNum <= (FileSize(UserFile) - 1)) DO
BEGIN
Seek(UserFile,RecNum);
Read(UserFile,User);
IF (User.Expiration = 0) AND (User.ExpireTo <> ' ') OR
(User.Expiration <> 0) AND (User.ExpireTo = ' ') THEN
BEGIN
WriteLn(TFile,Caps(User.Name)+' #'+IntToStr(RecNum));
Inc(RecNum1);
END;
Inc(RecNum);
END;
WriteLn(TFile);
Close(TFile);
IF (RecNum1 = 0) THEN
Erase(TFile);
WriteLn(IntToStr(RecNum1));
Write('Number of users with invalid expire to key ... ');
Assign(TFile,'KEY.TXT');
ReWrite(TFile);
WriteLn(TFile,'Users with invalid expire to keys:');
WriteLn(TFile,'');
Reset(UserFile);
RecNum2 := 0;
RecNum := 0;
WHILE (RecNum <= (FileSize(UserFile) - 1)) DO
BEGIN
Seek(UserFile,RecNum);
Read(UserFile,User);
IF (User.ExpireTo <> ' ') THEN
IF (OldGeneral.OldValidation[User.ExpireTo].Description = '') THEN
BEGIN
WriteLn(TFile,Caps(User.Name)+' #'+IntToStr(RecNum));
Inc(RecNum2);
END;
Inc(RecNum);
END;
Close(TFile);
IF (RecNum2 = 0) THEN
Erase(TFile);
WriteLn(IntToStr(RecNum2));
Close(UserFile);
ReadUsers := (RecNum1 = 0) AND (RecNum2 = 0);
END;
PROCEDURE CreateValidationRec(OldGeneral: OldGeneralRecordType);
VAR
ValidationFile: FILE OF ValidationRecordType;
Validation: ValidationRecordType;
UserFile: FILE OF UserRecordType;
User: UserRecordType;
C: Char;
BEGIN
Write('Creating "VALIDATE.DAT" file ... ');
Assign(UserFile,OldGeneral.DataPath+'USERS.DAT');
Reset(UserFile);
Seek(UserFile,0);
Read(UserFile,User);
Close(UserFile);
Assign(ValidationFile,OldGeneral.DataPath+'VALIDATE.DAT');
ReWrite(ValidationFile);
FOR C := 'A' TO 'Z' DO
IF (OldGeneral.OldValidation[C].Description <> '') THEN
BEGIN
WITH Validation DO
BEGIN
IF (C = 'A') THEN
Key := '!'
ELSE
Key := C;
IF (OldGeneral.OldValidation[C].Expiration = 0) THEN
ExpireTo := ' '
ELSE
ExpireTo := OldGeneral.OldValidation[C].ExpireTo;
IF (C = 'A') THEN
Description := 'New User Validation'
ELSE
Description := OldGeneral.OldValidation[C].Description;
UserMsg := 'You have been validated, enjoy the system!';
IF (OldGeneral.OldValidation[C].NewSL < User.SL) THEN
NewSL := User.SL
ELSE
NewSL := OldGeneral.OldValidation[C].NewSL;
IF (OldGeneral.OldValidation[C].NewDSL < User.DSL) THEN
NewDSL := User.DSL
ELSE
NewDSL := OldGeneral.OldValidation[C].NewDSL;
NewMenu := OldGeneral.OldValidation[C].NewMenu;
IF (OldGeneral.OldValidation[C].ExpireTo = ' ') THEN
Expiration := 0
ELSE
Expiration := OldGeneral.OldValidation[C].Expiration;
NewFP := OldGeneral.OldValidation[C].NewFP;
NewCredit := OldGeneral.OldValidation[C].NewCredit;
SoftAR := OldGeneral.OldValidation[C].SoftAR;
SoftAC := OldGeneral.OldValidation[C].SoftAR;
NewAR := OldGeneral.OldValidation[C].NewAR;
NewAC := OldGeneral.OldValidation[C].NewAC;
END;
Write(ValidationFile,Validation);
END;
Close(ValidationFile);
Writeln('Done');
END;
PROCEDURE ConvertGeneralRec(OldGeneral: OldGeneralRecordType);
VAR
OldGeneralFile: FILE OF OldGeneralRecordType;
GeneralFile: FILE OF GeneralRecordType;
General: GeneralRecordType;
C: Char;
Counter: Byte;
BEGIN
Write('Converting "RENEGADE.DAT" file ... ');
Assign(OldGeneralFile,'RENEGADE.DAT');
Reset(OldGeneralFile);
Assign(GeneralFile,'RENEGADE.NEW');
ReWrite(GeneralFile);
Seek(OldGeneralFile,0);
Read(OldGeneralFile,OldGeneral);
FillChar(General,SizeOf(General),0);
WITH General DO
BEGIN
ForgotPWQuestion := OldGeneral.ForgotPWQuestion;
QWKWelcome := OldGeneral.QWKWelcome;
QWKNews := OldGeneral.QWKNews;
QWKGoodbye := OldGeneral.QWKGoodbye;
Origin := OldGeneral.Origin;
DataPath := OldGeneral.DataPath;
MiscPath := OldGeneral.MiscPath;
LogsPath := OldGeneral.LogsPath;
MsgPath := OldGeneral.MsgPath;
NodePath := OldGeneral.NodePath;
TempPath := OldGeneral.TempPath;
ProtPath := OldGeneral.ProtPath;
ArcsPath := OldGeneral.ArcsPath;
MultPath := OldGeneral.MultPath;
FileAttachPath := OldGeneral.FileAttachPath;
QWKLocalPath := OldGeneral.QWKLocalPath;
DefEchoPath := OldGeneral.DefEchoPath;
NetmailPath := OldGeneral.NetMailPath;
BBSName := OldGeneral.BBSName;
SysOpName := OldGeneral.SysOpName;
Version := Ver;
BBSPhone := OldGeneral.BBSPhone;
LastDate := OldGeneral.LastDate;
PacketName := OldGeneral.PacketName;
BulletPrefix := OldGeneral.BulletPrefix;
SysOpPW := OldGeneral.SysOpPw;
NewUserPW := OldGeneral.NewUserPW;
MinBaudOverride := OldGeneral.MinBaudOverride;
QWKNetworkACS := OldGeneral.QWKNetworkACS;
LastOnDatACS := OldGeneral.LastOnDatACS;
SOP := OldGeneral.SOP;
CSOP := OldGeneral.CSOP;
MSOP := OldGeneral.MSOP;
FSOP := OldGeneral.FSOP;
SPW := OldGeneral.SPW;
AddChoice := OldGeneral.AddChoice;
NormPubPost := OldGeneral.NormPubPost;
NormPrivPost := OldGeneral.NormPrivPost;
AnonPubRead := OldGeneral.AnonPubPost;
AnonPrivRead := OldGeneral.AnonPrivRead;
AnonPubPost := OldGeneral.AnonPubPost;
AnonPrivPost := OldGeneral.AnonPrivPost;
SeeUnval := OldGeneral.SeeUnVal;
DLUnval := OldGeneral.DLUnval;
NoDLRatio := OldGeneral.NODLRatio;
NoPostRatio := OldGeneral.NoPostRatio;
NoFileCredits := OldGeneral.NoFileCredits;
ULValReq := OldGeneral.ULValReq;
TeleConfMCI := OldGeneral.TeleConfMCI;
OverrideChat := OldGeneral.OverrideChat;
NetMailACS := OldGeneral.NetMailACS;
Invisible := OldGeneral.Invisible;
FileAttachACS := OldGeneral.FileAttachACS;
ChangeVote := OldGeneral.ChangeVote;
MaxPrivPost := OldGeneral.MaxPrivPost;
MaxFBack := OldGeneral.MaxFBack;
MaxPubPost := OldGeneral.MaxPubPost;
MaxChat := OldGeneral.MaxChat;
MaxWaiting := OldGeneral.MaxWaiting;
CSMaxWaiting := OldGeneral.CSMaxWaiting;
MaxMassMailList := OldGeneral.MaxMassMailList;
MaxLogonTries := OldGeneral.MaxLogonTries;
SysOpColor := OldGeneral.SysOpColor;
UserColor := OldGeneral.UserColor;
SliceTimer := OldGeneral.SliceTimer;
MaxBatchDLFiles := OldGeneral.MaxBatchDLFiles;
MaxBatchULFiles := OldGeneral.MaxBatchULFiles;
Text_Color := OldGeneral.Text_Color;
Quote_Color := OldGeneral.Quote_Color;
Tear_Color := OldGeneral.Tear_Color;
Origin_Color := OldGeneral.Origin_Color;
BackSysOpLogs := OldGeneral.BackSysOpLogs;
EventWarningTime := OldGeneral.EventWarningTime;
WFCBlankTime := OldGeneral.WFCBlankTime;
AlertBeep := OldGeneral.AlertBeep;
FileCreditComp := OldGeneral.FileCreditComp;
FileCreditCompBaseSize := OldGeneral.FileCreditCompBaseSize;
ULRefund := OldGeneral.ULRefund;
GlobalMenu := OldGeneral.GlobalMenu;
AllStartMenu := OldGeneral.AllStartMenu;
ShuttleLogonMenu := OldGeneral.ShuttleLogonMenu;
NewUserInformationMenu := OldGeneral.NewUserInformationMenu;
FileListingMenu := OldGeneral.FileListingMenu;
MessageReadMenu := OldGeneral.MessageReadMenu;
CurWindow := OldGeneral.CurWindow;
SwapTo := OldGeneral.SwapTo;
LowTime := OldGeneral.LowTime;
HiTime := OldGeneral.HiTime;
DLLowTime := OldGeneral.DLLowTime;
DLHiTime := OldGeneral.DLHiTime;
MinBaudLowTime := OldGeneral.MinBaudLowTime;
MinBaudHiTime := OldGeneral.MinBaudHiTime;
MinBaudDLLowTime := OldGeneral.MinBaudDLLowTime;
MinBaudDLHiTime := OldGeneral.MinBaudDLHiTime;
MinSpaceForPost := OldGeneral.MinSpaceForPost;
MinSpaceForUpload := OldGeneral.MinSpaceForUpload;
NewApp := OldGeneral.NewApp;
TimeOutBell := OldGeneral.TimeOutBell;
TimeOut := OldGeneral.TimeOut;
ToSysOpDir := OldGeneral.ToSysOpDir;
CreditMinute := OldGeneral.CreditMinute;
CreditPost := OldGeneral.CreditPost;
CreditEmail := OldGeneral.CreditEmail;
CreditFreeTime := OldGeneral.CreditFreeTime;
NumUsers := OldGeneral.NumUsers;
PasswordChange := OldGeneral.PasswordChange;
RewardRatio := OldGeneral.RewardRatio;
CreditInternetMail := OldGeneral.CreditInternetMail;
BirthDateCheck := OldGeneral.BirthDateCheck;
MaxQWKTotal := OldGeneral.MaxQWKTotal;
MaxQWKBase := OldGeneral.MaxQWKBase;
DaysOnline := OldGeneral.DaysOnline;
MinimumBaud := OldGeneral.MinimumBaud;
MinimumDLBaud := OldGeneral.MinimumDLBaud;
MaxDepositEver := 300;
MaxDepositPerDay := 30;
MaxWithdrawalPerDay := 30;
CallerNum := OldGeneral.CallerNum;
RegNumber := OldGeneral.RegNumber;
TotalCalls := OldGeneral.TotalCalls;
TotalUsage := OldGeneral.TotalUsage;
TotalPosts := OldGeneral.TotalPosts;
TotalDloads := OldGeneral.TotalDloads;
TotalUloads := OldGeneral.TotalUloads;
MinResume := OldGeneral.MinResume;
MaxInTemp := OldGeneral.MaxInTemp;
AllowAlias := OldGeneral.AllowAlias;
PhonePW := OldGeneral.PhonePW;
LocalSec := OldGeneral.LocalSec;
GlobalTrap := OldGeneral.GlobalTrap;
AutoChatOpen := OldGeneral.AutoChatOpen;
AutoMInLogon := OldGeneral.AutoMInLogon;
BullInLogon := OldGeneral.BullInLogon;
YourInfoInLogon := OldGeneral.YourInfoInLogon;
OffHookLocalLogon := OldGeneral.OffHookLocalLogon;
ForceVoting := OldGeneral.ForceVoting;
CompressBases := OldGeneral.CompressBases;
SearchDup := OldGeneral.SearchDup;
ForceBatchDL := OldGeneral.ForceBatchDL;
LogonQuote := OldGeneral.LogonQuote;
UserAddQuote := OldGeneral.UserAddQuote;
StripCLog := OldGeneral.StripCLog;
SKludge := OldGeneral.SKludge;
SSeenby := OldGeneral.SSeenby;
SOrigin := OldGeneral.SOrigin;
AddTear := OldGeneral.AddTear;
ShuttleLog := OldGeneral.ShuttleLog;
ClosedSystem := OldGeneral.ClosedSystem;
SwapShell := OldGeneral.SwapShell;
UseEMS := OldGeneral.UseEMS;
UseBios := OldGeneral.UseBios;
UseIEMSI := OldGeneral.UseIEMSI;
ULDLRatio := OldGeneral.ULDLRatio;
FileCreditRatio := OldGeneral.FileCreditRatio;
ValidateAllFiles := OldGeneral.ValidateAllFiles;
FileDiz := OldGeneral.FileDiz;
SysOpPword := OldGeneral.SysOpPword;
TrapTeleConf := OldGeneral.TrapTeleConf;
IsTopWindow := OldGeneral.IsTopWindow;
ReCompress := OldGeneral.ReCompress;
RewardSystem := OldGeneral.RewardSystem;
TrapGroup := OldGeneral.TrapGroup;
QWKTimeIgnore := OldGeneral.QWKTimeIgnore;
NetworkMode := OldGeneral.NetworkMode;
WindowOn := OldGeneral.WindowOn;
ChatCall := OldGeneral.ChatCall;
DailyLimits := OldGeneral.DailyLimits;
MultiNode := OldGeneral.MultiNode;
PerCall := OldGeneral.PerCall;
TestUploads := OldGeneral.TestUploads;
FOR Counter := 1 TO MaxArcs DO
WITH FileArcInfo[Counter] DO
BEGIN
Active := OldGeneral.FileArcInfo[Counter].Active;
Ext := OldGeneral.FileArcInfo[Counter].Ext;
ListLine := OldGeneral.FileArcInfo[Counter].ListLine;
ArcLine := OldGeneral.FileArcInfo[Counter].ArcLine;
UnArcLine := OldGeneral.FileArcInfo[Counter].UnArcLine;
TestLine := OldGeneral.FileArcInfo[Counter].TestLine;
CmtLine := OldGeneral.FileArcInfo[Counter].CmtLine;
SuccLevel := OldGeneral.FileArcInfo[Counter].SuccLevel;
END;
FOR Counter := 1 TO 3 DO
FileArcComment[Counter] := OldGeneral.FileArcComment[Counter];
FOR Counter := 0 TO 20 DO
WITH AKA[Counter] DO
BEGIN
Zone := OldGeneral.AKA[Counter].Zone;
Net := OldGeneral.AKA[Counter].Net;
Node := OldGeneral.AKA[Counter].Node;
Point := OldGeneral.AKA[Counter].Point;
END;
FOR Counter := 1 TO 20 DO
NewUserToggles[Counter] := OldGeneral.NewUserToggles[Counter];;
FOR Counter := 0 TO 9 DO
Macro[Counter] := OldGeneral.Macro[Counter];
Netattribute := OldGeneral.Netattribute;
FOR Counter := 0 TO 255 DO
TimeAllow[Counter] := OldGeneral.TimeAllow[Counter];
FOR Counter := 0 TO 255 DO
CallAllow[Counter] := OldGeneral.CallAllow[Counter];
FOR Counter := 0 TO 255 DO
DLRatio[Counter] := OldGeneral.DLRatio[Counter];
FOR Counter := 0 TO 255 DO
DLKRatio[Counter] := OldGeneral.DLKRatio[Counter];
FOR Counter := 0 TO 255 DO
PostRatio[Counter] := OldGeneral.PostRatio[Counter];
FOR Counter := 0 TO 255 DO
DLOneday[Counter] := OldGeneral.DLOneday[Counter];
FOR Counter := 0 TO 255 DO
DLKOneDay[Counter] := OldGeneral.DLKOneDay[Counter];
END;
Write(GeneralFile,General);
Close(OldGeneralFile);
Close(GeneralFile);
Assign(OldGeneralFile,'RENEGADE.DAT');
Erase(OldGeneralFile);
Assign(GeneralFile,'RENEGADE.NEW');
ReName(GeneralFile,'RENEGADE.DAT');
WriteLn('Done');
END;
VAR
OldGeneralFile: FILE OF OldGeneralRecordType;
OldGeneral: OldGeneralRecordType;
BEGIN
ClrScr;
WriteLn('Renegade Update Utility (12.07/8 to 01.28/8)');
WriteLn;
Writeln('This utility will upgrade your Renegade BBS from');
WriteLn('Version 12.07/8 to Version 01.28/8.');
WriteLn;
Writeln('This update will scan your USERS.DAT file to ensure');
WriteLn('that your expiration information for each guest is');
WriteLn('configured properly. Errors will be logged to the');
WriteLn('files (EXPIRE.TXT or KEY.TXT). Errors will result in');
Writeln('the termination of this update utility until corrected.');
Writeln('The following rules apply:');
Writeln;
Writeln(' - Both the expiration date and expire to key must');
Writeln(' be null or contain valid data. You can not have');
WriteLn(' one configured without the other.');
WriteLn;
WriteLn(' - The expire to key must be a valid key configured');
Writeln(' in the validation editor.');
WriteLn;
IF PYNQ('Do you wish to continue? ') THEN
BEGIN
WriteLn;
Write('Reading "RENEGADE.DAT" file ... ');
Assign(OldGeneralFile,'RENEGADE.DAT');
Reset(OldGeneralFile);
Read(OldGeneralFile,OldGeneral);
Close(OldGeneralFile);
WriteLn('Done');
WriteLn;
(*
IF (NOT ReadUsers(OldGeneral)) THEN
BEGIN
WriteLn;
WriteLn(^G^G^G'Please see the file EXPIRE.TXT/KEY.TXT for errors.');
END
ELSE
BEGIN
*)
WriteLn;
CreateValidationRec(OldGeneral);
ConvertGeneralRec(OldGeneral);
WriteLn;
WriteLn(^G^G^G'Conversion complete!');
WriteLn;
WriteLn('Please replace your old RENEGADE.EXE/RENEGADE.OVR files');
WriteLn('with the new files provided with this update.');
(*
END;
*)
END;
END.