siftlogic / erl-dns Goto Github PK
View Code? Open in Web Editor NEWThis project forked from dnsimple/erldns
DNS server, in erlang.
License: MIT License
This project forked from dnsimple/erldns
DNS server, in erlang.
License: MIT License
Add support for synchronizing records via RabbitMQ
Each erl-dns node should subscribe to a fan-out queue to receive changes
Support a question-response set of queues for each node so that the node can request a replay of changes from a specific hash point
A huge issue with the geolocation service brings this problem. Feature and test definitions will be created as issue #6 is being developed.
** Also, region data stored in the DB needs to be transferred to slave as well so they can also create their own look up table that is up to date with master.
This module needs some cleanin! Best to make it as clear as possible, attempt to remove redundant code and make everything follow a clear code path.
All servers should have a default region database that should be built at startup.
Need to fix it..
For example:
I have a wildcard georecord for "us-east" under the name _geo.us-east.*.example.com.
I get a query for wookies.example.com, it should be able to match the geo record with that.
FEATURE
TESTING
Need to make sure any time a zone is deleted, we also remove it from the orddict. In another thought zone addition must also result in the orddict being updated.
The Master server should be able to be 'hidden' or 'public'.
'hidden' means it does not handle any requests other than 'AXFR' from Slave servers.
'public' means it handles requests for which the server is listed as a valid 'NS' and contains the zone file
FEATURES
TESTING
Zones should be able to support geo-located dns records.
IE, I should be able to specify multiple records for a single 'value' based on the location of the query source.
EG
{<<"example.com">>, <<"A">>, {192,168,1,2}, <<"US">>}, %% record served is query source is US ip
{<<"example.com">>, <<"A">>, {192,168,1,2}, <<"CA">>}, %% record served is query source is CA ip
{<<"example.com">>, <<"A">>, {192,168,1,2}, <<"GB">>}, %% record served is query source is GB ip
{<<"example.com">>, <<"A">>, {192,168,1,2}, undefined} %% record served is query source is ip from any other location
Requirements:
We may want to investigate whether or not splitting zones and records into separate tables is a good idea as the match patterns in mnesia may be slow/complex when having to dig into the existing 'zones' only based storage.
By splitting it would also be possible to have entire 'geo-located' zones instead of just records (maybe bad idea as introduces complexity)
FEATURES
TEST
FEATURE
TESTING
We want a single server to be able to run as the DNS MASTER.
AXFR and NOTIFY should only be supported in TCP based queries
The Master will additionally send NOTIFY messages to Slave servers whenever a Zone changes. The Slave servers would only be those servers listed as slaves for that specific zone.
This would require:
FEATURES
TESTING
This will simply require creation of mnesia schema if it is not already there
EDIT:
Seems to be a bit deeper of a problem.
To recreate:
erldns_zone_cache:zone_names()
should return emptyrr(erldns_zone_cache).
Zone = #zone{name = <<"test">>}.
erldns_storage_json:insert(zones, Zone). %%bypassing mnesia to get a crash
erldns_manager:setup_zone_expiration_orrdict()
crashes where it is calling erldns_zone_cache:zone_names()
.Necessary evil.
FEATURES
TESTING
The zones are not being deleted in the orddict. Also the logic when creating the orddict is flawed. It is using the "mounted IP" addresses and using an incorrect IP when testing to see if the node is master for the particular zone. We should pass in the bind ip to the module when starting.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.