Example #1
0
 def __init__(self, host, port):
     self.mgsside = "CLIENT"
     self.log = logbot.getlogger(self.mgsside)
     self.host = host
     self.port = port
     self.log.msg("Generating RSA key pair")
     self.rsakey = encryption.gen_rsa_key()
Example #2
0
 def __init__(self, host, port):
     self.mgsside = "CLIENT"
     self.log = logbot.getlogger(self.mgsside)
     self.host = host
     self.port = port
     self.log.msg("Generating RSA key pair")
     self.rsakey = encryption.gen_rsa_key()
Example #3
0
import operator
import types
from collections import defaultdict

import twistedbot.logbot as logbot
from twistedbot.packets import packets
from twistedbot.packets import Container, Metadata

from pynbt import NBTFile


log = logbot.getlogger("-")

#########################################################################################################
# ignore_packets = [0, 4, 11, 12, 13, 24, 28, 29, 30, 31, 32, 33, 34, 35, 62] #these bring a lot of noise
# 0 keep alive
# 4 time update
# 11 player position
# 12 player look
# 13 player position&look
# 24 spawn mob
# 28 entity velocity
# 29 desctoy entity
# 30 entity
# 31 entity relative move
# 32 entity look
# 33 entity look and relative move
# 34 entity teleport
# 35 entity head look
# 62 named sound effect
# -*- coding: utf-8 -*-
# section description for 'help' command.
"""..just an example plugin"""

from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot

log = logbot.getlogger("Example Plugin")


def example(speaker, verb, data,  interface):
    """Just logs a message when you say 'example' in chat."""
    world, factory = interface.world, interface.factory
    full_data = verb + ' ' + data
    log.msg('Example works! Received "%s" from %s ' % (full_data, speaker))


class PluginBehaviour(BehaviourBase):
    pass

verbs = {"example": example}
Example #5
0
 def __init__(self, proxyclient):
     self.mgsside = "SERVER"
     self.log = logbot.getlogger(self.mgsside)
     self.proxyclient = proxyclient
Example #6
0
import syspath_fix
syspath_fix.update_sys_path()

import argparse

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory
from twisted.internet.endpoints import TCP4ServerEndpoint, TCP4ClientEndpoint

from twistedbot.packets import make_packet, parse_packets, packets
from twistedbot import encryption
from twistedbot import logbot


log = logbot.getlogger("PROXY")


class ProxyProtocol(Protocol):

    def dataReceived(self, bytestream):
        try:
            self.parser(bytestream)
        except:
            logbot.exit_on_error()

    def sendData(self, bytestream):
        if self.encryption_on:
            bytestream = self.cipher.encrypt(bytestream)
        self.transport.write(bytestream)
# -*- coding: utf-8 -*-
"""commands relating to inventory and manipulating objects"""


from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot


log = logbot.getlogger("INVENTORY PLUGIN")

inventory_names = {
    'armor': 'interface.inventory.armor',
    'chest': '"<not yet implemented>"',
    'general': 'interface.inventory.general',
    'full': 'interface.inventory',
    'ready': 'interface.inventory.ready',
    }


def hold(speaker, verb, data, interface):
    """hold <item name> - Switch to that item (must be in ready inventory)"""
    item_name = data.strip()
    # Look for it in our ready inventory
    try:
        interface.hold(item_name, general_inventory=True)
    except Exception, e:
        if not str(e):
            raise
        interface.world.chat.send_message(str(e))

Example #8
0
import twistedbot.logbot as logbot
from twistedbot.plugins.base import load, PluginChatBase

name = __name__.split('.')[-1]
log = logbot.getlogger("%s PLUGINS" % name.upper())
plugs = load(log, __file__, name)
Example #9
0
import signal
import argparse

import syspath_fix
syspath_fix.update_sys_path()

from twisted.internet import reactor
from twisted.protocols import basic
from twisted.internet.defer import inlineCallbacks

import twistedbot.factory as factory
import twistedbot.config as config
import twistedbot.logbot as logbot
from twistedbot.world import World

log = logbot.getlogger("MAIN")


class ConsoleChat(basic.LineReceiver):
    from os import linesep as delimiter

    def __init__(self, world):
        self.world = world

    def connectionMade(self):
        log.msg("terminal chat available")

    def lineReceived(self, line):
        try:
            self.world.chat.process_command_line(line)
        except Exception as e:
# -*- coding: utf-8 -*-
"""basic, inbuilt actions"""
from twistedbot import behaviours
from twistedbot.logbot import getlogger

log = getlogger('SYSTEM PLUGINS')


def rotate_and_circulate(user, verb, data, interface):
    """"rotate <group>" or "circulate <group>": follow signs in a group, in-order."""
    if data:
        interface.world.bot.behaviour_tree.new_command(
                    behaviours.WalkSignsBehaviour, group=data, type=verb)
    else:
        interface.world.chat.send_message("which sign group to %s?" % verb)


def go(user, verb, data, interface):
    """"go <player>" or "go <sign>": go to a player or sign"""
    world, chat = interface.world, interface.world.chat
    if data:
        split_data = data.split()
        if len(split_data) == 2 and split_data[0] == 'to':
            if split_data[1] in world.entities.players:
                msg = ("I don't know how to go to other players yet.")
                chat.send_message(msg)
        else:
            world.bot.behaviour_tree.new_command(behaviours.GoToSignBehaviour,
                                                 sign_name=data)
    else:
        interface.world.chat.send_message("go where?")
