diff --git a/.gitignore b/.gitignore index 8e58869..d94ab38 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ *.db -data -bin +beretta* diff --git a/Containerfile b/Containerfile deleted file mode 100644 index e47e4e0..0000000 --- a/Containerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM docker.io/golang:1.24 AS builder -WORKDIR /app -COPY go.mod go.sum ./ -RUN go mod download -COPY src src -RUN GOOS=linux go build -o beretta src/*.go -# FROM docker.io/alpine:3 -FROM docker.io/debian:bookworm-slim - -RUN apt-get update && apt-get install -y \ - ca-certificates \ - sqlite3 \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=builder /app/beretta /beretta -ENTRYPOINT ["/beretta"] diff --git a/Makefile b/Makefile index b0f19e6..54bdd5e 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,8 @@ -build: - go build -o bin/beretta src/*.go - run: go run src/*.go -build-container: - podman build -t beretta . +build: + go build -o beretta src/*.go clean: rm beretta diff --git a/src/beretta.json b/beretta.json similarity index 80% rename from src/beretta.json rename to beretta.json index e53438f..92042bf 100644 --- a/src/beretta.json +++ b/beretta.json @@ -10,6 +10,6 @@ } ], "interval": 1200, - "ntfy_topic": "{{.TopicToken}}" + "ntfy_topic": "hee4waeNguch" } diff --git a/beretta.service b/beretta.service deleted file mode 100644 index 85420f1..0000000 --- a/beretta.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Beretta Service -After=network.target - -[Service] -Type=simple -ExecStart=/usr/local/bin/beretta -Restart=on-failure -RestartSec=5 -User=beretta -WorkingDirectory=/usr/local/bin - -[Install] -WantedBy=multi-user.target diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 275408c..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,11 +0,0 @@ -services: - beretta: - image: beretta:latest - name: beretta-server - build: - context: . - command: > - -config /data/beretta.json - -db /data/cache.db - volumes: - - ./data:/data:Z diff --git a/src/main.go b/src/main.go index 0561a64..fa55a33 100644 --- a/src/main.go +++ b/src/main.go @@ -1,18 +1,12 @@ package main import ( - _ "embed" "flag" "log" "math/rand" - "os" - "text/template" "time" ) -//go:embed beretta.json -var defconfig string - type RepoUpdate struct { repo Repo Tag string @@ -28,7 +22,7 @@ func notifierThread(c chan RepoUpdate, n Notifier) { } func repoThread(c chan RepoUpdate, repo Repo, avgInterval int, db Db) { - log.Println("Checking: ", repo.IdTuple()) + log.Println("Checking", repo.IdTuple()) tag, err := repo.GetLatestTag() isNewVersion, err_2 := db.CheckAndStore(repo.IdTuple(), tag.Name) @@ -39,7 +33,6 @@ func repoThread(c chan RepoUpdate, repo Repo, avgInterval int, db Db) { } else if isNewVersion { c <- RepoUpdate{repo, tag.Name} } - log.Println("Checking done: ", repo.IdTuple()) sleepTime := time.Duration(rand.Intn(avgInterval)) * time.Second time.Sleep(sleepTime) @@ -48,54 +41,25 @@ func repoThread(c chan RepoUpdate, repo Repo, avgInterval int, db Db) { } func main() { - conf_path := flag.String("config", "beretta.json", "The path to the config file") - db_path := flag.String("db", "cache.db", "The path to the cache database") + + conf := flag.String("config", "./beretta.json", "The path to the config file") flag.Parse() - tmpl, err := template.New("config").Parse(defconfig) - if err != nil { - panic(err) - } - - randtk, err := randToken(8) - if err != nil { - panic(err) - } - - data := map[string]any{ - "TopicToken": randtk, - } - - if _, err := os.Stat(*conf_path); os.IsNotExist(err) { - log.Printf("Writing new config file: %s", *conf_path) - file, err := os.Create(*conf_path) - if err != nil { - panic(err) - } - err = tmpl.Execute(file, data) - if err != nil { - log.Fatalf("Error writing config file: %s", err) - return - } - } - - log.Printf("Using config path: %s", *conf_path) - log.Printf("Using db path: %s", *db_path) + log.Printf("Using config path: %s", *conf) // Load configuration - config, err := loadConfig(*conf_path) + config, err := loadConfig(*conf) if err != nil { log.Fatalf("Failed to load configuration: %v", err) } // Create database - db, err := NewSQLiteDb(*db_path) + db, err := NewSQLiteDb("tags.db") if err != nil { log.Fatalf("Failed to create database: %v", err) } notifier := NtfyNotifier{Topic: config.NtfyTopic} - log.Printf("Sending notifications to: %s", notifier.Url()) c := make(chan RepoUpdate) diff --git a/src/random_token.go b/src/random_token.go deleted file mode 100644 index a8d2b96..0000000 --- a/src/random_token.go +++ /dev/null @@ -1,14 +0,0 @@ -package main - -import ( - "crypto/rand" - "encoding/hex" -) - -func randToken(n int) (string, error) { - bytes := make([]byte, n) - if _, err := rand.Read(bytes); err != nil { - return "", err - } - return hex.EncodeToString(bytes), nil -} diff --git a/src/types.go b/src/types.go index e66f97f..59074f2 100644 --- a/src/types.go +++ b/src/types.go @@ -39,7 +39,6 @@ func loadConfig(file string) (Config, error) { type Notifier interface { Notify(repo Repo, tag string) bool - Url() string } type NtfyNotifier struct { @@ -47,10 +46,10 @@ type NtfyNotifier struct { } func (n NtfyNotifier) Notify(repo Repo, tag string) bool { - // ntfyURL := fmt.Sprintf("https://ntfy.sh/%s", n.Topic) + ntfyURL := fmt.Sprintf("https://ntfy.sh/%s", n.Topic) message := fmt.Sprintf("New release for %s/%s: %s", repo.Owner(), repo.Name(), tag) - _, err := http.Post(n.Url(), "text/plain", bytes.NewBuffer([]byte(message))) + _, err := http.Post(ntfyURL, "text/plain", bytes.NewBuffer([]byte(message))) if err != nil { log.Printf("Failed to send notification: %v", err) return false @@ -58,7 +57,3 @@ func (n NtfyNotifier) Notify(repo Repo, tag string) bool { log.Printf("Notification sent: %s", message) return true } - -func (n NtfyNotifier) Url() string { - return fmt.Sprintf("https://ntfy.sh/%s", n.Topic) -}