Get a txt file?
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

Get a txt file?

Started by Madman, 10 March, 2006, 11:51:15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Madman

Is it possibole to get the content of an txt file from a webserver?
if so, how?
I havent tested WSA yet...  ::)
We suffer in silence, we lurk in the shadows, we kill in the night
Site currently down, ETA of returning online is 2099 ;p

bastya_elvtars

You have send a HTTP GET command and receive.
Like:

    local GETHTML = "GET "..gfile.." HTTP/1.1\r\nHost: "..ghost.."\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"
    err1,err2=WSA.BeginSendTo(sock,GETHTML..string.char(13,10),ghost,gport)


Be warned: this is for old PXWXSA, but the protocol command is what has importance here.
Everything could have been anything else and it would have just as much meaning.

Madman

Could you give me a example script? I only tried a little, and so far i only succseded in connecting to a www...
Then i just crash PX... ;p
We suffer in silence, we lurk in the shadows, we kill in the night
Site currently down, ETA of returning online is 2099 ;p

jiten

Quote from: Madman on 10 March, 2006, 12:27:21
Could you give me a example script? I only tried a little, and so far i only succseded in connecting to a www...
Then i just crash PX... ;p
You can use bluebear's latest PxWSA lib (it won't crash).
There's also an example script shipped in the archive.
If that one doesn't help, I'll make a small example for you.

jiten

Change Settings.sHost and Settings.sFile according to your needs:

--[[

	PxWSA lib's example script by jiten (3/10/2006)

	You should use the latest PxWSA lib available here: http://www.thewildplace.dk/#pxwsa

	ATTENTION: It must be in your scripts' folder

]]--

