ci: fix vweb failures (restore the ability to *force* vweb to listen to *only* local interfaces)
							parent
							
								
									3d46005195
								
							
						
					
					
						commit
						ef5ea0ef21
					
				|  | @ -44,7 +44,7 @@ fn main() { | |||
| 		global_config: config | ||||
| 	} | ||||
| 	eprintln('>> webserver: started on http://localhost:$app.port/ , with maximum runtime of $app.timeout milliseconds.') | ||||
| 	vweb.run_at(app, 'localhost', http_port) | ||||
| 	vweb.run_at(app, host: 'localhost', port: http_port, family: .ip) ? | ||||
| } | ||||
| 
 | ||||
| // pub fn (mut app App) init_server() {
 | ||||
|  |  | |||
|  | @ -378,21 +378,29 @@ interface DbInterface { | |||
| 
 | ||||
| // run - start a new VWeb server, listening to all available addresses, at the specified `port`
 | ||||
| pub fn run<T>(global_app &T, port int) { | ||||
| 	run_at<T>(global_app, '', port) | ||||
| 	run_at<T>(global_app, host: '', port: port, family: .ip6) or { panic(err.msg()) } | ||||
| } | ||||
| 
 | ||||
| [params] | ||||
| pub struct RunParams { | ||||
| 	host   string | ||||
| 	port   int = 8080 | ||||
| 	family net.AddrFamily = .ip6 // use `family: .ip, host: 'localhost'` when you want it to bind only to 127.0.0.1
 | ||||
| } | ||||
| 
 | ||||
| // run_at - start a new VWeb server, listening only on a specific address `host`, at the specified `port`
 | ||||
| // Example: `vweb.run_at(app, 'localhost', 8099)`
 | ||||
| [manualfree] | ||||
| pub fn run_at<T>(global_app &T, host string, port int) { | ||||
| 	mut l := net.listen_tcp(.ip6, '$host:$port') or { panic('failed to listen $err.code $err') } | ||||
| pub fn run_at<T>(global_app &T, params RunParams) ? { | ||||
| 	mut l := net.listen_tcp(params.family, '$params.host:$params.port') or { | ||||
| 		return error('failed to listen $err.code $err') | ||||
| 	} | ||||
| 
 | ||||
| 	// Parsing methods attributes
 | ||||
| 	mut routes := map[string]Route{} | ||||
| 	$for method in T.methods { | ||||
| 		http_methods, route_path := parse_attrs(method.name, method.attrs) or { | ||||
| 			eprintln('error parsing method attributes: $err') | ||||
| 			return | ||||
| 			return error('error parsing method attributes: $err') | ||||
| 		} | ||||
| 
 | ||||
| 		routes[method.name] = Route{ | ||||
|  | @ -400,7 +408,8 @@ pub fn run_at<T>(global_app &T, host string, port int) { | |||
| 			path: route_path | ||||
| 		} | ||||
| 	} | ||||
| 	println('[Vweb] Running app on http://localhost:$port') | ||||
| 	host := if params.host == '' { 'localhost' } else { params.host } | ||||
| 	println('[Vweb] Running app on http://$host:$params.port/') | ||||
| 	for { | ||||
| 		// Create a new app object for each connection, copy global data like db connections
 | ||||
| 		mut request_app := &T{} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue