.HIDE. .BANCHO. Add public (discord) and private (file) chat logging

This commit is contained in:
Nyo 2016-05-19 22:53:09 +02:00
parent 0e1c8696ba
commit 035c934d99
6 changed files with 83 additions and 2 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
**/__pycache__
config.ini
.data

View File

@ -6,6 +6,7 @@ from objects import glob
from objects import fokabot
from constants import exceptions
from constants import messageTemplates
from time import gmtime, strftime
def handle(userToken, packetData):
"""
@ -47,6 +48,10 @@ def handle(userToken, packetData):
# Console output
consoleHelper.printColored("> {}>{}: {}".format(username, packetData["to"], packetData["message"]), bcolors.PINK)
# Log to file
with open(".data/chatlog_private.txt", "a") as f:
f.write("[{date}] {fro} -> {to}: {message}\n".format(date=strftime("%Y-%m-%d %H:%M:%S", gmtime()), fro=username, to=packetData["to"], message=str(packetData["message"].encode("utf-8"))[2:-1]))
except exceptions.tokenNotFoundException:
# Token not found, user disconnected
consoleHelper.printColored("[!] {} tried to send a message to {}, but their token couldn't be found".format(username, packetData["to"]), bcolors.RED)

View File

@ -5,6 +5,7 @@ from objects import fokabot
from helpers import consoleHelper
from constants import bcolors
from constants import serverPackets
from helpers import discordBotHelper
def handle(userToken, packetData):
"""
@ -15,7 +16,7 @@ def handle(userToken, packetData):
"""
try:
# Get uesrToken data
# Get userToken data
userID = userToken.userID
username = userToken.username
userRank = userToken.rank
@ -99,7 +100,10 @@ def handle(userToken, packetData):
consoleHelper.printColored("> FokaBot@{}: {}".format(packetData["to"], str(fokaMessage.encode("UTF-8"))), bcolors.PINK)
# Console output
consoleHelper.printColored("> {}@{}: {}".format(username, packetData["to"], str(packetData["message"].encode("UTF-8"))), bcolors.PINK)
consoleHelper.printColored("> {}@{}: {}".format(username, packetData["to"], str(packetData["message"].encode("utf-8"))), bcolors.PINK)
# Discord/file log
discordBotHelper.sendChatlog("**{fro}{type}{to}:** {message}".format(fro=username, type="@" if packetData["to"].startswith("#") else ">", to=packetData["to"], message=str(packetData["message"].encode("utf-8"))[2:-1]))
except exceptions.channelModeratedException:
consoleHelper.printColored("[!] {} tried to send a message to a channel that is in moderated mode ({})".format(username, packetData["to"]), bcolors.RED)
except exceptions.channelUnknownException:

View File

@ -63,6 +63,9 @@ class config:
self.config.get("flask","debug")
self.config.get("flask","logger")
self.config.get("discord","enable")
self.config.get("discord","boturl")
self.config.get("ci","key")
return True
except:
@ -102,6 +105,10 @@ class config:
self.config.add_section("ci")
self.config.set("ci", "key", "changeme")
self.config.add_section("discord")
self.config.set("discord", "enable", "False")
self.config.set("discord", "boturl", "")
# Write ini to file and close
self.config.write(f)
f.close()

View File

@ -0,0 +1,51 @@
import requests
from objects import glob
from helpers import generalFunctions
from urllib.parse import urlencode
def sendDiscordMessage(channel, message):
"""
Send a message to a discord server.
This is used with ripple's schiavobot.
channel -- bunk, staff or general
message -- message to send
"""
if generalFunctions.stringToBool(glob.conf.config["discord"]["enable"]) == True:
requests.get("{}/{}?{}".format(glob.conf.config["discord"]["boturl"], channel, urlencode({ "message": message })))
def sendConfidential(message):
"""
Send a message to #bunker
message -- message to send
"""
sendDiscordMessage("bunk", message)
def sendChatlog(message):
"""
Send a message to #chatlog
message -- message to send
"""
sendDiscordMessage("chatlog", message)
def sendStaff(message):
"""
Send a message to #staff
message -- message to send
"""
sendDiscordMessage("staff", message)
def sendGeneral(message):
"""
Send a message to #general
message -- message to send
"""
sendDiscordMessage("general", message)

13
pep.py
View File

@ -3,6 +3,7 @@ import logging
import sys
import flask
import datetime
import os
# Tornado server
from tornado.wsgi import WSGIContainer
@ -14,6 +15,7 @@ from constants import bcolors
from constants import packetIDs
from constants import serverPackets
from helpers import configHelper
from helpers import discordBotHelper
from constants import exceptions
from objects import glob
from objects import fokabot
@ -289,6 +291,14 @@ if __name__ == "__main__":
consoleHelper.printColored("[!] Error while loading bancho_settings. Please make sure the table in DB has all the required rows", bcolors.RED)
raise
# Create data folder if needed
consoleHelper.printNoNl("> Checking folders... ")
paths = [".data"]
for i in paths:
if not os.path.exists(i):
os.makedirs(i, 0o770)
consoleHelper.printDone()
# Initialize chat channels
consoleHelper.printNoNl("> Initializing chat channels... ")
glob.channels.loadChannels()
@ -321,6 +331,9 @@ if __name__ == "__main__":
serverOutputPackets = generalFunctions.stringToBool(glob.conf.config["server"]["outputpackets"])
serverOutputRequestTime = generalFunctions.stringToBool(glob.conf.config["server"]["outputrequesttime"])
# Send server start message
discordBotHelper.sendConfidential("w00t p00t! (pep.py started)")
# Run server sanic way
if serverName == "tornado":
# Tornado server