mirror of
https://github.com/torproject/torspec.git
synced 2024-11-27 20:00:41 +00:00
Merge remote-tracking branch 'dgoulet/ticket14847_11'
This commit is contained in:
commit
40dc315c80
@ -1241,6 +1241,47 @@
|
||||
|
||||
[DROPGUARDS was added in Tor 0.2.5.2-alpha.]
|
||||
|
||||
3.26. HSFETCH
|
||||
|
||||
The syntax is:
|
||||
"HSFETCH" SP (HSAddress / "v" Version "-" DescId)
|
||||
*[SP "SERVER=" Server] CRLF
|
||||
|
||||
HSAddress = 16*Base32Character
|
||||
Version = 2
|
||||
DescId = 32*Base32Character
|
||||
Server = LongName
|
||||
|
||||
This command launches hidden service descriptor fetch(es) for the given
|
||||
HSAddress or DescId.
|
||||
|
||||
If a DescId is specified, at least one Server MUST also be provided,
|
||||
otherwise a 512 error is returned. If no DescId and Server(s) are specified,
|
||||
it behaves like a normal Tor client descriptor fetch. If one or more
|
||||
Server are given, they are used instead triggering a fetch on each of them
|
||||
in parallel.
|
||||
|
||||
The caching behavior when fetching a descriptor using this command is
|
||||
identical to normal Tor client behavior.
|
||||
|
||||
Details on how to compute a descriptor id (DescId) can be found in
|
||||
rend-spec.txt section 1.3.
|
||||
|
||||
If any values are unrecognized, a 513 error is returned and the command is
|
||||
stopped. On success, Tor replies "250 OK" then Tor MUST eventually follow
|
||||
this with both a HS_DESC and HS_DESC_CONTENT events with the results. If
|
||||
SERVER is specified then events are emitted for each location.
|
||||
|
||||
Examples are:
|
||||
C: HSFETCH v2-gezdgnbvgy3tqolbmjrwizlgm5ugs2tl
|
||||
SERVER=9695DFC35FFEB861329B9F1AB04C46397020CE31
|
||||
S: 250 OK
|
||||
|
||||
C: HSFETCH ajkhdsfuygaesfaa
|
||||
S: 250 OK
|
||||
|
||||
[HSFETCH was added in Tor 0.2.7.1-alpha]
|
||||
|
||||
4. Replies
|
||||
|
||||
Reply codes follow the same 3-character format as used by SMTP, with the
|
||||
@ -2535,7 +2576,7 @@
|
||||
[SP "REASON=" Reason]
|
||||
|
||||
Action = "REQUESTED" / "RECEIVED" / "IGNORE" / "FAILED"
|
||||
HSAddress = 16*Base32Character
|
||||
HSAddress = 16*Base32Character / "UNKNOWN"
|
||||
AuthType = "NO_AUTH" / "BASIC_AUTH" / "STEALTH_AUTH" / "UNKNOWN"
|
||||
HsDir = LongName / Fingerprint
|
||||
DescriptorID = 32*Base32Character
|
||||
@ -2544,6 +2585,11 @@
|
||||
These events will be triggerred when required HiddenService descriptor is
|
||||
not found in the cache and a fetch from network is performed.
|
||||
|
||||
If the fetch was triggered with only a DescriptorID (using the HSFETCH
|
||||
command for instance), the HSAddress only appears in the Action=RECEIVED
|
||||
since there is no way to know the HSAddress from the DescriptorID thus
|
||||
the value will be "UNKNOWN".
|
||||
|
||||
If we already had the v0 descriptor, the newly fected v2 descriptor will be
|
||||
ignored and a "HS_DESC" event with "IGNORE" action will be generated.
|
||||
|
||||
@ -2557,6 +2603,34 @@
|
||||
- "NOT_FOUND" - HS descriptor with given identifier was not found.
|
||||
- "UNEXPECTED" - nature of failure is unknown.
|
||||
|
||||
4.1.26. HiddenService descriptors content
|
||||
|
||||
The syntax is:
|
||||
|
||||
"650" "+" "HS_DESC_CONTENT" SP HSAddress SP DescId SP HsDir CRLF
|
||||
Descriptor CRLF "." CRLF "650" SP "OK" CRLF
|
||||
|
||||
HSAddress = 16*Base32Character / "UNKNOWN"
|
||||
DescId = 32*Base32Character
|
||||
HsDir = LongName
|
||||
Descriptor = The text of the descriptor formatted as specified in
|
||||
rend-spec.txt section 1.3 or empty string on failure.
|
||||
|
||||
This event is triggered when a successfully fetched HS descriptor is
|
||||
received. The text of that descriptor is then replied. If the HS_DESC
|
||||
event is enabled, it is replied just after the RECEIVED action.
|
||||
|
||||
If a fetch fails, the Descriptor is an empty string and HSAddress is set
|
||||
to "UNKNOWN". The HS_DESC event should be used to get more information on
|
||||
the failed request.
|
||||
|
||||
It's expected to receive a reply relatively fast as in it's the time it
|
||||
takes to fetch something over the Tor network. This can be between a
|
||||
couple of seconds up to 60 seconds (not a hard limit). But, in any cases,
|
||||
this event will reply either the descriptor's content or an empty one.
|
||||
|
||||
[HS_DESC_CONTENT was added in Tor 0.2.7.1-alpha]
|
||||
|
||||
5. Implementation notes
|
||||
|
||||
5.1. Authentication
|
||||
|
Loading…
Reference in New Issue
Block a user