diff --git a/.gitignore b/.gitignore
index 6b43255..5fdba2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@ Logs/
*.exe
progs.db
tmpdir/
-.vscode/
\ No newline at end of file
+.vscode/
+data/
\ No newline at end of file
diff --git a/html/uploadfile.html b/html/uploadfile.html
new file mode 100644
index 0000000..27c8ed6
--- /dev/null
+++ b/html/uploadfile.html
@@ -0,0 +1,14 @@
+{{define "body"}}
+
+
+
+{{end}}
\ No newline at end of file
diff --git a/main.go b/main.go
index 0603e01..dfd0006 100644
--- a/main.go
+++ b/main.go
@@ -6,13 +6,14 @@ import (
"database/sql"
"fmt"
"html/template"
+ "io"
"log"
"net/http"
"os"
"strings"
"time"
- _ "modernc.org/sqlite" // Importing SQLite driver for database interaction.
+ _ "modernc.org/sqlite" // Importing SQLite driver for database interaction.
)
// readHtml function reads an HTML file and applies a CSS template to it before sending it to the client.
@@ -213,6 +214,54 @@ func fullSearchPackagesDB(sqldb *sql.DB) []packages {
}
return pkgs
}
+func uploadFileForServer(sqldb *sql.DB, lang string) http.Handler{
+ return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
+ pageDataFromDatabase := elements{
+ Title: getMsgFromDB(sqldb, "title", lang),
+ Header: getMsgFromDB(sqldb, "header", lang),
+ Help: getMsgFromDB(sqldb, "help", lang),
+ Packagename: getMsgFromDB(sqldb, "packagename", lang),
+ Packageversion: getMsgFromDB(sqldb, "packageversion", lang),
+ Allow: getMsgFromDB(sqldb, "allow", lang),
+ Warning: getMsgFromDB(sqldb, "warning", lang),
+ Explain: getMsgFromDB(sqldb, "explain", lang),
+ }
+ data := struct {
+ BodyClass string
+ ElementsData elements
+ Lang string
+ }{
+ ElementsData: pageDataFromDatabase,
+ BodyClass: "",
+ Lang: lang,
+
+ }
+ templates, err := template.ParseFiles("html/master.html", "html/uploadfile.html")
+ if err != nil {
+ log.Println(err)
+ }
+ err = templates.ExecuteTemplate(res, "master", data)
+ if err != nil {
+ log.Println(err)
+ }
+ // upload(res, req)
+ res.WriteHeader(http.StatusOK)
+ })
+}
+func upload() http.Handler {
+ return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request){
+ file, header, _ := req.FormFile("myFile")
+ req.ParseMultipartForm(10000000<<20)
+ defer file.Close()
+ filename := header.Filename
+ tempFile, _ :=os.CreateTemp("Data",header.Filename)
+ defer tempFile.Close()
+ fileBytes,_:=io.ReadAll(file)
+ tempFile.Write(fileBytes)
+ fn,_:=os.OpenFile("Data/"+filename, os.O_CREATE, 0666)
+ fn.Write(fileBytes)
+ fn.Close()
+})}
// index creates an HTTP handler that serves the main page with data from the database.
// sqldb: The database connection object.
@@ -235,23 +284,25 @@ func index(sqldb *sql.DB, lang string) http.Handler {
ElementsData elements
PackagesData []packages
Lang string
- }{
- ElementsData: pageDataFromDatabase,
- BodyClass: "",
- PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
- Lang: lang,
- }
- templates, err := template.ParseFiles("html/master.html", "html/main.html")
-
- if err != nil {
- log.Println(err)
- }
- err = templates.ExecuteTemplate(res, "master", data)
- if err != nil {
- log.Println(err)
- }
- res.WriteHeader(http.StatusOK)
- })
+ }{
+ ElementsData: pageDataFromDatabase,
+ BodyClass: "",
+ PackagesData: queryPacks(sqldb, &pageDataFromDatabase),
+ Lang: lang,
+ }
+ templates, err := template.ParseFiles("html/master.html", "html/main.html")
+
+ if err != nil {
+ log.Println(err)
+ }
+ err = templates.ExecuteTemplate(res, "master", data)
+ if err != nil {
+ log.Println(err)
+ }
+
+ res.WriteHeader(http.StatusOK)
+
+ })
}
@@ -276,6 +327,8 @@ func main() {
mux.Handle("/", index(db, "heb"))
mux.Handle("/en", index(db, "eng"))
mux.Handle("/stats", stats(db,"eng"))
+ mux.Handle("/up", uploadFileForServer(db,"eng"))
+ mux.Handle("/upload",upload())
addr := fmt.Sprintf(":%s", "12312")
server := http.Server{
Addr: addr,