Skip to content

Commit

Permalink
- added some custom parameter option
Browse files Browse the repository at this point in the history
- moved subdirectories
  • Loading branch information
ipcjk committed Feb 14, 2019
1 parent 6697c8d commit d8cd40a
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 48 deletions.
11 changes: 0 additions & 11 deletions Dockerfile.release

This file was deleted.

File renamed without changes.
2 changes: 1 addition & 1 deletion src/asn_test.go → asn_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package main
package asnbuilder

import (
numberRange "./numberRange"
Expand Down
81 changes: 45 additions & 36 deletions src/main.go → main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,31 @@
*
*/

package main
package asnbuilder

import (
"./numberRange"
"encoding/csv"
"flag"
"fmt"
"io"
"log"
"net/http"
"os"
"sort"
"strconv"
"strings"
"sync"
"sort"
"./numberRange"
"os"
)

var NicToASN map[string][]string
var fmt_asPathACL = "ip as-path access-list %s %s %s$\n"
var fmtAsPathACL = "ip as-path access-list %s %s %s$\n"

/* Command line parameters */
var flagNicRegion string
var flagPermitOrDeny int
var flagAclTitle string
var flagAclTitle, flagFilename, flagNicRegion, asnFile string
var flagSummaryOnly bool
var flagNICsParsed []string
var flagFilename string
var PermitOrDenyArr [2]string = [2]string{"deny", "permit"}

var asnList []string = []string{
Expand All @@ -44,31 +42,43 @@ func init() {
flag.BoolVar(&flagSummaryOnly, "summary", false, "Print summary of downloaded lists only")
flag.IntVar(&flagPermitOrDeny, "permitOrDeny", 1, "Deny = 0, Permit = 1")
flag.StringVar(&flagFilename, "filename", "", "Output file, else stdout")
flag.StringVar(&asnFile, "custom", "", "file with custom ASNs for list-generation")

flag.Parse()
flagNICsParsed = strings.Split(flagNicRegion, ",")
}

func main() {
// log.Println("Building ASN-prefixlists per NIC")
var wg sync.WaitGroup
var mt sync.Mutex

for _, v := range asnList {
wg.Add(1)
go func(asnURI string) {
defer wg.Done()
// log.Printf("downloading %s\n", asnURI)
if asnFile != "" {
f, err := os.Open(asnFile)
if err != nil {
log.Fatalf("Cant open as number file %s: %s", asnFile, err)
}
mapAsnToNic(f)
defer f.Close()
}

if asnFile == "" {
for _, v := range asnList {
wg.Add(1)
go func(asnURI string) {
defer wg.Done()
// log.Printf("downloading %s\n", asnURI)

resp, err := http.Get(asnURI)
if err != nil {
log.Fatal("Cant open as numbers from IANA")
}
resp, err := http.Get(asnURI)
if err != nil {
log.Fatal("Cant open as numbers from IANA")
}

mt.Lock()
map_asn_to_nic(resp.Body)
mt.Unlock()
resp.Body.Close()
}(v)
mt.Lock()
mapAsnToNic(resp.Body)
mt.Unlock()
resp.Body.Close()
}(v)
}
}

wg.Wait()
Expand All @@ -94,7 +104,7 @@ func printSummary() {
}
}

func generatePrefixList(outputStream io.Writer ) {
func generatePrefixList(outputStream io.Writer) {
var prefixLists []string
for _, nic := range flagNICsParsed {
for _, v := range NicToASN[nic] {
Expand All @@ -109,46 +119,45 @@ func generatePrefixList(outputStream io.Writer ) {
panic(err)
}
if start == end {
prefixLists = append(prefixLists, fmt.Sprintf(fmt_asPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny],
"_" + strconv.Itoa(start)))
prefixLists = append(prefixLists, fmt.Sprintf(fmtAsPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny],
"_"+strconv.Itoa(start)))
} else {
prefixLists = append(prefixLists, fmt.Sprintf(fmt_asPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny],
prefixLists = append(prefixLists, fmt.Sprintf(fmtAsPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny],
numberRange.GetRegex(start, end)))
}
} else {
prefixLists = append(prefixLists, fmt.Sprintf(fmt_asPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny], "_" + v))
prefixLists = append(prefixLists, fmt.Sprintf(fmtAsPathACL, flagAclTitle, PermitOrDenyArr[flagPermitOrDeny], "_"+v))
}
}
}
sort.Slice(prefixLists,
func(i,j int) bool {
func(i, j int) bool {
return prefixLists[i] < prefixLists[j]
});
})

