Compare commits
2 Commits
5ea944695d
...
c1edf992f9
Author | SHA1 | Date |
---|---|---|
diff | c1edf992f9 | |
diff | 0b02918dfb |
27
main.go
27
main.go
|
@ -86,6 +86,8 @@ func getIP() (string, error) {
|
|||
return localAddr.IP.String(), nil
|
||||
}
|
||||
|
||||
var done = make(chan struct{})
|
||||
|
||||
func main() {
|
||||
conf, err := getConfig()
|
||||
if err != nil {
|
||||
|
@ -122,6 +124,12 @@ func main() {
|
|||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Wait for the server to finish any transfers, up to 3 seconds
|
||||
select {
|
||||
case <-done:
|
||||
case <-time.After(3*time.Second):
|
||||
}
|
||||
}
|
||||
|
||||
func setupDownload(server *http.Server, conf Config) {
|
||||
|
@ -133,7 +141,7 @@ func setupDownload(server *http.Server, conf Config) {
|
|||
|
||||
downloads--
|
||||
if downloads == 0 {
|
||||
server.Shutdown(context.Background())
|
||||
go shutdown(server)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -155,7 +163,7 @@ var baseHeader = `<!DOCTYPE html>
|
|||
var baseFooter = `</body>
|
||||
</html>`
|
||||
|
||||
var uploadTemplate = `{{template "BaseHeader" "RUFF Upload Form"}}
|
||||
var uploadTemplate = `{{template "BaseHeader" "RUFF - Upload Form"}}
|
||||
<form enctype="multipart/form-data" action="/" method="post">
|
||||
<label for="file">Select a file for upload:</label>
|
||||
<input type="file" name="file">
|
||||
|
@ -163,16 +171,21 @@ var uploadTemplate = `{{template "BaseHeader" "RUFF Upload Form"}}
|
|||
</form>
|
||||
{{template "BaseFooter"}}`
|
||||
|
||||
var errorTemplate = `{{template "BaseHeader" "Upload Error"}}
|
||||
var errorTemplate = `{{template "BaseHeader" "RUFF - Upload Error"}}
|
||||
<p>{{.}}</p>
|
||||
<p><a href="/">Go back</a></p>
|
||||
{{template "BaseFooter"}}`
|
||||
|
||||
var messageTemplate = `{{template "BaseHeader" (print "RUFF - " .)}}
|
||||
<p>{{.}}</p>
|
||||
{{template "BaseFooter"}}`
|
||||
|
||||
func setupUpload(server *http.Server, conf Config) {
|
||||
tpl := template.Must(template.New("BaseHeader").Parse(baseHeader))
|
||||
template.Must(tpl.New("BaseFooter").Parse(baseFooter))
|
||||
template.Must(tpl.New("UploadForm").Parse(uploadTemplate))
|
||||
template.Must(tpl.New("UploadError").Parse(errorTemplate))
|
||||
template.Must(tpl.New("UploadMessage").Parse(messageTemplate))
|
||||
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
// Upload form
|
||||
|
@ -206,5 +219,13 @@ func setupUpload(server *http.Server, conf Config) {
|
|||
tpl.ExecuteTemplate(w, "UploadError", err)
|
||||
return
|
||||
}
|
||||
|
||||
tpl.ExecuteTemplate(w, "UploadMessage", "Upload successful!")
|
||||
go shutdown(server)
|
||||
})
|
||||
}
|
||||
|
||||
func shutdown(server *http.Server) {
|
||||
server.Shutdown(context.Background())
|
||||
done <- struct{}{}
|
||||
}
|
Loading…
Reference in New Issue