267 lines
7.4 KiB
Plaintext
267 lines
7.4 KiB
Plaintext
{ **************************************************************
|
|
Package: XWB - Kernel RPCBroker
|
|
Date Created: Sept 18, 1997 (Version 1.1)
|
|
Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
|
|
Developers: Danila Manapsal, Raul Mendoza, Joel Ivey
|
|
Description: Server selection dialog.
|
|
Current Release: Version 1.1 Patch 40 (January 7, 2005))
|
|
*************************************************************** }
|
|
|
|
{**************************************************
|
|
p13 - added an OnDestroy event to release the
|
|
help file. - REM (4/25/00)
|
|
**************************************************}
|
|
unit Rpcconf1;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
|
|
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Xwbut1,
|
|
WinSock, rpcnet, MFunStr;
|
|
|
|
type
|
|
TrpcConfig = class(TForm)
|
|
cboServer: TComboBox;
|
|
Panel2: TPanel;
|
|
Panel3: TPanel;
|
|
pnlPort: TPanel;
|
|
btnOk: TBitBtn;
|
|
btnCancel: TBitBtn;
|
|
Panel1: TPanel;
|
|
Panel4: TPanel;
|
|
btnHelp: TBitBtn;
|
|
New: TButton;
|
|
procedure cboServerClick(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure butOkClick(Sender: TObject);
|
|
procedure butCancelClick(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure cboServerExit(Sender: TObject);
|
|
procedure NewClick(Sender: TObject);
|
|
|
|
private
|
|
{ Private declarations }
|
|
OrigHelp : String; //Help filename of calling application.
|
|
|
|
public
|
|
{ Public declarations }
|
|
ServerPairs : TStringList;
|
|
end;
|
|
|
|
function GetServerInfo(var Server,Port: string): integer;
|
|
function GetServerIP(ServerName: String): String;
|
|
|
|
var
|
|
rpcConfig: TrpcConfig;
|
|
ButtonStatus, Instance: integer;
|
|
rServer, rPort: string;
|
|
TaskInstance: integer;
|
|
|
|
implementation
|
|
|
|
uses AddServer;
|
|
|
|
{$R *.DFM}
|
|
|
|
|
|
function IsIPAddress(Val: String): Boolean;
|
|
var
|
|
I: Integer;
|
|
C: Char;
|
|
begin
|
|
Result := True;
|
|
for I := 1 to Length(Val) do // Iterate
|
|
begin
|
|
C := Val[I];
|
|
if not (C in ['0','1','2','3','4','5','6','7','8','9','.']) then
|
|
begin
|
|
Result := False;
|
|
Break;
|
|
end;
|
|
end; // for
|
|
end;
|
|
|
|
{: Library function to obtain an IP address, given a server name }
|
|
function GetServerIP(ServerName: String): String;
|
|
var
|
|
host,outcome: PChar;
|
|
begin
|
|
TaskInstance := LibOpen;
|
|
if not IsIPAddress(ServerName) then
|
|
begin
|
|
outcome := StrAlloc(256);
|
|
host := StrAlloc(length(ServerName) + 1);
|
|
StrPCopy(host, ServerName);
|
|
LibGetHostIP1(TaskInstance, host, outcome);
|
|
Result := StrPas(outcome);
|
|
StrDispose(outcome);
|
|
StrDispose(host);
|
|
end
|
|
else
|
|
Result := ServerName;
|
|
LibClose(TaskInstance);
|
|
end;
|
|
|
|
|
|
procedure TrpcConfig.cboServerClick(Sender: TObject);
|
|
var
|
|
index: integer;
|
|
begin
|
|
{Based on selction, set port and server variable}
|
|
index := cboServer.ItemIndex;
|
|
rPort := Piece(ServerPairs[index], ',', 2);
|
|
pnlPort.Caption := rPort;
|
|
rServer := Piece(ServerPairs[index], ',', 1);
|
|
btnOk.Enabled := True;
|
|
|
|
{Based on Server, get IP addresss.}
|
|
Panel4.Caption := GetServerIP(rServer);
|
|
end;
|
|
|
|
procedure TrpcConfig.FormCreate(Sender: TObject);
|
|
begin
|
|
FormStyle := fsStayOnTop;
|
|
OrigHelp := Application.HelpFile; // Save original helpfile.
|
|
Application.HelpFile := ReadRegData(HKLM, REG_BROKER, 'BrokerDr') +
|
|
'\clagent.hlp'; // Identify ConnectTo helpfile.
|
|
ServerPairs := TStringList.Create;
|
|
end;
|
|
|
|
procedure TrpcConfig.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
cboServer.Clear;
|
|
pnlPort.Caption := '';
|
|
ServerPairs.Free;
|
|
Application.HelpFile := OrigHelp; // Restore helpfile.
|
|
end;
|
|
|
|
function GetServerInfo(var Server,Port: string): integer;
|
|
var
|
|
index: integer;
|
|
//tmp,fname,: string; {P14}
|
|
tmpServerPairs : TStringList; //Format: SERVER,port#
|
|
TextStr: String;
|
|
|
|
begin
|
|
rpcconfig := Trpcconfig.Create(Application);
|
|
TaskInstance := LibOpen;
|
|
|
|
with rpcConfig do
|
|
begin
|
|
tmpServerPairs := TStringList.Create;
|
|
ReadRegValueNames(HKLM, REG_SERVERS, tmpServerPairs);
|
|
ServerPairs.Assign(tmpServerPairs);
|
|
tmpServerPairs.Clear;
|
|
ReadRegValueNames(HKCU, REG_SERVERS, tmpServerPairs);
|
|
for index := 0 to (tmpServerPairs.Count-1) do
|
|
begin
|
|
TextStr := tmpServerPairs[index];
|
|
if ServerPairs.IndexOf(TextStr) < 0 then
|
|
ServerPairs.Add(TextStr);
|
|
end;
|
|
|
|
ButtonStatus := mrOk;
|
|
|
|
if ServerPairs.Count < 1 then
|
|
begin
|
|
WriteRegData(HKLM, REG_SERVERS, 'BROKERSERVER,9200', '');
|
|
ServerPairs.Add('BROKERSERVER,9200');
|
|
end;
|
|
|
|
|
|
if ServerPairs.Count > 1 then // P31 //need to show form
|
|
begin
|
|
//Initialize form.
|
|
for index := 0 to (ServerPairs.Count -1) do //Load combobox
|
|
cboServer.Items.Add(ServerPairs[index]);
|
|
// cboServer.Items.Add(Piece(ServerPairs[index], ',', 1));
|
|
cboServer.ItemIndex := 0;
|
|
rServer := Piece(ServerPairs[0], ',', 1);
|
|
pnlPort.Caption := Piece(ServerPairs[0], ',', 2);
|
|
rPort := Piece(ServerPairs[0], ',', 2);
|
|
|
|
//Get and display IP address.
|
|
panel4.Caption := GetServerIP(rServer);
|
|
ShowModal; //Display form
|
|
end
|
|
else //One choice: form not shown, value returned.
|
|
begin
|
|
rServer := Piece(ServerPairs[0], ',', 1);
|
|
rPort := Piece(ServerPairs[0], ',', 2);
|
|
end;
|
|
|
|
if ButtonStatus = mrOk then
|
|
begin
|
|
Server := rServer;
|
|
Port := rPort;
|
|
end;
|
|
Result := ButtonStatus;
|
|
|
|
tmpServerPairs.Free;
|
|
libClose(TaskInstance);
|
|
Release;
|
|
end;
|
|
end;
|
|
|
|
procedure TrpcConfig.butOkClick(Sender: TObject);
|
|
begin
|
|
ButtonStatus := mrOk;
|
|
rServer := Piece(cboServer.Text,',',1);
|
|
rPort := pnlPort.Caption;
|
|
rpcConfig.close;
|
|
end;
|
|
|
|
procedure TrpcConfig.butCancelClick(Sender: TObject);
|
|
begin
|
|
ButtonStatus := mrCancel;
|
|
rServer := cboServer.Text;
|
|
rPort := pnlPort.Caption;
|
|
rpcConfig.close;
|
|
end;
|
|
|
|
procedure TrpcConfig.FormDestroy(Sender: TObject);
|
|
begin
|
|
ServerPairs := TStringList.Create; // {p13 - REM}
|
|
ServerPairs.Free; // Release Help File.
|
|
Application.HelpFile := OrigHelp; //
|
|
end;
|
|
|
|
procedure TrpcConfig.cboServerExit(Sender: TObject);
|
|
begin
|
|
//
|
|
end;
|
|
|
|
procedure TrpcConfig.NewClick(Sender: TObject);
|
|
var
|
|
I: Integer;
|
|
ServerForm: TfrmAddServer;
|
|
strServer, strName, strPort: String;
|
|
begin
|
|
ServerForm := TfrmAddServer.Create(Self);
|
|
if ServerForm.ShowModal <> mrCancel then
|
|
begin
|
|
strServer := ServerForm.edtAddress.Text;
|
|
strPort := ServerForm.edtPortNumber.Text;
|
|
ServerForm.edtPortNumber.Text := strPort;
|
|
strName := strServer + ',' + strPort;
|
|
WriteRegData(HKCU, REG_SERVERS, strName, '');
|
|
ServerPairs.Add(strName);
|
|
strName := ServerPairs[ServerPairs.Count-1];
|
|
cboServer.Items.Add(strName);
|
|
for I := 0 to cboServer.Items.Count-1 do // Iterate
|
|
begin
|
|
if cboServer.Items[I] = strName then
|
|
cboServer.ItemIndex := I;
|
|
end; // for
|
|
// cboServer.Text := strServer;
|
|
// pnlPort.Caption := strPort;
|
|
cboServerClick(Self);
|
|
end;
|
|
ServerForm.Free;
|
|
end;
|
|
|
|
end.
|
|
|