summary refs log tree commit diff homepage
path: root/src/http.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/http.cr')
-rw-r--r--src/http.cr10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/http.cr b/src/http.cr
index 248a746..9562c2e 100644
--- a/src/http.cr
+++ b/src/http.cr
@@ -26,6 +26,7 @@ require "./xhtml"
 HTML_HEADINGS = Set{"applicants", "criteria", "joining", "members"}
 MAX_CONTENT_LENGTH = 4096
 MAX_NICK_LENGTH = 32
+NICK_PATTERN = "[0-9a-z]{1,#{MAX_NICK_LENGTH}}"
 OPENNIC_TLD = Set{".bbs", ".chan", ".cyb", ".dyn", ".epic",
                   ".geek", ".gopher", ".indy", ".libre", ".neo",
                   ".null", ".o", ".oss", ".oz", ".parody", ".pirate"}
@@ -63,11 +64,9 @@ class Server
         params[key] = value
         case key
         when "nick"
-          if value.size > MAX_NICK_LENGTH
-            next errors["nick"] = "Must be within #{MAX_NICK_LENGTH} characters"
-          end
-          if /^[0-9a-z]+$/ !~ value
-            next errors["nick"] = "Must be ASCII lowercase alphanumeric"
+          if /^#{NICK_PATTERN}$/ !~ value
+            # Manually crafted request or non-mainstream browser engine
+            next errors["nick"] = "Must match #{NICK_PATTERN}"
           end
         when "opennic"
           uri = URI.parse value
@@ -135,6 +134,7 @@ class Server
       obj = arg.as Server
       case table
       when "member"
+        # FIXME: query in a different conn
         obj.opennic_page.write
         obj.icann_page.write
       end