diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..a436ee6 --- /dev/null +++ b/Pipfile @@ -0,0 +1,10 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +octodns = "*" +dnsimple = "*" +pyyaml = "*" +dnspython = "*" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..ec6dcb1 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,326 @@ +{ + "_meta": { + "hash": { + "sha256": "00910b965843babe2b09db1c7035ea584bce331602b5afc1835ee70606f8ac7e" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "attrs": { + "hashes": [ + "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", + "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==21.2.0" + }, + "certifi": { + "hashes": [ + "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", + "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" + ], + "version": "==2021.5.30" + }, + "charset-normalizer": { + "hashes": [ + "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b", + "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3" + ], + "markers": "python_version >= '3'", + "version": "==2.0.4" + }, + "coverage": { + "hashes": [ + "sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c", + "sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6", + "sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45", + "sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a", + "sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03", + "sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529", + "sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a", + "sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a", + "sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2", + "sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6", + "sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759", + "sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53", + "sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a", + "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4", + "sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff", + "sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502", + "sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793", + "sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb", + "sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905", + "sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821", + "sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b", + "sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81", + "sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0", + "sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b", + "sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3", + "sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184", + "sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701", + "sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a", + "sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82", + "sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638", + "sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5", + "sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083", + "sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6", + "sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90", + "sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465", + "sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a", + "sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3", + "sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e", + "sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066", + "sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf", + "sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b", + "sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae", + "sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669", + "sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873", + "sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b", + "sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6", + "sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb", + "sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160", + "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c", + "sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079", + "sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d", + "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==5.5" + }, + "dnsimple": { + "hashes": [ + "sha256:306d19587af24a3081b17e06e6bb02d05c6b2b9b1394e043d1b21bc27a9f28f0", + "sha256:f6f4e86fc372abf3a5abd30805fc507b1b6d4bb0a514d00d8f22c22be19241f6" + ], + "index": "pypi", + "version": "==2.2.1" + }, + "dnspython": { + "hashes": [ + "sha256:95d12f6ef0317118d2a1a6fc49aac65ffec7eb8087474158f42f26a639135216", + "sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4" + ], + "index": "pypi", + "version": "==2.1.0" + }, + "fqdn": { + "hashes": [ + "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", + "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.5.1" + }, + "idna": { + "hashes": [ + "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", + "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" + ], + "markers": "python_version >= '3'", + "version": "==3.2" + }, + "iniconfig": { + "hashes": [ + "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", + "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], + "version": "==1.1.1" + }, + "natsort": { + "hashes": [ + "sha256:00c603a42365830c4722a2eb7663a25919551217ec09a243d3399fa8dd4ac403", + "sha256:d0f4fc06ca163fa4a5ef638d9bf111c67f65eedcc7920f98dec08e489045b67e" + ], + "markers": "python_version >= '3.4'", + "version": "==7.1.1" + }, + "octodns": { + "hashes": [ + "sha256:936248c45438f9d2adfae2ddd6e1c4c2878f2b4cd2ea9008e5db9ac41f60074a" + ], + "index": "pypi", + "version": "==0.9.13" + }, + "omitempty": { + "hashes": [ + "sha256:761fea43d0edb7a31e3322158f73c97d77e939e57c1e62754be23e081ab853d8" + ], + "version": "==0.1.1" + }, + "packaging": { + "hashes": [ + "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", + "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14" + ], + "markers": "python_version >= '3.6'", + "version": "==21.0" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.13.1" + }, + "pprintpp": { + "hashes": [ + "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d", + "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403" + ], + "version": "==0.4.0" + }, + "py": { + "hashes": [ + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.10.0" + }, + "pycountry": { + "hashes": [ + "sha256:81084a53d3454344c0292deebc20fcd0a1488c136d4900312cbd465cf552cb42" + ], + "version": "==20.7.3" + }, + "pycountry-convert": { + "hashes": [ + "sha256:095d310f746bf2a5ef713b3a82eea28a27262286223765b1e7be8a5c4fa7e9b9", + "sha256:5e33883a88b3cb752d332ca2358ac6c4de4defc86a2b93b713b36338e914952e" + ], + "version": "==0.7.2" + }, + "pyparsing": { + "hashes": [ + "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", + "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.4.7" + }, + "pytest": { + "hashes": [ + "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b", + "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890" + ], + "markers": "python_version >= '3.6'", + "version": "==6.2.4" + }, + "pytest-cov": { + "hashes": [ + "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a", + "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==2.12.1" + }, + "pytest-mock": { + "hashes": [ + "sha256:30c2f2cc9759e76eee674b81ea28c9f0b94f8f0445a1b87762cadf774f0df7e3", + "sha256:40217a058c52a63f1042f0784f62009e976ba824c418cced42e88d5f40ab0e62" + ], + "markers": "python_version >= '3.6'", + "version": "==3.6.1" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.8.2" + }, + "pyyaml": { + "hashes": [ + "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", + "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", + "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", + "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", + "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", + "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", + "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", + "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", + "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", + "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", + "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", + "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", + "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", + "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", + "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", + "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", + "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", + "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", + "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", + "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", + "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", + "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", + "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", + "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", + "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", + "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", + "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", + "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", + "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" + ], + "index": "pypi", + "version": "==5.4.1" + }, + "repoze.lru": { + "hashes": [ + "sha256:0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77", + "sha256:f77bf0e1096ea445beadd35f3479c5cff2aa1efe604a133e67150bc8630a62ea" + ], + "version": "==0.7" + }, + "requests": { + "hashes": [ + "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", + "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==2.26.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "version": "==1.16.0" + }, + "toml": { + "hashes": [ + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==0.10.2" + }, + "urllib3": { + "hashes": [ + "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", + "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.6" + }, + "wheel": { + "hashes": [ + "sha256:21014b2bd93c6d0034b6ba5d35e4eb284340e09d63c59aef6fc14b0f346146fd", + "sha256:e2ef7239991699e3355d54f8e968a21bb940a1dbf34a4d226741e64462516fad" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.37.0" + } + }, + "develop": {} +} diff --git a/dnsverify.py b/dnsverify.py new file mode 100644 index 0000000..86b9f62 --- /dev/null +++ b/dnsverify.py @@ -0,0 +1,76 @@ +#!/bin/env python + +''' + Check whether the authoritative nameservers returned for all puzzle managed + domains belong to the list of pitc_nameservers and fail if one does not. +''' + +import sys +import yaml + +from dns import resolver + +# list of puzzle authoritative name servers +pitc_nameservers = [ + 'ns1.dnsimple.com.', + 'ns2.dnsimple.com.', + 'ns3.dnsimple.com.', + 'ns4.dnsimple.com.', + 'ns5.dnsmadeeasy.com.', + 'ns6.dnsmadeeasy.com.', + 'ns7.dnsmadeeasy.com.' + ] + +# list of puzzle managed zone files +pitc_domains = [ 'puzzle.ch.yaml', 'puzzle.yaml', 'nonpuzzle.yaml' ] + +# configure opendns resolver +resolver = resolver.Resolver() +resolver.nameservers = ['208.67.222.222','208.67.220.220'] + +def get_authoritative_ns(domains): + ''' + dsc: Query the domains and return the authoritative name server. + arg: [list], domain to query + ret: [str], nameserver + ''' + for domain in domains: + answers = resolver.resolve(domain,'NS') + for server in answers: + if not verify_authoritative_ns(str(server)): + print("ERROR: {} got answer from {}, not managed by puzzle".format(domain, server), file=sys.stderr) + return False + else: + #print("{} got answer from {}".format(domain, server)) + pass + return True + +def get_domains(filenames): + ''' + dsc: Loads domain names from a list of yaml files. + arg: [list], filenames + ret: [list], arbitrary list of domain names + ''' + domains = [] + for file in filenames: + with open(file, 'r') as zone_file: + yaml_data = yaml.safe_load(zone_file) + yaml_list = list(yaml_data.get('zones')) + domains.extend(yaml_list) + return domains + +def verify_authoritative_ns(nameserver): + ''' + dsc: Verifies if the authoritative NS belongs to the puzzle managed NS. + arg: [str], nameserver + ret: [boolean], true if ok; false if nok. + ''' + if nameserver in pitc_nameservers: + return True + return False + +if __name__ == "__main__": + dns = get_domains(pitc_domains) + if not get_authoritative_ns(dns): + sys.exit(1) + sys.exit(0) diff --git a/nonpuzzle.yaml b/nonpuzzle.yaml new file mode 100644 index 0000000..fece070 --- /dev/null +++ b/nonpuzzle.yaml @@ -0,0 +1,44 @@ +--- +providers: + config: + class: octodns.provider.yaml.YamlProvider + directory: ./config/nonpuzzle + default_ttl: 3600 + enforce_order: False + dnsimple: + class: octodns.provider.dnsimple.DnsimpleProvider + account: env/DNSIMPLE_ACCOUNT + token: env/DNSIMPLE_TOKEN +zones: +# Note: there are subsections for puzzle / puzzle.ch / puzzle.ch-dynamic / nonpuzzle domains +# Nonpuzzle Domains: + nivendis.com.: + sources: + - config + targets: + - dnsimple + nivendis.ch.: + sources: + - config + targets: + - dnsimple + teest.ch.: + sources: + - config + targets: + - dnsimple + egi-aei.ch.: + sources: + - config + targets: + - dnsimple + fmsx.ch.: + sources: + - config + targets: + - dnsimple + fmsx.de.: + sources: + - config + targets: + - dnsimple diff --git a/puzzle.ch.yaml b/puzzle.ch.yaml new file mode 100644 index 0000000..3ed46fe --- /dev/null +++ b/puzzle.ch.yaml @@ -0,0 +1,86 @@ +--- +providers: + config: + class: octodns.provider.yaml.YamlProvider + directory: ./config/puzzle.ch + default_ttl: 3600 + enforce_order: False + dnsimple: + class: octodns.provider.dnsimple.DnsimpleProvider + account: env/DNSIMPLE_ACCOUNT + token: env/DNSIMPLE_TOKEN + update_pcent_threshold: 0.3 + delete_pcent_threshold: 0.3 +zones: +# Puzzle.ch Domains: + puzzle.ch.: + sources: + - config + targets: + - dnsimple + be3.puzzle.ch.: + sources: + - config + targets: + - dnsimple +# Puzzle.ch redirects + puzzle-itc.ch.: + sources: + - config + targets: + - dnsimple + puzzleitc.ch.: + sources: + - config + targets: + - dnsimple + puzzle-itc.com.: + sources: + - config + targets: + - dnsimple + puzzleitc.com.: + sources: + - config + targets: + - dnsimple + puzzzle.ch.: + sources: + - config + targets: + - dnsimple + pitc.ch.: + sources: + - config + targets: + - dnsimple + linuxmigration.ch.: + sources: + - config + targets: + - dnsimple + linux-migration.ch.: + sources: + - config + targets: + - dnsimple + linuxfriends.ch.: + sources: + - config + targets: + - dnsimple + puzzleversum.com.: + sources: + - config + targets: + - dnsimple + puzzleversum.ch.: + sources: + - config + targets: + - dnsimple + google.ch.: + sources: + - config + targets: + - dnsimple diff --git a/puzzle.yaml b/puzzle.yaml new file mode 100644 index 0000000..bb4036c --- /dev/null +++ b/puzzle.yaml @@ -0,0 +1,112 @@ +--- +providers: + config: + class: octodns.provider.yaml.YamlProvider + directory: ./config/puzzle + default_ttl: 3600 + enforce_order: False + dnsimple: + class: octodns.provider.dnsimple.DnsimpleProvider + account: env/DNSIMPLE_ACCOUNT + token: env/DNSIMPLE_TOKEN +zones: +# Note: there are subsections for puzzle / puzzle.ch / puzzle.ch-dynamic / nonpuzzle domains +# Puzzle Domains: + hitobito.at.: + sources: + - config + targets: + - dnsimple + hitobito.ch.: + sources: + - config + targets: + - dnsimple + hitobito.com.: + sources: + - config + targets: + - dnsimple + liima.org.: + sources: + - config + targets: + - dnsimple + mediazimmer.com.: + sources: + - config + targets: + - dnsimple + mediazimmer.ch.: + sources: + - config + targets: + - dnsimple + mediazimmer.net.: + sources: + - config + targets: + - dnsimple + mediazimmer.org.: + sources: + - config + targets: + - dnsimple + opendevicelabbern.ch.: + sources: + - config + targets: + - dnsimple +# openshift.ch.: domain management moved to Route53 on AWS + opensource-challenge.ch.: + sources: + - config + targets: + - dnsimple + puzzle.beer.: + sources: + - config + targets: + - dnsimple + puzzletime.ch.: + sources: + - config + targets: + - dnsimple + teamserver.ch.: + sources: + - config + targets: + - dnsimple +# Swissflirt + swissflirt.ch.: + sources: + - config + targets: + - dnsimple + swissflirt.com.: + sources: + - config + targets: + - dnsimple + swissflirt.org.: + sources: + - config + targets: + - dnsimple + swissflirt.net.: + sources: + - config + targets: + - dnsimple + swiss-flirt.ch.: + sources: + - config + targets: + - dnsimple + swisflirt.ch.: + sources: + - config + targets: + - dnsimple +