summaryrefslogtreecommitdiff
path: root/plugin/singbox
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/singbox')
-rw-r--r--plugin/singbox/srs_out.go23
1 files changed, 20 insertions, 3 deletions
diff --git a/plugin/singbox/srs_out.go b/plugin/singbox/srs_out.go
index 7adfa579..7637d200 100644
--- a/plugin/singbox/srs_out.go
+++ b/plugin/singbox/srs_out.go
@@ -6,6 +6,7 @@ import (
"log"
"os"
"path/filepath"
+ "slices"
"strings"
"github.com/Loyalsoldier/geoip/lib"
@@ -82,23 +83,39 @@ func (s *srsOut) GetDescription() string {
func (s *srsOut) Output(container lib.Container) error {
// Filter want list
- wantList := make(map[string]bool)
+ wantList := make([]string, 0, 50)
for _, want := range s.Want {
if want = strings.ToUpper(strings.TrimSpace(want)); want != "" {
- wantList[want] = true
+ wantList = append(wantList, want)
}
}
switch len(wantList) {
case 0:
+ list := make([]string, 0, 300)
for entry := range container.Loop() {
+ list = append(list, entry.GetName())
+ }
+
+ // Sort the list
+ slices.Sort(list)
+
+ for _, name := range list {
+ entry, found := container.GetEntry(name)
+ if !found {
+ log.Printf("❌ entry %s not found", name)
+ continue
+ }
if err := s.run(entry); err != nil {
return err
}
}
default:
- for name := range wantList {
+ // Sort the list
+ slices.Sort(wantList)
+
+ for _, name := range wantList {
entry, found := container.GetEntry(name)
if !found {
log.Printf("❌ entry %s not found", name)