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