Skip to content

Commit c411d6b

Browse files
committed
Handle 2 edge cases in database migration
1 parent 47fd9cd commit c411d6b

2 files changed

Lines changed: 22 additions & 7 deletions

File tree

internal/storage/kvtpl/updates-from-7.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ import (
3838
// abstract.EMail
3939
func explodeAbstractEMail(dn happydns.Subdomain, in *happydns.ServiceMessage) ([]*happydns.ServiceMessage, error) {
4040
var val struct {
41-
MX []map[string]any `json:"mx,omitempty"`
42-
SPF map[string]any `json:"spf,omitempty"`
43-
DKIM map[string]*svcs.DKIM `json:"dkim,omitempty"`
44-
DMARC *svcs.DMARCFields `json:"dmarc,omitempty"`
45-
MTA_STS *svcs.MTASTSFields `json:"mta_sts,omitempty"`
46-
TLS_RPT *svcs.TLS_RPTField `json:"tls_rpt,omitempty"`
41+
MX []map[string]any `json:"mx,omitempty"`
42+
SPF map[string]any `json:"spf,omitempty"`
43+
DKIM map[string]*svcs.DKIM `json:"dkim,omitempty"`
44+
DMARC *svcs.DMARCFields `json:"dmarc,omitempty"`
45+
MTA_STS *svcs.MTASTSFields `json:"mta_sts,omitempty"`
46+
TLS_RPT *svcs.TLS_RPTField `json:"tls_rpt,omitempty"`
4747
}
4848

4949
err := json.Unmarshal(in.Service, &val)
@@ -815,7 +815,12 @@ func migrateFrom7(s *KVStorage) error {
815815
return nil, err
816816
}
817817

818-
rr, err := dns.NewRR(fmt.Sprintf("%s.zZzZ. 0 IN CNAME %s", val["SubDomain"], helpers.DomainFQDN(val["Target"], "zZzZ.")))
818+
var rr dns.RR
819+
if strings.Contains(val["Target"], "IN\tCNAME") {
820+
rr, err = dns.NewRR(val["Target"])
821+
} else {
822+
rr, err = dns.NewRR(fmt.Sprintf("%s.zZzZ. 0 IN CNAME %s", val["SubDomain"], helpers.DomainFQDN(val["Target"], "zZzZ.")))
823+
}
819824
if err != nil {
820825
return nil, err
821826
}

internal/storage/kvtpl/updates-from-9.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package database
2323

2424
import (
25+
"fmt"
2526
"log"
2627
)
2728

@@ -33,6 +34,15 @@ func migrateFrom9(s *KVStorage) (err error) {
3334

3435
for sessions.Next() {
3536
session := sessions.Item()
37+
if len(session.Id) != 103 {
38+
err = sessions.DropItem()
39+
if err != nil {
40+
return fmt.Errorf("unable to drop invalid session: %s: %w", session.Id, err)
41+
}
42+
log.Printf("Drop invalid session identifier: %s", session.Id)
43+
continue
44+
}
45+
3646
err := s.UpdateSession(session)
3747
if err != nil {
3848
return err

0 commit comments

Comments
 (0)