Ejemplo n.º 1
0
def showTop(gender=None):
    if gender is None or not gender in range(2):
        return redirect(url_for('home'))

    entries = sorted(db.session.query(Person).filter(
        and_(Person.gender == gender, Person.hidden == False)).all(),
                     key=lambda x: x.rating,
                     reverse=True)[:20]
    picSizes = [400 for x in entries]
    picSizes[0] = 700
    picSizes[1] = 600
    picSizes[2] = 500

    pics = [getProfilePictureLocation(x) for i, x in enumerate(entries)]
    grades = [getGradeEquivalent(x.rating) for x in entries]

    print "user <%s> accessed the %s top" % (getIP(), ['girls', 'boys'
                                                       ][gender])

    return render_template('top.html',
                           entries=entries,
                           grades=grades,
                           howMany=len(entries),
                           pics=pics,
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 2
0
def showTop(gender=None):
    if gender is None or not gender in range(2):
        return redirect(url_for('home'))

    entries = sorted(db.session.query(Person).filter(and_(Person.gender == gender, Person.hidden == False)).all(), key=lambda x: x.rating, reverse=True)[:20]
    picSizes = [400 for x in entries]
    picSizes[0] = 700
    picSizes[1] = 600
    picSizes[2] = 500

    pics = [getProfilePictureLocation(x) for i, x in enumerate(entries)]
    grades = [getGradeEquivalent(x.rating) for x in entries]

    print "user <%s> accessed the %s top" % (getIP(), ['girls', 'boys'][gender])

    return render_template(
            'top.html',
            entries=entries,
            grades=grades,
            howMany=len(entries),
            pics=pics,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 3
0
def setTheme(theme):
    currentUser = Preference.query.filter(Preference.ip == getIP()).first()
    if currentUser is None:
        db.session.add(Preference(ip=getIP(), theme=theme))
        print "user %s selected theme <%s> for the first time" % (getIP(), theme)
    else:
        currentUser.theme = theme
        print "user %s changed theme to <%s>" % (getIP(), theme)

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 4
0
def changeIP():  #根据要求改变ip
    global s1, s2, proxies1, proxies2, end1, end2
    while end1 and end2:
        # print('s1 s2:','\n',s1,s2)
        if s2 >= 20:
            s2 = 0
            proxies2 = getIP()
            print(proxies2, '\n')
        if s1 >= 35:
            s1 = 0
            proxies1 = getIP()
            print(proxies1, '\n')
Ejemplo n.º 5
0
def setTheme(theme):
    currentUser = Preference.query.filter(Preference.ip == getIP()).first()
    if currentUser is None:
        db.session.add(Preference(ip=getIP(), theme=theme))
        print "user %s selected theme <%s> for the first time" % (getIP(),
                                                                  theme)
    else:
        currentUser.theme = theme
        print "user %s changed theme to <%s>" % (getIP(), theme)

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 6
0
def setGender(gender):
    gender = (gender == 1)
    currentUser = Preference.query.filter(Preference.ip == getIP()).first()
    if currentUser is None:
        db.session.add(Preference(ip=getIP(), gender=gender))
        print "user %s selected gender <%r> for the first time" % (getIP(), gender)
    else:
        currentUser.gender = gender
        print "user %s changed gender to <%r>" % (getIP(), gender)

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 7
0
def setGender(gender):
    gender = (gender == 1)
    currentUser = Preference.query.filter(Preference.ip == getIP()).first()
    if currentUser is None:
        db.session.add(Preference(ip=getIP(), gender=gender))
        print "user %s selected gender <%r> for the first time" % (getIP(),
                                                                   gender)
    else:
        currentUser.gender = gender
        print "user %s changed gender to <%r>" % (getIP(), gender)

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 8
0
def showAll(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    entries = db.session.query(Person).all()
    # entries = sorted(entries, key=lambda x: x.rating, reverse=True)
    # shuffle(entries)
    pages = len(entries) // onPage + (len(entries) % onPage != 0)
    firstNav, lastNav = max(1, page-3), min(page+3, pages)
    shownEntries = entries[(page-1)*onPage: min(len(entries), page*onPage)]

    return render_template(
            'all.html',
            entries=shownEntries,
            page=page,
            pages=pages,
            firstNav=firstNav,
            lastNav=lastNav,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 9
0
def getCurrentGender():
    try:
        currentGender = Preference.query.filter(
            Preference.ip == getIP()).first().gender
    except:
        currentGender = SETTINGS['defaultGender']
    return currentGender
Ejemplo n.º 10
0
def detectSpam(players):
    who = getIP()

    try:
        lastVoteSameResult = db.session.query(Vote).filter(Vote.ip == who).filter(and_(Vote.winner == players[0].username, Vote.loser == players[1].username)).order_by(Vote.id.desc()).first()
    except:
        lastVoteSameResult = None

    try:
        lastVoteInvertedResult = db.session.query(Vote).filter(Vote.ip == who).filter(and_(Vote.winner == players[1].username, Vote.loser == players[0].username)).order_by(Vote.id.desc()).first()
    except:
        lastVoteInvertedResult = None

    isSpam = False
    lastWasSpam = False
    now = datetime.datetime.now()

    for lastVote in [lastVoteSameResult, lastVoteInvertedResult]:
        if lastVote:
            timeDiff = (now - lastVote.when).total_seconds()
            if timeDiff < SETTINGS['minVoteWait']:
                isSpam = True
            if lastVote.spam:
                lastWasSpam = True
            #print "waited since last vote: %.2f" % timeDiff

    if not isSpam or (isSpam and not lastWasSpam):
        db.session.add(Vote(ip=who, winner=players[0].username, loser=players[1].username, when=now, spam=isSpam))
    db.session.commit()

    return isSpam
Ejemplo n.º 11
0
def showVotes(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    voteCount = db.session.query(Vote).count()
    pages = voteCount // onPage + (voteCount % onPage != 0)
    firstNav, lastNav = max(1, page-3), min(page+3, pages)

    lastVoteID = voteCount - (page-1) * onPage
    firstVoteID = lastVoteID - onPage + 1

    shownEntries = db.session.query(Vote).order_by(-Vote.id).filter(and_(firstVoteID <= Vote.id, Vote.id <= lastVoteID)).all()

    return render_template(
            'votes.html',
            entries=shownEntries,
            page=page,
            pages=pages,
            firstNav=firstNav,
            lastNav=lastNav,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 12
0
def showVotes(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    voteCount = db.session.query(Vote).count()
    pages = voteCount // onPage + (voteCount % onPage != 0)
    firstNav, lastNav = max(1, page - 3), min(page + 3, pages)

    lastVoteID = voteCount - (page - 1) * onPage
    firstVoteID = lastVoteID - onPage + 1

    shownEntries = db.session.query(Vote).order_by(-Vote.id).filter(
        and_(firstVoteID <= Vote.id, Vote.id <= lastVoteID)).all()

    return render_template('votes.html',
                           entries=shownEntries,
                           page=page,
                           pages=pages,
                           firstNav=firstNav,
                           lastNav=lastNav,
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 13
0
def showAll(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    entriesCount = db.session.query(Person).count()
    pages = entriesCount // onPage + (entriesCount % onPage != 0)
    firstNav, lastNav = max(1, page - 3), min(page + 3, pages)

    firstEntryID = (page - 1) * onPage + 1
    lastEntryID = firstEntryID + onPage - 1

    shownEntries = db.session.query(Person).filter(
        and_(firstEntryID <= Person.id, Person.id <= lastEntryID)).all()

    # Some entries may not have a cached picture yet
    # So it's a good idea to cache them now.
    # This is slow for a fresh database, but saves
    # user time in the long run and is a one-time thing
    for x in shownEntries:
        getProfilePictureLocation(x)

    return render_template('all.html',
                           entries=shownEntries,
                           page=page,
                           pages=pages,
                           firstNav=firstNav,
                           lastNav=lastNav,
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 14
0
def listener(messages):
    info = 'Hello! My name is arcticEdisonBot!\n'\
    'You can type:\n'\
    '/status - to get the last status,\n'\
    '/rushStatus - to get status immediately,\n'\
    '/estStates - to get the estimated state,\n'\
    '/getWiFiIP - to get wifi ip adress,\n'\
    '/info - to get help.\n\n'\
    '@arcticEdisonBot'
    for message in messages:
        if message.text == '/status':
            status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \
            ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration)
            bot.reply_to(message, status)
        elif message.text == '/rushStatus':
            bot.send_message(message.chat.id, 'Please, wait...')
            startThreads()
            status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \
            ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration)
            bot.reply_to(message, status)
        elif message.text == '/estStates':
            bot.reply_to(message, stateTitle)
        elif message.text == '/info':
            bot.reply_to(message, info)
        elif message.text == '/getWiFiIP':
            bot.reply_to(message, getIP.getIP('wlan0'))
        else:
            bot.reply_to(message, 'Type /info for help!')
Ejemplo n.º 15
0
def processVote(form):
    players = [
        db.session.query(Person).get(int(form['winner'])),
        db.session.query(Person).get(int(form['loser']))
        ]

    if detectSpam(players):
        #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username)
        return

    print "vote:\n    who:    <%s>\n    winner: <%s>\n    loser:  <%s>" % (getIP(), players[0].username, players[1].username)

    newStats = {}

    # firstly, get new ratings (without altering anything) for all players
    for currentPlayer in players:
        newStats[currentPlayer] = getNewRatings(currentPlayer, players)

    # secondly, update all ratings based on computed values
    for currentPlayer in players:
        currentPlayer.rating = newStats[currentPlayer]['newRating']
        currentPlayer.volatility = newStats[currentPlayer]['newVolatility']
        currentPlayer.games += 1
        if currentPlayer == players[0]:
            currentPlayer.wins += 1
        currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating)

    db.session.commit()
Ejemplo n.º 16
0
def showAll(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    entriesCount = db.session.query(Person).count()
    pages = entriesCount // onPage + (entriesCount % onPage != 0)
    firstNav, lastNav = max(1, page-3), min(page+3, pages)

    firstEntryID = (page-1)*onPage + 1
    lastEntryID = firstEntryID + onPage - 1

    shownEntries = db.session.query(Person).filter(and_(firstEntryID <= Person.id, Person.id <= lastEntryID)).all()

    # Some entries may not have a cached picture yet
    # So it's a good idea to cache them now.
    # This is slow for a fresh database, but saves
    # user time in the long run and is a one-time thing
    for x in shownEntries:
        getProfilePictureLocation(x)

    return render_template(
            'all.html',
            entries=shownEntries,
            page=page,
            pages=pages,
            firstNav=firstNav,
            lastNav=lastNav,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 17
0
def listener(messages):
    info = 'Hello! My name is arcticEdisonBot!\n'\
    'You can type:\n'\
    '/status - to get the last status,\n'\
    '/rushStatus - to get status immediately,\n'\
    '/estStates - to get the estimated state,\n'\
    '/getWiFiIP - to get wifi ip adress,\n'\
    '/info - to get help.\n\n'\
    '@arcticEdisonBot'
    for message in messages:
        if message.text == '/status':
            status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \
            ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration)
            bot.reply_to(message, status)
        elif message.text == '/rushStatus':
            bot.send_message(message.chat.id, 'Please, wait...')
            startThreads()
            status = 'Light: '+str(c.light)+' Sound: '+str(c.mic)+ \
            ' Motion: '+str(c.motion)+' Vibrtion: '+str(c.vibration)
            bot.reply_to(message, status)
        elif message.text == '/estStates':
            bot.reply_to(message, s.stateTitle)
        elif message.text == '/info':
            bot.reply_to(message, info)
        elif message.text == '/getWiFiIP':
            bot.reply_to(message, getIP.getIP('wlan0'))
        else:
            bot.reply_to(message, 'Type /info for help!')
Ejemplo n.º 18
0
def legal():
    return render_template('legal.html',
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 19
0
def pageNotFound(e):
    return render_template('404.html',
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP()), 404
Ejemplo n.º 20
0
 def miIPExists(self):
     myip = getIP.getIP()
     usuarios = self.obtenerUsuarios()
     for item in usuarios:
         if item[1] == myip:  #la posicion 1, corresponde al campo IP
             self.miID = item[0]  #la posicion 0, corresponde al campo ID
             return True
     return False
Ejemplo n.º 21
0
def getCurrentTheme():
    try:
        themeName = db.session.query(Preference).filter(Preference.ip == getIP()).first().theme
        matchedTheme = db.session.query(Theme).filter(Theme.name == themeName).first()
        currentTheme = (themeName, matchedTheme.source, matchedTheme.background)
    except:
        currentTheme = SETTINGS['defaultTheme']
    return currentTheme
Ejemplo n.º 22
0
def about():
    return render_template(
            'about.html',
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 23
0
def getCurrentTheme():
    try:
        themeName = db.session.query(Preference).filter(Preference.ip == getIP()).first().theme
        themeURL = db.session.query(Theme).filter(Theme.name == themeName).first().source
        themeBG = db.session.query(Theme).filter(Theme.name == themeName).first().background
        currentTheme = (themeName, themeURL, themeBG)
    except:
        currentTheme = SETTINGS['defaultTheme']

    return currentTheme
Ejemplo n.º 24
0
def legal():
    return render_template(
            'legal.html',
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 25
0
def pageNotFound(e):
    return render_template(
            '404.html',
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            ), 404
Ejemplo n.º 26
0
def getCurrentTheme():
    try:
        themeName = db.session.query(Preference).filter(
            Preference.ip == getIP()).first().theme
        matchedTheme = db.session.query(Theme).filter(
            Theme.name == themeName).first()
        currentTheme = (themeName, matchedTheme.source,
                        matchedTheme.background)
    except:
        currentTheme = SETTINGS['defaultTheme']
    return currentTheme
Ejemplo n.º 27
0
def about():
    deltas = {
            'hour': {
                'hours': 1,
                'votes': None,
                'voters': None
                },
            'day': {
                'hours': 24,
                'votes': None,
                'voters': None
                },
            'week': {
                'hours': 24*7,
                'votes': None,
                'voters': None
                },
            'month': {
                'hours': 24*30,
                'votes': None,
                'voters': None
                },
            'ever': {
                'hours': 10**6,
                'votes': None,
                'voters': None
                }
            }

    now = datetime.datetime.now()
    nonSpamVotes = db.session.query(Vote).filter(Vote.spam == False)
    for delta in ['ever', 'month', 'week', 'day', 'hour']:
        oneDeltaAgo = now - datetime.timedelta(hours = deltas[delta]['hours'])

        nonSpamVotes = nonSpamVotes.filter(Vote.when > oneDeltaAgo)
        # ^progressively reduce list of votes; O(n) instead of O(n * number of different deltas)

        deltas[delta]['votes'] = nonSpamVotes.count()
        deltas[delta]['voters'] = nonSpamVotes.distinct(Vote.ip).group_by(Vote.ip).count()

    saveStats(deltas)
    uptime = sh("uptime -p")[3:]

    return render_template(
            'about.html',
            deltas=deltas,
            uptime=uptime,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 28
0
def about():
    deltas = {
        'hour': {
            'hours': 1,
            'votes': None,
            'voters': None
        },
        'day': {
            'hours': 24,
            'votes': None,
            'voters': None
        },
        'week': {
            'hours': 24 * 7,
            'votes': None,
            'voters': None
        },
        'month': {
            'hours': 24 * 30,
            'votes': None,
            'voters': None
        },
        'ever': {
            'hours': 10**6,
            'votes': None,
            'voters': None
        }
    }

    now = datetime.datetime.now()
    nonSpamVotes = db.session.query(Vote).filter(Vote.spam == False)
    for delta in ['ever', 'month', 'week', 'day', 'hour']:
        oneDeltaAgo = now - datetime.timedelta(hours=deltas[delta]['hours'])

        nonSpamVotes = nonSpamVotes.filter(Vote.when > oneDeltaAgo)
        # ^progressively reduce list of votes; O(n) instead of O(n * number of different deltas)

        deltas[delta]['votes'] = nonSpamVotes.count()
        deltas[delta]['voters'] = nonSpamVotes.distinct(Vote.ip).group_by(
            Vote.ip).count()

    saveStats(deltas)
    uptime = sh("uptime -p")[3:]

    return render_template('about.html',
                           deltas=deltas,
                           uptime=uptime,
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 29
0
    def enviarMensaje(self, msg, user=getIP.getIP()):
        conexion = http.client.HTTPConnection(self.url, self.port, self.espera)
        data = {user: msg}
        json_data = json.dumps(data)  # convertir a json

        conexion.request('POST',
                         '/',
                         json_data,
                         headers={'Content-type':
                                  'application/json'})  # enviar json
        #response = conexion.getresponse() # esperar respuesta
        #print(response.read())
        self.actualizaMensajes(
        )  #actualizar, para visualizar mi mensaje enviado
        conexion.close()
Ejemplo n.º 30
0
def home():
    if request.method == 'POST':
        processVote(request.form)
        return redirect(url_for('home'))

    choices = drawChoices(wantedGender=getCurrentGender())

    return render_template('home.html',
                           choices=choices,
                           totalVotes=getTotalVotes(),
                           uniqueVoters=getUniqueVoters(),
                           currentGender=getCurrentGender(),
                           currentTheme=getCurrentTheme(),
                           genderCount=getGenderCount(),
                           themes=getThemes(),
                           userIP=getIP())
Ejemplo n.º 31
0
def processVote(form):
    players = [
        db.session.query(Person).get(int(form['winner'])),
        db.session.query(Person).get(int(form['loser']))
        ]

    if detectSpam(players):
        #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username)
        return

    print "vote:\n    who:    <%s>\n    winner: <%s>\n    loser:  <%s>" % (getIP(), players[0].username, players[1].username)

    if 'harababurel' in [players[0].username, players[1].username] or 'mihai.rus.777' in [players[0].username, players[1].username]:
        try:
            sh('sh beeper.sh')
        except Exception, e:
            print "tried to execute beeper.sh, but something went wrong (err: %s)" % e
Ejemplo n.º 32
0
def showTop(gender=None):
    if gender is None or not gender in range(2):
        return redirect(url_for('home'))

    entries = sorted(db.session.query(Person).filter(and_(Person.gender == gender, Person.hidden == False)).all(), key=lambda x: x.rating, reverse=True)[:15]
    pics = [SETTINGS['basePic'] % (x.username, 400, 400) for x in entries]

    return render_template(
            'top.html',
            entries=entries,
            howMany=len(entries),
            pics=pics,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 33
0
def home():
    if request.method == 'POST':
        processVote(request.form)
        return redirect(url_for('home'))

    choices = drawChoices(wantedGender=getCurrentGender())

    return render_template(
            'home.html',
            choices=choices,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentGender=getCurrentGender(),
            currentTheme=getCurrentTheme(),
            genderCount=getGenderCount(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 34
0
def detectSpam(players):
    who = getIP()

    try:
        lastVoteSameResult = db.session.query(Vote).filter(
            Vote.ip == who).filter(
                and_(Vote.winner == players[0].username,
                     Vote.loser == players[1].username)).order_by(
                         Vote.id.desc()).first()
    except:
        lastVoteSameResult = None

    try:
        lastVoteInvertedResult = db.session.query(Vote).filter(
            Vote.ip == who).filter(
                and_(Vote.winner == players[1].username,
                     Vote.loser == players[0].username)).order_by(
                         Vote.id.desc()).first()
    except:
        lastVoteInvertedResult = None

    isSpam = False
    lastWasSpam = False
    now = datetime.datetime.now()

    for lastVote in [lastVoteSameResult, lastVoteInvertedResult]:
        if lastVote:
            timeDiff = (now - lastVote.when).total_seconds()
            if timeDiff < SETTINGS['minVoteWait']:
                isSpam = True
            if lastVote.spam:
                lastWasSpam = True
            #print "waited since last vote: %.2f" % timeDiff

    if not isSpam or (isSpam and not lastWasSpam):
        db.session.add(
            Vote(ip=who,
                 winner=players[0].username,
                 loser=players[1].username,
                 when=now,
                 spam=isSpam))
    db.session.commit()

    return isSpam
Ejemplo n.º 35
0
def flipHidden():
    if request.method != 'POST':
        return redirect(url_for('home'))

    author = request.form['author']
    target = db.session.query(Person).get(int(request.form['id']))
    action = 'unhide' if target.hidden else 'hide'
    now = datetime.datetime.now()

    target.hidden = not target.hidden
    db.session.add(
        Takedown(ip=getIP(),
                 author=author,
                 target=target.username,
                 action=action,
                 when=now))

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 36
0
def processVote(form):
    players = [
        db.session.query(Person).get(int(form['winner'])),
        db.session.query(Person).get(int(form['loser']))
    ]

    if detectSpam(players):
        #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username)
        return

    print "vote:\n    who:    <%s>\n    winner: <%s>\n    loser:  <%s>" % (
        getIP(), players[0].username, players[1].username)

    if 'harababurel' in [
            players[0].username, players[1].username
    ] or 'mihai.rus.777' in [players[0].username, players[1].username]:
        try:
            sh('sh beeper.sh')
        except Exception, e:
            print "tried to execute beeper.sh, but something went wrong (err: %s)" % e
Ejemplo n.º 37
0
def detectSpam(players):
    who = getIP()

    votes = db.session.query(Vote).filter(and_(Vote.ip == who, Vote.winner == players[0].username)).all()
    lastVote = None
    isSpam = False
    now = datetime.datetime.now()

    if votes:
        lastVote = votes[-1]

    if lastVote:
        timeDiff = (now - lastVote.when).total_seconds()
        if timeDiff < SETTINGS['minVoteWait']:
            isSpam = True

        #print "waited since last vote: %.2f" % timeDiff

    db.session.add(Vote(ip=who, winner=players[0].username, loser=players[1].username, when=now, spam=isSpam))
    db.session.commit()

    return isSpam
Ejemplo n.º 38
0
def flipHidden():
    if request.method != 'POST':
        return redirect(url_for('home'))

    author = request.form['author']
    target = db.session.query(Person).get(int(request.form['id']))
    action = 'unhide' if target.hidden else 'hide'
    now = datetime.datetime.now()

    target.hidden = not target.hidden
    db.session.add(
            Takedown(
                ip=getIP(),
                author=author,
                target=target.username,
                action=action,
                when=now
                )
            )

    db.session.commit()
    return redirect(url_for('home'))
Ejemplo n.º 39
0
def home():
    if request.method == 'POST':
        processVote(request.form)
        return redirect(url_for('home'))

    choices = drawChoices(wantedGender=getCurrentGender())

    return render_template(
            'home.html',
            L=choices['L'],
            R=choices['R'],
            picL=choices['picL'],
            picR=choices['picR'],
            ratingL=int(choices['L'].rating),
            ratingR=int(choices['R'].rating),
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentGender=getCurrentGender(),
            currentTheme=getCurrentTheme(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 40
0
def login():
    try:
        response = make_response()
        result = authomatic.login(WerkzeugAdapter(request, response), 'fb')
    except:
        return 'could not log you in :( go <a href="/">home</a>'

    if result:
        if result.user:
            result.user.update()

        realName = result.user.name.upper()
        v = []
        for x in db.session.query(Person).filter(Person.fullname is not None).all():
            facebookName = x.fullname.upper()

            for letter in 'abcdefghijklmnopqrstuvwxyz'.upper():
                if '%s.' % letter in facebookName:
                    facebookName = facebookName.replace('%s.' % letter, '') # get rid of father's initials

            nameSimilarity = getStringSimilarity(realName, facebookName)
            if nameSimilarity > 0.47:
                v.append((nameSimilarity, x))

        v = sorted(v, reverse=True)[:2]

        return render_template(
                'login.html',
                author=realName,
                matches=v,
                totalVotes=getTotalVotes(),
                uniqueVoters=getUniqueVoters(),
                currentTheme=getCurrentTheme(),
                genderCount=getGenderCount(),
                themes=getThemes(),
                userIP=getIP()
                )
    return response
Ejemplo n.º 41
0
def login():
    try:
        response = make_response()
        result = authomatic.login(WerkzeugAdapter(request, response), 'fb')
    except:
        return 'could not log you in :( go <a href="/">home</a>'

    if result:
        if result.user:
            result.user.update()

        realName = result.user.name.upper()
        v = []
        for x in db.session.query(Person).filter(
                Person.fullname is not None).all():
            facebookName = x.fullname.upper()

            for letter in 'abcdefghijklmnopqrstuvwxyz'.upper():
                if '%s.' % letter in facebookName:
                    facebookName = facebookName.replace(
                        '%s.' % letter, '')  # get rid of father's initials

            nameSimilarity = getStringSimilarity(realName, facebookName)
            if nameSimilarity > 0.47:
                v.append((nameSimilarity, x))

        v = sorted(v, reverse=True)[:2]

        return render_template('login.html',
                               author=realName,
                               matches=v,
                               totalVotes=getTotalVotes(),
                               uniqueVoters=getUniqueVoters(),
                               currentTheme=getCurrentTheme(),
                               genderCount=getGenderCount(),
                               themes=getThemes(),
                               userIP=getIP())
    return response
Ejemplo n.º 42
0
def showVotes(page=None):
    if page is None:
        page = 1
    onPage = SETTINGS['entriesOnPage']

    entries = db.session.query(Vote).all()[::-1]
    pages = len(entries) // onPage + (len(entries) % onPage != 0)
    firstNav, lastNav = max(1, page-3), min(page+3, pages)
    shownEntries = entries[(page-1)*onPage: min(len(entries), page*onPage)]

    return render_template(
            'votes.html',
            entries=shownEntries,
            page=page,
            pages=pages,
            firstNav=firstNav,
            lastNav=lastNav,
            totalVotes=getTotalVotes(),
            uniqueVoters=getUniqueVoters(),
            currentTheme=getCurrentTheme(),
            themes=getThemes(),
            userIP=getIP()
            )
Ejemplo n.º 43
0
def getCurrentGender():
    try:
        currentGender = Preference.query.filter(Preference.ip == getIP()).first().gender
    except:
        currentGender = False
    return currentGender
Ejemplo n.º 44
0
def main():
    prevTransactionNumber = 0
    sleep(2)
    while (1):
        #findNewTransaction() gets all the recent transactions that need to be processed.
        #this is the only function that would need to be changed if we got access to the WMS
        newTransactions = findNewTransaction(prevTransactionNumber)

        if (len(newTransactions) > 0):
            for i in range(0, len(newTransactions)):
                # looping through new transactions
                pickOrPut, location, RFID = newTransactions[i]
                #pick 0, put 1

                # check if the location needs to be turned on or off
                ON_Tuple = onOrOff(location, RFID, pickOrPut)
                if (len(ON_Tuple) == 2 and ON_Tuple[0] != -1):  #picking
                    #ON_Tuple format: [location, ON/OFF]

                    #input format: [storage location,pickerID,on/off]
                    string_address = str(
                        ON_Tuple[0]) + "," + np.array2string(RFID) + "," + str(
                            ON_Tuple[1])
                    data = string_address.encode(
                        'utf-8'
                    )  # encode input as a byte for datagram protocol
                    #get IP address of the microcontroller connected to the location
                    address = getIP(location)
                    #send the command to the arduino
                    client_socket = socket(AF_INET,
                                           SOCK_DGRAM)  #set up the socket
                    client_socket.settimeout(
                        1)  #only wait one second for a response
                    send_address = (str(address[1]), 5000)
                    client_socket.sendto(
                        data, send_address)  #send command to arduino
                    try:
                        rec_data, addr = client_socket.recvfrom(
                            2048)  #reading response from arduino
                        #print(rec_data.decode()) #Print the response from the arduino
                    except:
                        #error checking if transmission doesn't work?
                        pass
                    client_socket.close()

                if (len(ON_Tuple) == 4):  #putaway
                    location = [ON_Tuple[0], ON_Tuple[2]]
                    ON = [ON_Tuple[1], ON_Tuple[3]]
                    #ON_Tuple format: [location1, ON/OFF1, location2, ON/OFF2]
                    for i in range(0, 2):  #for each location in the tuple
                        if (str(location[i]) != 'None'):
                            #input format: [storage location,pickerID,on/off]
                            string_address = str(
                                location[i]) + "," + np.array2string(
                                    RFID) + "," + str(ON[i])
                            data = string_address.encode(
                                'utf-8'
                            )  # encode input as a byte for datagram protocol
                            #get IP address of the microcontroller connected to the location
                            address = getIP(location[i])
                            #send the command to the arduino
                            client_socket = socket(
                                AF_INET, SOCK_DGRAM)  #set up the socket
                            client_socket.settimeout(
                                1)  #only wait one second for a response
                            send_address = (str(address[1]), 5000)
                            client_socket.sendto(
                                data, send_address)  #send command to arduino
                            try:
                                rec_data, addr = client_socket.recvfrom(
                                    2048)  #reading response from arduino
                                #print(rec_data.decode()) #Print the response from the arduino
                            except:
                                #error checking if transmission doesn't work?
                                pass
                            client_socket.close()
                            sleep(1)
        prevTransactionNumber = prevTransactionNumber + 1
        print(prevTransactionNumber)
        sleep(5)  # for testing
Ejemplo n.º 45
0
def info_search(url: str, start: str, end: str, date, proxies):
    # print(str(date))
    date_time = str(datetime.datetime.strptime(str(date), '%Y-%m-%d'))  # 转换为日期
    week_day = date.strftime('%w')  # 转换为周几
    week_dict = {
        '0': '周日',
        '1': '周一',
        '2': '周二',
        '3': '周三',
        '4': '周四',
        '5': '周五',
        '6': '周六'
    }
    week_day = week_dict[week_day]

    user_agent = (random.choice(USER_AGENT_LIST))

    # # headers
    # pre_headers={
    #     'User-Agent': user_agent,
    #    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    #    'accept-encoding':'gzip, deflate, br',
    #    'accept-language':'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6',
    #    'cache-control':'max-age=0',
    #    'cookie':'_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5317%u4EAC%28BJS%29%24BJS%242019-12-4%24%u5357%u5B81%28%u5434%u5729%u56FD%u9645%u673A%u573A%29%28NNG%29%24NNG%24%24%24"}; _bfa=1.1573299825075.2c2710.1.1574130278578.1575119584536.9.82; _bfs=1.3; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575119640308.1575119698012.1575119640308.1575119698012.0.0.0.65.65; __zpspc=9.10.1575119640.1575119698.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D100101991%26v1%3D82%26v2%3D81',
    #    'Referer': 'https://www.ctrip.com/',
    # }

    request_headers = {
        'accept':
        '*/*',
        'accept-encoding':
        'gzip, deflate, br',
        'accept-language':
        'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6',
        'content-length':
        '287',
        'content-type':
        'application/json',
        'cookie':
        '_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5317%u4EAC%28BJS%29%24BJS%242019-12-4%24%u5357%u5B81%28%u5434%u5729%u56FD%u9645%u673A%u573A%29%28NNG%29%24NNG%24%24%24"}; _bfa=1.1573299825075.2c2710.1.1574130278578.1575119584536.9.82; _bfs=1.3; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575119640308.1575119698012.1575119640308.1575119698012.0.0.0.65.65; __zpspc=9.10.1575119640.1575119698.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D100101991%26v1%3D82%26v2%3D81',
        # '_abtest_userid=427f44ed-cf0b-4c75-b995-b4ca21d572fe; _ga=GA1.2.1406023646.1573299831; _RF1=111.207.1.146; _RSG=7_aiNPEaVwC1J9izn1bcvA; _RDG=28a1df2533a37725e23e1a74ab64575ae6; _RGUID=ce9f90e6-57b2-4fc7-ae66-941c7db094c1; appFloatCnt=5; _gid=GA1.2.1669130808.1575119640; MKT_Pagesource=PC; FD_SearchHistorty={"type":"S","data":"S%24%u5929%u6D25%28TSN%29%24TSN%242019-12-6%24%u6842%u6797%28%u4E24%u6C5F%u56FD%u9645%u673A%u573A%29%28KWL%29%24KWL%24%24%24"}; Session=smartlinkcode=U135371&smartlinklanguage=zh&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=; Union=AllianceID=4899&SID=135371&OUID=&Expires=1575899547197; _bfa=1.1573299825075.2c2710.1.1575294741108.1575297977128.19.101; _bfs=1.2; _jzqco=%7C%7C%7C%7C%7C1.51473978.1573299831438.1575297980376.1575298473075.1575297980376.1575298473075.0.0.0.83.83; __zpspc=9.20.1575297980.1575298473.2%233%7Cwww.google.com%7C%7C%7C%7C%23; _bfi=p1%3D10320673302%26p2%3D10320673302%26v1%3D101%26v2%3D99',
        'origin':
        'https://flights.ctrip.com',
        'referer':
        'https://flights.ctrip.com/itinerary/oneway/tsn-kwl?date={}'.format(
            str(date)),
        'sec-fetch-mode':
        'cors',
        'sec-fetch-site':
        'same-origin',
        'Connection':
        'close',
        'user-agent':
        user_agent,
    }

    #request payload
    data = {
        "flightWay":
        "Oneway",
        "classType":
        "ALL",
        "hasChild":
        'false',
        "hasBaby":
        'false',
        "searchIndex":
        1,
        "date":
        str(date),
        "airportParams": [{
            "dcity": city[start],
            "acity": city[end],
            "dcityname": start,
            "acityname": end,
            "date": str(date),
            "dcityid": city_num[start],
            "acityid": city_num[end]
        }],
        "token":
        "afdf8bc932b8724d47bb9a7ce9014441"
    }
    url = 'https://flights.ctrip.com/itinerary/api/12808/products'  # 真正的请求链接
    # print(url)
    while 1:
        try:
            r = requests.post(url,
                              headers=request_headers,
                              data=json.dumps(data),
                              proxies=proxies).json()
            while len(r) == 2:  #请求失败后更换重新搜索
                proxies = getIP()
                sleep(random.choice([0.1, 0.8, 1.1]))
                r = requests.post(url,
                                  headers=request_headers,
                                  data=json.dumps(data),
                                  proxies=proxies).json()
            return r
        except:
            proxies = getIP()
Ejemplo n.º 46
0
    "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
    "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
    "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 "
    "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
    "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 "
    "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 "
    "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

proxies1 = getIP()
sleep(3)
proxies2 = getIP()  #全局可以改变的ip
s1, s2 = 0, 0  #全局判断每个ip使用次数,为了防止被封,使用50次更换
end1, end2 = 1, 1  #判断两个爬取线程结束的全局变量


# 根据出发地,目的地,时间爬取,只爬取飞机,不中转
def info_search(url: str, start: str, end: str, date, proxies):
    # print(str(date))
    date_time = str(datetime.datetime.strptime(str(date), '%Y-%m-%d'))  # 转换为日期
    week_day = date.strftime('%w')  # 转换为周几
    week_dict = {
        '0': '周日',
        '1': '周一',
        '2': '周二',
Ejemplo n.º 47
0
def setIP():
    try:
        os.system(SET_IP_CMD + ' ' + getIP.getIP() + ' ' + SET_IP_MASK)
        print("Your new IP address is: ", getIP.getIP())
    except Exception as e:
        print("Error :", e)
Ejemplo n.º 48
0
import time
import datetime
import sys
import board
import busio
import adafruit_ccs811
from statistics import mean
import getIP
import textStatus

acIP = getIP.getIP()
print(acIP)
textStatus.textStatus(acIP)

i2c_bus = busio.I2C(board.SCL, board.SDA)
ccs811 = adafruit_ccs811.CCS811(i2c_bus)

fo = open("/home/pi/airquality.csv", "a")

co2 = []
tvoc = []

for k in range(20):
    try:
        if not ccs811.data_ready:
            pass
        else:
            if ccs811.eco2 > 0:
                co2.append(ccs811.eco2)
                tvoc.append(ccs811.tvoc)
                print("C02 %1.0f PPM" % ccs811.eco2, end=" ")
Ejemplo n.º 49
0
new = []
for node in nodes:
    # ping all nodes
    if node != '':
        # -W 1 ==> wait max one sec
        ans = os.popen('ping -c 1 -W 1 ' + node + ' 2> /dev/null')
        ret = ans.close()

        if ret == None:
            # https://docs.python.org/2/library/os.html#os.popen
            # success
            new.append(node)
        else:
            # print("DELETING")
            ans = os.popen('sudo arp -d ' + node + ' 2> /dev/null')
            ret = ans.close()
            if ret == None:
                print(node + " : Entry Left(??) ")
            else:
                pass

print("Your neighbours are:")
for i in new:
    if i == '10.255.255.255':
        print i + " (BROADCAST)"
    elif i == getIP.getIP():
        print i + " (YOU)"
    else:
        print i
Ejemplo n.º 50
0
def getCurrentGender():
    try:
        currentGender = Preference.query.filter(Preference.ip == getIP()).first().gender
    except:
        currentGender = SETTINGS['defaultGender']
    return currentGender
Ejemplo n.º 51
0
import os
import getIP

GET_NEIGHBOUR_CMD = 'python getNeighbours.py'

try:
    print("Your IP address is ", getIP.getIP())
    ans = os.popen(GET_NEIGHBOUR_CMD)
    for i in ans:
        print i,
except Exception as e:
    # print("Exception :",e)
    pass