Ao contrário das versões anteriores do IIS a configuração do FTP no IIS7 disponível no Windows Server 2008
tem alguns passos adicionais que se não forem executados fazem com que o FTP não funcione corretamente,
abaixo um passo-a-passo de como fazer a configuração do FTP.

1- Configurar o FTP Firewall Support no IIS

Abra o IIS (Start / Administrative Tools / Internet Information Services (IIS)) e clique em “FTP Firewall Support”

Em “Data Channel Port Range” configurar “0-0”
Em “External IP Address of Firewall” configurar o IP externo do servidor

2- Configurar o Firewall do Windows

É necessário configurar no Firewall do Windows do Servidor restrições para as seguintes as portas: TCP 20, 21 e 49152-65535.

Faça isso no “Windows Firewall with Advanced Security”

3- Liberar porta no Firewall no serviço Cloud

Caso você esteja utilizando um serviço Cloud como o Amazon EC2, pode ser necessário liberar o
acesso para as portas do FTP no console do serviço.

No Amazon EC2, abra o Console do serviço, e verifique na sua instancia qual Security Group está
sendo utilizado, no meu caso, estou utilizando o security group “quick-start-1”:

Selecione o Security Group que está sendo utilizado e adicione restrição para as seguintes portas:

  • TCP 20
  • TCP 21
  • TCP 49152-65535

Uma opção é liberar todo o tráfego TCP para o seu IP:

NOTA: Mantenha a segurança do seu servidor liberando as portas somente para o
IP que você utiliza para conectar (IP do seu computador). Se você usa IP dinâmico, cada vez que o seu
IP sofrer alteração, atualize-o no Security Group. É muito comum pessoas mal intencionadas
utilizarem programas para varrerem lista de IP’s procurando servidores com portas FTP abertas
e depois tentarem quebrar a senha utilizando “força bruta”, ou seja, utilizando um programa
que testa diferentes combinações de senhas possíveis até encontrar a certa.

4- Configurar o FTP

No IIS (Start / Administrative Tools / Internet Information Services (IIS)) clique em “Sites” com o botão direito e escolha a opção “Add FTP Site”.

Informe a pasta que você deseja que seja visível no FTP:

Em IP Address mantenha a opção “All Unassigned” selecionada para que esse FTP receba requisição de qualquer IP ou domínio e confirme.

Atenção! Nesse esquema de configuração será configurado somente um FTP para esse servidor. Se você quiser configurar nesse servidor dois domínios para o FTP como: ftp.dominio1.com.br e ftp.dominio2.com.br você precisará fazer configurações adicionais, em testes que realizei no IIS do Windows 2008 esse tipo de configuração não funcionou.

Na próxima tela, desmarque a opção “Anonymous”, marque a opção “Basic” e mantenha a opção “Not Selected” selecionada em Authorization.

5- Configurar o usuário do FTP

Abra o Computer Management (Start / Administrative Tools / Computer Management) clique em
“Local Users and Groups” e depois em “Users”. Clique com o botão direito do mouse na área que exibe os usuários
e escolha a opção “New User”.

Informe o nome de usuário e senha que será utilizado para acessar o FTP e confirme a criação.

6- Permissão de acesso na pasta

Utilizando o Windows Explorer, navegue até a pasta que você configurou no FTP, clique com o botão direito do mouse sobre ela e escolha a opção “Properties”

Adicione permissão para o usuário nessa pasta:

Marque as permissões de leitura e escrita nessa pasta:

7- Permissão de acesso para o usuário no FTP

No IIS (Start / Administrative Tools / Internet Information Services (IIS)),
selecione o FTP criado e abra a opção “FTP Authorization Rules”.

Utilize a opção “Add Allow Rule” para adicionar o usuário. Selecione a opção “Specified users” e informe o nome do usuário criado. Em Permissions marque as opções “Read” e “Write” e confirme.

8- Configuração do domínio

A configuração do FTP está finalizada. Você pode conectar no FTP utilizando o IP do servidor e o
usuário e senha criados, ou então, configurar um subdomínio para o seu ftp, por exemplo,
ftp.seudominio.com.br. Para isso, acesse as configurações de DNS do seu domínio
(se for um dominio do Brasil como .com.br, você pode fazer essa configuração diretamente no registro.br)
e configure uma entrada CNAME com o nome “ftp.seudominio.com.br” e apontando para “seudominio.com.br”.
Assim, toda requisição para o subdomínio “ftp.seudominio.com.br” será redirecionada para o mesmo
IP de servidor configurado para “seudominio.com.br”. Esse servidor possuindo as configurações de FTP que
estamos executando receberá as conexões FTP.

9- Teste de acesso

Abra o seu cliente de FTP, se não tiver um, utilize o FileZilla http:/filezilla-project.org/download.php, informe o IP ou nome do domínio, usuário e senha e conecte no servidor.