Settings = {
	sBot = frmHub:GetHubBotName(),				-- Default Bot Name or -- sBot = "custombot"
	sProt = 0,						-- 0 for TCP, 1 for UDP (mostly it's TCP)
	sPort = 80,						-- WSA lib default port
	sHost = "www.jonsthoughtsoneverything.com",		-- Host
	sFile = "/feeds/newzbin/newzbin-apps.xml",		-- File
}

fData = ""

-- Init WSA lib
libinit = loadlib("pxwsa.dll", "_libinit")
libinit()

-- Init sockets
WSA.Init()

Main = function()
	SetTimer(1000)
end

ChatArrival = function(user,data)
	local s,e,cmd = string.find(data, "^%b<>%s+%p(%S+).*|$")
	if cmd and string.lower(cmd) == "pxwsa" then
		ConnectToHost(); StartTimer()
		return 1
	end
end

OnExit = function()
	WSA.Dispose()
end

ConnectToHost = function()
	-- If not connected to any socket
	if not bConnected then
		-- Create a socket according to what we have above
		s,e,sock = WSA.NewSocket(Settings.sProt)
		-- Try connection to host
		local errorCode, errorStr = WSA.Connect(sock,Settings.sHost,Settings.sPort)
		-- Connection failed
		if errorCode then
			-- Connection Report
			SendToAll(Settings.sBot,"*** Error: Connection to "..Settings.sHost.." failed!")
			-- Mark as not connected
			bConnected = false
		else
			SendToAll(Settings.sBot,"*** Connected")
			-- Mark as connected
			bConnected = true
			-- Mark non-blocking socket
			local sError, Str = WSA.MarkNonBlocking(sock)
			-- Error
			if sError then
				-- Socket Error Marking Report
				SendToAll(Settings.sBot,"*** Error: Could not mark non-blocking socket.")
			else
				SendToAll(Settings.sBot,"*** Socket Marked")
				-- Send Request
				local wCmd = "GET "..Settings.sFile.." HTTP/1.1\r\nHost: "..Settings.sHost.."\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"..string.char(13,10)
				-- Send the request
				local _ErrorCode, _ErrorStr, bytesSent = WSA.Send(sock,wCmd)
				-- Connection failed
				if _ErrorCode then
					-- Mark as not connected
					bConnected = false
					-- Report Error
					SendToAll(Settings.sBot,"*** Error: Connection Failed - ".._ErrorStr)
					-- Close existing socket
					WSA.Close(sock)
				else
					-- Connection Report
					SendToAll(Settings.sBot,"*** Request to "..Settings.sHost.." sent!")
				end
			end
		end
	end
end

-- PX WSA lib functions

-- Receive request
OnTimer = function()
	if bConnected then
		-- Wait for the request response
		local errorCode, errorStr, sData, bytesRead = WSA.Receive(sock)
		if errorCode then
			-- Connection gracefully closed
			if errorCode == 0 then
				-- Close existing socket
				WSA.Close(sock)
				-- Mark as connected
				bConnected = false
				-- Send received buffer
				SendToAll(fData)
				-- Empty receive buffer
				fData = ""
			-- Non-critical error
			elseif (errorCode == 10035) then
			-- Receive failed
			else
				-- Close existing socket
				WSA.Close(sock)
				-- Mark as not connected
				bConnected = false
				-- Empty receive buffer
				fData = ""
			end
		else
			-- Merge to received buffer
			fData = fData..sData
		end
	end
end

Madman

Thanks m8. i was 2 drunk 2 try anything yesterday... ;P
Will try it later today....
We suffer in silence, we lurk in the shadows, we kill in the night
Site currently down, ETA of returning online is 2099 ;p

Madman

I have some prob... I tried jiten's version, witch works perfect...
In order to learn, i wrote a copy of it in my own scripting style...
But it for some reason don't work, and I can't see why...
Plese check and see if you can find the problem...

-- WSA test
-- Made by Madman

tConfig = {
	Bot = frmHub:GetHubBotName(),
	Protocol = 0,
	Port = 80,
	Host = "didde.myftp.org",
	File = "/test.txt",
}

fData = ""

libinit = loadlib("pxwsa.dll", "_libinit")
libinit()

WSA.Init()

function Main()
	SetTimer(1000)
end

function ChatArrival(curUser, data)
	local data = string.sub(data, 1, -2)
	local s,e,cmd = string.find(data, "%b<>%s+(%S+)")
	if cmd == "!wsa" then
		Connect() StartTimer() return 1
	end
end

function Connect()
	if not Connected then
		s,e,Socket = WSA.NewSocket(tConfig.Protocol)
		local errorCode, errorString = WSA.Connect(Socket, tConfig.Host, tConfig.Port)
		if errorCode then
			SendToAll(tConfig.Bot, "*** Error: Connection to " ..tConfig.Host.. " failed")
			Connected = false
		else
			SendToAll(tConfig.Bot, "*** Connected")
			Connected = true
			local ErrorCode, ErrorString = WSA.MarkNonBlocking(Socket)
			if ErrorCode then
				SendToAll(tConfig.Bot, "*** Error: Could not mark non-blocking socket")
			else
				SendToAll(tConfig.Bot, "*** Socket marked as non-blocking")
				local SendCmd = "GET " ..tConfig.File.. " HTTP:/1.1\r\nHost: " ..tConfig.Host.. "\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1)\r\n" ..string.char(13,10)
				local _errorCode, _errorString, byteSent = WSA.Send(Socket, SendCmd)
				if _errorCode then
					Connected = false
					SendToAll(tConfig.Bot, "*** Connection failed: " .._errorString)
					WSA.Close(Socket)
				else
					SendToAll(tConfig.Bot, "*** Request to " ..tConfig.Host.. " sent")
					Connected = true
				end
			end
		end
	end
end

function OnTimer()
	if Connected then
		local errorCode, errorString, sData, bytesRead = WSA.Receive(Socket)
		if errorCode then
			if errorCode == 0 then
				WSA.Close(Socket)
				Connected = false
				SendToAll(fData)
				fData = ""
			elseif errorCode == 10035 then
			else
				WSA.Close(Socket)
				Connected = false
				fData = ""
			end
		else
			fData = fData..sData
		end
	end
end

function OnExit()
	WSA.Dispose()
end


I get this far with my version.
Quote
[20:32:52] <-=MadSecurity=-> *** Connected
[20:32:52] <-=MadSecurity=-> *** Socket marked as non-blocking
[20:32:52] <-=MadSecurity=-> *** Request to didde.myftp.org sent
but with jiten's i get
Quote
[20:33:00] <-=MadSecurity=-> *** Connected
[20:33:00] <-=MadSecurity=-> *** Socket Marked
[20:33:00] <-=MadSecurity=-> *** Request to didde.myftp.org sent!
[20:33:02] HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 9
Last-Modified: Fri, 10 Mar 2006 10:14:51 GMT
Connection: Close
Date: Sat, 11 Mar 2006 19:33:00 GMT
Server: Abyss/2.0.6-X1-Win32 AbyssLib/2.0.6

wwiiiieee

wwiiiieee is the conntent of the txt file...
We suffer in silence, we lurk in the shadows, we kill in the night
Site currently down, ETA of returning online is 2099 ;p

jiten

From my point of view, there's only one thing that must be changed in your code:

local SendCmd = "GET " ..tConfig.File.. " HTTP:/1.1\r\nHost: " ..tConfig.Host.. "\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1)\r\n" ..string.char(13,10)


to:

local SendCmd = "GET "..tConfig.File.." HTTP/1.1\r\nHost: "..tConfig.Host.."\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n"..string.char(13,10)


As you can see, there a space between " and .. and vice-versa.
With that, you won't find the file ;)

Madman

Quote from: jiten on 11 March, 2006, 20:59:01
As you can see, there a space between " and .. and vice-versa.
With that, you won't find the file ;)
That dosent matter... becides.. that's just my scripting style.. ;)
But you helped found the problem anyway...
I had...
" HTTP:/1.1\r\nHost: "

witch shoudl be
" HTTP/1.1\r\nHost: "
We suffer in silence, we lurk in the shadows, we kill in the night
Site currently down, ETA of returning online is 2099 ;p

bluebear

I havent read all posts in this thread.

I will soon release a http downloader lib.

Where u can add download tasks, then they will be downloaded in their own thread.
And your script can once in a while ask the lib if this download is completed or not.
Download will not block hub/script.

Files are downloaded as binary data rather then text. So it will be much better then downloading from a lua script :)
Sincerely,
bluebear
--
http://www.thewildplace.dk/ is is closed - Use the following mirrors instead
http://bluebear.psycho-chihuahua.net
http://pxextension.piratez.dk/
[Lua extensions - Chat stats - YnHub PMSpy - DC Source code - and more]

