44 Commits

Author SHA1 Message Date
renovate[bot]
09fcce6be5 Update github/codeql-action action to v3 (#33)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-14 19:51:25 +00:00
renovate[bot]
cf40e0b6b5 Update actions/setup-go action to v5 (#32)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-10 14:46:22 +00:00
renovate[bot]
fddf51b7bf Roll back actions/checkout action to v4.1.1 (#31)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-18 12:09:57 +01:00
renovate[bot]
a72f303b68 Update actions/checkout digest to 8ade135 (#30)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-22 20:47:06 +01:00
renovate[bot]
f2607b5b4a Update actions/checkout action to v4 (#29)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 20:47:17 +01:00
renovate[bot]
5f4d044cb0 Update golang Docker tag to v1.21 (#28)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-11 18:15:38 +01:00
renovate[bot]
9d5b10625f Update golang Docker tag to v1.20 (#26)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 18:52:43 +00:00
renovate[bot]
e56baff565 Update actions/setup-go action to v4 (#27)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-03-16 18:30:18 +00:00
d056af8001 Create bug_report.yml 2023-01-10 22:45:02 +00:00
renovate[bot]
6ff1142ead Update actions/setup-go action to v3 (#23)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-13 21:59:57 +01:00
Luke Tainton
9725c985f5 Switch to SonarCloud (#25) 2022-08-13 21:57:09 +01:00
Luke Tainton
6db5904a31 Fix unit tests (#24) 2022-08-13 21:08:32 +01:00
Luke Tainton
d4c812f214 Add SonarQube and unit tests (#22) 2022-08-13 21:02:15 +01:00
Luke Tainton
c4de2f6025 Remove GitLab files (#21) 2022-08-13 14:47:08 +01:00
renovate[bot]
b38c70a425 Update module go to 1.19 (#18)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-07 19:05:49 +01:00
renovate[bot]
a0f4a7a262 Update dependency golang (#17)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-07 19:03:59 +01:00
renovate[bot]
a3a8f86885 Update module go to 1.18 (#16)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-31 15:40:10 +01:00
renovate[bot]
e140cc59f5 Update dependency golang to v1.18.2 (#11)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-05-21 15:42:19 +01:00
renovate[bot]
be0d38db70 Update dependency docker to v20 (#9)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-04-13 19:35:55 +01:00
Luke Tainton
1aba5c038c Create codeql-analysis.yml 2022-04-13 16:29:22 +01:00
renovate[bot]
1c5d01a492 Update dependency registry.gitlab.com/gitlab-org/release-cli to v0.11.0 (#7)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-04-13 16:28:08 +01:00
renovate[bot]
8332d6240d Update dependency docker to v19.03.15 (#5)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-04-13 16:28:00 +01:00
renovate[bot]
8133bc1058 Update actions/checkout action to v3 (#8)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-04-13 16:27:48 +01:00
Luke Tainton
dcfd3098a5 Update README.md 2022-04-13 16:25:49 +01:00
Luke Tainton
e1283d95e8 Replace SAST with DeepSource 2022-04-13 16:19:51 +01:00
Luke Tainton
20cbc0cbd4 Pin SAST to 1.0.2 2022-04-13 16:15:00 +01:00
Luke Tainton
39c839a33d Fix SAST 2022-04-13 15:47:50 +01:00
Luke Tainton
ebfbd41801 Fix SAST 2022-04-13 15:46:09 +01:00
Luke Tainton
2eaddcb743 Fix SAST 2022-04-13 15:32:39 +01:00
renovate[bot]
1ac46c0b22 Update dependency golang (#6)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2022-04-13 15:27:17 +01:00
Luke Tainton
d8480e8946 Move back to GitHub 2022-04-13 15:26:05 +01:00
6c88bbf40a Add DeepSource config 2022-02-11 15:18:50 +00:00
c64f489c95 Fix DeepSource issues 2022-02-11 15:17:03 +00:00
911cfef9e7 Add .deepsource.toml 2022-02-11 14:53:40 +00:00
d38a7e126d Move to GitLab, update minimum Go version 2022-01-05 22:34:45 +00:00
858b11ba23 Merge branch 'set-sast-config-1' into 'main'
Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist

See merge request luketainton/iPilot!4
2021-11-20 23:29:00 +00:00
f60ffe3525 Configure SAST in .gitlab-ci.yml, creating this file if it does not already exist 2021-11-20 23:29:00 +00:00
a10c6f76d3 v1.3.19 2021-11-20 23:11:07 +00:00
5d5f096033 v1.3.18 2021-11-20 23:00:28 +00:00
b8dc73a720 v1.3.17 2021-11-20 22:58:03 +00:00
27280e8d45 v1.3.16 2021-11-20 22:43:06 +00:00
8c5e12960d v1.3.15 2021-11-20 22:41:52 +00:00
849dc9b0ee v1.3.14 2021-11-20 22:39:09 +00:00
617d94add8 v1.3.13 2021-11-20 22:28:28 +00:00
18 changed files with 259 additions and 95 deletions

8
.deepsource.toml Normal file
View File

@@ -0,0 +1,8 @@
version = 1
[[analyzers]]
name = "go"
enabled = true
[analyzers.meta]
import_root = "github.com/luketainton/iPilot"

View File

@@ -1,5 +0,0 @@
{
"extends": [
"config:base"
]
}

58
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,58 @@
---
name: "Bug Report"
description: "Submit a bug report"
labels: ["bug"]
assignees: ["luketainton"]
body:
- type: checkboxes
id: checks
attributes:
label: First Check
description: Please confirm and check all the following options.
options:
- label: This is not a feature request
required: true
- label: I added a descriptive title to this issue.
required: true
- label: I used the GitHub search to find a similar issue and didn't find one.
required: true
- type: input
id: ipilot-version
attributes:
label: iPilot Version
validations:
required: true
- type: textarea
id: description
attributes:
label: What is the issue you are experiencing?
placeholder: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduction
attributes:
description: If you do not provide a way to reproduce the issue, your issue will likely be closed.
label: How can the maintainer reproduce the issue?
placeholder: A clear step-by-step guide on how to reproduce the issue.
validations:
required: true
- type: dropdown
id: os
attributes:
label: Deployment
description: What Deployment system are you using?
multiple: true
options:
- Docker
- Native (Windows)
- Native (MacOS)
- Native (Linux)
- Other
validations:
required: true
- type: textarea
id: os-details
attributes:
label: Deployment Details
description: You can add more details about your operating system here, in particular if you chose "Other".

View File

@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [prepare-data] needs: [prepare-data]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Login to GitHub Package Registry - name: Login to GitHub Package Registry
run: echo ${{ secrets.PAT }} | docker login ghcr.io -u luketainton --password-stdin run: echo ${{ secrets.PAT }} | docker login ghcr.io -u luketainton --password-stdin
- name: Build image for GitHub Package Registry - name: Build image for GitHub Package Registry
@@ -41,7 +41,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [prepare-data] needs: [prepare-data]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Build artifacts - name: Build artifacts
run: | run: |
docker run --rm -w /go/src/app -v ${PWD}:/go/src/app -e CGO_ENABLED=0 -e GOARCH=amd64 -e GOOS=darwin golang:alpine go build -o /go/src/app/${{ needs.prepare-data.outputs.repo }}-${{ needs.prepare-data.outputs.tag }}-darwin-amd64 docker run --rm -w /go/src/app -v ${PWD}:/go/src/app -e CGO_ENABLED=0 -e GOARCH=amd64 -e GOOS=darwin golang:alpine go build -o /go/src/app/${{ needs.prepare-data.outputs.repo }}-${{ needs.prepare-data.outputs.tag }}-darwin-amd64

70
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '18 1 * * 1'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'go' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3

42
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: Test
on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [ main ]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.19
- name: Create golangci-lint report
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.42.1
$(go env GOPATH)/bin/golangci-lint run --out-format checkstyle -D deadcode,unused --build-tags=integration --timeout 10m --issues-exit-code 0 ./... > report.xml
sed -i 's+<file name="+<file name="go/+g' report.xml
cat report.xml
- name: Test
run: go test -short -coverprofile=coverage.out
continue-on-error: true
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_CLOUD }}
# - uses: sonarsource/sonarqube-scan-action@master
# env:
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
# - uses: sonarsource/sonarqube-quality-gate-action@master
# timeout-minutes: 5
# env:
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/.vscode
/.idea

View File

@@ -1,63 +0,0 @@
stages:
- build-docker
- build-binary
- upload
- release
build-docker:
stage: build-docker
only:
- tags
image: docker:19.03.12
services:
- docker:19.03.12-dind
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:latest -t $IMAGE_TAG .
- docker build -t $IMAGE_TAG -t $CI_REGISTRY_IMAGE:latest .
- docker push $IMAGE_TAG
- docker push $CI_REGISTRY_IMAGE:latest
build-binary:
stage: build-binary
image: golang:1.17.3
before_script:
- cd $GOPATH/src
- mkdir -p gitlab.com/$CI_PROJECT_NAMESPACE
- cd gitlab.com/$CI_PROJECT_NAMESPACE
- ln -s $CI_PROJECT_DIR
- cd $CI_PROJECT_NAME
script:
- CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin go build -o iPilot-${CI_COMMIT_TAG}-darwin-amd64
- CGO_ENABLED=0 GOARCH=arm64 GOOS=darwin go build -o iPilot-${CI_COMMIT_TAG}-darwin-arm64
- CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o iPilot-${CI_COMMIT_TAG}-linux-amd64
- CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build -o iPilot-${CI_COMMIT_TAG}-win-amd64.exe
- CGO_ENABLED=0 GOARCH=386 GOOS=windows go build -o iPilot-${CI_COMMIT_TAG}-win-x86.exe
upload:
stage: upload
image: curlimages/curl:latest
rules:
- if: $CI_COMMIT_TAG
script:
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file iPilot-${CI_COMMIT_TAG}-darwin-amd64 ${PACKAGE_REGISTRY_URL}'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file iPilot-${CI_COMMIT_TAG}-darwin-arm64 ${PACKAGE_REGISTRY_URL}'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file iPilot-${CI_COMMIT_TAG}-linux-amd64 ${PACKAGE_REGISTRY_URL}'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file iPilot-${CI_COMMIT_TAG}-win-amd64.exe ${PACKAGE_REGISTRY_URL}'
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file iPilot-${CI_COMMIT_TAG}-win-x86.exe ${PACKAGE_REGISTRY_URL}'
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:v0.4.0
rules:
- if: $CI_COMMIT_TAG
script:
- |
release-cli create --name "$CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
--assets-link "{\"name\":\"iPilot-${CI_COMMIT_TAG}-darwin-amd64\",\"url\":\"iPilot-${CI_COMMIT_TAG}-darwin-amd64\"}" \
--assets-link "{\"name\":\"iPilot-${CI_COMMIT_TAG}-darwin-arm64\",\"url\":\"iPilot-${CI_COMMIT_TAG}-darwin-arm64\"}" \
--assets-link "{\"name\":\"iPilot-${CI_COMMIT_TAG}-linux-amd64\",\"url\":\"iPilot-${CI_COMMIT_TAG}-linux-amd64\"}" \
--assets-link "{\"name\":\"iPilot-${CI_COMMIT_TAG}-win-amd64.exe\",\"url\":\"iPilot-${CI_COMMIT_TAG}-win-amd64.exe\"}" \
--assets-link "{\"name\":\"iPilot-${CI_COMMIT_TAG}-win-x86.exe\",\"url\":\"iPilot-${CI_COMMIT_TAG}-win-x86.exe\"}"

11
API.go
View File

@@ -19,15 +19,12 @@ func getLocalIP() string {
return "" return ""
} }
body, _ := ioutil.ReadAll(resp.Body) body, _ := ioutil.ReadAll(resp.Body)
return string(body[:]) return string(body)
} }
func checkIPSyntax(ipaddress string) bool { func isIPAddress(ipaddress string) bool {
addr := net.ParseIP(ipaddress) addr := net.ParseIP(ipaddress)
if addr == nil { return addr != nil
return false
}
return true
} }
func resolveDNSHostname(hostname string) string { func resolveDNSHostname(hostname string) string {
@@ -53,7 +50,7 @@ func getIPInfo(ipaddress string) IPAddressInfo {
return info return info
} }
func getBGPPrefixes(as string) { func printBGPPrefixes(as string) {
apiEndpoint := "https://api.hackertarget.com/aslookup/?q=" + as apiEndpoint := "https://api.hackertarget.com/aslookup/?q=" + as
resp, err := http.Get(apiEndpoint) resp, err := http.Get(apiEndpoint)
if err != nil { if err != nil {

View File

@@ -1,4 +1,4 @@
FROM golang:1.17-alpine as build FROM golang:1.21-alpine as build
WORKDIR /go/src/app WORKDIR /go/src/app
COPY . /go/src/app COPY . /go/src/app
RUN CGO_ENABLED=0 go build -o /go/bin/app RUN CGO_ENABLED=0 go build -o /go/bin/app

View File

@@ -32,8 +32,8 @@ func printIPInfo(input string, wantPrefixes bool) {
fmt.Println("Timezone: ", IPInfo.Timezone) fmt.Println("Timezone: ", IPInfo.Timezone)
fmt.Println("ISP: ", IPInfo.ISP) fmt.Println("ISP: ", IPInfo.ISP)
fmt.Println("BGP AS: ", bgpAS) fmt.Println("BGP AS: ", bgpAS)
if wantPrefixes == true { if wantPrefixes {
fmt.Println("\nBGP Prefixes:") fmt.Println("\nBGP Prefixes:")
getBGPPrefixes(bgpAS) printBGPPrefixes(bgpAS)
} }
} }

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2021 Luke Tainton Copyright (c) 2022 Luke Tainton
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@@ -33,22 +33,21 @@ func main() {
if input == "" { if input == "" {
fmt.Println("FATAL: No IP address or domain name was specified.") fmt.Println("FATAL: No IP address or domain name was specified.")
os.Exit(1) os.Exit(1)
} else { }
if input == "me" { if input == "me" {
input = getLocalIP() input = getLocalIP()
} }
var isIPCorrect bool = checkIPSyntax(input) if isIPAddress(input) {
if isIPCorrect == true {
printIPInfo(input, wantPrefixes) printIPInfo(input, wantPrefixes)
} else { } else {
ipaddress := resolveDNSHostname(input) ipaddress := resolveDNSHostname(input)
if checkIPSyntax(ipaddress) == true { if isIPAddress(ipaddress) {
fmt.Println("Domain Name: ", input) fmt.Println("Domain Name: ", input)
printIPInfo(ipaddress, wantPrefixes) printIPInfo(ipaddress, wantPrefixes)
} else { } else {
fmt.Println("Invalid query.") fmt.Println("Invalid query.")
} }
} }
}
} }

2
go.mod
View File

@@ -1,3 +1,3 @@
module github.com/luketainton/iPilot module github.com/luketainton/iPilot
go 1.16 go 1.19

29
ipilot_test.go Normal file
View File

@@ -0,0 +1,29 @@
package main
import "testing"
func TestGetCurrentIP(t *testing.T) {
myip := getLocalIP()
if myip == "" {
t.Log("could not retrieve current IP")
t.Fail()
}
}
func TestIsIPAddress(t *testing.T) {
ipaddress := "192.168.0.1"
isIP := isIPAddress(ipaddress)
if isIP == false {
t.Log("could not verify " + ipaddress + " is an IP address")
t.Fail()
}
}
func TestResolveDNSHostname(t *testing.T) {
hostname := "one.one.one.one"
ipaddress := resolveDNSHostname(hostname)
if ipaddress != "1.1.1.1" {
t.Log("could not resolve IP for " + hostname)
t.Fail()
}
}

16
renovate.json Normal file
View File

@@ -0,0 +1,16 @@
{
"extends": ["config:base"],
"platformCommit": true,
"dependencyDashboardAutoclose": true,
"assignAutomerge": true,
"assigneesFromCodeOwners": true,
"rebaseWhen": "behind-base-branch",
"rollbackPrs": true,
"labels": ["dependencies"],
"vulnerabilityAlerts": {
"enabled": true,
"labels": ["security"],
"commitMessagePrefix": "[SECURITY] ",
"prCreation": "immediate"
}
}

11
sonar-project.properties Normal file
View File

@@ -0,0 +1,11 @@
sonar.organization=luketainton
sonar.projectKey=luketainton_iPilot
# sonar.projectKey=luketainton_iPilot_AYKYmHI397IDIMpeRtF7
sonar.projectName=iPilot
sonar.projectVersion=1.3.9
sonar.sources=.
sonar.exclusions=,.github/**,.gitignore,CODEOWNERS,CHANGELOG.md,LICENSE.md,README.md,renovate.json,**/*_test.go
sonar.tests=.
sonar.test.inclusions=**/*_test.go
sonar.go.golangci-lint.reportPaths=report.xml
sonar.go.coverage.reportPaths=coverage.out