bannedwords_client.py (2930B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\bannedwords\client\bannedwords_client.py 2 import uthread2 3 from carbon.common.script.sys.service import Service 4 from ..bannedwords_regexes import Regexes 5 from caching.memoize import Memoize 6 import log 7 import monolithconfig 8 from eveexceptions import UserError 9 REGEXES_TYPES = ['blocked', 'intercepted'] 10 11 class BannedWordsClientService(Service): 12 __guid__ = 'svc.bannedwords_client' 13 __startupdependencies__ = ['machoNet'] 14 __notifyevents__ = ['OnSessionChanged'] 15 16 def Run(self, memStream = None): 17 self.regexes_blocked = Regexes(self.fetch_regexes, REGEXES_TYPES[0]) 18 self.regexes_intercepted = Regexes(self.fetch_regexes, REGEXES_TYPES[1]) 19 monolithconfig.add_global_config_callback(self.update_config_values) 20 21 def update_config_values(self): 22 self.bw_regex_enabled = monolithconfig.enabled('banned_words_enabled') 23 self.bw_search_enabled = monolithconfig.enabled('banned_words_search_enabled') 24 bw_banned_character_from_id = monolithconfig.get_value('bw_banned_character_from_id') 25 try: 26 self.bw_banned_character_from_id = int(bw_banned_character_from_id) 27 except: 28 log.LogInfo('Could not parse banned_words_banned_character_from_id. Reverting to default : 0 ') 29 self.bw_banned_character_from_id = 0 30 31 def fetch_regexes(self, reg_type): 32 res = [] 33 try: 34 res = sm.RemoteSvc('bannedwords').fetch_regexes(reg_type) 35 except: 36 log.LogInfo('bannedwords get Regex from server error') 37 38 return res 39 40 @Memoize(15) 41 def update_regexes(self): 42 self.regexes_blocked.fetch_and_compile() 43 self.regexes_intercepted.fetch_and_compile() 44 45 def check_chat_words_allowed(self, *wordsList, **kwargs): 46 if self.bw_regex_enabled: 47 self.update_regexes() 48 for words in wordsList: 49 self.regexes_blocked.check_words_allowed(words, **kwargs) 50 51 def check_chat_character_allowed(self, characterID): 52 if self.bw_banned_character_from_id > 0 and self.bw_banned_character_from_id <= characterID: 53 raise UserError('NewCharacterBanned') 54 55 def OnSessionChanged(self, isRemote, sess, change): 56 log.LogInfo('bannedwords on session changed userid: {}, change: {}'.format(sess.userid, change)) 57 if sess.userid and 'userid' in change and not change['userid'][0]: 58 if self.bw_regex_enabled: 59 uthread2.StartTasklet(self.update_regexes) 60 61 def check_words_allowed(self, *wordsList, **kwargs): 62 if self.bw_regex_enabled: 63 sm.RemoteSvc('bannedwords').check_words_allowed(*wordsList, **kwargs) 64 65 def check_search_words_allowed(self, *wordsList, **kwargs): 66 if self.bw_search_enabled: 67 sm.RemoteSvc('bannedwords').check_search_words_allowed(*wordsList, **kwargs)