Herodes

Quote from: bluebear on 15 March, 2006, 20:31:45
I havent read all posts in this thread.

I will soon release a http downloader lib.

Where u can add download tasks, then they will be downloaded in their own thread.
And your script can once in a while ask the lib if this download is completed or not.
Download will not block hub/script.

Files are downloaded as binary data rather then text. So it will be much better then downloading from a lua script :)
hmm will it be available just for http ?

bluebear

Yes, it will be http only. I might add ftp and such as well.

Reason that im writing this lib, is that im making some new header files and such that will replace the original lua headers.
That will allow for usage of the same libary on both lua versions. So this http lib is only meant to test this.
Its almost finished though, but it have some small issues i need to look into... But currently i dont have the time.
Sincerely,
bluebear
--
http://www.thewildplace.dk/ is is closed - Use the following mirrors instead
http://bluebear.psycho-chihuahua.net
http://pxextension.piratez.dk/
[Lua extensions - Chat stats - YnHub PMSpy - DC Source code - and more]

Herodes

Quote from: bluebear on 22 March, 2006, 12:41:25
... But currently i dont have the time.
Yep time is an issue for all of us ... no time no time ..

Psycho_Chihuahua

bluebear, do you by any chance need beta testers for that script?

i would be happy to test it  ;D
PtokaxWiki ?PtokaX Mirror + latest Libs

01100001011011000111001101101111001000000110101101101110011011110111011101101110001000000110000101110011001000000101010001101111011010110110111101101100011011110111001101101000

bluebear

Sorry for the late reply, but i'm very busy atm.

Yes i have a beta, but it has some issues on script restart and script stop.

I'll try to put in online to night, but im not sure i will have time for it..
But if its not here monday afternoon that means i forgot. In that case throw me a pm in plops hub :)
Sincerely,
bluebear
--
http://www.thewildplace.dk/ is is closed - Use the following mirrors instead
http://bluebear.psycho-chihuahua.net
http://pxextension.piratez.dk/
[Lua extensions - Chat stats - YnHub PMSpy - DC Source code - and more]

SMF spam blocked by CleanTalk