Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xmpp-dns for openSUSE:Factory 
checked in at 2026-01-20 21:04:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xmpp-dns (Old)
 and      /work/SRC/openSUSE:Factory/.xmpp-dns.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xmpp-dns"

Tue Jan 20 21:04:58 2026 rev:19 rq:1328217 version:0.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/xmpp-dns/xmpp-dns.changes        2025-09-29 
16:35:51.155553921 +0200
+++ /work/SRC/openSUSE:Factory/.xmpp-dns.new.1928/xmpp-dns.changes      
2026-01-20 21:05:04.625344477 +0100
@@ -1,0 +2,31 @@
+Tue Jan 20 09:19:28 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.6.0:
+  * Add flag --client-dtls for adding arbitrary targets for C2S with direct 
TLS.
+  * Add flag --client-stls for adding arbitrary targets for C2S with StartTLS.
+  * Add flag --server-dtls for adding arbitrary targets for S2S with direct 
TLS.
+  * Add flag --server-stls for adding arbitrary targets for S2S with StartTLS.
+
+-------------------------------------------------------------------
+Tue Jan 20 09:19:17 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.5.6:
+  * Update link relations to version of 2025-10-14.
+  * Only resolve IPs when -v is set.
+
+-------------------------------------------------------------------
+Tue Jan 20 09:18:56 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.5.5:
+  * Print expiry date when certificate expires within the next 14
+    days (only xmpp and xmpps connections).
+  * Add flag --force-fallback to enforce checks on standard ports,
+    even if SRV records are provided.
+
+-------------------------------------------------------------------
+Tue Jan 20 09:18:32 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 0.5.4:
+  * Fix calculation of remaining days for certificate expiry warning.
+
+-------------------------------------------------------------------

Old:
----
  xmpp-dns-0.5.3.tar.gz

New:
----
  xmpp-dns-0.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xmpp-dns.spec ++++++
--- /var/tmp/diff_new_pack.8FMalc/_old  2026-01-20 21:05:05.353374587 +0100
+++ /var/tmp/diff_new_pack.8FMalc/_new  2026-01-20 21:05:05.357374753 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           xmpp-dns
-Version:        0.5.3
+Version:        0.6.0
 Release:        0
 Summary:        A CLI tool to check XMPP SRV records
 License:        BSD-2-Clause

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.8FMalc/_old  2026-01-20 21:05:05.393376242 +0100
+++ /var/tmp/diff_new_pack.8FMalc/_new  2026-01-20 21:05:05.397376407 +0100
@@ -1,6 +1,6 @@
-mtime: 1759125629
-commit: e46bf56d47dc0e8582e5c320465cd9fb2ba77f1ba5fef36bf02a8471e4e1f5d6
+mtime: 1768902846
+commit: 19b9fc60d30a6d7d8d439f6457c9f243ba196517bdf98b8c579b5d63a6591ebf
 url: https://src.opensuse.org/xmpp/xmpp-dns.git
-revision: e46bf56d47dc0e8582e5c320465cd9fb2ba77f1ba5fef36bf02a8471e4e1f5d6
+revision: 19b9fc60d30a6d7d8d439f6457c9f243ba196517bdf98b8c579b5d63a6591ebf
 projectscmsync: https://src.opensuse.org/xmpp/_ObsPrj.git
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.8FMalc/_old  2026-01-20 21:05:05.425377565 +0100
+++ /var/tmp/diff_new_pack.8FMalc/_new  2026-01-20 21:05:05.429377731 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://salsa.debian.org/mdosch/xmpp-dns.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.5.3</param>
+    <param name="revision">v0.6.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">disable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-01-20 10:54:33.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ vendor.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/golang.org/x/text/unicode/bidi/core.go 
new/vendor/golang.org/x/text/unicode/bidi/core.go
--- old/vendor/golang.org/x/text/unicode/bidi/core.go   2025-09-24 
20:08:37.000000000 +0200
+++ new/vendor/golang.org/x/text/unicode/bidi/core.go   2026-01-15 
20:07:10.000000000 +0100
@@ -427,13 +427,6 @@
 
 func (i *isolatingRunSequence) Len() int { return len(i.indexes) }
 
-func maxLevel(a, b level) level {
-       if a > b {
-               return a
-       }
-       return b
-}
-
 // Rule X10, second bullet: Determine the start-of-sequence (sos) and 
