Example #1
0
def Main():
    """Main loop."""
    config = utils.get_config()
    log = logger.get_logger()

    networks = config.get("networks", type="list")
    log.info("Starting %s..." % version.version_string())
    log.info("Connecting to networks: %s" % ", ".join(networks))

    procs = []
    for network in networks:
        proc = process.Process(network)
        proc.start()
        procs.append(proc)

    try:
        if config.get("api_enabled", type="bool"):
            api.run()

        while True:
            time.sleep(1)
            for proc in procs:
                if not proc.is_alive():
                    procs.remove(proc)

            if not procs:
                log.info("No longer connected to any networks; shutting down.")
                sys.exit(0)
    except KeyboardInterrupt:
        log.info("Caught KeyboardInterrupt; shutting down.")
Example #2
0
def Main():
    """Main IRC loop."""
    networks = CONFIG.get("networks", type="list")
    log.setup_logger()
    LOG.info("Starting %s" % version.version_string())
    LOG.info("Connecting to networks: %s" % ", ".join(networks))

    procs = []
    for network in networks:
        proc = process.Process(network)
        proc.start()
        procs.append(proc)

    try:
        while True:
            time.sleep(1)
            for proc in procs:
                if not proc.is_alive():
                    procs.remove(proc)

            if not procs:
                LOG.info("No longer connected to any networks, shutting down")
                sys.exit(0)
    except KeyboardInterrupt:
        LOG.info("Caught KeyboardInterrupt, shutting down")
Example #3
0
File: api.py Project: jk0/pyhole
def get_incidents(service_id):
    """Fetch and return PagerDuty incidents."""
    url = "%s/incidents?service_ids[]=%s" % (api_endpoint, service_id)
    req = request.get(url, headers=api_headers)

    if not request.ok(req):
        flask.abort(req.status_code)

    return flask.render_template(
        "pagerduty_incidents.html",
        incidents=req.json()["incidents"],
        version=version.version_string())
Example #4
0
File: api.py Project: jk0/pyhole
def get_services():
    """Fetch and return PagerDuty services."""
    url = "%s/services?limit=100" % api_endpoint
    req = request.get(url, headers=api_headers)

    if not request.ok(req):
        flask.abort(req.status_code)

    return flask.render_template(
        "pagerduty_services.html",
        services=req.json()["services"],
        version=version.version_string())
Example #5
0
File: api.py Project: jk0/pyhole
def get_notes(incident_id):
    """Fetch and return PagerDuty notes."""
    url = "%s/incidents/%s/notes" % (api_endpoint, incident_id)
    req = request.get(url, headers=api_headers)

    if not request.ok(req):
        flask.abort(req.status_code)

    return flask.render_template(
        "pagerduty_notes.html",
        notes=req.json()["notes"],
        version=version.version_string())
Example #6
0
    def __init__(self, network):
        log.setup_logger(str(network))
        self.network_config = utils.get_config(network)

        self.addressed = False
        self.client = None
        self.log = log.get_logger(str(network))
        self.version = version.version_string()

        self.admins = CONFIG.get("admins", type="list")
        self.command_prefix = CONFIG.get("command_prefix")

        self.api_token = self.network_config.get("api_token")
        self.nick = self.network_config.get("nick")

        self.load_plugins()
Example #7
0
File: client.py Project: jk0/pyhole
    def __init__(self, network):
        irclib.SimpleIRCClient.__init__(self)

        logger.setup_logger(str(network))

        pyhole_config = utils.get_config()
        network_config = utils.get_config(network)

        self.log = logger.get_logger(str(network))
        self.version = version.version_string()
        self.source = None
        self.target = None
        self.addressed = False

        self.admins = pyhole_config.get("admins", type="list")
        self.command_prefix = pyhole_config.get("command_prefix")
        self.reconnect_delay = pyhole_config.get("reconnect_delay", type="int")
        self.rejoin_delay = pyhole_config.get("rejoin_delay", type="int")

        self.server = network_config.get("server")
        self.password = network_config.get("password", default=None)
        self.port = network_config.get("port", type="int", default=6667)
        self.ssl = network_config.get("ssl", type="bool", default=False)
        self.ipv6 = network_config.get("ipv6", type="bool", default=False)
        self.bind_to = network_config.get("bind_to", default=None)
        self.nick = network_config.get("nick")
        self.username = network_config.get("username", default=None)
        self.identify_password = network_config.get("identify_password",
                                                    default=None)
        self.channels = network_config.get("channels", type="list")

        self.load_plugins()

        self.log.info("Connecting to %s:%d as %s" % (self.server, self.port,
                      self.nick))
        self.connect(self.server, self.port, self.nick, self.password,
                     username=self.username,
                     connect_factory=connection.Factory(
                         wrapper=ssl.wrap_socket,
                         ipv6=self.ipv6).connect
                     if self.ssl else connection.Factory())
Example #8
0
    def __init__(self, network):
        irclib.SimpleIRCClient.__init__(self)

        pyhole_config = utils.get_config()
        network_config = utils.get_config(network)

        self.log = logger.get_logger(str(network))
        self.version = version.version_string()
        self.source = None
        self.target = None
        self.addressed = False

        self.admins = pyhole_config.get("admins", type="list")
        self.command_prefix = pyhole_config.get("command_prefix")
        self.reconnect_delay = pyhole_config.get("reconnect_delay", type="int")
        self.rejoin_delay = pyhole_config.get("rejoin_delay", type="int")

        self.server = network_config.get("server")
        self.password = network_config.get("password", default=None)
        self.port = network_config.get("port", type="int", default=6667)
        self.ssl = network_config.get("ssl", type="bool", default=False)
        self.ipv6 = network_config.get("ipv6", type="bool", default=False)
        self.bind_to = network_config.get("bind_to", default=None)
        self.nick = network_config.get("nick")
        self.username = network_config.get("username", default=None)
        self.identify_password = network_config.get("identify_password",
                                                    default=None)
        self.channels = network_config.get("channels", type="list")

        self.load_plugins()

        self.log.info("Connecting to %s:%d as %s" %
                      (self.server, self.port, self.nick))
        self.connect(self.server,
                     self.port,
                     self.nick,
                     self.password,
                     username=self.username,
                     connect_factory=connection.Factory(
                         wrapper=ssl.wrap_socket, ipv6=self.ipv6).connect
                     if self.ssl else connection.Factory())
Example #9
0
File: api.py Project: jk0/pyhole
def get_paste(paste_id, raw=None):
    """Fetch and return a paste."""
    stats = os.stat(utils.get_directory("pastes") + paste_id)
    st_mtime = time.ctime(stats.st_mtime)
    st_size = stats.st_size

    paste = utils.read_file("pastes", paste_id)

    if not paste:
        flask.abort(404)

    if raw:
        return flask.Response(paste, status=200, mimetype="text/plain")

    return flask.render_template(
        "paste.html",
        paste_id=paste_id,
        paste=cgi.escape(paste),
        st_mtime=st_mtime,
        st_size=st_size,
        version=version.version_string())
Example #10
0
 def test_version_string(self):
     self.assertTrue(version.version_string().startswith("pyhole v"))
Example #11
0
File: api.py Project: jk0/pyhole
def index():
    """Handle index requests."""
    return version.version_string(), 200
Example #12
0
 def test_version_string(self):
     self.assertTrue(version.version_string().startswith("pyhole v"))