initial import of changes from 9front bikeshedding; bundle rc-httpd
This commit is contained in:
		
							parent
							
								
									6d3bcc867c
								
							
						
					
					
						commit
						a99fa8b44f
					
				
					 46 changed files with 1061 additions and 572 deletions
				
			
		
							
								
								
									
										46
									
								
								bin/contrib/rc-httpd/handlers/cgi
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								bin/contrib/rc-httpd/handlers/cgi
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| #!/bin/rc | ||||
| fn filter_headers{ | ||||
| 	response=(200 OK) | ||||
| 	lines='' | ||||
| 	done=false | ||||
| 	while(~ $done false){ | ||||
| 		line=`{getline} | ||||
| 		head=`{echo $line | awk '{print tolower($1)}'} | ||||
| 		if(~ $head status:*) | ||||
| 			response=`{echo $line | awk '{$1="" ; print}'} | ||||
| 		if not if(~ $line '') | ||||
| 			done=true | ||||
| 		if not | ||||
| 			lines=$"lines^$"line^$cr^' | ||||
| ' | ||||
| 	} | ||||
| 	echo 'HTTP/1.1' $"response^$cr | ||||
| 	echo -n $"lines | ||||
| 	do_log $response(1) | ||||
| } | ||||
| 
 | ||||
| fn run_cgi { | ||||
| 	path=$cgi_path exec $"cgi_bin $params || echo 'Status: 500' | ||||
| } | ||||
| 
 | ||||
| cgi_bin=$1 | ||||
| cgi_dir=. | ||||
| if(! ~ $#* 1) | ||||
| 	cgi_dir=$*($#*) | ||||
| if not if(~ $"cgi_bin /*){ | ||||
| 	cgi_dir=`{basename -d $"cgi_bin} | ||||
| 	cgi_dir=$"cgi_dir | ||||
| } | ||||
| if(! ~ $"cgi_bin */*) | ||||
| 	cgi_bin=./$"cgi_bin | ||||
| if(! builtin cd $"cgi_dir >[2]/dev/null || ! test -x $"cgi_bin){ | ||||
| 	error 500 | ||||
| 	exit | ||||
| } | ||||
| 
 | ||||
| run_cgi | { | ||||
| 	filter_headers | ||||
| 	emit_extra_headers | ||||
| 	echo $cr | ||||
| 	exec cat | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stanley Lieber
						Stanley Lieber