workign on the yamls
This commit is contained in:
74
packages.go
74
packages.go
@@ -3,29 +3,29 @@ package main
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"database/sql"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"encoding/hex"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"html/template"
|
||||
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
type jsonStruct struct {
|
||||
Vendor string
|
||||
Package string
|
||||
Version string
|
||||
Type string
|
||||
Location string
|
||||
Checksum string
|
||||
Url string
|
||||
Vendor string
|
||||
Package string
|
||||
Version string
|
||||
Type string
|
||||
Location string
|
||||
Checksum string
|
||||
Url string
|
||||
}
|
||||
|
||||
// packages struct represents a package with its details.
|
||||
@@ -38,6 +38,18 @@ type packages struct {
|
||||
Warning bool
|
||||
Element *elements
|
||||
}
|
||||
type yaml struct {
|
||||
PID string
|
||||
VER string
|
||||
TYPE string
|
||||
URL string
|
||||
HASH string
|
||||
PUB string
|
||||
NAME string
|
||||
INIT string
|
||||
LOCATION string
|
||||
FILELOCATION string
|
||||
}
|
||||
|
||||
// ConvertStringsToPackage converts a slice of strings to a packages struct.
|
||||
// It returns an error if the input slice does not have exactly 6 elements or if the Warning value cannot be parsed as a boolean.
|
||||
@@ -145,14 +157,14 @@ func getVendor(data map[string]string) string {
|
||||
for key, val := range data {
|
||||
switch key {
|
||||
case "Author":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
|
||||
case "Company Name":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
case "Manufacturer":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
case "Publisher":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
|
||||
}
|
||||
}
|
||||
@@ -162,32 +174,32 @@ func getProgram(data map[string]string) string {
|
||||
for key, val := range data {
|
||||
switch key {
|
||||
case "Title":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
|
||||
case "Product Name":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
case "ProductName":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
case "Subject":
|
||||
return strings.ToLower(strings.Replace(val," ","",-1))
|
||||
return strings.ToLower(strings.Replace(val, " ", "", -1))
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
func getVersion(data map[string]string) string {
|
||||
replacer:=regexp.MustCompile(`[, ]+`)
|
||||
replacer := regexp.MustCompile(`[, ]+`)
|
||||
for key, val := range data {
|
||||
switch key {
|
||||
case "Version":
|
||||
return replacer.ReplaceAllString(val,".")
|
||||
return replacer.ReplaceAllString(val, ".")
|
||||
case "Product Version":
|
||||
return replacer.ReplaceAllString(val,".")
|
||||
return replacer.ReplaceAllString(val, ".")
|
||||
case "ProductVersion":
|
||||
return replacer.ReplaceAllString(val,".")
|
||||
return replacer.ReplaceAllString(val, ".")
|
||||
case "File Version":
|
||||
return replacer.ReplaceAllString(val,".")
|
||||
return replacer.ReplaceAllString(val, ".")
|
||||
case "FileVersion":
|
||||
return replacer.ReplaceAllString(val,".")
|
||||
return replacer.ReplaceAllString(val, ".")
|
||||
}
|
||||
}
|
||||
return ""
|
||||
@@ -198,7 +210,7 @@ func detectProblems(data map[string]string) bool {
|
||||
if !err || (exe == "exe" && !(mime == "application/octet-stream")) {
|
||||
return false
|
||||
}
|
||||
if (exe != "msi" && exe != "exe" && exe != "zip") {
|
||||
if exe != "msi" && exe != "exe" && exe != "zip" {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
@@ -232,14 +244,14 @@ func moveToNewLocationAndName(data map[string]string) string {
|
||||
func createObject(object map[string]string) jsonStruct {
|
||||
if detectProblems(object) {
|
||||
prop := jsonStruct{
|
||||
Vendor: getVendor(object) ,
|
||||
Package: getProgram(object),
|
||||
Version: getVersion(object),
|
||||
Type: getInstallerType(object),
|
||||
Vendor: getVendor(object),
|
||||
Package: getProgram(object),
|
||||
Version: getVersion(object),
|
||||
Type: getInstallerType(object),
|
||||
}
|
||||
|
||||
loc, _ := os.ReadFile(object["Directory"] + "/" + object["File Name"])
|
||||
chksum:=sha256.Sum256(loc)
|
||||
chksum := sha256.Sum256(loc)
|
||||
prop.Checksum = hex.EncodeToString(chksum[:])
|
||||
lc := moveToNewLocationAndName(object)
|
||||
prop.Url = os.Getenv("uri") + lc
|
||||
@@ -267,11 +279,11 @@ func getJson(sqldb *sql.DB) http.Handler {
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
}
|
||||
temp,err:=template.ParseFiles("html/lastob.json")
|
||||
temp, err := template.ParseFiles("html/lastob.json")
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
}
|
||||
err=temp.ExecuteTemplate(res, "main", jsonelement)
|
||||
err = temp.ExecuteTemplate(res, "main", jsonelement)
|
||||
if err != nil {
|
||||
slog.Error(err.Error())
|
||||
}
|
||||
|
Reference in New Issue
Block a user