diff --git a/cmd/runmqdevserver/main.go b/cmd/runmqdevserver/main.go index 8546bc8..f1d8cd9 100644 --- a/cmd/runmqdevserver/main.go +++ b/cmd/runmqdevserver/main.go @@ -24,6 +24,7 @@ import ( "github.com/ibm-messaging/mq-container/internal/command" "github.com/ibm-messaging/mq-container/internal/logger" + "github.com/ibm-messaging/mq-container/internal/mqtemplate" "github.com/ibm-messaging/mq-container/internal/name" ) @@ -85,7 +86,7 @@ func configureLogger() error { func configureWeb(qmName string) error { out := "/etc/mqm/web/installations/Installation1/angular.persistence/admin.json" - return processTemplateFile("/etc/mqm/admin.json.tpl", out, map[string]string{"QueueManagerName": qmName}) + return mqtemplate.ProcessTemplateFile("/etc/mqm/admin.json.tpl", out, map[string]string{"QueueManagerName": qmName}, log) } func logTerminationf(format string, args ...interface{}) { diff --git a/cmd/runmqdevserver/mqsc.go b/cmd/runmqdevserver/mqsc.go index 77e3dfa..d2d111b 100644 --- a/cmd/runmqdevserver/mqsc.go +++ b/cmd/runmqdevserver/mqsc.go @@ -17,6 +17,8 @@ package main import ( "os" + + "github.com/ibm-messaging/mq-container/internal/mqtemplate" ) func updateMQSC(appPasswordRequired bool) error { @@ -30,7 +32,7 @@ func updateMQSC(appPasswordRequired bool) error { if os.Getenv("MQ_DEV") == "true" { const mqscTemplate string = mqsc + ".tpl" // Re-configure channel if app password not set - err := processTemplateFile(mqsc+".tpl", mqsc, map[string]string{"ChckClnt": checkClient}) + err := mqtemplate.ProcessTemplateFile(mqsc+".tpl", mqsc, map[string]string{"ChckClnt": checkClient}, log) if err != nil { return err } diff --git a/cmd/runmqdevserver/tls.go b/cmd/runmqdevserver/tls.go index 7e6ed2c..55681f5 100644 --- a/cmd/runmqdevserver/tls.go +++ b/cmd/runmqdevserver/tls.go @@ -21,20 +21,22 @@ import ( "path/filepath" "github.com/ibm-messaging/mq-container/internal/command" + "github.com/ibm-messaging/mq-container/internal/keystore" + "github.com/ibm-messaging/mq-container/internal/mqtemplate" ) -func configureWebTLS(cms *KeyStore) error { +func configureWebTLS(cms *keystore.KeyStore) error { dir := "/run/runmqdevserver/tls" - ks := NewJKSKeyStore(filepath.Join(dir, "key.jks"), cms.Password) - ts := NewJKSKeyStore(filepath.Join(dir, "trust.jks"), cms.Password) + ks := keystore.NewJKSKeyStore(filepath.Join(dir, "key.jks"), cms.Password) + ts := keystore.NewJKSKeyStore(filepath.Join(dir, "trust.jks"), cms.Password) log.Debug("Creating key store") - err := ks.Create() + err := ks.Create(log) if err != nil { return err } log.Debug("Creating trust store") - err = ts.Create() + err = ts.Create(log) if err != nil { return err } @@ -104,14 +106,14 @@ func configureTLS(qmName string, inputFile string, passPhrase string) error { } } - cms := NewCMSKeyStore(keyFile, passPhrase) + cms := keystore.NewCMSKeyStore(keyFile, passPhrase) - err = cms.Create() + err = cms.Create(log) if err != nil { return err } - err = cms.CreateStash() + err = cms.CreateStash(log) if err != nil { return err } @@ -145,11 +147,11 @@ func configureTLS(qmName string, inputFile string, passPhrase string) error { const mqsc string = "/etc/mqm/20-dev-tls.mqsc" const mqscTemplate string = mqsc + ".tpl" - err = processTemplateFile(mqscTemplate, mqsc, map[string]string{ + err = mqtemplate.ProcessTemplateFile(mqscTemplate, mqsc, map[string]string{ "SSLKeyR": filepath.Join(dir, "key"), "CertificateLabel": newLabel, "SSLCipherSpec": sslCipherSpec, - }) + }, log) if err != nil { return err } diff --git a/cmd/runmqdevserver/keystore.go b/internal/keystore/keystore.go similarity index 95% rename from cmd/runmqdevserver/keystore.go rename to internal/keystore/keystore.go index 87eac87..c48bd45 100644 --- a/cmd/runmqdevserver/keystore.go +++ b/internal/keystore/keystore.go @@ -13,7 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package main + +// Package keystore contains code to create and update keystores +package keystore import ( "bufio" @@ -23,6 +25,7 @@ import ( "strings" "github.com/ibm-messaging/mq-container/internal/command" + "github.com/ibm-messaging/mq-container/internal/logger" ) // KeyStore describes information about a keystore file @@ -54,7 +57,7 @@ func NewCMSKeyStore(filename, password string) *KeyStore { } // Create a key store, if it doesn't already exist -func (ks *KeyStore) Create() error { +func (ks *KeyStore) Create(log *logger.Logger) error { _, err := os.Stat(ks.Filename) if err == nil { // Keystore already exists so we should refresh it by deleting it. @@ -95,7 +98,7 @@ func (ks *KeyStore) Create() error { } // CreateStash creates a key stash, if it doesn't already exist -func (ks *KeyStore) CreateStash() error { +func (ks *KeyStore) CreateStash(log *logger.Logger) error { extension := filepath.Ext(ks.Filename) stashFile := ks.Filename[0:len(ks.Filename)-len(extension)] + ".sth" log.Debugf("TLS stash file: %v", stashFile) diff --git a/cmd/runmqdevserver/template.go b/internal/mqtemplate/mqtemplate.go similarity index 83% rename from cmd/runmqdevserver/template.go rename to internal/mqtemplate/mqtemplate.go index 7941633..28d80fc 100644 --- a/cmd/runmqdevserver/template.go +++ b/internal/mqtemplate/mqtemplate.go @@ -13,7 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package main + +// Package mqtemplate contains code to process template files +package mqtemplate import ( "os" @@ -21,12 +23,12 @@ import ( "text/template" "github.com/ibm-messaging/mq-container/internal/command" + "github.com/ibm-messaging/mq-container/internal/logger" ) -// processTemplateFile takes a Go templateFile, and processes it with the +// ProcessTemplateFile takes a Go templateFile, and processes it with the // supplied data, writing to destFile -func processTemplateFile(templateFile, destFile string, data interface{}) error { - // Re-configure channel if app password not set +func ProcessTemplateFile(templateFile, destFile string, data interface{}, log *logger.Logger) error { t, err := template.ParseFiles(templateFile) if err != nil { log.Error(err)