108 lines
3.1 KiB
C#
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);
|
|
}
|
|
}
|