diff options
| author | SoRadGaming <sohorhab.azizdel@outlook.com> | 2023-01-18 01:43:39 +1100 | 
|---|---|---|
| committer | Sorab <sohorhab.azizdel@outlook.com> | 2023-01-28 18:33:21 +1100 | 
| commit | ad712926d6f6417ea86e65b542cd2197ecd774ba (patch) | |
| tree | dcfbd67d3d83c007969190b6f01ead5547c9bf25 | |
| parent | 28fde29924ed356c5714d1eccc4210e263a7dbdb (diff) | |
LDN Hostname Support in Direct Connect
- Added IPv6 & Namespace support in direct connection Regex
- Updated Tooltip for Direct Connect UI
- Removed Dropdown Connection Type in Direct Connect
| -rw-r--r-- | src/yuzu/multiplayer/direct_connect.cpp | 21 | ||||
| -rw-r--r-- | src/yuzu/multiplayer/direct_connect.ui | 23 | ||||
| -rw-r--r-- | src/yuzu/multiplayer/validation.h | 25 | 
3 files changed, 38 insertions, 31 deletions
| diff --git a/src/yuzu/multiplayer/direct_connect.cpp b/src/yuzu/multiplayer/direct_connect.cpp index cbd52da85..d71cc23a7 100644 --- a/src/yuzu/multiplayer/direct_connect.cpp +++ b/src/yuzu/multiplayer/direct_connect.cpp @@ -81,20 +81,13 @@ void DirectConnectWindow::Connect() {              }          }      } -    switch (static_cast<ConnectionType>(ui->connection_type->currentIndex())) { -    case ConnectionType::TraversalServer: -        break; -    case ConnectionType::IP: -        if (!ui->ip->hasAcceptableInput()) { -            NetworkMessage::ErrorManager::ShowError( -                NetworkMessage::ErrorManager::IP_ADDRESS_NOT_VALID); -            return; -        } -        if (!ui->port->hasAcceptableInput()) { -            NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::PORT_NOT_VALID); -            return; -        } -        break; +    if (!ui->ip->hasAcceptableInput()) { +        NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::IP_ADDRESS_NOT_VALID); +        return; +    } +    if (!ui->port->hasAcceptableInput()) { +        NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::PORT_NOT_VALID); +        return;      }      // Store settings diff --git a/src/yuzu/multiplayer/direct_connect.ui b/src/yuzu/multiplayer/direct_connect.ui index 57d6ec25a..0dd4e6829 100644 --- a/src/yuzu/multiplayer/direct_connect.ui +++ b/src/yuzu/multiplayer/direct_connect.ui @@ -27,19 +27,10 @@            <number>0</number>           </property>           <item> -          <widget class="QComboBox" name="connection_type"> -           <item> -            <property name="text"> -             <string>IP Address</string> -            </property> -           </item> -          </widget> -         </item> -         <item>            <widget class="QWidget" name="ip_container" native="true">             <layout class="QHBoxLayout" name="ip_layout">              <property name="leftMargin"> -             <number>5</number> +             <number>0</number>              </property>              <property name="topMargin">               <number>0</number> @@ -53,17 +44,17 @@              <item>               <widget class="QLabel" name="label_2">                <property name="text"> -               <string>IP</string> +               <string>Server Address</string>                </property>               </widget>              </item>              <item>               <widget class="QLineEdit" name="ip">                <property name="toolTip"> -               <string><html><head/><body><p>IPv4 address of the host</p></body></html></string> +               <string><html><head/><body><p>Server address of the host</p></body></html></string>                </property>                <property name="maxLength"> -               <number>16</number> +               <number>253</number>                </property>               </widget>              </item> @@ -85,6 +76,12 @@                <property name="placeholderText">                 <string notr="true" extracomment="placeholder string that tells user default port">24872</string>                </property> +              <property name="maximumSize"> +               <size> +                <width>65</width> +                <height>50</height> +               </size> +              </property>               </widget>              </item>             </layout> diff --git a/src/yuzu/multiplayer/validation.h b/src/yuzu/multiplayer/validation.h index dd25af280..cbbe6757b 100644 --- a/src/yuzu/multiplayer/validation.h +++ b/src/yuzu/multiplayer/validation.h @@ -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 | 