10- Resolução de problemas de conexão

Problema: A conexão excedeu limite de tempo

Estado:	A resolver o endereço de ftp.seudominio.com.br
Estado:	Conectando 100.245.251.010:21...
Erro:	A conexão excedeu limite de tempo
Erro:	Não foi possível conectar ao servidor

Tente o seguinte:

  • Verifique se o acesso ao servidor está liberado (Firewall do Windows, Permissões de acesso da hospedagem ou serviço Cloud).

  • Verifique se acessando o FTP diretamente pelo próprio servidor funciona.
    Você pode tentar fazer um teste de acesso na porta 21 usando o Telnet:

      telnet 100.245.251.010 21
    
  • Veja esse post: Como utilizar o telnet

  • Tente desabilitar o Firewall do Windows
    Para liberar todo o tráfego TCP no Firewall do Windows abra um prompt de comando e execute os seguintes comandos:

      netsh advfirewall firewall add rule name="Acesso Total TCP" service=ftpsvc action=allow protocol=TCP dir=in
      netsh advfirewall firewall add rule name="Acesso Total TCP" service=ftpsvc action=allow protocol=TCP dir=in
      netsh advfirewall set global StatefulFtp disable
    
  • E o mais importante: TENTE REINICIAR O SERVIDOR !

Problema: 530 User cannot log in, home directory inaccessible

Estado:	A resolver o endereço de ftp.educoutinho.com.br
Estado:	Conectando 100.20.167.010:21...
Estado:	Conexão estabelecida, esperando mensagem de boas-vindas...
Resposta:	220 Microsoft FTP Service
Comando:	USER ftp_user
Resposta:	331 Password required for ftp_user.
Comando:	PASS ********
Resposta:	530 User cannot log in, home directory inaccessible.
Erro:	Erro crítico
Erro:	Não foi possível conectar ao servidor

Tente o seguinte:

  • Verifique se você adicionou a permissão de acesso na pasta (via Windows Explorer)
  • Verifique se você configurou o acesso para esse usuário no FTP utilizando a opção “FTP Authorization Rules”.

Problema: Falha na obtenção da lista de pastas

Estado:	A resolver o endereço de ftp.educoutinho.com.br
Estado:	Conectando 100.20.167.010:21...
Estado:	Conexão estabelecida, esperando mensagem de boas-vindas...
Resposta:	220 Microsoft FTP Service
Comando:	USER ftp_user
Resposta:	331 Password required for ftp_user.
Comando:	PASS ********
Resposta:	230 User logged in.
Comando:	OPTS UTF8 ON
Resposta:	200 OPTS UTF8 command successful - UTF8 encoding now ON.
Estado:	Conectado
Estado:	Obtendo lista de pastas...
Comando:	PWD
Resposta:	257 "/" is current directory.
Comando:	TYPE I
Resposta:	200 Type set to I.
Comando:	PASV
Erro:	Desconectado do servidor: ECONNABORTED - Connection aborted
Erro:	Falha na obtenção da lista de pastas

Tente o seguinte:

  • Verifique se você configurou corretamente o “FTP Firewall Support” com o IP externo.

Problema: Outro erro de conexão

Se você tiver algum erro de conexão, o Firewall do seu windows pode estar bloqueando o acesso.

Tente o seguinte:

  • Abra o Firewall do Windows: Control Panel / System and Security / Windows Firewall.
  • Vá na opção: “Turn Windows Firewall on or off” e marque Off para todas as opções do Firewall
  • Faça um novo teste de conexão

FONTE: https://educoutinho.com.br/iis/como-configurar-o-ftp-no-iis-7-windows-server-2012/

Gravar log de consultas e querys no MySQL

Publicado: setembro 26, 2018 em MYSQL

Muitas vezes quando fazendo uma engenharia reversa em um sistema, a primeira tarefa é identificar interacoes entre o codigo fonte do sistema e o banco de dados.
Para isto acessamos o sistema por uma interface, e interagimos adicionando um cadastro, editando ou qualquer outra acao semelhante.
Depois ao ver o codigo fonte feito por outro programador, itenficamos objetos sendo criados, funcoes, ifs, foors, cases, e insertes em 5 tabelas, tudo mais que um programador pode imagina.

Bem, uma maneira de ajudar nesta tarega, é salvando o log do MySQL para armazenar toda interacao enviada a instancia do banco de dados.

EM SGBD execute o seguinte codigo:
1
2

SET global general_log = 1;
SET global log_output = ‘table’;

En seguida realize a interacao no sistema normalmente. Depois basta executar a seguinte query:
1

select * from mysql.general_log

Ou melhor:
1

select argument from mysql.general_log

https://diegosanches.wordpress.com/2015/05/07/gravar-log-de-consultas-e-querys-no-mysql/

