git-svn-id: https://192.168.0.254/svn/Proyectos.EstudioCarnicero_ProGestion/trunk@4 1b8572a8-2d6b-b84e-8c90-20ed86fa4eca
221 lines
5.6 KiB
ObjectPascal
221 lines
5.6 KiB
ObjectPascal
unit uDataModuleServer;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes, uDAEngine, uDAIBXDriver, uDAClasses, uDADriverManager,
|
|
uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer,
|
|
uROSessions, uDADataTable, uDABINAdapter, IBSQLMonitor, JvComponent,
|
|
JvAppStorage, JvAppRegistryStorage, uDAInterfaces, JvComponentBase;
|
|
|
|
type
|
|
TdmServer = class(TDataModule)
|
|
HTTPServer: TROIndyHTTPServer;
|
|
BINMessage: TROBinMessage;
|
|
IBXDriver: TDAIBXDriver;
|
|
DriverManager: TDADriverManager;
|
|
SessionManager: TROInMemorySessionManager;
|
|
DADiagrams: TDADiagrams;
|
|
JvAppRegistryStorage: TJvAppRegistryStorage;
|
|
ConnectionManager: TDAConnectionManager;
|
|
DataDictionary: TDADataDictionary;
|
|
procedure DataModuleCreate(Sender: TObject);
|
|
procedure HTTPServerBeforeServerActivate(Sender: TObject);
|
|
private
|
|
FConnectionName : string;
|
|
FConnectionString : string;
|
|
function GetConnectionString: string;
|
|
property ConnectionString : string read GetConnectionString;
|
|
public
|
|
FDBServer : string;
|
|
FDBPort : string;
|
|
FDBPath : string;
|
|
FDBUser : string;
|
|
FDBPass : string;
|
|
FInicioWindows : Boolean;
|
|
FServerPort : string;
|
|
function LeerConfiguracion : Boolean;
|
|
procedure SalvarConfiguracion;
|
|
procedure Configurar;
|
|
procedure Restart;
|
|
property ConnectionName : string read FConnectionName write FConnectionName;
|
|
end;
|
|
|
|
function DarRutaInformes : String;
|
|
function Encrypt (const Source : string) : String;
|
|
function Decrypt (const Source : string) : String;
|
|
function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer;
|
|
|
|
var
|
|
dmServer: TdmServer;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
Forms, fServerForm, Registry, Windows, Dialogs, uConfiguracion;
|
|
|
|
function DarRutaInformes : String;
|
|
begin
|
|
Result := ExtractFilePath(Application.ExeName) + 'Informes' + PathDelim;
|
|
end;
|
|
|
|
function Encrypt (const Source : string) : String;
|
|
var
|
|
i:integer;
|
|
begin
|
|
Randseed := 28;
|
|
Result := '';
|
|
for i:=1 to length(Source) do
|
|
Result := Result + chr(ord(Source[i]) + Random(10) + 1);
|
|
end;
|
|
|
|
function Decrypt (const Source : string) : String;
|
|
var
|
|
i : integer;
|
|
begin
|
|
Randseed:= 28;
|
|
Result := '';
|
|
for i := 1 to length(Source) do
|
|
Result := Result + chr(ord(Source[i]) - Random(10) - 1);
|
|
end;
|
|
|
|
function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer;
|
|
var
|
|
ds: IDADataset;
|
|
begin
|
|
ds := AConnection.NewDataset(Format('SELECT Gen_id(%s,1) FROM RDB$Database', [GeneratorName]));
|
|
ds.Open;
|
|
result := ds.Fields[0].Value;
|
|
ds.Close;
|
|
end;
|
|
|
|
procedure WriteAutoRun(Name, Value : String);
|
|
var
|
|
reg: TRegistry;
|
|
begin
|
|
reg := TRegistry.Create;
|
|
try
|
|
reg.RootKey := HKEY_LOCAL_MACHINE;
|
|
reg.LazyWrite := False;
|
|
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
|
|
reg.WriteString(Name, Value);
|
|
reg.CloseKey;
|
|
finally
|
|
reg.free;
|
|
end;
|
|
end;
|
|
|
|
procedure DeleteAutoRun(Name : String);
|
|
var
|
|
reg: TRegistry;
|
|
begin
|
|
reg := TRegistry.Create;
|
|
try
|
|
reg.RootKey := HKEY_LOCAL_MACHINE;
|
|
reg.LazyWrite := False;
|
|
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
|
|
if reg.ValueExists(Name) then
|
|
reg.DeleteValue(Name);
|
|
reg.CloseKey;
|
|
finally
|
|
reg.free;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmServer.Configurar;
|
|
var
|
|
AForm : TForm;
|
|
begin
|
|
AForm := TfConfiguracion.Create(NIL);
|
|
try
|
|
AForm.ShowModal;
|
|
finally
|
|
AForm.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmServer.DataModuleCreate(Sender: TObject);
|
|
begin
|
|
if not LeerConfiguracion then
|
|
Configurar;
|
|
|
|
Restart;
|
|
end;
|
|
|
|
function TdmServer.GetConnectionString: string;
|
|
begin
|
|
Result := 'IBX?Server=' + FDBServer + '/' + FDBPort
|
|
+ ';Database=' + FDBPath
|
|
+ ';UserID=' + FDBUser
|
|
+ ';Password=' + Decrypt(FDBPass)
|
|
+ ';Dialect=3;Charset=ISO8859_1;';
|
|
end;
|
|
|
|
function TdmServer.LeerConfiguracion : Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
with JvAppRegistryStorage do
|
|
begin
|
|
FDBServer := ReadString('ServerDB');
|
|
FDBPort := ReadString('PortDB');
|
|
FDBPath := ReadString('PathDB');
|
|
FDBUser := ReadString('UserDB');
|
|
FDBPass := ReadString('PassDB');
|
|
|
|
FServerPort := ReadString('ServerPort');
|
|
FInicioWindows := ReadBoolean('InicioWindows');
|
|
end;
|
|
|
|
Result := (Length(FDBServer) > 0) and
|
|
(Length(FDBPort) > 0) and
|
|
(Length(FDBPath) > 0) and
|
|
(Length(FDBUser) > 0) and
|
|
(Length(FDBPass) > 0) and
|
|
(Length(FServerPort) > 0);
|
|
end;
|
|
|
|
procedure TdmServer.Restart;
|
|
begin
|
|
HTTPServer.Active := False;
|
|
ConnectionManager.Connections.GetDefaultConnection.ConnectionString := '';
|
|
|
|
ConnectionName := ConnectionManager.GetDefaultConnectionName;
|
|
ConnectionManager.Connections.GetDefaultConnection.ConnectionString := GetConnectionString;
|
|
|
|
HTTPServer.Active := TRUE;
|
|
end;
|
|
|
|
procedure TdmServer.SalvarConfiguracion;
|
|
begin
|
|
with JvAppRegistryStorage do
|
|
begin
|
|
BeginUpdate;
|
|
try
|
|
WriteString('ServerDB', FDBServer);
|
|
WriteString('PortDB', FDBPort);
|
|
WriteString('PathDB', FDBPath);
|
|
WriteString('UserDB', FDBUser);
|
|
WriteString('PassDB', FDBPass);
|
|
WriteString('ServerPort', FServerPort);
|
|
|
|
WriteBoolean('InicioWindows', FInicioWindows);
|
|
if FInicioWindows then
|
|
WriteAutoRun('ProGestion Server', Application.ExeName)
|
|
else
|
|
DeleteAutoRun('ProGestion Server');
|
|
finally
|
|
EndUpdate
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TdmServer.HTTPServerBeforeServerActivate(Sender: TObject);
|
|
begin
|
|
HTTPServer.Port := StrToInt(FServerPort);
|
|
end;
|
|
|
|
end.
|