| 
									
										
										
										
											2007-12-06 00:23:05 -05:00
										 |  |  | ! Copyright (C) 2007 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: io.files namespaces webapps.file http.server.responders | 
					
						
							| 
									
										
										
										
											2007-12-11 18:44:26 -05:00
										 |  |  | xmode.code2html kernel html sequences ;
 | 
					
						
							| 
									
										
										
										
											2007-12-06 00:23:05 -05:00
										 |  |  | IN: webapps.source | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-11 18:44:26 -05:00
										 |  |  | ! This responder is a potential security problem. Make sure you | 
					
						
							|  |  |  | ! don't have sensitive files stored under vm/, core/, extra/ | 
					
						
							|  |  |  | ! or misc/. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : check-source-path ( path -- ? )
 | 
					
						
							|  |  |  |     { "vm/" "core/" "extra/" "misc/" } | 
					
						
							|  |  |  |     [ head? ] curry* contains? ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : source-responder ( path mime-type -- )
 | 
					
						
							|  |  |  |     drop
 | 
					
						
							|  |  |  |     serving-html | 
					
						
							|  |  |  |     [ dup <file-reader> htmlize-stream ] with-html-stream ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-06 00:23:05 -05:00
										 |  |  | global [ | 
					
						
							|  |  |  |     ! Serve up our own source code | 
					
						
							|  |  |  |     "source" [ | 
					
						
							| 
									
										
										
										
											2007-12-11 18:44:26 -05:00
										 |  |  |         "argument" get check-source-path [ | 
					
						
							| 
									
										
										
										
											2007-12-06 00:23:05 -05:00
										 |  |  |             [ | 
					
						
							| 
									
										
										
										
											2007-12-11 18:44:26 -05:00
										 |  |  |                 "" resource-path "doc-root" set
 | 
					
						
							|  |  |  |                 [ source-responder ] serve-file-hook set
 | 
					
						
							|  |  |  |                 file-responder | 
					
						
							|  |  |  |             ] with-scope
 | 
					
						
							|  |  |  |         ] [ | 
					
						
							|  |  |  |             "403 forbidden" httpd-error | 
					
						
							|  |  |  |         ] if
 | 
					
						
							| 
									
										
										
										
											2007-12-06 00:23:05 -05:00
										 |  |  |     ] add-simple-responder | 
					
						
							|  |  |  | ] bind |