diff options
author | Al Korgun <alkorgun@gmail.com> | 2012-11-13 00:59:21 +0400 |
---|---|---|
committer | Al Korgun <alkorgun@gmail.com> | 2012-11-13 00:59:21 +0400 |
commit | 4683b672e25f41c78f7457fdf56e165eddb260f7 (patch) | |
tree | c335acafb38dcb2325c7afa61b89f7ff72b948e8 | |
parent | e1719d7fdebdc28322a1d442172f224f84915038 (diff) |
added 2 commands: download, shorten (url shortener); sheriff optimized; converter's help fixed; added silent shutdown/reload
-rw-r--r-- | BlackSmith.py | 24 | ||||
-rw-r--r-- | expansions/access/insc.py | 2 | ||||
-rw-r--r-- | expansions/allweb/code.py | 85 | ||||
-rw-r--r-- | expansions/allweb/download.en | 8 | ||||
-rw-r--r-- | expansions/allweb/download.name | 4 | ||||
-rw-r--r-- | expansions/allweb/download.ru | 8 | ||||
-rw-r--r-- | expansions/allweb/google.en | 2 | ||||
-rw-r--r-- | expansions/allweb/shorten.en | 4 | ||||
-rw-r--r-- | expansions/allweb/shorten.name | 4 | ||||
-rw-r--r-- | expansions/allweb/shorten.ru | 4 | ||||
-rw-r--r-- | expansions/basic_control/code.py | 24 | ||||
-rw-r--r-- | expansions/basic_control/exit.en | 4 | ||||
-rw-r--r-- | expansions/basic_control/exit.ru | 4 | ||||
-rw-r--r-- | expansions/basic_control/insc.py | 4 | ||||
-rw-r--r-- | expansions/basic_control/reload.en | 4 | ||||
-rw-r--r-- | expansions/basic_control/reload.ru | 4 | ||||
-rw-r--r-- | expansions/books/books.en | 2 | ||||
-rw-r--r-- | expansions/books/library.en | 2 | ||||
-rw-r--r-- | expansions/converter/code.py | 4 | ||||
-rw-r--r-- | expansions/interpreter/eval.en | 2 | ||||
-rw-r--r-- | expansions/sheriff/code.py | 25 | ||||
-rw-r--r-- | expansions/sheriff/insc.py | 42 | ||||
-rw-r--r-- | librarys.zip | bin | 98976 -> 98976 bytes |
23 files changed, 202 insertions, 64 deletions
diff --git a/BlackSmith.py b/BlackSmith.py index 0728523..a6f7ac5 100644 --- a/BlackSmith.py +++ b/BlackSmith.py @@ -264,7 +264,7 @@ GenConFile = static % ("config.ini") ConDispFile = static % ("clients.ini") ChatsFile = dynamic % ("chats.db") -(BsMark, BsVer, BsRev) = (2, 32, 0) +(BsMark, BsVer, BsRev) = (2, 33, 0) if os.access(SvnCache, os.R_OK): Cache = open(SvnCache).readlines() @@ -1080,7 +1080,7 @@ def get_pipe(command): data = "(...)" return data -class Web(object): +class Web: import urllib as One, urllib2 as Two @@ -1109,9 +1109,14 @@ class Web(object): dest.add_header(header, desc) return self.Opener.open(dest) - def download(self, filename = None, feedback = None, header = ()): + def download(self, filename = None, folder = None, feedback = None, header = ()): fp = self.open(header) info = fp.info() + size = info.get("Content-Length", -1) + if isNumber(size): + size = int(size) + else: + raise SelfExc("server gives no info about file size") if not filename: if info.has_key("Content-Disposition"): disp = info.get("Content-Disposition") @@ -1123,16 +1128,17 @@ class Web(object): filename = self.One.unquote_plus(fp.url.split("/")[-1].split("?")[0].replace("%25", "%")) if not filename: raise SelfExc("can't get filename") + if folder: + filename = os.path.join(folder, filename) + if AsciiSys: + filename = filename.encode("utf-8") blockSize = 8192 blockNumb = 0 read = 0 - size = info.get("Content-Length", -1) - if isNumber(size): - size = int(size) - with open(filename.encode("utf-8"), "wb") as dfp: + with open(filename, "wb") as dfp: while VarCache["alive"]: if feedback: - exec_(feedback, (blockNumb, blockSize, size)) + exec_(feedback, (info, blockNumb, blockSize, size)) data = fp.read(blockSize) if not data: break @@ -1141,6 +1147,8 @@ class Web(object): read += len(data) if size >= 0 and read < size: raise SelfExc("file is corrupt, lost %d bytes" % (size - read)) + if AsciiSys: + filename = filename.decode("utf-8") return (filename, info, size) get_page = lambda self, header = (): self.open(header).read() diff --git a/expansions/access/insc.py b/expansions/access/insc.py index f4a4dd5..4a9b9ca 100644 --- a/expansions/access/insc.py +++ b/expansions/access/insc.py @@ -18,7 +18,7 @@ else: AnsBase_temp = ( "Your access = %s", # 0 "%s's access = %s", # 1 - "I have no information about '%s'.", # 2 + "I have no info about '%s'.", # 2 "No global accesses.", # 3 "No local accesses.", # 4 "Access list:\n", # 5 diff --git a/expansions/allweb/code.py b/expansions/allweb/code.py index e21f371..583c49e 100644 --- a/expansions/allweb/code.py +++ b/expansions/allweb/code.py @@ -1,8 +1,8 @@ # coding: utf-8 # BlackSmith mark.2 -exp_name = "allweb" # /code.py v.x15 -# Id: 25~15b +exp_name = "allweb" # /code.py v.x17 +# Id: 25~17b # Code © (2011-2012) by WitcherGeralt [alkorgun@gmail.com] expansion_register(exp_name) @@ -514,6 +514,83 @@ class expansion_temp(expansion): answer = self.AnsBase[1] Answer(answer, ltype, source, disp) + def command_url_shorten(self, ltype, source, body, disp): + if body: + Req = Web("http://is.gd/create.php?", [("format", "json"), ("url", body.encode("utf-8"))]) + try: + data = Req.get_page(self.UserAgent) + except Web.Two.HTTPError, exc: + answer = str(exc) + except: + answer = self.AnsBase[0] + else: + try: + data = self.json.loads(data) + except: + answer = self.AnsBase[1] + else: + try: + answer = data["shorturl"] + except KeyError: + try: + answer = data["errormessage"] + except KeyError: + answer = self.AnsBase[5] + else: + answer = AnsBase[1] + Answer(answer, ltype, source, disp) + + def download_process(self, info, blockNumb, blockSize, size): + if not blockNumb: + Print("\n") + Print(info, color4) + else: + done = (blockNumb * blockSize) + if done >= size: + Print("Done.", color3) + else: + Print("loaded - %.2f%s" % ((done / (float(size) / 100)), chr(37)), color4) + + def command_download(self, ltype, source, body, disp): + if body: + body = body.split() + if len(body) == 1: + link = body.pop() + folder = None + filename = None + elif len(body) == 2: + link, folder = body + filename = None + else: + link, folder, filename = body[:3] + if folder: + if AsciiSys: + folder = folder.encode("utf-8") + if not os.path.isdir(folder): + try: + os.makedirs(folder) + except: + link = None + if AsciiSys: + folder = folder.decode("utf-8") + if link: + Req = Web(link) + try: + data = Req.download(filename, folder, self.download_process, self.UserAgent) + except Web.Two.HTTPError, exc: + answer = str(exc) + except SelfExc: + answer = exc_info()[1] + except: + answer = self.AnsBase[0] + else: + answer = "Done.\nPath: %s\nSize: %s" % (data[0], Size2Text(data[2])) + else: + answer = AnsBase[2] + else: + answer = AnsBase[1] + Answer(answer, ltype, source, disp) + if DefLANG in ("RU", "UA"): def command_chuck(self, ltype, source, body, disp): @@ -532,7 +609,7 @@ class expansion_temp(expansion): comp = compile__("<a href=/quote/(\d+?)>.+?<blockquote>(.+?)</blockquote>", 16) data = comp.search(data) if data: - answer = self.decodeHTML("Fact: #%s\n%s" % data.groups()) + answer = self.decodeHTML("#%s\n%s" % data.groups()) else: answer = self.AnsBase[1] Answer(answer, ltype, source, disp) @@ -874,6 +951,8 @@ class expansion_temp(expansion): (command_google_translate, "tr", 2,), (command_imdb, "imdb", 2,), (command_python, "python", 2,), + (command_url_shorten, "shorten", 2,), + (command_download, "download", 2,), (command_chuck, "chuck", 2,), (command_bash, "bash", 2,) ) diff --git a/expansions/allweb/download.en b/expansions/allweb/download.en new file mode 100644 index 0000000..db2bf4f --- /dev/null +++ b/expansions/allweb/download.en @@ -0,0 +1,8 @@ +file downloader
+download [url] (folder) (filename)
+*/download http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip
+bot would download Black-2.30.r71.zip
+*/download http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip Downloads
+bot would put file into "Downloads"
+*/download http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip Downloads Black-2.zip
+bot would put file into "Downloads" with name "Black-2.zip"
\ No newline at end of file diff --git a/expansions/allweb/download.name b/expansions/allweb/download.name new file mode 100644 index 0000000..b8512bf --- /dev/null +++ b/expansions/allweb/download.name @@ -0,0 +1,4 @@ +{
+ "RU": "скачать",
+ "UA": "скачать"
+}
\ No newline at end of file diff --git a/expansions/allweb/download.ru b/expansions/allweb/download.ru new file mode 100644 index 0000000..6d465c2 --- /dev/null +++ b/expansions/allweb/download.ru @@ -0,0 +1,8 @@ +загрузка файлов
+скачать [ссылка] (папка) (имя_файла)
+*/скачать http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip
+бот скачает Black-2.30.r71.zip
+*/скачать http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip Downloads
+бот скачает файл с папку "Downloads"
+*/скачать http://blacksmith-2.googlecode.com/files/Black-2.30.r71.zip Downloads Black-2.zip
+бот скачает файл с папку "Downloads" с именем "Black-2.zip"
\ No newline at end of file diff --git a/expansions/allweb/google.en b/expansions/allweb/google.en index 6d4bf49..12bbf84 100644 --- a/expansions/allweb/google.en +++ b/expansions/allweb/google.en @@ -1,6 +1,6 @@ google search
google [text/*]
-*/google
+*/google blah blah
bot would show 1st search result
*/google *
bot would show next result
\ No newline at end of file diff --git a/expansions/allweb/shorten.en b/expansions/allweb/shorten.en new file mode 100644 index 0000000..a99678d --- /dev/null +++ b/expansions/allweb/shorten.en @@ -0,0 +1,4 @@ +url shortener (powered by is.gd)
+shorten [url]
+*/shorten http://code.google.com/p/blacksmith-2/
+bot would shorten url to http://is.gd/FntYVl
\ No newline at end of file diff --git a/expansions/allweb/shorten.name b/expansions/allweb/shorten.name new file mode 100644 index 0000000..46b91c1 --- /dev/null +++ b/expansions/allweb/shorten.name @@ -0,0 +1,4 @@ +{
+ "RU": "сократи",
+ "UA": "сократи"
+}
\ No newline at end of file diff --git a/expansions/allweb/shorten.ru b/expansions/allweb/shorten.ru new file mode 100644 index 0000000..fc069a6 --- /dev/null +++ b/expansions/allweb/shorten.ru @@ -0,0 +1,4 @@ +сокращение ссылкок (при помощи is.gd)
+сократи [ссылка]
+*/сократи http://code.google.com/p/blacksmith-2/
+сократит ссылку до http://is.gd/FntYVl
\ No newline at end of file diff --git a/expansions/basic_control/code.py b/expansions/basic_control/code.py index 53e96d1..31bf81b 100644 --- a/expansions/basic_control/code.py +++ b/expansions/basic_control/code.py @@ -1,8 +1,8 @@ # coding: utf-8 # BlackSmith mark.2 -exp_name = "basic_control" # /code.py v.x9 -# Id: 06~3b +exp_name = "basic_control" # /code.py v.x10 +# Id: 06~4b # Code © (2009-2011) by WitcherGeralt [alkorgun@gmail.com] expansion_register(exp_name) @@ -166,10 +166,11 @@ class expansion_temp(expansion): def command_reload(self, ltype, source, body, disp): exit_desclr = self.AnsBase[11] % (source[2]) - if body: - exit_desclr += self.AnsBase[1] % (body) - for conf in Chats.keys(): - Message(conf, exit_desclr, Chats[conf].disp) + if body not in ("silent", "тихо".decode("utf-8")): + if body: + exit_desclr += self.AnsBase[1] % (body) + for conf in Chats.keys(): + Message(conf, exit_desclr, Chats[conf].disp) time.sleep(6) VarCache["alive"] = False iThr.Threads_kill() @@ -180,11 +181,12 @@ class expansion_temp(expansion): Exit("\n\nRestart command...", 0, 15) def command_exit(self, ltype, source, body, disp): - exit_desclr = self.AnsBase[12] % (source[2]) - if body: - exit_desclr += self.AnsBase[1] % (body) - for conf in Chats.keys(): - Message(conf, exit_desclr, Chats[conf].disp) + exit_desclr = self.AnsBase[11] % (source[2]) + if body not in ("silent", "тихо".decode("utf-8")): + if body: + exit_desclr += self.AnsBase[1] % (body) + for conf in Chats.keys(): + Message(conf, exit_desclr, Chats[conf].disp) time.sleep(6) VarCache["alive"] = False iThr.Threads_kill() diff --git a/expansions/basic_control/exit.en b/expansions/basic_control/exit.en index 22f6f40..44e888e 100644 --- a/expansions/basic_control/exit.en +++ b/expansions/basic_control/exit.en @@ -1,6 +1,8 @@ bot's shutdown
-exit (reason)
+exit (reason/silent)
*/exit
bot would shutdown
+*/exit silent
+bot would shutdown silently
*/exit update
bot would shutdown with status "update"
\ No newline at end of file diff --git a/expansions/basic_control/exit.ru b/expansions/basic_control/exit.ru index 6c8a3aa..c180255 100644 --- a/expansions/basic_control/exit.ru +++ b/expansions/basic_control/exit.ru @@ -1,6 +1,8 @@ выключение бота
-выкл (причина)
+выкл (причина/тихо)
*/выкл
бот вырубится
+*/выкл тихо
+бот вырубится тихо
*/выкл обновление
бот выключится со статусом "обновление"
\ No newline at end of file diff --git a/expansions/basic_control/insc.py b/expansions/basic_control/insc.py index 3cf4537..41205cb 100644 --- a/expansions/basic_control/insc.py +++ b/expansions/basic_control/insc.py @@ -3,7 +3,7 @@ if DefLANG in ("RU", "UA"): AnsBase_temp = tuple([line.decode("utf-8") for line in ( "Внимание! %s (%s) загнал меня в -» '%s'", # 0 - "\nПричина: %s", # 1 + "\n\tПричина: %s", # 1 "Ага я зашел в -» '%s'", # 2 "Не смог зайти в -» '%s'", # 3 "АХТУНГ! %s (%s) выгнал меня из -» '%s'", # 4 @@ -24,7 +24,7 @@ if DefLANG in ("RU", "UA"): else: AnsBase_temp = ( "Attention! %s (%s) sent me in to -> '%s'", # 0 - "\nReason: %s", # 1 + "\n\tReason: %s", # 1 "I have joined -> '%s'", # 2 "I can't join -> '%s'", # 3 "Attention! %s (%s) ordered me to leave -> '%s'", # 4 diff --git a/expansions/basic_control/reload.en b/expansions/basic_control/reload.en index a50ec6d..b78fe35 100644 --- a/expansions/basic_control/reload.en +++ b/expansions/basic_control/reload.en @@ -1,6 +1,8 @@ bot reloads
-reload (reason)
+reload (reason/silent)
*/reload
bot would reload
+*/reload silent
+bot would reload silently
*/reload diagnostics
bot would reload with status "diagnostics"
\ No newline at end of file diff --git a/expansions/basic_control/reload.ru b/expansions/basic_control/reload.ru index dddf20c..77f1b69 100644 --- a/expansions/basic_control/reload.ru +++ b/expansions/basic_control/reload.ru @@ -1,6 +1,8 @@ бот перезагружается
-рестарт (причина)
+рестарт (причина/тихо)
*/рестарт
бот перезагрузится
+*/рестарт тихо
+бот перезагрузится тихо
*/рестарт диагностика
бот перезагрузится со статусом "диагностика"
\ No newline at end of file diff --git a/expansions/books/books.en b/expansions/books/books.en index 7df3619..847f293 100644 --- a/expansions/books/books.en +++ b/expansions/books/books.en @@ -13,7 +13,7 @@ bot would show the list of sf_fantasy books */books show cycle The Black Company
bot would show the list of books of "The Black Company" cycle
*/books info A Dance With Dragons
-bot would show information about "A Dance With Dragons"
+bot would show info about "A Dance With Dragons"
*/books read
bot would send you the last page of the last book, which you read
*/books read Call of Cthulhu
diff --git a/expansions/books/library.en b/expansions/books/library.en index e8936e5..07ad927 100644 --- a/expansions/books/library.en +++ b/expansions/books/library.en @@ -7,7 +7,7 @@ bot would import "The Hobbit" from .fb2 */library edit The_Two_Towers info number 2
bot would set the book's number in cycle
*/library edit The_Two_Towers info link http://example.com/book.html
-bot would add the link to the book's information
+bot would add the link to the book's info
*/library edit Star_Wars page add A long time ago, in a galaxy far far away...
bot would create the new page with the specified text
*/library edit Star_Wars page delete before 10
diff --git a/expansions/converter/code.py b/expansions/converter/code.py index c1de82f..c677dce 100644 --- a/expansions/converter/code.py +++ b/expansions/converter/code.py @@ -22,7 +22,7 @@ class expansion_temp(expansion): "minute": 525960.0, # Минута "second": 31557600.0, # Секунда }, - "information": { # Информация + "info": { # Информация "bit": 1.0, # Бит !# Base "kbit": 9.765625e-04, # 2^10 "mbit": 9.53674316406e-07, # 2^20 @@ -217,7 +217,7 @@ class expansion_temp(expansion): data = get_text(data, '\t\t"%s"\:\s\{' % (Desc), '\},') if data: comp = compile__('\t\t\t"(.+?)"\:.+?,\s+?\#\s(.+?)\n', 16) - list = comp.findall(data) + list = comp.findall("\n%s\n" % data) if list: ls = [Desc + ":"] for data in list: diff --git a/expansions/interpreter/eval.en b/expansions/interpreter/eval.en index 223bd4f..1a36009 100644 --- a/expansions/interpreter/eval.en +++ b/expansions/interpreter/eval.en @@ -3,4 +3,4 @@ eval [code] */eval get_file(PidFile)
bot would read PID.txt and show it's content
*/eval ["1", "2"]*3
-answer would be - ['1', '2', '1', '2', '1', '2']
\ No newline at end of file +answer would be -> ['1', '2', '1', '2', '1', '2']
\ No newline at end of file diff --git a/expansions/sheriff/code.py b/expansions/sheriff/code.py index fe6a716..cce0092 100644 --- a/expansions/sheriff/code.py +++ b/expansions/sheriff/code.py @@ -1,8 +1,8 @@ # coding: utf-8 # BlackSmith mark.2 -exp_name = "sheriff" # /code.py v.x6 -# Id: 15~4a +exp_name = "sheriff" # /code.py v.x7 +# Id: 15~5a # Code © (2011) by WitcherGeralt [alkorgun@gmail.com] expansion_register(exp_name) @@ -201,9 +201,13 @@ class expansion_temp(expansion): return True return False + Obscene = None + def obscene_checker(self, body): + if not self.Obscene: + self.Obscene = self.AnsBase[33].split(chr(47)) body = " %s " % body.lower() - for dkey in self.AnsBase[33].split(chr(47)): + for dkey in self.Obscene: if body.count(dkey): return True return False @@ -391,6 +395,8 @@ class expansion_temp(expansion): Chats[conf].outcast(inst, self.AnsBase[12] % (BsNick)) raise iThr.ThrKill("exit") + Questions = [] + def Security_04eh(self, conf, nick, source_, role, stanza, disp): if source_ and nick != get_self_nick(conf): access = get_access(conf, nick) @@ -414,11 +420,14 @@ class expansion_temp(expansion): if ChatsAttrs[conf]["laws"]["verif"] and access < 2 and AflRoles[2] == role[0]: if not prisoner.verif and not prisoner.devoice: Chats[conf].visitor(nick, self.AnsBase[17] % get_self_nick(conf)) - ques = choice(self.AnsBase[19].splitlines()) - ques = ques.split(chr(124), 1) - prisoner.vakey = (ques[1].strip()).lower() - Message("%s/%s" % (conf, nick), self.AnsBase[18] % (ques[0].strip()), disp) - del ques + if not self.Questions: + for qu in self.AnsBase[19].splitlines(): + qu, an = qu.split(chr(124), 1) + self.Questions.append((qu.strip(), an.strip().lower())) + qu, an = choice(self.Questions) + prisoner.vakey = an + Message("%s/%s" % (conf, nick), self.AnsBase[18] % (qu), disp) + del qu, an list = getattr(prisoner, "prdates") if len(list) >= 4: if (list[-1] - list[0]) <= 10: diff --git a/expansions/sheriff/insc.py b/expansions/sheriff/insc.py index f0f0aeb..38e6dec 100644 --- a/expansions/sheriff/insc.py +++ b/expansions/sheriff/insc.py @@ -21,16 +21,16 @@ if DefLANG in ("RU", "UA"): "%s лишение голоса на %d секунд.", # 16 "%s авторизация.", # 17 "Чтобы получить голос %s, у тебя три попытки.", # 18 - """ напиши: «сезам откройся» (без кавычек) | сезам откройся - напиши: «я не бот» (без кавычек) | я не бот - напиши: вторую букву русского алфавита | б - напиши: шестую букву русского алфавита | е - реши: семь + 121 = ? (ответ числом) | 128 - реши: три + 253 = ? (ответ числом) | 256 - напиши: столицу Испании | Мадрид - напиши: столицу России | Москва - напиши: столицу Франции | Париж - напиши: столицу Италии | Рим """, # 19 + "напиши: «сезам откройся» (без кавычек) | сезам откройся\n" + "напиши: «я не бот» (без кавычек) | я не бот\n" + "напиши: вторую букву русского алфавита | б\n" + "напиши: шестую букву русского алфавита | е\n" + "реши: семь + 121 = ? (ответ числом) | 128\n" + "реши: три + 253 = ? (ответ числом) | 256\n" + "напиши: столицу Испании | Мадрид\n" + "напиши: столицу России | Москва\n" + "напиши: столицу Франции | Париж\n" + "напиши: столицу Италии | Рим", # 19 "%s: авторизация пройдена.", # 20 "Тест пройден!", # 21 "%s: не прошел авторизацию.", # 22 @@ -70,16 +70,16 @@ else: "%s devoice in to %d seconds.", # 16 "%s verification.", # 17 "To get the voice %s, you have three attempts.", # 18 - """ type: 'codename 47' (without quotes) | codename 47 - type: 'I am not a bot' (without quotes) | I am not a bot - type: second symbol of English alphabet | б - type: sixth symbol of English alphabet | е - type answer: seven + 127 = ? (integer) | 128 - type answer: three + 253 = ? (integer) | 256 - type: capital of Enland | London - type: capital of USA | Washington - type: capital of France | Paris - type: capital of Russia | Moscow """, # 19 + "type: 'codename 47' (without quotes) | codename 47\n" + "type: 'I am not a bot' (without quotes) | I am not a bot\n" + "type: second symbol of English alphabet | б\n" + "type: sixth symbol of English alphabet | е\n" + "type answer: seven + 127 = ? (integer) | 128\n" + "type answer: three + 253 = ? (integer) | 256\n" + "type: capital of Enland | London\n" + "type: capital of USA | Washington\n" + "type: capital of France | Paris\n" + "type: capital of Russia | Moscow", # 19 "%s: verification passed.", # 20 "Test passed!", # 21 "%s: verification missed.", # 22 @@ -93,7 +93,7 @@ else: "\nDevoice-time (seconds): %d\nAntiobscene: ", # 30 "\nMaximum length of message: %d\nAnticaps: ", # 31 "\nMaximum length of presence: %d\nSparta mode: ", # 32 - " fuck / shit /motherfucker/unclefucker/ bitch / faggot / cock / cunt ", # 33 + " fuck / shit / bitch / faggot / cock / cunt ", # 33 "Server already in the white list.", # 34 "Server not in extra white list.", # 35 "This is not a server." # 36 diff --git a/librarys.zip b/librarys.zip Binary files differindex fc0c2bf..f1b5bf5 100644 --- a/librarys.zip +++ b/librarys.zip |