Skip to content

Commit

Permalink
Merge pull request #76 from projectdiscovery/issue-70-docs-maintenance
Browse files Browse the repository at this point in the history
Adds docs, example  and more
  • Loading branch information
Mzack9999 committed Nov 17, 2022
2 parents d77955f + 031ff42 commit f8fad52
Show file tree
Hide file tree
Showing 5 changed files with 175 additions and 20 deletions.
12 changes: 7 additions & 5 deletions .github/workflows/build-test.yml
Expand Up @@ -8,7 +8,10 @@ on:
jobs:
build:
name: Test Builds
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Set up Go
uses: actions/setup-go@v3
Expand All @@ -20,7 +23,6 @@ jobs:

- name: Test
run: go test ./...

# Todo: create example folder
# - name: Build
# run: go build .

- name: Build
run: go build example/main.go
82 changes: 81 additions & 1 deletion README.md
@@ -1,2 +1,82 @@
# Fastdialer
Dialer with DNS Cache + Dial History

[![License](https://img.shields.io/github/license/projectdiscovery/fastdialer)](LICENSE.md)
![Go version](https://img.shields.io/github/go-mod/go-version/projectdiscovery/fastdialer?filename=go.mod)
[![Release](https://img.shields.io/github/release/projectdiscovery/fastdialer)](https://github.com/projectdiscovery/fastdialer/releases/)
[![Checks](https://github.com/projectdiscovery/fastdialer/actions/workflows/build-test.yml/badge.svg)](https://github.com/projectdiscovery/fastdialer/actions/workflows/build-test.yml)
[![GoDoc](https://pkg.go.dev/badge/projectdiscovery/fastdialer)](https://pkg.go.dev/github.com/projectdiscovery/fastdialer/fastdialer)


Fastdialer is implementation of `net.Dialer` with lot of features like DNS Cache , Dial History etc

# Features

- DNS Cache
- Dial History
- Supports Memory/Hybrid/Disk Cache.
- Supports Old/New TLS and x509 versions
- Supports Resolution Using Hosts File
- Cross Platform and more..

For more details and documentation refer [GoDoc](https://pkg.go.dev/github.com/projectdiscovery/fastdialer/fastdialer).

# Example

An Example showing usage of fastdialer as a library is specified below:


```go
package main

import (
"context"
"fmt"
"log"

"github.com/projectdiscovery/fastdialer/fastdialer"
)

func main() {

// refer fastdialer/options.go for options and customization
options := fastdialer.DefaultOptions

// Create new dialer using NewDialer(opts fastdialer.options)
fd, err := fastdialer.NewDialer(fastdialer.DefaultOptions)
if err != nil {
panic(err)
}

// Configure Cache if required
// memory based (also support Hybrid and Disk Cache)
options.CacheType = fastdialer.Memory
options.CacheMemoryMaxItems = 100

ctx := context.Background()

// To dial and create connection use
// To create connection over TLS or older versions use
// fd.DialTLS() or fd.DialZTLS()
conn, err := fd.Dial(ctx, "tcp", "www.projectdiscovery.io:80")
if err != nil || conn == nil {
log.Fatalf("couldn't connect to target: %s", err)
} else {
fmt.Println("Connected: TCP stream created with www.projectdiscovery.io:80")
}
conn.Close()

// To look up Host/ Get DNS details use
data, err := fd.GetDNSData("www.projectdiscovery.io")
if err != nil || data == nil {
log.Fatalf("couldn't retrieve dns data: %s", err)
}

// To Print All Type of DNS Data use
jsonData, err := data.JSON()
if err != nil {
log.Fatalf("failed to marshal json: %s", err)
}
fmt.Println(jsonData)

}
```
53 changes: 53 additions & 0 deletions example/main.go
@@ -0,0 +1,53 @@
package main

import (
"context"
"fmt"
"log"

"github.com/projectdiscovery/fastdialer/fastdialer"
)

func main() {

// refer fastdialer/options.go for options and customization
options := fastdialer.DefaultOptions

// Create new dialer using NewDialer(opts fastdialer.options)
fd, err := fastdialer.NewDialer(fastdialer.DefaultOptions)
if err != nil {
panic(err)
}

// Configure Cache if required
// memory based (also support Hybrid and Disk Cache)
options.CacheType = fastdialer.Memory
options.CacheMemoryMaxItems = 100

ctx := context.Background()

// To dial and create connection use
// To create connection over TLS or older versions use
// fd.DialTLS() or fd.DialZTLS()
conn, err := fd.Dial(ctx, "tcp", "www.projectdiscovery.io:80")
if err != nil || conn == nil {
log.Fatalf("couldn't connect to target: %s", err)
} else {
fmt.Println("Connected: TCP stream created with www.projectdiscovery.io:80")
}
conn.Close()

// To look up Host/ Get DNS details use
data, err := fd.GetDNSData("www.projectdiscovery.io")
if err != nil || data == nil {
log.Fatalf("couldn't retrieve dns data: %s", err)
}

// To Print All Type of DNS Data use
jsonData, err := data.JSON()
if err != nil {
log.Fatalf("failed to marshal json: %s", err)
}
fmt.Println(jsonData)

}
41 changes: 34 additions & 7 deletions go.mod
@@ -1,22 +1,49 @@
module github.com/projectdiscovery/fastdialer

go 1.14
go 1.18

require (
github.com/akrylysov/pogreb v0.10.1 // indirect
github.com/dimchansky/utfbom v1.1.1
github.com/golang/snappy v0.0.4 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/pkg/errors v0.9.1
github.com/projectdiscovery/hmap v0.0.2-0.20210917080408-0fd7bd286bfa
github.com/projectdiscovery/networkpolicy v0.0.1
github.com/projectdiscovery/retryabledns v1.0.17
github.com/projectdiscovery/utils v0.0.2
github.com/rogpeppe/go-internal v1.8.0 // indirect
github.com/stretchr/testify v1.8.1
github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6
github.com/zmap/zcrypto v0.0.0-20220803033029-557f3e4940be
go.etcd.io/bbolt v1.3.6 // indirect
golang.org/x/net v0.1.0
google.golang.org/protobuf v1.27.1 // indirect
)

require (
github.com/akrylysov/pogreb v0.10.1 // indirect
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/gorilla/css v1.0.0 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/microcosm-cc/bluemonday v1.0.21 // indirect
github.com/miekg/dns v1.1.50 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/projectdiscovery/fileutil v0.0.3 // indirect
github.com/projectdiscovery/iputil v0.0.2 // indirect
github.com/projectdiscovery/retryablehttp-go v1.0.2 // indirect
github.com/projectdiscovery/sliceutil v0.0.1 // indirect
github.com/projectdiscovery/stringsutil v0.0.2 // indirect
github.com/rogpeppe/go-internal v1.8.0 // indirect
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
github.com/syndtr/goleveldb v1.0.0 // indirect
github.com/weppos/publicsuffix-go v0.15.1-0.20220724114530-e087fba66a37 // indirect
github.com/yl2chen/cidranger v1.0.2 // indirect
github.com/zmap/rc2 v0.0.0-20131011165748-24b9757f5521 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
golang.org/x/crypto v0.1.0 // indirect
golang.org/x/mod v0.6.0 // indirect
golang.org/x/sys v0.1.0 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/tools v0.2.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
7 changes: 0 additions & 7 deletions go.sum
Expand Up @@ -22,7 +22,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
Expand All @@ -33,8 +32,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
Expand Down Expand Up @@ -147,7 +144,6 @@ go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU=
go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
Expand All @@ -160,7 +156,6 @@ golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWP
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
Expand Down Expand Up @@ -243,8 +238,6 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
Expand Down

0 comments on commit f8fad52

Please sign in to comment.