67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"html"
|
||
|
"regexp"
|
||
|
"strings"
|
||
|
"os"
|
||
|
"io/ioutil"
|
||
|
"encoding/json"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
func getConfig() Config {
|
||
|
configPath := os.Getenv("MASTOGEM_CONFIG_PATH")
|
||
|
if configPath == "" {
|
||
|
log.Println("MASTOGEM_CONFIG_PATH was not set, using default settings")
|
||
|
|
||
|
config := Config{
|
||
|
Listen: "127.0.0.1:1965",
|
||
|
CertPath: "certs/cert.pem",
|
||
|
KeyPath: "certs/key.rsa",
|
||
|
BaseURL: "https://mamot.fr",
|
||
|
Title: "MastoGem",
|
||
|
HomeMessage: "Welcome on MastoGem, this is a Mastodon proxy for Gemini. You can view the last 20 toots of a Mastodon account by providing its ID.",
|
||
|
}
|
||
|
|
||
|
return config
|
||
|
}
|
||
|
|
||
|
configFile, err := ioutil.ReadFile(configPath)
|
||
|
if err != nil {
|
||
|
log.Fatalln("config file: %s", err)
|
||
|
}
|
||
|
|
||
|
var config Config
|
||
|
|
||
|
json.Unmarshal(configFile, &config)
|
||
|
|
||
|
return config
|
||
|
}
|
||
|
|
||
|
func removeHTMLTags(content string) string {
|
||
|
text := strings.ReplaceAll(content, "<p>", "")
|
||
|
text = strings.ReplaceAll(text, "</p>", "\n\n")
|
||
|
text = strings.ReplaceAll(text, "<br />", "\n")
|
||
|
text = strings.ReplaceAll(text, "<br>", "\n")
|
||
|
text = strings.ReplaceAll(text, "</a>", "")
|
||
|
text = strings.ReplaceAll(text, "</span>", "")
|
||
|
regexString := "<a( [^>]*)?>"
|
||
|
regex, err := regexp.Compile(regexString)
|
||
|
if err != nil {
|
||
|
log.Println("regex: %s", err)
|
||
|
return ""
|
||
|
}
|
||
|
text = regex.ReplaceAllLiteralString(text, "")
|
||
|
regexString = "<span( [^>]*)?>"
|
||
|
regex, err = regexp.Compile(regexString)
|
||
|
if err != nil {
|
||
|
log.Println("regex: %s", err)
|
||
|
return ""
|
||
|
}
|
||
|
text = regex.ReplaceAllLiteralString(text, "")
|
||
|
text = html.UnescapeString(text)
|
||
|
|
||
|
return text
|
||
|
}
|