config.go 1.7 KB

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