@@ -203,7 +203,9 @@ class MKTXPConfigKeys:
203203
204204 # MKTXP configs entry names
205205 DEFAULT_ENTRY_KEY = 'default'
206+ MKTXP_LATEST_DEFAULT_ENTRY_KEY = 'new_default_parameters'
206207 MKTXP_CONFIG_ENTRY_NAME = 'MKTXP'
208+ MKTXP_LATEST_SYSTEM_ENTRY_KEY = 'new_system_parameters'
207209
208210
209211class ConfigEntry :
@@ -385,37 +387,54 @@ def _create_os_path(self, os_path, resource_path):
385387 def _system_entry_reader (self ):
386388 system_entry_reader = {}
387389 entry_name = MKTXPConfigKeys .MKTXP_CONFIG_ENTRY_NAME
388- new_keys = []
390+ new_keys , new_keys_values = [], {}
391+
392+ if not self ._config .get (MKTXPConfigKeys .MKTXP_CONFIG_ENTRY_NAME ):
393+ self ._config [MKTXPConfigKeys .MKTXP_CONFIG_ENTRY_NAME ] = {}
394+ if not self ._config .get (MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ):
395+ self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ] = {}
389396
390397 for key in MKTXPConfigKeys .MKTXP_INT_KEYS :
391398 if self ._config [entry_name ].get (key ):
392399 system_entry_reader [key ] = self ._config [entry_name ].as_int (key )
400+ elif self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].get (key ):
401+ system_entry_reader [key ] = self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].as_int (key )
393402 else :
394403 system_entry_reader [key ] = self ._default_value_for_key (key )
395404 if key not in (MKTXPConfigKeys .PORT_KEY ): # Port key has been depricated
396405 new_keys .append (key ) # read from disk next time
406+ new_keys_values [key ] = system_entry_reader [key ]
397407
398408 for key in MKTXPConfigKeys .SYSTEM_BOOLEAN_KEYS_NO .union (MKTXPConfigKeys .SYSTEM_BOOLEAN_KEYS_YES ):
399409 if self ._config [entry_name ].get (key ) is not None :
400410 system_entry_reader [key ] = self ._config [entry_name ].as_bool (key )
411+ elif self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].get (key ) is not None :
412+ system_entry_reader [key ] = self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].as_bool (key )
401413 else :
402414 system_entry_reader [key ] = True if key in MKTXPConfigKeys .SYSTEM_BOOLEAN_KEYS_YES else False
403415 new_keys .append (key ) # read from disk next time
416+ new_keys_values [key ] = system_entry_reader [key ]
404417
405- # listen
418+ # listen
406419 if self ._config [entry_name ].get (MKTXPConfigKeys .LISTEN_KEY ):
407420 system_entry_reader [MKTXPConfigKeys .LISTEN_KEY ] = self ._config [entry_name ].get (MKTXPConfigKeys .LISTEN_KEY )
421+ elif self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].get (MKTXPConfigKeys .LISTEN_KEY ):
422+ system_entry_reader [MKTXPConfigKeys .LISTEN_KEY ] = self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ].get (MKTXPConfigKeys .LISTEN_KEY )
408423 else :
409- system_entry_reader [MKTXPConfigKeys .LISTEN_KEY ] = f'0.0.0.0:{ system_entry_reader [ MKTXPConfigKeys .PORT_KEY ] } '
424+ system_entry_reader [MKTXPConfigKeys .LISTEN_KEY ] = f'0.0.0.0:{ system_entry_reader . get ( MKTXPConfigKeys .PORT_KEY , MKTXPConfigKeys . DEFAULT_MKTXP_PORT ) } '
410425 new_keys .append (MKTXPConfigKeys .LISTEN_KEY ) # read from disk next time
426+ new_keys_values [MKTXPConfigKeys .LISTEN_KEY ] = system_entry_reader [MKTXPConfigKeys .LISTEN_KEY ]
411427
412428 if new_keys :
413- self ._config [entry_name ] = system_entry_reader
429+ self ._config [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ] = new_keys_values
430+ self ._config .comments [MKTXPConfigKeys .MKTXP_LATEST_SYSTEM_ENTRY_KEY ] = \
431+ ['' , '# The section below contains the latest system parameters introduced by MKTXP' ,
432+ f'# For organizational purposes, you can move these parameters to the [{ MKTXPConfigKeys .MKTXP_CONFIG_ENTRY_NAME } ] section' ]
414433 try :
415434 self ._config [entry_name ].pop (MKTXPConfigKeys .PORT_KEY , None ) # Port key has been depricated
416435 self ._config .write ()
417436 if self ._config [entry_name ].as_bool (MKTXPConfigKeys .MKTXP_VERBOSE_MODE ):
418- print (f'Updated system entry { entry_name } with new system keys { new_keys } ' )
437+ print (f'Updated system entry { entry_name } with new system keys { new_keys } ' )
419438 except Exception as exc :
420439 print (f'Error updating system entry { entry_name } with new system keys { new_keys } : { exc } ' )
421440 print ('Please update _mktxp.conf to its latest version manually' )
@@ -479,46 +498,63 @@ def _config_entry_reader(self, entry_name):
479498
480499 def _default_config_entry_reader (self ):
481500 default_config_entry_reader = {}
482- new_keys = []
501+ new_keys , new_keys_values = [], {}
483502
484503 if not self .config .get (MKTXPConfigKeys .DEFAULT_ENTRY_KEY ):
485504 self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ] = {}
505+ if not self .config .get (MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ):
506+ self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ] = {}
486507
487508 for key in MKTXPConfigKeys .BOOLEAN_KEYS_NO .union (MKTXPConfigKeys .BOOLEAN_KEYS_YES ):
488509 if self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (key ) is not None :
489510 default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].as_bool (key )
511+ elif self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].get (key ) is not None :
512+ default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].as_bool (key )
490513 else :
491514 default_config_entry_reader [key ] = True if key in MKTXPConfigKeys .BOOLEAN_KEYS_YES else False
492515 new_keys .append (key ) # read from disk next time
516+ new_keys_values [key ] = default_config_entry_reader [key ]
493517
494518 for key in MKTXPConfigKeys .STR_KEYS :
495519 if self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (key ) is not None :
496520 default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (key )
521+ elif self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].get (key ) is not None :
522+ default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].get (key )
497523 else :
498524 default_config_entry_reader [key ] = self ._default_value_for_key (key )
499525 new_keys .append (key ) # read from disk next time
526+ new_keys_values [key ] = default_config_entry_reader [key ]
500527
501528 for key in MKTXPConfigKeys .INT_KEYS :
502529 if self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (key ):
503530 default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].as_int (key )
531+ elif self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].get (key ):
532+ default_config_entry_reader [key ] = self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].as_int (key )
504533 else :
505534 default_config_entry_reader [key ] = self ._default_value_for_key (key )
506535 new_keys .append (key ) # read from disk next time
536+ new_keys_values [key ] = default_config_entry_reader [key ]
507537
508538 # port
509539 if self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].get (MKTXPConfigKeys .PORT_KEY ):
510540 default_config_entry_reader [MKTXPConfigKeys .PORT_KEY ] = self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ].as_int (MKTXPConfigKeys .PORT_KEY )
541+ elif self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].get (MKTXPConfigKeys .PORT_KEY ):
542+ default_config_entry_reader [MKTXPConfigKeys .PORT_KEY ] = self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ].as_int (MKTXPConfigKeys .PORT_KEY )
511543 else :
512544 default_config_entry_reader [MKTXPConfigKeys .PORT_KEY ] = self ._default_value_for_key (
513545 MKTXPConfigKeys .SSL_KEY , default_config_entry_reader [MKTXPConfigKeys .SSL_KEY ])
514546 new_keys .append (MKTXPConfigKeys .PORT_KEY ) # read from disk next time
515-
547+ new_keys_values [MKTXPConfigKeys .PORT_KEY ] = default_config_entry_reader [MKTXPConfigKeys .PORT_KEY ]
548+
516549 if new_keys :
517- self .config [MKTXPConfigKeys .DEFAULT_ENTRY_KEY ] = default_config_entry_reader
550+ self .config [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ] = new_keys_values
551+ self .config .comments [MKTXPConfigKeys .MKTXP_LATEST_DEFAULT_ENTRY_KEY ] = \
552+ ['' , '# The section below contains the latest default parameters introduced by MKTXP' ,
553+ f'# For organizational purposes, you can move these parameters to the [{ MKTXPConfigKeys .DEFAULT_ENTRY_KEY } ] section' ]
518554 try :
519555 self .config .write ()
520556 if self ._config [MKTXPConfigKeys .MKTXP_CONFIG_ENTRY_NAME ].as_bool (MKTXPConfigKeys .MKTXP_VERBOSE_MODE ):
521- print (f'Updated default router entry with new feature keys { new_keys } ' )
557+ print (f'Updated default router entry with new feature keys { new_keys } ' )
522558 except Exception as exc :
523559 print (f'Error updating default router entry with new feature keys { new_keys } : { exc } ' )
524560 print ('Please update mktxp.conf to its latest version manually' )
0 commit comments