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.")
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")
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())
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())
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())
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()
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())
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())
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())
def test_version_string(self): self.assertTrue(version.version_string().startswith("pyhole v"))
def index(): """Handle index requests.""" return version.version_string(), 200