Skip to content

Commit

Permalink
Add basic TLS support (#10)
Browse files Browse the repository at this point in the history
* Add basic TLS support

* Fix package naming after the repo was moved
  • Loading branch information
adcharre authored Aug 31, 2022
1 parent a8f8940 commit 8a150a0
Show file tree
Hide file tree
Showing 13 changed files with 48 additions and 36 deletions.
18 changes: 11 additions & 7 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,20 @@ import (

"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/terrariumcloud/terrarium/api/discovery"
"github.com/terrariumcloud/terrarium/api/modules"
"github.com/terrariumcloud/terrarium/internal/endpoints"
"github.com/terrariumcloud/terrarium/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium/pkg/registry/responses"
"github.com/terrariumcloud/terrarium-lite/api/discovery"
"github.com/terrariumcloud/terrarium-lite/api/modules"
"github.com/terrariumcloud/terrarium-lite/internal/endpoints"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/responses"
)

// Terrarium is a struct which contains methods for initialising the private Terraform Registry
// The Terrarium struct is a complete implementation of the product fully instantiated. An instance
// of this struct is created by the CLI when `terrarium serve modules` is called from the command line
type Terrarium struct {
Port int
CertFile string
KeyFile string
DataStore drivers.TerrariumDatabaseDriver
FileStore drivers.TerrariumStorageDriver
ModuleAPI endpoints.ModuleAPIInterface
Expand All @@ -39,7 +41,7 @@ func (t *Terrarium) Serve() error {
bindAddress := fmt.Sprintf(":%d", t.Port)
t.Init()
log.Println(fmt.Sprintf("Listening on %s", bindAddress))
return http.ListenAndServe(bindAddress, handlers.CombinedLoggingHandler(os.Stdout, t.Router))
return http.ListenAndServeTLS(bindAddress, t.CertFile, t.KeyFile, handlers.CombinedLoggingHandler(os.Stdout, t.Router))
}

// Init calls the various API sub packages to setup routers for endpoints. This is a central function that wires all API routers together
Expand All @@ -51,9 +53,11 @@ func (t *Terrarium) Init() {
}

// NewTerrarium creates a new Terrarium instance setting up the required API routes
func NewTerrarium(port int, driver drivers.TerrariumDatabaseDriver, storageDriver drivers.TerrariumStorageDriver, responder responses.APIResponseWriter, errorer responses.APIErrorWriter) *Terrarium {
func NewTerrarium(port int, certFile string, keyFile string, driver drivers.TerrariumDatabaseDriver, storageDriver drivers.TerrariumStorageDriver, responder responses.APIResponseWriter, errorer responses.APIErrorWriter) *Terrarium {
return &Terrarium{
Port: port,
CertFile: certFile,
KeyFile: keyFile,
DataStore: driver,
FileStore: storageDriver,
Router: mux.NewRouter(),
Expand Down
4 changes: 2 additions & 2 deletions api/discovery/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
package discovery

import (
"github.com/terrariumcloud/terrarium/pkg/registry/data/discovery"
"github.com/terrariumcloud/terrarium/pkg/registry/responses"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/discovery"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/responses"
)

// NewDiscoveryAPI Creates a new instance of the discovery API that defines a static well known route pointing
Expand Down
4 changes: 2 additions & 2 deletions api/discovery/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package discovery
import (
"net/http"

"github.com/terrariumcloud/terrarium/pkg/registry/data/discovery"
"github.com/terrariumcloud/terrarium/pkg/registry/responses"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/discovery"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/responses"
)

// DiscoveryAPI is a struct implementing the handlers for the DiscoveryAPIInterface from the endpoints package in Terrarium
Expand Down
8 changes: 4 additions & 4 deletions api/modules/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import (
"net/http"

"github.com/gorilla/mux"
"github.com/terrariumcloud/terrarium/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium/pkg/registry/responses"
"github.com/terrariumcloud/terrarium/pkg/registry/stores"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/responses"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/stores"
)

// ModuleAPI is a struct implementing the handlers for the ModuleAPIInterface from the endpoints package in Terrarium
Expand Down
6 changes: 3 additions & 3 deletions api/modules/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
"strconv"

"github.com/gorilla/mux"
"github.com/terrariumcloud/terrarium/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium/pkg/registry/responses"
"github.com/terrariumcloud/terrarium/pkg/registry/stores"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/drivers"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/responses"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/stores"
)

// extractLimitAndOffset is a convience method to extract pagination and limit values passed
Expand Down
26 changes: 19 additions & 7 deletions cmd/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@ package cmd
import (
"log"

"github.com/terrariumcloud/terrarium/api"
"github.com/terrariumcloud/terrarium-lite/api"

"github.com/spf13/cobra"
fs_db "github.com/terrariumcloud/terrarium/internal/database/filesystem"
"github.com/terrariumcloud/terrarium/internal/responder"
fs_storage "github.com/terrariumcloud/terrarium/internal/storage/filesystem"
"github.com/terrariumcloud/terrarium/pkg/registry/drivers"
fs_db "github.com/terrariumcloud/terrarium-lite/internal/database/filesystem"
"github.com/terrariumcloud/terrarium-lite/internal/responder"
fs_storage "github.com/terrariumcloud/terrarium-lite/internal/storage/filesystem"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/drivers"
)

var storageFilesystemRootPath string
var certFile string
var keyFile string

// moduleCmd represents the module command
var moduleCmd = &cobra.Command{
Expand All @@ -25,7 +27,15 @@ var moduleCmd = &cobra.Command{
var err error

if storageFilesystemRootPath == "" {
log.Fatal("Error: No root path specified")
log.Fatal("ERROR: No root path specified")
}

if certFile == "" {
log.Fatal("ERROR: No certificate file specified")
}

if keyFile == "" {
log.Fatal("ERROR: No private key file specified")
}

driver, err = fs_db.New(storageFilesystemRootPath)
Expand All @@ -38,7 +48,7 @@ var moduleCmd = &cobra.Command{
log.Fatalf("Error initialising filesystem storage backend - %s", err.Error())
}

terrarium := api.NewTerrarium(443, driver, storage, &responder.TerrariumAPIResponseWriter{}, &responder.TerrariumAPIErrorHandler{})
terrarium := api.NewTerrarium(443, certFile, keyFile, driver, storage, &responder.TerrariumAPIResponseWriter{}, &responder.TerrariumAPIErrorHandler{})
err = terrarium.Serve()
if err != nil {
log.Fatal(err)
Expand All @@ -49,4 +59,6 @@ var moduleCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(moduleCmd)
moduleCmd.Flags().StringVarP(&storageFilesystemRootPath, "filesystem-storage-root", "", "/terrarium/store", "Path to the storage for the filesystem storage")
moduleCmd.Flags().StringVarP(&certFile, "certificate-file", "", "", "Path to the SSL certificate file")
moduleCmd.Flags().StringVarP(&keyFile, "key-file", "", "", "Path to the SSL private key file")
}
4 changes: 0 additions & 4 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ func init() {
// will be global for your application.

rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.terrarium.yaml)")

// Cobra also supports local flags, which will only run
// when this action is called directly.
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

// initConfig reads in config file and ENV variables if set.
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/terrariumcloud/terrarium
module github.com/terrariumcloud/terrarium-lite

go 1.17

Expand Down
4 changes: 2 additions & 2 deletions internal/database/filesystem/db_adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package filesystem
import (
"context"
"fmt"
"github.com/terrariumcloud/terrarium/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium/pkg/registry/stores"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/stores"
"log"
"path/filepath"
"strings"
Expand Down
2 changes: 1 addition & 1 deletion internal/database/filesystem/modules.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package filesystem

import (
"errors"
"github.com/terrariumcloud/terrarium/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/modules"
)

// fsModuleBackend is a struct that implements Mongo operations for Modules
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ limitations under the License.
*/
package main

import "github.com/terrariumcloud/terrarium/cmd"
import "github.com/terrariumcloud/terrarium-lite/cmd"

func main() {
cmd.Execute()
Expand Down
2 changes: 1 addition & 1 deletion pkg/registry/drivers/drivers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ package drivers
import (
"context"

"github.com/terrariumcloud/terrarium/pkg/registry/stores"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/stores"
)

type TerrariumDatabaseDriver interface {
Expand Down
2 changes: 1 addition & 1 deletion pkg/registry/stores/stores.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package stores

import (
"github.com/terrariumcloud/terrarium/pkg/registry/data/modules"
"github.com/terrariumcloud/terrarium-lite/pkg/registry/data/modules"
)

type ModuleStore interface {
Expand Down

0 comments on commit 8a150a0

Please sign in to comment.