config.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package main
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "path/filepath"
  8. "strings"
  9. )
  10. type Record struct {
  11. ProxyType string
  12. Rootname string
  13. ProxyTarget string
  14. UseTLS bool
  15. }
  16. func SaveReverseProxyConfig(ptype string, rootname string, proxyTarget string, useTLS bool) error {
  17. os.MkdirAll("conf", 0775)
  18. filename := getFilenameFromRootName(rootname)
  19. //Generate record
  20. thisRecord := Record{
  21. ProxyType: ptype,
  22. Rootname: rootname,
  23. ProxyTarget: proxyTarget,
  24. UseTLS: useTLS,
  25. }
  26. //Write to file
  27. js, _ := json.MarshalIndent(thisRecord, "", " ")
  28. return ioutil.WriteFile(filepath.Join("conf", filename), js, 0775)
  29. }
  30. func RemoveReverseProxyConfig(rootname string) error {
  31. filename := getFilenameFromRootName(rootname)
  32. removePendingFile := strings.ReplaceAll(filepath.Join("conf", filename), "\\", "/")
  33. log.Println("Config Removed: ", removePendingFile)
  34. if fileExists(removePendingFile) {
  35. err := os.Remove(removePendingFile)
  36. if err != nil {
  37. log.Println(err.Error())
  38. return err
  39. }
  40. }
  41. //File already gone
  42. return nil
  43. }
  44. //Return ptype, rootname and proxyTarget, error if any
  45. func LoadReverseProxyConfig(filename string) (*Record, error) {
  46. thisRecord := Record{}
  47. configContent, err := ioutil.ReadFile(filename)
  48. if err != nil {
  49. return &thisRecord, err
  50. }
  51. //Unmarshal the content into config
  52. err = json.Unmarshal(configContent, &thisRecord)
  53. if err != nil {
  54. return &thisRecord, err
  55. }
  56. //Return it
  57. return &thisRecord, nil
  58. }
  59. func getFilenameFromRootName(rootname string) string {
  60. //Generate a filename for this rootname
  61. filename := strings.ReplaceAll(rootname, ".", "_")
  62. filename = strings.ReplaceAll(filename, "/", "-")
  63. filename = filename + ".config"
  64. return filename
  65. }