chiark / gitweb /
Ian Jackson [Sat, 24 Jul 2021 11:34:45 +0000 (12:34 +0100)]
config, wip macro, generete fields with SKLs
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 11:32:44 +0000 (12:32 +0100)]
config, wip macro, generetes some code
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 11:15:38 +0000 (12:15 +0100)]
config, wip macro
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 11:14:15 +0000 (12:14 +0100)]
config, wip macro
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 11:10:05 +0000 (12:10 +0100)]
config, wip macro
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 11:04:14 +0000 (12:04 +0100)]
config, wip macro
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 10:14:51 +0000 (11:14 +0100)]
config, break out var section list
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 09:54:13 +0000 (10:54 +0100)]
config, wip before break out var section list
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 01:03:15 +0000 (02:03 +0100)]
macros wip
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:55:25 +0000 (01:55 +0100)]
macros wip
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:31:57 +0000 (01:31 +0100)]
macros skeleton
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:15:04 +0000 (01:15 +0100)]
wip resolve, comment out for macro work, for revert
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:14:56 +0000 (01:14 +0100)]
wip resolve
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:12:20 +0000 (01:12 +0100)]
wip resolve
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 24 Jul 2021 00:04:56 +0000 (01:04 +0100)]
wip resolve
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 23:57:11 +0000 (00:57 +0100)]
wip resolve
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 23:33:45 +0000 (00:33 +0100)]
wip resolve
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:42:20 +0000 (23:42 +0100)]
document and parse limit section headings
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:32:52 +0000 (23:32 +0100)]
wip parsing, tolerate hyphens in config
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:29:48 +0000 (23:29 +0100)]
wip parsing, record loc
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:28:10 +0000 (23:28 +0100)]
wip parsing, record loc
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:17:32 +0000 (23:17 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:15:15 +0000 (23:15 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 22:10:33 +0000 (23:10 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 21:58:13 +0000 (22:58 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 21:23:30 +0000 (22:23 +0100)]
wip parsing, shuffle
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 21:12:34 +0000 (22:12 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 18:44:16 +0000 (19:44 +0100)]
wip parsing
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 18:44:06 +0000 (19:44 +0100)]
README.config: Further restrict server name
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 18:43:49 +0000 (19:43 +0100)]
README.config: fix to match Python implementation
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 11:54:02 +0000 (12:54 +0100)]
wip impl config reading, runs
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 11:46:03 +0000 (12:46 +0100)]
wip impl config reading, compiles
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 10:01:31 +0000 (11:01 +0100)]
wip impl config reading
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 23 Jul 2021 10:01:16 +0000 (11:01 +0100)]
README.config: clarifications
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 21 Jul 2021 22:38:43 +0000 (23:38 +0100)]
wip optiona nnd config parser
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 21 Jul 2021 21:49:08 +0000 (22:49 +0100)]
Import docs from Python program
We are aiming to be compatible with this.
Copied these files from
d5100ea6b9bb1d0d858c5475469f9cc4e3200b3a
verbatim. We'll free to hack them here, though.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 21 Jul 2021 21:33:00 +0000 (22:33 +0100)]
dependencies
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 21 Jul 2021 21:23:25 +0000 (22:23 +0100)]
initial commit, cargo init + edits + licence
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 1 Oct 2020 16:51:29 +0000 (17:51 +0100)]
Add missing cpio dependency
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Scott Ellis [Fri, 24 Jan 2020 19:16:53 +0000 (19:16 +0000)]
Merge pull request #1 from mavuramd/master
Implement clean in make
Dilip Reddy Mavuram [Fri, 24 Jan 2020 10:40:55 +0000 (11:40 +0100)]
Fix the clean target
Dilip Reddy Mavuram [Fri, 24 Jan 2020 10:36:56 +0000 (11:36 +0100)]
Implement clean in make
Ian Jackson [Tue, 18 Jun 2019 17:41:27 +0000 (18:41 +0100)]
mtu: Discard over-mtu packets
There is no authentication of packet data. Bad captive portals
etc. can send garbage bad enough to overflow the mtu and cause the
client to crash.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 18 Jun 2019 17:40:29 +0000 (18:40 +0100)]
mtu: Add mtu parameter to SlipStreamDecoder and start_ipif
These don't take a config, so we must pass this as a parameter.
Change all call sites. Not used yet so no functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 18 Jun 2019 17:39:00 +0000 (18:39 +0100)]
config: Make c.mtu always be an integer, not a string
We are going to want to use this other than just to feed to ipif.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Scott Ellis [Fri, 7 Dec 2018 13:54:05 +0000 (08:54 -0500)]
Create LICENSE
Scott Ellis [Fri, 7 Dec 2018 13:50:13 +0000 (08:50 -0500)]
Initial commit
Mark Wooding [Mon, 25 Sep 2017 09:35:05 +0000 (10:35 +0100)]
hippotat: Convert an explicitly configured URL to ASCII.
The conversion is rather annoying, and not especially efficient, but it
does the job. In particular, it works better than leaving the URL as
`str', because that results in a `TypeError' later.
Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Mark Wooding [Mon, 25 Sep 2017 09:29:01 +0000 (10:29 +0100)]
hippotat: Don't set an explicit `Content-Length'.
It turns out (a) that the existing Twisted machinery already sets a
`Content-Length' header on `POST' submissions, (b) that it's too stupid
to notice that the caller's already set one, and (c) that nginx rejects
`POST' requests with duplicate `Content-Length' headers with `400 Bad
Request', which turns out to be surprisingly hard to debug.
Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Mark Wooding [Sat, 23 Sep 2017 23:09:51 +0000 (00:09 +0100)]
hippotatlib/__init__.py: Make `vaddr' be an actual address object.
Otherwise `route' won't actually match it correctly.
Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:53:56 +0000 (17:53 +0100)]
ResponseConsumer: tolerate daft exception PotentialDataLoss
The docs for this say:
PotentialDataLoss may be raised by a transfer encoding decoder's
noMoreData method to indicate that it cannot be determined if the
entire response body has been delivered. This only occurs when
making requests to HTTP servers which do not set Content-Length or a
Transfer-Encoding in the response because in this case the end of
the response is indicated by the connection being closed, an event
which may also be due to a transient network problem or other error.
[1] https://twistedmatrix.com/documents/16.6.0/api/twisted.web.http.PotentialDataLoss.html retrieved 22.8.2017
If the origin server (or proxy) chooses to use `Connection: close' and
not to provide a Content-Length, then this exception will always be
raised. hippotatd uses Twisted's http server so does not trigger
this, but there might be an (intercepting) proxy. If so, then
hippotat will simply not work.
Additionally, the statement in the Twisted documentation that
connection close might be due to a "transient problem or other error"
is not correct. TCP is able to distinguish a graceful shutdown from
an ungraceful close, and origin servers ought to arrange that they do
not inappropriately perform a graceful close in error situations.
Of course a badly-implemented proxy might get this wrong, but in that
case a general web client would have no way to detect this situation
if it wants to function at all. So certainly turning this situation
into an exception by default seems wrong.
For hippotat, ignoring the potential problem hippotat just means
potentially processing a truncated response, which might mean lost
packets (which should be retransmitted) or truncated packets (which
will be detected by the IP header length field, and retransmitted).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:37:06 +0000 (17:37 +0100)]
ResponseConsumer: break out connectionLostOK into superclass
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:32:00 +0000 (17:32 +0100)]
ResponseConsumer: move _resp initialisation to superclass constructor (nfc)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:31:46 +0000 (17:31 +0100)]
ResponseConsumer: pass resp to superclass constructor (nfc)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:31:08 +0000 (17:31 +0100)]
ResponseConsumer: pass resp to constructor (nfc)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 22 Aug 2017 16:24:48 +0000 (17:24 +0100)]
do not crash on unexpected connectionLost
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 14:34:13 +0000 (15:34 +0100)]
ensure mtu is in the ipif substitution set
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 14:33:33 +0000 (15:33 +0100)]
report success after failure
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 14:33:19 +0000 (15:33 +0100)]
replace plaintext secret transmission with time-limited hmac-based bearer tokens
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 13:50:01 +0000 (14:50 +0100)]
rename "password" to "secret" everywhere
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 13:48:57 +0000 (14:48 +0100)]
document that nonce-based authentication is for the future
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 25 Apr 2017 13:48:38 +0000 (14:48 +0100)]
better document routing assistance
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 13:31:48 +0000 (14:31 +0100)]
hippotatd: do not crash on some unexpected requests
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:26:00 +0000 (13:26 +0100)]
process putatives: Introduce dbg()
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:23:18 +0000 (13:23 +0100)]
process putatives: Properly report regexp mismatch ignores
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:23:03 +0000 (13:23 +0100)]
process putatives: Fix processing of [<servername> <client>] sections
Convert only the client part to an ip address.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:22:36 +0000 (13:22 +0100)]
process putatives: Add many log_debug_config calls
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:21:50 +0000 (13:21 +0100)]
process putatives: break out log_ignore
No significant functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:20:51 +0000 (13:20 +0100)]
do actually process server-specific [<server> LIMIT] sections
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 12:20:29 +0000 (13:20 +0100)]
better message from client on http errors
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 00:36:35 +0000 (01:36 +0100)]
daemon: record the deferred for a request in the queue, too
So we can check nf.called, rather than request.finished. The latter
can be false even after the request has failed and is unfinishable.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 24 Apr 2017 00:00:29 +0000 (01:00 +0100)]
config: Abolish use of ConfigParser's DEFAULT feature
ConfigParser provides no way to find out which sections a key is
_really_ in: in all of its views, keys in DEFAULT appear aliased in
all sections.
So instead we use a COMMON section, and implement the defaulting
ourselves. This involves:
* Changing the cfg.get[int] calls to use cfg_search (these are
the things which implictly use DEFAULT and now need to be
explicit).
* Changing all our explicit references to and definitions of
DEFAULT options to COMMON.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 23:53:00 +0000 (00:53 +0100)]
config: replace open-coded cfg.get[int]
We are going to want to do something more sophisticated.
Centralise things. No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 23:50:13 +0000 (00:50 +0100)]
move cfg_get_raw into hippotatlib
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 23:42:56 +0000 (00:42 +0100)]
rename cfg_process_common to cfg_process_general
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 23:40:29 +0000 (00:40 +0100)]
config reading: log correct filenames
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 19:51:21 +0000 (20:51 +0100)]
hippotatd: catch errors from request.finish in _req_cancel
It is not completely clear when it is necessary to call
request.finish. Doing so when it is not necessary has a tendency to
throw an exception.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 19:51:14 +0000 (20:51 +0100)]
logging: if logevent_is_boringtwisted fails, print why when we print the exception
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 23 Apr 2017 19:51:06 +0000 (20:51 +0100)]
syslog handling: print tracebacks when logging failure objects
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 21 Apr 2017 21:20:07 +0000 (22:20 +0100)]
fix crash on discarding packets
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 21 Apr 2017 21:19:22 +0000 (22:19 +0100)]
fix typo
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 21 Apr 2017 19:56:47 +0000 (20:56 +0100)]
ipif: set interface names
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 21 Apr 2017 19:55:45 +0000 (20:55 +0100)]
debian: Recommend userv-utils, now that it has sane ipif
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 01:24:05 +0000 (02:24 +0100)]
config: fix client config (no SERVER)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 01:23:56 +0000 (02:23 +0100)]
config: a bit more debugging
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:47:06 +0000 (01:47 +0100)]
cope with jesse's logger, which lacks --id=VALUE
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:46:54 +0000 (01:46 +0100)]
fix pidfile handling
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:46:29 +0000 (01:46 +0100)]
suppress boring twisted messages to syslog, too
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:46:13 +0000 (01:46 +0100)]
fix exit status
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:46:07 +0000 (01:46 +0100)]
fix cfg_process_saddrs ServerAddr
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:45:34 +0000 (01:45 +0100)]
logevent_is_boringtwisted: break out as a function from LogNotBoringTwisted (nfc)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:45:03 +0000 (01:45 +0100)]
cope with jesse's signal module (which lacks sig.name)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 10 Apr 2017 00:44:46 +0000 (01:44 +0100)]
init script fixes
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 22:44:24 +0000 (23:44 +0100)]
config dir reading fix
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 22:44:17 +0000 (23:44 +0100)]
packaging tidy
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 22:43:56 +0000 (23:43 +0100)]
packaging fixes
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 18:27:30 +0000 (19:27 +0100)]
packaging fixes - really now it installs on xenophobe
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 17:52:35 +0000 (18:52 +0100)]
packaging fixes - now it installs on xenophobe
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 15:13:27 +0000 (16:13 +0100)]
config: better examples/docs (update to how things are now)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 9 Apr 2017 15:13:03 +0000 (16:13 +0100)]
config: sort out directory handling
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>