bash.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //GLOBAL
  2. enum ModeType {
  3. rule,
  4. global,
  5. direct,
  6. }
  7. enum LogLevel {
  8. silent,
  9. error,
  10. warning,
  11. info,
  12. debug,
  13. }
  14. enum ProcessMode {
  15. always,
  16. strict,
  17. off
  18. }
  19. enum Fingerprint{
  20. chrome,
  21. firefox,
  22. safari,
  23. iOS,
  24. android,
  25. edge,
  26. random
  27. }
  28. class BasicConfig {
  29. final int mixedPort;
  30. final bool allowLan;
  31. final String bindAddress;
  32. final String mode;
  33. final String logLevel;
  34. final String externalController;
  35. final bool unifiedDelay;
  36. final bool geodataMode;
  37. final bool tcpConcurrent;
  38. final String findProcessMode;
  39. final String globalClientFingerprint;
  40. BasicConfig({
  41. required this.mixedPort,
  42. required this.allowLan,
  43. required this.bindAddress,
  44. required this.mode,
  45. required this.logLevel,
  46. required this.externalController,
  47. required this.unifiedDelay,
  48. required this.geodataMode,
  49. required this.tcpConcurrent,
  50. required this.findProcessMode,
  51. required this.globalClientFingerprint,
  52. });
  53. // 可以添加一个方法来从Map或JSON解析创建BasicConfig实例
  54. factory BasicConfig.fromMap(Map<String, dynamic> map) {
  55. return BasicConfig(
  56. mixedPort: map['mixed-port'],
  57. allowLan: map['allow-lan'],
  58. bindAddress: map['bind-address'],
  59. mode: map['mode'],
  60. logLevel: map['log-level'],
  61. externalController: map['external-controller'],
  62. unifiedDelay: map['unified-delay'],
  63. geodataMode: map['geodata-mode'],
  64. tcpConcurrent: map['tcp-concurrent'],
  65. findProcessMode: map['find-process-mode'],
  66. globalClientFingerprint: map['global-client-fingerprint'],
  67. );
  68. }
  69. Map<String, dynamic> toJson() {
  70. return {
  71. 'mixed-port': mixedPort,
  72. 'allow-lan': allowLan,
  73. 'bind-address': bindAddress,
  74. 'mode': mode,
  75. 'log-level': logLevel,
  76. 'external-controller': externalController,
  77. 'unified-delay': unifiedDelay,
  78. 'geodata-mode': geodataMode,
  79. 'tcp-concurrent': tcpConcurrent,
  80. 'find-process-mode': findProcessMode,
  81. 'global-client-fingerprint': globalClientFingerprint,
  82. };
  83. }
  84. String toYaml() {
  85. return '''
  86. mixed-port: $mixedPort
  87. allow-lan: $allowLan
  88. bind-address: '$bindAddress'
  89. mode: $mode
  90. log-level: $logLevel
  91. external-controller: '$externalController'
  92. unified-delay: $unifiedDelay
  93. geodata-mode: $geodataMode
  94. tcp-concurrent: $tcpConcurrent
  95. find-process-mode: $findProcessMode
  96. global-client-fingerprint: $globalClientFingerprint
  97. ''';
  98. }
  99. }