Example #11
0
import sys
import signal
import multiprocessing
from time import sleep
from collections import deque

from PyQt4 import QtGui
from PyQt4 import QtCore

import bot
from twistedbot import logbot
from twistedbot.utils import Message

# from resources.splitimages import make_tiles
log = logbot.getlogger("GUI")

# example edit


class MainWindow(QtGui.QMainWindow):
    def __init__(self, argv):
        QtGui.QMainWindow.__init__(self)

        self.to_bot = multiprocessing.Queue()
        self.to_gui = multiprocessing.Queue()

        # Start the bot
        bot_args = (argv, self.to_bot, self.to_gui)
        self.bot = multiprocessing.Process(target=bot.start, args=bot_args)
        self.bot.start()
# -*- coding: utf-8 -*-
"""programming tools - commander only"""

from twistedbot.behaviours import BehaviourBase
from twistedbot import logbot
from twistedbot import config

log = logbot.getlogger("DEBUG PLUGIN")


def commander_only(method):
    def authorized_method(speaker, verb, data, interface):
        if speaker.lower() != config.COMMANDER.lower():
            msg = "This command is commander-only (not for you)"
            interface.world.chat.send_message(msg)
            return
        return method(speaker, verb, data, interface)

    return authorized_method


@commander_only
def eid(speaker, verb, data, interface):
    """eid <number> - Display the entity referenced by the given entity id"""
    wfc = interface.world, interface.world.factory, interface.world.chat
    world, factory, chat = wfc
    try:
        eid = int(data.strip())
    except ValueError:
        chat.send_message("Expected a number, but got '%s' instead." % data)
        return
Example #13
0
 def __init__(self, proxyclient):
     self.mgsside = "SERVER"
     self.log = logbot.getlogger(self.mgsside)
     self.proxyclient = proxyclient
Example #14
0
import syspath_fix

syspath_fix.update_sys_path()

import argparse

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory

from twistedbot.packets import make_packet, parse_packets, packets
from twistedbot import encryption
from twistedbot import logbot
from twistedbot import config

log = logbot.getlogger("PROXY")


class ProxyProtocol(Protocol):
    def dataReceived(self, bytestream):
        try:
            self.parser(bytestream)
        except:
            logbot.exit_on_error()

    def sendData(self, bytestream):
        if self.encryption_on:
            bytestream = self.cipher.encrypt(bytestream)
        self.transport.write(bytestream)

    def parse_encrypted_stream(self, bytestream):
        plaintext = self.decipher.decrypt(bytestream)
Example #15
0
import operator
import types
from collections import defaultdict

import twistedbot.logbot as logbot
from twistedbot.packets import packets
from twistedbot.packets import Container, Metadata

from pynbt import NBTFile

log = logbot.getlogger("-")

#########################################################################################################
# ignore_packets = [0, 4, 11, 12, 13, 24, 28, 29, 30, 31, 32, 33, 34, 35, 62] #these bring a lot of noise
# 0 keep alive
# 4 time update
# 11 player position
# 12 player look
# 13 player position&look
# 24 spawn mob
# 28 entity velocity
# 29 desctoy entity
# 30 entity
# 31 entity relative move
# 32 entity look
# 33 entity look and relative move
# 34 entity teleport
# 35 entity head look
# 62 named sound effect
#########################################################################################################
Example #16
0
import argparse

import syspath_fix

syspath_fix.update_sys_path()

from twisted.internet import reactor
from twisted.protocols import basic

from twistedbot.factory import MineCraftFactory
from twistedbot.world import World
import twistedbot.config as config
import twistedbot.logbot as logbot


log = logbot.getlogger("MAIN")


class ConsoleChat(basic.LineReceiver):
    def __init__(self, world):
        self.world = world

    def lineReceived(self, line):
        try:
            self.world.chat.process_command(line)
        except Exception as e:
            logbot.exit_on_error(e)


def start():
    parser = argparse.ArgumentParser(description="Bot arguments.")
Example #17
0
# -*- coding: utf-8 -*-
# section description for 'help' command.
"""the help system"""
from twistedbot import logbot

log = logbot.getlogger("HELP PLUGIN")

def help(speaker, verb, data,  interface):
    """"help" or "help <section>" or "help <command>" or "help <section/command>" """
    data = data.strip()
    if not data:
        help_msg = ["""Sections are:"""]
        for section in interface.behaviours:
            mod = interface.behaviours[section]
            help_msg.append(section + " - " + mod.__doc__ if mod.__doc__
                            else section)
        help_msg.append('Use "help <section>" for more info.')
        help_msg = '\n'.join(help_msg)
    elif '/' in data:
        section, command = [d.strip() for d in data.split('/'), 1]
        if section not in interface.behaviours:
            msg = "Unknown section for help: '%s'" % section
            interface.world.chat.send_message(msg)
            log.msg(msg)
            return
        verbs = interface.behaviours[section].verbs
        if command not in verbs:
            msg = "Unknown command for section %s: %s" % (section, command)
            interface.world.chat.send_message(msg)
            log.msg(msg)
            return
Example #18
0
import twistedbot.logbot as logbot
from twistedbot.plugins.base import load, PluginChatBase


name = __name__.split('.')[-1]
log = logbot.getlogger("%s PLUGINS" % name.upper())
plugs = load(log, __file__, name)