end-of-sequence (eos) types,
 // either L or R, for each isolating run sequence.
 func (p *paragraph) isolatingRunSequence(indexes []int) *isolatingRunSequence {
@@ -474,8 +467,8 @@
                indexes: indexes,
                types:   types,
                level:   level,
-               sos:     typeForLevel(maxLevel(prevLevel, level)),
-               eos:     typeForLevel(maxLevel(succLevel, level)),
+               sos:     typeForLevel(max(prevLevel, level)),
+               eos:     typeForLevel(max(succLevel, level)),
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt      2025-09-24 20:08:37.000000000 +0200
+++ new/vendor/modules.txt      2026-01-15 20:07:10.000000000 +0100
@@ -4,10 +4,10 @@
 # github.com/pborman/getopt/v2 v2.1.0
 ## explicit; go 1.13
 github.com/pborman/getopt/v2
-# golang.org/x/net v0.44.0
+# golang.org/x/net v0.49.0
 ## explicit; go 1.24.0
 golang.org/x/net/idna
-# golang.org/x/text v0.29.0
+# golang.org/x/text v0.33.0
 ## explicit; go 1.24.0
 golang.org/x/text/secure/bidirule
 golang.org/x/text/transform

++++++ xmpp-dns-0.5.3.tar.gz -> xmpp-dns-0.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/CHANGELOG.md 
new/xmpp-dns-0.6.0/CHANGELOG.md
--- old/xmpp-dns-0.5.3/CHANGELOG.md     2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/CHANGELOG.md     2026-01-15 20:07:10.000000000 +0100
@@ -1,5 +1,26 @@
 # Changelog
 
+## [0.6.0] 2026-01-15
+### Added
+- Add flag `--client-dtls` for adding arbitrary targets for C2S with direct 
TLS.
+- Add flag `--client-stls` for adding arbitrary targets for C2S with StartTLS.
+- Add flag `--server-dtls` for adding arbitrary targets for S2S with direct 
TLS.
+- Add flag `--server-stls` for adding arbitrary targets for S2S with StartTLS.
+
+## [0.5.6] 2026-01-11
+### Changed
+- Update link relations to version of 2025-10-14.
+- Only resolve IPs when `-v` is set.
+
+## [0.5.5] 2026-01-02
+### Added
+- Print expiry date when certificate expires within the next 14 days (only 
xmpp and xmpps connections).
+- Add flag `--force-fallback` to enforce checks on standard ports, even if SRV 
records are provided.
+
+## [0.5.4] 2025-10-14
+### Changed
+- Fix calculation of remaining days for certificate expiry warning.
+
 ## [0.5.3] 2025-09-24
 ### Added
 - Print warning if certificate expires in less than 14 days (only xmpp and 
xmpps connections).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/README.md new/xmpp-dns-0.6.0/README.md
--- old/xmpp-dns-0.5.3/README.md        2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/README.md        2026-01-15 20:07:10.000000000 +0100
@@ -33,19 +33,34 @@
 ## usage
 
 ```
-Usage: xmpp-dns [-46cfstv] [--dot] [--help] [--no-color] [--resolver value] 
[--timeout value] [--tls-version value] [--version] [parameters ...]
+Usage: xmpp-dns [-46cfstv] [--client-dtls value] [--client-stls value] [--dot] 
[--force-fallback] [--help] [--no-color] [--resolver value] [--server-dtls 
value] [--server-stls value] [--timeout value] [--tls-version value] 
[--version] [xmpp server]
  -4              Resolve IPv4.
  -6              Resolve IPv6.
  -c, --client    Show client SRV records.
-     --dot       Use DoT.
- -f, --fallback  Check fallback (Standard ports on A/AAAA records) if no SRV
+     --client-dtls=value
+                 Add an arbitrary target for C2S with direct TLS in the form
+                 domain:port. Can be invoked several times.
+     --client-stls=value
+                 Add an arbitrary target for C2S with StartTLS in the form
+                 domain:port. Can be invoked several times.
+     --dot       Use DNSoverTLS (DoT), see also "--resolver".
+ -f, --fallback  Additionally check fallback (Standard ports on A/AAAA 
records) if no SRV
                  records are provided.
+     --force-fallback
+                 Check fallback (Standard ports on A/AAAA records) even if
+                 SRV records are provided.
      --help      Show help.
      --no-color  Don't colorize output.
      --resolver=value
                  Custom resolver e.g. "1.1.1.1" for common DNS or
                  "5.1.66.255#dot.ffmuc.net" for usage with "--dot".
  -s, --server    Show server SRV records.
+     --server-dtls=value
+                 Add an arbitrary target for S2S with direct TLS in the form
+                 domain:port. Can be invoked several times.
+     --server-stls=value
+                 Add an arbitrary target for S2S with StartTLS in the form
+                 domain:port. Can be invoked several times.
  -t              Test connection and certificates.
      --timeout=value
                  Connection timeout in seconds. [60]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/go.mod new/xmpp-dns-0.6.0/go.mod
--- old/xmpp-dns-0.5.3/go.mod   2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/go.mod   2026-01-15 20:07:10.000000000 +0100
@@ -7,8 +7,8 @@
 require (
        github.com/gorilla/websocket v1.5.3
        github.com/pborman/getopt/v2 v2.1.0
-       golang.org/x/net v0.44.0
+       golang.org/x/net v0.49.0
        salsa.debian.org/mdosch/xmppsrv v0.3.3
 )
 
-require golang.org/x/text v0.29.0 // indirect
+require golang.org/x/text v0.33.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/go.sum new/xmpp-dns-0.6.0/go.sum
--- old/xmpp-dns-0.5.3/go.sum   2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/go.sum   2026-01-15 20:07:10.000000000 +0100
@@ -2,9 +2,9 @@
 github.com/gorilla/websocket v1.5.3/go.mod 
h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/pborman/getopt/v2 v2.1.0 
h1:eNfR+r+dWLdWmV8g5OlpyrTYHkhVNxHBdN2cCrJmOEA=
 github.com/pborman/getopt/v2 v2.1.0/go.mod 
h1:4NtW75ny4eBw9fO1bhtNdYTlZKYX5/tBLtsOpwKIKd0=
-golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
-golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
-golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
-golang.org/x/text v0.29.0/go.mod 
h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
+golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
+golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
+golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
+golang.org/x/text v0.33.0/go.mod 
h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
 salsa.debian.org/mdosch/xmppsrv v0.3.3 
h1:F8FGyw1Q1LkAs/UbIXd6Obd33q2CKWrIxxrzvuLSVuM=
 salsa.debian.org/mdosch/xmppsrv v0.3.3/go.mod 
h1:udWXnWFa9zkcyN9YSB/u44BCnnRDpeQ0eDy3MVLjHZQ=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/linkrel.go 
new/xmpp-dns-0.6.0/linkrel.go
--- old/xmpp-dns-0.5.3/linkrel.go       2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/linkrel.go       2026-01-15 20:07:10.000000000 +0100
@@ -11,7 +11,7 @@
 
 func isKnownLinkRel(s string) bool {
        // https://www.iana.org/assignments/link-relations/link-relations.xhtml
-       // as of 2025-06-03
-       linkRels := []string{"about", "acl", "alternate", "amphtml", 
"api-catalog", "appendix", "apple-touch-icon", "apple-touch-startup-image", 
"archives", "author", "blocked-by", "bookmark", "c2pa-manifest", "canonical", 
"chapter", "cite-as", "collection", "compression-dictionary", "contents", 
"convertedfrom", "copyright", "create-form", "current", "deprecation", 
"describedby", "describes", "disclosure", "dns-prefetch", "duplicate", "edit", 
"edit-form", "edit-media", "enclosure", "external", "first", "glossary", 
"help", "hosts", "hub", "ice-server", "icon", "index", "intervalafter", 
"intervalbefore", "intervalcontains", "intervaldisjoint", "intervalduring", 
"intervalequals", "intervalfinishedby", "intervalfinishes", "intervalin", 
"intervalmeets", "intervalmetby", "intervaloverlappedby", "intervaloverlaps", 
"intervalstartedby", "intervalstarts", "item", "last", "latest-version", 
"license", "linkset", "lrdd", "manifest", "mask-icon", "me", "media-feed", 
"memento", "micropub", "modulepreloa
 d", "monitor", "monitor-group", "next", "next-archive", "nofollow", 
"noopener", "noreferrer", "opener", "openid2.local_id", "openid2.provider", 
"original", "p3pv1", "payment", "pingback", "preconnect", 
"predecessor-version", "prefetch", "preload", "prerender", "prev", "preview", 
"previous", "prev-archive", "privacy-policy", "profile", "publication", 
"related", "restconf", "replies", "ruleinput", "search", "section", "self", 
"service", "service-desc", "service-doc", "service-meta", 
"sip-trunking-capability", "sponsored", "start", "status", "stylesheet", 
"subsection", "successor-version", "sunset", "tag", "terms-of-service", 
"timegate", "timemap", "type", "ugc", "up", "version-history", "via", 
"webmention", "working-copy", "working-copy-of"}
+       // as of 2025-10-14
+       linkRels := []string{"about", "acl", "alternate", "amphtml", 
"api-catalog", "appendix", "apple-touch-icon", "apple-touch-startup-image", 
"archives", "author", "blocked-by", "bookmark", "c2pa-manifest", "canonical", 
"chapter", "cite-as", "collection", "compression-dictionary", "contents", 
"convertedfrom", "copyright", "create-form", "current", "deprecation", 
"describedby", "describes", "disclosure", "dns-prefetch", "duplicate", "edit", 
"edit-form", "edit-media", "enclosure", "external", "first", "glossary", 
"help", "hosts", "hub", "ice-server", "icon", "index", "intervalafter", 
"intervalbefore", "intervalcontains", "intervaldisjoint", "intervalduring", 
"intervalequals", "intervalfinishedby", "intervalfinishes", "intervalin", 
"intervalmeets", "intervalmetby", "intervaloverlappedby", "intervaloverlaps", 
"intervalstartedby", "intervalstarts", "item", "last", "latest-version", 
"license", "linkset", "lrdd", "manifest", "mask-icon", "me", "media-feed", 
"memento", "micropub", "modulepreloa
 d", "monitor", "monitor-group", "next", "next-archive", "nofollow", 
"noopener", "noreferrer", "opener", "openid2.local_id", "openid2.provider", 
"original", "p3pv1", "payment", "pingback", "preconnect", 
"predecessor-version", "prefetch", "preload", "prerender", "prev", "preview", 
"previous", "prev-archive", "privacy-policy", "profile", "publication", 
"rdap-active", "rdap-bottom", "rdap-down", "rdap-top", "rdap-up", "related", 
"restconf", "replies", "ruleinput", "search", "section", "self", "service", 
"service-desc", "service-doc", "service-meta", "sip-trunking-capability", 
"sponsored", "start", "status", "stylesheet", "subsection", 
"successor-version", "sunset", "tag", "terms-of-service", "timegate", 
"timemap", "type", "ugc", "up", "version-history", "via", "webmention", 
"working-copy", "working-copy-of"}
        return slices.Contains(linkRels, strings.ToLower(s))
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/main.go new/xmpp-dns-0.6.0/main.go
--- old/xmpp-dns-0.5.3/main.go  2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/main.go  2026-01-15 20:07:10.000000000 +0100
@@ -20,6 +20,7 @@
        "net/url"
        "os"
        "runtime"
+       "strconv"
        "strings"
        "time"
 
@@ -30,7 +31,7 @@
 )
 
 const (
-       version             = "0.5.3"
+       version             = "0.6.0"
        nsBOSH              = "urn:xmpp:alt-connections:xbosh"
        nsC2SdTLS           = "urn:xmpp:alt-connections:tls"
        nsC2SQuic           = "urn:xmpp:alt-connections:quic"
@@ -90,12 +91,18 @@
        flagTLSVersion := getopt.IntLong("tls-version", 0, 12,
                "Minimal TLS version. 10 (TSLv1.0), 11 (TLSv1.1), 12 (TLSv1.2) 
or 13 (TLSv1.3).")
        flagVersion := getopt.BoolLong("version", 0, "Show version 
information.")
-       flagFallback := getopt.BoolLong("fallback", 'f', "Check fallback 
(Standard ports on A/AAAA records)"+
+       flagFallback := getopt.BoolLong("fallback", 'f', "Additionally check 
fallback (Standard ports on A/AAAA records)"+
                " if no SRV records are provided.")
+       flagForceFallback := getopt.BoolLong("force-fallback", 0, "Check 
fallback (Standard ports on A/AAAA records)"+
+               " even if SRV records are provided.")
        flagTimeout := getopt.IntLong("timeout", 0, 60, "Connection timeout in 
seconds.")
        flagResolver := getopt.StringLong("resolver", 0, "", "Custom resolver 
e.g. \"1.1.1.1\" for common DNS"+
                " or \"5.1.66.255#dot.ffmuc.net\" for usage with \"--dot\".")
        flagDoT := getopt.BoolLong("dot", 0, "Use DNSoverTLS (DoT), see also 
\"--resolver\".")
+       flagClientDTLS := getopt.ListLong("client-dtls", 0, "Add an arbitrary 
target for C2S with direct TLS in the form domain:port. Can be invoked several 
times.")
+       flagClientSTLS := getopt.ListLong("client-stls", 0, "Add an arbitrary 
target for C2S with StartTLS in the form domain:port. Can be invoked several 
times.")
+       flagServerDTLS := getopt.ListLong("server-dtls", 0, "Add an arbitrary 
target for S2S with direct TLS in the form domain:port. Can be invoked several 
times.")
+       flagServerSTLS := getopt.ListLong("server-stls", 0, "Add an arbitrary 
target for S2S with StartTLS in the form domain:port. Can be invoked several 
times.")
 
        // Parse command line flags.
        getopt.Parse()
@@ -130,18 +137,18 @@
                *flagVerbose = true
        }
 
-       // If neither IPv4 nor Ipv6 is specified we'll use both.
-       if !*flagV4 && !*flagV6 {
-               *flagV4 = true
-               *flagV6 = true
-       }
-
        // If either IPv4 or IPv6 is specified but the verbose flag
        // is not set, we'll just set it.
        if !*flagVerbose && (*flagV4 || *flagV6) {
                *flagVerbose = true
        }
 
+       // If neither IPv4 nor Ipv6 is specified we'll use both.
+       if !*flagV4 && !*flagV6 {
+               *flagV4 = true
+               *flagV6 = true
+       }
+
        // If DoT is enabled a resolver must be set.
        if *flagDoT && *flagResolver == "" {
                log.Fatal("A resolver must be specified for DoT.")
@@ -149,6 +156,7 @@
 
        // Read server from command line.
        server := getopt.Args()
+       fmt.Println("args:", server)
        switch count := len(server); {
        case count == 0:
                log.Fatal("Please specify a server.")
@@ -195,26 +203,78 @@
        }
 
        if *flagClient {
+               var fallback bool
                clientRecords, err := c.LookupClient(serverASCII)
                if err != nil && len(clientRecords) == 0 {
                        fmt.Println(err)
                        if *flagFallback && *flagTest {
+                               fallback = true
                                fmt.Println("Trying fallback ports.")
                                fmt.Println()
-                               clientRecords = []xmppsrv.SRV{
-                                       {
-                                               Type:   "xmpp-client",
-                                               Target: server[0],
-                                               Port:   5222,
-                                       },
+                       }
+               }
+               if len(*flagClientDTLS) > 0 {
+                       for _, cdtls := range *flagClientDTLS {
+                               target := strings.SplitN(cdtls, ":", 2)
+                               port, err := strconv.ParseUint(target[1], 10, 
16)
+                               if err != nil {
+                                       fmt.Println(err)
+                                       continue
+                               }
+                               cr := xmppsrv.SRV{
+                                       Type:   "xmpps-client",
+                                       Target: target[0],
+                                       Port:   uint16(port),
+                               }
+                               clientRecords = append(clientRecords, cr)
+                       }
+               }
+               if len(*flagClientSTLS) > 0 {
+                       for _, cstls := range *flagClientSTLS {
+                               target := strings.SplitN(cstls, ":", 2)
+                               port, err := strconv.ParseUint(target[1], 10, 
16)
+                               if err != nil {
+                                       fmt.Println(err)
+                                       continue
+                               }
+                               cr := xmppsrv.SRV{
+                                       Type:   "xmpp-client",
+                                       Target: target[0],
+                                       Port:   uint16(port),
+                               }
+                               clientRecords = append(clientRecords, cr)
+                       }
+               }
+               if *flagForceFallback && !fallback && *flagTest {
+                       if len(clientRecords) > 0 {
+                               var standardPort bool
+                               for _, r := range clientRecords {
+                                       if r.Type == "xmpp-client" &&
+                                               (r.Target == server[0] ||
+                                                       r.Target == 
server[0]+".") &&
+                                               r.Port == 5222 {
+                                               standardPort = true
+                                       }
+                               }
+                               if !standardPort {
+                                       fallback = true
                                }
                        }
                }
+               if fallback {
+                       cr := xmppsrv.SRV{
+                               Type:   "xmpp-client",
+                               Target: server[0],
+                               Port:   5222,
+                       }
+                       clientRecords = append(clientRecords, cr)
+               }
                checkRecord(clientRecords, *flagVerbose, *flagV4, *flagV6, 
*flagTest,
                        server[0], &tlsConfig, timeout)
        }
 
        if *flagServer {
+               var fallback bool
                if *flagClient {
                        fmt.Println()
                }
@@ -222,16 +282,66 @@
                if err != nil && len(serverRecords) == 0 {
                        fmt.Println(err)
                        if *flagFallback && *flagTest {
+                               fallback = true
                                fmt.Println("Trying fallback ports.")
                                fmt.Println()
-                               serverRecords = []xmppsrv.SRV{
-                                       {
-                                               Type:   "xmpp-server",
-                                               Target: serverASCII,
-                                               Port:   5269,
-                                       },
+                       }
+               }
+               if len(*flagServerDTLS) > 0 {
+                       for _, sdtls := range *flagServerDTLS {
+                               target := strings.SplitN(sdtls, ":", 2)
+                               port, err := strconv.ParseUint(target[1], 10, 
16)
+                               if err != nil {
+                                       fmt.Println(err)
+                                       continue
+                               }
+                               sr := xmppsrv.SRV{
+                                       Type:   "xmpps-server",
+                                       Target: target[0],
+                                       Port:   uint16(port),
+                               }
+                               serverRecords = append(serverRecords, sr)
+                       }
+               }
+               if len(*flagServerSTLS) > 0 {
+                       for _, sstls := range *flagServerSTLS {
+                               target := strings.SplitN(sstls, ":", 2)
+                               port, err := strconv.ParseUint(target[1], 10, 
16)
+                               if err != nil {
+                                       fmt.Println(err)
+                                       continue
+                               }
+                               sr := xmppsrv.SRV{
+                                       Type:   "xmpp-server",
+                                       Target: target[0],
+                                       Port:   uint16(port),
                                }
+                               serverRecords = append(serverRecords, sr)
+                       }
+               }
+               if *flagForceFallback && !fallback && *flagTest {
+                       if len(serverRecords) > 0 {
+                               var standardPort bool
+                               for _, r := range serverRecords {
+                                       if r.Type == "xmpp-server" &&
+                                               (r.Target == serverASCII ||
+                                                       r.Target == 
serverASCII+".") &&
+                                               r.Port == 5269 {
+                                               standardPort = true
+                                       }
+                               }
+                               if !standardPort {
+                                       fallback = true
+                               }
+                       }
+               }
+               if fallback {
+                       sr := xmppsrv.SRV{
+                               Type:   "xmpp-server",
+                               Target: serverASCII,
+                               Port:   5269,
                        }
+                       serverRecords = append(serverRecords, sr)
                }
                checkRecord(serverRecords, *flagVerbose, *flagV4, *flagV6, 
*flagTest,
                        server[0], &tlsConfig, timeout)
@@ -293,20 +403,20 @@
                                        switch record.Type {
                                        case "xmpp-client":
                                                startTLS("client", serverName, 
c, tlsConfig, timeout)
-                                               c.Close()
+                                               _ = c.Close()
                                        case "xmpps-client":
                                                tlsConfig.NextProtos = 
[]string{"xmpp-client"}
                                                directTLS("client", serverName, 
c, tlsConfig, timeout)
-                                               c.Close()
+                                               _ = c.Close()
                                        case "xmpp-server":
                                                startTLS("server", serverName, 
c, tlsConfig, timeout)
-                                               c.Close()
+                                               _ = c.Close()
                                        case "xmpps-server":
                                                tlsConfig.NextProtos = 
[]string{"xmpp-server"}
                                                directTLS("server", serverName, 
c, tlsConfig, timeout)
-                                               c.Close()
+                                               _ = c.Close()
                                        default:
-                                               c.Close()
+                                               _ = c.Close()
                                        }
                                }
                        }
@@ -403,14 +513,14 @@
                fmt.Println("Server sent failure.")
                return
        }
-       _, err = c.Write([]byte(fmt.Sprintf("<starttls xmlns='%s'/>", 
nsStartTLS)))
+       _, err = fmt.Fprintf(c, "<starttls xmlns='%s'/>", nsStartTLS)
        if err != nil {
                fmt.Println(statusNOK)
                fmt.Println(err)
                return
        }
-       for !(serverProceed.XMLName.Local == "proceed" &&
-               serverProceed.Xmlns == nsStartTLS) {
+       for serverProceed.XMLName.Local != "proceed" &&
+               serverProceed.Xmlns != nsStartTLS {
                _, err = c.Read(buf)
                if err != nil {
                        fmt.Println(statusNOK)
@@ -454,7 +564,7 @@
                }
        } else {
                checkCertExpiry(d)
-               d.Close()
+               _ = d.Close()
        }
 }
 
@@ -563,7 +673,6 @@
                if resp.StatusCode == 404 {
                        return
                }
-               defer resp.Body.Close()
                body, err := io.ReadAll(resp.Body)
                if err != nil {
                        return
@@ -605,6 +714,7 @@
                                fmt.Printf("Unknown connection method: %s\n", 
link.Rel)
                        }
                }
+               _ = resp.Body.Close()
        }
 }
 
@@ -639,7 +749,6 @@
        if resp.StatusCode == 404 {
                return
        }
-       defer resp.Body.Close()
        body, err := io.ReadAll(resp.Body)
        if err != nil {
                return
@@ -720,7 +829,7 @@
                                                                }
                                                                
tlsConfig.NextProtos = []string{"xmpp-client"}
                                                                
directTLS("client", serverName, c, tlsConfig, timeout)
-                                                               c.Close()
+                                                               _ = c.Close()
                                                        }
                                                }
                                        }
@@ -757,7 +866,7 @@
                                                                }
                                                                
tlsConfig.NextProtos = []string{"xmpp-server"}
                                                                
directTLS("client", serverName, c, tlsConfig, timeout)
-                                                               c.Close()
+                                                               _ = c.Close()
                                                        }
                                                }
                                        }
@@ -824,6 +933,7 @@
                        }
                }
        }
+       _ = resp.Body.Close()
 }
 
 func checkBOSH(server string, target string, ipv4 bool, ipv6 bool, tlsConfig 
*tls.Config,
@@ -888,7 +998,6 @@
                fmt.Println(err)
                return
        }
-       defer resp.Body.Close()
        respBody, err := io.ReadAll(resp.Body)
        if err != nil {
                return
@@ -923,6 +1032,7 @@
                fmt.Printf("%s (%sno TLS%s)", statusNOK, colorRed, colorReset)
        }
        fmt.Println()
+       _ = resp.Body.Close()
 }
 
 func checkWebSocket(server string, target string, tlsConfig *tls.Config, 
timeout time.Duration, targetType string) {
@@ -1086,9 +1196,10 @@
        now := time.Now()
        switch {
        case time.Until(expiry).Hours() < 336:
-               fmt.Printf("%s[OK]%s", colorYellow, colorReset)
+               fmt.Printf("[%sOK%s]", colorYellow, colorReset)
                printTLSVersion(c.ConnectionState().Version)
-               fmt.Printf(" (Cert expires in %d days.)\n", 
int(time.Until(expiry).Hours())%24)
+               fmt.Printf(" (Cert expires in %d days at %s)\n",
+                       int(time.Until(expiry).Hours())/24, 
expiry.Truncate(time.Second).String())
        case now.Before(expiry) && now.After(start):
                fmt.Print(statusOK)
                printTLSVersion(c.ConnectionState().Version)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/man/xmpp-dns.1 
new/xmpp-dns-0.6.0/man/xmpp-dns.1
--- old/xmpp-dns-0.5.3/man/xmpp-dns.1   2025-09-24 20:08:37.000000000 +0200
+++ new/xmpp-dns-0.6.0/man/xmpp-dns.1   2026-01-15 20:07:10.000000000 +0100
@@ -1,10 +1,10 @@
-.\" generated with Ronn-NG/v0.9.1
-.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
-.TH "XMPP\-DNS" "1" "April 2024" ""
+.\" generated with Ronn-NG/v0.10.1
+.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
+.TH "XMPP\-DNS" "1" "January 2026" ""
 .SH "NAME"
 \fBxmpp\-dns\fR \- A CLI tool to check XMPP SRV records\.
 .SH "SYNOPSIS"
-\fBxmpp\-dns\fR [\-46cfstv] [\-\-help] [\-\-no\-color] [\-\-timeout value] 
[\-\-tls\-version value] [\-\-version] [parameters \|\.\|\.\|\.]
+\fBxmpp\-dns\fR [\-46cfstv] [\-\-client\-dtls value] [\-\-client\-stls value] 
[\-\-dot] [\-\-force\-fallback] [\-\-help] [\-\-no\-color] [\-\-resolver value] 
[\-\-server\-dtls value] [\-\-server\-stls value] [\-\-timeout value] 
[\-\-tls\-version value] [\-\-version] \fBxmpp\-server\fR
 .SH "DESCRIPTION"
 A little CLI tool to check SRV records for XMPP\. Beside showing the records 
it can also try to connect to the server and also test StartTLS and direct TLS\.
 .SH "OPTIONS"
@@ -18,11 +18,20 @@
 \fB\-c\fR, \fB\-\-client\fR
 Show client SRV records\.
 .TP
+\fB\-\-client\-dtls\fR=[\fIvalue\fR]
+Add an arbitrary target for C2S with direct TLS in the form 
\fBdomain:port\fR\. Can be invoked several times\.
+.TP
+\fB\-\-client\-stls\fR=[\fIvalue\fR]
+Add an arbitrary target for C2S with StartTLS in the form \fBdomain:port\fR\. 
Can be invoked several times\.
+.TP
 \fB\-\-dot\fR
 Use DoT, see also \fB\-\-resolver\fR\.
 .TP
 \fB\-f\fR, \fB\-\-fallback\fR
-Check fallback (Standard ports on A/AAAA records) if no SRV records are 
provided\.
+Check fallback (standard ports on A/AAAA records) if no SRV records are 
provided\.
+.TP
+\fB\-\-force\-fallback\fR
+Additionally heck fallback (standard ports on A/AAAA records) even if SRV 
records are provided\.
 .TP
 \fB\-\-help\fR
 Show help\.
@@ -36,6 +45,12 @@
 \fB\-s\fR, \fB\-\-server\fR
 Show server SRV records\.
 .TP
+\fB\-\-server\-dtls\fR=[\fIvalue\fR]
+Add an arbitrary target for S2S with direct TLS in the form 
\fBdomain:port\fR\. Can be invoked several times\.
+.TP
+\fB\-\-server\-stls\fR=[\fIvalue\fR]
+Add an arbitrary target for S2S with StartTLS in the form \fBdomain:port\fR\. 
Can be invoked several times\.
+.TP
 \fB\-t\fR
 Test connection and certificates\.
 .TP
@@ -55,12 +70,18 @@
 There are no shell completions yet (contributions welcome) but for zsh it is 
possible to automatically create completions from \fB\-\-help\fR which might 
work good enough\.
 .P
 Just place the following in your \fB~/\.zshrc\fR or \fB~/\.zshrc\.local\fR:
-.P
-\fBcompdef _gnu_generic xmpp\-dns\fR
+.IP "" 4
+.nf
+compdef _gnu_generic xmpp\-dns
+.fi
+.IP "" 0
 .SS "FISH"
 There are no shell completions yet, but FISH can generate them from the man 
page with following command:
-.P
-\fBfish_update_completions\fR
+.IP "" 4
+.nf
+fish_update_completions
+.fi
+.IP "" 0
 .SH "CHAT"
 There is no dedicated chat for \fBxmpp\-dns\fR, but feel free to join 
\fIhttps://join\.jabber\.network/#go\-sendxmpp@chat\.mdosch\.de?join\fR\.
 .SH "AUTHOR"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/man/xmpp-dns.1.html 
new/xmpp-dns-0.6.0/man/xmpp-dns.1.html
--- old/xmpp-dns-0.5.3/man/xmpp-dns.1.html      2025-09-24 20:08:37.000000000 
+0200
+++ new/xmpp-dns-0.6.0/man/xmpp-dns.1.html      2026-01-15 20:07:10.000000000 
+0100
@@ -1,8 +1,8 @@
 <!DOCTYPE html>
 <html>
 <head>
-  <meta http-equiv='content-type' content='text/html;charset=utf8'>
-  <meta name='generator' content='Ronn-NG/v0.9.1 
(http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
+  <meta http-equiv='content-type' content='text/html;charset=utf-8'>
+  <meta name='generator' content='Ronn-NG/v0.10.1 
(http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
   <title>xmpp-dns(1) - A CLI tool to check XMPP SRV records.</title>
   <style type='text/css' media='all'>
   /* style: man */
@@ -78,7 +78,7 @@
 </p>
 <h2 id="SYNOPSIS">SYNOPSIS</h2>
 
-<p><code>xmpp-dns</code> [-46cfstv] [--help] [--no-color] [--timeout value] 
[--tls-version value] [--version] [parameters ...]</p>
+<p><code>xmpp-dns</code> [-46cfstv] [--client-dtls value] [--client-stls 
value] [--dot] [--force-fallback] [--help] [--no-color] [--resolver value] 
[--server-dtls value] [--server-stls value] [--timeout value] [--tls-version 
value] [--version] <strong>xmpp-server</strong></p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -96,12 +96,20 @@
 <code>-c</code>, <code>--client</code>
 </dt>
 <dd>Show client SRV records.</dd>
+<dt>
+<code>--client-dtls</code>=[<var>value</var>]</dt>
+<dd>Add an arbitrary target for C2S with direct TLS in the form 
<strong>domain:port</strong>. Can be invoked several times.</dd>
+<dt>
+<code>--client-stls</code>=[<var>value</var>]</dt>
+<dd>Add an arbitrary target for C2S with StartTLS in the form 
<strong>domain:port</strong>. Can be invoked several times.</dd>
 <dt><code>--dot</code></dt>
 <dd>Use DoT, see also <code>--resolver</code>.</dd>
 <dt>
 <code>-f</code>, <code>--fallback</code>
 </dt>
-<dd>Check fallback (Standard ports on A/AAAA records) if no SRV records are 
provided.</dd>
+<dd>Check fallback (standard ports on A/AAAA records) if no SRV records are 
provided.</dd>
+<dt><code>--force-fallback</code></dt>
+<dd>Additionally heck fallback (standard ports on A/AAAA records) even if SRV 
records are provided.</dd>
 <dt><code>--help</code></dt>
 <dd>Show help.</dd>
 <dt><code>--no-color</code></dt>
@@ -112,6 +120,12 @@
 <code>-s</code>, <code>--server</code>
 </dt>
 <dd>Show server SRV records.</dd>
+<dt>
+<code>--server-dtls</code>=[<var>value</var>]</dt>
+<dd>Add an arbitrary target for S2S with direct TLS in the form 
<strong>domain:port</strong>. Can be invoked several times.</dd>
+<dt>
+<code>--server-stls</code>=[<var>value</var>]</dt>
+<dd>Add an arbitrary target for S2S with StartTLS in the form 
<strong>domain:port</strong>. Can be invoked several times.</dd>
 <dt><code>-t</code></dt>
 <dd>Test connection and certificates.</dd>
 <dt>
@@ -137,17 +151,15 @@
 
 <p>Just place the following in your <code>~/.zshrc</code> or 
<code>~/.zshrc.local</code>:</p>
 
-<p><code>
-compdef _gnu_generic xmpp-dns
-</code></p>
+<pre><code>compdef _gnu_generic xmpp-dns
+</code></pre>
 
 <h3 id="FISH">FISH</h3>
 
 <p>There are no shell completions yet, but FISH can generate them from the man 
page with following command:</p>
 
-<p><code>
-fish_update_completions
-</code></p>
+<pre><code>fish_update_completions
+</code></pre>
 
 <h2 id="CHAT">CHAT</h2>
 
@@ -169,7 +181,7 @@
 
   <ol class='man-decor man-foot man foot'>
     <li class='tl'></li>
-    <li class='tc'>April 2024</li>
+    <li class='tc'>January 2026</li>
     <li class='tr'>xmpp-dns(1)</li>
   </ol>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xmpp-dns-0.5.3/man/xmpp-dns.1.ronn 
new/xmpp-dns-0.6.0/man/xmpp-dns.1.ronn
--- old/xmpp-dns-0.5.3/man/xmpp-dns.1.ronn      2025-09-24 20:08:37.000000000 
+0200
+++ new/xmpp-dns-0.6.0/man/xmpp-dns.1.ronn      2026-01-15 20:07:10.000000000 
+0100
@@ -3,7 +3,7 @@
 
 ## SYNOPSIS
 
-`xmpp-dns` [-46cfstv] [--help] [--no-color] [--timeout value] [--tls-version 
value] [--version] [parameters ...]
+`xmpp-dns` [-46cfstv] [--client-dtls value] [--client-stls value] [--dot] 
[--force-fallback] [--help] [--no-color] [--resolver value] [--server-dtls 
value] [--server-stls value] [--timeout value] [--tls-version value] 
[--version] **xmpp-server**
 
 ## DESCRIPTION
 
@@ -21,11 +21,20 @@
 * `-c`, `--client`:
 Show client SRV records.
 
+* `--client-dtls`=[<value>]:
+Add an arbitrary target for C2S with direct TLS in the form **domain:port**. 
Can be invoked several times.
+
+* `--client-stls`=[<value>]:
+Add an arbitrary target for C2S with StartTLS in the form **domain:port**. Can 
be invoked several times.
+
 * `--dot`:
 Use DoT, see also `--resolver`.
 
 * `-f`, `--fallback`:
-Check fallback (Standard ports on A/AAAA records) if no SRV records are 
provided.
+Check fallback (standard ports on A/AAAA records) if no SRV records are 
provided.
+
+* `--force-fallback`:
+Additionally heck fallback (standard ports on A/AAAA records) even if SRV 
records are provided.
 
 * `--help`:
 Show help.
@@ -39,6 +48,12 @@
 * `-s`, `--server`:
 Show server SRV records.
 
+* `--server-dtls`=[<value>]:
+Add an arbitrary target for S2S with direct TLS in the form **domain:port**. 
Can be invoked several times.
+
+* `--server-stls`=[<value>]:
+Add an arbitrary target for S2S with StartTLS in the form **domain:port**. Can 
be invoked several times.
+
 * `-t`:
 Test connection and certificates.
 

Reply via email to