feat: gettin there
This commit is contained in:
parent
f888bd220f
commit
df306e18a9
11 changed files with 181 additions and 24 deletions
32
cmd/cli.go
32
cmd/cli.go
|
@ -4,9 +4,9 @@ import (
|
|||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/mr-karan/doggo/pkg/resolver"
|
||||
resolver "github.com/mr-karan/doggo/pkg/resolve"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -37,23 +37,28 @@ func main() {
|
|||
app.Name = "doggo"
|
||||
app.Usage = "Command-line DNS Client"
|
||||
app.Version = buildVersion
|
||||
app.Author = "Karan Sharma @mrkaran"
|
||||
// Register command line args.
|
||||
app.Flags = []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "verbose",
|
||||
Usage: "Enable verbose logging",
|
||||
},
|
||||
}
|
||||
var (
|
||||
logger = initLogger(true)
|
||||
)
|
||||
// Initialize hub.
|
||||
hub := NewHub(logger, buildVersion)
|
||||
|
||||
// Register command line args.
|
||||
app.Flags = []cli.Flag{
|
||||
&cli.StringSliceFlag{
|
||||
Name: "query",
|
||||
Usage: "Domain name to query",
|
||||
Destination: hub.Domains,
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "verbose",
|
||||
Usage: "Enable verbose logging",
|
||||
},
|
||||
}
|
||||
app.Action = func(c *cli.Context) error {
|
||||
|
||||
// parse arguments
|
||||
for _, arg := range c.Args() {
|
||||
var domains cli.StringSlice
|
||||
for _, arg := range c.Args().Slice() {
|
||||
if strings.HasPrefix(arg, "@") {
|
||||
hub.Nameservers = append(hub.Nameservers, arg)
|
||||
} else if isUpper(arg) {
|
||||
|
@ -63,7 +68,8 @@ func main() {
|
|||
hub.QClass = append(hub.QClass, arg)
|
||||
}
|
||||
} else {
|
||||
hub.Domains = append(hub.Domains, arg)
|
||||
domains.Set(arg)
|
||||
hub.Domains = &domains
|
||||
}
|
||||
}
|
||||
// load defaults
|
||||
|
|
|
@ -2,14 +2,14 @@ package main
|
|||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
// Hub represents the structure for all app wide functions and structs.
|
||||
type Hub struct {
|
||||
Logger *logrus.Logger
|
||||
Version string
|
||||
Domains []string
|
||||
Domains *cli.StringSlice
|
||||
QTypes []string
|
||||
QClass []string
|
||||
Nameservers []string
|
||||
|
|
13
cmd/parse.go
Normal file
13
cmd/parse.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package main
|
||||
|
||||
func (hub *Hub) loadFlags() {
|
||||
|
||||
}
|
||||
|
||||
func (hub *Hub) loadFreeForm() {
|
||||
|
||||
}
|
||||
|
||||
func (hub *Hub) loadFallbacks() {
|
||||
|
||||
}
|
|
@ -8,12 +8,12 @@ import (
|
|||
|
||||
// Resolve resolves the domain name
|
||||
func (hub *Hub) Resolve() {
|
||||
var messages = make([]dns.Msg, 0, len(hub.Domains))
|
||||
for _, d := range hub.Domains {
|
||||
var messages = make([]dns.Msg, 0, len(hub.Domains.Value()))
|
||||
for _, d := range hub.Domains.Value() {
|
||||
msg := dns.Msg{}
|
||||
msg.Id = dns.Id()
|
||||
msg.RecursionDesired = true
|
||||
msg.Question = []dns.Question{(dns.Question{d, dns.TypeA, dns.ClassINET})}
|
||||
msg.Question = []dns.Question{(dns.Question{dns.Fqdn(d), dns.TypeA, dns.ClassINET})}
|
||||
messages = append(messages, msg)
|
||||
}
|
||||
c := new(dns.Client)
|
||||
|
@ -27,6 +27,6 @@ func (hub *Hub) Resolve() {
|
|||
fmt.Println(t.String())
|
||||
}
|
||||
}
|
||||
fmt.Println("rtt is", rtt, msg.Question)
|
||||
fmt.Println("rtt is", rtt, msg.Question[0].Name)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue