Thread: FTP Upload
View Single Post
dordnung
Veteran Member
Join Date: Apr 2010
Old 12-14-2010 , 13:59   Re: FTP Upload
Reply With Quote #8

Ok, i start to code something.
login and set some attributes works nice, but the "STOR" Command not works.
I have to login in the Passive Host, to use this Command, in Filezilla this works nice, but not in my script.

My Script:

PHP Code:
#include <sourcemod>
#include <socket>

new Port 0
new String:Host[20];

public 
OnPluginStart() 
{
    new 
Handle:socket SocketCreate(SOCKET_TCPOnSocketError);
    
    
SocketConnect(socketOnSocketConnectedOnSocketReceiveOnSocketDisconnected"MyHoster"21)
}

public 
OnSocketError(Handle:socket, const errorType, const errorNumany:arg
{
    
LogError("socket error %d (errno %d)"errorTypeerrorNum);
    
CloseHandle(socket);
}

public 
OnSocketConnected(Handle:socketany:arg
{
    
SocketSend(socket"USER MyUserName\r\n");
}

public 
OnSocketConnected2(Handle:socketany:arg
{
    
PrintToServer("works"); // work (;
    
SocketSend(socket"tt\ndfgdfg\nsdfsdf"); // Set the content of the File
}

public 
OnSocketReceive2(Handle:socketString:receiveData[], const dataSizeany:arg
{    
    
PrintToServer("works");  // Doesn't work (;
    
CloseHandle(socket);  // Save the Content
}

public 
OnSocketReceive(Handle:socketString:receiveData[], const dataSizeany:arg
{
    if (!
StrContains(receiveData"331"))
    {
        
SocketSend(socket"PASS myPassword\r\n"); // work (;
    
}
    else if (!
StrContains(receiveData"230"))
    {
        
SocketSend(socket"PASV\r\n"); // work (;
    
}
    else if (!
StrContains(receiveData"250"))
    {
        
SocketSend(socket"TYPE A\r\n"); // work (;
    
}
    else if (!
StrContains(receiveData"200"))
    {
        
SocketSend(socket"STOR somefile.txt");
        
        new 
Handle:socket2 SocketCreate(SOCKET_TCPOnSocketError);
        
SocketConnect(socket2OnSocketConnected2OnSocketReceive2OnSocketDisconnectedHostPort)
    }
    else if (!
StrContains(receiveData"227")) 
    {
        
/* Make the Passive Response to an IP + Port*/
        
        
decl String:buffers[6][10];
        
decl String:CopyReceiver[512];
        
decl String:part[128];
        
        
Format(CopyReceiversizeof(CopyReceiver), receiveData)
        
        
SplitString(CopyReceiver"("partsizeof(part))
        
ReplaceString(CopyReceiversizeof(CopyReceiver), part"")
        
ReplaceString(CopyReceiversizeof(CopyReceiver), ")""")
        
ReplaceString(CopyReceiversizeof(CopyReceiver), "(""")
        
ExplodeString(CopyReceiver","buffers69)
        
Format(Hostsizeof(Host), "%s.%s.%s.%s"buffers[0], buffers[1], buffers[2], buffers[3]);
        
Port = (StringToInt(buffers[4]) * 256 ) + StringToInt(buffers[5])
        
        
SocketSend(socket"CWD aPath\r\n"); // work (;
    
}
}

public 
OnSocketDisconnected2(Handle:socketany:arg
{
    
CloseHandle(socket);

__________________
dordnung is offline