also sanitize server names

This commit is contained in:
Matthias Mailänder
2015-05-10 21:07:22 +02:00
parent 736b169319
commit edca755540
3 changed files with 23 additions and 2 deletions

View File

@@ -130,6 +130,9 @@ namespace OpenRA.Server
Port = localEndpoint.Port; Port = localEndpoint.Port;
Settings = settings; Settings = settings;
Settings.Name = OpenRA.Settings.SanitizedServerName(Settings.Name);
ModData = modData; ModData = modData;
randomSeed = (int)DateTime.Now.ToBinary(); randomSeed = (int)DateTime.Now.ToBinary();

View File

@@ -321,6 +321,15 @@ namespace OpenRA
return clean; return clean;
} }
public static string SanitizedServerName(string dirty)
{
var clean = SanitizedName(dirty);
if (string.IsNullOrWhiteSpace(clean))
return new ServerSettings().Name;
else
return clean;
}
public static string SanitizedPlayerName(string dirty) public static string SanitizedPlayerName(string dirty)
{ {
var forbiddenNames = new string[] { "Open", "Closed" }; var forbiddenNames = new string[] { "Open", "Closed" };

View File

@@ -55,8 +55,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
panel.Get<LabelWidget>("MAP_NAME").GetText = () => preview.Title; panel.Get<LabelWidget>("MAP_NAME").GetText = () => preview.Title;
} }
panel.Get<TextFieldWidget>("SERVER_NAME").Text = settings.Server.Name ?? ""; var serverName = panel.Get<TextFieldWidget>("SERVER_NAME");
serverName.Text = Settings.SanitizedServerName(settings.Server.Name);
serverName.OnEnterKey = () => { serverName.YieldKeyboardFocus(); return true; };
serverName.OnLoseFocus = () =>
{
serverName.Text = Settings.SanitizedServerName(serverName.Text);
settings.Server.Name = serverName.Text;
};
panel.Get<TextFieldWidget>("LISTEN_PORT").Text = settings.Server.ListenPort.ToString(); panel.Get<TextFieldWidget>("LISTEN_PORT").Text = settings.Server.ListenPort.ToString();
advertiseOnline = Game.Settings.Server.AdvertiseOnline; advertiseOnline = Game.Settings.Server.AdvertiseOnline;
var externalPort = panel.Get<TextFieldWidget>("EXTERNAL_PORT"); var externalPort = panel.Get<TextFieldWidget>("EXTERNAL_PORT");
@@ -80,7 +89,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void CreateAndJoin() void CreateAndJoin()
{ {
var name = panel.Get<TextFieldWidget>("SERVER_NAME").Text; var name = Settings.SanitizedServerName(panel.Get<TextFieldWidget>("SERVER_NAME").Text);
int listenPort, externalPort; int listenPort, externalPort;
if (!Exts.TryParseIntegerInvariant(panel.Get<TextFieldWidget>("LISTEN_PORT").Text, out listenPort)) if (!Exts.TryParseIntegerInvariant(panel.Get<TextFieldWidget>("LISTEN_PORT").Text, out listenPort))
listenPort = 1234; listenPort = 1234;