ssl.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package cliController
  2. import (
  3. "github.com/goinfinite/os/src/domain/valueObject"
  4. infraHelper "github.com/goinfinite/os/src/infra/helper"
  5. internalDbInfra "github.com/goinfinite/os/src/infra/internalDatabase"
  6. cliHelper "github.com/goinfinite/os/src/presentation/cli/helper"
  7. "github.com/goinfinite/os/src/presentation/liaison"
  8. tkPresentation "github.com/goinfinite/tk/src/presentation"
  9. "github.com/spf13/cobra"
  10. )
  11. type SslController struct {
  12. sslLiaison *liaison.SslLiaison
  13. }
  14. func NewSslController(
  15. persistentDbSvc *internalDbInfra.PersistentDatabaseService,
  16. transientDbSvc *internalDbInfra.TransientDatabaseService,
  17. trailDbSvc *internalDbInfra.TrailDatabaseService,
  18. ) *SslController {
  19. return &SslController{
  20. sslLiaison: liaison.NewSslLiaison(persistentDbSvc, transientDbSvc, trailDbSvc),
  21. }
  22. }
  23. func (controller *SslController) Read() *cobra.Command {
  24. var sslPairIdStr, virtualHostHostnameStr string
  25. var altNamesSlice []string
  26. var paginationPageNumberUint32 uint32
  27. var paginationItemsPerPageUint16 uint16
  28. var paginationSortByStr, paginationSortDirectionStr, paginationLastSeenIdStr string
  29. cmd := &cobra.Command{
  30. Use: "get",
  31. Short: "ReadSslPairs",
  32. Run: func(cmd *cobra.Command, args []string) {
  33. requestBody := map[string]interface{}{}
  34. if sslPairIdStr != "" {
  35. requestBody["sslPairId"] = sslPairIdStr
  36. }
  37. if virtualHostHostnameStr != "" {
  38. requestBody["virtualHostHostname"] = virtualHostHostnameStr
  39. }
  40. if len(altNamesSlice) > 0 {
  41. requestBody["altNames"] = altNamesSlice
  42. }
  43. requestBody = cliHelper.PaginationParser(
  44. requestBody, paginationPageNumberUint32, paginationItemsPerPageUint16,
  45. paginationSortByStr, paginationSortDirectionStr, paginationLastSeenIdStr,
  46. )
  47. cliHelper.LiaisonResponseWrapper(
  48. controller.sslLiaison.Read(requestBody),
  49. )
  50. },
  51. }
  52. cmd.Flags().StringVarP(&sslPairIdStr, "pairId", "i", "", "SslPairId")
  53. cmd.Flags().StringVarP(
  54. &virtualHostHostnameStr, "hostname", "n", "", "VirtualHostHostname",
  55. )
  56. cmd.Flags().StringSliceVarP(
  57. &altNamesSlice, "altNames", "a", []string{}, "AltNames",
  58. )
  59. cmd.Flags().Uint32VarP(
  60. &paginationPageNumberUint32, "page-number", "o", 0, "PageNumber (Pagination)",
  61. )
  62. cmd.Flags().Uint16VarP(
  63. &paginationItemsPerPageUint16, "items-per-page", "j", 0, "ItemsPerPage (Pagination)",
  64. )
  65. cmd.Flags().StringVarP(
  66. &paginationSortByStr, "sort-by", "y", "", "SortBy (Pagination)",
  67. )
  68. cmd.Flags().StringVarP(
  69. &paginationSortDirectionStr, "sort-direction", "x", "", "SortDirection (Pagination)",
  70. )
  71. cmd.Flags().StringVarP(
  72. &paginationLastSeenIdStr, "last-seen-id", "l", "", "LastSeenId (Pagination)",
  73. )
  74. return cmd
  75. }
  76. func (controller *SslController) Create() *cobra.Command {
  77. var virtualHostsSlice []string
  78. var certFilePathStr, keyFilePathStr string
  79. cmd := &cobra.Command{
  80. Use: "create",
  81. Short: "CreateSslPair",
  82. Run: func(cmd *cobra.Command, args []string) {
  83. requestBody := map[string]interface{}{}
  84. vhostHostnames := tkPresentation.StringSliceValueObjectParser(
  85. virtualHostsSlice, valueObject.NewFqdn,
  86. )
  87. requestBody["virtualHostsHostnames"] = vhostHostnames
  88. certFilePath, err := valueObject.NewUnixFilePath(certFilePathStr)
  89. if err != nil {
  90. cliHelper.ResponseWrapper(false, "InvalidCertificateFilePath")
  91. }
  92. certContentStr, err := infraHelper.ReadFileContent(certFilePath.String())
  93. if err != nil {
  94. cliHelper.ResponseWrapper(false, "OpenSslCertificateFileError")
  95. }
  96. requestBody["certificate"] = certContentStr
  97. privateKeyFilePath, err := valueObject.NewUnixFilePath(keyFilePathStr)
  98. if err != nil {
  99. cliHelper.ResponseWrapper(false, "InvalidSslPrivateKeyFilePath")
  100. }
  101. privateKeyContentStr, err := infraHelper.ReadFileContent(
  102. privateKeyFilePath.String(),
  103. )
  104. if err != nil {
  105. cliHelper.ResponseWrapper(false, "OpenSslPrivateKeyFileError")
  106. }
  107. requestBody["key"] = privateKeyContentStr
  108. cliHelper.LiaisonResponseWrapper(controller.sslLiaison.Create(requestBody))
  109. },
  110. }
  111. cmd.Flags().StringSliceVarP(
  112. &virtualHostsSlice, "virtualHosts", "v", []string{}, "VirtualHosts",
  113. )
  114. cmd.MarkFlagRequired("virtualHosts")
  115. cmd.Flags().StringVarP(
  116. &certFilePathStr, "certFilePath", "c", "", "SslCertificateFilePath",
  117. )
  118. cmd.MarkFlagRequired("certFilePath")
  119. cmd.Flags().StringVarP(&keyFilePathStr, "keyFilePath", "k", "", "SslKeyFilePath")
  120. cmd.MarkFlagRequired("keyFilePath")
  121. return cmd
  122. }
  123. func (controller *SslController) CreatePubliclyTrusted() *cobra.Command {
  124. var hostnameStr string
  125. cmd := &cobra.Command{
  126. Use: "create-trusted",
  127. Short: "CreatePubliclyTrusted",
  128. Run: func(cmd *cobra.Command, args []string) {
  129. requestBody := map[string]interface{}{
  130. "virtualHostHostname": hostnameStr,
  131. }
  132. cliHelper.LiaisonResponseWrapper(
  133. controller.sslLiaison.CreatePubliclyTrusted(requestBody, false),
  134. )
  135. },
  136. }
  137. cmd.Flags().StringVarP(&hostnameStr, "hostname", "n", "", "VirtualHostHostname")
  138. cmd.MarkFlagRequired("hostname")
  139. return cmd
  140. }
  141. func (controller *SslController) Delete() *cobra.Command {
  142. var sslPairIdStr string
  143. cmd := &cobra.Command{
  144. Use: "delete",
  145. Short: "DeleteSslPair",
  146. Run: func(cmd *cobra.Command, args []string) {
  147. requestBody := map[string]interface{}{
  148. "id": sslPairIdStr,
  149. }
  150. cliHelper.LiaisonResponseWrapper(controller.sslLiaison.Delete(requestBody))
  151. },
  152. }
  153. cmd.Flags().StringVarP(&sslPairIdStr, "pairId", "i", "", "SslPairId")
  154. cmd.MarkFlagRequired("pairId")
  155. return cmd
  156. }