def editTeam(self, leagueID, teamID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].teams: RTeam = Session.query(db.Teams).filter(db.Teams.id == teamID).first() if (RTeam): RTeam.name = request.params["name"] RTeam.short = request.params["short"] RTeam.country = request.params["country"] RTeam.league = leagueID, RTeam.link = request.params["link"] Session.commit() success = True message = "Changed selected team." else: success = False message = "<strong>Oh snap!</strong> Couldn't edit this team." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def editBot(self, botID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].bots: RBot = Session.query(db.Bots).filter(db.Bots.id == botID).first() if RBot: RBot.name = request.params["name"] RBot.emailAddress = request.params["emailAddress"] if request.params["emailPassword"]: RBot.emailPassword = request.params["emailPassword"] RBot.steamLogin = request.params["steamLogin"] if request.params["steamPassword"]: RBot.steamPassword = request.params["steamPassword"] RBot.steamID = request.params["steamID"] RBot.steamAPI = request.params["steamAPI"] match = re.match(r"http:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]+&token=([a-zA-Z0-9\-]+)", request.params["tradeoffers"]) if match: RBot.token = match.group(1) RBot.slotsEmpty += int(request.params["slots"]) - RBot.slots RBot.slots = int(request.params["slots"]) Session.commit() success = True message = "Changed selected bot." else: success = False message = "<strong>Oh snap!</strong> Couldn't edit this bot." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def removeTeam(self, leagueID, teamID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].teams: RTeam = Session.query(db.Teams).filter(db.Teams.id == teamID).first() if RTeam: RMatch = Session.query(db.Matches).filter(db.or_(db.Matches.team1 == teamID, db.Matches.team2 == teamID)).first() if RMatch: success = False message = "<strong>Oh snap!</strong> I can't remove a team with matches." else: Session.delete(RTeam) Session.commit() success = True message = "Removed selected team." else: success = False message = "<strong>Oh snap!</strong> Couldn't remove this team." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def editLeague(self, leagueID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].leagues: RLeague = Session.query(db.Leagues).filter(db.Leagues.id == leagueID).first() if RLeague: RLeague.name = request.params["name"] RLeague.type = request.params["type"] RLeague.region = request.params["region"] RLeague.colour = request.params["accentColour"] RLeague.detailsColour = request.params["detailsColour"] RLeague.textColour = request.params["textColour"] Session.commit() success = True message = "Changed selected league." else: success = False message = "<strong>Oh snap!</strong> Couldn't change this league." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def addTeam(self, leagueID): # Returns a redirection to /manage/teams/{leagueID} if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].teams: RTeam = db.Teams(name=request.params["name"], short=request.params["short"], country=request.params["country"], league=leagueID, link=request.params["link"]) Session.add(RTeam) Session.commit() avatar = request.params["avatar"].file avatar_path = os.path.join('website/public/images/teams', str(RTeam.id) + '.jpg') temp_path = avatar_path + '~' output_file = open(temp_path, 'wb') avatar.seek(0) while True: data = avatar.read(2<<16) if not data: break output_file.write(data) output_file.close() os.rename(temp_path, avatar_path) return redirect("/manage/teams/" + leagueID) else: return redirect("https://saloon.tf/") else: return redirect("https://saloon.tf/")
def addLeague(self): # Returns redirection to /manage/leagues/ if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].leagues: params = ["name", "type", "region", "avatar", "accentColour"] if all(item in request.params for item in params): if request.params["avatar"].filename[-4:] != ".png": success = False message = "Wrong file type." else: RLeague = db.Leagues(name=request.params["name"], type=request.params["type"], region=request.params["region"], colour=request.params["accentColour"], detailsColour = request.params["detailsColour"], textColour = request.params["textColour"]) Session.add(RLeague) Session.commit() os.makedirs("website/public/images/leagues/" + str(RLeague.id)) avatar = request.params["avatar"].file avatar_path = os.path.join('website/public/images/leagues', str(RLeague.id), 'logo.png') temp_path = avatar_path + '~' output_file = open(temp_path, 'wb') avatar.seek(0) while True: data = avatar.read(2<<16) if not data: break output_file.write(data) output_file.close() os.rename(temp_path, avatar_path) return redirect("https://saloon.tf/manage/leagues/") return redirect("https://saloon.tf/")
def closeTicket(self, ticketID): c.user = False if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser: if RUser.Permissions[0].bets: RTicket = Session.query(db.Tickets).filter(db.Tickets.id == ticketID).first() RTicket.open = False Session.commit() return redirect("https://saloon.tf/manage/tickets/") return redirect("https://saloon.tf/manage/")
def edit(self): if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser: RUser.name = request.params["name"] if request.params["tradeLink"]: match = re.match(r"(http|https):\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]+&token=([a-zA-Z0-9\-\_]+)", request.params["tradeLink"]) if match: RUser.token = match.group(2) Session.commit() return redirect("https://saloon.tf/settings/")
def disableNotification(self): c.user = False if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser: if RUser.Permissions[0].manage: RNotification = Session.query(db.Notifications).first() RNotification.active = False Session.commit() try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("127.0.0.1", 9002)) s.send(json.dumps(["notification", "disable"])) s.close() except Exception, e: pass return redirect("https://saloon.tf/manage/")
def addBot(self): if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].bots: match = re.match(r"http:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]+&token=([a-zA-Z0-9\-]+)", request.params["tradeoffers"]) if match: RBot = db.Bots(name=request.params["name"], emailAddress=request.params["emailAddress"], emailPassword=request.params["emailPassword"], steamLogin=request.params["steamLogin"], steamPassword=request.params["steamPassword"], steamID=request.params["steamID"], steamAPI=request.params["steamAPI"], backpackAPI=request.params["backpackAPI"], slots=request.params["slots"], slotsEmpty=request.params["slots"], token=match.group(1)) Session.add(RBot) Session.flush() RBotItems = db.BotsItems(bot=RBot.id) RBotLeftoverItems = db.BotsLeftoverItems(bot=RBot.id) Session.add(RBotItems) Session.add(RBotLeftoverItems) Session.commit() return redirect("https://saloon.tf/manage/bots/") return redirect("https://saloon.tf/manage/") return redirect("https://saloon.tf/")
def editUser(self, userID): if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].users: ROtherUser = Session.query(db.Users).filter(db.Users.id == userID).first() if ROtherUser: if int(request.POST["steamid"]) != ROtherUser.steamID: url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%d" % (config["steamapi"], int(request.POST["steamid"])) data = json.loads(requests.get(url).text)[u"response"][u"players"][0] ROtherUser.avatar = data[u"avatarfull"][67:-9] + "_full.jpg" ROtherUser.name = data[u"personaname"] ROtherUser.steamID = request.POST["steamid"] if RUser.Permissions[0].permissions: for permission in ["manage", "leagues", "teams", "users", "bets", "bots", "economy", "scores"]: if permission not in request.POST.getall("permissions"): setattr(ROtherUser.Permissions[0], permission, False) else: setattr(ROtherUser.Permissions[0], permission, True) ROtherUser.rank = int(request.POST["rank"]) teams = [] for team in request.POST.getall("team"): teams.append(int(team)) ROtherUser.teams = teams Session.commit() success = True message = "Changed selected user." else: success = False message = "<strong>Oh snap!</strong> Couldn't edit this user." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def removeLeague(self, leagueID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].leagues: RLeague = Session.query(db.Leagues).filter(db.Leagues.id == leagueID).first() if RLeague: Session.delete(RLeague) Session.commit() success = True message = "Removed selected league." else: success = False message = "<strong>Oh snap!</strong> Couldn't remove this league." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def removeMatch(self, leagueID, matchID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].bets: RMatch = Session.query(db.Matches).filter(db.Matches.id == matchID).first() if RMatch: RMatch.status = 5 Session.commit() success = True message = "Removed selected match." else: success = False message = "<strong>Oh snap!</strong> Couldn't remove this match." else: success = False message = "You don't have sufficent privileges to access this page." else: success = False message = "You don't have sufficent privileges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def new(self): # Return a json array if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser: category = int(request.params["category"]) if category in range(4): RTicket = db.Tickets(user=RUser.id, category=category, title=request.params["title"], email=request.params["email"], text=request.params["text"]) Session.add(RTicket) Session.commit() success = True message = "Ticket sent successfully. Check your email soon for the reponse!" else: success = False message = "<strong>Oh snap!</strong> Couldn't send the ticket." else: success = False message = "You don't have sufficent priviledges to access this page." else: success = False message = "You don't have sufficent priviledges to access this page." array = {"success": success, "message": message} return json.dumps(array)
def switch(self, matchID): # Return redirect("https://saloon.tf/match/' + matchID + '/") if "steamid" not in session: return redirect(request.environ["HTTP_REFERER"]) if request.environ["HTTP_REFERER"] not in ["https://saloon.tf/home", "https://saloon.tf/match/%s/" % matchID]: return redirect(request.environ["HTTP_REFERER"]) RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if not RUser: return redirect(request.environ["HTTP_REFERER"]) RBet = Session.query(db.Bets).filter(and_(db.Bets.match == matchID, db.Bets.user == RUser.id)).first() if RBet: if not (RBet.Match.team1 in RUser.teams or RBet.Match.team2 in RUser.teams) and RBet.Match.status == 0: if RBet.team == RBet.Match.team1: RBetsTotal1 = RBet.Match.BetsTotal1 RBetsTotal2 = RBet.Match.BetsTotal2 RBet.team = RBet.Match.team2 else: RBetsTotal1 = RBet.Match.BetsTotal2 RBetsTotal2 = RBet.Match.BetsTotal1 RBet.team = RBet.Match.team1 RBetsTotal1.value -= RBet.value RBetsTotal2.value += RBet.value ROffers = Session.query(db.Offers).filter(and_(db.Offers.match == matchID, db.Offers.user == RBet.user)).all() for ROffer in ROffers: ROffer.team = RBet.team RItemsBet = Session.query(db.ItemsBet).filter(db.ItemsBet.bet == RBet.id).all() for RItemBet in RItemsBet: RItemBet.team = RBet.team Session.commit() return redirect("https://saloon.tf/match/" + matchID + "/")
def addMatch(self, leagueID): # Returns a redirection to matches if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].bets: advantage = 0 basePoints = [0, 0, 0, 5][self.type] odd = [0, 0, 1, 1][self.type] if request.params["advantage"] < 0: advantage = (request.params["advantage"] - basePoints) if advantage % 2 == odd advantage += 0.5 elif request.params["advantage"] > 0: advantage = (request.params["advantage"] + basePoints) if advantage % 2 == odd advantage -= 0.5 advantage = advantage * 2 RMatch = db.Matches(league=leagueID, team1=request.params["team1"], team2=request.params["team2"], advantage=advantage, stream=request.params["stream"], betsLimit=request.params["betsLimit"], type=request.params["type"]) Session.add(RMatch) Session.commit() botsIDs = [] RBots = db.Session.query(db.Bots).order_by(sql.expression.func.random()).all() for RBot in RBots: botsIDs.append(RBot.id) RMatch.preferredBots = botsIDs matchStart = True matchEnd = True try: time = datetime.datetime.strptime(request.params["time"], "%d-%m-%Y %H:%M") if RMatch.time != time: RMatch.time = time else: matchStart = False except ValueError: if RMatch.time != None: RMatch.time = None else: matchStart = False try: time = datetime.datetime.strptime(request.params["endtime"], "%d-%m-%Y %H:%M") if RMatch.endtime != time: RMatch.endtime = time else: matchEnd = False except ValueError: if RMatch.endtime != None: RMatch.endtime = None else: matchEnd = False if matchStart or matchEnd: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("127.0.0.1", 9002)) message = ["queue", []] if matchStart: message[1].append(["matchStart", RMatch.id, RMatch.time.strftime("%s")]) if matchEnd: message[1].append(["matchEnd", RMatch.id, RMatch.endtime.strftime("%s")]) s.send(json.dumps(message)) s.close() except Exception, e: pass RBetsTotal1 = db.BetsTotal(match=RMatch.id, team=request.params["team1"], value=0) RBetsTotal2 = db.BetsTotal(match=RMatch.id, team=request.params["team2"], value=0) Session.add(RBetsTotal1) Session.add(RBetsTotal2) RWriteup = db.Writeups(match=RMatch.id, text=request.params["articleText"], articleName=request.params["articleName"], articleLink=request.params["articleLink"], matchLink=request.params["matchLink"], vodLink=request.params["vodLink"]) Session.add(RWriteup) Session.commit() return redirect("/manage/matches/%s/" % (leagueID))
def index(self, code = False, path = False): # Return a rendered template if not path: if "Referer" in request.headers: path = request.headers["Referer"].split("/", 3)[3][:-1].replace("/", "+") else: path = "home" if "steamid" in session: return redirect("/%s/" % path.replace("+", "/")) if request.GET.get('openid.signed'): steamID = verifyOpenID() if steamID: session["steamid"] = steamID RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if not RUser: url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=%s&steamids=%d" % (config["steamapi"], session["steamid"]) data = json.loads(requests.get(url).text)[u"response"][u"players"][0] RUser = db.Users(name = data[u"personaname"], steamID = session["steamid"]) Session.add(RUser) Session.commit() RUserPermissions = db.UsersPermissions(user = RUser.id, manage = False, leagues = False, teams = False, users = False, bets = False, bots = False, scores = False, economy = False, permissions = False) Session.add(RUserPermissions) RUserInventory = db.UsersInventories(user = RUser.id) Session.add(RUserInventory) Session.commit() if "osteamid" in session and session["osteamid"] != session["steamid"]: RIncident = db.Incidents(steamID = session["steamid"], value = session["osteamid"], method = "session") Session.add(RIncident) fingerprint = request.headers["CF-Connecting-IP"] RFingerprintsIP = Session.query(db.FingerprintsIP).filter(db.FingerprintsIP.fingerprint == fingerprint).all() for RFingerprintIP in RFingerprintsIP: if RFingerprintIP.steamID == session["steamid"]: break else: RFingerprintIP = db.FingerprintsIP(steamID = session["steamid"], fingerprint = fingerprint) Session.add(RFingerprintIP) if RFingerprintsIP: RIncident = db.Incidents(steamID = session["steamid"], value = fingerprint, method = "ip") Session.add(RIncident) Session.commit() session.save() return redirect("/%s/" % path.replace("+", "/")) parameters = { "openid.ns": "http://specs.openid.net/auth/2.0", "openid.mode": "checkid_setup", "openid.return_to": "https://%s/login/goto/%s/" % (request.headers["Host"], path), "openid.realm": "https://%s" % (request.headers["Host"]), "openid.ns.sreg": "http://openid.net/extensions/sreg/1.1", "openid.claimed_id": "http://specs.openid.net/auth/2.0/identifier_select", "openid.identity": "http://specs.openid.net/auth/2.0/identifier_select", } data = urllib.urlencode(parameters) session.save() return redirect("https://steamcommunity.com/openid/login/?" + data)
def refreshSession(self): Session.commit() return json.dumps(True)
def editMatch(self, leagueID, matchID): # Returns a json string if "steamid" in session: RUser = Session.query(db.Users).filter(db.Users.steamID == session["steamid"]).first() if RUser.Permissions[0].bets: RMatch = Session.query(db.Matches).filter(db.Matches.id == matchID).first() if RMatch: if RMatch.status == 0: matchStart = True elif RMatch.status < 4: matchEnd = True try: time = datetime.datetime.strptime(request.params["time"], "%d-%m-%Y %H:%M") if RMatch.time != time: RMatch.time = time else: matchStart = False except ValueError: if RMatch.time != None: RMatch.time = None else: matchStart = False try: time = datetime.datetime.strptime(request.params["endtime"], "%d-%m-%Y %H:%M") if RMatch.endtime != time: RMatch.endtime = time else: matchEnd = False except ValueError: print request.params["time"] if RMatch.endtime != None: RMatch.endtime = None else: matchEnd = False if matchStart or matchEnd: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) message = ["queue", []] s.connect(("127.0.0.1", 9002)) if matchStart: message[1].append(["matchStart", RMatch.id, RMatch.time.strftime("%s")]) if matchEnd: message[1].append(["matchEnd", RMatch.id, RMatch.endtime.strftime("%s")]) s.send(json.dumps(message)) s.close() except Exception, e: pass RMatch.stream = request.params["stream"] RMatch.betsLimit = request.params["betsLimit"] RWriteup = db.Session.query(db.Writeups).filter(db.Writeups.match == RMatch.id).first() if RWriteup: RWriteup.text = request.params["articleText"] RWriteup.articleName = request.params["articleName"] RWriteup.articleLink = request.params["articleLink"] RWriteup.matchLink = request.params["matchLink"] RWriteup.vodLink = request.params["vodLink"] elif request.params["articleText"]: RWriteup = db.Writeups(match=RMatch.id, text=request.params["articleText"], articleName=request.params["articleName"], articleLink=request.params["articleLink"], matchLink=request.params["matchLink"], vodLink=request.params["vodLink"]) Session.add(RWriteup) Session.commit() success = True message = "Changed selected match." else: success = False message = "<strong>Oh snap!</strong> Couldn't edit this match." else: success = False message = "You don't have sufficent privileges to access this page."