Plugin FTP FileUploader

FTP File Uploader

¿En que consiste este plugin?
El objetivo del plugin es subir a un FTP los archivos que le indiques a través sde un script en pawn. El objetivo es mejorar la interacción entre una WEB y un servidor sin necesidad de usar MySQL.

¿Como lo uso en mi servidor?
Modificamos la linea ‘plugins’ de nuestro server.cfg:

Código:
plugins FileUp.dll

Para comenzar a usarlo, ponemos al inicio de nuestro script:

Codigo Pawno:
native UploadFile(servidor[], usuario[], pass[],archivo[],ArchivoFTP[]);

Y para llamarlo:

Codigo Pawno:
UploadFile(“ftp.ejemplo.com”, “usuario”, “password”,”scriptfiles/ejemplo.txt”,”/public_html/test.txt”);

¿Donde podria usar esto?
Tienes una web conjunta a tu servidor, y quieres una seccion de nombres de jugadores baneados, por ejemplo.

-Creamos un script donde al ejecutar un comando admin (/ban) guarde el nick en un archivo.
-Al ejecutar el comando (/ban) iniciamos el UploadFile() para subir el archivo y asi actualizar la lista.
Codigo Pawno:
UploadFile(“ftp.ejemplo.com”, “usuario”, “password”,”scriptfiles/bans.ini”,”/public_html/listabans.txt”);

-Desde la web creas un script (conocimientos en php basicos son necesarios) para que lea dicho archivo y lo printee.

Seguro que a vosotros se os ocurren muchas cosas mas en las que poder usar este plugin.

Descarga (Windows) : http://www.megaupload.com/?d=ZZ14HWOY

Codigo Fuente:

[codesyntax lang=”cpp” lines=”normal” lines_start=”0″ container=”pre_table” blockstate=”expanded”]
#include <Windows.h>
#include <wininet.h>
#include <cstdlib>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string>
#include <iostream>

#include <sys/types.h>
#include <sys/stat.h>

unsigned long __stdcall ComenzarSubida( void* pVoid );

char *file2= NULL;
char *ftpfile2= NULL;

wchar_t *wServer2;
wchar_t *wUser2;
wchar_t *wPass2;
wchar_t *wFile2;
wchar_t *wFTPFile2;

#pragma comment (lib, "ws2_32.lib")
#pragma comment( lib, "wininet.lib" )
#include "../SDK/amx/amx.h"
#include "../SDK/plugincommon.h"
typedef void (*logprintf_t)(char* format, ...);

logprintf_t logprintf;
void **ppPluginData;
extern void *pAMXFunctions;

PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
   return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}

PLUGIN_EXPORT bool PLUGIN_CALL Load( void **ppData )
{
   pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
   logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
   logprintf(" ------------------------- ");
   logprintf("   FTP File Uploader 1.0   ");
   logprintf("       BY DURKH3IM         ");
   logprintf(" ------------------------- ");
   return true;
}

PLUGIN_EXPORT void PLUGIN_CALL Unload( )
{
   logprintf(" ------------------------- ");
   logprintf("   FTP File Uploader 1.0   ");
   logprintf("       BY DURKH3IM         ");
   logprintf(" ------------------------- ");
}

static cell AMX_NATIVE_CALL n_UploadFile( AMX* amx, cell* params )
{
	char *server = NULL;
	char *user= NULL;
	char *pass= NULL;
	char *file= NULL;
	char *ftpfile= NULL;

	amx_StrParam(amx, params[1],server);
	amx_StrParam(amx, params[2],user);
	amx_StrParam(amx, params[3],pass);
	amx_StrParam(amx, params[4],file);
	amx_StrParam(amx, params[5],ftpfile);

	size_t len = strlen(server)+1;
	wchar_t *wServer = new wchar_t[len];
	memset(wServer,0,len);
	::MultiByteToWideChar( CP_ACP, NULL,server, -1, wServer,(int) len );

	size_t len2 = strlen(user)+1;
	wchar_t *wUser = new wchar_t[len2];
	memset(wUser,0,len2);
	::MultiByteToWideChar( CP_ACP, NULL,user, -1, wUser,(int) len2 );

	size_t len3 = strlen(pass)+1;
	wchar_t *wPass = new wchar_t[len3];
	memset(wPass,0,len3);
	::MultiByteToWideChar( CP_ACP, NULL,pass, -1, wPass,(int) len3 );

	size_t len4 = strlen(file)+1;
	wchar_t *wFile = new wchar_t[len4];
	memset(wFile,0,len4);
	::MultiByteToWideChar( CP_ACP, NULL,file, -1, wFile,(int) len4 );

	size_t len5 = strlen(ftpfile)+1;
	wchar_t *wFTPFile = new wchar_t[len5];
	memset(wFTPFile,0,len5);
	::MultiByteToWideChar( CP_ACP, NULL,ftpfile, -1, wFTPFile,(int) len5 );

	wServer2 = wServer;
	wUser2 = wUser;
	wPass2 = wPass;
	wFile2 = wFile;
	wFTPFile2 = wFTPFile;

	CreateThread( 0, 0, &ComenzarSubida, NULL, 0, 0 );
	return 1;
}

