Exemple #1
0
    def setup(self):
        self.prepare()
        self._config = config.YAMLConfig()

        for filename in glob(self.get_app_path('yaml.d/*.yaml')):
            self._config.append(filename, flags=config.YAMLConfig.READONLY)

        for filename in glob(self.get_app_path('gfhelper/script/*.yaml')):
            self._config.append(filename, flags=config.YAMLConfig.READONLY)

        for path in self.config.get('core.ext_scripts'):
            for filename in glob(path + '*.yaml'):
                self._config.append(filename, flags=config.YAMLConfig.READONLY)

        self._config.append(self.get_ext_path('config.yaml'))
Exemple #2
0
import commands
import config
import data.clients
import packetFactory
import plugins

login_config = config.YAMLConfig(
    "cfg/loginmessage.config.yml", {
        'message':
        "{{yel}}Welcome to PSO2Proxy build {proxy_ver} "
        "{client_name}! There are currently {client_count} clients "
        "connected. Use {command_prefix}help for a list of commands!",
        'messageType':
        0x3
    }, True)


@plugins.on_initial_connect_hook
def login_message(sender):
    server_name = "Unknown"
    try:
        import PSO2PDConnector
        server_name = PSO2PDConnector.connector_conf['server_name']
    except ImportError:
        pass
    message = login_config['message'].format(
        client_name=sender.myUsername,
        client_count=len(data.clients.connectedClients),
        proxy_ver=config.proxy_ver,
        command_prefix=config.globalConfig['commandPrefix'],
        server_name=server_name)
Exemple #3
0
    pool = HTTPConnectionPool(reactor)
    pool._factory.noisy = False
    agent = RedirectAgent(Agent(reactor, pool=pool))
except ImportError:
    agent = RedirectAgent(Agent(reactor))

eqalert_config = config.YAMLConfig(
    "cfg/EQ_Alert.config.yml", {
        'enabled': True,
        'timer': 80,
        'debug': False,
        'api': "http://pso2.acf.me.uk/api/eq.json",
        '0': True,
        '1': True,
        '2': True,
        '3': True,
        '4': True,
        '5': True,
        '6': True,
        '7': True,
        '8': True,
        '9': True,
        'ircShip': 1,
        'User-Agent': "PSO2Proxy"
    }, True)

# HTTP Headers
ETag_Header = ""
Modified_Header = ""
# HTTP Modified in time
Modified_time = ""
Exemple #4
0
import commands
import config
import json
import os
import packetFactory
from packetFactory import SystemMessagePacket
import plugins

whitelist = []

WLSettings = config.YAMLConfig("cfg/pso2proxy.whitelist.config.yml",
                               {'enabled': True}, True)

whitelistmode = WLSettings['enabled']


@plugins.on_start_hook
def load_whitelist():
    global whitelist
    if not os.path.exists("cfg/pso2proxy.whitelist.json"):
        f = open("cfg/pso2proxy.whitelist.json", "w")
        f.write(json.dumps(whitelist))
        f.close()
        print('[Whitelist] Blank whitelist created.')
    else:
        f = open("cfg/pso2proxy.whitelist.json", "r")
        whitelist = json.loads(f.read())
        f.close()
        print("[Whitelist] Loaded %i whitelisted SEGA IDs." % len(whitelist))

Exemple #5
0
            self.deferred.callback(b''.join(self.dataBuffer))

    def readBody(response):
        d = defer.Deferred()
        response.deliverBody(SimpleBodyProtocol(response.code, response.phrase, d))
        return d

try:
    from twisted.web.client import HTTPConnectionPool
    pool = HTTPConnectionPool(reactor)
    pool._factory.noisy = False
    agent = RedirectAgent(Agent(reactor, pool=pool))
except ImportError:
    agent = RedirectAgent(Agent(reactor))

eqnotice_config = config.YAMLConfig("cfg/EQ_Notice.config.yml", {'enabled': True, 'timer': 60, 'debug': False, '1': "http://pso2.acf.me.uk/pso2eq.txt"}, True)

# HTTP Headers
ETag_Headers     = ['', '', '', '', '', '', '', '', '', '']
Modified_Headers = ['', '', '', '', '', '', '', '', '', '']
# HTTP Modified in time
Modified_time    = ['', '', '', '', '', '', '', '', '', '']
# HTTP Data
HTTP_Data        = ['', '', '', '', '', '', '', '', '', '']
# was "【1時間前】" in the data?
ishour_eq        = [False, False, False, False, False, False, False, False, False, False]
# Hour of EQ
hour_eq          = ['', '', '', '', '', '', '', '', '', '']
# Mins of EQ
mins_eq          = ['', '', '', '', '', '', '', '', '', '']
# EQ Data
Exemple #6
0
import data.players

import datetime
import json
import os
import plugins
from plugins import commands as pluginCommands
import traceback
from twisted.internet import endpoints
from twisted.internet import reactor
from twisted.web import resource

