@@ -244,7 +244,39 @@ impl NodeConfig {
244244 raw. hostname . unwrap ( )
245245 } ;
246246
247- let ( address, interface) = if let Some ( ref interface_name) = raw. default_interface {
247+ // Если указан адрес - используем его
248+ let ( address, interface) = if let Some ( user_address) = raw. address {
249+ // Пользователь указал адрес (скорее всего внешний/публичный)
250+
251+ // Для интерфейса используем либо указанный, либо дефолтный
252+ let interface = if let Some ( ref interface_name) = raw. default_interface {
253+ // Проверяем существование интерфейса
254+ let interfaces = get_interfaces ( ) ;
255+ if let Some ( _interface) = interfaces. iter ( ) . find ( |i| & i. name == interface_name) {
256+ interface_name. clone ( )
257+ } else {
258+ return Err ( PonyError :: Custom (
259+ format ! ( "Validation error: Interface {} not found" , interface_name) . into ( ) ,
260+ ) ) ;
261+ }
262+ } else {
263+ // Используем дефолтный интерфейс
264+ match get_default_interface ( ) {
265+ Ok ( interface) => interface. name ,
266+ Err ( e) => {
267+ // Если не можем получить дефолтный интерфейс, используем placeholder
268+ eprintln ! (
269+ "Warning: Cannot get default interface: {}. Using 'default'." ,
270+ e
271+ ) ;
272+ "default" . to_string ( )
273+ }
274+ }
275+ } ;
276+
277+ ( user_address, interface)
278+ } else if let Some ( ref interface_name) = raw. default_interface {
279+ // Пользователь указал только интерфейс, адрес берем с интерфейса
248280 let interfaces = get_interfaces ( ) ;
249281 if let Some ( interface) = interfaces. iter ( ) . find ( |i| & i. name == interface_name) {
250282 match interface. ipv4 . first ( ) {
@@ -262,6 +294,7 @@ impl NodeConfig {
262294 ) ) ;
263295 }
264296 } else {
297+ // Ни адрес, ни интерфейс не указаны - используем дефолтный интерфейс
265298 match get_default_interface ( ) {
266299 Ok ( interface) => {
267300 if interface. ipv4 . is_empty ( ) {
0 commit comments