void LoginSettingWidget::initWidgets()
{
    dest_addr_label = new QLabel();
    dest_port_label = new QLabel();
    dest_addr_edit = new QLineEdit();
    dest_port_edit = new QLineEdit();

    dest_addr_edit->setAlignment(Qt::AlignLeft);
    dest_port_edit->setAlignment(Qt::AlignLeft);

    dest_addr_edit->setFixedWidth(120);
    dest_port_edit->setFixedWidth(120);

    dest_addr_edit->setPlaceholderText(tr("Enter Target Device IP Address"));
    dest_port_edit->setPlaceholderText(tr("Enter Target Port Number"));

    QString ip_regexp("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}");
    QValidator *ip_validator = new QRegExpValidator(QRegExp(ip_regexp));
    dest_addr_edit->setValidator(ip_validator);

    QString port_regexp("^[1-9]$|(^[1-9][0-9]$)|(^[1-9][0-9][0-9]$)|(^[1-9][0-9][0-9][0-9]$)|(^[1-6][0-5][0-5][0-3][0-5]$)");
    QValidator *port_validator = new QRegExpValidator(QRegExp(port_regexp));
    dest_port_edit->setValidator(port_validator);

    ok_button = new QPushButton();
    cancel_button = new QPushButton();
    //cancel_button->setDefault(true);

    connect(ok_button, SIGNAL(clicked()), this, SLOT(onOkButtonClicked()));
    connect(cancel_button, SIGNAL(clicked()), this, SIGNAL(showLogin()));
}
void ConfConexoesWidget::carregarConfiguracao(void)
{
 vector<QString> atribs_chave;
 map<QString, map<QString, QString> >::iterator itr, itr_end;
 ConexaoBD *conexao=NULL;

 //Expressão regular usada para validar o endereço digitado para o servidor
 QRegExp ip_regexp("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+");

 //Para a sessão de configuração de conexões, o 'alias' será usado como campo chave
 atribs_chave.push_back(AtributosParsers::ALIAS);

 //Carrega as configurações
 ConfBaseWidget::carregarConfiguracao(AtributosGlobais::CONF_CONEXOES, atribs_chave);

 itr=params_config.begin();
 itr_end=params_config.end();

 while(itr!=itr_end)
 {
  //Aloca uma nova conexão
  conexao=new ConexaoBD;

  /* Caso o host da conexão seja um IP, atribui o valor ao parâmetro,
     ConexaoBD::PARAM_IP_SERVIDOR da conexão. Caso contrário atribui ao
     ConexaoBD::PARAM_FQDN_SERVIDOR. A libpq trata separadamente IP e FQDN do servidor
     por isso é necessária esta distinção */
  if(ip_regexp.exactMatch(itr->second[ConexaoBD::PARAM_FQDN_SERVIDOR]))
   conexao->definirParamConexao(ConexaoBD::PARAM_IP_SERVIDOR, itr->second[ConexaoBD::PARAM_FQDN_SERVIDOR]);
  else
   conexao->definirParamConexao(ConexaoBD::PARAM_FQDN_SERVIDOR, itr->second[ConexaoBD::PARAM_FQDN_SERVIDOR]);

  //Atribuindo os demais valores à  conexão
  conexao->definirParamConexao(ConexaoBD::PARAM_PORTA, itr->second[ConexaoBD::PARAM_PORTA]);
  conexao->definirParamConexao(ConexaoBD::PARAM_USUARIO, itr->second[ConexaoBD::PARAM_USUARIO]);
  conexao->definirParamConexao(ConexaoBD::PARAM_SENHA,itr->second[ConexaoBD::PARAM_SENHA]);
  conexao->definirParamConexao(ConexaoBD::PARAM_NOME_BD, itr->second[ConexaoBD::PARAM_NOME_BD]);
  conexao->definirParamConexao(ConexaoBD::PARAM_TEMPO_CONEXAO, itr->second[ConexaoBD::PARAM_TEMPO_CONEXAO]);
  conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, itr->second[ConexaoBD::PARAM_MODO_SSL]);
  conexao->definirParamConexao(ConexaoBD::PARAM_CERT_RAIZ_SSL, itr->second[ConexaoBD::PARAM_CERT_RAIZ_SSL]);
  conexao->definirParamConexao(ConexaoBD::PARAM_CERT_SSL, itr->second[ConexaoBD::PARAM_CERT_SSL]);
  conexao->definirParamConexao(ConexaoBD::PARAM_CHAVE_SSL, itr->second[ConexaoBD::PARAM_CHAVE_SSL]);
  conexao->definirParamConexao(ConexaoBD::PARAM_CRL_SSL, itr->second[ConexaoBD::PARAM_CRL_SSL]);
  conexao->definirParamConexao(ConexaoBD::PARAM_LIB_GSSAPI, itr->second[ConexaoBD::PARAM_LIB_GSSAPI]);
  conexao->definirParamConexao(ConexaoBD::PARAM_SERVIDOR_KERBEROS, itr->second[ConexaoBD::PARAM_SERVIDOR_KERBEROS]);
  conexao->definirParamConexao(ConexaoBD::PARAM_OPCOES, itr->second[ConexaoBD::PARAM_OPCOES]);

  //Adiciona a conexão ao combo de conexões
  conexoes_cmb->addItem(QString::fromUtf8(itr->second[AtributosParsers::ALIAS]),
                        QVariant::fromValue<void *>(reinterpret_cast<void *>(conexao)));

  itr++;
 }

 /* Habilita os botões de edição e exclusão caso, após o carregamento,
    hajam conexões inseridas no combo */
 editar_tb->setEnabled(conexoes_cmb->count() > 0);
 excluir_tb->setEnabled(conexoes_cmb->count() > 0);
}
void ConnectionsConfigWidget::configurarConexao(DBConnection *conn)
{
	if(conn)
	{
		QRegExp ip_regexp("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+");

		if(ip_regexp.exactMatch(host_edt->text()))
			conn->setConnectionParam(DBConnection::PARAM_SERVER_IP, host_edt->text());
		else
			conn->setConnectionParam(DBConnection::PARAM_SERVER_FQDN, host_edt->text());

		conn->setConnectionParam(DBConnection::PARAM_PORT, QString("%1").arg(port_sbp->value()));
		conn->setConnectionParam(DBConnection::PARAM_USER, user_edt->text());
		conn->setConnectionParam(DBConnection::PARAM_PASSWORD, passwd_edt->text());
		conn->setConnectionParam(DBConnection::PARAM_DB_NAME, conn_db_edt->text());
		conn->setConnectionParam(DBConnection::PARAM_CONN_TIMEOUT, QString("%1").arg(timeout_sbp->value()));

		switch(ssl_mode_cmb->currentIndex())
		{
			case 1:
				conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, DBConnection::SSL_ALLOW);
			break;
			case 2:
				conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, DBConnection::SSL_REQUIRE);
			break;
			case 3:
				conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, DBConnection::SSL_CA_VERIF);
			break;
			case 4:
				conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, DBConnection::SSL_FULL_VERIF);
			break;
			default:
			case 0:
				conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, DBConnection::SSL_DESABLE);
			break;
		}

		if(ssl_mode_cmb->currentIndex()!=0)
		{
			conn->setConnectionParam(DBConnection::PARAM_SSL_ROOT_CERT, root_cert_edt->text());
			conn->setConnectionParam(DBConnection::PARAM_SSL_CERT, client_cert_edt->text());
			conn->setConnectionParam(DBConnection::PARAM_SSL_KEY, client_key_edt->text());
			conn->setConnectionParam(DBConnection::PARAM_SSL_CRL, crl_edt->text());
		}

		if(gssapi_auth_chk->isChecked())
			conn->setConnectionParam(DBConnection::PARAM_LIB_GSSAPI, "gssapi");

		if(!krb_server_edt->text().isEmpty())
			conn->setConnectionParam(DBConnection::PARAM_KERBEROS_SERVER, krb_server_edt->text());

		if(!options_edt->text().isEmpty())
			conn->setConnectionParam(DBConnection::PARAM_OPTIONS, options_edt->text());
	}
}
void ConnectionsConfigWidget::loadConfiguration(void)
{
	vector<QString> key_attribs;
	map<QString, map<QString, QString> >::iterator itr, itr_end;
	DBConnection *conn=NULL;

	//Regexp used to validate the host address
	QRegExp ip_regexp("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+");

	key_attribs.push_back(ParsersAttributes::ALIAS);
	BaseConfigWidget::loadConfiguration(GlobalAttributes::CONNECTIONS_CONF, key_attribs);

	itr=config_params.begin();
	itr_end=config_params.end();

	while(itr!=itr_end)
	{
		conn=new DBConnection;

		if(ip_regexp.exactMatch(itr->second[DBConnection::PARAM_SERVER_FQDN]))
			conn->setConnectionParam(DBConnection::PARAM_SERVER_IP, itr->second[DBConnection::PARAM_SERVER_FQDN]);
		else
			conn->setConnectionParam(DBConnection::PARAM_SERVER_FQDN, itr->second[DBConnection::PARAM_SERVER_FQDN]);

		conn->setConnectionParam(DBConnection::PARAM_PORT, itr->second[DBConnection::PARAM_PORT]);
		conn->setConnectionParam(DBConnection::PARAM_USER, itr->second[DBConnection::PARAM_USER]);
		conn->setConnectionParam(DBConnection::PARAM_PASSWORD,itr->second[DBConnection::PARAM_PASSWORD]);
		conn->setConnectionParam(DBConnection::PARAM_DB_NAME, itr->second[DBConnection::PARAM_DB_NAME]);
		conn->setConnectionParam(DBConnection::PARAM_CONN_TIMEOUT, itr->second[DBConnection::PARAM_CONN_TIMEOUT]);
		conn->setConnectionParam(DBConnection::PARAM_SSL_MODE, itr->second[DBConnection::PARAM_SSL_MODE]);
		conn->setConnectionParam(DBConnection::PARAM_SSL_ROOT_CERT, itr->second[DBConnection::PARAM_SSL_ROOT_CERT]);
		conn->setConnectionParam(DBConnection::PARAM_SSL_CERT, itr->second[DBConnection::PARAM_SSL_CERT]);
		conn->setConnectionParam(DBConnection::PARAM_SSL_KEY, itr->second[DBConnection::PARAM_SSL_KEY]);
		conn->setConnectionParam(DBConnection::PARAM_SSL_CRL, itr->second[DBConnection::PARAM_SSL_CRL]);
		conn->setConnectionParam(DBConnection::PARAM_LIB_GSSAPI, itr->second[DBConnection::PARAM_LIB_GSSAPI]);
		conn->setConnectionParam(DBConnection::PARAM_KERBEROS_SERVER, itr->second[DBConnection::PARAM_KERBEROS_SERVER]);
		conn->setConnectionParam(DBConnection::PARAM_OPTIONS, itr->second[DBConnection::PARAM_OPTIONS]);

		connections_cmb->addItem(Utf8String::create(itr->second[ParsersAttributes::ALIAS]),
				QVariant::fromValue<void *>(reinterpret_cast<void *>(conn)));

		itr++;
	}

	edit_tb->setEnabled(connections_cmb->count() > 0);
	remove_tb->setEnabled(connections_cmb->count() > 0);
}
示例#5
0
void DBConnection::setConnectionParam(const QString &param, const QString &value)
{
	//Regexp used to validate the host address
	QRegExp ip_regexp("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+");

	//Raise an error in case the param name is empty
	if(param=="")
		throw Exception(ERR_ASG_INV_CONN_PARAM, __PRETTY_FUNCTION__, __FILE__, __LINE__);

	/* Set the value to the specified param on the map.

	One special case is treated here, if user use the parameter SERVER_FQDN and the value
	is a IP address, the method will assign the value to the SERVER_IP parameter */
	if(param==PARAM_SERVER_FQDN && ip_regexp.exactMatch(value))
		connection_params[DBConnection::PARAM_SERVER_IP]=value;
	else
		connection_params[param]=value;

	//Updates the connection string
	generateConnectionString();
}
void ConfConexoesWidget::configurarConexao(ConexaoBD *conexao)
{
 if(conexao)
 {
  QRegExp ip_regexp("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+");

  /* Caso o nome do host especificado no formulário seja um IP (combinando com a expressão regular)
     atribui o valor ao campo respectivo na conexão. Caso contrário atribui ao campo de
     nome de host (fqdn) */
  if(ip_regexp.exactMatch(host_edt->text()))
   conexao->definirParamConexao(ConexaoBD::PARAM_IP_SERVIDOR, host_edt->text());
  else
   conexao->definirParamConexao(ConexaoBD::PARAM_FQDN_SERVIDOR, host_edt->text());

  //Atribuindo os valores básicos de conexão
  conexao->definirParamConexao(ConexaoBD::PARAM_PORTA, QString("%1").arg(porta_sbp->value()));
  conexao->definirParamConexao(ConexaoBD::PARAM_USUARIO, usuario_edt->text());
  conexao->definirParamConexao(ConexaoBD::PARAM_SENHA, senha_edt->text());
  conexao->definirParamConexao(ConexaoBD::PARAM_NOME_BD, bd_conexao_edt->text());
  conexao->definirParamConexao(ConexaoBD::PARAM_TEMPO_CONEXAO, QString("%1").arg(timeout_sbp->value()));

  //Configurando o modo SSL da conexão
  switch(modo_ssl_cmb->currentIndex())
  {
   case 1:
    conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, ConexaoBD::SSL_PERMITIR);
   break;
   case 2:
    conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, ConexaoBD::SSL_REQUERER);
   break;
   case 3:
    conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, ConexaoBD::SSL_VERIF_AUT_CERT);
   break;
   case 4:
    conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, ConexaoBD::SSL_VERIF_COMPLETA);
   break;
   default:
   case 0:
    conexao->definirParamConexao(ConexaoBD::PARAM_MODO_SSL, ConexaoBD::SSL_DESATIVADO);
   break;
  }

  //Caso haja um modo SSL selecionado, atribui os certificados usados para conexão
  if(modo_ssl_cmb->currentIndex()!=0)
  {
   conexao->definirParamConexao(ConexaoBD::PARAM_CERT_RAIZ_SSL, cert_raiz_edt->text());
   conexao->definirParamConexao(ConexaoBD::PARAM_CERT_SSL, cert_cliente_edt->text());
   conexao->definirParamConexao(ConexaoBD::PARAM_CHAVE_SSL, chave_cli_edt->text());
   conexao->definirParamConexao(ConexaoBD::PARAM_CRL_SSL, crl_edt->text());
  }

  //Especificando autenticação GSSAPI caso esteja marcada no formulário
  if(aut_gssapi_chk->isChecked())
   conexao->definirParamConexao(ConexaoBD::PARAM_LIB_GSSAPI, "gssapi");

  //Especificando o endereço do servidor Kerberus quando especificado
  if(!serv_kerberus_edt->text().isEmpty())
   conexao->definirParamConexao(ConexaoBD::PARAM_SERVIDOR_KERBEROS, serv_kerberus_edt->text());

  //Atribuindo opções adicionas de conexão
  if(!opcoes_edt->text().isEmpty())
   conexao->definirParamConexao(ConexaoBD::PARAM_OPCOES, opcoes_edt->text());
 }
}