Skip to content

Commit

Permalink
Settings overhaul, probably breaks all sorts of things
Browse files Browse the repository at this point in the history
  • Loading branch information
nickelpro committed Feb 6, 2015
1 parent 249b0e8 commit 4791948
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 50 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
*.pyc
*.log
*.swp
config.yaml
login.py
run.py
contrib/
/build
26 changes: 13 additions & 13 deletions spock/plugins/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
from spock.plugins.helpers import start, keepalive, clientinfo, world, move, respawn, physics, inventory

DefaultPlugins = [
event.EventPlugin,
net.NetPlugin,
auth.AuthPlugin,
ticker.TickerPlugin,
timer.TimerPlugin,
start.StartPlugin,
keepalive.KeepalivePlugin,
respawn.RespawnPlugin,
move.MovementPlugin,
world.WorldPlugin,
clientinfo.ClientInfoPlugin,
physics.PhysicsPlugin,
inventory.InventoryPlugin,
('event', event.EventPlugin),
('net', net.NetPlugin),
('auth', auth.AuthPlugin),
('ticker', ticker.TickerPlugin),
('timer', timer.TimerPlugin),
('start', start.StartPlugin),
('keepalive', keepalive.KeepalivePlugin),
('respawn', respawn.RespawnPlugin),
('move', move.MovementPlugin),
('world', world.WorldPlugin),
('client', clientinfo.ClientInfoPlugin),
('physics', physics.PhysicsPlugin),
('inventory', inventory.InventoryPlugin),
]
6 changes: 5 additions & 1 deletion spock/plugins/core/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,17 @@ def gen_shared_secret(self):
self.shared_secret = Random._UserFriendlyRNG.get_random_bytes(16)
return self.shared_secret

default_settings = {
'authenticated': True,
'sess_quit': True,
}

@pl_announce('Auth')
class AuthPlugin:
def __init__(self, ploader, settings):
settings = utils.get_settings(settings, default_settings)
self.event = ploader.requires('Event')
self.net = ploader.requires('Net')
settings = ploader.requires('Settings')
self.authenticated = settings['authenticated']
self.sess_quit = settings['sess_quit']
self.auth = AuthCore(self.authenticated, self.event)
Expand Down
12 changes: 10 additions & 2 deletions spock/plugins/core/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,18 @@ def reset(self):

disconnect = reset

default_settings = {
'username': 'Bot',
'password': None,
'bufsize': 4096,
'sock_quit': True,
'sess_quit': True,
}

@pl_announce('Net')
class NetPlugin:
def __init__(self, ploader, settings):
settings = ploader.requires('Settings')
settings = utils.get_settings(settings, default_settings)
self.bufsize = settings['bufsize']
self.sock_quit = settings['sock_quit']
self.event = ploader.requires('Event')
Expand Down Expand Up @@ -173,7 +181,7 @@ def tick(self, name, data):
time.sleep(1)
else:
time.sleep(timeout)


#SOCKET_RECV - Socket is ready to recieve data
def handleRECV(self, name, data):
Expand Down
44 changes: 13 additions & 31 deletions spock/plugins/core/settings.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,25 @@
from spock.utils import pl_announce
from spock.utils import pl_announce, get_settings
from spock.plugins import DefaultPlugins

#2 values = Attribute&Setting name, default value
#3 values = Attribute name, setting name, default value
default_settings = [
('plugins', DefaultPlugins),
('plugin_settings', {}),
('mc_username', 'username', 'Bot'),
('mc_password', 'password', ''),
('authenticated', True),
('bufsize', 4096),
('sock_quit', True),
('sess_quit', True),
]

for index, setting in enumerate(default_settings):
if len(setting) == 2:
default_settings[index] = (setting[0], setting[0], setting[1])

class PloaderFetch:
def __init__(self, final_settings):
self.plugins = final_settings['plugins']
self.plugin_settings = final_settings['plugin_settings']
def __init__(self, plugins, plugin_settings):
self.plugins = plugins
self.plugin_settings = plugin_settings

def get_plugins(self):
return self.plugins

def get_plugin_settings(self, plugin):
return self.plugin_settings.get(plugin, {})

@pl_announce('Settings', 'PloaderFetch')
@pl_announce('PloaderFetch')
class SettingsPlugin:
def __init__(self, ploader, kwargs):
settings = kwargs.get('settings', {})
final_settings = {}
for setting in default_settings:
val = kwargs.get(setting[1], settings.get(setting[1], setting[2]))
final_settings[setting[0]] = val
ploader.provides('PloaderFetch', PloaderFetch(final_settings))
del final_settings['plugins']
del final_settings['plugin_settings']
ploader.provides('Settings', final_settings)
settings = get_settings(kwargs, kwargs.get('settings', {}))
plugin_list = settings.get('plugins', DefaultPlugins)
plugins = []
plugin_settings = {}
for plugin in plugin_list:
plugins.append(plugin[1])
plugin_settings[plugin[1]] = settings.get(plugin[0], {})
ploader.provides('PloaderFetch', PloaderFetch(plugins, plugin_settings))
14 changes: 11 additions & 3 deletions spock/plugins/helpers/start.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,29 @@
a bot.
"""

from spock import utils
from spock.mcp import mcpacket, mcdata

default_settings = {
'username': 'Bot',
'password': None,
'host': 'localhost',
'port': 25565,
}

class StartPlugin:
def __init__(self, ploader, settings):
self.settings = utils.get_settings(settings, default_settings)
self.event = ploader.requires('Event')
self.settings = ploader.requires('Settings')
self.net = ploader.requires('Net')
self.auth = ploader.requires('Auth')

setattr(ploader, 'start', self.start)

def start(self, host = 'localhost', port = 25565):
if 'error' not in self.auth.start_session(
self.settings['mc_username'],
self.settings['mc_password']
self.settings['username'],
self.settings['password']
):
self.net.connect(host, port)
self.handshake()
Expand Down
7 changes: 7 additions & 0 deletions spock/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
ALL THE UTILS!
"""
#silly python2
import copy
try:
string_types = unicode
except NameError:
Expand Down Expand Up @@ -87,6 +88,12 @@ def inner(cl):
return cl
return inner

def get_settings(settings, defaults):
final_settings = copy.deepcopy(defaults)
for k, v in settings.items():
final_settings[k] = v
return final_settings

def mapshort2id(data):
return data>>4, data&0x0F

Expand Down

0 comments on commit 4791948

Please sign in to comment.