func Json() (*json) {return &json{}}
-func (*json) GetValFrom(file,key string)interface {}{
+func (*json) GetValFrom(Source interface{},key string)interface {}{
var jq *gojsonq.JSONQ
- if Checkfile().IsExist(file) {
- jq = gojsonq.New().File(file)
- }else{
- jq = gojsonq.New().FromString(file)
- }
+ switch Source.(type) {
+ case string:
+ if Checkfile().IsExist(Source.(string)) {
+ jq = gojsonq.New().File(Source.(string))
+ }else{
+ jq = gojsonq.New().FromString(Source.(string))
+ }
+ default:
+ jq = gojsonq.New().FromInterface(Source)
+ }
return jq.Find(key)
}
-func (this *json) GetMultiValFrom(file string,key []string) []interface{}{
+func (this *json) GetMultiValFrom(Source interface{},key []string) []interface{}{
var jq *gojsonq.JSONQ
- if Checkfile().IsExist(file) {
- jq = gojsonq.New().File(file)
- }else{
- jq = gojsonq.New().FromString(file)
- }
+ switch Source.(type) {
+ case string:
+ if Checkfile().IsExist(Source.(string)) {
+ jq = gojsonq.New().File(Source.(string))
+ }else{
+ jq = gojsonq.New().FromString(Source.(string))
+ }
+ default:
+ jq = gojsonq.New().FromInterface(Source)
+ }
var returnVal []interface{}
for _,i := range key {
import (
"net"
"sync"
- // "errors"
+ "errors"
+ "bytes"
+ "os/exec"
+ "runtime"
+ "github.com/miekg/dns"
)
type netl struct{
RV []interface{}
+ Dns dnsl
}
func Net() *netl{
return &netl{}
}
+type dnsl struct{
+ Server string
+}
+
+func (this *netl) Nslookup(target string) error {
+ c := dns.Client{}
+ m := dns.Msg{}
+
+ m.SetQuestion(target+".", dns.TypeA)
+
+ if this.Dns.Server == "" {
+ if e := this.GetLocalDns(); e != nil {return e}
+ }
+
+ r, _, err := c.Exchange(&m, this.Dns.Server+":53")
+ if err != nil {
+ return err
+ }
+ if len(r.Answer) == 0 {
+ return errors.New("no answer")
+ }
+
+ this.RV = append(this.RV, dns.Field(r.Answer[0],1))
+ return nil
+}
+
func (*netl) TestDial(network,address string) bool {
conn, err := net.Dial(network,address)
if err != nil {
go tcpBridge2(proxyconn,targetconn)
}
-}
\ No newline at end of file
+}
+
+func (this *netl) GetLocalDns() error {
+ if runtime.GOOS == "windows" {
+ cmd := exec.Command("nslookup","127.0.0.1")
+ output, _ := cmd.CombinedOutput()
+ var ip []byte
+ loc_ip := bytes.Index(output,[]byte("Address:"))+8
+
+ for brk:=1;brk>=0; {
+ tmp := bytes.IndexAny(output[loc_ip:],"1234567890.")
+ if tmp == 0 {
+ ip=append(ip,output[loc_ip])
+ loc_ip=loc_ip+1
+ }else{
+ brk=brk-1
+ loc_ip=loc_ip+tmp
+ }
+ }
+
+ this.Dns.Server = string(ip)
+ return nil
+ }else if Checkfile().IsExist("/etc/resolv.conf") {
+ cmd := exec.Command("cat","/etc/resolv.conf")
+ output, _ := cmd.CombinedOutput()
+ var ip []byte
+ loc_ip := bytes.Index(output,[]byte("nameserver"))+10
+ for brk:=1;brk>=0; {
+ tmp := bytes.IndexAny(output[loc_ip:],"1234567890.")
+ if tmp == 0 {
+ ip=append(ip,output[loc_ip])
+ loc_ip=loc_ip+1
+ }else{
+ brk=brk-1
+ loc_ip=loc_ip+tmp
+ }
+ }
+ this.Dns.Server = string(ip)
+ return nil
+ }
+ Logf().E("[err]Dns: system: ",runtime.GOOS)
+ Logf().E("[err]Dns: none")
+
+ return errors.New("1")
+}
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/go-ole/go-ole v1.2.4 // indirect
github.com/klauspost/compress v1.10.10
- github.com/shirou/gopsutil v2.20.6+incompatible
+ github.com/miekg/dns v1.1.31
+ github.com/shirou/gopsutil v2.20.7+incompatible
github.com/thedevsaddam/gojsonq v2.3.0+incompatible
- golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 // indirect
+ //github.com/thedevsaddam/gojsonq/v2 v2.5.2
+ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de // indirect
+ golang.org/x/net v0.0.0-20200707034311-ab3426394381 // indirect
+ golang.org/x/sys v0.0.0-20200808120158-1030fc2bf1d9 // indirect
)
+
+replace github.com/thedevsaddam/gojsonq v2.3.0+incompatible => github.com/thedevsaddam/gojsonq/v2 v2.5.2
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I=
github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
+github.com/miekg/dns v1.1.31 h1:sJFOl9BgwbYAWOGEwr61FU28pqsBNdpRBnhGXtO06Oo=
+github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
github.com/shirou/gopsutil v2.20.6+incompatible h1:P37G9YH8M4vqkKcwBosp+URN5O8Tay67D2MbR361ioY=
github.com/shirou/gopsutil v2.20.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/shirou/gopsutil v2.20.7+incompatible h1:Ymv4OD12d6zm+2yONe39VSmp2XooJe8za7ngOLW/o/w=
+github.com/shirou/gopsutil v2.20.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/thedevsaddam/gojsonq v1.9.1 h1:zQulEP43nwmq5EKrNWyIgJVbqDeMdC1qzXM/f5O15a0=
github.com/thedevsaddam/gojsonq v2.3.0+incompatible h1:i2lFTvGY4LvoZ2VUzedsFlRiyaWcJm3Uh6cQ9+HyQA8=
github.com/thedevsaddam/gojsonq v2.3.0+incompatible/go.mod h1:RBcQaITThgJAAYKH7FNp2onYodRz8URfsuEGpAch0NA=
+github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0=
+github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig=
+golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g=
+golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 h1:sIky/MyNRSHTrdxfsiUSS4WIAMvInbeXljJz+jDjeYE=
golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200808120158-1030fc2bf1d9 h1:yi1hN8dcqI9l8klZfy4B8mJvFmmAxJEePIQQFNSd7Cs=
+golang.org/x/sys v0.0.0-20200808120158-1030fc2bf1d9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=