Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports
- """
- MM = __name__
- utils = MM.libary.load('utils')
- from .underscore import _
- import time
- import urllib
- import re
- """
- Utility
- """
- def makePremium(num):
- return {
- media: (num & 16) == 16,
- bg: (num & 8) == 8
- }
- def makeUser(name, alias, id, key, ip):
- return {
- name: (name.lower() if name != "" else None),
- alias: (alias if alias != "" else None),
- id: (id if id != "" else None),
- key: (key if key != "" else None),
- ip: (ip if ip != "" else None)
- }
- """
- Frame parsing
- """
- class frameTypesRoom:
- def ok(owner, myuid, mystatus, myname, jointime, myip, mods):
- return {
- type: "ok",
- owner: owner,
- myuid: myuid,
- mystatus: mystatus,
- jointime: jointime,
- myip: myip,
- mods: mods.split(";")
- }
- def inited():
- return {type: "inited"}
- def premium(premium, expire):
- return {
- type: "premium",
- premium: makePremium(premium),
- expire: int(expire, 16)
- }
- def pwdok():
- return {type: "pwdok"}
- def badlogin():
- return {type: "badlogin"}
- def logoutok():
- return {type: "logoutok"}
- def tb(seconds): # Might give time occasionally need to check
- return {type: "tb", seconds: seconds}
- def show_fw(): # saem as tb
- return {type: "show_fw"}
- def fw(): # Removed?
- return {type: "fw"}
- def end_fw():
- return {type: "end_fw"}
- def show_tb(seconds):
- return {type: "show_tb", seconds: seconds}
- def delete(msgid):
- return {type: "delete", msgid: msgid}
- def deleteall():
- return {type: "deleteall", msgids: _.toArray(*args)}
- def clearall(answer):
- return {type: "clearall", answer: answer}
- def mods(mods):
- return {type: "mods", mods: _.toArray(*args)}
- def i(time, name, alias, user_id, user_key, msgid, ip, prem, _noidea):
- return {
- time: float(time),
- type: "i",
- user: makeUser(name, alias, user_id, user_key, ip),
- id: msgid,
- premium: makePremium(int(prem, 10)),
- body: _.toArray(*args)[9].join(":")
- }
- def b(time, name, alias, user_id, user_key, number, ip, prem):
- return {
- time: float(time),
- type: "b",
- user: makeUser(name, alias, user_id, user_key, ip),
- number: number,
- id: False,
- premium: makePremium(int(prem, 10)),
- body: _.toArray(*args)[9].join(":")
- }
- def u(msgnum, msgid):
- return {type: "u", number: msgnum, msgid: msgid}
- def n(num):
- return {type: "n", count: int(num, 16)}
- def blocked(key, ip, name, by, time):
- ban = makeUser(name, "", "", key, ip)
- ban.time = float(time)
- ban.by = by
- return {
- type: "blocked",
- ban: ban
- }
- def unblocked():
- args = _.toArray(*args)
- unban = {
- key: args.pop(0),
- ip: args.pop(0),
- time: int(args.pop(), 16),
- by: args.pop()
- }
- name = args.join(':').split(';')
- unban.name = name.pop(0)
- if len(name) > 0:
- unban.extra = _.map(name, lambda row : {key: row.split(';')[0], ip: row.split(';')[1], name: row.split(';')[2]})
- return {
- type: "unblocked",
- unban: unban
- }
- # Blocklist is overwriting multiple bans, can stay that way.
- def blocklist():
- # need to test
- if len(_.filter(_.toArray(*args), lambda x: x)) == 0: return {type: "blocklist", bans: {}}
- bans = _.reduce(_.toArray(*args).join(':').split(';'), lambda args: {args.split(':')[2]: _.extend({time: float(args.split(':')[3]), by: args.split(':')[4]}, makeUser(args.split(':')[2], "", "", args.split(':')[0], args.split(':')[1]))},{})
- return {
- type: "blocklist",
- bans: bans
- }
- def unblocklist():
- # need to test
- unbans = _.reduce(_.toArray(*args).join(':').split(';'), lambda args: {args.split(':')[2]: _.extend({time: float(args.split(':')[3]), by: args.split(':')[4]}, makeUser(args.split(':')[2], "", "", args.split(':')[0], args.split(':')[1]))},{})
- return {
- type: "unblocklist",
- unbans: unbans
- }
- def bansearchresult(_noidea, name, ip, key, by, date):
- if name == None:
- return {type: "bansearchresult", result: False}
- result = makeUser(name, "", "", key, ip)
- result.time = round(time.time(_.toArray(*args).slice(5).join(":"))/1000)
- result.by = by
- return {type: "bansearchresult", result: result}
- def g_participants():
- users = _.reduce(_.toArray(*args).join(':').split(';'), lambda args: {args.split(':')[0]: _.extend({sess: args.split(':')[0], time: float(args.split(':')[1])}, makeUser(utils.getAnonName(args.split(':')[2], float(args.split(':')[1])) if args.split(':')[3] == None and args.split(':')[4] == None else '#'+args.split(':')[4] if args.split(':')[3] == None and args.split(':')[4] != None else args.split(':')[3], "" if args.split(':')[4] == None else args.split(':')[4], args.split(':')[2], "", ""))}, {})
- return {
- type: "g_participants",
- users: users
- }
- def participant(mode, sess, user_id, name, alias, ip, time):
- user = makeUser(utils.getAnonName(user_id, float(time)) if name == None and alias == None else '#'+alias if name == None and alias != None else name, "" if alias == None else alias, user_id, "", "")
- user.time = float(time)
- user.sess = sess
- return {
- type: "participant",
- mode: ("leave" if mode == "0" else "join" if mode == "1" else "change" if mode == "2" else None),
- user: user
- }
- def updateprofile(name):
- return {
- type: "g_participants",
- name: name
- }
- def getbannedwords(partly, exact):
- return {
- type: "getbannedwords",
- partly: _.filter(urllib.unquote(partly).decode('utf-8').split(','), lambda x: x),
- exact: _.filter(urllib.unquote(exact).decode('utf-8').split(','), lambda x: x)
- }
- def bw(partly, exact):
- return {
- type: "getbannedwords",
- partly: _.filter(urllib.unquote(partly).decode('utf-8').split(','), lambda x: x),
- exact: _.filter(urllib.unquote(exact).decode('utf-8').split(','), lambda x: x)
- }
- def ubw():
- return {type: "ubw"}
- class frameTypesPM:
- def OK():
- return {type: "ok"}
- def settings(a, disabe_idle_time, b, allow_anon, c, email_offline_msg):
- return {
- type: "settings",
- disabe_idle_time: disabe_idle_time == "on",
- allow_anon: allow_anon == "on",
- email_offline_msg: email_offline_msg == "on"
- }
- def wl():
- args = _.toArray(*args)
- contacts = []
- for i in range(0, len(args), 4):
- contacts.push({
- name: args[i],
- time: args[i+1],
- state: args[i+2],
- idle: args[i+3]
- })
- return {type: "wl", contacts: contacts}
- def premium(prem, time):
- return {
- type: "premium",
- premium: makePremium(int(prem, 10)),
- time: float(time)
- }
- def idleupdate(name, state):
- return {
- type: "idleupdate",
- name: name,
- state: 'online' if state == "1" else 'idle'
- }
- def msg(name, alias, prem, time):
- return {
- type: "msg",
- time: float(time),
- user: makeUser(name, alias, '', '', ''),
- premium: makePremium(int(prem, 10)),
- body: _.toArray(*args).slice(5).join(":")
- }
- def msgoff(name, alias, prem, time):
- return {
- type: "msgoff",
- time: float(time),
- user: makeUser(name, alias, '', '', ''),
- premium: makePremium(int(prem, 10)),
- body: _.toArray(*args).slice(5).join(":")
- }
- def status(name, time, state):
- return {
- type: "status",
- name: name,
- time: float(time),
- state: state
- }
- def wloffline(name, time):
- return {
- type: "wloffline",
- name: name,
- time: float(time)
- }
- def wlonline(name, time):
- return {
- type: "wlonline",
- name: name,
- time: float(time)
- }
- def reload_profile(name):
- return {
- type: "reload_profile",
- name: name
- }
- def wladd(name, state, time):
- return {
- type: "wladd",
- name: name,
- state: state,
- time: float(time)
- }
- def connect(name, time, state):
- return {
- type: "connect",
- name: name,
- time: int(time),
- state: state
- }
- def show_fw():
- return {type: "show_fw"}
- def parseFramePM(data):
- data = re.sub("[\\r\\n\\0]+$", "", data)
- tmp = data.split(":")
- cmd = tmp[0]
- args = tmp.slice(1)
- if hasattr(frameTypesPM, cmd):
- return frameTypesPM[cmd].extend(args)
- else:
- return None
- def parseFrameRoom(data):
- data = re.sub("[\\r\\n\\0]+$", "", data)
- tmp = data.split(":")
- cmd = tmp[0]
- args = tmp.slice(1)
- if hasattr(frameTypesRoom, cmd):
- return frameTypesRoom[cmd].extend(args)
- else:
- return None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement