Merge pull request #1 from uubulb/dev
This commit is contained in:
		
						commit
						482d787a56
					
				@ -84,6 +84,7 @@ You can change the dashboard language in the settings page (`/setting`) after th
 | 
			
		||||
<a href="https://github.com/IamTaoChen" title="Tao Chen"><img src="https://avatars.githubusercontent.com/u/42793494?v=4" width="50;" alt="Tao Chen"/></a>
 | 
			
		||||
<a href="https://github.com/Septrum101" title="Spetrum"><img src="https://avatars.githubusercontent.com/u/11692994?v=4" width="50;" alt="Spetrum"/></a>
 | 
			
		||||
<a href="https://github.com/dreamingsleeping" title="Nanjing Hopefun Network Technology Co. Ltd."><img src="https://avatars.githubusercontent.com/u/13828658?v=4" width="50;" alt="Nanjing Hopefun Network Technology Co. Ltd."/></a>
 | 
			
		||||
<a href="https://github.com/Moraxyc" title="Moraxyc"><img src="https://avatars.githubusercontent.com/u/69713071?v=4" width="50;" alt="Moraxyc"/></a>
 | 
			
		||||
<a href="https://github.com/silver-ymz" title="Mingzhuo Yin"><img src="https://avatars.githubusercontent.com/u/78400701?v=4" width="50;" alt="Mingzhuo Yin"/></a>
 | 
			
		||||
<a href="https://github.com/MartijnLindeman" title="Martijn Lindeman"><img src="https://avatars.githubusercontent.com/u/78365708?v=4" width="50;" alt="Martijn Lindeman"/></a>
 | 
			
		||||
