diff options
Diffstat (limited to 'src/http.cr')
-rw-r--r-- | src/http.cr | 10 |
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 |