Files
caliverse_server/ServerCommon/Helper/StringRuleHelper.cs
2025-05-01 07:20:41 +09:00

108 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
namespace ServerCommon;
public static class StringRuleHelper
{
public static ServerErrorCode isValidNickname(string nickName)
{
ArgumentNullReferenceCheckHelper.throwIfNull(nickName, () => $"stringValue is null");
// 첫번째 글자가 숫자인지 체크 한다.
if (Regex.IsMatch(nickName[0].ToString(), "[0-9]") == true)
{
return ServerErrorCode.UserNicknameNotAllowedNumberAtFirstChars;
}
// 특수문자가 포함되어 있는지 체크 한다.
if (true == nickName.isContainSpecialChars(out _))
{
return ServerErrorCode.UserNicknameNotAllowWithSpecialChars;
}
// 길이 체크
if ( nickName.Length < MetaHelper.GameConfigMeta.UserNicknameMinLength ||
nickName.Length > MetaHelper.GameConfigMeta.UserNicknameMaxLength )
{
return ServerErrorCode.UserNicknameAllowedMin2ToMax12;
}
// 금지어 여부를 체크 한다.
if (StringRuleHelper.isBanNickname(nickName) == true)
{
Log.getLogger().info($"User Nickname is Ban !!! : nickname:{nickName}");
return ServerErrorCode.UserNicknameBan;
}
return ServerErrorCode.Success;
}
public static string convertStringFromBase64(string stringValue)
{
ArgumentNullReferenceCheckHelper.throwIfNull(stringValue, () => $"stringValue is null");
string decoded_text = string.Empty;
try
{
byte[] byteArray = Convert.FromBase64String(stringValue);
decoded_text = Encoding.UTF8.GetString(byteArray);
}
catch (Exception e)
{
Log.getLogger().error($"convertStringFromBase64 exception occured {e.StackTrace}");
}
return decoded_text;
}
public static string getString(LanguageType langType, List<OperationSystemMessage> systemMessage)
{
ArgumentNullReferenceCheckHelper.throwIfNull(systemMessage, () => $"systemMessage is null");
string txt = string.Empty;
foreach (var msg in systemMessage)
{
if ((int)msg.LanguageType == (int)langType)
{
//var base64_string = StringRuleHelper.convertStringFromBase64(msg.Text);
txt = msg.Text;
break;
}
}
return txt;
}
public static bool isBanWord(string word, bool includeNickname)
{
var lowered_word = word.ToLower();
if (MetaData.Instance._BanWordMetaTable.Any(banWord => lowered_word.Contains(banWord) == true))
{
return true;
}
return includeNickname && isBanNickname(word);
}
private static bool isBanNickname(string word)
{
var lowered_word = word.ToLower();
return MetaData.Instance._BanWordNicknameMetaTable.Any(banNickNameWord => lowered_word.Contains(banNickNameWord) == true);
}
}