summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Löthberg <johannes@kyriasis.com>2018-08-18 12:43:06 +0000
committerJohannes Löthberg <johannes@kyriasis.com>2018-08-18 14:43:56 +0200
commit8524a13aa5ee7aa2694b1b55c2345d9a0877d2f2 (patch)
treea34264b9e1ef5870e69df87f56ec8d648c559c08
parent0b5267dfc3ada8256d6fb265f16fc2bb59929e38 (diff)
downloadznc-log-viewer-limnoria-channellogger.tar.xz
Add support for Limnoria ChannelLogger log structurelimnoria-channellogger
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
-rwxr-xr-xrun.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/run.py b/run.py
index 58951aa..1387842 100755
--- a/run.py
+++ b/run.py
@@ -11,19 +11,29 @@ app.jinja_env.add_extension('jinja2_highlight.HighlightExtension')
app.jinja_env.extend(jinja2_highlight_cssclass = 'codehilite')
-def get_files(directory):
- files = os.listdir(directory)
- files.sort()
- return files
+def get_directories(directory):
+ dirents = os.scandir(directory)
+ directories = filter(lambda de: de.is_dir(), dirents)
+ return map(lambda d: d.name.split('/')[-1], directories)
+
+def get_channels(directory, network):
+ path = os.path.join(directory, network)
+ return get_directories(path)
+
+def get_logs(base_dir, network, channel):
+ dirents = os.scandir(os.path.join(base_dir, network, channel))
+ files = filter(lambda de: de.is_file(), dirents)
+ log_names = map(lambda f: f.name.replace('{}.'.format(channel), '').replace('.log', ''), files)
+ return log_names
@app.route('/')
def index():
networks = []
- for network_name in get_files(app.config['ZNC_LOG_DIR']):
+ for network_name in get_directories(app.config['ZNC_LOG_DIR']):
network_url = '{}/{}'.format(app.config['URL'], network_name)
channels = []
- for channel_name in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name)):
+ for channel_name in get_channels(app.config['ZNC_LOG_DIR'], network_name):
channel_url = '{}/{}'.format(network_url, quote_plus(channel_name))
channel = Channel(channel_name, channel_url, '')
channels += [channel]
@@ -36,7 +46,7 @@ def get_network(network_name):
network_url = '{}/{}'.format(app.config['URL'], network_name)
channels = []
- for channel_name in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name)):
+ for channel_name in get_directories(os.path.join(app.config['ZNC_LOG_DIR'], network_name)):
channel_url = '{}/{}'.format(network_url, quote_plus(channel_name))
channel = Channel(channel_name, channel_url, '')
@@ -51,7 +61,7 @@ def channel_logs(network_name, channel_name):
channel_url = '{}/{}'.format(network_url, quote_plus(channel_name))
logs = []
- for log_file in get_files(os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name)):
+ for log_file in get_logs(app.config['ZNC_LOG_DIR'], network=network_name, channel=channel_name):
log_url = '{}/{}'.format(channel_url, log_file)
log = Log(log_file, log_url)
@@ -61,10 +71,12 @@ def channel_logs(network_name, channel_name):
network = Network(network_name, network_url, [channel])
return(render_template('show_channel.html', network=network, channel=channel, url=app.config['URL']))
-@app.route('/<network_name>/<channel_name>/<log_file>')
-def get_log(network_name, channel_name, log_file):
- with open(os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name, log_file), 'rb') as file:
- log = file.read().decode('utf-8', 'ignore')
+@app.route('/<network_name>/<channel_name>/<date>')
+def get_log(network_name, channel_name, date):
+ file_name = '{}.{}.log'.format(channel_name, date)
+ path = os.path.join(app.config['ZNC_LOG_DIR'], network_name, channel_name, file_name)
+ with open(path, 'rb') as fp:
+ log = fp.read().decode('utf-8', 'ignore')
return(render_template('log.html', log=log))
@app.route('/static/<path:filename>')