FileZilla Server Autoban Application

Estándar

Automatic Tool to Update the IP Filter Disallowed

Users of Filezilla Server for Windows…congratulations, with this application your IP Disallowed Filter will be updated everyday from login/password errors readed from daily service logs.

I love Filezilla Server for Windows but native autoban options are not enough for me. In my web server clients not have FTP accounts, but i use a few for different reasons. I was bored to see the logs every day, every minute with people try hack the FTP Server with different user/password combinations. I don´t understand how filezilla server dont have a black list manager to control ip´s from logs.

But i decide to make my own updater tool. It´s very simple.

Te console application read the “same day” log file (making a copy, log file is blocked by Filezilla Service) , stores the ip´s with login errors and update XML configuration file, IP Filter Disallowed item.

But this its unsuccesful if service was not restarted…i do it also.

By this way i schedule the exe to execute about 23:55 every day, having the ftp server “IP Filter Disallowed” list updated.

Are you interested on this ?

You can try my tool download exe file from the github project repository, and also you can download the project and change it for free.

FileZilla Server Autoban IP Disallowed Updater

FileZilla Server Autoban IP Filter Disallowed Updater Project

Note: In newer version i will develop an min error count variable from same IP to be filtered. Sometimes a customer try to enter his FTP account with errors, maybe the filter only has to been fired if login error happens more than x times.

Tienda Online / Ecommerce para ERP con SQL Server

sqlserverweb4x4
Estándar

Casi la totalidad de los sistemas de ecommerce actuales están basados en plataformas Open Source, tanto en el Front / Back, como en el motor de base de datos usado para los mismos. Lo mas común son sistemas sobre PHP (ya sea con Frameworks tipo Symfony o parecidos) entre los cuales tenemos Prestashop, Magento, y plugins para CMS como WooCommerce o VirtueMart, que funcionan sobre MySQL.

¿Pero que sucede con las tiendas que ya manejan un ERP sobre SQL Server y quieren vender online?. Al contrario que en el mundo digital, en el ámbito de las aplicaciones de gestión o ERP´s, las soluciones que trabajan con SQL Server son numerosas.  En este caso si el ERP ya tiene un modulo de ecommerce, lo normal es que la empresa opte por esta opción, pero no todas lo tienen , y en este caso existen otras opciones en las que Web4x4 puede ayudarte en tu negocio.

Como expertos en desarrollos de ecommerce hemos desarrollado varias plataformas propias, una sobre ASP clásico, y otra mas actual desarrollada en C# (que lanzaremos dentro de unos meses). En todos los casos nuestros desarrollos de ecommerce se realizan usando SQL Server como motor de base de datos. Para pymes existe una version SQL Server “Express” gratuita y que proporciona las funcionalidades adecuadas para cualquier ecommerce normal, lo que hace que el precio respecto a una opción Open Source sea muy parecido. En nuestro caso al igual que otras consultoras con Prestashop o Magento, lo que cobramos es la configuración e inicialización de la tienda online.

Pero ademas de estas plataformas propias podemos desarrollar sistemas de ecommerce “ad-hoc” para empresas que tengan su ERP sobre SQL Server, usando nuestro conocimiento y experiencia en entornos complejos Microsoft. Podemos generar un ecommerce que se integre de manera transparente con el ERP de tal forma que el negocio se beneficie de la venta online sin tener que cambiar su aplicación de gestión.

¿Te imaginas poder tener las ordenes de pedido de manera automática en tu ERP desde tu tienda online? Eso solo es la punta del iceberg: Clientes, Productos, Facturas, Estadísticas, etc, todo lo que puedas pedir es susceptible de integración, siempre que la base de datos sea legible.

La productividad y la información son 2 puntos clave en los negocios del siglo XXI y la integración de todas las plataformas de venta es algo imprescindible para un negocio moderno.

Si quieres mas información escríbenos a david.moral@web4x4.es o llámanos al 628 81 89 89

 

Chrome Network Error Download Files on C# or Vb.Net

error_network_chrome
Estándar

With the last update of Google Chrome (Versión 53.0.2785.116 m at this point) many Microsoft developers get the surprise of download buttons of their web applications start to fail with Network Error.

This maybe cause by the flush() and close() behaviour on our code and the use of this methods on download functions.

One of the solutions that i find to fix it, its to change flush() and close() to end() adding a empty System.Threading.ThreadAbortException catch to avoid problems on execution.

C#

...            
//Response.Flush();
//Response.Close();
Response.End();
}
catch (System.Threading.ThreadAbortException)
{}
.....

 

Vb.Net

Try
.....
'Response.Flush()
'Response.Close()
Response.End()
Catch exx As System.Threading.ThreadAbortException
End Try

 

I hope this work for you, share and comment this post.

Validacion de usuario en un web service con C#

Estándar

Enhorabuena, si estas en este blog es que tienes que programar un web service con validación de usuario.

En primer lugar te recomendamos que si, tu aplicación, requiere control de login porque usa datos privados, utilices tambien un certificado SSL a través de https, ya que todo el tráfico entre el web service y tu aplicación estara cifrado, sobre todo, el propio envío de login.

