From ed973afd386c0471caf9269edc8b691591b81553 Mon Sep 17 00:00:00 2001 From: snowman1711 Date: Sat, 17 Apr 2021 13:22:30 +0530 Subject: [PATCH] final whitelist --- dist/ba_root/mods/setting.json | 26 ++-- dist/ba_root/mods/setting.py | 40 +++--- dist/ba_root/mods/spazmod/modifyspaz.py | 2 +- .../__pycache__/__init__.cpython-38.opt-1.pyc | Bin 0 -> 357 bytes .../__pycache__/mystats.cpython-38.opt-1.pyc | Bin 0 -> 5790 bytes dist/ba_root/mods/stats/mystats.py | 2 +- dist/ba_root/mods/stats/stats.json | 14 ++ dist/ba_root/mods/stats/stats_page.html | 30 ++++ .../__pycache__/__init__.cpython-38.opt-1.pyc | Bin 0 -> 498 bytes .../textonmap.cpython-38.opt-1.pyc | Bin 0 -> 1758 bytes .../whitelist.cpython-38.opt-1.pyc | Bin 0 -> 3605 bytes dist/ba_root/mods/tools/logs.txt | 0 dist/ba_root/mods/tools/textonmap.py | 102 +++++++------- dist/ba_root/mods/tools/whitelist.json | 5 + dist/ba_root/mods/tools/whitelist.py | 129 ++++++++++++++++++ 15 files changed, 271 insertions(+), 79 deletions(-) create mode 100644 dist/ba_root/mods/stats/__pycache__/__init__.cpython-38.opt-1.pyc create mode 100644 dist/ba_root/mods/stats/__pycache__/mystats.cpython-38.opt-1.pyc create mode 100644 dist/ba_root/mods/stats/stats_page.html create mode 100644 dist/ba_root/mods/tools/__pycache__/__init__.cpython-38.opt-1.pyc create mode 100644 dist/ba_root/mods/tools/__pycache__/textonmap.cpython-38.opt-1.pyc create mode 100644 dist/ba_root/mods/tools/__pycache__/whitelist.cpython-38.opt-1.pyc create mode 100644 dist/ba_root/mods/tools/logs.txt create mode 100644 dist/ba_root/mods/tools/whitelist.json diff --git a/dist/ba_root/mods/setting.json b/dist/ba_root/mods/setting.json index 9aacf06..e80165b 100644 --- a/dist/ba_root/mods/setting.json +++ b/dist/ba_root/mods/setting.json @@ -1,11 +1,19 @@ { - "textonmap": - { - "top watermark":"Welcome to server \n ip 192.168.0.1", - "bottom left watermark":"join discord for fun", - "center highlights":["message 1","message 2","message 3"] - }, - "enabletags":true, - "enablerank":true, - "enableeffects":false + "white_list": { + "whitelist_on": true, + "spectators": false, + "lobbychecktime": 3 + }, + "textonmap": { + "top watermark": "Welcome to server \n ip 192.168.0.1", + "bottom left watermark": "join discord for fun", + "center highlights": [ + "message 1", + "message 2", + "message 3" + ] + }, + "enabletags": true, + "enablerank": true, + "enableeffects": false } \ No newline at end of file diff --git a/dist/ba_root/mods/setting.py b/dist/ba_root/mods/setting.py index 01a0056..01f21c3 100644 --- a/dist/ba_root/mods/setting.py +++ b/dist/ba_root/mods/setting.py @@ -1,23 +1,27 @@ # Released under the MIT License. See LICENSE for details. -import ba,_ba,json,os -settingjson = os.path.join(_ba.env()['python_directory_user'],"setting.json") +import _ba, json -def get_setting(): - s = {} - f=open(settingjson,"r") - d = json.loads(f.read()) - f.close() - return d +settings_path = _ba.env()["python_directory_user"]+"/setting.json" -def commit(updated_settings: dict): - if updated_settings == {}: return - f=open(settingjson,'w') - json.dump(updated_settings,f,indent=4) - f.close() -def sendError(msg: str, ID: int = None): - if ID is not None: - ba.screenmessage(msg, color=(1,0,0), clients=[ID], transient=True) - else: - ba.screenmessage(msg, color=(1,0,0), transient=True) + + +def get_settings_data(): + with open(settings_path, "r") as f: + data = json.load(f) + return data + + + +def commit(data): + with open(settings_path, "w") as f: + json.dump(data, f, indent=4) + + + +def sendError(msg : str, client_id : int = None): + if client_id == None: + _ba.screenmessage(msg, color=(1,0,0)) + else: + _ba.screenmessage(msg, color=(1,0,0), transient=True, clients=[client_id]) diff --git a/dist/ba_root/mods/spazmod/modifyspaz.py b/dist/ba_root/mods/spazmod/modifyspaz.py index bfdb13f..c94fecf 100644 --- a/dist/ba_root/mods/spazmod/modifyspaz.py +++ b/dist/ba_root/mods/spazmod/modifyspaz.py @@ -4,7 +4,7 @@ import setting # all activites related to modify spaz by any how will be here def main(node,player): - _setting=setting.get_setting() + _setting=setting.get_settings_data() if _setting['enabletags']: tag.addtag(node,player) diff --git a/dist/ba_root/mods/stats/__pycache__/__init__.cpython-38.opt-1.pyc b/dist/ba_root/mods/stats/__pycache__/__init__.cpython-38.opt-1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ed55b36ec09b4c7a2417b324268498dd0295a0b GIT binary patch literal 357 zcmYk1y-ou$499b2pgO4&FW|LO+v5QcLa?(OEG!{Se7#h;xFk-i>l^Vj>|J>THYVIo zSh6L5{QkCIXR}&~wcF$SO{LWLIr(o=QxD>KD#58Y<*HWAC&#ZR8U~86_MCw_=t{Kg zDVpGUgxs5i4%WyA#0Vw?z%CK&5^d3PUe)zW@8c$ekI-X6A*h5i0fIV==oZlXO&>4h|T?($ZcinIEA<&oyI~JF<@!fqNW5_QSzD6ux8`ls&=k5p3`n`684t zi3nJ7xT>G$)#+MmM^@`kl_v7-CHyu`W=dv*4Gtw3M%Uank2I{?k7ArO4d+H{FIQ;2 T+Ks2_-9WAcyuT8SA93{uTnlcP literal 0 HcmV?d00001 diff --git a/dist/ba_root/mods/stats/__pycache__/mystats.cpython-38.opt-1.pyc b/dist/ba_root/mods/stats/__pycache__/mystats.cpython-38.opt-1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..482aac220c8c1952d3a0a6f5f3c372656acc8a74 GIT binary patch literal 5790 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 literal 0 HcmV?d00001 diff --git a/dist/ba_root/mods/stats/mystats.py b/dist/ba_root/mods/stats/mystats.py index 3f0f4ef..8e52ca5 100644 --- a/dist/ba_root/mods/stats/mystats.py +++ b/dist/ba_root/mods/stats/mystats.py @@ -16,7 +16,7 @@ from typing import Any, Dict, Optional from ba._lobby import JoinInfo from ba import _activitytypes as ba_actypes from ba._activitytypes import * -our_settings = setting.get_setting() +our_settings = setting.get_settings_data() # where our stats file and pretty html output will go base_path = os.path.join(_ba.env()['python_directory_user'],"stats" + os.sep) statsfile = base_path + 'stats.json' diff --git a/dist/ba_root/mods/stats/stats.json b/dist/ba_root/mods/stats/stats.json index e69de29..e0b50f0 100644 --- a/dist/ba_root/mods/stats/stats.json +++ b/dist/ba_root/mods/stats/stats.json @@ -0,0 +1,14 @@ +{ + "pb-IF4VAk4a": { + "rank": 1, + "name_html": "pb-IF4VAk4a", + "scores": 0, + "total_damage": 0.0, + "kills": 0, + "deaths": 0, + "games": 18, + "kd": 0.0, + "avg_score": 0.0, + "aid": "pb-IF4VAk4a" + } +} \ No newline at end of file diff --git a/dist/ba_root/mods/stats/stats_page.html b/dist/ba_root/mods/stats/stats_page.html new file mode 100644 index 0000000..401181a --- /dev/null +++ b/dist/ba_root/mods/stats/stats_page.html @@ -0,0 +1,30 @@ + + + + + Test Server + + + +

