add service function to search data files

This commit is contained in:
Hamidreza Ghavami 2023-05-12 19:33:10 +04:30
parent 95e006963c
commit cf7d50617b
No known key found for this signature in database
GPG key ID: 402C6797325182D9

View file

@ -1,10 +1,12 @@
package service package service
import ( import (
"bufio"
_ "embed" _ "embed"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"os"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
@ -16,6 +18,7 @@ import (
"x-ui/util/random" "x-ui/util/random"
"x-ui/util/reflect_util" "x-ui/util/reflect_util"
"x-ui/web/entity" "x-ui/web/entity"
"x-ui/xray"
) )
//go:embed config.json //go:embed config.json
@ -351,3 +354,27 @@ func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting) error {
} }
return common.Combine(errs...) return common.Combine(errs...)
} }
func (s *SettingService) SearchDatafiles(query string) (bool, error) {
// Open the file for reading
file, err := os.Open(xray.GetGeositePath())
if err != nil {
return false, common.NewErrorf("Error opening geosite.dat: %v", err)
}
defer file.Close()
// Create a scanner to read the file line-by-line
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if strings.Contains(strings.ToLower(line), strings.ToLower(query)) {
return true, nil
}
}
err = scanner.Err()
if err != nil {
return false, common.NewErrorf("Error while scanning geosite.dat: %v", err)
}
return false, nil
}