first commit
This commit is contained in:
commit
9e6c362ec0
108
fbroken.go
Executable file
108
fbroken.go
Executable file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
Description: Tool to check alive URLs.
|
||||
Auth0r: sml@lacashita.com
|
||||
|
||||
Use it only as educational purpose.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Func to check if URL works.
|
||||
func checkUrl(page string, client http.Client, wg *sync.WaitGroup) {
|
||||
defer wg.Done()
|
||||
request, err := http.NewRequest("GET", page, nil)
|
||||
if err != nil {
|
||||
fmt.Printf("Error requesting url.\n")
|
||||
}
|
||||
response, err := client.Do(request)
|
||||
if err != nil {
|
||||
// Shows the errors in requests.
|
||||
fmt.Printf("Error in the URL: %v with the error %v\n", page, err)
|
||||
} else {
|
||||
if response.StatusCode == 200 {
|
||||
// Uncomment the following line to check what pages are OK (Status 200).
|
||||
// fmt.Printf("Page %v OK\n",page)
|
||||
defer response.Body.Close()
|
||||
} else {
|
||||
// Shows URLs with errors (Status != 200).
|
||||
fmt.Printf("Page %v with errors.\n",page)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
func lanomalie() {
|
||||
fmt.Println(`
|
||||
__ _ _
|
||||
/ _| | | |
|
||||
| |_| |__ _ __ ___ | | _____ _ __
|
||||
| _| '_ \| '__/ _ \| |/ / _ \ '_ \
|
||||
| | | |_) | | | (_) | < __/ | | |
|
||||
|_| |_.__/|_| \___/|_|\_\___|_| |_|
|
||||
=====================================
|
||||
[-] Checking alive URLs...
|
||||
|
||||
`)
|
||||
}
|
||||
|
||||
func main() {
|
||||
var page string
|
||||
fichero := flag.String("f", "", "File with urls")
|
||||
web := flag.String("u", "", "Only one url")
|
||||
flag.Parse()
|
||||
client := http.Client{Timeout: 10 * time.Second}
|
||||
// Check there are at least 2 args.
|
||||
if len(os.Args) < 2 {
|
||||
fmt.Println(`
|
||||
Parameters:
|
||||
-f File with URLs to check.
|
||||
-u URL to check.
|
||||
|
||||
Examples to check file with URLs:
|
||||
fbroken -f urls.txt
|
||||
|
||||
Example to check URL:
|
||||
fbroken -u https://domain.xxx
|
||||
`)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
switch os.Args[1] {
|
||||
case "-f":
|
||||
lanomalie()
|
||||
// Open file and check URLs
|
||||
file, err := os.Open(*fichero)
|
||||
if err != nil {
|
||||
fmt.Print("Error opening the file")
|
||||
}
|
||||
defer file.Close()
|
||||
scanner := bufio.NewScanner(file)
|
||||
for scanner.Scan() {
|
||||
page = scanner.Text()
|
||||
go checkUrl(page, client, &wg)
|
||||
wg.Add(1)
|
||||
}
|
||||
|
||||
case "-u":
|
||||
lanomalie()
|
||||
// Check directly the URL.
|
||||
go checkUrl(*web, client, &wg)
|
||||
wg.Add(1)
|
||||
default:
|
||||
fmt.Println("-f or -u expected")
|
||||
os.Exit(1)
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user