777 lines
28 KiB
Plaintext
777 lines
28 KiB
Plaintext
|
{$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.
|