コード例 #1
0
ファイル: allserv.py プロジェクト: Red-M/frogbot
def fakemcserver(inp,bot=None,input=None):
    ",fakemcserver <port> <max players> <server-name-with-no-spaces> " \
    "<players-you-want-on-it> -- makes a fake minecraft classic server." \
    "also appears on the mc classic server list..."
    
    if perm.isowner(input):
        check = input.inp.split(" ")
        if len(check)==4:
            i = 0
            HOST, PORT = "", int(check[0])
            global bottest
            bottest = ThreadedTCPServer((HOST, PORT), \
                                        ThreadedTCPRequestHandler)
            ip, portss = bottest.server_address
            global server_thread
            server_thread = threading.Thread(target=bottest.serve_forever)
            server_thread.daemon = True
            server_thread.start()
            perm.repamsg(input,"Server loop running in thread: %s" %
                                                        (server_thread.name))
            url1 = ("http://www.minecraft.net/heartbeat.jsp?port=%s" %
                                                                (check[0]))
            url2 = ("&max=%s&name=%s&public=True&version=7" %
                                                        (check[1],check[2]))
            url3 = "&users=%s" % (check[3])
            pageUrl = ("%s%s&salt=wo6kVAHjxoJcInKx%s" % 
                                                            (url1,url2,url3))
            web = str(http.get(pageUrl))
            perm.repamsg(input,web)
            while True:
                web = str(http.get(pageUrl))
                if i==100:
                    i=0
                    perm.repamsg(input,web)
                global plays
                plays = int(str(playeramount[-1]).replace("Thread-",""))
                bot.test["test"]=int(plays)-2
                i+=1
                time.sleep(45)
        else:
            return("error.")
    else:
        return("Nope.avi")
コード例 #2
0
ファイル: atwitter.py プロジェクト: Red-M/frogbot
def tfeed(inp, input=None, bot=None, db_global=None):
    "auto tweet getter. ,tfeed <twitter-name-without-@-at-the-start>"
    db_global.execute("create table if not exists twitterfeeds(user, tweet)")
    db_global.commit()
    i=0
    feed = input.inp
    if perm.isadmin(input) and not input.inp=='' and input.conn.conf["rss-on"]==True:
        testss = True
        for xcon in bot.conns:
            if feed not in bot.conns[xcon].conf["twitterfeedchans"]:
                bot.conns[xcon].conf["twitterfeedchans"][feed]=[]
                db_global.execute("insert or replace into twitterfeeds(user, tweet) values (?,?)",(feed, "none"))
            if bot.conns[xcon].conf["twitterfeedchans"][feed].count(bot.conns[xcon].conf["reportchan"])==0:
                bot.conns[xcon].conf["twitterfeedchans"][feed].append(bot.conns[xcon].conf["reportchan"])
        lasttweet = ''.join(db_global.execute("select tweet from twitterfeeds where user=(?)",(feed,)).fetchone())
        input.say("Done. following "+feed)
        ttl=75
        bot.twitterlist[feed]=True
        while testss:
            rss = get_twitter(feed)
            tweet=''.join(rss)
            if lasttweet=='':
                lasttweet="none."
            #print(lasttweet+"\n"+tweet)
            if errormatch(tweet):
                if tweet.endswith("400"):
                    ttl=ttl+60
                    input.say("I have been rate limited on twitter. This means you ether have too many lists/people beening watched at once please ether make a bigger list or remove some of the people/lists being watched...")
                    tweet=lasttweet
                if tweet.endswith("404"):
                    testss= False
                    del bot.twitterlist[feed]
                    return "feed: '"+feed+"' returned: Twitter account by the name of "+feed+" not found."
                if tweet.endswith("500") or tweet.endswith("502") or tweet.endswith("503"):
                    testss= False
                    del bot.twitterlist[feed]
                    return "feed: '"+feed+"' returned: Twitter is down, being upgraded or overloaded. Try again later...."
                else:
                    input.say("feed: '"+feed+"' returned: '"+lasttweet+"'. Something up in here is stuffed....")
                    tweet=lasttweet
                    testss= False
            if lasttweet==tweet and not tweet.startswith("error: "):
                i=i+1
                if i == 32:
                    for xcon in bot.conns:
                        perm.repamsg(input,"No new tweets from '"+feed+"'.")
                    i=0
                time.sleep(ttl)
            elif not lasttweet==tweet and not tweet.startswith("error: "):
                for xcon in bot.conns:
                    for channels in bot.conns[xcon].conf["twitterfeedchans"][feed]:
                        if channels not in bot.conns[xcon].conf["ignore"]:
                            bot.conns[xcon].send('PRIVMSG '+channels+' :TWITTER FEED: '+tweet)
                lasttweet=tweet
                ttl=75
                db_global.execute("delete from twitterfeeds where user=(?)", (feed,)).rowcount
                db_global.execute("insert or replace into twitterfeeds(user, tweet) values (?,?)",(feed, tweet))
                db_global.commit()
                i=0
                time.sleep(ttl)
                testss = True
    else:
        return "Nope."
