- Simplify build config
- Add TTY check to Makefiles for running Docker containers
- Update `fs2` to latest patch
- Update `sbt-assembly` plugin
- Update portal to remove chatty console
- Update portal scripts to add license header
- Update prepare-portal/Gruntfile to combine js and css where applicable
- Remove unused gentelella files from final portal artifact
- Add support for shared zones to quickstart/docker images
- Consolidate built artifacts in `artifacts/` to make eventual release easier
- Move quickstart from `utils` to `quickstart`
- Update quickstart script to add more container manipulation
- Move API functional tests back under `modules/api`
- Move build-related scripts to `build/` directory
- Add quickstart containers that can run the local version of the code
- Move away from using multiple images for "quickstart" and instead use a single "integration" image which provides all of the dependencies
- Update `docker-up-vinyldns.sh` to support the new `integration` image
- Update `remove-vinyl-containers.sh` to more cleanly.. clean up
- Update `verify.sh` to more reliably run `sbt` targets
- Update `build/docker/api/application.conf` to allow for overrides and default to the `vinyldns-integration` image
- Update `build/docker/portal/application.conf` to allow overrides and use `vinyldns-integration` image
- Update `build/docker/portal/Dockerfile` to use `vinyldns/build:base-build-portal` to reduce need to download dependencies over and over
- Update `api/assembly` sbt target to output to `assembly` rather than some deeply nested folder in `**/target`
- Update documentation to reflect changes
- Move `docker/` directory to `quickstart/` to reduce confusion with the `build/docker` directory
- Move `bin/` to `utils/` since the files are binaries
- Add `.dockerignore` to root
- Remove old, unused scripts in `bin/`
- Remove old images from release
- `test` and `test-bind` are no longer necessary. Test images are in a different repo now
- Remove Docker image creation from sbt build config - actual `Dockerfile` files are easier to deal with
- Update scripts in `bin/` to utilize new Docker images
- Update documentation for changes
- Update all Docker Compose and configuration to use exposed ports on the `integration` image (19001, 19002, etc) both inside the container and outside to make testing more consistent irrespective of method
- Update FlywayDB dependency to v8 to fix a weird logging bug that showed up during integration testing. See: https://github.com/flyway/flyway/issues/2270
- Add `test/api/integration` Docker container definition to be used for any integration testing
- Move `module/api/functional_test` to `test/api/functional` to centralize the "integration-type" external tests and testing utilities
- Move functional testing and integration image to the `test/` folder off of the root to reduce confusion with `bin/` and `docker/`
Support non ActiveDirectory LDAP
This PR has an optional local portal setup against this docker container - https://github.com/rroemhild/docker-test-openldap
The base modifications for LDAP was to change the actual authentication flow. Before, we only attempted to bind (setting up a DirContext and relying on an exception). We would test all of the search bases until we exhausted the list.
The new approach works differently:
1. First, login using the main service account
2. Second, do a lookup of the user
3. Finally, attempt to bind to that user's context directly using the password provided.
This works fine with both AD LDAP as well as the example docker container which uses OpenLDAP
Besides these changes, need to make configurable the userNameField, which is the ldap attribute that is used to search for the username sent in the login screen. In AD, this is `sAMAccountName`, but in the example it is `uid`, the logon field is up to the way LDAP is setup
- `docker-up-vinyldns.sh` - fixed a quote issue with the startup script to properly send in the version of vinyldns
- `docker-compose-build.yml` - added the `ldap` container so the portal can connect as `vinyldns-ldap`
- `docker/portal/application.conf` - new config file so that we can connect to the new ldap container
- `docker-compose.yml` - added the `ldap` container here as well so we can play with it using `reStart` in sbt instead of `docker-up-vinyldns.sh` - simplifies local testing
- `LdapAuthenticator.scala` - this is where the main changes happen
* Docker improvements:
* Use of .env files (in docker/ and bin/), allowing customization for users
* Sourcing of .env in docker bash scripts
* README explaining it all
The sbt protobuf plugin we were using forced developers to install
protoc version 2.6.1 on their local. That makes it difficult
to onboard new developers.
sbt-protoc is an alternative plugin. It has a lot of features we
are presently not using. The biggest feature it brings is to
not require developers to install protoc.
* build.sbt - use the new protoc plugin
* VinylDNSProto.proto - add syntax = proto2 to ensure compile
to compatible protobuf version
* plugins.sbt - remove the old protobuf plugin
* protoc.sbt - add the new protoc plugin
* Removing ProtocPlugin as it is an auto-plugin
* Remove uneeded protoc lib dependency
* Update docs to remove protoc requirement
* Remove protobuf install from travis
* start signed docker push process, manual for now
* make quickstart guide in README, make MAINTAINTERS.md
* fix error in comments in bin/docker-up-vinyldns.sh
* change api and portal image tags to 0.8.0 in docker/docker-compose-build.yml