Do nada você se depara com o seguinte erro em uma conexão remota no Mysql:

Host ‘xxx.xxx.xxx’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

Traduzindo:

Host ‘xxx.xxx.xxx’ está bloqueado devido a muitos erros de conexão; desbloquear com ‘mysqladmin flush-hosts’

Fácilmente se entende o erro na parte da mensagem que diz: “bloqueado devido a muitos erros de conexão”

Mas, como desbloquear o acesso ao servidor remoto?

Para desbloquear de forma correta, use os seguintes comandos:

1° Logue-se no seu SSH
[Você precisa fazer login no mesmo servidor onde o Mysql está instalado]

2° Logado no SSH, faça login no Admin do seu Mysql:
#mysql -u root -p

3° após aparecer as setas [–>], digite os seguintes comandos:

Comando 01: (Aumentar o limite de erros de conexões)
#SET GLOBAL max_connect_errors = 100000000;

Comando 02: (Limpando a lista de bloqueios)
#FLUSH HOSTS;

Os comandos acima seriam executados mais ou menos da seguinte forma:

mysql> SET GLOBAL max_connect_errors = 100000000;
mysql> FLUSH HOSTS;
Query OK, 0 rows affected (0.04 sec)
mysql>

Prontinho!
Agora seu Myql vai permitir as con exões remotas novamente.

Fonte: https://www.obacast.com.br/central/index.php/knowledgebase/592/Mysql-A-forma-correta-de-corrigir-o-erro-Host-andsharp039xxxxxxxxxandsharp039-is-blocked-because-of-many-connection-errors-unblock-with-andsharp039mysqladmin-flush-hostsandsharp039.html

No command prompt como administrador rode o seguinte comando:

sc delete service-name

Listar Foreign Keys do MYSQL

Publicado: julho 25, 2018 em MYSQL

For a Table:

SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = ” AND
REFERENCED_TABLE_NAME = ”

For a Column:

SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = ” AND
REFERENCED_TABLE_NAME = ” AND
REFERENCED_COLUMN_NAME = ”

Last update (2013-09-20 19:45:22)
Date added (2009-04-07 11:21:50)
Summary
Oracle has limitation boundaries related with the db_block_size.
Depending the db_block_size you can create datafiles up to one specific size. For example:

db_block_size | Datafile upper limit
———————————————-
2kb 8GB
4kb 16GB
8kb 32GB
16kb 64GB
32kb 128GB

If you have db_block_size=8Kb and try to create a datafile with size 33GB you will get the error:

ORA-01144: File size (4224000 blocks) exceeds maximum of 4194303 blocks

The formula to calculate the max size is: db_block_size * 4194303.

The workaround to this situation is obvious. One simple solution is to create multiple datafiles with smaller size. The othe is to use Bigfile tablespaces

Bigfile tablespaces
This is a feature of Oracle 10g. A bigfile tablespace contains only one datafile (or tempfile) which can be as big as 2^32 (=4GB) blocks.

create bigfile tablespace beeeg_ts data file ‘/o1/dat/beeeg.dbf’ size 2T;

Bigfile tablespaces are supported only for locally managed tablespaces with automatic segment-space management (which is the default setting since Oracle 9i). There are two exceptions: locally managed undo and temporary tablespaces can be bigfile tablespaces, even though their segments are manually managed.

The system and sysaux tablespace cannot be created as bigfile tablespace. Bigfile tablespaces should be used with automatic storage management, or other logical volume managers that support dynamically extensible logical volumes, striping and RAID.

FONTE: http://www.runningoracle.com/product_info.php?products_id=338

Por padrão, até mesmo devido a uma questão de segurança, a possibilidade de execução de scripts Power Shell vem desabilitada no sistema. Para habilitar essa característica precisamos mudar a politica de execução da seguinte forma.

Execute o Power Shell e digite no terminal o seguinte comando:
Get-ExecutionPolicy
O retorno deverá ser Restricted

Para permitir a execução de scripts sem qualquer restrição, vamos utilizar a regra Unrestricted, que permite executar todo e qualquer script PowerShell para isso, digite o comando abaixo:
Set-ExecutionPolicy Unrestricted
Será exibida uma mensagem informando sobre a proteção quanto à execução de Scripts. Digite “S” e pressione Enter. Conforme a imagem abaixo.

Agora digite novamente Get-ExecutionPolicy e o retorno será Unrestricted, ou seja, scripts PowerShell já podem ser executados de forma irrestrita nesta máquina.

Existem outras regras além da Unrestricted e da Restricted que não permite a execução de nenhum script, a serem definidas quanto a execução de scripts baseados em PowerShell:
AllSigned – Todos os scripts devem ser assinados por alguém confiável.
Remote Signed – Todos os scripts que forem baixados da Internet devem ser assinados por alguém confiável.

