link_base.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package handler
  2. import (
  3. "encoding/xml"
  4. "log"
  5. "net/http"
  6. "os/exec"
  7. )
  8. const BufferSize = 2048
  9. type ClientRequest struct {
  10. XMLName xml.Name `xml:"config-auth"`
  11. Client string `xml:"client,attr"` // 一般都是 vpn
  12. Type string `xml:"type,attr"` // 请求类型 init logout auth-reply
  13. AggregateAuthVersion string `xml:"aggregate-auth-version,attr"` // 一般都是 2
  14. Version string `xml:"version"` // 客户端版本号
  15. GroupAccess string `xml:"group-access"` // 请求的地址
  16. GroupSelect string `xml:"group-select"` // 选择的组名
  17. SessionId string `xml:"session-id"`
  18. SessionToken string `xml:"session-token"`
  19. Auth auth `xml:"auth"`
  20. DeviceId deviceId `xml:"device-id"`
  21. MacAddressList macAddressList `xml:"mac-address-list"`
  22. }
  23. type auth struct {
  24. Username string `xml:"username"`
  25. Password string `xml:"password"`
  26. SecondaryPassword string `xml:"secondary_password"`
  27. }
  28. type deviceId struct {
  29. ComputerName string `xml:"computer-name,attr"`
  30. DeviceType string `xml:"device-type,attr"`
  31. PlatformVersion string `xml:"platform-version,attr"`
  32. UniqueId string `xml:"unique-id,attr"`
  33. UniqueIdGlobal string `xml:"unique-id-global,attr"`
  34. }
  35. type macAddressList struct {
  36. MacAddress string `xml:"mac-address"`
  37. }
  38. func setCommonHeader(w http.ResponseWriter) {
  39. // Content-Length Date 默认已经存在
  40. w.Header().Set("Server", "AnyLink")
  41. w.Header().Set("Content-Type", "text/html; charset=utf-8")
  42. w.Header().Set("Cache-Control", "no-store,no-cache")
  43. w.Header().Set("Pragma", "no-cache")
  44. w.Header().Set("Transfer-Encoding", "chunked")
  45. w.Header().Set("Connection", "keep-alive")
  46. w.Header().Set("X-Frame-Options", "deny")
  47. w.Header().Set("X-Content-Type-Options", "nosniff")
  48. w.Header().Set("Content-Security-Policy", "default-src 'none'")
  49. w.Header().Set("X-Permitted-Cross-Domain-Policies", "none")
  50. w.Header().Set("Referrer-Policy", "no-referrer")
  51. w.Header().Set("Clear-Site-Data", "cache,cookies,storage")
  52. w.Header().Set("Cross-Origin-Embedder-Policy", "require-corp")
  53. w.Header().Set("Cross-Origin-Opener-Policy", "same-origin")
  54. w.Header().Set("Cross-Origin-Resource-Policy", "same-origin")
  55. w.Header().Set("X-XSS-Protection", "0")
  56. w.Header().Set("X-Aggregate-Auth", "1")
  57. w.Header().Set("Strict-Transport-Security", "max-age=31536000; includeSubDomains")
  58. }
  59. func execCmd(cmdStrs []string) error {
  60. for _, cmdStr := range cmdStrs {
  61. cmd := exec.Command("sh", "-c", cmdStr)
  62. b, err := cmd.CombinedOutput()
  63. if err != nil {
  64. log.Println(string(b))
  65. return err
  66. }
  67. }
  68. return nil
  69. }