Ahora vamos al tema en cuestión, para hacer mas seguro el consumo del web service utilizaremos el concepto de token al validar usuarioy password. Un token no es mas que un string generado de forma automatica al validar el usuario y la password y que tiene un periodo de caducidad para evitar dejar abiertos los métodos de datos del web service, este token lo enviamos en todos los metodos de datos para validar que la sesión no haya caducado o dejado abierta sin querer.

 En nuestro caso, generaremos el token desde una base de datos SQL Server usando una tabla con dos campos: token y fecha_registro. El campo token debe ser del tipo uniqueidentifier y el de fecha_registro smalldatetime. El valor predeterminado para el campo token sera newid(), lo que nos generara un string unico y con el campo de fecha controlaremos la caducidad segun el tiempo que queramos , por ejemplo con un procedimiento almacenado, que elimine el token caducado cada 30 minutos.

Para generar el token creamos un metodo llamado conectar(), que recibirá un usuario y una password.
Si el usuarioy la password son correctas  llamamos a un procedimiento SQL que genera un nuevo registro en la tabla de tokens , este string lo devolveremos al metodo . Si el usuario no es correcto podemos devolver un código para saber porque falla.

[WebMethod(Description = “Valida conexion.”)]
    public string conectar(string usuario, string password)
    {
        string token;
        token = “”;
        if (usuario == “User” && password == “00009999”)
        {
            string sql;

            sql = “EXEC GENERA_TOKEN ‘” + usuario + “‘”;

            SqlDataReader rsX;
            rsX = datos.AbreConsulta(sql);
            while (rsX.Read())
            {
                if (rsX[“token”].ToString()!=””)
                {
                    token = rsX[“token”].ToString();

                }
                else
                {
                    token = “”;
                }

            }
            rsX.Close();

            return token;
        }
        else
        {
            return token;
        }
    }

Siempre es conveniente tener otro metodo para desconectar, que borre el token usado en la sesion:

[WebMethod(Description = “Desconecta.”)]
    public string desconectar(string token)
    {
        string sql;

        sql = “EXEC DESCONECTA_TOKEN ‘” + token + “‘”;

        datos.EjecutaSQL(sql);
   
        return “OK”;
    }

Como subir archivos a un servidor web con ASPX en C# (C sharp)

Estándar

De vez en cuando los que programamos páginas web nos encontramos con la necesidad de que los usuarios puedan subir archivos a un servidor web.

Con estos dos scripts conseguiremos subir un archivo e incluso filtrarlo por tipo y tamaño de una manera facil, usaremos c# para nuestra página aspx.

Aquí tenemos el formulario aspx con el campo para seleccionar el archivo de tipo “file”  y el boton para desencadenar el procedimiento en el archivo de codigo prueba.aspx.cs

prueba.aspx

<%@ Page Language=”C#” AutoEventWireup=”true”  CodeFile=”prueba.aspx.cs” Inherits=”_Default” %>
<form id=”form1″ runat=”server”>
<input id=”flimage” runat=”server” type=”file” />
<asp:Button ID=”Button1″ runat=”server” onclick=”Button1_Click”   Text=”Enviar Archivo” />
<asp:Label ID=”lblmessage” runat=”server” Text=””></asp:Label>
</form>

Al presionar el boton de “Enviar Archivo” ejecuta el evento Button1_Click

prueba.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

if((flimage.PostedFile!=null)&&(flimage.PostedFile.ContentLength > 0)) //nos aseguramos que el usuario haya cargado un archivo

{

if (flimage.Value.EndsWith(“.JPG”) || flimage.Value.EndsWith(“.jpg”) || flimage.Value.EndsWith(“.ico”) || flimage.Value.EndsWith(“.ICO”) || flimage.Value.EndsWith(“.gif”) || flimage.Value.EndsWith(“.GIF”) || flimage.Value.EndsWith(“.png”) || flimage.Value.EndsWith(“.PNG”)) //revisamos el tipo de archivo que nos interese, en este caso solo dejamos imagenes

{

if (flimage.PostedFile.ContentLength <= 500000) //tambien podemos revisar el tamaño, en este ejemplo 500Kb

{

string fn = System.IO.Path.GetFileName(flimage.PostedFile.FileName);

string SaveLocation = Server.MapPath(@”~\Temporal” ) + “\\” + fn;

try

{

flimage.PostedFile.SaveAs(SaveLocation);

this.lblmessage.Text = “El archivo se ha cargado.”;

}

catch (Exception ex)

{

Response.Write(ex.Message);

}

}

else

this.lblmessage.Text = “El tamaño del archivo debe ser menor a 50kbs”;

}

else

this.lblmessage.Text = “No se pudo cargar el archivo seleccionado, por favor seleccione una imagen .jpg, .gif o .png”;

}

else

{

this.lblmessage.Text = “Seleccione un archivo que cargar.”;

}

}

}

Fuente:  Onglasses.net