39 lines
917 B
Go
39 lines
917 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/base64"
|
||
|
"fmt"
|
||
|
"html/template"
|
||
|
)
|
||
|
|
||
|
// Function to dynamically execute template and return results
|
||
|
func dynamicTemplate(name string, data interface{}) (template.HTML, error) {
|
||
|
// Create new buffer
|
||
|
buf := &bytes.Buffer{}
|
||
|
// Execute template writing to buffer with provided data
|
||
|
err := templates[name].Execute(buf, data)
|
||
|
if err != nil {
|
||
|
return "", nil
|
||
|
}
|
||
|
// Return results of template execution
|
||
|
return template.HTML(buf.String()), nil
|
||
|
}
|
||
|
|
||
|
// Wrap URL with proxy
|
||
|
func wrapProxy(url string) string {
|
||
|
// Encode URL with base64
|
||
|
b64url := base64.StdEncoding.EncodeToString([]byte(url))
|
||
|
// Return /proxy/{url}
|
||
|
return fmt.Sprint("/proxy/", b64url)
|
||
|
}
|
||
|
|
||
|
// Function to get template function map
|
||
|
func getFuncMap() template.FuncMap {
|
||
|
// Return function map with template functions
|
||
|
return template.FuncMap{
|
||
|
"dyn_template": dynamicTemplate,
|
||
|
"proxy": wrapProxy,
|
||
|
}
|
||
|
}
|