added reading to the file, msi works on windows only. exe works if there is exiftool
This commit is contained in:
@@ -2,13 +2,46 @@
|
|||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Upload a File</h1>
|
<h1>Upload a File</h1>
|
||||||
<form action="/upload" method="post" enctype="multipart/form-data">
|
<form action="/upload" method="post" enctype="multipart/form-data" target="noframe">
|
||||||
<div class="upload-btn-wrapper">
|
<div class="upload-btn-wrapper">
|
||||||
<button class="btn">Upload a file</button>
|
<button class="btn">Upload a file</button>
|
||||||
<input type="file" name="myFile" />
|
<input type="file" name="myFile" accept=".zip, .exe, .msi" />
|
||||||
</div>
|
</div>
|
||||||
<input type="submit" value="Upload" />
|
<input type="submit" value="Upload" />
|
||||||
</form>
|
</form>
|
||||||
|
<button type="button" onclick="showContainer('form-container')" >fubarus</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-container" oncontextmenu="showContainer('form-container')">
|
||||||
|
<form>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="PackageIdentifier">PackageIdentifier</label>
|
||||||
|
<input type="text" id="PackageIdentifier" name="PackageIdentifier">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="PackageVersion">PackageVersion</label>
|
||||||
|
<input type="text" id="PackageVersion" name="PackageVersion">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="InstallerType">InstallerType</label>
|
||||||
|
<input type="text" id="InstallerType" name="InstallerType">
|
||||||
|
</div>
|
||||||
|
<fieldset>
|
||||||
|
<legend>Installers</legend>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="InstallerUrl">InstallerUrl</label>
|
||||||
|
<input type="url" id="InstallerUrl" name="InstallerUrl">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="InstallerSha256">InstallerSha256</label>
|
||||||
|
<input type="text" id="InstallerSha256" name="InstallerSha256">
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Dependencies">Dependencies</label>
|
||||||
|
<input type="text" id="Dependencies" name="Dependencies">
|
||||||
|
</div>
|
||||||
|
<input type="submit" value="Submit">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<iframe name="noframe" style="display: none;"></iframe>
|
||||||
{{end}}
|
{{end}}
|
2
main.go
2
main.go
@@ -261,7 +261,7 @@ func upload() http.Handler {
|
|||||||
fn,_:=os.OpenFile("Data/"+filename, os.O_CREATE, 0666)
|
fn,_:=os.OpenFile("Data/"+filename, os.O_CREATE, 0666)
|
||||||
fn.Write(fileBytes)
|
fn.Write(fileBytes)
|
||||||
fn.Close()
|
fn.Close()
|
||||||
getParamsFromExif("Data/"+filename)
|
log.Println(getDataFromFile("Data/"+filename))
|
||||||
})}
|
})}
|
||||||
|
|
||||||
// index creates an HTTP handler that serves the main page with data from the database.
|
// index creates an HTTP handler that serves the main page with data from the database.
|
||||||
|
45
packages.go
45
packages.go
@@ -3,9 +3,10 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"regexp"
|
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"regexp"
|
||||||
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -65,21 +66,55 @@ type DownloadElements struct {
|
|||||||
// Printer struct is an empty struct. Its purpose is not clear from the provided code.
|
// Printer struct is an empty struct. Its purpose is not clear from the provided code.
|
||||||
type Printer struct{}
|
type Printer struct{}
|
||||||
|
|
||||||
|
func getDataFromFile(path string) map[string]string {
|
||||||
|
log.Println(regexp.MustCompile(`\.\w+$`).FindString(path))
|
||||||
|
switch extention := regexp.MustCompile(`\.\w+$`).FindString(path); extention {
|
||||||
|
case ".exe":
|
||||||
|
return getParamsFromExif(path)
|
||||||
|
|
||||||
|
case ".msi":
|
||||||
|
return getParamsFromMsi(path)
|
||||||
|
}
|
||||||
|
return make(map[string]string)
|
||||||
|
}
|
||||||
|
|
||||||
// getParamsFromExif extracts EXIF parameters from a file at the given path using the exiftool command.
|
// getParamsFromExif extracts EXIF parameters from a file at the given path using the exiftool command.
|
||||||
// It returns a map where the keys are the EXIF parameter names and the values are the corresponding EXIF parameter values.
|
// It returns a map where the keys are the EXIF parameter names and the values are the corresponding EXIF parameter values.
|
||||||
func getParamsFromExif(path string) map[string]string {
|
func getParamsFromExif(path string) map[string]string {
|
||||||
exiftool := os.Getenv("exiftool")
|
exiftool := os.Getenv("exiftool")
|
||||||
e, _ := exec.Command(exiftool, "-f", path).Output()
|
e, _ := exec.Command(exiftool, "-f", path).Output()
|
||||||
|
return splitData(e)
|
||||||
|
}
|
||||||
|
func splitData(commandOutput []byte) map[string]string {
|
||||||
tags := make(map[string]string)
|
tags := make(map[string]string)
|
||||||
spliter := regexp.MustCompile(`\r?\n`)
|
spliter := regexp.MustCompile(`\r?\n`)
|
||||||
crop:=spliter.Split(string(e),-1)
|
crop := spliter.Split(string(commandOutput), -1)
|
||||||
head := regexp.MustCompile(`\s+:\s`)
|
head := regexp.MustCompile(`\s+(:\s)?`)
|
||||||
for _, c := range crop {
|
for _, c := range crop {
|
||||||
if(len(c)>1){
|
if len(c) > 1 {
|
||||||
data := head.Split(c, -1)
|
data := head.Split(c, -1)
|
||||||
log.Println("My Raw Data: ", c)
|
log.Println("My Raw Data: ", c)
|
||||||
tags[data[0]]=data[1]}
|
tags[data[0]] = data[1]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
log.Println(tags)
|
log.Println(tags)
|
||||||
return tags
|
return tags
|
||||||
}
|
}
|
||||||
|
func getParamsFromMsi(path string) map[string]string {
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
|
||||||
|
// orca :=os.Getenv("orca")
|
||||||
|
// err:=os.Mkdir("tmpdir/extract", os.ModeAppend)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Println("There was an error", err)
|
||||||
|
// }
|
||||||
|
// run:=exec.Command(orca, "-q", "-s", path, "-x", "tmpdir/extract")
|
||||||
|
// run.
|
||||||
|
} else {
|
||||||
|
msiinfo := os.Getenv("msiinfo")
|
||||||
|
e, _ := exec.Command(msiinfo, "export", path, "Property").Output()
|
||||||
|
return splitData(e)
|
||||||
|
}
|
||||||
|
return make(map[string]string)
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -237,3 +237,16 @@ input[type="file"] {
|
|||||||
background-color: #6a568b;
|
background-color: #6a568b;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
}
|
}
|
||||||
|
.form-container {
|
||||||
|
position: fixed; /* Fix position on the screen */
|
||||||
|
top: 0; /* Position at the top */
|
||||||
|
left: 0; /* Position at the left */
|
||||||
|
width: 100%; /* Full width */
|
||||||
|
height: 100%; /* Full height */
|
||||||
|
background-color: rgba(0, 0, 0, 0.8); /* Semi-transparent background */
|
||||||
|
z-index: 9999; /* Make it appear above other elements */
|
||||||
|
overflow: auto; /* Enable scroll if needed */
|
||||||
|
display: none; /* Center the form vertically */
|
||||||
|
align-items: center; /* Center the form vertically */
|
||||||
|
justify-content: center; /* Center the form horizontally */
|
||||||
|
}
|
@@ -117,3 +117,7 @@ function scriptPackage(rowid, extracommand, line){
|
|||||||
function convertHtml(dt){
|
function convertHtml(dt){
|
||||||
return dt.replace("")
|
return dt.replace("")
|
||||||
}
|
}
|
||||||
|
function showContainer(className){
|
||||||
|
classShow = document.getElementsByClassName(className)[0];
|
||||||
|
classShow.style.display = classShow.style.display=="flex"?"none":"flex";
|
||||||
|
}
|
Reference in New Issue
Block a user