client.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package goStrongswanVici
  2. import (
  3. "net"
  4. )
  5. type ClientOptions struct {
  6. Network string
  7. Addr string
  8. // Dialer creates new network connection and has priority over
  9. // Network and Addr options.
  10. Dialer func() (net.Conn, error)
  11. }
  12. type Client struct {
  13. o ClientOptions
  14. }
  15. func NewClient(options ClientOptions) (client *Client) {
  16. if options.Dialer == nil {
  17. options.Dialer = func() (net.Conn, error) {
  18. return net.Dial(options.Network, options.Addr)
  19. }
  20. }
  21. return &Client{
  22. o: options,
  23. }
  24. }
  25. func NewClientFromDefaultSocket() (client *Client) {
  26. return NewClient(ClientOptions{
  27. Network: "unix",
  28. Addr: "/var/run/charon.vici",
  29. })
  30. }
  31. func (c *Client) NewConn() (conn *ClientConn, err error) {
  32. conn1, err := c.o.Dialer()
  33. if err != nil {
  34. return nil, err
  35. }
  36. return NewClientConn(conn1), nil
  37. }
  38. func (c *Client) ListSas(ike string, ike_id string) (sas []map[string]IkeSa, err error) {
  39. conn, err := c.NewConn()
  40. if err != nil {
  41. return nil, err
  42. }
  43. defer conn.Close()
  44. return conn.ListSas(ike, ike_id)
  45. }
  46. func (c *Client) ListAllVpnConnInfo() (list []VpnConnInfo, err error) {
  47. conn, err := c.NewConn()
  48. if err != nil {
  49. return nil, err
  50. }
  51. defer conn.Close()
  52. return conn.ListAllVpnConnInfo()
  53. }
  54. func (c *Client) Version() (out *Version, err error) {
  55. conn, err := c.NewConn()
  56. if err != nil {
  57. return nil, err
  58. }
  59. defer conn.Close()
  60. return conn.Version()
  61. }
  62. func (c *Client) Terminate(r *TerminateRequest) (err error) {
  63. conn, err := c.NewConn()
  64. if err != nil {
  65. return err
  66. }
  67. defer conn.Close()
  68. return conn.Terminate(r)
  69. }