mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-09-11 23:54:28 +08:00
Loopia: feature updates (#3686)
This commit is contained in:
parent
78c2313d71
commit
e84925b491
5 changed files with 18 additions and 11 deletions
|
@ -224,7 +224,7 @@ Jump to a table:
|
||||||
| [`HOSTINGDE`](hostingde.md) | ❔ | ❌ | ✅ | ❔ |
|
| [`HOSTINGDE`](hostingde.md) | ❔ | ❌ | ✅ | ❔ |
|
||||||
| [`HUAWEICLOUD`](huaweicloud.md) | ❔ | ❌ | ✅ | ❌ |
|
| [`HUAWEICLOUD`](huaweicloud.md) | ❔ | ❌ | ✅ | ❌ |
|
||||||
| [`INWX`](inwx.md) | ❔ | ✅ | ✅ | ✅ |
|
| [`INWX`](inwx.md) | ❔ | ✅ | ✅ | ✅ |
|
||||||
| [`LOOPIA`](loopia.md) | ❔ | ✅ | ✅ | ❔ |
|
| [`LOOPIA`](loopia.md) | ❌ | ✅ | ✅ | ❌ |
|
||||||
| [`LUADNS`](luadns.md) | ❔ | ❔ | ✅ | ❔ |
|
| [`LUADNS`](luadns.md) | ❔ | ❔ | ✅ | ❔ |
|
||||||
| [`MYTHICBEASTS`](mythicbeasts.md) | ❔ | ❔ | ✅ | ❔ |
|
| [`MYTHICBEASTS`](mythicbeasts.md) | ❔ | ❔ | ✅ | ❔ |
|
||||||
| [`NAMECHEAP`](namecheap.md) | ❔ | ❔ | ❌ | ❔ |
|
| [`NAMECHEAP`](namecheap.md) | ❔ | ❔ | ❌ | ❔ |
|
||||||
|
@ -277,7 +277,7 @@ Jump to a table:
|
||||||
| [`HUAWEICLOUD`](huaweicloud.md) | ✅ | ❌ | ❌ | ❌ |
|
| [`HUAWEICLOUD`](huaweicloud.md) | ✅ | ❌ | ❌ | ❌ |
|
||||||
| [`INWX`](inwx.md) | ✅ | ✅ | ✅ | ✅ |
|
| [`INWX`](inwx.md) | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [`LINODE`](linode.md) | ✅ | ❔ | ❔ | ❔ |
|
| [`LINODE`](linode.md) | ✅ | ❔ | ❔ | ❔ |
|
||||||
| [`LOOPIA`](loopia.md) | ✅ | ❔ | ✅ | ✅ |
|
| [`LOOPIA`](loopia.md) | ✅ | ❌ | ✅ | ✅ |
|
||||||
| [`LUADNS`](luadns.md) | ✅ | ✅ | ✅ | ✅ |
|
| [`LUADNS`](luadns.md) | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [`MYTHICBEASTS`](mythicbeasts.md) | ✅ | ❔ | ✅ | ✅ |
|
| [`MYTHICBEASTS`](mythicbeasts.md) | ✅ | ❔ | ✅ | ✅ |
|
||||||
| [`NAMECHEAP`](namecheap.md) | ✅ | ❔ | ❔ | ❌ |
|
| [`NAMECHEAP`](namecheap.md) | ✅ | ❔ | ❔ | ❌ |
|
||||||
|
@ -318,7 +318,7 @@ Jump to a table:
|
||||||
| [`HOSTINGDE`](hostingde.md) | ✅ | ❔ | ✅ |
|
| [`HOSTINGDE`](hostingde.md) | ✅ | ❔ | ✅ |
|
||||||
| [`HUAWEICLOUD`](huaweicloud.md) | ❔ | ❔ | ❌ |
|
| [`HUAWEICLOUD`](huaweicloud.md) | ❔ | ❔ | ❌ |
|
||||||
| [`INWX`](inwx.md) | ✅ | ❔ | ❔ |
|
| [`INWX`](inwx.md) | ✅ | ❔ | ❔ |
|
||||||
| [`LOOPIA`](loopia.md) | ❌ | ❔ | ❌ |
|
| [`LOOPIA`](loopia.md) | ❌ | ❌ | ❌ |
|
||||||
| [`NETLIFY`](netlify.md) | ❌ | ❔ | ❌ |
|
| [`NETLIFY`](netlify.md) | ❌ | ❔ | ❌ |
|
||||||
| [`NS1`](ns1.md) | ✅ | ❔ | ✅ |
|
| [`NS1`](ns1.md) | ✅ | ❔ | ✅ |
|
||||||
| [`ORACLE`](oracle.md) | ❔ | ❔ | ❌ |
|
| [`ORACLE`](oracle.md) | ❔ | ❔ | ❌ |
|
||||||
|
|
|
@ -440,7 +440,7 @@ func makeTests() []*TestGroup {
|
||||||
|
|
||||||
// Some of these test cases are commented out because they test
|
// Some of these test cases are commented out because they test
|
||||||
// something that isn't widely used or supported. For example
|
// something that isn't widely used or supported. For example
|
||||||
// many APIs don't support a backslack (`\`) in a TXT record;
|
// many APIs don't support a backslash (`\`) in a TXT record;
|
||||||
// luckily we've never seen a need for that "in the wild". If
|
// luckily we've never seen a need for that "in the wild". If
|
||||||
// you want to future-proof your provider, temporarily remove
|
// you want to future-proof your provider, temporarily remove
|
||||||
// the comments and get those tests working, or reject it using
|
// the comments and get those tests working, or reject it using
|
||||||
|
|
|
@ -147,7 +147,7 @@ func unwrapProviderCapabilities(pName string, meta []ProviderMetadata) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can is a small helper for concisely creating Documentation Notes
|
// Can is a small helper for concisely creating Documentation Notes
|
||||||
// comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
|
// comments are variadic for easy omission. First is comment, second is link, the rest are ignored.
|
||||||
func Can(comments ...string) *DocumentationNote {
|
func Can(comments ...string) *DocumentationNote {
|
||||||
n := &DocumentationNote{
|
n := &DocumentationNote{
|
||||||
HasFeature: true,
|
HasFeature: true,
|
||||||
|
@ -157,7 +157,7 @@ func Can(comments ...string) *DocumentationNote {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cannot is a small helper for concisely creating Documentation Notes
|
// Cannot is a small helper for concisely creating Documentation Notes
|
||||||
// comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
|
// comments are variadic for easy omission. First is comment, second is link, the rest are ignored.
|
||||||
func Cannot(comments ...string) *DocumentationNote {
|
func Cannot(comments ...string) *DocumentationNote {
|
||||||
n := &DocumentationNote{
|
n := &DocumentationNote{
|
||||||
HasFeature: false,
|
HasFeature: false,
|
||||||
|
@ -167,7 +167,7 @@ func Cannot(comments ...string) *DocumentationNote {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unimplemented is a small helper for concisely creating Documentation Notes
|
// Unimplemented is a small helper for concisely creating Documentation Notes
|
||||||
// comments are variadic for easy ommission. First is comment, second is link, the rest are ignored.
|
// comments are variadic for easy omission. First is comment, second is link, the rest are ignored.
|
||||||
func Unimplemented(comments ...string) *DocumentationNote {
|
func Unimplemented(comments ...string) *DocumentationNote {
|
||||||
n := &DocumentationNote{
|
n := &DocumentationNote{
|
||||||
HasFeature: false,
|
HasFeature: false,
|
||||||
|
|
|
@ -11,12 +11,15 @@ import (
|
||||||
func AuditRecords(records []*models.RecordConfig) []error {
|
func AuditRecords(records []*models.RecordConfig) []error {
|
||||||
a := rejectif.Auditor{}
|
a := rejectif.Auditor{}
|
||||||
|
|
||||||
a.Add("TXT", rejectif.TxtIsEmpty) // Last verified 2023-03-10: Loopia returns 404
|
a.Add("CAA", rejectif.CaaTargetContainsWhitespace) // Last verified 2025-07-24: Loopia returns 404
|
||||||
|
|
||||||
// Loopias TXT length limit appears to be 450 octets
|
a.Add("MX", rejectif.MxNull) // Last verified 2025-07-24: Loopia returns 404
|
||||||
a.Add("TXT", rejectif.TxtLongerThan(450)) // Last verified 2023-03-10
|
|
||||||
|
|
||||||
a.Add("MX", rejectif.MxNull) // Last verified 2023-03-23
|
a.Add("SRV", rejectif.SrvHasNullTarget) // Last verified 2025-07-24: Loopia returns 404
|
||||||
|
|
||||||
|
a.Add("TXT", rejectif.TxtIsEmpty) // Last verified 2025-07-24: Loopia returns 404
|
||||||
|
|
||||||
|
a.Add("TXT", rejectif.TxtLongerThan(450)) // Last verified 2025-07-24: Loopia returns 404
|
||||||
|
|
||||||
return a.Audit(records)
|
return a.Audit(records)
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,14 +56,18 @@ var features = providers.DocumentationNotes{
|
||||||
providers.CanUseAlias: providers.Cannot(),
|
providers.CanUseAlias: providers.Cannot(),
|
||||||
providers.CanUseAzureAlias: providers.Cannot(),
|
providers.CanUseAzureAlias: providers.Cannot(),
|
||||||
providers.CanUseCAA: providers.Can(),
|
providers.CanUseCAA: providers.Can(),
|
||||||
|
providers.CanUseDHCID: providers.Cannot(), // Verified 2025-07-24
|
||||||
|
providers.CanUseDNSKEY: providers.Cannot(), // Verified 2025-07-24
|
||||||
providers.CanUseDS: providers.Cannot("Only supports DS records at the apex, only for .se and .nu domains; done automatically at back-end."),
|
providers.CanUseDS: providers.Cannot("Only supports DS records at the apex, only for .se and .nu domains; done automatically at back-end."),
|
||||||
providers.CanUseDSForChildren: providers.Cannot(),
|
providers.CanUseDSForChildren: providers.Cannot(),
|
||||||
|
providers.CanUseHTTPS: providers.Cannot(), // Verified 2025-07-24
|
||||||
providers.CanUseLOC: providers.Can(),
|
providers.CanUseLOC: providers.Can(),
|
||||||
providers.CanUseNAPTR: providers.Can(),
|
providers.CanUseNAPTR: providers.Can(),
|
||||||
providers.CanUsePTR: providers.Cannot(),
|
providers.CanUsePTR: providers.Cannot(),
|
||||||
providers.CanUseSOA: providers.Cannot("💩"),
|
providers.CanUseSOA: providers.Cannot("💩"),
|
||||||
providers.CanUseSRV: providers.Can(),
|
providers.CanUseSRV: providers.Can(),
|
||||||
providers.CanUseSSHFP: providers.Can(),
|
providers.CanUseSSHFP: providers.Can(),
|
||||||
|
providers.CanUseSVCB: providers.Cannot(), // Verified 2025-07-24
|
||||||
providers.CanUseTLSA: providers.Can(),
|
providers.CanUseTLSA: providers.Can(),
|
||||||
providers.DocCreateDomains: providers.Cannot("Can only manage domains registered through their service"),
|
providers.DocCreateDomains: providers.Cannot("Can only manage domains registered through their service"),
|
||||||
providers.DocDualHost: providers.Can(),
|
providers.DocDualHost: providers.Can(),
|
||||||
|
|
Loading…
Add table
Reference in a new issue