@ -38,11 +38,28 @@ private:
QRegularExpression ( QStringLiteral ( " ^[a-zA-Z0-9._ -]{4,20} " ) ) ;
QRegularExpressionValidator nickname ;
/// ipv4 address only
// TODO remove this when we support hostnames in direct connect
/// ipv4 / ipv6 / hostnames
QRegularExpression ip_regex = QRegularExpression ( QStringLiteral (
" (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) \\ .){3}([0-9]|[1-9][0-9]|1[0-9]{2}| "
" 2[0-4][0-9]|25[0-5]) " ) ) ;
// IPv4 regex
" ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) \\ .){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$| "
// IPv6 regex
" ^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))| "
" (([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)( \\ .(25[0- "
" 5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3})|:))| "
" (([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d) "
" ( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3})|:))| "
" (([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4] "
" \\ d|1 \\ d \\ d|[1-9]? \\ d)( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3}))|:))| "
" (([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[ "
" 0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3}))|:))| "
" (([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[ "
" 0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3}))|:))| "
" (([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[ "
" 0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3}))|:))| "
" (:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? "
" \\ d)( \\ .(25[0-5]|2[0-4] \\ d|1 \\ d \\ d|[1-9]? \\ d)){3}))|:)))(%.+)?$| "
// Hostname regex
" ^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)* \\ .)+[a-zA-Z]{2,}$ " ) ) ;
QRegularExpressionValidator ip ;
/// port must be between 0 and 65535