loadConn.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package goStrongswanVici
  2. import (
  3. "fmt"
  4. )
  5. type Connection struct {
  6. ConnConf map[string]IKEConf `json:"connections"`
  7. }
  8. type IKEConf struct {
  9. LocalAddrs []string `json:"local_addrs"`
  10. RemoteAddrs []string `json:"remote_addrs,omitempty"`
  11. Proposals []string `json:"proposals,omitempty"`
  12. Version string `json:"version"` //1 for ikev1, 0 for ikev1 & ikev2
  13. Encap string `json:"encap"` //yes,no
  14. KeyingTries string `json:"keyingtries"`
  15. RekeyTime string `json:"rekey_time"`
  16. DPDDelay string `json:"dpd_delay,omitempty"`
  17. LocalAuth AuthConf `json:"local"`
  18. RemoteAuth AuthConf `json:"remote"`
  19. Pools []string `json:"pools,omitempty"`
  20. Children map[string]ChildSAConf `json:"children"`
  21. }
  22. type AuthConf struct {
  23. ID string `json:"id"`
  24. Round string `json:"round,omitempty"`
  25. AuthMethod string `json:"auth"` // (psk|pubkey)
  26. EAP_ID string `json:"eap_id,omitempty"`
  27. }
  28. type ChildSAConf struct {
  29. Local_ts []string `json:"local_ts"`
  30. Remote_ts []string `json:"remote_ts"`
  31. ESPProposals []string `json:"esp_proposals,omitempty"` //aes128-sha1_modp1024
  32. StartAction string `json:"start_action"` //none,trap,start
  33. CloseAction string `json:"close_action"`
  34. ReqID string `json:"reqid"`
  35. RekeyTime string `json:"rekey_time"`
  36. ReplayWindow string `json:"replay_window,omitempty"`
  37. Mode string `json:"mode"`
  38. InstallPolicy string `json:"policies"`
  39. UpDown string `json:"updown,omitempty"`
  40. Priority string `json:"priority,omitempty"`
  41. MarkIn string `json:"mark_in,omitempty"`
  42. MarkOut string `json:"mark_out,omitempty"`
  43. }
  44. func (c *ClientConn) LoadConn(conn *map[string]IKEConf) error {
  45. requestMap := &map[string]interface{}{}
  46. err := ConvertToGeneral(conn, requestMap)
  47. if err != nil {
  48. return fmt.Errorf("error creating request: %v", err)
  49. }
  50. msg, err := c.Request("load-conn", *requestMap)
  51. if msg["success"] != "yes" {
  52. return fmt.Errorf("unsuccessful LoadConn: %v", msg["errmsg"])
  53. }
  54. return nil
  55. }