コード例 #3
0
ファイル: atwitter.py プロジェクト: Red-M/frogbot
def tlfeed(inp, input=None, bot=None, db_global=None):
    "auto twitter list tweet getter. ,tlfeed <twitter-list-name> <owner of list without @ at the start>"
    db_global.execute("create table if not exists twitterlistfeeds(list, tweet)")
    db_global.commit()
    i=0
    check = input.inp.split(' ') 
    feed = str(get_listid(check[0],check[1]))
    feedname = check[0]
    if perm.isadmin(input) and not input.inp=='' and input.conn.conf["rss-on"]==True:
        testss = True
        for xcon in bot.conns:
            if feedname not in bot.conns[xcon].conf["twitterfeedchans"]:
                bot.conns[xcon].conf["twitterfeedchans"][feedname]=[]
                db_global.execute("insert into twitterlistfeeds(list, tweet) values (?,?)",(feedname, "nothing..."))
            if bot.conns[xcon].conf["twitterfeedchans"][feedname].count(bot.conns[xcon].conf["reportchan"])==0:
                bot.conns[xcon].conf["twitterfeedchans"][feedname].append(bot.conns[xcon].conf["reportchan"])
        if db_global.execute("select tweet from twitterlistfeeds where list=(?)",(feedname,)).fetchone()==None:
            lasttweet="nothing..."
        if not db_global.execute("select tweet from twitterlistfeeds where list=(?)",(feedname,)).fetchone()==None:
            lasttweet=''.join(db_global.execute("select tweet from twitterlistfeeds where list=(?)",(feedname,)).fetchone())
        input.say("Done. following "+feedname)
        ttl=75
        bot.twitterlists[feedname]=True
        while testss:
            rss = get_listtwitter(feed)
            tweet=''.join(rss)
            if lasttweet=='':
                lasttweet="none."
            #print(lasttweet+"\n"+tweet)
            if errormatch(tweet):
                if tweet.endswith("400"):
                    ttl=ttl+60
                    return("I have been rate limited on twitter. This means you ether have too many lists/people beening watched at once (the max is 4 without rate limiting from twitter.) please ether make a bigger list or remove some of the people/lists being watched...")
                    tweet=lasttweet
                if tweet.endswith("404"):
                    testss= False
                    del bot.twitterlists[feedname]
                    return "feed: "+feedname+" returned: Twitter list  by the name of "+feedname+" not found made by "+check[1]+"."
                if tweet.endswith("500") or tweet.endswith("502") or tweet.endswith("503"):
                    testss= False
                    del bot.twitterlists[feedname]
                    return "feed: "+feedname+" returned: Twitter is down, being upgraded or overloaded. Try again later...."
                else:
                    input.say("feed: "+feedname+" returned: '"+lasttweet+"'. Something up in here is stuffed....")
                    tweet=lasttweet
                    testss= False
            if lasttweet==tweet and not tweet.startswith("error: "):
                i=i+1
                bot.twitterlists[feedname]=True
                if i == (32):
                    perm.repamsg(input,"No new tweets from '"+feedname+"'.")
                    i=0
                time.sleep(ttl)
            elif not lasttweet==tweet and not tweet.startswith("error: "):
                for xcon in bot.conns:
                    for channels in bot.conns[xcon].conf["twitterfeedchans"][feedname]:
                        bot.conns[xcon].send('PRIVMSG '+channels+' :TWITTER LIST FEED:'+feedname+': '+tweet)
                lasttweet=tweet
                bot.twitterlists[feedname]=True
                db_global.execute("delete from twitterlistfeeds where list=(?)", (feedname,)).rowcount
                db_global.execute("insert or replace into twitterlistfeeds(list, tweet) values (?,?)",(feedname, tweet))
                db_global.commit()
                ttl=75
                i=0
                time.sleep(ttl)
                testss = True
    else:
        return "Nope."
