fix ip address input (add better validation)

This commit is contained in:
Mister_Nebula 2022-01-14 19:26:58 +00:00
parent aac5c82b8b
commit e5e2a9d70b

View File

@ -5,6 +5,7 @@ using QSB.SaveSync.Messages;
using QSB.Utility; using QSB.Utility;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using UnityEngine; using UnityEngine;
using UnityEngine.Networking; using UnityEngine.Networking;
using UnityEngine.UI; using UnityEngine.UI;
@ -151,6 +152,7 @@ namespace QSB.Menus
{ {
IPPopup = MenuApi.MakeInputFieldPopup("IP Address", "IP Address", "Connect", "Cancel"); IPPopup = MenuApi.MakeInputFieldPopup("IP Address", "IP Address", "Connect", "Cancel");
IPPopup.OnPopupConfirm += Connect; IPPopup.OnPopupConfirm += Connect;
IPPopup.OnPopupValidate += Validate;
InfoPopup = MenuApi.MakeInfoPopup("", ""); InfoPopup = MenuApi.MakeInfoPopup("", "");
InfoPopup.OnDeactivateMenu += OnCloseInfoPopup; InfoPopup.OnDeactivateMenu += OnCloseInfoPopup;
@ -306,13 +308,16 @@ namespace QSB.Menus
DisconnectPopup._labelText.text = popupText; DisconnectPopup._labelText.text = popupText;
} }
private bool Validate()
{
var inputText = ((PopupInputMenu)IPPopup).GetInputText();
var regex = new Regex(@"\A(?:(?: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]?)\z");
return inputText == "localhost" || regex.Match(inputText).Success;
}
private void Connect() private void Connect()
{ {
var address = string.Concat(((PopupInputMenu)IPPopup).GetInputText().Where(c => !char.IsWhiteSpace(c))); var address = ((PopupInputMenu)IPPopup).GetInputText();
if (address.Length == 0)
{
address = QSBCore.DefaultServerIP;
}
QSBNetworkManager.Instance.networkAddress = address; QSBNetworkManager.Instance.networkAddress = address;
QSBNetworkManager.Instance.StartClient(); QSBNetworkManager.Instance.StartClient();