unit uoddface_roscon_cfg;

{$mode delphi}
interface
// Esta unidad define la configuraciónd e conexión de los demonios de OddFace
// por defecto se suministra una configuración que no es operativa y debe
// sustituirse por la configuración que corresponda en cada caso.
uses
  Classes, SysUtils,
  urosx;

var
  dbcon_rosx: TDBrosxCon;


implementation

uses
  uoddfaceconfig,
  uauxiliares;

var
  ipfija_rosx: string; // si se inicializa no se consulta la ip
  host_rosx: string; // se usa si ipfija='' para buscar la ip
  puerto_rosx: string; // por defecto es 80
  uri_rosx: string; // Por ej: '/simsee/ros/rosx.php';

  {$IFDEF PROXY_ENABLED_ROS}
  // se usan solo si está en modo  PROXY_ENABLED_ROS
  proxy_host, proxy_port, proxy_user, proxy_pass: string;

  {$ENDIF}


procedure ReadParametrosDePerfil;
var
  k, n: integer;
  pal, Data: string;
  buscando: boolean;
  oddface_cfg: TOddFaceConfigRec;
  aPerfil: TOddFaceConfigPerfil;
begin
  n := ParamCount;
  buscando := True;
  oddface_cfg := TOddFaceConfigRec.CreateLoad;

  if (oddface_cfg = nil) or (oddface_cfg.perfiles.Count < 1) then
    raise Exception.Create(
      'imposible leer dadots para conexión al servidor. Debe configurar por lo menos un Perfil en OddFace_prepare'
      );

  aPerfil := nil;
  k := 1;
  while buscando and (k <= n) do
  begin
    pal := ParamStr(k);
    if pos('perfil=', pal) = 1 then
    begin
      buscando := False;
      Delete(pal, 1, length('perfil='));
      pal:= urldecode( pal );
      aPerfil := oddface_cfg.getPerfil(pal);
    end
    else
      Inc(k);
  end;


  if aPerfil = nil then
    aPerfil := oddface_cfg.PerfilActivo;

  ipfija_rosx := aPerfil.ros_ip;
  host_rosx := aPerfil.ros_host;
  puerto_rosx := aPerfil.ros_port;
  uri_rosx := aPerfil.ros_uri;
{$IFDEF PROXY_ENABLED_ROS}
  proxy_host := aPerfil.proxy_host;
  proxy_port := aPerfil.proxy_port;
  proxy_user := aPerfil.proxy_user;
  proxy_pass := aPerfil.proxy_pass;
{$ENDIF}

  oddface_cfg.Free;
end;

initialization

  ipfija_rosx := '';
  host_rosx := '';
  puerto_rosx := '';
  uri_rosx := '';
{$IFDEF PROXY_ENABLED_ROS}
  proxy_host := '';
  proxy_port := '';
  proxy_user := '';
  proxy_pass := '';
{$ENDIF}


{$I oddface_rosx.cfg}


  if uri_rosx = '' then
  begin
    // quiere decir que no le vino en el pre-compilado y entonces tratamos de
    // sacar la info a partir de un parámetro
    ReadParametrosDePerfil;
  end;
  writeln('uoddface_roscon_cfg');
  writeln('ipfija_rosx: ', ipfija_rosx);
  writeln('host_rosx: ', host_rosx);
  writeln('puerto_rosx: ', puerto_rosx);
  writeln('uri_rosx: ', uri_rosx);


  dbcon_rosx := TDBrosxCon.Create(ipfija_rosx, host_rosx, puerto_rosx, uri_rosx);
{$IFDEF PROXY_ENABLED_ROS}
  // se usan solo si está en modo  PROXY_ENABLED_ROS
  dbcon_rosx.proxy_host := proxy_host;
  dbcon_rosx.proxy_port := proxy_port;
  dbcon_rosx.proxy_user := proxy_user;
  dbcon_rosx.proxy_pass := proxy_pass;
 {$ENDIF}

  dbcon_rosx.determinar_tipo_servidor;


finalization
  if dbcon_rosx <> nil then
    dbcon_rosx.Free;
end.
