Skip to content

Commit

Permalink
add generation of v2ray files (.dat)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dunamis4tw committed Feb 27, 2024
1 parent b03bad0 commit ddf71b2
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
50 changes: 50 additions & 0 deletions generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (
"github.com/sagernet/sing-box/common/geosite"
"github.com/sagernet/sing-box/common/srs"
"github.com/sagernet/sing-box/option"
router "github.com/v2fly/v2ray-core/v5/app/router/routercommon"
"google.golang.org/protobuf/proto"
)

// Rule структура для представления правил в JSON
Expand Down Expand Up @@ -89,6 +91,9 @@ func generate(fileDataArray []FileData, config Config) error {
return fmt.Errorf("cannot create new mmdb: %v", err)
}

// Готовим переменную для списка v2ray (.dat)
protoList := new(router.GeoSiteList)

// Перебираем файлы
for _, fileData := range fileDataArray {

Expand Down Expand Up @@ -191,6 +196,9 @@ func generate(fileDataArray []FileData, config Config) error {
// Создаём массив айтемов (доменов) geosite (объект из библиотеки сингбокса)
var domains []geosite.Item

// Создаём массив доменов v2ray (объект из библиотеки v2ray)
var v2raydomains []*router.Domain

// Находим исключающий файл с доменами этой же категории
ExcludeFileData := findFileData(fileDataArray, false, false, false, fileData.Category)
ExcludeFileDataRegex := findFileData(fileDataArray, false, false, true, fileData.Category)
Expand Down Expand Up @@ -225,13 +233,24 @@ func generate(fileDataArray []FileData, config Config) error {
Type: geosite.RuleTypeDomain,
Value: strings.Replace(domain, "*.", "", 1),
})
// Добавляем домены в список доменов v2ray
v2raydomains = append(v2raydomains, &router.Domain{
Type: router.Domain_Full, // Домен и поддомены
Value: strings.Replace(domain, "*.", "", 1),
Attribute: []*router.Domain_Attribute{},
})
RuleSetDomain = append(RuleSetDomain, strings.Replace(domain, "*.", "", 1))
} else {
// в случае, если нет символа "*", то просто добавляем домен задав тип, означающий что эта запись - домен
domains = append(domains, geosite.Item{
Type: geosite.RuleTypeDomain,
Value: domain,
})
v2raydomains = append(v2raydomains, &router.Domain{
Type: router.Domain_RootDomain, // Только домен, без поддоменов
Value: strings.Replace(domain, "*.", "", 1),
Attribute: []*router.Domain_Attribute{},
})
RuleSetDomain = append(RuleSetDomain, domain)
}

Expand All @@ -248,6 +267,12 @@ func generate(fileDataArray []FileData, config Config) error {
// Добавляем в map категорию
domainsMap[fileData.Category] = domains

// Добавляем в категорию с доменами в dat файл
protoList.Entry = append(protoList.Entry, &router.GeoSite{
CountryCode: fileData.Category,
Domain: v2raydomains,
})

if lastIndex != 0 {
fmt.Println()
}
Expand Down Expand Up @@ -332,6 +357,17 @@ func generate(fileDataArray []FileData, config Config) error {
}
}

// Сохранение в .dat файл (формат v2ray)
protoBytes, err := proto.Marshal(protoList) // Преобразование в байты
if err != nil {
return fmt.Errorf("error marshalling into bytes: %v", err)
}
if err := os.WriteFile(config.OutputDir+"domains.dat", protoBytes, 0644); err != nil {
return fmt.Errorf("error writing into v2ray geosite file: %v", err)
} else {
fmt.Println(config.OutputDir+"domains.dat", "has been generated successfully.")
}

if config.Generate.GeoIP {
// Пытаемся создать файл geoip.db
outIPs, err := os.Create(config.OutputDir + "geoip.db")
Expand Down Expand Up @@ -450,3 +486,17 @@ func extractCategories(fileDataArray []FileData) []string {

return categories
}

// v2ray
type Entry struct {
Type string
Value string
Attrs []*router.Domain_Attribute
}

// v2ray
type ParsedList struct {
Name string
Inclusion map[string]bool
Entry []Entry
}
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ require github.com/maxmind/mmdbwriter v1.0.0

require (
berty.tech/go-libtor v1.0.385 // indirect
github.com/adrg/xdg v0.4.0 // indirect
github.com/ajg/form v1.5.1 // indirect
github.com/andybalholm/brotli v1.0.6 // indirect
github.com/caddyserver/certmagic v0.19.2 // indirect
Expand Down Expand Up @@ -83,6 +84,7 @@ require (
github.com/google/uuid v1.4.0
github.com/oschwald/maxminddb-golang v1.12.0 // indirect
github.com/sagernet/sing-box v1.8.0-alpha.10
github.com/v2fly/v2ray-core/v5 v5.13.0
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
golang.org/x/sys v0.15.0 // indirect
)
5 changes: 5 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
berty.tech/go-libtor v1.0.385 h1:RWK94C3hZj6Z2GdvePpHJLnWYobFr3bY/OdUJ5aoEXw=
berty.tech/go-libtor v1.0.385/go.mod h1:9swOOQVb+kmvuAlsgWUK/4c52pm69AdbJsxLzk+fJEw=
github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
Expand Down Expand Up @@ -152,6 +154,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/u-root/uio v0.0.0-20230305220412-3e8cd9d6bf63 h1:YcojQL98T/OO+rybuzn2+5KrD5dBwXIvYBvQ2cD3Avg=
github.com/u-root/uio v0.0.0-20230305220412-3e8cd9d6bf63/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
github.com/v2fly/v2ray-core/v5 v5.13.0 h1:BDJfi3Ftx1NpQlZZPpeWJe3RDqRNyIVBs+YGG4RRMDU=
github.com/v2fly/v2ray-core/v5 v5.13.0/go.mod h1:Bc3gmQWLr8UR7xBSCYI9FbfKuVvqA9lbkeBTWNRRAS4=
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
Expand Down Expand Up @@ -188,6 +192,7 @@ golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand Down

0 comments on commit ddf71b2

Please sign in to comment.