| 
									
										
										
										
											2015-04-19 20:18:01 -04:00
										 |  |  | ! Copyright (C) 2015 John Benediktsson | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | USING: accessors command-line concurrency.messaging http.server | 
					
						
							| 
									
										
										
										
											2015-04-20 20:37:25 -04:00
										 |  |  | http.server.cgi http.server.static io io.pathnames io.servers | 
					
						
							|  |  |  | kernel logging.server namespaces sequences threads ;
 | 
					
						
							| 
									
										
										
										
											2015-04-19 20:18:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | IN: file-server | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : file-server-logging ( quot -- )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         init-namespaces
 | 
					
						
							|  |  |  |         receive | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         dup first "log-message" = [ | 
					
						
							|  |  |  |             dup last "http.server" = [ | 
					
						
							|  |  |  |                 dup rest first3 write-message flush
 | 
					
						
							|  |  |  |             ] when
 | 
					
						
							|  |  |  |         ] when
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         "log-server" get-global send t
 | 
					
						
							|  |  |  |     ] "Log server (file-server)" spawn-server "log-server" [ | 
					
						
							|  |  |  |         call
 | 
					
						
							|  |  |  |     ] with-variable ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-20 20:37:25 -04:00
										 |  |  | : file-server-args ( command-line -- cgi? path/f )
 | 
					
						
							|  |  |  |     "--cgi" swap [ member? ] [ remove ?first ] 2bi ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-19 20:18:01 -04:00
										 |  |  | : file-server-main ( -- )
 | 
					
						
							|  |  |  |     [ | 
					
						
							| 
									
										
										
										
											2015-04-20 20:37:25 -04:00
										 |  |  |         command-line get file-server-args | 
					
						
							|  |  |  |         current-directory get or
 | 
					
						
							| 
									
										
										
										
											2015-04-19 20:18:01 -04:00
										 |  |  |         <static> | 
					
						
							|  |  |  |             t >>allow-listings | 
					
						
							| 
									
										
										
										
											2015-04-20 20:37:25 -04:00
										 |  |  |         swap [ enable-cgi ] when
 | 
					
						
							| 
									
										
										
										
											2015-04-19 20:18:01 -04:00
										 |  |  |         main-responder set-global
 | 
					
						
							|  |  |  |         8080 httpd wait-for-server | 
					
						
							|  |  |  |     ] file-server-logging ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MAIN: file-server-main |