feat.rs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. use crate::core::*;
  2. use crate::data::*;
  3. use crate::log_if_err;
  4. // 重启clash
  5. pub fn restart_clash_core() {
  6. let core = Core::global();
  7. let mut service = core.service.lock();
  8. log_if_err!(service.restart());
  9. drop(service);
  10. log_if_err!(core.activate());
  11. }
  12. // 切换模式
  13. pub fn change_clash_mode(mode: &str) {
  14. let core = Core::global();
  15. log_if_err!(core.update_mode(mode));
  16. }
  17. // 切换系统代理
  18. pub fn toggle_system_proxy() {
  19. let core = Core::global();
  20. let data = Data::global();
  21. let verge = data.verge.lock();
  22. let enable = !verge.enable_system_proxy.clone().unwrap_or(false);
  23. drop(verge);
  24. log_if_err!(core.patch_verge(Verge {
  25. enable_system_proxy: Some(enable),
  26. ..Verge::default()
  27. }));
  28. let handle = core.handle.lock();
  29. let _ = handle.refresh_verge();
  30. }
  31. // 打开系统代理
  32. pub fn enable_system_proxy() {
  33. let core = Core::global();
  34. log_if_err!(core.patch_verge(Verge {
  35. enable_system_proxy: Some(true),
  36. ..Verge::default()
  37. }));
  38. let handle = core.handle.lock();
  39. let _ = handle.refresh_verge();
  40. }
  41. // 关闭系统代理
  42. pub fn disable_system_proxy() {
  43. let core = Core::global();
  44. log_if_err!(core.patch_verge(Verge {
  45. enable_system_proxy: Some(false),
  46. ..Verge::default()
  47. }));
  48. let handle = core.handle.lock();
  49. let _ = handle.refresh_verge();
  50. }
  51. // 切换tun模式
  52. pub fn toggle_tun_mode() {
  53. let core = Core::global();
  54. let data = Data::global();
  55. let verge = data.verge.lock();
  56. let enable = !verge.enable_tun_mode.clone().unwrap_or(false);
  57. drop(verge);
  58. log_if_err!(core.patch_verge(Verge {
  59. enable_tun_mode: Some(enable),
  60. ..Verge::default()
  61. }));
  62. let handle = core.handle.lock();
  63. let _ = handle.refresh_verge();
  64. }
  65. // 打开tun模式
  66. pub fn enable_tun_mode() {
  67. let core = Core::global();
  68. log_if_err!(core.patch_verge(Verge {
  69. enable_tun_mode: Some(true),
  70. ..Verge::default()
  71. }));
  72. let handle = core.handle.lock();
  73. let _ = handle.refresh_verge();
  74. }
  75. // 关闭tun模式
  76. pub fn disable_tun_mode() {
  77. let core = Core::global();
  78. log_if_err!(core.patch_verge(Verge {
  79. enable_tun_mode: Some(false),
  80. ..Verge::default()
  81. }));
  82. let handle = core.handle.lock();
  83. let _ = handle.refresh_verge();
  84. }