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_TCP, OnSocketError);
SocketConnect(socket, OnSocketConnected, OnSocketReceive, OnSocketDisconnected, "MyHoster", 21)
}
public OnSocketError(Handle:socket, const errorType, const errorNum, any:arg)
{
LogError("socket error %d (errno %d)", errorType, errorNum);
CloseHandle(socket);
}
public OnSocketConnected(Handle:socket, any:arg)
{
SocketSend(socket, "USER MyUserName\r\n");
}
public OnSocketConnected2(Handle:socket, any:arg)
{
PrintToServer("works"); // work (;
SocketSend(socket, "tt\ndfgdfg\nsdfsdf"); // Set the content of the File
}
public OnSocketReceive2(Handle:socket, String:receiveData[], const dataSize, any:arg)
{
PrintToServer("works"); // Doesn't work (;
CloseHandle(socket); // Save the Content
}
public OnSocketReceive(Handle:socket, String:receiveData[], const dataSize, any: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_TCP, OnSocketError);
SocketConnect(socket2, OnSocketConnected2, OnSocketReceive2, OnSocketDisconnected, Host, Port)
}
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(CopyReceiver, sizeof(CopyReceiver), receiveData)
SplitString(CopyReceiver, "(", part, sizeof(part))
ReplaceString(CopyReceiver, sizeof(CopyReceiver), part, "")
ReplaceString(CopyReceiver, sizeof(CopyReceiver), ")", "")
ReplaceString(CopyReceiver, sizeof(CopyReceiver), "(", "")
ExplodeString(CopyReceiver, ",", buffers, 6, 9)
Format(Host, sizeof(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:socket, any:arg)
{
CloseHandle(socket);
}
__________________