NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)