Skip to content

Commit

Permalink
More work
Browse files Browse the repository at this point in the history
  • Loading branch information
danielingegneri committed Apr 1, 2021
1 parent d3e4a7f commit d0a7363
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 14 deletions.
4 changes: 2 additions & 2 deletions crypt/passwords.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
"io"
)

func Encrypt(src string, key []byte) (string, error) {
block, err := aes.NewCipher(key)
func Encrypt(src string, seed string) (string, error) {
block, err := aes.NewCipher([]byte(seed))
if err != nil {
return "", merry.Here(err)
}
Expand Down
19 changes: 19 additions & 0 deletions datasources/structs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package datasources

func NewDoc() DatasourceDoc {
return DatasourceDoc{Datasources: map[string]Datasource{}}
}

type DatasourceDoc struct {
Datasources map[string]Datasource
}

type Datasource struct {
Name string
Type string
Host string
Port uint16
Sid string
Username string
Password string
}
8 changes: 8 additions & 0 deletions example.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
datasources:
testdb:
type: oracle
host: server.com
port: 9999
sid: db1
username: username
password: password
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ go 1.16
require (
github.com/ansel1/merry v1.5.1 // indirect
github.com/ansel1/merry/v2 v2.0.0-beta.8 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
Expand Down
48 changes: 48 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,61 @@ package main

import (
"flag"
"git.jcu.edu.au/cft/cfds/crypt"
"git.jcu.edu.au/cft/cfds/datasources"
"gopkg.in/yaml.v2"
"io/ioutil"
"os"
"path/filepath"
"strings"
"text/template"
)

func main() {
seed := flag.String("seed", "", "Seed from seed.properties. 16 chars")
input := flag.String("input", "datasources.yml", "Input yaml data sources")
templateDir := "templates"
flag.Parse()
if *seed == "" || *input == "" {
flag.Usage()
}
inFile, err := os.Open(*input)
if err != nil {
panic(err)
}
d := yaml.NewDecoder(inFile)
doc := datasources.NewDoc()
err = d.Decode(doc)
_ = inFile.Close()

templates := map[string]*template.Template{}
if err != nil {
panic("Error reading datasource file " + err.Error())
}
for ds, data := range doc.Datasources {
data.Name = ds
data.Password, err = crypt.Encrypt(data.Password, *seed)
if err != nil {
panic("Could not encrypt password")
}
key := strings.ToLower(data.Type)
templateFile := filepath.Join(templateDir, key+".xml")
if _, ok := templates[key]; !ok {
// Load template
content, err := ioutil.ReadFile(templateFile)
if err != nil {
panic("Cannot load template " + templateFile)
}
templates[key], err = template.New(key).Parse(string(content))
if err != nil {
panic(err)
}
}
err = templates[key].Execute(os.Stdout, data)
if err != nil {
panic(err)
}
}

//tmpl := template.New("ds")
}
24 changes: 12 additions & 12 deletions templates/oracle.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<var name='{{name}}'>
<var name='{{.Name}}'>
<struct type='coldfusion.server.ConfigMap'>
<var name='alter'>
<boolean value='true'/>
Expand All @@ -16,7 +16,7 @@
<string>macromedia.jdbc.MacromediaDriver</string>
</var>
<var name='url'>
<string>jdbc:macromedia:oracle://{{host}}:{{port}};SID={{sid}};AuthenticationMethod=userIDPassword;sendStringParametersAsUnicode=false;querytimeout=0;MaxPooledStatements=100;jdbcbehavior=0</string>
<string>jdbc:macromedia:oracle://{{.Host}}:{{.Port}};SID={{.Sid}};AuthenticationMethod=userIDPassword;sendStringParametersAsUnicode=false;querytimeout=0;MaxPooledStatements=100;jdbcbehavior=0</string>
</var>
<var name='drop'>
<boolean value='true'/>
Expand Down Expand Up @@ -50,7 +50,7 @@
<boolean value='true'/>
</var>
<var name='username'>
<string>{{username}}</string>
<string>{{.Username}}</string>
</var>
<var name='update'>
<boolean value='true'/>
Expand Down Expand Up @@ -86,7 +86,7 @@
<boolean value='true'/>
</var>
<var name='NAME'>
<string>{{name}}</string>
<string>{{.Name}}</string>
</var>
<var name='login_timeout'>
<number>30.0</number>
Expand All @@ -95,7 +95,7 @@
<boolean value='true'/>
</var>
<var name='password'>
<string>{{password}</string>
<string>{{.Password}}</string>
</var>
<var name='ISJ2EE'>
<boolean value='false'/>
Expand All @@ -115,7 +115,7 @@
<string/>
</var>
<var name='_port'>
<number>{{port}}.0</number>
<number>{{.Port}}.0</number>
</var>
<var name='args'>
<string/>
Expand All @@ -130,7 +130,7 @@
<string/>
</var>
<var name='host'>
<string>{{host}}</string>
<string>{{.Host}}</string>
</var>
<var name='selectMethod'>
<string>direct</string>
Expand All @@ -144,13 +144,13 @@
<var name='CONNECTIONPROPS'>
<struct>
<var name='PORT'>
<string>{{port}}</string>
<string>{{.Port}}</string>
</var>
<var name='SENDSTRINGPARAMETERSASUNICODE'>
<string>false</string>
</var>
<var name='HOST'>
<string>{{host}}</string>
<string>{{.Host}}</string>
</var>
<var name='MAXPOOLEDSTATEMENTS'>
<string>100</string>
Expand All @@ -159,7 +159,7 @@
<string>0</string>
</var>
<var name='SID'>
<string>{{sid}}</string>
<string>{{.Sid}}</string>
</var>
</struct>
</var>
Expand All @@ -182,7 +182,7 @@
<string/>
</var>
<var name='port'>
<string>{{port}}</string>
<string>{{.Port}}</string>
</var>
<var name='spyLogFile'>
<string/>
Expand All @@ -194,7 +194,7 @@
<string>0</string>
</var>
<var name='SID'>
<string>{{sid}}</string>
<string>{{.Sid}}</string>
</var>
<var name='database'>
<string/>
Expand Down

0 comments on commit d0a7363

Please sign in to comment.