for _, v := range prefixLists {
fmt.Fprint(outputStream, v)
}
}

func map_asn_to_nic(ASN io.ReadCloser) {
func mapAsnToNic(ASN io.ReadCloser) {
r := csv.NewReader(ASN)
for {
record, err := r.Read()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
log.Fatal( err)
}

if strings.HasPrefix(record[1], "Assigned by ") {
nic := strings.TrimPrefix(record[1], "Assigned by ")
NicToASN[nic] = append(NicToASN[nic], record[0])
} else if strings.HasPrefix(record[1], "Reserved") || strings.HasPrefix(record[1], "Unallocated") {
NicToASN["bogons"] = append(NicToASN["bogons"], record[0])
}
} else {
NicToASN["custom"] = append(NicToASN["custom"], record[0])
}
}
}



File renamed without changes.
52 changes: 52 additions & 0 deletions saveFIB.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
8151,Uninet S.A. de C.V., MX
39891,ALJAWWALSTC-AS, SA
6327,SHAW - Shaw Communications Inc., CA
8551,BEZEQ-INTERNATIONAL-AS Bezeqint Internet Backbone, IL
47331,TTNET, TR
4538,ERX-CERNET-BKB China Education and Research Network Center, CN
9808,CMNET-GD Guangdong Mobile Communication Co.Ltd., CN
9394,CTTNET China TieTong Telecommunications Corporation, CN
7552,VIETEL-AS-AP Viettel Group, VN
7545,TPG-INTERNET-AP TPG Telecom Limited, AU
45899,VNPT-AS-VN VNPT Corp, VN
4766,KIXS-AS-KR Korea Telecom, KR
17974,TELKOMNET-AS2-AP PT Telekomunikasi Indonesia, ID
11492,CABLEONE - CABLE ONE INC., US
18566,MEGAPATH5-US - MegaPath Corporation, US
4755,TATACOMM-AS TATA Communications formerly VSNL is Leading ISP, IN
9498,BBIL-AP BHARTI Airtel Ltd., IN
20115,CHARTER-20115 - Charter Communications, US
11830,Instituto Costarricense de Electricidad y Telecom., CR
23969,TOT-NET TOT Public Company Limited, TH
12389,ROSTELECOM-AS, RU
6389,BELLSOUTH-NET-BLK - AT&T Corp., US
45090,CNNIC-TENCENT-NET-AP Shenzhen Tencent Computer Systems Company Limited, CN
9121,TTNET, TR
12479,UNI2-AS, ES
22773,ASN-CXA-ALL-CCI-22773-RDC - Cox Communications Inc., US
28573,CLARO S.A., BR
11172,Alestra S. de R.L. de C.V., MX
32098,TRANSTELCO-INC - Transtelco Inc, US
33363,BHN-33363 - Charter Communications Inc, US
45609,BHARTI-MOBILITY-AS-AP Bharti Airtel Ltd. AS for GPRS Service, IN
30036,MEDIACOM-ENTERPRISE-BUSINESS - Mediacom Communications Corp, US
45271,ICLNET-AS-AP Idea Cellular Limited, IN
13361,VODAFONE-AS-AP Vodafone Australia Pty Ltd, AU
9829,BSNL-NIB National Internet Backbone, IN
3462,HINET Data Communication Business Group, TW
9605,DOCOMO NTT DOCOMO INC., JP
13206,REALMOVE-AS-AP Realmove Company Limited, TH
55430,STARHUB-NGNBN Starhub Ltd, SG
24173,NETNAM-AS-AP Netnam Company, VN
13142,MOBIFONE-AS-VN MOBIFONE Corporation, VN
17622,CNCGROUP-GZ China Unicom Guangzhou network, CN
21003,PINKU-DAIMARI Pinku Daimari | CHD-IX, GB
4808,CHINA169-BJ China Unicom Beijing Province Network, CN
54540,INCERO-HVVC - HIVELOCITY Inc., US
3651,SPRINT-BB6 - Sprint, US
10507,SPCS - Sprint Personal Communications Systems, US
17552,TRUE-AS-AP True Internet Co. Ltd., TH
210035,PINKU-DAIMA45609RI Pinku Daimari | CHD-IX, GB
10143,EXETEL-AS-AP Exetel Pty Ltd, AU
17072,TOTAL PLAY TELECOMUNICACIONES SA DE CV, MX
48503,TELE2-KZ Tele2 Kazakhstan, KZ
File renamed without changes.

0 comments on commit d8cd40a

Please sign in to comment.