################################################################################################################ # This configuration is only used by docker and the build process ################################################################################################################ vinyldns { base-version = "0.0.0-local-dev" version = ${vinyldns.base-version} # default to the base version if not overridden version = ${?VINYLDNS_VERSION} # override the base version via env var # How often to any particular zone can be synchronized in milliseconds sync-delay = 10000 sync-delay = ${?SYNC_DELAY} # If we should start up polling for change requests, set this to false for the inactive cluster processing-disabled = false processing-disabled = ${?PROCESSING_DISABLED} # Number of records that can be in a zone max-zone-size = 60000 max-zone-size = ${?MAX_ZONE_SIZE} # Types of unowned records that users can access in shared zones shared-approved-types = ["A", "AAAA", "CNAME", "PTR", "TXT"] # Batch change settings batch-change-limit = 1000 batch-change-limit = ${?BATCH_CHANGE_LIMIT} manual-batch-review-enabled = true manual-batch-review-enabled = ${?MANUAL_BATCH_REVIEW_ENABLED} scheduled-changes-enabled = true scheduled-changes-enabled = ${?SCHEDULED_CHANGES_ENABLED} multi-record-batch-change-enabled = true multi-record-batch-change-enabled = ${?MULTI_RECORD_BATCH_CHANGE_ENABLED} # configured backend providers backend { # Use "default" when dns backend legacy = true # otherwise, use the id of one of the connections in any of your backends default-backend-id = "default" # this is where we can save additional backends backend-providers = [ { class-name = "vinyldns.api.backend.dns.DnsBackendProviderLoader" settings = { legacy = false backends = [ { id = "default" zone-connection = { name = "vinyldns." key-name = "vinyldns." key-name = ${?DEFAULT_DNS_KEY_NAME} key = "nzisn+4G2ldMn0q1CV3vsg==" key = ${?DEFAULT_DNS_KEY_SECRET} primary-server = "127.0.0.1:19001" primary-server = ${?DEFAULT_DNS_ADDRESS} } transfer-connection = { name = "vinyldns." key-name = "vinyldns." key-name = ${?DEFAULT_DNS_KEY_NAME} key = "nzisn+4G2ldMn0q1CV3vsg==" key = ${?DEFAULT_DNS_KEY_SECRET} primary-server = "127.0.0.1:19001" primary-server = ${?DEFAULT_DNS_ADDRESS} }, tsig-usage = "always" }, { id = "func-test-backend" zone-connection = { name = "vinyldns." key-name = "vinyldns." key-name = ${?DEFAULT_DNS_KEY_NAME} key = "nzisn+4G2ldMn0q1CV3vsg==" key = ${?DEFAULT_DNS_KEY_SECRET} primary-server = "127.0.0.1:19001" primary-server = ${?DEFAULT_DNS_ADDRESS} } transfer-connection = { name = "vinyldns." key-name = "vinyldns." key-name = ${?DEFAULT_DNS_KEY_NAME} key = "nzisn+4G2ldMn0q1CV3vsg==" key = ${?DEFAULT_DNS_KEY_SECRET} primary-server = "127.0.0.1:19001" primary-server = ${?DEFAULT_DNS_ADDRESS} }, tsig-usage = "always" } ] } } ] } queue { class-name = "vinyldns.sqs.queue.SqsMessageQueueProvider" messages-per-poll = 10 polling-interval = 250.millis settings { # AWS access key and secret. access-key = "test" access-key = ${?AWS_ACCESS_KEY} secret-key = "test" secret-key = ${?AWS_SECRET_ACCESS_KEY} # Regional endpoint to make your requests (eg. 'us-west-2', 'us-east-1', etc.). This is the region where your queue is housed. signing-region = "us-east-1" signing-region = ${?SQS_REGION} # Endpoint to access queue service-endpoint = "http://localhost:19003/" service-endpoint = ${?SQS_SERVICE_ENDPOINT} # Queue name. Should be used in conjunction with service endpoint, rather than using a queue url which is subject to change. queue-name = "vinyldns" queue-name = ${?SQS_QUEUE_NAME} } } email { class-name = "vinyldns.api.notifier.email.EmailNotifierProvider" class-name = ${?EMAIL_CLASS_NAME} settings = { from = "VinylDNS " } } sns { class-name = "vinyldns.api.notifier.sns.SnsNotifierProvider" class-name = ${?SNS_CLASS_NAME} settings { topic-arn = "arn:aws:sns:us-east-1:000000000000:batchChanges" topic-arn = ${?SNS_TOPIC_ARN} access-key = "test" access-key = ${?SNS_ACCESS_KEY} secret-key = "test" secret-key = ${?SNS_SECRET_KEY} service-endpoint = "http://127.0.0.1:19003" service-endpoint = ${?SNS_SERVICE_ENDPOINT} signing-region = "us-east-1" signing-region = ${?SNS_REGION} } } rest { host = "0.0.0.0" port = 9000 port=${?API_SERVICE_PORT} } sync-delay = 10000 approved-name-servers = [ "172.17.42.1.", "ns1.parent.com." "ns1.parent.com1." "ns1.parent.com2." "ns1.parent.com3." "ns1.parent.com4." ] crypto { type = "vinyldns.core.crypto.NoOpCrypto" } data-stores = ["mysql"] mysql { settings { # JDBC Settings, these are all values in scalikejdbc-config, not our own # these must be overridden to use MYSQL for production use # assumes a docker or mysql instance running locally name = "vinyldns" name = ${?DATABASE_NAME} driver = "org.h2.Driver" driver = ${?JDBC_DRIVER} migration-url = "jdbc:h2:mem:vinyldns;MODE=MYSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=TRUE;IGNORECASE=TRUE;INIT=RUNSCRIPT FROM 'classpath:test/ddl.sql'" migration-url = ${?JDBC_MIGRATION_URL} url = "jdbc:h2:mem:vinyldns;MODE=MYSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=TRUE;IGNORECASE=TRUE;INIT=RUNSCRIPT FROM 'classpath:test/ddl.sql'" url = ${?JDBC_URL} user = "sa" user = ${?JDBC_USER} password = "" password = ${?JDBC_PASSWORD} # see https://github.com/brettwooldridge/HikariCP connection-timeout-millis = 1000 idle-timeout = 10000 max-lifetime = 600000 maximum-pool-size = 20 minimum-idle = 20 register-mbeans = true } # Repositories that use this data store are listed here repositories { zone { # no additional settings for now } batch-change { # no additional settings for now } user { } record-set { } group { } membership { } group-change { } zone-change { } record-change { } } } backends = [] batch-change-limit = 1000 # FQDNs / IPs that cannot be modified via VinylDNS # regex-list used for all record types except PTR # ip-list used exclusively for PTR records high-value-domains = { regex-list = [ "high-value-domain.*" # for testing ] ip-list = [ "192.0.2.252", "192.0.2.253", "fd69:27cc:fe91:0:0:0:0:ffff", "fd69:27cc:fe91:0:0:0:ffff:0" ] } # FQDNs / IPs / zone names that require manual review upon submission in batch change interface # domain-list used for all record types except PTR # ip-list used exclusively for PTR records manual-review-domains = { domain-list = [ "needs-review.*" ] ip-list = [ "192.0.1.254", "192.0.1.255", "192.0.2.254", "192.0.2.255", "192.0.3.254", "192.0.3.255", "192.0.4.254", "192.0.4.255", "fd69:27cc:fe91:0:0:0:ffff:1", "fd69:27cc:fe91:0:0:0:ffff:2", "fd69:27cc:fe92:0:0:0:ffff:1", "fd69:27cc:fe92:0:0:0:ffff:2", "fd69:27cc:fe93:0:0:0:ffff:1", "fd69:27cc:fe93:0:0:0:ffff:2", "fd69:27cc:fe94:0:0:0:ffff:1", "fd69:27cc:fe94:0:0:0:ffff:2" ] zone-name-list = [ "zone.requires.review." "zone.requires.review1." "zone.requires.review2." "zone.requires.review3." "zone.requires.review4." ] } # FQDNs / IPs that cannot be modified via VinylDNS # regex-list used for all record types except PTR # ip-list used exclusively for PTR records high-value-domains = { regex-list = [ "high-value-domain.*" # for testing ] ip-list = [ "192.0.1.252", "192.0.1.253", "192.0.2.252", "192.0.2.253", "192.0.3.252", "192.0.3.253", "192.0.4.252", "192.0.4.253", "fd69:27cc:fe91:0:0:0:0:ffff", "fd69:27cc:fe91:0:0:0:ffff:0", "fd69:27cc:fe92:0:0:0:0:ffff", "fd69:27cc:fe92:0:0:0:ffff:0", "fd69:27cc:fe93:0:0:0:0:ffff", "fd69:27cc:fe93:0:0:0:ffff:0", "fd69:27cc:fe94:0:0:0:0:ffff", "fd69:27cc:fe94:0:0:0:ffff:0" ] } # types of unowned records that users can access in shared zones shared-approved-types = ["A", "AAAA", "CNAME", "PTR", "TXT"] manual-batch-review-enabled = true scheduled-changes-enabled = true multi-record-batch-change-enabled = true global-acl-rules = [ { group-ids: ["global-acl-group-id"], fqdn-regex-list: [".*shared[0-9]{1}."] }, { group-ids: ["another-global-acl-group"], fqdn-regex-list: [".*ok[0-9]{1}."] } ] } akka { loglevel = "INFO" loggers = ["akka.event.slf4j.Slf4jLogger"] logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" logger-startup-timeout = 30s actor { provider = "akka.actor.LocalActorRefProvider" } } akka.http { server { # The time period within which the TCP binding process must be completed. # Set to `infinite` to disable. bind-timeout = 5s # Show verbose error messages back to the client verbose-error-messages = on } parsing { # Spray doesn't like the AWS4 headers illegal-header-warnings = on } }