コード例 #4
0
ファイル: auth.py プロジェクト: Red-M/frogbot
def authenticate(inp, input=None, db_global=None, bot=None, conn=None):
    "authenticate with this bot. NOTE: no password is stored in plain text. all passwords are stored as a sha512 hash. usage: ,auth login <username> <password>"
    db_global.execute("create table if not exists auth(user, pass, groups)")
    db_global.commit()
    check=input.inp.split(' ')
    #print(check)
    if len(check)==1 and check[0]=="help":
        out="To register with "+conn.nick+" please use ,auth <signup/reg> <username-you-want> <password-you-want>"
        out=out+". To login with "+conn.nick+" please use ,auth login <username-you-set> <password-you-set>"
        out=out+". If you forgot your password please contact "+conn.conf["owner"]+" about it."
        out=out+". For bot owners to change a user's group use ,auth groupset <username-of-person> <admin/superadmin/owner>"
        return(out)
    if len(check)==2 and check[0]=="logout":
        groupcheck=''.join(str(db_global.execute("select groups from auth where user=(?)",(check[1],)).fetchone()[0]))
        if input.nick in bot.auth[str(conn.name)][groupcheck]:
            del bot.auth[str(conn.name)][groupcheck][str(input.nick)]
            return "Bye!"
    if len(check)>=3:
        cmdlist=["login",'groupset','set','reset']
        if check[0] in cmdlist:
            usercheck=''.join(str(db_global.execute("select user from auth where user=(?)",(check[1],)).fetchone()[0]))
            passcheck=''.join(str(db_global.execute("select pass from auth where user=(?)",(check[1],)).fetchone()[0]))
            groupcheck=''.join(str(db_global.execute("select groups from auth where user=(?)",(check[1],)).fetchone()[0]))
        #print(usercheck+"\n"+passcheck+'\n'+groupcheck)
        if check[0]=='reg' or check[0]=='signup':
            usercheck=''.join(str(db_global.execute("select user from auth where user=(?)",(check[1],)).fetchone()))
            passcheck=''.join(str(db_global.execute("select pass from auth where user=(?)",(check[1],)).fetchone()))
            groupcheck=''.join(str(db_global.execute("select groups from auth where user=(?)",(check[1],)).fetchone()))
            check[2]=hashlib.sha512(check[2]).hexdigest()
            if check[1]==str(usercheck):
                return("you are already registered on this bot or choose another name.")
            else:
                db_global.execute("insert into auth(user, pass, groups) values (?,?,?)",(check[1], check[2],"none"))
                db_global.commit()
                perm.repamsg(input,input.nick+" is registering with me.")
                return("done. please login by using ,auth login "+check[1]+" <password-here>.")
        if check[0]=="login":
            print(input.nick+" is trying to auth as "+check[1])
            hashcheck=hashlib.sha512(check[2]).hexdigest()
            if usercheck==check[1] and passcheck==hashcheck:
                print(groupcheck)#if groupcheck==None
                bot.auth[str(conn.name)][groupcheck][str(input.nick)]={}
                return("welcome back "+check[1]+" have a nice time.")
            else:
                return("incorrect password or username. please try again.")
        if perm.isowner(input) and check[0]=='groupset':
            if check[2] in ["voiced","admin","superadmin","owner"] and usercheck==check[1] and check[2] in ["admin","superadmin","owner"]:
                db_global.execute("delete from auth where user=(?)", (check[1],)).rowcount
                db_global.execute("insert or replace into auth(user, pass, groups) values (?,?,?)",(check[1], passcheck,check[2]))
                db_global.commit()
                del bot.auth[str(conn.name)][groupcheck][str(input.nick)]
                bot.auth[str(conn.name)][check[2]][str(input.nick)]={}
                return("done. group set to "+check[2])
            else:
                return("user not found or group not found.")
        if perm.isowner(input) and check[0]=='set' and usercheck==check[1] and check[2]:
            if usercheck==check[1]:
                db_global.execute("delete from auth where user=(?)", (check[1],)).rowcount
                db_global.execute("insert or replace into auth(user, pass, groups) values (?,?,?)",(check[1], hashlib.sha512(check[2]).hexdigest(),groupcheck))
                db_global.commit()
                return("done. reset password.")
            else:
                return("user not found.")
        if check[0]=='reset' and usercheck==check[1] and passcheck==hashlib.sha512(check[2]).hexdigest() and check[3]:
            db_global.execute("delete from auth where user=(?)", (check[1],)).rowcount
            db_global.execute("insert or replace into auth(user, pass, groups) values (?,?,?)",(check[1], hashlib.sha512(check[3]).hexdigest(),groupcheck))
            db_global.commit()
            return("done. reset you password.")
    else:
        return("error. try ,auth help")