www.pudn.com > EmailServer.zip > Settings_General.pas
unit Settings_General;
(******************************************************************************)
(* *)
(* Hermes General Settings Dialog Box *)
(* Part of Hermes SMTP/POP3 Server. *)
(* Copyright(C) 2000 by Alexander J. Fanti, All Rights Reserver Worldwide. *)
(* *)
(* Created January 19, 2000 by Alexander J. Fanti. See License.txt *)
(* *)
(* Used by: Main *)
(* Uses: DataU1, UtilU1 *)
(* *)
(* Description: This Modal dialog window allows the user to change general *)
(* server settings *)
(* *)
(* Revisions: 1/21/2000 AJF Commented *)
(* 2/13/2000 AJF Added Startup options *)
(* 3/11/2000 AJF Added DNS Timeout and Process Queue on Startup *)
(* *)
(******************************************************************************)
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FileCtrl, ShellAPI, ShlObj, ComObj, StdCtrls, Buttons, Spin, ComCtrls,
Registry;
type
TfrmSettings_General = class(TForm)
btnOK: TBitBtn;
btnCancel: TBitBtn;
SaveDialog1: TSaveDialog;
PageControl1: TPageControl;
tsGeneral: TTabSheet;
tsStartup: TTabSheet;
tsLog: TTabSheet;
Label1: TLabel;
txtServerName: TEdit;
Label2: TLabel;
txtMailboxPath: TEdit;
btnSelectMailbox: TButton;
btnSelectQueue: TButton;
txtQueuePath: TEdit;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
txtLogFile: TEdit;
btnSelectLogFile: TButton;
lblLogLevel: TLabel;
lstLogLevel: TComboBox;
cbxStartMinimized: TCheckBox;
cbxAutoStart_SmtpServer: TCheckBox;
cbxAutoStart_SmtpAgent: TCheckBox;
cbxAutoStart_Pop3Server: TCheckBox;
speDNSTimeout: TSpinEdit;
Label5: TLabel;
cbxStartProcessQueue: TCheckBox;
cbxSpyMessageContent: TCheckBox;
lstDNSServerAddress: TComboBox;
tsBanner: TTabSheet;
optBanner_NVS: TRadioButton;
optBanner_NS: TRadioButton;
optBanner_S: TRadioButton;
procedure FormShow(Sender: TObject);
procedure btnSelectMailboxClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnSelectQueueClick(Sender: TObject);
procedure btnSelectLogFileClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSettings_General: TfrmSettings_General;
implementation
uses DataU1, UtilU1;
{$R *.DFM}
procedure TfrmSettings_General.FormCreate(Sender: TObject);
var
x : Longint;
DNSList : TStringList;
begin
DNSList := TStringList.Create;
FetchDNSList(DNSList);
lstDNSServerAddress.Items.Clear;
for x := 0 to DNSList.Count -1 do lstDNSServerAddress.Items.Add(DNSList[x]);
DNSList.Free;
end;
procedure TfrmSettings_General.FormShow(Sender: TObject);
begin
PageControl1.ActivePage := tsGeneral;
// Display General settings in dialog
txtServerName.Text := INI.ServerName;
cbxStartMinimized.Checked := INI.StartMinimized;
cbxAutoStart_SmtpServer.Checked := INI.AutoStart_SmtpServer;
cbxAutoStart_SmtpAgent.Checked := INI.AutoStart_SmtpAgent;
cbxAutoStart_Pop3Server.Checked := INI.AutoStart_Pop3Server;
cbxStartProcessQueue.Checked := INI.ProcessQueueOnStartup;
txtMailboxPath.Text := INI.MailboxPath;
txtQueuePath.Text := INI.MailQueuePath;
lstDNSServerAddress.Text := INI.DNSServerAddress;
speDNSTimeout.Value := INI.DNSServerTimeout;
txtLogFile.Text := INI.LogFile;
lstLogLevel.ItemIndex := INI.LogLevel;
cbxSpyMessageContent.Checked := INI.LogSpyMessageContent;
case INI.Banner_Level of
bannerlevel_NameVersionService : optBanner_NVS.Checked := True;
bannerlevel_NameService : optBanner_NS.Checked := True;
bannerlevel_Service : optBanner_S.Checked := True;
else optBanner_NVS.Checked := True;
end;
end;
procedure TfrmSettings_General.btnOKClick(Sender: TObject);
begin
// Read General settings from dialog
INI.ServerName := Trim(txtServerName.Text);
INI.StartMinimized := cbxStartMinimized.Checked;
INI.AutoStart_SmtpServer := cbxAutoStart_SmtpServer.Checked;
INI.AutoStart_SmtpAgent := cbxAutoStart_SmtpAgent.Checked;
INI.AutoStart_Pop3Server := cbxAutoStart_Pop3Server.Checked;
INI.ProcessQueueOnStartup := cbxStartProcessQueue.Checked;
INI.MailboxPath := Trim(txtMailboxPath.Text);
INI.MailListPath := Trim(txtMailboxPath.Text);
INI.MailQueuePath := Trim(txtQueuePath.Text);
INI.DNSServerAddress := '';
if IsDomainDottedIP(Trim(lstDNSServerAddress.Text)) then
INI.DNSServerAddress := Trim(lstDNSServerAddress.Text)
else ShowMessage('DNS Server Address Invalid');
INI.DNSServerTimeout := speDNSTimeout.Value;
INI.LogFile := Trim(txtLogFile.Text);
INI.LogLevel := lstLogLevel.ItemIndex;
INI.LogSpyMessageContent := cbxSpyMessageContent.Checked;
INI.Banner_Level := bannerlevel_NameVersionService;
if optBanner_NVS.Checked then INI.Banner_Level := bannerlevel_NameVersionService;
if optBanner_NS.Checked then INI.Banner_Level := bannerlevel_NameService;
if optBanner_S.Checked then INI.Banner_Level := bannerlevel_Service;
end;
procedure TfrmSettings_General.btnSelectMailboxClick(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
// Select a folder for MailBox
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Self.Handle;
BrowseInfo.pidlRoot := nil; // Desktop
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Please specify a directory';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
txtMailboxPath.Text := TempPath;
GlobalFreePtr(lpItemID);
end;
end;
procedure TfrmSettings_General.btnSelectQueueClick(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
// Select a folder for Queue Path
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Self.Handle;
BrowseInfo.pidlRoot := nil; // Desktop
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Please specify a directory';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
txtQueuePath.Text := TempPath;
GlobalFreePtr(lpItemID);
end;
end;
procedure TfrmSettings_General.btnSelectLogFileClick(Sender: TObject);
begin
//Choose a Log File
if SaveDialog1.Execute then txtLogFile.Text := SaveDialog1.Filename;
end;
end.