Liberar a porta 3050 do firebird e senha do banco?

Delphi

22/03/2014

Pessoal, pesquisei vários artigos na net, para liberar a porta 3050 do firebird 2.1. Uso Delphi 2010, mas não achei nenhum artigo que desse certo, gostaria de liberar a porta 3050 e ainda mudar a senha padrão do banco via código.
Osmar

Osmar

Curtidas 0

Respostas

Marco Salles

Marco Salles

22/03/2014

Pessoal, pesquisei vários artigos na net, para liberar a porta 3050 do firebird 2.1. Uso Delphi 2010, mas não achei nenhum artigo que desse certo, gostaria de liberar a porta 3050 e ainda mudar a senha padrão do banco via código.


Liberar de quem ??

Não entendi ... A Porta que o Servidor Firebird roda por padrão é a 3050.. Mas isto pode seralaterado

Porém em delphi anteriores a conexão ia direto ... Mas a partir do delph mais novos é necessário indicar além do Path do DataBase o Ip seguido da Porta

Para conexões Locais

127.0.0.1/3050:C:\Caminho\SeuBanco.FDB


Não sei se vc quer dizer como Liberar este processo ????

[]sds e espero ter sido útil

GOSTEI 0
Daniel Qualhato

Daniel Qualhato

22/03/2014

                               try
                                 //grava a chave de registro no regedit
                                 Reg.RootKey := HKEY_CURRENT_USER;
                                 Reg.OpenKey('progBaruch\Baruchkey', true);
                                 Reg.WriteString('Key', SENHA_CRYPINSTCryp02);
                                 Reg.RootKey := HKEY_LOCAL_MACHINE;
                                 Reg.CloseKey;
                                 //libera a porta do firebird pelo regedit
                                 Reg.OpenKey('SYSTEM\Select', False);
                                 CtrlSet := FormatFloat('000',Reg.ReadInteger('Current'));
                                 Reg.CloseKey;
                                 Reg.OpenKey('SYSTEM\ControlSet' + CtrlSet + '\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List', True);
                                 if (not Reg.ValueExists('3050:TCP')) then
                                 Reg.WriteString('3050:TCP','3050:TCP:*:Enabled:Firebird');
                               finally
                                 Reg.CloseKey;
                                 Reg.Free;
                               end;


faça bom proveito
GOSTEI 0
Osmar

Osmar

22/03/2014

Marco
O que eu quis dizer o Daniel fez, só que fiquei curioso com o que você postou, colocando um IP e também a opção de liberar a porta 3050, tentei fazer mas não consegui, pois uso um arquivo ini onde pego o IP do servidor e insiro nesse arquivo nas máquinas clientes, mas de acordo com o que você postou falta fazer mais alguma coisa?

O arquivo esta assim:

CONFIG.INI

INF_BD]
Caminho=C:\GE\Dados\DADOS.FDB
IP_Servidor=192.168.0.100
GOSTEI 0
Marco Salles

Marco Salles

22/03/2014

Que bom Osmar

Então eu utilizo DBX e escrevo meus arquivos Ini Assim


CONFIG.INI
[INF_BD]
Caminho=192.168.0.100\3050:C:\GE\Dados\DADOS.FDB
GOSTEI 0
Osmar

Osmar

22/03/2014

Bom dia Marco,

Meu código esta conforme abaixo, como devo fazer de acordo com sua dica?

procedure TDmDados.DataModuleCreate(Sender: TObject);
var
  iniConf : TIniFile;
  sCaminho, sIPServidor : String;
begin

  Ini := TIniFile.Create(ExtractFilePath(ParamStr(1)) + GetCurrentDir + '\Configurar.ini');

  iniConf := TiniFile.Create( ExtractFilePath ( Application.ExeName) + 'Config.ini');
  sIPServidor := iniConf.ReadString('INF_BD','IP_Servidor','');
  sCaminho := iniConf.ReadString('INF_BD','Caminho','');

  // Depois de Ler as Chaves, vou configurar o IBDataBase
  IBDatabase.Connected  := False;
  IBDatabase.DatabaseName := sIPServidor +':'+sCaminho;
  IBDatabase.LoginPrompt := false; // Para não pedir a senha do banco!

  try
    if not IBDatabase.Connected then
      IBDatabase.Connected := True;
  Except
    ShowMessage( 'Não foi posssível conectar ao banco!' );
    Application.Terminate;
  end;
GOSTEI 0
Marco Salles

Marco Salles

22/03/2014

Olá Osmar , eu não trabalho com IBX ,mas um comparativo com o modo que eu faço seria mais ou menos assim

iniConf := TiniFile.Create( ExtractFilePath ( Application.ExeName) + 'Config.ini');
sIPServidor := iniConf.ReadString('INF_BD','IP_Servidor','');
sCaminho := iniConf.ReadString('INF_BD','Caminho','');
sPorta := iniConf.ReadString('INF_BD','porta','');


// Depois de Ler as Chaves, vou configurar o IBDataBase
IBDatabase.Connected := False;
IBDatabase.DatabaseName := sIPServidor +'/'+sPorta+':'+sCaminho;
IBDatabase.LoginPrompt := false; // Para não pedir a senha do banco
........

