config.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package main
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. )
  8. func copyConfigFile(src, dest string, goOS GoOS, format bool) error {
  9. content, err := ioutil.ReadFile(src)
  10. if err != nil {
  11. return err
  12. }
  13. if format {
  14. str := string(content)
  15. str = strings.Replace(str, "\r\n", "\n", -1)
  16. if goOS == Windows {
  17. str = strings.Replace(str, "\n", "\r\n", -1)
  18. }
  19. content = []byte(str)
  20. }
  21. return ioutil.WriteFile(dest, content, 0777)
  22. }
  23. func copyConfigFiles(dir string, goOS GoOS) error {
  24. GOPATH := os.Getenv("GOPATH")
  25. verifyDir := filepath.Join(GOPATH, "src", "v2ray.com", "core", "tools", "release", "verify")
  26. if err := copyConfigFile(filepath.Join(verifyDir, "official_release.asc"), filepath.Join(dir, "official_release.asc"), goOS, false); err != nil {
  27. return err
  28. }
  29. srcDir := filepath.Join(GOPATH, "src", "v2ray.com", "core", "tools", "release", "config")
  30. src := filepath.Join(srcDir, "vpoint_socks_vmess.json")
  31. dest := filepath.Join(dir, "vpoint_socks_vmess.json")
  32. if goOS == Windows || goOS == MacOS {
  33. dest = filepath.Join(dir, "config.json")
  34. }
  35. if err := copyConfigFile(src, dest, goOS, true); err != nil {
  36. return err
  37. }
  38. if goOS == Windows || goOS == MacOS {
  39. return nil
  40. }
  41. src = filepath.Join(srcDir, "vpoint_vmess_freedom.json")
  42. dest = filepath.Join(dir, "vpoint_vmess_freedom.json")
  43. if err := copyConfigFile(src, dest, goOS, true); err != nil {
  44. return err
  45. }
  46. if goOS == Linux {
  47. if err := os.MkdirAll(filepath.Join(dir, "systemv"), os.ModeDir|0777); err != nil {
  48. return err
  49. }
  50. src = filepath.Join(srcDir, "systemv", "v2ray")
  51. dest = filepath.Join(dir, "systemv", "v2ray")
  52. if err := copyConfigFile(src, dest, goOS, false); err != nil {
  53. return err
  54. }
  55. if err := os.MkdirAll(filepath.Join(dir, "systemd"), os.ModeDir|0777); err != nil {
  56. return err
  57. }
  58. src = filepath.Join(srcDir, "systemd", "v2ray.service")
  59. dest = filepath.Join(dir, "systemd", "v2ray.service")
  60. if err := copyConfigFile(src, dest, goOS, false); err != nil {
  61. return err
  62. }
  63. }
  64. return nil
  65. }