Top 200 Players

+ + + + + + + + + + + + + + + + + + +
RankNameScoreKillsDeathsGames Played
1pb-IF4VAk4a00018
+ + \ No newline at end of file diff --git a/dist/ba_root/mods/tools/__pycache__/__init__.cpython-38.opt-1.pyc b/dist/ba_root/mods/tools/__pycache__/__init__.cpython-38.opt-1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee9737fda68df01081708feea0d0a9b753d1a4cd GIT binary patch literal 498 zcmY*Vu};G<5Ovy=RuSF!fLkk-h7UjpQRXhd(j~a@B{6b*#dcbyEBp*!!^D!6zhL50 z2H>Q7@>%!Zv){vXnh36s;_!GI3Gvwve`~bH z^bBCCLW^n+l`bpOLTI;m?qz{w(W+j xHto%N4H3DRaWxxu<1AB@XIU3pS>y5g*XHLmD%px7LQqj8PNYZ;mpx!6YbV(-GhS>bZC6`y zNKZ)p4>%;p{1^NkzH&f&;|dq}-fWZINa2P@etx#!v)}u^=lO1Jt;^89`FZlgZwX_+ z(`30tm^?&xpF$`$V2UeI@mdT7Cq1g7LDY`%Aa2KGkbKQltdf^ZC8uJLs^|&prIT-q z-N#=&E*h;>;Z5PRFNVfgHEK$)U19bMub=s%F-jNri`ty%!jEcgi<7cChQZv&kD3Fw zedJ72%n%Xl@sRJrZ1?$C?+j^Wxd}`jqPzPLnhiKI5R}17hNvSIV??AX#h9o}42p>Rx7m*XLa_hpNr04Vkd-F*+?*%?0v6kF^CpW`7fhL?S+d2TMN@Vb zPsKUsn4Kllh%}!bWh(XQSw3Y)SfMap!BS?5A&}0FB@QN=d&YZH7nR=k#Zy3L>(c%> zS@UMRm|BW-vN6;R_KU;O!C{5&-7LrYF0e|i9_!NgIw1oA1m z^s~@i91w2Nz4Gebu!4JKt(_|mbP#*+X~_!lqq3@cafqF+_Cwqr7n5&@;Bmq1ZA9|- zgTC{|!nLpK;|j^B{)7IPrrvw<({ZW#-k8euukhanbbGuMHJK~B1bwS8)F(s%Zs2qrcUo+KtC0=kJpCzh0}2L!o>X#|`40J>@;mGlr^u+~Yh@?I6v!XA0PW8&LOQ1-q;m#m#Lw%o{BCPi|?=apLAuNPc|3KEcp$Ikjq9jenrlEn7k$j59$U|L<@Cyr^U(M zfw`rUuoT4{$G1s)hs3)i-iH9@ACmqN=~0{9+@F39^W54jDM8zT_yFC#1wn}|rNspj zo7`I@b^UGpzj+b5c7sG)Bsb(`w`sRe;yO!~0R060zmr&EX6Zri^fG#IO<8LxLs!b$ zsN;(CRVnd8tND&4Z0yG*2(I?Jr4SZi61imIsQhw~ujX&$tL<+M7iCf^GsM}Qy>eUX l=D2p2Dq~)uEn_K7>5!XF5BX>F@IEJt_KFz4hIRZJ{snCql;QvY literal 0 HcmV?d00001 diff --git a/dist/ba_root/mods/tools/__pycache__/whitelist.cpython-38.opt-1.pyc b/dist/ba_root/mods/tools/__pycache__/whitelist.cpython-38.opt-1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ac739b3bc394b1fd6bd18126967c7e7f67d722c GIT binary patch literal 3605 zcma)8U2ogg89s-kD2kG0J9X^3O*$^k(5a|p4@0*#$bvM9owQxGF3IvCtm7yh#->e? z%HdH`3-ZkzV7n>y1KI)(u!{!RFFIEPc9p--o9%fIZP{+KVFY--Ki-e$ea`#)nHitq zYy5fqr(ZW1`xkXiel|K+8RNx2(GaZ51Q%Ay2UgeO)V5Q5;B+0+cGAkg?YgF2Nvqu| z<}0b!^-Nvs)=cepeN)%FbyGLGjo6WYh`ocE=S;ZEOjMUxw|S!Pp+75X!hgoPbD}O9 zUvn`dn$Mi>yqFbp7(Ij0d5oSBuVM5x^y*^aYfGFJi|8+iCGk2|oyF)fR=pwK#OUHp zCeDfT&zLyBZ*`YM#Oj){-W{^u4-^~jY8S>H zB5d(MBLsSQmbt>3aG8LL}6 zR;%(<0v0XHTrHcJH42r*9Eo!#5+W>x4OMO|aslJVLNB7%$3Oi}IprdTr-IJyF=ZXV zDbM*HKX%82!yOiclr6_dD2WYZ9ffw%JQ9%4h&DsRWbl*nZN@5`VkRWVyn_{mi-L^0 zz~wSp@Nq5b_w!Mv67d7OlE?-_Z=s>sJ_CCAgzdwwJFZ+55Kvh72{(4`vsO3hQ^_t#~18HOa2IBr;JTrq2DOdL*vNU2Nr0T zFS9);bznbddk|Du%S`@JITL%I%QlIuDhDp+oQZRTeSTrDGN}lAnN92+OJ2fURe2b3 zmf<*3_VFd-uu4b!$71TnF<21M{vjyBMCe*SO+W%@wra*Mx?03a!5Mm;9rKjCx_*M3PT7ybVET6b9Ua9E_+bzrUJ3jN2IMxVZPbAEo@3~ff5k*)Vwuu5 zrSld0rb>_>`^o`(RqnHFjl&0s_=<2T;uH8MbVXHon+UOOSJW;uRaIv0A;1YQ- zv5N!cZPz9a*7(9#_3ehJe~DgLGr`p8$N;j+AEVHIF$AO|Jbi_3rg^Wo+uw@&I|@(z zcRUzh?Bv1yY2I=pR#+U1;Jx6wjFBm1o563hc-$z;RAwhxNyOM6$oApD`0ZhD<>RFD z@rSpsMGw|DuHD=C;MT@Y=fQ)GpRI4Kb)(y9cl|C<<;r-71GPsNE94lh8F`U}{0SBG z8t8g|D^i2FDDXy?p6#5Tz{vX`Hx8K6I-;Ps45GWMX2@37*xf54ZmYH(!&fP29!rifp9@-}AGiyhzuk3@?e7WD5nBUZeJ_+(z$m zNlT}53wae2JNQq#4Q{dwyI$m;eU2}{f#b!KZaW4}r&ZAaKt^vtsQoY;c}Kp8RN}MiM7WA}8%43=m+F z2wK;AQ9F#Y(V#FumRB%XhJ|CGZW1jInNw`K6gt|DvnM7E>-y7du_&`dV^fnhQ2Jut yc=Ns(t~8>(N(=2>E|tGRZ%#ppmQ!!wZE9F+mQ$VMbGBD$Ry?;^n`?M;P3J$0lRx$V literal 0 HcmV?d00001 diff --git a/dist/ba_root/mods/tools/logs.txt b/dist/ba_root/mods/tools/logs.txt new file mode 100644 index 0000000..e69de29 diff --git a/dist/ba_root/mods/tools/textonmap.py b/dist/ba_root/mods/tools/textonmap.py index 7ac49aa..6330341 100644 --- a/dist/ba_root/mods/tools/textonmap.py +++ b/dist/ba_root/mods/tools/textonmap.py @@ -1,59 +1,61 @@ # Released under the MIT License. See LICENSE for details. -#TODO need to set coordinates of text node , move timer values to settings.json +""" TODO need to set coordinates of text node , move timer values to settings.json """ + from ba._enums import TimeType -import ba,_ba +import ba, _ba import setting + class textonmap: + def __init__(self): - self.index=0; - _textonmap=setting.get_setting()['textonmap'] - self.highlights=_textonmap['center highlights'] - left=_textonmap['bottom left watermark'] - top=_textonmap['top watermark'] - - self.timerr=ba.Timer(8,ba.Call(self.highlights),repeat=True) - + + data = setting.get_settings_data()['textonmap'] + left = data['bottom left watermark'] + top = data['top watermark'] + + self.index = 0 + self.highlights = data['center highlights'] self.left_watermark(left) self.top_message(top) + self.timer = ba.timer(8, ba.Call(self.highlights), repeat=True) - - def highlights(self): - hg=_ba.newnode('text', - attrs={ - 'text': self.highlights[self.index], - - 'flatness': 1.0, - 'h_align': 'center', - 'v_attach':'bottom', - 'scale':1, - 'position':(0,138), - 'color':(1,1,1) - }) - self.delt=ba.Timer(7,hg.delete) - self.index=int((self.index+1)%len(self.highlights)) - - def left_watermark(self,text): - hg=_ba.newnode('text', - attrs={ - 'text': text, - - 'flatness': 1.0, - 'h_align': 'left', - 'v_attach':'bottom', - 'scale':1, - 'position':(0,138), - 'color':(1,1,1) - }) - def top_message(self,text): - txt=_ba.newnode('text', - attrs={ - 'text': text, - - 'flatness': 1.0, - 'h_align': 'center', - 'v_attach':'top', - 'scale':1, - 'position':(0,138), - 'color':(1,1,1) - }) \ No newline at end of file + def highlights_(self): + node = _ba.newnode('text', + attrs={ + 'text': self.highlights[self.index], + 'flatness': 1.0, + 'h_align': 'center', + 'v_attach':'bottom', + 'scale':1, + 'position':(0,138), + 'color':(1,1,1) + }) + + self.delt = ba.timer(7,node.delete) + self.index = int((self.index+1)%len(self.highlights)) + + def left_watermark(self, text): + node = _ba.newnode('text', + attrs={ + 'text': text, + 'flatness': 1.0, + 'h_align': 'left', + 'v_attach':'bottom', + 'scale':1, + 'position':(0,138), + 'color':(1,1,1) + }) + + def top_message(self, text): + node = _ba.newnode('text', + attrs={ + 'text': text, + 'flatness': 1.0, + 'h_align': 'center', + 'v_attach':'top', + 'scale':1, + 'position':(0,138), + 'color':(1,1,1) + }) + \ No newline at end of file diff --git a/dist/ba_root/mods/tools/whitelist.json b/dist/ba_root/mods/tools/whitelist.json new file mode 100644 index 0000000..d501d5a --- /dev/null +++ b/dist/ba_root/mods/tools/whitelist.json @@ -0,0 +1,5 @@ +{ + "pb-IF4VAk4a": [ + "\ue030Server127089" + ] +} \ No newline at end of file diff --git a/dist/ba_root/mods/tools/whitelist.py b/dist/ba_root/mods/tools/whitelist.py index e69de29..2336c1a 100644 --- a/dist/ba_root/mods/tools/whitelist.py +++ b/dist/ba_root/mods/tools/whitelist.py @@ -0,0 +1,129 @@ +""" +Private Server whitelist by Mr.Smoothy + +* don't dare to remove credits or I will bite you + +GitHub : https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server +""" +# Released under the MIT License. See LICENSE for details. + + +# ba_meta require api 6 +from __future__ import annotations +from typing import TYPE_CHECKING +from ba._enums import TimeType + +import ba, _ba, time, json, datetime, setting + +if TYPE_CHECKING: + pass + + + + + +white_logs_path = _ba.env()["python_directory_user"]+"/tools/whitelist.json" +logs_paths = _ba.env()["python_directory_user"]+"/tools/logs.txt" + + +def commit(data): + with open(white_logs_path, "w") as f: + json.dump(data, f, indent=4) + + +def add_commit_to_logs(commit : str): + with open(logs_path, "a") as f: + f.write(commit+"\n") + + +def get_whitelist_data(): + with open(white_logs_path, "r") as f: + data = json.load(f) + return data + + +def in_white_list(accountid : str): + data = get_whitelist_data() + + if str(accountid) in data: + return True + else: + return False + + +def add_to_white_list(accountid : str, display_string : str): + data = get_whitelist_data() + + if accountid not in data: + data[str(accountid)] = [str(display_string)] + + else: + data[str(accountid)].append(str(display_string)) + + commit(data) + + +def handle_player_request(player): + data = get_whitelist_data() + settings = setting.get_settings_data()["white_list"] + accountid = player.get_account_id() + + if settings["whitelist_on"]: + if in_white_list(accountid): + return + else: + rost = _ba.get_game_roster() + + for i in rost: + if i["account_id"] == accountid: + _ba.disconnect_client(int(i['client_id'])) + + +def display_string_in_white_list(display_string : str): + return any(display_string in i for i in data.values()) + + +class _whitelist_: + def __init__(self): + + settings = setting.get_settings_data()["white_list"] + whitelist_on = settings["whitelist_on"] + spectators = settings["spectators"] + lobbychecktime = settings["lobbychecktime"] + _ba.chatmessage(f"{settings} {whitelist_on} {spectators} {lobbychecktime}") + + try: + data = get_whitelist_data() + + except: + print("No Whitelist Detected , Creating One") + self.whitelst = {} + self.whitelst['pb-JiNJARBaXEFBVF9HFkNXXF1EF0ZaRlZE']=['smoothyki-id','mr.smoothy'] + commit(whitelst) + + if whitelist_on and not spectators: + self.timer = ba.timer(lobbychecktime, self.checklobby, repeat=True, timetype=TimeType.REAL) + + def checklobby(self): + + settings = setting.get_settings_data()["white_list"] + whitelist_on = settings["whitelist_on"] + spectators = settings["spectators"] + lobbychecktime = settings["lobbychecktime"] + + if whitelist_on and not spectators: + try: + + rost = _ba.get_game_roster() + for i in rost: + if i['account_id'] in whitelist and i['account_id'] != '' or i['client_id'] == -1: + return + + else: + add_commit_to_logs("Kicked from lobby "+i['account_id']+" "+i['spec_string']) + _ba.disconnect_client(i['client_id']) + + except: + return + +