File tree Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Expand file tree Collapse file tree 3 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ fn main() -> Result<()> {
31
31
args. threads ,
32
32
args. watch_proxy_rules_change ,
33
33
args. tcp_nodelay ,
34
+ Some ( args. dashboard_addr ) ,
34
35
) ?;
35
36
36
37
let common_quic_config = CommonQuicConfig {
@@ -114,6 +115,11 @@ struct OmnipArgs {
114
115
#[ arg( short = 'u' , long, default_value = "" ) ]
115
116
upstream : String ,
116
117
118
+ /// Dashboard server address [ip:port]
119
+ /// for example: 127.0.0.1:8000, [::1]:8000
120
+ #[ arg( short = 'd' , long, default_value = "" ) ]
121
+ dashboard_addr : String ,
122
+
117
123
/// Path to the proxy rules file
118
124
#[ arg( short = 'r' , long, default_value = "" ) ]
119
125
proxy_rules_file : String ,
Original file line number Diff line number Diff line change @@ -277,6 +277,7 @@ pub struct Config {
277
277
pub name_servers : String ,
278
278
pub watch_proxy_rules_change : bool ,
279
279
pub tcp_nodelay : bool ,
280
+ pub dashboard_addr : Option < SocketAddr > ,
280
281
}
281
282
282
283
#[ derive( Debug ) ]
@@ -430,6 +431,7 @@ pub fn create_config(
430
431
threads : usize ,
431
432
watch_proxy_rules_change : bool ,
432
433
tcp_nodelay : bool ,
434
+ dashboard_addr : Option < String > ,
433
435
) -> Result < Config > {
434
436
let ( server_type, orig_server_addr, is_layered_proto) = parse_server_addr ( addr. as_str ( ) ) ;
435
437
@@ -467,6 +469,13 @@ pub fn create_config(
467
469
num_cpus:: get ( )
468
470
} ;
469
471
472
+ let dashboard_server_addr = match dashboard_addr. as_deref ( ) . and_then ( parse_socket_addr) {
473
+ Some ( socket_addr) => Some ( socket_addr) ,
474
+ None => {
475
+ log_and_bail ! ( "server addr must be an IP address: {:?}" , addr) ;
476
+ }
477
+ } ;
478
+
470
479
Ok ( Config {
471
480
server_type,
472
481
addr : server_addr,
@@ -480,6 +489,7 @@ pub fn create_config(
480
489
name_servers,
481
490
watch_proxy_rules_change,
482
491
tcp_nodelay,
492
+ dashboard_addr : dashboard_server_addr,
483
493
} )
484
494
}
485
495
@@ -561,6 +571,7 @@ pub mod android {
561
571
jthreads as usize ,
562
572
false ,
563
573
jtcpNoDelay != 0 ,
574
+ None ,
564
575
) {
565
576
Ok ( config) => config,
566
577
Err ( e) => {
Original file line number Diff line number Diff line change @@ -163,7 +163,10 @@ impl Server {
163
163
self . set_and_post_server_state ( ServerState :: Preparing ) ;
164
164
165
165
// start the dashboard server
166
- let addr = local_socket_addr_with_unspecified_port ( self . config . addr . is_ipv6 ( ) ) ;
166
+ let addr = match self . config . dashboard_addr {
167
+ Some ( dashboard_addr) => dashboard_addr,
168
+ None => local_socket_addr_with_unspecified_port ( self . config . addr . is_ipv6 ( ) ) ,
169
+ } ;
167
170
let dashboard_server = DashboardServer :: new ( ) ;
168
171
let dashboard_listener = dashboard_server. bind ( addr) . await ?;
169
172
let dashboard_addr = dashboard_listener. local_addr ( ) . ok ( ) ;
You can’t perform that action at this time.
0 commit comments