unit DRmtGwMain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, rtcDataSrv, rtcSrvModule, rtcPortalGate, rtcSystem, rtcInfo, rtcConn, rtcHttpSrv, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls, Tocsg.Controls; type TDlgRmtGwMain = class(TForm) HttpServer: TRtcHttpServer; Gateway: TRtcPortalGateway; RtcGateTestProvider: TRtcDataProvider; pnBottom: TPanel; pcMain: TPageControl; tabSetting: TTabSheet; tabActive: TTabSheet; Label2: TLabel; Label7: TLabel; edPort: TEdit; edSecureKey: TEdit; xSSL: TCheckBox; btnStart: TButton; btnStop: TButton; lxUser: TListBox; lbMsg: TLabel; procedure HttpServerListenError(Sender: TRtcConnection; E: Exception); procedure HttpServerListenLost(Sender: TRtcConnection); procedure GatewayUserLogin(const UserName: string); procedure GatewayUserLogout(const UserName: string); procedure btnStartClick(Sender: TObject); procedure btnStopClick(Sender: TObject); procedure RtcGateTestProviderCheckRequest(Sender: TRtcConnection); procedure RtcGateTestProviderDataReceived(Sender: TRtcConnection); private { Private declarations } MgCtrl_: TManagerInputControlsData; procedure On_Error(const s: String); procedure SetControls(bActive: Boolean); public { Public declarations } Constructor Create(aOwner: TComponent); override; Destructor Destroy; override; procedure process_WM_SYSCOMMAND(var msg: TWMSysCommand); Message WM_SYSCOMMAND; end; var DlgRmtGwMain: TDlgRmtGwMain; implementation uses Tocsg.Path; {$R *.dfm} Constructor TDlgRmtGwMain.Create(aOwner: TComponent); begin Inherited Create(aOwner); MgCtrl_ := TManagerInputControlsData.Create(CutFileExt(GetRunExePath) + '.ini'); MgCtrl_.RegInputCtrl(edPort); MgCtrl_.RegInputCtrl(edSecureKey); MgCtrl_.Load; SetControls(false); end; Destructor TDlgRmtGwMain.Destroy; begin FreeAndNil(MgCtrl_); Inherited; end; procedure TDlgRmtGwMain.SetControls(bActive: Boolean); begin btnStart.Enabled := not bActive; btnStop.Enabled := bActive; tabSetting.TabVisible := not bActive; tabActive.TabVisible := bActive; if bActive then begin pcMain.ActivePage := tabActive; lbMsg.Caption := Format('Gateway°¡ Ȱ¼ºÈ µÇ¾ú½À´Ï´Ù. (Port=%s)', [HttpServer.ServerPort]); end else begin pcMain.ActivePage := tabSetting; lbMsg.Caption := 'ÁغñµÇ¾ú½À´Ï´Ù.'; end; Application.ProcessMessages; end; procedure TDlgRmtGwMain.btnStartClick(Sender: TObject); begin edPort.Text := Trim(edPort.Text); edSecureKey.Text := Trim(edSecureKey.Text); if edPort.Text = '' then begin MessageBox(Handle, PChar('Æ÷Æ®¸¦ ÀÔ·ÂÇØÁֽʽÿÀ.'), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; MgCtrl_.Save; lbMsg.Caption := 'Gateway¸¦ Ȱ¼ºÈÁßÀÔ´Ï´Ù...'; lbMsg.Update; HttpServer.StopListenNow; HttpServer.ServerPort := edPort.Text; Gateway.AutoRegisterUsers := true; Gateway.ModuleFileName := '/$rdgate'; Gateway.SecureKey := edSecureKey.Text; HttpServer.Listen; SetControls(true); end; procedure TDlgRmtGwMain.btnStopClick(Sender: TObject); begin HttpServer.StopListenNow; SetControls(false); end; procedure TDlgRmtGwMain.On_Error(const s: String); begin // if Pages.ActivePage<>Page_Setup then // begin // Page_Setup.TabVisible:=True; // Pages.ActivePage.TabVisible:=False; // Pages.ActivePage:=Page_Setup; // end; btnStart.Enabled:=True; lbMsg.Caption:= s; lbMsg.Update; end; procedure TDlgRmtGwMain.GatewayUserLogin(const UserName: string); begin if lxUser.Items.IndexOf(UserName) = -1 then lxUser.Items.Add(UserName); end; procedure TDlgRmtGwMain.GatewayUserLogout(const UserName: string); var i: Integer; begin i := lxUser.Items.IndexOf(UserName); if i <> -1 then lxUser.Items.Delete(i); end; procedure TDlgRmtGwMain.HttpServerListenError(Sender: TRtcConnection; E: Exception); begin if not Sender.inMainThread then Sender.Sync(HttpServerListenError,E) else On_Error('Error: '+E.Message); end; procedure TDlgRmtGwMain.HttpServerListenLost(Sender: TRtcConnection); begin if not Sender.inMainThread then Sender.Sync(HttpServerListenLost) else On_Error('Gateway Listener Lost'); end; procedure TDlgRmtGwMain.process_WM_SYSCOMMAND(var msg: TWMSysCommand); begin if msg.CmdType = SC_CLOSE then begin if pcMain.ActivePage = tabActive then begin if MessageBox(Handle, PChar('Á¾·áÇϽðڽÀ´Ï±î?'), PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; end; Inherited; end; procedure TDlgRmtGwMain.RtcGateTestProviderCheckRequest(Sender: TRtcConnection); begin with TRtcDataServer(Sender) do if Request.FileName='/' then Accept; end; procedure TDlgRmtGwMain.RtcGateTestProviderDataReceived(Sender: TRtcConnection); begin with TRtcDataServer(Sender) do if Request.Complete then begin Write('
'); Write('RemoteGateway