mirror of
https://codeberg.org/ultimateplayer1999/Golang-phish-update.git
synced 2024-11-22 04:28:22 -05:00
130 lines
3.4 KiB
Go
130 lines
3.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"io/ioutil"
|
||
|
"encoding/json"
|
||
|
|
||
|
"github.com/joho/godotenv"
|
||
|
|
||
|
_ "github.com/go-sql-driver/mysql"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
// Load environment variables from .env file
|
||
|
err := godotenv.Load()
|
||
|
if err != nil {
|
||
|
log.Fatal("Error loading .env file")
|
||
|
}
|
||
|
//Connect to the database
|
||
|
db, err := sql.Open("mysql", os.Getenv("DB_USER")+":"+os.Getenv("DB_PASS")+"@tcp("+os.Getenv("DB_HOST")+":"+os.Getenv("DB_PORT")+")/"+os.Getenv("DATABASE"))
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
defer db.Close()
|
||
|
|
||
|
// Verify that the connection is successful
|
||
|
err = db.Ping()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// Perform a cleanup on DB
|
||
|
deleter, err := db.Exec("DELETE FROM phish;")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
// Get the number of affected rows
|
||
|
rowsAffected, err := deleter.RowsAffected()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Printf("Number of rows affected: %d\n", rowsAffected)
|
||
|
|
||
|
// Perform a cleanup on DB
|
||
|
aiupdate, err := db.Exec("ALTER TABLE phish AUTO_INCREMENT = 0;")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
// Get the number of affected rows
|
||
|
rowsAffected, err = aiupdate.RowsAffected()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Printf("Number of rows affected: %d\n", rowsAffected)
|
||
|
|
||
|
// Add local records first
|
||
|
insert1, err := db.Exec("INSERT INTO phish (Domain, Reporter, Evidence) VALUES ('iriseperiplo.info', 'Henk', 'https://www.virustotal.com/gui/url/318ac29af0001f6678efdd94c16d3225d78369123ebbbe5f50387b208e0ac523?nocache=1');")
|
||
|
insert2, err2 := db.Exec("INSERT INTO phish (Domain, Reporter, Evidence) VALUES ('storage.com', 'Henk', 'https://www.virustotal.com/gui/url/92fef9276cd4c0433171aac2fe92d140df069ff99d724c850ca1d3ccbdd0ae9f?nocache=1');")
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
if err2 != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
// Get the number of affected rows
|
||
|
rowsAffected, err = insert1.RowsAffected()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Printf("Number of rows affected: %d\n", rowsAffected)
|
||
|
// Get the number of affected rows
|
||
|
rowsAffected, err = insert2.RowsAffected()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
fmt.Printf("Number of rows affected: %d\n", rowsAffected)
|
||
|
|
||
|
// Define name for use later
|
||
|
// name := os.Getenv("USER_OR_BOTNAME")
|
||
|
|
||
|
// Make an HTTP request to phish.sinking.yachts alldomains endpoint
|
||
|
req, err := http.NewRequest("GET", "https://phish.sinking.yachts/v2/all", nil)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
req.Header.Set("X-Identity", "ultimatebot db updater via Golang")
|
||
|
client := &http.Client{}
|
||
|
resp, err := client.Do(req)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
defer resp.Body.Close()
|
||
|
|
||
|
fmt.Println("Status code: ", resp.StatusCode)
|
||
|
body, err := ioutil.ReadAll(resp.Body)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
var data []string
|
||
|
err = json.Unmarshal(body, &data)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// Initialize a variable to keep track of the total number of rows affected
|
||
|
var totalRowsAffected int64
|
||
|
|
||
|
for _, element := range data {
|
||
|
// fmt.Println(element)
|
||
|
// Add domains
|
||
|
inserter, err := db.Exec("INSERT INTO phish (Domain) VALUES (?)", element)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
rowsAffected, err := inserter.RowsAffected()
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
|
||
|
totalRowsAffected += rowsAffected
|
||
|
}
|
||
|
fmt.Printf("Total number of rows affected: %d\n", totalRowsAffected)
|
||
|
// dummy
|
||
|
// fmt.Println("Data: ", string(body))
|
||
|
}
|