2.6 KiB
Code structure
- split
App.Zone
to improve compilation times - modules should have specific API
- maybe have a module with the entire state and a single function handling all state modifications on received message
Also, the Bulma module should be removed. The actual Bulma-related code should be in a package (such as https://github.com/KaneRoot/purescript-bulma, which currently lacks some features). The general style of the website should be in a module.
Features
- display a message when the email isn't provided (happens when the account was migrated from dnsmanager v1)
- zone-wise indications to help people configure their zone for specific uses (web, mail)
- explanations and static content in general should be written using some kind of templates, not directly in Halogen
- admin interface: enable administrators to ask for users' info and show zones
- admin interface: perform a few more administrative operations (TBD)
- allow '*' in record names
- allow '@' in record names (replaced by the fqdn, the "root" domain, such as "example.netlib.re.")
- enable to change NS records, but after a accepting the consequences
Tests
Check for common errors:
- nodes with both a CNAME and another RR
- verify that SPF mechanisms point to available records
More specialized tests or debug options:
- verify the length of received messages in
App.Message.IPC
- MAYBE: run
named-checkzone
on the genetared zone and provide the result in case of an error
Display
- user interface: display the email address
- somewhat better looking welcome page
- somewhat better looking explanation pages
- hide logs by default?
- maybe notifications should disappear after a few seconds
- admin interface: basically just rewrite the whole thing, it's a mess
- say that there is no IPv6 on the server at the moment, so there is no point doing IPv6 address updates
General note
The code should be reviewed and a decent documentation should be provided.
Right now, the code is still in a somewhat early stage and multiple refactoring should take place. For example, modules have a very generic API; they can provide or receive messages from (respectively to) authd or dnsmanagerd. Instead, modules should have a more specific API and not deal with message encoding at all. Furthermore, maybe the state of the entire application should be stored in a single module, with a single function handling all state modifications when a message is received, enabling a simpler data management.
TODO in authd and dnsmanagerd
- enable users to change their NS
- MIGRATION-related: remove migrated accounts with no connection in over 6 months