//
unit ads_wbServer;
{Copyright(c)2016 Advanced Delphi Systems
Richard Maley
Advanced Delphi Systems
12613 Maidens Bower Drive
Potomac, MD 20854 USA
phone 301-840-1554
dickmaley@advdelphisys.com
The code herein can be used or modified by anyone. Please retain references
to Richard Maley at Advanced Delphi Systems. If you make improvements to the
code please send your improvements to dickmaley@advdelphisys.com so that the
entire Delphi community can benefit. All comments are welcome.
}
(*UnitIndex Master Index Implementation Section Download UnitsDescription: ads_wbServer.pas This unit contains the following routines.
AdvDelphiSysComment CheckLoginDatabase CleanUnEncryptedField Counter DeEncryptAndCleanField DeEncryptString DeEncryptValidate DeleteItemsFromList EncryptString ER FieldList FieldsInit FieldsUpdate FieldTypeToStr FieldValuesStrToLst FileToStr GetDBImageByRecno GetEncryptedLoginID GetEncryptedPwd GetLoginID GetPwd GetRequestInfo MakeAccessDenied MakeBrowserPage MakeDBNamesPage MakeFieldNamesPage MakeLogin MakeOptionsPage MakePageFooter MakePageHeader MakeTableNamesPage MinMaxStrFieldTypes PageHeader PublishDebugData ReplaceStringInString ShouldIGenList StrToFieldType SyncConfigParams TWebServerDB.Database1Login WriteErrors
*)
interface
uses
Windows, Messages, SysUtils, Classes, HTTPApp, Graphics, DBTables, DB,
FieldClass, ads_wbserver_util;
Type
TWebServerDB = Class(TDatabase)
procedure Database1Login(Database: TDatabase; LoginParams: TStrings);
End;
Function PublishDebugData(PageStr: String;Values: TWebRequest): String;
Function Counter: String;
Function FieldList(
Request : TWebRequest;
FieldPrefix : String
): String;
Function FieldValuesStrToLst(
Var lst : TStringList;
FieldValues : String;
ListName : String): Boolean;
Function MakeOptionsPage(
ActionURL : String;
DatabaseName: String;
TableName : String;
LoadBalance : String;
BufferSize : String;
Button : String;
Values : String;
FieldValues : String
): String;
Function StrToFieldType(FieldType : String): TFieldType;
Function FieldTypeToStr(FieldType : TFieldType): String;
Function MinMaxStrFieldTypes(FieldType : String): Boolean;
Function FieldsUpdate(
FieldDisplay : TStringList;
FieldMax : TStringList;
FieldMin : TStringList;
FieldNames : TStringList;
FieldNumber : TStringList;
FieldOrder : TStringList;
FieldSize : TStringList;
FieldType : TStringList;
FieldVisible : TStringList;
TableData : TStringList;
SaveToFile : Boolean
): String;
Function FieldsInit(
DatabaseName: String;
TableName : String;
LoadBalance : String;
BufferSize : String;
Role : String
): String;
Function CheckLoginDatabase(
DatabaseName : String;
TableName : String;
LoadBalance : String;
BufferSize : String
): Boolean;
Function DeEncryptAndCleanField(
Request: TWebRequest;
Field : String
): String;
Function CleanUnEncryptedField(
Request: TWebRequest;
Field : String
): String;
Function MakeFieldNamesPage(
ActionURL : String;
DatabaseName: String;
TableName : String;
LoadBalance : String;
BufferSize : String;
Button : String;
Values : String;
FieldValues : String
): String;
Function MakeBrowserPage(
ActionURL : String;
DatabaseName: String;
TableName : String;
LoadBalance : String;
BufferSize : String;
Role : String;
RecNo : String;
RecMax : String;
FieldList : String;
NavButton : String
): String;
Function ShouldIGenList(var lst : TStringList): Boolean;
Function DeleteItemsFromList(InputList : String): String;
Function MakeLogin: String;
Function PageHeader: String;
Function AdvDelphiSysComment: String;
Procedure FileToStr(
Var Str : String;
FileName : String);
Function GetRequestInfo(
Request: TWebRequest;
AsTable: Boolean): String;
procedure GetDBImageByRecno(
Sender : TObject;
Request : TWebRequest;
Response : TWebResponse;
var Handled : Boolean);
Function MakeTableNamesPage(
ActionURL : String;
DatabaseName: String;
LoadBalance : String;
BufferSize : String
): String;
Function MakeDBNamesPage(
//Session : TSession;
ActionURL : String;
LoadBalance : String;
BufferSize : String
): String;
Function GetLoginID(Request : TWebRequest): String;
Function GetPwd(Request : TWebRequest): String;
Function GetEncryptedLoginID(Request : TWebRequest): String;
Function GetEncryptedPwd(Request : TWebRequest): String;
Function EncryptString(sg : String): String;
Function DeEncryptString(sg : String): String;
Function MakePageHeader(
HTMLMetaDataTitle : String;
HTMLMetaDataAuthor : String;
HTMLMetaDataKeywords : String;
HTMLMetaDataDesc : String;
MainTitle : String;
SubTitle : String;
BackGround : String;
DebugData : Boolean
): String;
Function MakePageFooter: String;
Function ReplaceStringInString(
SourceString : String;
OldString : String;
NewString : String
): String;
Procedure MakeAccessDenied;
Procedure SyncConfigParams(
var ConfigParam : String;
sgConfigParam : String);
Function ER(
ProcName : String;
Group : String;
Var E : Exception): String;
Var
ConfigParams : TStringList;
ConfigParamsWas : String;
DBLoadDatabaseName : String;
DBLoadFieldValues : String;
DBLoadRole : String;
DBLoadTableName : String;
DBSaveDatabaseName : String;
DBSaveFieldValues : String;
DBSaveRole : String;
DBSaveTableName : String;
DBValueDatabaseName : String;
DBValueFieldValues : String;
DBValueRole : String;
DBValueTableName : String;
DebugDataPublish : String;
Errors : TStringList;
ExecutableName : String;
ExecutablePath : String;
FileConfiguration : String;
FileHTMLPageFooter : String;
FileHTMLPageHeader : String;
FileListDelete : String;
FileListOfOnlyItems : String;
FileMetaDataDescription : String;
FileMetaDataKeywords : String;
HTMLHideSource : String;
HTMLHideString : String;
HTMLMetaDataAuthor : String;
HTMLMetaDataDesc : String;
HTMLMetaDataKeywords : String;
HTMLMetaDataTitle : String;
HTMLPageFooter : String;
HTMLPageHeader : String;
HTMLTable2CellPadding : String;
HTMLTable2CellSpacing : String;
HTMLTable2ColorBackGrd : String;
HTMLTable2ColorBorder : String;
HTMLTable2ColorFont : String;
HTMLTable2FontSize : String;
HTMLTable3CellPadding : String;
HTMLTable3CellSpacing : String;
HTMLTable3ColorBackGrd : String;
HTMLTable3ColorBorder : String;
HTMLTable3ColorFont : String;
HTMLTable3FontSize : String;
HTMLTableCellPadding : String;
HTMLTableCellSpacing : String;
HTMLTableColorBackGrd : String;
HTMLTableColorBorder : String;
HTMLTableColorFont : String;
HTMLTableFontSize : String;
HTMLTitleMain : String;
HTMLTitleMainColor : String;
HTMLTitleMainSize : String;
HTMLTitleSub : String;
HTMLTitleSubColor : String;
HTMLTitleSubSize : String;
ListOfItemsToDelete : String;
ListOfOnlyDisplayItems : String;
MeterCounterBold : String;
MeterCounterColorBackGrd : String;
MeterCounterColorBorder : String;
MeterCounterColorFont : String;
MeterCounterFontSize : String;
MeterCounterItalics : String;
MeterCounterShow : String;
MeterDateBold : String;
MeterDateColorBackGrd : String;
MeterDateColorBorder : String;
MeterDateColorFont : String;
MeterDateFontSize : String;
MeterDateItalics : String;
MeterDateShow : String;
MeterTimeBold : String;
MeterTimeColorBackGrd : String;
MeterTimeColorBorder : String;
MeterTimeColorFont : String;
MeterTimeFontSize : String;
MeterTimeItalics : String;
MeterTimeShow : String;
sgBoolean : String;
URLAction : String;
URLAction2 : String;
URLAction3 : String;
URLAction4 : String;
URLBackground : String;
URLImageTop : String;
URLScriptDir : String;
implementation
uses JPeg;
//Unit Description UnitIndex Master Index
procedure TWebServerDB.Database1Login(Database: TDatabase;
LoginParams: TStrings);
begin
LoginParams.Clear;
LoginParams.Add('USER NAME='+Params.Values['USER NAME']);
LoginParams.Add('PASSWORD=' +Params.Values['PASSWORD']);
end;
//Unit Description UnitIndex Master Index
Function DeEncryptValidate(InputString: ShortString): String;
Var
NewString: String;
L : Integer;
i : Integer;
C : Char;
Begin
Result := InputString;
NewString := '';
L := Length(InputString);
For i:= 1 To L Do
Begin
C := InputString[i];
Case C of
'0' : NewString := NewString + C;
'1' : NewString := NewString + C;
'2' : NewString := NewString + C;
'3' : NewString := NewString + C;
'4' : NewString := NewString + C;
'5' : NewString := NewString + C;
'6' : NewString := NewString + C;
'7' : NewString := NewString + C;
'8' : NewString := NewString + C;
'9' : NewString := NewString + C;
End;
End;
Result := NewString;
End;
//Unit Description UnitIndex Master Index
Function ER(
ProcName : String;
Group : String;
Var E : Exception): String;
Var
sgRec : String;
dt : TDateTime;
Filler: String;
Begin
Filler := ' ';
dt := now();
sgRec := FormatDateTime('yymmdd',dt);
sgRec := sgRec + FormatFloat('.0000000000',dt)+' ';
ProcName := ProcName + Filler;
Group := Group + Filler;
sgRec := sgRec + Copy(ProcName, 1, 35) + ' ';
sgRec := sgRec + Copy(Group,1,25) + ' ';
sgRec := sgRec + E.Message;
Result :=
''+
''+
''+
''+
'
ERROR MESSAGE
'+
'
'+
sgRec+
''+
'';
Errors.Add(sgRec);
End;
// Unit Description UnitIndex Master Index
Procedure WriteErrors;
Var
lst : TStringList;
FileName : String;
Begin
FileName := ExecutablePath+'ads_wbServer.txt';
If FileExists(FileName) Then
Begin
lst := TStringList.Create();
Try
lst.LoadFromFile(FileName);
lst.SetText(PChar(lst.Text+Errors.Text));
lst.Sorted := True;
lst.SaveToFile(FileName);
Finally
lst.Free;
End;
End
Else
Begin
Errors.SaveToFile(FileName);
End;
End;
//Unit Description UnitIndex Master Index
Function GetRequestInfo(
Request: TWebRequest;
AsTable: Boolean): String;
Var
lst : TStringList;
CommentStart : String;
CommentEnd : String;
TableStart : String;
TableEnd : String;
RowStart : String;
RowEnd : String;
CellStart : String;
CellEnd : String;
inCounter : Integer;
inPos : Integer;
Begin
If AsTable Then
Begin
CommentStart := '';
CommentEnd := '';
TableStart := ''+CommentEnd);
Add(CommentStart+'Requestor Data'+CommentEnd);
Add(CommentStart+'
'+CommentEnd);
Add(CommentStart+TableStart+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Property' +CellEnd+CellStart + 'Value'+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Method' +CellEnd+CellStart + Request.Method+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ProtocolVersion'+CellEnd+CellStart + Request.ProtocolVersion+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'URL' +CellEnd+CellStart + Request.URL+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Query' +CellEnd+CellStart + Request.Query+CellEnd+RowEnd+CommentEnd);
If Request.Query <> '' Then
Begin
For inCounter := 0 To Request.QueryFields.Count - 1 Do
Begin
Add(
CommentStart+RowStart+CellStart+'QueryFields['+
IntToStr(inCounter)+']' +CellEnd+CellStart + Request.QueryFields[inCounter]+CellEnd+RowEnd+CommentEnd);
inPos := Pos('LoadBalance',Request.QueryFields[inCounter]);
If inPos > 0 Then
Begin
inPos := Pos('=',Request.QueryFields[inCounter]);
If inPos > 0 Then
Begin
Add(
CommentStart+RowStart+CellStart+'QueryFields['+
IntToStr(inCounter)+']' +
CellEnd+CellStart +
'LoadBalance='+
DeEncryptString(Copy(Request.QueryFields[inCounter],inPos+1,255))+
CellEnd+RowEnd+CommentEnd);
End;
End;
inPos := Pos('BufferSize',Request.QueryFields[inCounter]);
If inPos > 0 Then
Begin
inPos := Pos('=',Request.QueryFields[inCounter]);
If inPos > 0 Then
Begin
Add(
CommentStart+RowStart+CellStart+'QueryFields['+
IntToStr(inCounter)+']' +
CellEnd+CellStart +
'BufferSize='+
DeEncryptString(Copy(Request.QueryFields[inCounter],inPos+1,255))+
CellEnd+RowEnd+CommentEnd);
End;
End;
End;
End;
Add(CommentStart+RowStart+CellStart+'PathInfo' +CellEnd+CellStart + Request.PathInfo+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'PathTranslated' +CellEnd+CellStart + Request.PathTranslated+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Authorization' +CellEnd+CellStart + Request.Authorization+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'CacheControl' +CellEnd+CellStart + Request.CacheControl+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Cookie' +CellEnd+CellStart + Request.Cookie+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Date' +CellEnd+CellStart + FormatDateTime ('mmm dd, yyyy hh:mm', Request.Date)+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Accept' +CellEnd+CellStart + Request.Accept+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'From' +CellEnd+CellStart + Request.From+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Host' +CellEnd+CellStart + Request.Host+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'IfModifiedSince'+CellEnd+CellStart + FormatDateTime ('mmm dd, yyyy hh:mm', Request.IfModifiedSince)+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Referer' +CellEnd+CellStart + Request.Referer+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'UserAgent' +CellEnd+CellStart + Request.UserAgent+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ContentEncoding'+CellEnd+CellStart + Request.ContentEncoding+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ContentType' +CellEnd+CellStart + Request.ContentType+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ContentLength' +CellEnd+CellStart + IntToStr(Request.ContentLength)+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ContentVersion' +CellEnd+CellStart + Request.ContentVersion+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Content' +CellEnd+CellStart + Request.Content+CellEnd+RowEnd+CommentEnd);
If Request.Content <> '' Then
Begin
For inCounter := 0 To Request.ContentFields.Count - 1 Do
Begin
Add(
CommentStart+RowStart+CellStart+'ContentFields['+
IntToStr(inCounter)+']' +CellEnd+CellStart + Request.ContentFields[inCounter]+CellEnd+RowEnd+CommentEnd);
inPos := Pos('LoadBalance',Request.ContentFields[inCounter]);
If inPos > 0 Then
Begin
inPos := Pos('=',Request.ContentFields[inCounter]);
If inPos > 0 Then
Begin
Add(
CommentStart+RowStart+CellStart+'ContentFields['+
IntToStr(inCounter)+']' +
CellEnd+CellStart +
'LoadBalance='+
DeEncryptString(Copy(Request.ContentFields[inCounter],inPos+1,255))+
CellEnd+RowEnd+CommentEnd);
End;
End;
inPos := Pos('BufferSize',Request.ContentFields[inCounter]);
If inPos > 0 Then
Begin
inPos := Pos('=',Request.ContentFields[inCounter]);
If inPos > 0 Then
Begin
Add(
CommentStart+RowStart+CellStart+'ContentFields['+
IntToStr(inCounter)+']' +
CellEnd+CellStart +
'BufferSize='+
DeEncryptString(Copy(Request.ContentFields[inCounter],inPos+1,255))+
CellEnd+RowEnd+CommentEnd);
End;
End;
End;
End;
Add(CommentStart+RowStart+CellStart+'Connection' +CellEnd+CellStart + Request.Connection+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'DerivedFrom' +CellEnd+CellStart + Request.DerivedFrom+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Expires' +CellEnd+CellStart + FormatDateTime ('mmm dd, yyyy hh:mm', Request.Expires)+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'Title' +CellEnd+CellStart + Request.Title+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'RemoteAddr' +CellEnd+CellStart + Request.RemoteAddr+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'RemoteHost' +CellEnd+CellStart + Request.RemoteHost+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ScriptName' +CellEnd+CellStart + Request.ScriptName+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+RowStart+CellStart+'ServerPort' +CellEnd+CellStart + IntToStr(Request.ServerPort)+CellEnd+RowEnd+CommentEnd);
Add(CommentStart+TableEnd+CommentEnd);
End;
lst.Add(CommentStart+'Start Configuration file Entries'+CommentEnd);
For inCounter := 0 To ConfigParams.Count - 1 Do
Begin
lst.Add(CommentStart+ConfigParams[inCounter]+CommentEnd);
End;
lst.Add(CommentStart+'End Configuration file Entries'+CommentEnd);
Result := lst.text;
Finally
lst.Free;
End;
End;
//Unit Description UnitIndex Master Index
procedure GetDBImageByRecno(
Sender : TObject;
Request : TWebRequest;
Response : TWebResponse;
var Handled : Boolean);
var
Jpeg : TJpegImage;
MemoryStream : TMemoryStream;
Picture : TPicture;
DatabaseName : String;
TableName : String;
FieldName : String;
RecNo : String;
RecNum : Integer;
inCounter : Integer;
qry : TQuery;
Graphic : TGraphicField;
ProcName : String;
begin
ProcName := 'GetDBImageByRecno';
Try
qry := TQuery.Create(nil);
DatabaseName := Request.QueryFields.Values['DatabaseName'];
TableName := Request.QueryFields.Values['TableName'];
FieldName := Request.QueryFields.Values['FieldName'];
RecNo := Request.QueryFields.Values['RecNo'];
Try
RecNum := StrToInt(RecNo);
Except
RecNum := 1;
End;
Graphic := TGraphicField.Create(nil);
Jpeg := TJpegImage.Create;
Try
qry.Active := False;
qry.DatabaseName := DatabaseName;
qry.RequestLive := False;
qry.Sql.Clear;
qry.Sql.Add('Select');
qry.Sql.Add(FieldName);
qry.Sql.Add('From');
If Pos('.DB',UpperCase(TableName)) > 0 Then
Begin
qry.Sql.Add('"'+TableName+'"');
End
Else
Begin
qry.Sql.Add(TableName);
End;
Graphic.FieldName := FieldName;
Graphic.BlobType := ftGraphic;
//qry.sql.add('/* '+'RecNo=' +RecNo +' */');
//qry.sql.add('/* '+'RecNum=' +IntToStr(RecNum)+' */');
//qry.sql.add('/* '+'DatabaseName='+Databasename +' */');
//qry.sql.add('/* '+'TableName=' +Tablename +' */');
//qry.sql.add('/* '+'FieldName=' +FieldName +' */');
Graphic.DataSet := qry;
qry.Active := True;
qry.First;
For inCounter := 1 To RecNum Do
Begin
If inCounter = RecNum Then
Begin
Break;
End
Else
Begin
qry.Next;
End;
End;
Picture := TPicture.Create;
Picture.Assign(Graphic);
qry.Active := False;
Jpeg.Assign(Picture.Graphic);
MemoryStream := TMemoryStream.Create;
qry.sql.SaveToFile('c:\program files\apache group\apache\scripts\sql03.txt');
Try
Jpeg.SaveToStream(MemoryStream);
MemoryStream.Position := 0;
Response.ContentType := 'image/jpeg';
Response.ContentStream := MemoryStream;
Response.SendResponse;
Finally
Picture.Free;
MemoryStream.Free;
End;
Handled := True;
Finally
Jpeg.Free;
qry.Free;
Graphic.Free;
End;
Except
On E : Exception Do ER(ProcName,'all',E);
End;
End;
//Unit Description UnitIndex Master Index
Function EncryptString(sg : String): String;
Var
inCounter : Integer;
inDOY : Integer;
flDOY : Double;
dtToday : TDateTime;
dtFirst : TDateTime;
Str : String;
sgChar : String;
pcChar : PChar;
chChar : Char;
inChar : Integer;
sgInChar : String;
insgLen : Integer;
inCharLen : Integer;
ProcName : String;
Begin
ProcName := 'EncryptString';
Try
dtToday := now();
dtFirst := StrToDateTime(FormatDateTime('1/1/yyyy',dtToday));
flDOY := dtToday - dtFirst + 1;
inDOY := StrToInt(FormatFloat('#0',flDOY));
sgChar := '';
sgInChar := '';
Str := '';
insgLen := Length(sg);
For inCounter := 1 To insgLen Do
Begin
sgChar := Copy(sg,inCounter,1);
pcChar := PChar(sgChar);
chChar := pcChar[0];
inChar := Ord(chChar);
If inChar = 10 Then Continue;
If inChar = 13 Then Continue;
If inChar = 9 Then Continue;
inChar := inChar + inDOY;
If Odd(inCounter) Then
Begin
inChar := inChar - inCounter;
End
Else
Begin
inChar := inChar + inCounter;
End;
sgInChar := IntToStr(inChar);
inCharLen:= Length(sgInChar);
Case inCharLen Of
0 : sgInChar := '000'+sgInChar;
1 : sgInChar := '00'+sgInChar;
2 : sgInChar := '0'+sgInChar;
3 : sgInChar := ''+sgInChar;
End;
Str := Str + sgInChar;
End;
Str := Str + '677968';
Str := Str + IntToStr(inDOY + 486772);
Str := Str + IntToStr(inDOY + 967465);
Str := Str + IntToStr(inDOY + 601754);
Str := Str + IntToStr(inDOY + 629573);
Str := Str + IntToStr(inDOY + 566285);
Str := Str + IntToStr(inDOY + 835649);
Str := Str + IntToStr(inDOY + 907835);
Str := Str + IntToStr(inDOY + 541653);
Str := Str + IntToStr(inDOY + 905906);
Str := Str + IntToStr(inDOY + 756907);
Str := Str + IntToStr(inDOY + 835665);
Str := Copy(Str,1,66);
Result := Str;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function DeEncryptString(sg : String): String;
Var
inCounter : Integer;
inDOY : Integer;
flDOY : Double;
dtToday : TDateTime;
dtFirst : TDateTime;
Str : String;
sgChar : String;
inChar : Integer;
sgInChar : String;
ProcName : String;
inPos : Integer;
inMax : Integer;
Begin
ProcName := 'DeEncryptString';
Try
sg := DeEncryptValidate(sg);
inChar := 0;
inPos := Pos('677968',sg);
If inPos < 4 Then
Begin
Result := '';
Exit;
End;
sg := Copy(sg,1,inPos-1);
dtToday := now();
dtFirst := StrToDateTime(FormatDateTime('1/1/yyyy',dtToday));
flDOY := dtToday - dtFirst + 1;
inDOY := StrToInt(FormatFloat('#0',flDOY));
sgChar := '';
sgInChar := '';
Str := '';
inMax := Length(sg) div 3;
For inCounter := 1 To inMax Do
Begin
sgInChar := Copy(sg,1,3);
sg := Copy(sg,4,60);
Try
inChar := StrToInt(sgInChar)-inDOY;
Except
Continue;
End;
If Odd(inCounter) Then
Begin
inChar := inChar + inCounter;
End
Else
Begin
inChar := inChar - inCounter;
End;
Str := Str + Chr(inChar);
If Length(sg) = 0 Then Break;
End;
Result := Str;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function MakeTableNamesPage(
ActionURL : String;
DatabaseName: String;
LoadBalance : String;
BufferSize : String
): String;
var
TableNames: TStringList;
i : Integer;
ProcName : String;
Page : TStringList;
DBName : TWebServerDB;
begin
ProcName := 'MakeTableNamesPage';
Try
DatabaseName := DeEncryptString(EncryptString(Trim(DatabaseName)));
ActionURL := DeEncryptString(EncryptString(Trim(ActionURL)));
LoadBalance := EncryptString(DeEncryptString(Trim(LoadBalance)));
BufferSize := EncryptString(DeEncryptString(Trim(BufferSize)));
Page := TStringList.Create();
TableNames := TStringList.Create;
DBName := TWebServerDB.Create(nil);
Try
If ShouldIGenList(TableNames) Then
Begin
DBName.LoginPrompt := False;
DBName.DatabaseName := 'DBName';
DBName.AliasName := DatabaseName;
DBName.KeepConnection := True;
DBName.Params.Clear;
DBName.Params.Add('USER NAME='+DeEncryptString(LoadBalance));
DBName.Params.Add('PASSWORD='+DeEncryptString(BufferSize));
Try
DBName.Connected := True;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'Connection',E);
Exit;
End;
End;
TableNames.Sorted := True;
DBname.Session.GetTableNames(
'DBName',
'',
True,
False,
TableNames);
TableNames.SetText(PChar(DeleteItemsFromList(TableNames.Text)));
End;
Page.SetText(PChar(PageHeader));
Page.Add('');
Page.SetText(PChar(Page.Text+ MakePageFooter));
Result := Page.Text;
Page.SaveToFile(ExecutableName+'.txt');
Finally
Page .Free;
TableNames.Free;
DBName .Free;
End
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function MakePageHeader(
HTMLMetaDataTitle : String;
HTMLMetaDataAuthor : String;
HTMLMetaDataKeywords : String;
HTMLMetaDataDesc : String;
MainTitle : String;
SubTitle : String;
BackGround : String;
DebugData : Boolean
): String;
Var
Page : TStringList;
ProcName : String;
inCounter: Integer;
Begin
ProcName := 'MakePageHeader';
Try
Page := TStringList.Create();
Try
Page.Clear;
Page.Add('');
Page.Add('');
sgBoolean := HTMLHideSource;
If (UpperCase(Copy(sgBoolean,1,1))= 'T') Then
Begin
//sgBoolean := DebugDataPublish;
//If Not (UpperCase(Copy(sgBoolean,1,1))= 'T') Then
//Begin
//sgBoolean := '';
Page.Add('');
//End;
End;
Page.Add('');
Page.Add('');
Page.Add(''+HTMLMetaDataTitle+' ');
Page.Add('');
Page.Add('');
Page.Add('');
Page.Add('');
Page.Add(' '' Then Page.Add(' BACKGROUND="'+Background+'"');
Page.Add('>');
If URLImageTop <> '' Then Page.Add('
');
Page.Add('');
Page.Add('
| ');
Page.Add('
Function ReplaceStringInString(
SourceString : String;
OldString : String;
NewString : String
): String;
Var
inPos : Integer;
ProcName : String;
Begin
ProcName := 'ReplaceStringInString';
Try
inPos := Pos(OldString,SourceString);
If inPos < 1 Then
Begin
Result := SourceString;
Exit;
End;
Result :=
Copy(SourceString,1,inPos-1)+
NewString+
Copy(
SourceString,
(inPos+Length(OldString)),
(Length(SourceString)-inPos-Length(OldString)+1));
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function MakeDBNamesPage(
//Session : TSession;
ActionURL : String;
LoadBalance : String;
BufferSize : String
): String;
var
AliasNames: TStringList;
inCounter : Integer;
ProcName : String;
Page : TStringList;
Session : TSession;
begin
ProcName := 'MakeDBNamesPage';
Try
ActionURL := DeEncryptString(EncryptString(Trim(ActionURL)));
LoadBalance := EncryptString(DeEncryptString(Trim(LoadBalance)));
BufferSize := EncryptString(DeEncryptString(Trim(BufferSize)));
AliasNames := TStringList.Create();
Page := TStringList.Create();
Session := TSession.Create(nil);
AliasNames.Sorted := True;
Try
Session.SessionName := 'Session';
Page.SetText(PChar(PageHeader));
If ShouldIGenList(AliasNames) Then
Begin
With Session Do
Begin
Active := True;
GetAliasNames(AliasNames);
Active := False
End;
AliasNames.SetText(PChar(DeleteItemsFromList(AliasNames.Text)));
End;
Page.Add('' );
Page.SetText(PChar(Page.Text+MakePageFooter));
Result := Page.Text;
Finally
AliasNames.Free;
Page .Free;
Session .Free;
End
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function GetLoginID(Request : TWebRequest): String;
Var
ProcName : String;
Begin
ProcName := 'GetLoginID';
Try
If Request.MethodType = mtGet Then
Begin
Result := DeEncryptString(Request.QueryFields.Values['LoadBalance']);
End
Else
Begin
Result := DeEncryptString(Request.ContentFields.Values['LoadBalance']);
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function GetEncryptedLoginID(Request : TWebRequest): String;
Var
ProcName : String;
Begin
ProcName := 'GetEncryptedLoginID';
Try
If Request.MethodType = mtGet Then
Begin
Result := Request.QueryFields.Values['LoadBalance'];
End
Else
Begin
Result := Request.ContentFields.Values['LoadBalance'];
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function GetEncryptedPwd(Request : TWebRequest): String;
Var
ProcName : String;
Begin
ProcName := 'GetEncryptedPwd';
Try
If Request.MethodType = mtGet Then
Begin
Result := Request.QueryFields.Values['BufferSize'];
End
Else
Begin
Result := Request.ContentFields.Values['BufferSize'];
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function GetPwd(Request : TWebRequest): String;
Var
ProcName : String;
Begin
ProcName := 'GetPwd';
Try
If Request.MethodType = mtGet Then
Begin
Result := DeEncryptString(Request.QueryFields.Values['BufferSize']);
End
Else
Begin
Result := DeEncryptString(Request.ContentFields.Values['BufferSize']);
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Procedure MakeAccessDenied;
Var
lst : TStringList;
ProcName : String;
Begin
ProcName := 'MakeAccessDenied';
Try
If FileExists(ExecutablePath+'index.htm')
And
FileExists(ExecutablePath+'index.htm')
Then Exit;
lst := TStringList.Create();
Try
lst.Clear;
lst.Add('');
lst.Add('');
lst.Add('');
lst.Add('');
lst.Add('ACCESS DENIED');
lst.Add('
');
lst.Add(' ');
lst.Add('');
lst.Add('');
lst.SaveToFile(ExecutablePath+'index.htm');
lst.SaveToFile(ExecutablePath+'index.html');
Finally
lst.Free;
End;
Except
On E : Exception Do
Begin
ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Procedure SyncConfigParams(
var ConfigParam : String;
sgConfigParam : String);
Var
ProcName : String;
inPos : Integer;
inCounter : Integer;
Found : Boolean;
Begin
ProcName := 'SyncConfigParams';
Try
If FileExists(FileConfiguration) Then
Begin
If ConfigParams.Values[sgConfigParam]
<> ConfigParam Then
ConfigParam :=
ConfigParams.Values[sgConfigParam];
End;
Found := False;
For inCounter := 0 To ConfigParams.Count - 1 Do
Begin
inPos := Pos(UpperCase(sgConfigParam)+'=',UpperCase(ConfigParams[inCounter]));
If inPos > 0 Then
Begin
Found := True;
Break;
End;
End;
If Not Found Then ConfigParams.Add(sgConfigParam+'='+ConfigParam);
Except
On E : Exception Do ER(ProcName,'all',E);
End;
End;
//Unit Description UnitIndex Master Index
Procedure FileToStr(
Var Str : String;
FileName : String);
Var
lst : TStringList;
ProcName : String;
Begin
ProcName := 'FillStringFromFile';
Try
If FileName = '' Then Exit;
lst := TStringList.Create();
Try
lst.Clear;
If FileExists(FileName) Then
Begin
lst.LoadFromFile(FileName);
End
Else
Begin
Exit;
End;
Str := lst.Text;
Finally
lst.Free;
End;
Except
On E : Exception Do ER(ProcName,'all',E);
End;
End;
//Unit Description UnitIndex Master Index
Function PageHeader: String;
Var
ProcName : String;
Begin
ProcName := 'PageHeader';
Try
If Trim(HTMLPageHeader) = '' Then
Begin
Result :=
MakePageHeader(
HTMLMetaDataTitle, //HTMLMetaDataTitle : String;
HTMLMetaDataAuthor, //HTMLMetaDataAuthor : String;
FileMetaDataKeywords, //FileMetaDataKeywords : String;
HTMLMetaDataDesc, //HTMLMetaDataDesc : String;
HTMLTitleMain, //MainTitle : String;
HTMLTitleSub, //SubTitle : String;
URLBackground, //BackGround : String;
(DebugDataPublish='TRUE')//DebugData : Boolean;
); //): String;
End
Else
Begin
Result := AdvDelphiSysComment+HTMLPageHeader;
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function MakeLogin: String;
Var
lst : TStringList;
ProcName : String;
begin
ProcName := 'MakeLogin';
Try
lst := TStringList.Create();
Try
lst.Clear;
lst.SetText(PChar(PageHeader));
lst.Add('| ');
lst.Add(' | ');
lst.Add('
Function DeleteItemsFromList(InputList : String): String;
Var
ProcName : String;
lstSource : TStringList;
lstDelete : TStringList;
lstOut : TStringList;
inCounter : Integer;
Begin
ProcName := 'DeleteItemsFromList';
If Trim(ListOfItemsToDelete) = '' Then
Begin
Result := InputList;
Exit;
End;
If Trim(ListOfOnlyDisplayItems) <> '' Then
Begin
Result := InputList;
Exit;
End;
Try
lstSource := TStringList.Create();
lstDelete := TStringList.Create();
lstOut := TStringList.Create();
Try
lstSource.SetText(PChar(InputList));
lstDelete.SetText(PChar(ListOfItemsToDelete));
lstOut.Clear;
For inCounter := 0 To lstSource.Count -1 Do
Begin
If lstDelete.IndexOf(lstSource[inCounter]) < 0 Then
Begin
lstOut.Add(lstSource[inCounter]);
End;
End;
Result := lstOut.Text;
Finally
lstSource.Free;
lstDelete.Free;
lstOut .Free;
End;
Except
On E : Exception Do
Begin
Result := ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function ShouldIGenList(var lst : TStringList): Boolean;
Var
ProcName : String;
Begin
ProcName := 'ShouldIGenList';
Try
lst.Clear;
If Trim(ListOfOnlyDisplayItems) <> '' Then
Begin
lst.SetText(PChar(ListOfOnlyDisplayItems));
Result := False;
End
Else
Begin
Result := True;
End;
Except
On E : Exception Do
Begin
Result := True;
ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function AdvDelphiSysComment: String;
Var
Page : TStringList;
ProcName : String;
Begin
ProcName := 'AdvDelphiSysComment';
Try
Page := TStringList.Create();
Try
Page.Clear;
Page.Add('');
Result := Page.Text;
Finally
Page.Free;
End;
Except
On E : Exception Do
Begin
Result := '';
ER(ProcName,'all',E);
End;
End;
End;
//Unit Description UnitIndex Master Index
Function MakeFieldNamesPage(
ActionURL : String;
DatabaseName: String;
TableName : String;
LoadBalance : String;
BufferSize : String;
Button : String;
Values : String;
FieldValues : String
): String;
var
ChangeVisibility : Boolean;
DBName : TWebServerDB;
inCounter : Integer;
inVisNum : Integer;
inOrder : Integer;
lstValues : TStringList;
Page : TStringList;
ProcName : String;
sgVisValue : String;
sgCallingApp : String;
sgEndTag : String;
sgLineFeedTag : String;
sgReturnTag : String;
sgStartTag : String;
Table : TTable;
FC : TFieldClass;
begin
ProcName := 'MakeFieldNamesPage';
Try
sgEndTag := #201;
sgLineFeedTag := #203;
sgReturnTag := #202;
sgStartTag := #200;
BufferSize := EncryptString(DeEncryptString(Trim(BufferSize)));
ChangeVisibility := False;
DatabaseName := DeEncryptString(EncryptString(Trim(DatabaseName)));
DBName := TWebServerDB.Create(nil);
FC := TFieldClass.Create(nil);
inVisNum := -1;
LoadBalance := EncryptString(DeEncryptString(Trim(LoadBalance)));
lstValues := TStringList.Create();
Page := TStringList.Create();
Table := TTable.Create(nil);
TableName := DeEncryptString(EncryptString(Trim(TableName)));
Try
lstValues.SetText(PChar(Values));
sgCallingApp := lstValues.Values['CallingApp'];
If sgCallingApp = ExecutableName Then
Begin
ChangeVisibility := True;
Try
inVisNum := StrToInt(Button);
Except
ChangeVisibility := False;
inVisNum := -1;
End;
End;
FC.FieldValues := FieldValues;
If Not FC.Populated Then
Begin
FC.DatabaseName := DatabaseName;
FC.TableName := TableName;
End;
Page.SetText(PChar(PageHeader));
Page.Add('');
Page.Add('