[]sds
GOSTEI 0
Osmar

Osmar

22/03/2014

Olá Marco,
Fiz alguns teste mas não está dando certo, considerando o código que você passou, como ficaria então o arquivo config.ini?
outra observação em um dos exemplos você colocou antes da porta assim ' / ' e depois assim ' \ ' qual a forma correta?
GOSTEI 0
Marco Salles

Marco Salles

22/03/2014

Desculpe o correto é :/

Bem o seu arquivo Ini pode ficar com os parâmetros separados ,, IP , Porta , Caminho ...Desde que vc monte na Hora de passar para o DataBase

Ou o seu Arquivo Ini pode estar com uma ùnica Linha que ja contém o Ip a Porta e o Caminho . Ai pe so Carregar para o Database


Exemplo de meu Arquivo Ini Local


127.0.0.1/fds25_db:C:\DelphiProjetos\Delphi_Xe2\Nfe_\BANCO.FDB


0 fds25_db que aparece aqui esta definido no Arquivo Services do Windows dentre outros servidores instalados nesta máquina

C:\Windows\System32\drivers\etc


gds_db 3050/tcp
gds75_db 3055/tcp # InterBase Server
fds15_db 3150/tcp #Firebird1.5
fds21_db 3155/tcp #Firebird2.1
fds25_db 3160/tcp #Firebird2.5


Mas caso não tenha definido este Aliase vc definie explicitamente o Valor daPorta

Arquivo Ini


[DataBase]
PathFile=127.0.0.1/3050:C:\DelphiProjetos\Delphi_Xe2\Nfe_Eletronica\Dados\BANCONfe.FDB


espero ter sido claro , lembrando que isto aplico eu DBX

[]sds







GOSTEI 0
Osmar

Osmar

22/03/2014

Boa Noite Marco,
Estive ausente uns dias, mas já estou na ativa, valos lá, fiz alguns testes o sistema roda blz mas a máquina cliente não consegue fazer o acesso ao servidor veja como está:

procedure TDmDados.DataModuleCreate(Sender: TObject);
var
  iniConf : TIniFile;
  sPorta, sCaminho, sIPServidor : String;
begin

  Ini := TIniFile.Create(ExtractFilePath(ParamStr(1)) + GetCurrentDir + '\Configurar.ini');

  iniConf := TiniFile.Create( ExtractFilePath ( Application.ExeName) + 'Config.ini');
  sIPServidor := iniConf.ReadString('INF_BD','IP_Servidor','');
  sPorta := iniConf.ReadString('INF_BD','porta','');
  sCaminho := iniConf.ReadString('INF_BD','Caminho','');

  IBDatabase.Connected := False;
  IBDatabase.DatabaseName := sIPServidor +'/'+sPorta+':'+sCaminho;
  IBDatabase.LoginPrompt := false; // Para não pedir a senha do banco

  try
    if not IBDatabase.Connected then
      IBDatabase.Connected := True;
  Except
    ShowMessage( 'Não foi posssível conectar ao banco!' );
    Application.Terminate;
  end;



O arquivo CONFIG.INI está definido da seguinte forma:

[INF_BD]
IP_Servidor=127.0.0.1
Porta=3050
Caminho=C:\GE\Dados\DADOS.FDB


O IbDataBaseName está configurado assim: 127.0.0.1/3050:C:\GE\Dados\DADOS.FDB, uma detalhe o IbDataBaseName esta com esse caminho tanto servidor como nas máquinas clientes é assim mesmo que você usa?
GOSTEI 0
Osmar

Osmar

22/03/2014

                               try
                                 //grava a chave de registro no regedit
                                 Reg.RootKey := HKEY_CURRENT_USER;
                                 Reg.OpenKey('progBaruch\Baruchkey', true);
                                 Reg.WriteString('Key', SENHA_CRYPINSTCryp02);
                                 Reg.RootKey := HKEY_LOCAL_MACHINE;
                                 Reg.CloseKey;
                                 //libera a porta do firebird pelo regedit
                                 Reg.OpenKey('SYSTEM\Select', False);
                                 CtrlSet := FormatFloat('000',Reg.ReadInteger('Current'));
                                 Reg.CloseKey;
                                 Reg.OpenKey('SYSTEM\ControlSet' + CtrlSet + '\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List', True);
                                 if (not Reg.ValueExists('3050:TCP')) then
                                 Reg.WriteString('3050:TCP','3050:TCP:*:Enabled:Firebird');
                               finally
                                 Reg.CloseKey;
                                 Reg.Free;
                               end;


faça bom proveito



Daniel está dando erro nessa linha, eu mudo a senha do firebird manualmente, como faço nesse caso?

Reg.WriteString('Key', SENHA_CRYPINSTCryp02);

onde você coloca esse código, inseri no datamodulo mas estou tendo problemas.
GOSTEI 0
Nelson Santos

Nelson Santos

22/03/2014

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
GOSTEI 0
POSTAR