Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/libexec/httpd



Just a note: A better change would have been to just add

print = httpd.print

at the start of the script.  That way the script could still be used as a normal CGI script with minimal changes.


> Am 07.12.2015 um 04:11 schrieb Kamil Rytarowski <kamil%NetBSD.org@localhost>:
> 
> Module Name:	src
> Committed By:	kamil
> Date:		Mon Dec  7 03:11:48 UTC 2015
> 
> Modified Files:
> 	src/libexec/httpd: printenv.lua
> 
> Log Message:
> Improve the httpd(8) printenv.lua Lua example
> 
> Stop using Lua builtin print function and replace them with http.* ones.
> httpd.print and http.write wraps SSL support when needed.
> 
> Print http headers, without them browser may interpret page as raw text.
> 
> No need to hardcode prefix path in the form.
> 
> Add comments for a user with tips how to use this script.
> 
> Patch by Travis Paul
> 
> Closes PR misc/50502
> 
> 
> To generate a diff of this commit:
> cvs rdiff -u -r1.2 -r1.3 src/libexec/httpd/printenv.lua
> 
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
> 
> Modified files:
> 
> Index: src/libexec/httpd/printenv.lua
> diff -u src/libexec/httpd/printenv.lua:1.2 src/libexec/httpd/printenv.lua:1.3
> --- src/libexec/httpd/printenv.lua:1.2	Thu Jan  2 08:21:38 2014
> +++ src/libexec/httpd/printenv.lua	Mon Dec  7 03:11:48 2015
> @@ -1,4 +1,4 @@
> --- $NetBSD: printenv.lua,v 1.2 2014/01/02 08:21:38 mrg Exp $
> +-- $NetBSD: printenv.lua,v 1.3 2015/12/07 03:11:48 kamil Exp $
> 
> -- this small Lua script demonstrates the use of Lua in (bozo)httpd
> -- it will simply output the "environment"
> @@ -8,6 +8,10 @@
> -- the same value on each invocation.  You can not keep state between
> -- two calls.
> 
> +-- You can test this example by running the following command:
> +-- /usr/libexec/httpd -b -f -I 8080 -L test printenv.lua .
> +-- and then navigate to: http://127.0.0.1:8080/test/printenv
> +
> local httpd = require 'httpd'
> 
> function printenv(env, headers, query)
> @@ -15,12 +19,14 @@ function printenv(env, headers, query)
> 	-- we get the "environment" in the env table, the values are more
> 	-- or less the same as the variable for a CGI program
> 
> -	if count == nil then
> -		count = 1
> -	end
> -
> -	-- output a header
> -	print([[
> +	-- output headers using httpd.write()
> +	-- httpd.write() will not append newlines
> +	httpd.write("HTTP/1.1 200 Ok\r\n")
> +	httpd.write("Content-Type: text/html\r\n\r\n")
> +
> +	-- output html using httpd.print()
> +	-- you can also use print() and io.write() but they will not work with SSL
> +	httpd.print([[
> 		<html>
> 			<head>
> 				<title>Bozotic Lua Environment</title>
> @@ -29,54 +35,58 @@ function printenv(env, headers, query)
> 				<h1>Bozotic Lua Environment</h1>
> 	]])
> 
> -	print('module version: ' .. httpd._VERSION .. '<br>')
> +	httpd.print('module version: ' .. httpd._VERSION .. '<br>')
> 
> -	print('<h2>Server Environment</h2>')
> +	httpd.print('<h2>Server Environment</h2>')
> 	-- print the list of "environment" variables
> 	for k, v in pairs(env) do
> -		print(k .. '=' .. v .. '<br/>')
> +		httpd.print(k .. '=' .. v .. '<br/>')
> 	end
> 
> -	print('<h2>Request Headers</h2>')
> +	httpd.print('<h2>Request Headers</h2>')
> 	for k, v in pairs(headers) do
> -		print(k .. '=' .. v .. '<br/>')
> +		httpd.print(k .. '=' .. v .. '<br/>')
> 	end
> 
> 	if query ~= nil then
> -		print('<h2>Query Variables</h2>')
> +		httpd.print('<h2>Query Variables</h2>')
> 		for k, v in pairs(query) do
> -			print(k .. '=' .. v .. '<br/>')
> +			httpd.print(k .. '=' .. v .. '<br/>')
> 		end
> 	end
> 
> -	print('<h2>Form Test</h2>')
> +	httpd.print('<h2>Form Test</h2>')
> 
> -	print([[
> -	<form method="POST" action="/rest/form?sender=me">
> +	httpd.print([[
> +	<form method="POST" action="form?sender=me">
> 	<input type="text" name="a_value">
> 	<input type="submit">
> 	</form>
> 	]])
> 	-- output a footer
> -	print([[
> +	httpd.print([[
> 		</body>
> 	</html>
> 	]])
> end
> 
> function form(env, header, query)
> +
> +	httpd.write("HTTP/1.1 200 Ok\r\n")
> +	httpd.write("Content-Type: text/html\r\n\r\n")
> +
> 	if query ~= nil then
> -		print('<h2>Form Variables</h2>')
> +		httpd.print('<h2>Form Variables</h2>')
> 
> 		if env.CONTENT_TYPE ~= nil then
> -			print('Content-type: ' .. env.CONTENT_TYPE .. '<br>')
> +			httpd.print('Content-type: ' .. env.CONTENT_TYPE .. '<br>')
> 		end
> 
> 		for k, v in pairs(query) do
> -			print(k .. '=' .. v .. '<br/>')
> +			httpd.print(k .. '=' .. v .. '<br/>')
> 		end
> 	else
> -		print('No values')
> +		httpd.print('No values')
> 	end
> end
> 
> 



Home | Main Index | Thread Index | Old Index