git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jvcl@12 7f62d464-2af8-f54e-996c-e91b33f51cbe
150 lines
4.7 KiB
ObjectPascal
150 lines
4.7 KiB
ObjectPascal
{******************************************************************
|
|
|
|
JEDI-VCL Demo
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
Original author:
|
|
|
|
Contributor(s):
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
home page, located at http://jvcl.sourceforge.net
|
|
|
|
The contents of this file are used with permission, subject to
|
|
the Mozilla Public License Version 1.1 (the "License"); you may
|
|
not use this file except in compliance with the License. You may
|
|
obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1_1Final.html
|
|
|
|
Software distributed under the License is distributed on an
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
implied. See the License for the specific language governing
|
|
rights and limitations under the License.
|
|
|
|
******************************************************************}
|
|
|
|
unit FormMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, ClassUtils, JvXmlDatabase, IdBaseComponent, IdComponent, IdURI,
|
|
IdTCPServer, IdCustomHTTPServer, IdHTTPServer, ClassHospital, ShellApi,
|
|
JvComponent, JvTrayIcon, Menus, ActnList;
|
|
|
|
type
|
|
TfoMain = class(TForm)
|
|
IdHTTPServer1: TIdHTTPServer;
|
|
JvTrayIcon1: TJvTrayIcon;
|
|
MainMenu: TPopupMenu;
|
|
Homepage1: TMenuItem;
|
|
ActionList1: TActionList;
|
|
actHome: TAction;
|
|
actExit: TAction;
|
|
Fermer1: TMenuItem;
|
|
N1: TMenuItem;
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure IdHTTPServer1CommandGet(AThread: TIdPeerThread;
|
|
ARequestInfo: TIdHTTPRequestInfo;
|
|
AResponseInfo: TIdHTTPResponseInfo);
|
|
procedure actHomeExecute(Sender: TObject);
|
|
procedure actExitExecute(Sender: TObject);
|
|
procedure JvTrayIcon1DblClick(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
private
|
|
public
|
|
end;
|
|
|
|
var
|
|
foMain: TfoMain;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
{**********************************************************************}
|
|
procedure TfoMain.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
Action := caHide;
|
|
end;
|
|
{**********************************************************************}
|
|
procedure TfoMain.FormCreate(Sender: TObject);
|
|
begin
|
|
Caption := Caption + ' ' + TUtils.GetBuild;
|
|
end;
|
|
{**********************************************************************}
|
|
procedure TfoMain.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
|
|
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
|
|
var
|
|
lHeaders: TStringList;
|
|
lStream: TMemoryStream;
|
|
i: Integer;
|
|
lQuery: TJvXmlQuery;
|
|
begin
|
|
//ARequestInfo.Authentication.Steps
|
|
if (ARequestInfo.AuthExists) then
|
|
begin
|
|
lQuery := GHospital.Database.Query('SELECT * FROM users.xml WHERE (UserLogin = "' + ARequestInfo.AuthUsername +
|
|
'") AND (UserPassword = "' + ARequestInfo.AuthPassword + '")');
|
|
if lQuery.Results.Items.Count = 0 then
|
|
begin
|
|
AResponseInfo.AuthRealm := 'Kapere';
|
|
AResponseInfo.ContentText := DateTimeToStr(Now);
|
|
Exit;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AResponseInfo.AuthRealm := 'Kapere';
|
|
AResponseInfo.ContentText := DateTimeToStr(Now);
|
|
Exit;
|
|
end;
|
|
|
|
try
|
|
lHeaders := TStringList.Create;
|
|
try
|
|
lStream := TMemoryStream.Create;
|
|
if not GHospital.Requests.Request(ARequestInfo.Document, TIdURI.URLDecode(ARequestInfo.UnparsedParams),
|
|
lHeaders, lStream, lQuery.Results.Items[0].Properties.IntValue('UserId')) then
|
|
AResponseInfo.ResponseNo := 404
|
|
else
|
|
begin
|
|
for i:=lHeaders.Count-1 downto 0 do
|
|
if Pos('Location', lHeaders[i]) = 1 then
|
|
begin
|
|
AResponseInfo.Redirect(Copy(lHeaders[i], 10, MAXINT));
|
|
Exit;
|
|
end;
|
|
AResponseInfo.ContentStream := lStream;
|
|
AResponseInfo.CustomHeaders.AddStdValues(lHeaders);
|
|
AResponseInfo.FreeContentStream := true;
|
|
end;
|
|
finally
|
|
lHeaders.Free;
|
|
end;
|
|
except
|
|
AResponseInfo.ResponseNo := 500;
|
|
end;
|
|
end;
|
|
{**********************************************************************}
|
|
procedure TfoMain.actHomeExecute(Sender: TObject);
|
|
begin
|
|
ShellExecute(0, 'open', 'http://127.0.0.1:8000', nil, nil, SW_SHOW);
|
|
end;
|
|
{**********************************************************************}
|
|
procedure TfoMain.actExitExecute(Sender: TObject);
|
|
begin
|
|
Application.Terminate;
|
|
end;
|
|
{**********************************************************************}
|
|
procedure TfoMain.JvTrayIcon1DblClick(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
actHome.Execute;
|
|
end;
|
|
{**********************************************************************}
|
|
end.
|