Handle special chars in exercice path

This commit is contained in:
nemunaire 2022-05-24 17:36:33 +02:00
commit 45a9240834
2 changed files with 6 additions and 3 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"log" "log"
"net/http" "net/http"
"net/url"
"path" "path"
"strconv" "strconv"
"strings" "strings"
@ -235,7 +236,7 @@ func BuildExercice(i Importer, theme *fic.Theme, epath string, dmap *map[int64]*
errs = append(errs, fmt.Sprintf("%q: resolution.mp4: The file is empty!", edir)) errs = append(errs, fmt.Sprintf("%q: resolution.mp4: The file is empty!", edir))
e.VideoURI = "" e.VideoURI = ""
} else { } else {
e.VideoURI = path.Join("$FILES$", e.VideoURI) e.VideoURI = strings.Replace(url.PathEscape(path.Join("$FILES$", e.VideoURI)), "%2F", "/", -1)
resolutionFound = true resolutionFound = true
} }

View file

@ -3,13 +3,15 @@ package main
import ( import (
"log" "log"
"net/http" "net/http"
"net/url"
"path" "path"
"strings"
"text/template" "text/template"
) )
var enableResolutionRoute bool = false var enableResolutionRoute bool = false
type ResolutionHandler struct {} type ResolutionHandler struct{}
const resolutiontpl = `<!DOCTYPE html> const resolutiontpl = `<!DOCTYPE html>
<html> <html>
@ -40,7 +42,7 @@ func (s ResolutionHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if resolutionTmpl, err := template.New("resolution").Parse(resolutiontpl); err != nil { if resolutionTmpl, err := template.New("resolution").Parse(resolutiontpl); err != nil {
log.Println("Cannot create template: ", err) log.Println("Cannot create template: ", err)
} else if err = resolutionTmpl.Execute(w, path.Join("/vids/", r.URL.Path)); err != nil { } else if err = resolutionTmpl.Execute(w, path.Join("/vids/", strings.Replace(url.PathEscape(r.URL.Path), "%2F", "/", -1))); err != nil {
log.Println("An error occurs during template execution: ", err) log.Println("An error occurs during template execution: ", err)
} }
} }