|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
From aaad88a2eb3a9be24b75e36aefbea9a77b9927b4 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
From: Jan Engelhardt <jengelh@inai.de>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
Date: Mon, 17 Feb 2014 02:49:45 +0100
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
Subject: [PATCH] doc: choose different words to improve clarity
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
I suggest the following changes to improve the way the text reads
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
("flows").
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
(cherry picked from commit dc968941bfc9be464e1df15afa05693dec3ec192)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
man/crypttab.xml
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
man/sd_bus_creds_get_pid.xml
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
man/sd_bus_message_get_monotonic_usec.xml
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
man/crypttab.xml | 4 +-
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
src/journal/systemd-journal-feeder.py | 83 +++++++++++++++++++++++++++++++++++
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
2 files changed, 85 insertions(+), 2 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
create mode 100644 src/journal/systemd-journal-feeder.py
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
diff --git a/man/crypttab.xml b/man/crypttab.xml
|
|
Zbigniew Jędrzejewski-Szmek |
1cc3df |
index 5f386e55f8..4b6d12ef4f 100644
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
--- a/man/crypttab.xml
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+++ b/man/crypttab.xml
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
@@ -171,7 +171,7 @@
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
If the key slot does not match the given
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
passphrase or key, but another would, the
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
setup of the device will fail regardless.
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
- This implies <varname>luks</varname>. See
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ This option implies <varname>luks</varname>. See
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
<citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
for possible values. The default is to try
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
all key slots in sequential order.</para></listitem>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
@@ -275,7 +275,7 @@
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
<term><varname>tcrypt-hidden</varname></term>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
<listitem><para>Use the hidden TrueCrypt volume.
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
- This implies <varname>tcrypt</varname>.</para>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ This option implies <varname>tcrypt</varname>.</para>
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
<para>This will map the hidden volume that is
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
inside of the volume provided in the second
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
diff --git a/src/journal/systemd-journal-feeder.py b/src/journal/systemd-journal-feeder.py
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
new file mode 100644
|
|
Zbigniew Jędrzejewski-Szmek |
1cc3df |
index 0000000000..5cfab82ea0
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
--- /dev/null
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+++ b/src/journal/systemd-journal-feeder.py
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
@@ -0,0 +1,83 @@
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+import argparse
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+import subprocess
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+import collections
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+import struct
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+from systemd import journal
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options = argparse.ArgumentParser()
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options.add_argument('-H', '--host', default='localhost')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options.add_argument('-p', '--port', default=19531)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options.add_argument('-b', '--boot', default='no',
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ action='store_const', const='yes')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options.add_argument('-f', '--follow', default='no',
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ action='store_const', const='yes')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+options.add_argument('-s', '--submit', action='store_true')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+def spawn_curl(host, port, boot, follow):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ "Spawn curl to get events from systemd-journal-gatewayd"
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ url = 'http://{host}:{port}/entries?follow={follow}&boot={boot}'.format(
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ host=host, port=port, follow=follow, boot=boot)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ cmdline = ['curl', '-HAccept: application/vnd.fdo.journal',
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ '--silent', '--show-error',
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ url]
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ child = subprocess.Popen(cmdline,
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ stdin=subprocess.DEVNULL,
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ stdout=subprocess.PIPE)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ return child
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+def _read_one(inp):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ fields = collections.OrderedDict()
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ while inp:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ line = inp.readline()
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ line = line[:-1] # remove newline
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ if not line:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ break
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ left, split, right = line.partition(b'=')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ name = left.decode('ascii')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ if split:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ value = right.decode()
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ else:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ flen_ = inp.read(8)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ flen = struct.unpack('
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ value = inp.read(flen)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ newline = inp.read(1)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ assert newline == b'\n', newline
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ name = name[:-1]
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ fields[name] = value
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ return fields
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+def split_stream(stream):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ "Parse journal events from stream"
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ while stream:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ fields = _read_one(stream)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ yield fields
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+def cat_events(stream):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ for event in split_stream(stream):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ print('event MESSAGE=' + event.get('MESSAGE', '(no message)')
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ + ' ' + ','.join(event.keys()))
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+def push_events(stream):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ i = 0
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ for event in split_stream(stream):
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ #print(event)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ v = [key.encode('utf-8') + b'=' + val
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ if isinstance(val, bytes)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ else key + '=' + val
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ for key,val in event.items()]
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ print('\n'.join(v))
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ journal.sendv(*v)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ i += 1
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ if i == 1:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ break
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+if __name__ == '__main__':
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ args = options.parse_args()
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ curl = spawn_curl(args.host, args.port,
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ args.boot, args.follow)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ if args.submit:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ push_events(curl.stdout)
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ else:
|
|
Zbigniew Jędrzejewski-Szmek |
a52f67 |
+ cat_events(curl.stdout)
|