Fonte:
https://paulosantanna.com/2012/10/14/habilitando-a-execucao-de-scripts-powershell/

Verifique antes o espaço na flash recovery area:

SELECT
NAME,
TO_CHAR(SPACE_LIMIT, ‘999,999,999,999’) AS SPACE_LIMIT,
TO_CHAR(SPACE_LIMIT – SPACE_USED + SPACE_RECLAIMABLE,
‘999,999,999,999’) AS SPACE_AVAILABLE,
ROUND((SPACE_USED – SPACE_RECLAIMABLE)/SPACE_LIMIT * 100, 1)
AS PERCENT_FULL
FROM V$RECOVERY_FILE_DEST;

Use o RMAN para liberar os archives expirados:

CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;

Feito isso você conseguirá liberar espaço dos archives que estão expirados. Caso isso ainda não resolva seu problema tente apagar os archives mais recentes.

Exemplo: Apague os arquivos de archive de até 10 dias anteriores ao atual com o comando:

delete archivelog from time ‘SYSDATE-10’

Inicialmente veremos como limitar um campo texto para receber apenas caracteres numéricos.

Para isso, em sua ASPX, dentro da tag head crie uma função que irá fazer essa limitação, como ilustra a Listagem 01.

Listagem 01 – Função para permitir somente números

function PermiteSomenteNumeros(event) {
var charCode = (event.which) ? event.which : event.keyCode
if (charCode > 31 && (charCode 57))
return false;
return true;
}

No TextBox chame a função pelo evento onkeypress, como ilustra a Listagem 02.

Listagem 02 – Chamada a função no TextBox

O evento onkeypress é “chamado” a cada novo caracter inserido pelo usuário no TextBox. Faça os testes e tente incluir letras.
A próxima função é muito útil, com ela conseguimos recuperar o valor de um TextBox e atribuirmos outro valor qualquer a ele.
A Listagem 03 exibe esta função.

Listagem 03 – Recuperando o ID do controle

function RecuperandoValorControle() {
var controle = document.getElementById(” “)
alert(controle.value);
}

Agora input para chamar esta função (se você precisar usar um controle ASP.NET como o asp:Button, não fará sentido utilizar a função Javascript, concorda?), como ilustra a Listagem 04.
Listagem 04 – Chamada a função da Listagem 03

Faça o teste agora inserindo um valor no TextBox e clicando no botão criado. A Figura 01 exibe o resultado.

Figura 01 – Valor recuperado do TextBox

Finalizando crie um TextBox e insira um valor padrão a sua propriedade Text. A ideia é que, ao clicar no TextBox, o texto suma e, ao clicar fora dele, o texto retorne.

Esse é um exemplo muito comum em sites de compras com campos de busca, por exemplo.
A Listagem 05 ilustra a função que montará essa lógica, e a Listagem 06 mostra o controle ASP.NET com a chamada a função.

Listagem 05 – Função para exibir/limpar valores do TextBox

function ExibindoOcultandoValor(valor) {
var controle = document.getElementById(” “)
if (valor == ‘1’) {
controle.value = ”;
}
else {
controle.value = ‘Valor Padrão’;
}
}

Listagem 06 – Chamada a função no TextBox

Note que no controle é usado os eventos onfocus e onblur, que são acionados quando se clica no controle e quando clica fora dele, respectivamente.

Faça os testes clicando no TextBox e fora dele.
Com estas pequenas dicas conseguimos explorar um pouco do poder do Javascript e aprender basicamente como é simples de integrarmos seu uso com aplicações ASP.NET.

Assim finalizo o artigo. Muito obrigado a todos!

Um abraço, e até o próximo artigo.

Wellington Balbo de Camargo
wellingtonbalbo@gmail.com

Fonte: http://www.devmedia.com.br/exemplos-praticos-com-javascript-em-aplicacoes-asp-net/23616

Criei um objeto em C# para incluir logs de erros da páginas asp.net. A rotina está OK mas comecei a receber o erro:

“System.Security.SecurityException: Fonte não encontrada, mas alguns ou todos os logs de evento não puderam ser pesquisados. Logs inacessíveis: Security.”

Para corrigir este problema seguir os seguintes passos:

1 – Dar permissão a conta de serviço de rede no registro do EventLog. Conforme imagems abaixo:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog

2 – Agora você tem que criar uma chave de registro para seu log. O nome da chave vai depender do Source que você criou na sua classe de log. No meu caso colocarei DEMO.Web.

Feito isso a excessão de segurança gerada não será mais criada e seu log estará disponível no Evento de Log do Windows na seção Aplicativos.

Fontes para criação deste Post:

https://code.msdn.microsoft.com/windowsdesktop/Criando-Logs-para-aplicaes-cf26839e
http://www.christiano.ch/wordpress/2009/12/02/iis7-web-application-writing-to-event-log-generates-security-exception/