From 4f82bf2baf68bf55853dec9079871ea596e9906c Mon Sep 17 00:00:00 2001 From: Ben Yanke Date: Sat, 28 Apr 2018 16:29:33 -0500 Subject: [PATCH] Still working on travis builds --- .travis.yml | 65 ++++++++++++++--- bindata.go | 20 +++--- configbackend.go | 3 +- {docker => scripts/docker}/default-config.cfg | 0 {docker => scripts/docker}/start.sh | 0 scripts/travis/runtest.sh | 4 ++ scripts/travis/test-config.cfg | 70 +++++++++++++++++++ 7 files changed, 141 insertions(+), 21 deletions(-) rename {docker => scripts/docker}/default-config.cfg (100%) rename {docker => scripts/docker}/start.sh (100%) create mode 100755 scripts/travis/runtest.sh create mode 100644 scripts/travis/test-config.cfg diff --git a/.travis.yml b/.travis.yml index 242bd21..a6814ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,62 @@ language: go go: - - 1.3.3 - - 1.4.2 - - 1.5.1 - - release - - tip + - 1.3.x # Test an old version, to be sure it works + - 1.9.x # last version + - 1.10.x # current version +# - tip # next release + - master # next release after that + +# Speed up git clones +git: + depth: 1 + +matrix: + # It's ok if our code fails on unstable development versions of Go. + allow_failures: + - go: master + + # Don't wait for tip tests to finish. Mark the test run green if the + # tests pass on the stable versions of Go. + fast_finish: true + + +# Anything in before_script that returns a nonzero exit code will +# flunk the build and immediately stop. It's sorta like having +# set -e enabled in bash. +before_script: + - GO_FILES=$(find . -iname '*.go' -type f | grep -v /vendor/) # All the .go files, excluding vendor/ + #- go get github.com/golang/lint/golint # Linter + #- go get honnef.co/go/tools/cmd/megacheck # Badass static analyzer/linter + # - go get github.com/fzipp/gocyclo + + +# Fetch dependencies + - go get -t ./... + script: - - go get -t ./... - - go build -o ./glauth glauth.go bindata.go ldapbackend.go webapi.go configbackend.go - - ./glauth -c "docker/default-config.cfg" + + - diff -u <(echo -n) <(gofmt -d ./) # Fail if a .go file hasn't been formatted with 'go fmt' + # - go test -v -race ./... # Run all the tests with the race detector enabled + # - go vet ./... # go vet is the official Go static analyzer + # - megacheck ./... # "go vet on steroids" + linter + # - gocyclo -over 19 $GO_FILES # forbid code with huge functions + # - golint -set_exit_status $(go list ./...) # one last linter + + + + # Unit tests + # - tbd - use 'go test' here when we have unit tests written. example command below. This will generate output for codecov + # - go test -race -coverprofile=coverage.txt -covermode=atomic + + # Full compile test + - go build -o ./glauth glauth.go bindata.go ldapbackend.go webapi.go configbackend.go + + # Integration test with compiled binary + # Need to extract this out into a shell script so that we can make LDAP queries then kill the daemon + # - ./glauth -c "docker/default-config.cfg" + + +# after_success: +# - bash <(curl -s https://codecov.io/bash) diff --git a/bindata.go b/bindata.go index 9912cc2..1ec8585 100644 --- a/bindata.go +++ b/bindata.go @@ -1,10 +1,10 @@ package main import ( - "bytes" - "compress/gzip" - "fmt" - "io" + "bytes" + "compress/gzip" + "fmt" + "io" ) func bindata_read(data []byte, name string) ([]byte, error) { @@ -47,7 +47,7 @@ func assets_glauth_css() ([]byte, error) { 0x33, 0x16, 0x49, 0x05, 0x9d, 0x5f, 0x52, 0x2b, 0xd4, 0x52, 0xaf, 0xff, 0xf8, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x91, 0x33, 0xcc, 0x6e, 0xee, 0x01, 0x00, 0x00, - }, + }, "assets/glauth.css", ) } @@ -94,7 +94,7 @@ func assets_glauth_js() ([]byte, error) { 0x43, 0xdd, 0xe0, 0xd3, 0x14, 0x3d, 0xc0, 0xfa, 0xc3, 0xe1, 0xd5, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x12, 0x43, 0xad, 0x6a, 0x05, 0x00, 0x00, - }, + }, "assets/glauth.js", ) } @@ -198,12 +198,11 @@ func assets_index_html() ([]byte, error) { 0x90, 0xb4, 0xee, 0x77, 0xcb, 0x26, 0x38, 0x89, 0x7d, 0x68, 0x93, 0xd8, 0x7f, 0x06, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x08, 0x9c, 0x44, 0x70, 0x17, 0x0f, 0x00, 0x00, - }, + }, "assets/index.html", ) } - // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. @@ -215,9 +214,8 @@ func Asset(name string) ([]byte, error) { } // _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string] func() ([]byte, error) { +var _bindata = map[string]func() ([]byte, error){ "assets/glauth.css": assets_glauth_css, - "assets/glauth.js": assets_glauth_js, + "assets/glauth.js": assets_glauth_js, "assets/index.html": assets_index_html, - } diff --git a/configbackend.go b/configbackend.go index 6f90c87..e7722d3 100644 --- a/configbackend.go +++ b/configbackend.go @@ -141,11 +141,10 @@ func (h configHandler) Search(bindDN string, searchReq ldap.SearchRequest, conn attrs = append(attrs, &ldap.EntryAttribute{"sn", []string{u.SN}}) } - attrs = append(attrs, &ldap.EntryAttribute{"ou", []string{h.getGroupName(u.PrimaryGroup)}}) attrs = append(attrs, &ldap.EntryAttribute{"uidNumber", []string{fmt.Sprintf("%d", u.UnixID)}}) - if (u.Disabled) { + if u.Disabled { attrs = append(attrs, &ldap.EntryAttribute{"accountStatus", []string{"inactive"}}) } else { attrs = append(attrs, &ldap.EntryAttribute{"accountStatus", []string{"active"}}) diff --git a/docker/default-config.cfg b/scripts/docker/default-config.cfg similarity index 100% rename from docker/default-config.cfg rename to scripts/docker/default-config.cfg diff --git a/docker/start.sh b/scripts/docker/start.sh similarity index 100% rename from docker/start.sh rename to scripts/docker/start.sh diff --git a/scripts/travis/runtest.sh b/scripts/travis/runtest.sh new file mode 100755 index 0000000..ca351e1 --- /dev/null +++ b/scripts/travis/runtest.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sudo apt-get update; +sudo apt-get install -y ldap-utils; diff --git a/scripts/travis/test-config.cfg b/scripts/travis/test-config.cfg new file mode 100644 index 0000000..a97572a --- /dev/null +++ b/scripts/travis/test-config.cfg @@ -0,0 +1,70 @@ +################# +# glauth.conf + +################# +# General configuration. +debug = true +#syslog = true + +################# +# The frontend section controls how clients connect to the proxy. +[frontend] + tls = false # enable TLS for production!! + listen = "localhost:3893" + cert = "cert.pem" + key = "key.pem" + +################# +# The backend section controls the data store. +[backend] + datastore = "config" + baseDN = "dc=glauth,dc=com" + +################# +# The users section contains a hardcoded list of valid users. +# to create a passSHA256: echo -n "mysecret" | openssl dgst -sha256 +[[users]] + name = "hackers" + unixid = 5001 + primarygroup = 5501 + passsha256 = "6478579e37aff45f013e14eeb30b3cc56c72ccdc310123bcdf53e0333e3f416a" # dogood + +# This user record shows all of the possible fields available +[[users]] + name = "johndoe" + givenname="John" + sn="Doe" + mail = "jdoe@example.com" + unixid = 5002 + primarygroup = 5501 + loginShell = "/bin/sh" + homeDir = "/root" + passsha256 = "6478579e37aff45f013e14eeb30b3cc56c72ccdc310123bcdf53e0333e3f416a" # dogood + sshkeys = ["ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA3UKCEllO2IZXgqNygiVb+dDLJJwVw3AJwV34t2jzR+/tUNVeJ9XddKpYQektNHsFmY93lJw5QDSbeH/mAC4KPoUM47EriINKEelRbyG4hC/ko/e2JWqEclPS9LP7GtqGmscXXo4JFkqnKw4TIRD52XI9n1syYM9Y8rJ88fjC/Lpn+01AB0paLVIfppJU35t0Ho9doHAEfEvcQA6tcm7FLJUvklAxc8WUbdziczbRV40KzDroIkXAZRjX7vXXhh/p7XBYnA0GO8oTa2VY4dTQSeDAUJSUxbzevbL0ll9Gi1uYaTDQyE5gbn2NfJSqq0OYA+3eyGtIVjFYZgi+txSuhw== rsa-key-20160209"] + + +[[users]] + name = "serviceuser" + unixid = 5003 + primarygroup = 5502 + passsha256 = "652c7dc687d98c9889304ed2e408c74b611e86a40caa51c4b43f1dd5913c5cd0" # mysecret + +################# +# The groups section contains a hardcoded list of valid users. +[[groups]] + name = "superheros" + unixid = 5501 + +[[groups]] + name = "svcaccts" + unixid = 5502 + +################# +# Enable and configure the optional REST API here. +[api] + enabled = true + tls = false # enable TLS for production!! + listen = "localhost:5555" + cert = "cert.pem" + key = "key.pem" +