Skip to content

Commit 7adccc8

Browse files
Fix being able to /setinfo lastip to invalid values
1 parent f3f57f5 commit 7adccc8

File tree

1 file changed

+18
-56
lines changed

1 file changed

+18
-56
lines changed

fCraft/Commands/MaintenanceCommands.cs

Lines changed: 18 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -614,79 +614,41 @@ static void SetInfoHandler( Player player, CommandReader cmd ) {
614614
case "hasrtr":
615615
bool rtr;
616616
bool.TryParse(valName, out rtr);
617-
if (SetPlayerInfoField(player, "HasRTR", info, info.HasRTR.ToString(), rtr.ToString()))
618-
{
617+
if (SetPlayerInfoField(player, "HasRTR", info, info.HasRTR.ToString(), rtr.ToString())) {
619618
info.HasRTR = rtr;
620619
break;
621-
}
622-
else
623-
{
620+
} else {
624621
return;
625622
}
626623

627624
case "displayedname":
628625
case "dn":
629626
case "nick":
630-
string oldDisplayedName = info.DisplayedName;
631-
if( valName.Length == 0 ) valName = null;
632-
if( valName == info.DisplayedName ) {
633-
if( valName == null ) {
634-
player.Message( "SetInfo: DisplayedName for {0} is not set.",
635-
info.Name );
636-
} else {
637-
player.Message( "SetInfo: DisplayedName for {0} is already set to \"{1}&S\"",
638-
info.Name,
639-
valName );
640-
}
641-
return;
642-
}
643-
info.DisplayedName = valName;
644-
645-
if( oldDisplayedName == null ) {
646-
player.Message( "SetInfo: DisplayedName for {0} set to \"{1}&S\"",
647-
info.Name,
648-
valName );
649-
} else if( valName == null ) {
650-
player.Message( "SetInfo: DisplayedName for {0} was reset (was \"{1}&S\")",
651-
info.Name,
652-
oldDisplayedName );
627+
if (valName.Length == 0) valName = null;
628+
if (SetPlayerInfoField(player, "DisplayedName", info, info.DisplayedName, valName)) {
629+
info.DisplayedName = valName;
630+
break;
653631
} else {
654-
player.Message( "SetInfo: DisplayedName for {0} changed from \"{1}&S\" to \"{2}&S\"",
655-
info.Name,
656-
oldDisplayedName,
657-
valName );
632+
return;
658633
}
659-
break;
634+
660635
case "ip":
661636
case "ipaddress":
662637
case "lastip":
663-
IPAddress oldIP = info.LastIP;
664-
if( valName.Length == 0 ) valName = IPAddress.None.ToString();
665-
if( valName == info.LastIP.ToString() ) {
666-
if( valName == null ) {
667-
player.Message( "SetInfo: LastIP for {0} is not set.",
668-
info.Name );
669-
} else {
670-
player.Message( "SetInfo: LastIP for {0} is already set to \"{1}&S\"",
671-
info.Name,
672-
info.LastIP.ToString() );
673-
}
638+
if (valName.Length == 0) valName = IPAddress.None.ToString();
639+
IPAddress ip;
640+
if (!IPAddress.TryParse(valName, out ip)) {
641+
player.Message("SetInfo: Could not parse value given for LastIP.");
674642
return;
675643
}
676-
if (IPAddress.TryParse(valName, out info.LastIP)) {
677-
info.LastIP = IPAddress.Parse(valName);
678-
}
679-
if( oldIP == null ) {
680-
player.Message( "SetInfo: LastIP for {0} set to \"{1}&S\"",
681-
info.Name, valName );
682-
} else if( valName == null ) {
683-
player.Message( "SetInfo: LastIP for {0} was reset (was \"{1}&S\")",
684-
info.Name, oldIP.ToString() );
644+
645+
string oldIP = info.LastIP == null ? null : info.LastIP.ToString();
646+
if (SetPlayerInfoField( player, "LastIP", info, oldIP, valName)) {
647+
info.LastIP = ip;
648+
break;
685649
} else {
686-
player.Message( "SetInfo: LastIP for {0} changed from \"{1}&S\" to \"{2}&S\"",
687-
info.Name, oldIP.ToString(), valName );
650+
return;
688651
}
689-
break;
690652
default:
691653
player.Message( "Only the following properties are editable: " +
692654
"TimesKicked, PreviousRank, TotalTime, RankChangeType, " +

0 commit comments

Comments
 (0)