Loading doc/control-spec.txt +97 −40 Changes for doc/control-spec.txt: 97 added lines, 40 removed lines. Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ $Id$ EventCode = "CIRC" / "STREAM" / "ORCONN" / "BW" / "DEBUG" / "INFO" / "NOTICE" / "WARN" / "ERR" / "NEWDESC" / "ADDRMAP" / "AUTHDIR_NEWDESCS" / "DESCCHANGED" / "STATUS_GENERAL" / "STATUS_CLIENT" / "STATUS_SERVER" "STATUS_CLIENT" / "STATUS_SERVER" / "GUARDS" Any events *not* listed in the SETEVENTS line are turned off; thus, sending SETEVENTS with an empty body turns off all event reporting. Loading Loading @@ -458,6 +458,21 @@ $Id$ status events are available as getinfo's currently. Let us know if you want more exposed.) "status/client" "status/server" These two special cases of internal Tor values return a (possibly empty) list of status events from Section 4.1.10 that Tor believes are still accurate. Controllers can use them to get a summary of any current problems with Tor's operation. [The answers should include notice events, not just warns and errs, for example so Tor can learn whether any circuits have been established yet.] [Does this mean that Tor must keep state on its side of all the statuses it's sent, and recognize when they're cancelled out, and so on? It's a shame that Tor needs to do this and also Vidalia needs to do this.] Examples: C: GETINFO version desc/name/moria1 S: 250+desc/name/moria= Loading Loading @@ -873,43 +888,24 @@ $Id$ [Don't rely on any of these until we work out more of the details. -RD] Syntax: "650" SP Type SP Action SP Arguments Type = "STATUS_NOTICE" / "STATUS_WARN" "650" SP Type SP Severity SP Action SP Arguments Type = "STATUS_GENERAL" / "STATUS_CLIENT" / "STATUS_SERVER" Severity = "NOTICE" / "WARN" / "ERR" Action is a string, and Arguments is a series of key=value pairs on the same line. Actions for STATUS_NOTICE events can be as follows: The reserved keyword "message" can optionally be used to provide a string describing the nature of the action. Message strings MUST NOT include items that a controller might be tempted to parse, such as numbers. client notices: CIRCUIT_ESTABLISHED Tor is able to establish circuits for client use. This event will only be sent if we just built a circuit that changed our mind -- that is, prior to this event we didn't know whether we could establish circuits. Actions for STATUS_GENERAL severity NOTICE events can be as follows: DIR_ALL_UNREACHABLE Tor believes that none of the known directory servers are reachable -- this is most likely because the local network is down or otherwise not working, and might help to explain for the user why Tor appears to be broken. [none yet] GUARD_NODES_CHANGED server notices: EXTERNAL_ADDRESS "address=IP" "method=guessed/resolved/..." // hibernating Actions for STATUS_GENERAL severity WARN events can be as follows: CHECKING_REACHABILITY "oraddress=IP:port" "diraddress=IP:port" "timeout=NUM" Actions for STATUS_WARN events can be as follows: general warns: DANGEROUS_VERSION "current=version" "recommended=version,version,..." Loading @@ -923,6 +919,8 @@ general warns: also happens when the system is swapping so heavily that Tor is starving. The "time" argument includes the number of seconds Tor thinks it was unconscious for. [This status event can generally be ignored by the controller, since we don't really know what the user should do anyway. Hm.] TOO_MANY_CONNECTIONS "limit=NUM" Loading @@ -938,15 +936,41 @@ general warns: the controller can explain this to the user and encourage her to file a bug report? // unexpected dir response. behind a hotel/airport firewall? [The following two are sent as WARNs if CIRCUIT_ESTABLISHED and not DIR_ALL_UNREACHABLE, else as ERRs:] // bad http or https proxy? BAD_DIR_RESPONSE // unexpected dir response. behind a hotel/airport firewall? // clock is skewed CLOCK_SKEWED // (either from talking to a dir authority, or from perusing a // network-status timestamp) client warns: Actions for STATUS_GENERAL severity ERR events can be as follows: BAD_PROXY // bad http or https proxy? DIR_ALL_UNREACHABLE Tor believes that none of the known directory servers are reachable -- this is most likely because the local network is down or otherwise not working, and might help to explain for the user why Tor appears to be broken. Actions for STATUS_CLIENT severity NOTICE events can be as follows: CIRCUIT_ESTABLISHED Tor is able to establish circuits for client use. This event will only be sent if we just built a circuit that changed our mind -- that is, prior to this event we didn't know whether we could establish circuits. ENOUGH_DIR_INFO Tor now knows enough network-status documents and enough server descriptors that it's going to start trying to build circuits now. Actions for STATUS_CLIENT severity WARN events can be as follows: DANGEROUS_SOCKS "protocol=socks4/socks4a/socks5" "address=IP:port" Loading @@ -961,7 +985,29 @@ client warns: // a nickname we asked for is unavailable. no need for this // quite yet, since no end-user controllers let you configure that. server warns: Actions for STATUS_CLIENT severity ERR events can be as follows: [none yet] Actions for STATUS_SERVER severity NOTICE events can be as follows: EXTERNAL_ADDRESS "address=IP" "method=guessed/resolved/..." // hibernating CHECKING_REACHABILITY "oraddress=IP:port" "diraddress=IP:port" "timeout=NUM" GOOD_SERVER_DESCRIPTOR We successfully uploaded our server descriptor to each of the directory authorities, with no complaints. Actions for STATUS_SERVER severity WARN events can be as follows: // something about failing to parse our address? // from resolve_my_address() in config.c Loading @@ -969,18 +1015,29 @@ server warns: // too many onions queued. threading problem or slow cpu? REACHABILITY_FAILED "oraddress=IP:port" "diraddress=IP:port" // eventdns statements. like, hijacked dns. BAD_SERVER_DESCRIPTOR "dirauth=nickname" // dir authorities didn't like my descriptor // eventdns statements. like, hijacked dns. Actions for STATUS_SERVER severity ERR events can be as follows: REACHABILITY_FAILED "oraddress=IP:port" "diraddress=IP:port" Controllers must tolerate hearing about actions that they don't recognize. 4.1.11. Our set of guard nodes has changed Syntax: "650" SP "GUARDS" SP Type SP ... Type = "ENTRY" ... [needs to be fleshed out; not implemented yet] 5. Implementation notes 5.1. Authentication Loading doc/dir-spec.txt +4 −0 Changes for doc/dir-spec.txt: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -793,3 +793,7 @@ $Id$ ... 7.0 Error and return codes in the directory protocol We should write down what return codes dirservers send in what situations. Loading
doc/control-spec.txt +97 −40 Changes for doc/control-spec.txt: 97 added lines, 40 removed lines. Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ $Id$ EventCode = "CIRC" / "STREAM" / "ORCONN" / "BW" / "DEBUG" / "INFO" / "NOTICE" / "WARN" / "ERR" / "NEWDESC" / "ADDRMAP" / "AUTHDIR_NEWDESCS" / "DESCCHANGED" / "STATUS_GENERAL" / "STATUS_CLIENT" / "STATUS_SERVER" "STATUS_CLIENT" / "STATUS_SERVER" / "GUARDS" Any events *not* listed in the SETEVENTS line are turned off; thus, sending SETEVENTS with an empty body turns off all event reporting. Loading Loading @@ -458,6 +458,21 @@ $Id$ status events are available as getinfo's currently. Let us know if you want more exposed.) "status/client" "status/server" These two special cases of internal Tor values return a (possibly empty) list of status events from Section 4.1.10 that Tor believes are still accurate. Controllers can use them to get a summary of any current problems with Tor's operation. [The answers should include notice events, not just warns and errs, for example so Tor can learn whether any circuits have been established yet.] [Does this mean that Tor must keep state on its side of all the statuses it's sent, and recognize when they're cancelled out, and so on? It's a shame that Tor needs to do this and also Vidalia needs to do this.] Examples: C: GETINFO version desc/name/moria1 S: 250+desc/name/moria= Loading Loading @@ -873,43 +888,24 @@ $Id$ [Don't rely on any of these until we work out more of the details. -RD] Syntax: "650" SP Type SP Action SP Arguments Type = "STATUS_NOTICE" / "STATUS_WARN" "650" SP Type SP Severity SP Action SP Arguments Type = "STATUS_GENERAL" / "STATUS_CLIENT" / "STATUS_SERVER" Severity = "NOTICE" / "WARN" / "ERR" Action is a string, and Arguments is a series of key=value pairs on the same line. Actions for STATUS_NOTICE events can be as follows: The reserved keyword "message" can optionally be used to provide a string describing the nature of the action. Message strings MUST NOT include items that a controller might be tempted to parse, such as numbers. client notices: CIRCUIT_ESTABLISHED Tor is able to establish circuits for client use. This event will only be sent if we just built a circuit that changed our mind -- that is, prior to this event we didn't know whether we could establish circuits. Actions for STATUS_GENERAL severity NOTICE events can be as follows: DIR_ALL_UNREACHABLE Tor believes that none of the known directory servers are reachable -- this is most likely because the local network is down or otherwise not working, and might help to explain for the user why Tor appears to be broken. [none yet] GUARD_NODES_CHANGED server notices: EXTERNAL_ADDRESS "address=IP" "method=guessed/resolved/..." // hibernating Actions for STATUS_GENERAL severity WARN events can be as follows: CHECKING_REACHABILITY "oraddress=IP:port" "diraddress=IP:port" "timeout=NUM" Actions for STATUS_WARN events can be as follows: general warns: DANGEROUS_VERSION "current=version" "recommended=version,version,..." Loading @@ -923,6 +919,8 @@ general warns: also happens when the system is swapping so heavily that Tor is starving. The "time" argument includes the number of seconds Tor thinks it was unconscious for. [This status event can generally be ignored by the controller, since we don't really know what the user should do anyway. Hm.] TOO_MANY_CONNECTIONS "limit=NUM" Loading @@ -938,15 +936,41 @@ general warns: the controller can explain this to the user and encourage her to file a bug report? // unexpected dir response. behind a hotel/airport firewall? [The following two are sent as WARNs if CIRCUIT_ESTABLISHED and not DIR_ALL_UNREACHABLE, else as ERRs:] // bad http or https proxy? BAD_DIR_RESPONSE // unexpected dir response. behind a hotel/airport firewall? // clock is skewed CLOCK_SKEWED // (either from talking to a dir authority, or from perusing a // network-status timestamp) client warns: Actions for STATUS_GENERAL severity ERR events can be as follows: BAD_PROXY // bad http or https proxy? DIR_ALL_UNREACHABLE Tor believes that none of the known directory servers are reachable -- this is most likely because the local network is down or otherwise not working, and might help to explain for the user why Tor appears to be broken. Actions for STATUS_CLIENT severity NOTICE events can be as follows: CIRCUIT_ESTABLISHED Tor is able to establish circuits for client use. This event will only be sent if we just built a circuit that changed our mind -- that is, prior to this event we didn't know whether we could establish circuits. ENOUGH_DIR_INFO Tor now knows enough network-status documents and enough server descriptors that it's going to start trying to build circuits now. Actions for STATUS_CLIENT severity WARN events can be as follows: DANGEROUS_SOCKS "protocol=socks4/socks4a/socks5" "address=IP:port" Loading @@ -961,7 +985,29 @@ client warns: // a nickname we asked for is unavailable. no need for this // quite yet, since no end-user controllers let you configure that. server warns: Actions for STATUS_CLIENT severity ERR events can be as follows: [none yet] Actions for STATUS_SERVER severity NOTICE events can be as follows: EXTERNAL_ADDRESS "address=IP" "method=guessed/resolved/..." // hibernating CHECKING_REACHABILITY "oraddress=IP:port" "diraddress=IP:port" "timeout=NUM" GOOD_SERVER_DESCRIPTOR We successfully uploaded our server descriptor to each of the directory authorities, with no complaints. Actions for STATUS_SERVER severity WARN events can be as follows: // something about failing to parse our address? // from resolve_my_address() in config.c Loading @@ -969,18 +1015,29 @@ server warns: // too many onions queued. threading problem or slow cpu? REACHABILITY_FAILED "oraddress=IP:port" "diraddress=IP:port" // eventdns statements. like, hijacked dns. BAD_SERVER_DESCRIPTOR "dirauth=nickname" // dir authorities didn't like my descriptor // eventdns statements. like, hijacked dns. Actions for STATUS_SERVER severity ERR events can be as follows: REACHABILITY_FAILED "oraddress=IP:port" "diraddress=IP:port" Controllers must tolerate hearing about actions that they don't recognize. 4.1.11. Our set of guard nodes has changed Syntax: "650" SP "GUARDS" SP Type SP ... Type = "ENTRY" ... [needs to be fleshed out; not implemented yet] 5. Implementation notes 5.1. Authentication Loading
doc/dir-spec.txt +4 −0 Changes for doc/dir-spec.txt: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -793,3 +793,7 @@ $Id$ ... 7.0 Error and return codes in the directory protocol We should write down what return codes dirservers send in what situations.