web_api_config = config.YAMLConfig(
    "cfg/webapi.config.yml", {
        "port": 8080,
        "ServerName": "Unnamed Server",
        'webRconEnabled': False,
        'webRconKey': ''
    }, True)

upStart = calendar.timegm(datetime.datetime.utcnow().utctimetuple())
peakPlayers = 0


class WEBRcon(resource.Resource):
    isLeaf = True

    def render_GET(self, request):
        request.setHeader('content-type', "application/json")
        if 'key' not in request.args or request.args['key'][
                0] != web_api_config['webRconKey']:
Exemple #7
0
from twisted.words.protocols import irc

try:
    import PSO2PDConnector
    redisEnabled = True
except ImportError:
    redisEnabled = False

ircSettings = config.YAMLConfig(
    "cfg/gchat-irc.config.yml",
    {
        'enabled': False,
        'nick': "PSO2IRCBot",
        'server': '',
        'port': 6667,
        'svname': 'NickServ',
        'svpass': '',
        'channel': "",
        'output': True,
        'autoexec': [],
        'discord': False
    },
    True
)

ircBot = None
ircMode = ircSettings['enabled']
ircOutput = ircSettings['output']
ircNick = ircSettings['nick']
ircServer = (ircSettings['server'], ircSettings['port'])
ircChannel = ircSettings['channel']
ircServicePass = ircSettings['svpass']
                    plugin_f = plugins.commands[command][0]
                    out = plugin_f(line).call_from_console()
                    if out is not None:
                        sendCommand({'command': "msg", 'msg': out})
                else:
                    sendCommand({'command': "msg", 'msg': "[Command] Command %s not found!" % command})
        except Exception as e:
            e = traceback.format_exc()
            sendCommand({'command': "msg", 'msg': "[ShipProxy] Error Occurred: %s" % e})
    if cmdObj['command'] == "register":
        sendCommand({'command': "newserver", 'ip': config.myIpAddress, 'name': connector_conf['server_name']})
        print("[PSO2PD] Registered with redis!")
        sendCommand({'command': "ping", 'name': connector_conf['server_name'], 'usercount': len(data.clients.connectedClients)})


connector_conf = config.YAMLConfig("cfg/distributed.cfg.yml", {'db_host': 'localhost', 'db_port': 6379, 'db_id': 0, 'db_pass': '', 'server_name': 'changeme'}, True)

if connector_conf['db_pass'] is not '':
    db_conn = redis.StrictRedis(host=connector_conf['db_host'], port=connector_conf['db_port'], db=connector_conf['db_id'], password=connector_conf['db_pass'])
else:
    db_conn = redis.StrictRedis(host=connector_conf['db_host'], port=connector_conf['db_port'], db=connector_conf['db_id'])


class RedisListenThread(threading.Thread):
    def __init__(self, r):
        super(RedisListenThread, self).__init__()
        self.r = r
        self.pubsub = self.r.pubsub(ignore_subscribe_messages=True)

    def run(self):
        self.pubsub.subscribe(**{"proxy-server-%s" % connector_conf['server_name']: servercom_handler})
Exemple #9
0
cidr = False
try:
    import netaddr
    from netaddr import IPAddress
    from netaddr import IPNetwork
    cidr = True
except ImportError:
    print("[GeoIP] netaddr library not installed")

cidrlist = []

geoiplist = []

GeoSettings = config.YAMLConfig(
    "cfg/pso2proxy.geoip.config.yml", {
        'enabled': True,
        'geoip1': "/usr/share/GeoIP/GeoIP.dat",
        'geoip2': "/var/lib/GeoIP/GeoLite2-Country.mmdb"
    }, True)

geoipenabled = GeoSettings['enabled']
geoip1db = GeoSettings['geoip1']
geoip2db = GeoSettings['geoip2']

geoip2c = None
geoip1c = None

notallowed = "You are not on the Geoip whitelist for this proxy, please " \
    "contact the owner of this proxy.\nDetails:\nCountry Code: {}\nIPv4: {}"


@plugins.on_start_hook
Exemple #10
0
import config
import data.clients
import packetFactory
from PSO2DataTools import check_pso2_with_irc
from PSO2DataTools import split_cmd_msg
import struct
import time
from twisted.internet import threads
from unicodescript import script

import plugins as p

plugin_config = config.YAMLConfig(
    "cfg/translator.config.yml",
    {
        "translationService": 0,
        "msTranslateID": '',
        "msTranslateSecret": ''
    }
)
if plugin_config['translationService'] == 1 and plugin_config['msTranslateID'] != '' and plugin_config['msTranslateSecret'] != '':
    import microsofttranslator
    provider = "Bing"
    translator = microsofttranslator.Translator(plugin_config['msTranslateID'], plugin_config['msTranslateSecret'])
    lastKeyTime = time.time()
else:
    import goslate
    provider = "Google"
    translator = goslate.Goslate()


@p.on_initial_connect_hook