Пример #1
0
  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/")
Пример #2
0
  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/")
Пример #3
0
 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)
Пример #4
0
 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/")
Пример #5
0
  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."
Пример #6
0
  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))
Пример #7
0
  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)