AMX_NATIVE_INFO HelloWorldNatives[ ] =
{
   { "UploadFile",         n_UploadFile },
   { 0,               0 }
};

PLUGIN_EXPORT int PLUGIN_CALL AmxLoad( AMX *amx )
{
   return amx_Register( amx, HelloWorldNatives, -1 );
}

PLUGIN_EXPORT int PLUGIN_CALL AmxUnload( AMX *amx )
{
   return AMX_ERR_NONE;
}
unsigned long __stdcall ComenzarSubida( void* pVoid )
{
	HINTERNET hInternet;
	HINTERNET hFtpSession;
	hInternet = InternetOpen(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
	hFtpSession = InternetConnect(hInternet,wServer2,INTERNET_DEFAULT_FTP_PORT, wUser2,wPass2,INTERNET_SERVICE_FTP, 0,0 );
	if(FtpPutFile(hFtpSession, wFile2, wFTPFile2, FTP_TRANSFER_TYPE_BINARY, 0))
	{
		printf_s("[FileUploader] El archivo se subio correctamente \n" );
		return 0;
	}
	else
	{
		printf_s("[FileUploader] Ocurrio un error al subir el archivo\n");
		printf_s("[FileUploader] Asegurate de haber puesto correctamente los datos\n");
		return -1;
	}
	InternetCloseHandle(hFtpSession);
	InternetCloseHandle(hInternet);
	return 1;
}
[/codesyntax]

Bugs:
-Ninguno conocido

—————————————————————-
Autor: DURKH3IM
Special Thanks To: Stella
—————————————————————-

Matías Moreno Cárdenas

Publicado por: Matías Moreno Cárdenas

Analista de Seguridad IT y hacking ético / Desarrollador de Software Multiplataforma. Actualmente analista de seguridad informática y hacking ético en Grupo SIA

  1. Avatar

    Oye Puedes Pasarme Por Favor El .dll De Este archivo.

    Responder

    1. Avatar

      Lo perdí con el cierre de mega. Intenta compilar el código fuente

      Responder

  2. Avatar

    gracias por responder amigo Pero me pide el AMX.h me salta este error:

    fatal error C1083: No se puede abrir el archivo incluir: ‘../SDK/amx/amx.h’: No such file or directory

    Responder

    1. Avatar

      Eso se debe a que no lo estas compilando con el kit de desarrollo de plugins para samp, que viene con una serie de librerias, entre ellas ese AMX.h.

      Aqui tienes su descarga: http://www.mediafire.com/file/grx4ti7u1k3lloj/SDK.zip

      Y aquí un manual de uso: http://forum.sa-mp.com/showthread.php?s=4a996fe5375950c10cc095313193c5ba&t=295798

      Responder

      1. Avatar

        Agg amigo, no pude me salta todos estos errores:

        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(103): error C3861: ‘CreateThread’: no se encontró el identificador
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(124): error C2065: ‘HINTERNET’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(124): error C2146: error de sintaxis : falta ‘;’ delante del identificador ‘hInternet’
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(124): error C2065: ‘hInternet’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(125): error C2065: ‘HINTERNET’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(125): error C2146: error de sintaxis : falta ‘;’ delante del identificador ‘hFtpSession’
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(125): error C2065: ‘hFtpSession’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(126): error C2065: ‘hInternet’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(126): error C2065: ‘INTERNET_OPEN_TYPE_DIRECT’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(126): error C3861: ‘InternetOpen’: no se encontró el identificador
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(127): error C2065: ‘hFtpSession’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(127): error C2065: ‘hInternet’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(127): error C2065: ‘INTERNET_DEFAULT_FTP_PORT’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(127): error C2065: ‘INTERNET_SERVICE_FTP’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(127): error C3861: ‘InternetConnect’: no se encontró el identificador
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(128): error C2065: ‘hFtpSession’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(128): error C2065: ‘FTP_TRANSFER_TYPE_BINARY’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(128): error C3861: ‘FtpPutFile’: no se encontró el identificador
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(139): error C2065: ‘hFtpSession’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(139): error C3861: ‘InternetCloseHandle’: no se encontró el identificador
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(140): error C2065: ‘hInternet’ : identificador no declarado
        c:usersrojasdesktopplugin ftpftpuploaderftpuploaderftpuploader.h(140): error C3861: ‘InternetCloseHandle’: no se encontró el identificador

        Responder

        1. Avatar

          Si no sabes programar no te recomiendo intentar compilarlo, te volverás loco.

          Recomiendo leer algo sobre programación C++

          Responder

  3. Avatar

    Amigo, por favor ayudame lo necesito urgente no he podido definir algunos identificadores intente con “void” pero No pude, ayuda por favor

    Cordial Saludo.

    Responder

Deja un comentario