<a href="https://github.com/xrgzs" title="MadDogOwner"><img src="https://avatars.githubusercontent.com/u/26499123?v=4" width="50;" alt="MadDogOwner"/></a>
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,7 @@ import (
 | 
			
		||||
	"log"
 | 
			
		||||
	"net"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
	_ "time/tzdata"
 | 
			
		||||
@ -33,20 +34,6 @@ var (
 | 
			
		||||
	dashboardCliParam DashboardCliParam
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	flag.CommandLine.ParseErrorsWhitelist.UnknownFlags = true
 | 
			
		||||
	flag.BoolVarP(&dashboardCliParam.Version, "version", "v", false, "查看当前版本号")
 | 
			
		||||
	flag.StringVarP(&dashboardCliParam.ConfigFile, "config", "c", "data/config.yaml", "配置文件路径")
 | 
			
		||||
	flag.StringVar(&dashboardCliParam.DatebaseLocation, "db", "data/sqlite.db", "Sqlite3数据库文件路径")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	// 初始化 dao 包
 | 
			
		||||
	singleton.InitConfigFromPath(dashboardCliParam.ConfigFile)
 | 
			
		||||
	singleton.InitTimezoneAndCache()
 | 
			
		||||
	singleton.InitDBFromPath(dashboardCliParam.DatebaseLocation)
 | 
			
		||||
	initSystem()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func initSystem() {
 | 
			
		||||
	// 初始化管理员账户
 | 
			
		||||
	var usersCount int64
 | 
			
		||||
@ -103,11 +90,23 @@ func initSystem() {
 | 
			
		||||
// @externalDocs.description  OpenAPI
 | 
			
		||||
// @externalDocs.url          https://swagger.io/resources/open-api/
 | 
			
		||||
func main() {
 | 
			
		||||
	flag.CommandLine.ParseErrorsWhitelist.UnknownFlags = true
 | 
			
		||||
	flag.BoolVarP(&dashboardCliParam.Version, "version", "v", false, "查看当前版本号")
 | 
			
		||||
	flag.StringVarP(&dashboardCliParam.ConfigFile, "config", "c", "data/config.yaml", "配置文件路径")
 | 
			
		||||
	flag.StringVar(&dashboardCliParam.DatebaseLocation, "db", "data/sqlite.db", "Sqlite3数据库文件路径")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
 | 
			
		||||
	if dashboardCliParam.Version {
 | 
			
		||||
		fmt.Println(singleton.Version)
 | 
			
		||||
		return
 | 
			
		||||
		os.Exit(0)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 初始化 dao 包
 | 
			
		||||
	singleton.InitConfigFromPath(dashboardCliParam.ConfigFile)
 | 
			
		||||
	singleton.InitTimezoneAndCache()
 | 
			
		||||
	singleton.InitDBFromPath(dashboardCliParam.DatebaseLocation)
 | 
			
		||||
	initSystem()
 | 
			
		||||
 | 
			
		||||
	l, err := net.Listen("tcp", fmt.Sprintf(":%d", singleton.Conf.ListenPort))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@ -14,8 +14,8 @@ require (
 | 
			
		||||
	github.com/json-iterator/go v1.1.12
 | 
			
		||||
	github.com/libdns/cloudflare v0.1.1
 | 
			
		||||
	github.com/libdns/libdns v0.2.2
 | 
			
		||||
	github.com/libdns/tencentcloud v1.0.0
 | 
			
		||||
	github.com/miekg/dns v1.1.62
 | 
			
		||||
	github.com/nezhahq/libdns-tencentcloud v0.0.0-20241029120103-889957240fff
 | 
			
		||||
	github.com/ory/graceful v0.1.3
 | 
			
		||||
	github.com/oschwald/maxminddb-golang v1.13.1
 | 
			
		||||
	github.com/patrickmn/go-cache v2.1.0+incompatible
 | 
			
		||||
@ -78,9 +78,9 @@ require (
 | 
			
		||||
	github.com/spf13/afero v1.11.0 // indirect
 | 
			
		||||
	github.com/spf13/cast v1.6.0 // indirect
 | 
			
		||||
	github.com/subosito/gotenv v1.6.0 // indirect
 | 
			
		||||
	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.597 // indirect
 | 
			
		||||
	github.com/tidwall/match v1.1.1 // indirect
 | 
			
		||||
	github.com/tidwall/pretty v1.2.0 // indirect
 | 
			
		||||
	github.com/tidwall/sjson v1.2.5 // indirect
 | 
			
		||||
	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 | 
			
		||||
	github.com/ugorji/go/codec v1.2.12 // indirect
 | 
			
		||||
	go.uber.org/atomic v1.9.0 // indirect
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								go.sum
									
									
									
									
									
								
							@ -106,8 +106,6 @@ github.com/libdns/cloudflare v0.1.1 h1:FVPfWwP8zZCqj268LZjmkDleXlHPlFU9KC4OJ3yn0
 | 
			
		||||
github.com/libdns/cloudflare v0.1.1/go.mod h1:9VK91idpOjg6v7/WbjkEW49bSCxj00ALesIFDhJ8PBU=
 | 
			
		||||
github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s=
 | 
			
		||||
github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ=
 | 
			
		||||
github.com/libdns/tencentcloud v1.0.0 h1:u4LXnYu/lu/9P5W+MCVPeSDnwI+6w+DxYhQ1wSnQOuU=
 | 
			
		||||
github.com/libdns/tencentcloud v1.0.0/go.mod h1:NlCgPumzUsZWSOo1+Q/Hfh8G6TNRAaTUeWQdg6LbtUI=
 | 
			
		||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 | 
			
		||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
 | 
			
		||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 | 
			
		||||
@ -128,6 +126,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
 | 
			
		||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 | 
			
		||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
 | 
			
		||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 | 
			
		||||
github.com/nezhahq/libdns-tencentcloud v0.0.0-20241029120103-889957240fff h1:3WDsbsg3dmsRENYLUPGPTkEcWWmTvk41i+rM91AIIbY=
 | 
			
		||||
github.com/nezhahq/libdns-tencentcloud v0.0.0-20241029120103-889957240fff/go.mod h1:k+cDtTbUY+UV56Aqv4Ahmc9bWmhpga9JJXZlAIPKBEc=
 | 
			
		||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 | 
			
		||||
github.com/ory/graceful v0.1.3 h1:FaeXcHZh168WzS+bqruqWEw/HgXWLdNv2nJ+fbhxbhc=
 | 
			
		||||
github.com/ory/graceful v0.1.3/go.mod h1:4zFz687IAF7oNHHiB586U4iL+/4aV09o/PYLE34t2bA=
 | 
			
		||||
@ -184,14 +184,15 @@ github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+z
 | 
			
		||||
github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo=
 | 
			
		||||
github.com/swaggo/swag v1.16.4 h1:clWJtd9LStiG3VeijiCfOVODP6VpHtKdQy9ELFG3s1A=
 | 
			
		||||
github.com/swaggo/swag v1.16.4/go.mod h1:VBsHJRsDvfYvqoiMKnsdwhNV9LEMHgEDZcyVYX0sxPg=
 | 
			
		||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.597 h1:C0GHdLTfikLVoEzfhgPfrZ7LwlG0xiCmk6iwNKE+xs0=
 | 
			
		||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.597/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
 | 
			
		||||
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
 | 
			
		||||
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
 | 
			
		||||
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
 | 
			
		||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
 | 
			
		||||
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
 | 
			
		||||
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
 | 
			
		||||
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
 | 
			
		||||
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
 | 
			
		||||
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
 | 
			
		||||
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
 | 
			
		||||
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
 | 
			
		||||
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,8 @@
 | 
			
		||||
package geoip
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"embed"
 | 
			
		||||
	_ "embed"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
@ -11,12 +10,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:embed geoip.db
 | 
			
		||||
var geoDBFS embed.FS
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	dbData []byte
 | 
			
		||||
	err    error
 | 
			
		||||
)
 | 
			
		||||
var db []byte
 | 
			
		||||
 | 
			
		||||
type IPInfo struct {
 | 
			
		||||
	Country       string `maxminddb:"country"`
 | 
			
		||||
@ -25,21 +19,15 @@ type IPInfo struct {
 | 
			
		||||
	ContinentName string `maxminddb:"continent_name"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	dbData, err = geoDBFS.ReadFile("geoip.db")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Printf("NEZHA>> Failed to open geoip database: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Lookup(ip net.IP, record *IPInfo) (string, error) {
 | 
			
		||||
	db, err := maxminddb.FromBytes(dbData)
 | 
			
		||||
func Lookup(ip net.IP) (string, error) {
 | 
			
		||||
	db, err := maxminddb.FromBytes(db)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	defer db.Close()
 | 
			
		||||
 | 
			
		||||
	err = db.Lookup(ip, record)
 | 
			
		||||
	var record IPInfo
 | 
			
		||||
	err = db.Lookup(ip, &record)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -212,10 +212,9 @@ func (s *NezhaHandler) LookupGeoIP(c context.Context, r *pb.GeoIP) (*pb.GeoIP, e
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 根据内置数据库查询 IP 地理位置
 | 
			
		||||
	record := &geoip.IPInfo{}
 | 
			
		||||
	ip := r.GetIp()
 | 
			
		||||
	netIP := net.ParseIP(ip)
 | 
			
		||||
	location, err := geoip.Lookup(netIP, record)
 | 
			
		||||
	location, err := geoip.Lookup(netIP)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ import (
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	"github.com/libdns/cloudflare"
 | 
			
		||||
	"github.com/libdns/tencentcloud"
 | 
			
		||||
	tencentcloud "github.com/nezhahq/libdns-tencentcloud"
 | 
			
		||||
 | 
			
		||||
	"github.com/naiba/nezha/model"
 | 
			
		||||
	ddns2 "github.com/naiba/nezha/pkg/ddns"
 | 
			
		||||
@ -76,6 +76,7 @@ func GetDDNSProvidersFromProfiles(profileId []uint64, ip *ddns2.IP) ([]*ddns2.Pr
 | 
			
		||||
		if profile, ok := DDNSCache[id]; ok {
 | 
			
		||||
			profiles = append(profiles, profile)
 | 
			
		||||
		} else {
 | 
			
		||||
			DDNSCacheLock.RUnlock()
 | 
			
		||||
			return nil, fmt.Errorf("无法找到DDNS配置 ID %d", id)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user