SMOLNET PORTAL home about changes
iadd function to check server/hostname - gopher-validator - Simple gopher menu validator.	Err	bitreich.org	70
hgit clone git://bitreich.org/gopher-validator git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-validator	URL:git://bitreich.org/gopher-validator git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-validator	bitreich.org	70
1Log	/scm/gopher-validator/log.gph	bitreich.org	70
1Files	/scm/gopher-validator/files.gph	bitreich.org	70
1Refs	/scm/gopher-validator/refs.gph	bitreich.org	70
1Tags	/scm/gopher-validator/tag	bitreich.org	70
1README	/scm/gopher-validator/file/README.gph	bitreich.org	70
1LICENSE	/scm/gopher-validator/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit e4a622665300d0c8c5ce1a4fa6608f6733f3c191	/scm/gopher-validator/commit/e4a622665300d0c8c5ce1a4fa6608f6733f3c191.gph	bitreich.org	70
1parent 5ca656215b1e77b7fef4dcf37cd6e429146b9426	/scm/gopher-validator/commit/5ca656215b1e77b7fef4dcf37cd6e429146b9426.gph	bitreich.org	70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org>	URL:mailto:hiltjo@codemadness.org	bitreich.org	70
iDate:   Sat, 10 Aug 2019 20:27:37 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iadd function to check server/hostname	Err	bitreich.org	70
i	Err	bitreich.org	70
ithis check is incomplete, but should cover some cases	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M gopher-validator.c                  |      38 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 38 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/gopher-validator.c b/gopher-validator.c	/scm/gopher-validator/file/gopher-validator.c.gph	bitreich.org	70
i@@ -130,6 +130,41 @@ warning(const char *fmt, ...)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i int	Err	bitreich.org	70
i+isvalidserver(const char *s)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int colons;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        /* IPv6 */	Err	bitreich.org	70
i+        if (*s == '[') {	Err	bitreich.org	70
i+                colons = 0;	Err	bitreich.org	70
i+                s++;	Err	bitreich.org	70
i+                for (; *s; s++) {	Err	bitreich.org	70
i+                        if (*s == ':')	Err	bitreich.org	70
i+                                colons++;	Err	bitreich.org	70
i+                        else if (*s == ']')	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                        else if (isxdigit((unsigned char)*s))	Err	bitreich.org	70
i+                                ;	Err	bitreich.org	70
i+                        else	Err	bitreich.org	70
i+                                return 0;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                if (colons < 2 || *s != ']')	Err	bitreich.org	70
i+                        return 0;	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                if (!*s)	Err	bitreich.org	70
i+                        return 0;	Err	bitreich.org	70
i+                for (; *s; s++) {	Err	bitreich.org	70
i+                        if (!isalpha((unsigned char)*s) &&	Err	bitreich.org	70
i+                            !isdigit((unsigned char)*s) &&	Err	bitreich.org	70
i+                            *s != '-' && *s != '.')	Err	bitreich.org	70
i+                                return 0;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return 1;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i edial(const char *host, const char *port)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct addrinfo hints, *res, *res0;	Err	bitreich.org	70
i@@ -312,6 +347,9 @@ checkdir(FILE *fp)	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+                if (!isvalidserver(v.server))	Err	bitreich.org	70
i+                        error("%zu: invalid server: %s\n", linenr, v.server);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i                 /* check port, must be numeric and in range, port 0 is allowed:	Err	bitreich.org	70
i                 "Appendix:	Err	bitreich.org	70
i                 Note: Port corresponds the the TCP Port Number, its value should	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gopher-validator/commit/e4a62...
Content-Typetext/plain; charset=utf-8