You can subscribe to this list here.
2006 |
Jan
|
Feb
(24) |
Mar
(9) |
Apr
(4) |
May
(7) |
Jun
(13) |
Jul
(19) |
Aug
(1) |
Sep
(12) |
Oct
(20) |
Nov
(1) |
Dec
(15) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
(6) |
Mar
(24) |
Apr
(1) |
May
(10) |
Jun
(30) |
Jul
(46) |
Aug
(20) |
Sep
(12) |
Oct
(27) |
Nov
(51) |
Dec
(58) |
2008 |
Jan
(40) |
Feb
(40) |
Mar
(78) |
Apr
(138) |
May
(4) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(5) |
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
(2) |
Jul
(10) |
Aug
(1) |
Sep
(11) |
Oct
(31) |
Nov
(7) |
Dec
(1) |
2011 |
Jan
(1) |
Feb
|
Mar
(3) |
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(2) |
Sep
|
Oct
|
Nov
(2) |
Dec
(2) |
2013 |
Jan
(3) |
Feb
(5) |
Mar
(1) |
Apr
|
May
|
Jun
(11) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2014 |
Jan
(2) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ul...@us...> - 2013-03-26 22:15:44
|
Revision: 101 http://adc.svn.sourceforge.net/adc/?rev=101&view=rev Author: ullner Date: 2013-03-26 22:15:37 +0000 (Tue, 26 Mar 2013) Log Message: ----------- Adding the document ADC-PRD.txt; this document describes the necessary changes to the ADC network and associated resources when a new version of ADC or ADC-Ext are released. Added Paths: ----------- trunk/ADC-PRD.conf trunk/ADC-PRD.txt Added: trunk/ADC-PRD.conf =================================================================== --- trunk/ADC-PRD.conf (rev 0) +++ trunk/ADC-PRD.conf 2013-03-26 22:15:37 UTC (rev 101) @@ -0,0 +1,9 @@ +[attributes] +numbered +toc +toclevels=4 +frame="all" +grid="all" + +[tabledef-default] +colspec= Added: trunk/ADC-PRD.txt =================================================================== --- trunk/ADC-PRD.txt (rev 0) +++ trunk/ADC-PRD.txt 2013-03-26 22:15:37 UTC (rev 101) @@ -0,0 +1,112 @@ += ADC - Protocol Release Description +1.0.0, UNRELEASED + +== Abstract +New versions of ADC are released on a continuous basis. This document intend to provide a resource for those who are active in the ADC developent process and particularly the release process. This document, Protocol Release Description (PRD), describes the necessary changes and updates to the ADC network and associated resources once a new version of ADC is about to be released and subsequently is released. + +This document apply to at least ADC.txt and ADC-EXT.txt but may be extended for any other document as well. + +== Version history +The latest draft of the next version of this document as well as intermediate +and older versions can be downloaded from +$URL: https://adc.svn.sourceforge.net/svnroot/adc/trunk//ADC-PRD.txt $. +This version corresponds to $Revision: 98 $. + +=== Version 1.0.0, UNRELEASED + +* Initial release + +== Changes prior to release +This chapter is about the necessary changes that should be applied to the referenced document before a new version is released. + +These items should be performed in order of appearance. + +=== Document version and contact information +The version information provided in the document's top should be in the form of; + +AUTHOR + +<MAIL> + +version XYZ, MONTH YEAR + +Example: +==== + John Doe + <do...@ex...> + version 0.0.1, January 1970 +==== + +The document version provided in the document's versin history information should be in the form of; + +Version XYZ, YYYY-MM-DD + +AUTHOR, <MAIL> + +* Change1 + +* Change2 + +Example: +==== + Version 0.0.1, 1970-01-20 + John Doe, <do...@ex...> + * Initial release + * Added history information +==== + +=== Version control +The document shall be checked in to the (software) version control system with the validated information. + +== Changes after release +This chapter is about the necessary changes that should performed once a new version is released. + +These items need not be performed in order, except when certain items directly have dependencies. + +=== Document generation +The document may be in the form of a ASCIIDoc file. If so, the file should have an accomponaying ".conf" file. With ASCIIDoc, run the following command; + + ASCIIDoc.py -a toc file.txt + +This will generate the file "file.html". + +Example +==== +ASCIIDoc.py -a toc ADC.txt +==== + +=== Manage web space +The file generated (if done) shall be uploaded the web space of the ADC project. This file should be put in the /versions subdirectory. + +The file versions/index.html should be updated to include the new version. + +If a file is located at another place at the web space and is (sym or hard) linked to the previous version, then the link should be updated to point to the new version. + +The "news" section should be updated to include the new version. The information about the version should be the content provided in the version history section in the document. + +Any other link to the previous version should be updated to point to the new version. + +=== Manage forum +The forum shall be updated to manage the new version. All threads related to the new version are typically at the subform Protocols/Advanced Direct Connection/Protocol ideas. + +Each thread that has a note in the form of [Future DOCUMENT X.Y.Z] shall be changed to [DOCUMENT X.Y.Z]. + +All threads marked [DOCUMENT X.Y.Z] shall be moved to the sub-forum Protocols/Advanced Direct Connection/Pushed ideas. This will clear the current discussions list from content that are already approved and released. + +=== Manage blog +A post shall be created at the blog announcing a new version is released. The post should contain a link to the specific file at the web space (not a link). The post should contain a list of each item of change, where each item should be explored for how it affects developers and users. + +=== Manage wiki +The wiki shall be updated to not list "proposals" that are approved and in the new version, similar to the forum. + +=== Manage other Direct Connect resources +The service "Timetoast" describe a view of the versions and when they were released. This service shall be updated to include the new version and its date of release. If the service is shown on the web space, it will automatically update itself. + +The topic of the DCDev hub shall be updated to link to the new version. + +The new version shall be announced (in a non-invasive manner) on Twitter and other resources where developers frequent. + +=== Manage external resources +The http://en.wikipedia.org/wiki/Advanced_Direct_Connect[Wikipedia article] on ADC shall be updated to specify the new version. + +// vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 19:08:57
|
Revision: 100 http://adc.svn.sourceforge.net/adc/?rev=100&view=rev Author: ullner Date: 2013-02-23 19:08:45 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Changed the order of the version history to be newest to oldest, as in ADC.txt. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-02-23 19:04:25 UTC (rev 99) +++ trunk/ADC-EXT.txt 2013-02-23 19:08:45 UTC (rev 100) @@ -13,28 +13,36 @@ This version corresponds to $Revision$. -=== Version 1.0 -Jacek Sieka <arn...@gm...>, 2008-05-02 +=== Version 1.0.8, UNRELEASED -* Initial release created from original ADC 1.0 text. -* Added 'PING' extension for hub pingers. +* Improved 'NATT' documentation, as according to the original paper. -=== Version 1.0.1 -Fredrik Ullner <ul...@gm...>, 2009-08-04 +=== Version 1.0.7 +Fredrik Ullner <ul...@gm...>, 2012-11-22 -* Added timestamp field to MSG. -* Added 'DFAV' extension for distributing hub addresses. +* Added application and version separation in INF +* TIGR should now correctly reference SCH and RES -=== Version 1.0.2 -Fredrik Ullner <ul...@gm...>, 2010-04-04 +=== Version 1.0.6 +Fredrik Ullner <ul...@gm...>, 2010-09-29 -* Added 'UCMD' extension for user commands. +* Added 'KEYP' extension for providing certificate substitution protection in ADCS. +* Added note to signal DFAV. +* Added 'SUDP' extension for encryption of UDP traffic. +* Added 'TYPE' extension for chat state notifications. +* Added 'FEED' extension for RSS feeds. +* Added 'SEGA' extension for grouping of file extensions in SCH. +* Added failover hub addresses to the hub's INF. +* Added free slots to the client's INF. +* Added 'ADCS' extension for encryption in ADC. -=== Version 1.0.3 -Fredrik Ullner <ul...@gm...>, 2010-05-26 +=== Version 1.0.5 +Fredrik Ullner <ul...@gm...>, 2010-09-16 -* Removed optional keywords from UCMD. -* Added 'BLOM' extension for bloom filters. +* Added locale field to INF. +* Modified user parameter 'line' in UCMD to handle multiple inputs. +* Added hidden in enumeration of CT field in INF. +* Added error code Invalid feature in STA. === Version 1.0.4 Fredrik Ullner <ul...@gm...>, 2010-06-29 @@ -45,36 +53,28 @@ * Added upload queue field to STA. * Added partial file sharing extension 'PFSR'. -=== Version 1.0.5 -Fredrik Ullner <ul...@gm...>, 2010-09-16 +=== Version 1.0.3 +Fredrik Ullner <ul...@gm...>, 2010-05-26 -* Added locale field to INF. -* Modified user parameter 'line' in UCMD to handle multiple inputs. -* Added hidden in enumeration of CT field in INF. -* Added error code Invalid feature in STA. +* Removed optional keywords from UCMD. +* Added 'BLOM' extension for bloom filters. -=== Version 1.0.6 -Fredrik Ullner <ul...@gm...>, 2010-09-29 +=== Version 1.0.2 +Fredrik Ullner <ul...@gm...>, 2010-04-04 -* Added 'KEYP' extension for providing certificate substitution protection in ADCS. -* Added note to signal DFAV. -* Added 'SUDP' extension for encryption of UDP traffic. -* Added 'TYPE' extension for chat state notifications. -* Added 'FEED' extension for RSS feeds. -* Added 'SEGA' extension for grouping of file extensions in SCH. -* Added failover hub addresses to the hub's INF. -* Added free slots to the client's INF. -* Added 'ADCS' extension for encryption in ADC. +* Added 'UCMD' extension for user commands. -=== Version 1.0.7 -Fredrik Ullner <ul...@gm...>, 2012-11-22 +=== Version 1.0.1 +Fredrik Ullner <ul...@gm...>, 2009-08-04 -* Added application and version separation in INF -* TIGR should now correctly reference SCH and RES +* Added timestamp field to MSG. +* Added 'DFAV' extension for distributing hub addresses. -=== Version 1.0.8, UNRELEASED +=== Version 1.0 +Jacek Sieka <arn...@gm...>, 2008-05-02 -* Improved 'NATT' documentation, as according to the original paper. +* Initial release created from original ADC 1.0 text. +* Added 'PING' extension for hub pingers. == Extensions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 19:04:36
|
Revision: 99 http://adc.svn.sourceforge.net/adc/?rev=99&view=rev Author: ullner Date: 2013-02-23 19:04:25 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Improved 'NATT' documentation, as according to the original paper. Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2013-02-23 18:53:59 UTC (rev 98) +++ trunk/ADC-EXT.txt 2013-02-23 19:04:25 UTC (rev 99) @@ -1,6 +1,5 @@ = ADC Extensions -Fredrik Ullner <ul...@gm...> -1.0.7, November 2012 +1.0.8, UNRELEASED == Abstract These are the official extensions to ADC. This document is based on the @@ -73,6 +72,10 @@ * Added application and version separation in INF * TIGR should now correctly reference SCH and RES +=== Version 1.0.8, UNRELEASED + +* Improved 'NATT' documentation, as according to the original paper. + == Extensions === TIGR - Tiger tree hash support @@ -396,14 +399,16 @@ For test vectors, see the http://www.adcportal.com/wiki/index.php/Talk:BLOM[ADC wiki talk page]. === NATT - NAT traversal -NAT traversal allow two passive clients to connect to each other. For more information about NAT traversal, see https://dcpp.wordpress.com/2010/02/13/passive-mode-c-c-connections-and-nat-traversal[Passive Mode C-C Connections and NAT Traversal]. +NAT traversal allow two passive clients to connect to each other. This specification is based on the TCP hole punching algorithm described in footnoteref:[Peer-to-Peer Communication Across Network Address Translators, B. Ford and P. Srisuresh and and D. Kegel. "Peer-to-Peer Communication Across Network Address Translators". In USENIX Technical Conference 2005 - pages 179–192. Online version: http://www.brynosaurus.com/pub/net/p2pnat/]. If a client does not support TCP4 or TCP6, it will send an RCM to the client it is trying to connect to. If the other client also doesn't support TCP4 (or TCP6 correspondingly), NAT traversal may instead be used. Signal NATT in the INF's SU field. Do note that the hub must forward I4 or I6 for respective clients' INF. +An endpoint is the tuple of IP and port. The "private endpoint port" refers to the outbound port to the connected hub, as seen by the client. Each client must listen for incoming connections on this port. Note that this protocol extension uses only this port for the TCP hole punching, the use of the "public endpoint port" as specified in footnoteref:[Peer-to-Peer Communication Across Network Address Translators] is not supported. + ==== BASE RCM updates -When receiving an RCM and the client does not support TCP4 or TCP6, and if NAT-T is supported in the remote client, a NAT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub. +When receiving an RCM and the client does not support TCP4 or TCP6, and if NAT-T is supported in the remote client, a NAT command should be sent repeating the protocol and token. The port shall be the private endpoint port to the connected hub. ==== NAT NAT protocol port token @@ -412,7 +417,7 @@ States: NORMAL -Upon receiving this, try and connect to the specified port. An RNT command should be sent repeating the protocol and token. The port shall be the outbound port to the connected hub. Upon receiving this, try and connect to the specified port. +Upon receiving this, try and connect to the specified port. An RNT command should be sent repeating the protocol and token. The port shall be the private endpoint. Upon receiving this, try and connect to the specified port. ==== RNT RNT protocol port token @@ -424,7 +429,7 @@ Upon receiving this, try and connect to the specified port. ==== Example -Client A is connected to hub A with the outbound port 1000 and client B is connected to hub A with the outbound port 2000. Client A has the SID AAAA and client B has the SID BBBB. +Client A is connected to hub A with the private endpoint 1000 and client B is connected to hub A with the private endpoint 2000. Client A has the SID AAAA and client B has the SID BBBB. ==== Client A: DRCM AAAA BBBB ADC/1.0 foobar This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 18:54:11
|
Revision: 98 http://adc.svn.sourceforge.net/adc/?rev=98&view=rev Author: ullner Date: 2013-02-23 18:53:59 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Specified token use from server party in client-client connections. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2013-02-23 17:56:49 UTC (rev 97) +++ trunk/ADC.txt 2013-02-23 18:53:59 UTC (rev 98) @@ -28,6 +28,7 @@ * Added examples for each command. * Features are now described in its own section. +* Specified token use from server party in client-client connections. === Version 1.0.2, 2013-01-31 Fredrik Ullner <ul...@gm...> @@ -667,9 +668,9 @@ Connect to me. Used by active clients that want to connect to someone, or in response to RCM. Only TCP active clients may send this. <token> is a string that identifies the incoming connection triggered by this command and must be -present in the INF command of the connecting client. Clients should not accept -incoming connections with a token they did not send earlier. <protocol> is an -arbitrary string specifying the protocol to connect with; in the case of an +present in the INF command of the connecting client. Implementations should not accept +incoming connections with a token that was not sent earlier. The server party may, but should not, provide the token in its INF. +<protocol> is an arbitrary string specifying the protocol to connect with; in the case of an ADC 1.0 compliant connection attempt, this should be the string "ADC/1.0". If <protocol> is supported, a response to RCM must copy the <token> and <protocol> fields directly. If a protocol is not supported, a DSTA must be This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 17:57:06
|
Revision: 97 http://adc.svn.sourceforge.net/adc/?rev=97&view=rev Author: ullner Date: 2013-02-23 17:56:49 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Features are now described in its own section. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2013-02-23 14:37:47 UTC (rev 96) +++ trunk/ADC.txt 2013-02-23 17:56:49 UTC (rev 97) @@ -27,6 +27,7 @@ === Version 1.0.3, UNRELEASED * Added examples for each command. +* Features are now described in its own section. === Version 1.0.2, 2013-01-31 Fredrik Ullner <ul...@gm...> @@ -321,8 +322,7 @@ to be interpreted by other clients. == BASE messages -ADC clients/hubs that support the following messages may advertise the feature -"BASE" in the PROTOCOL phase. +ADC clients/hubs that support the following messages must advertise the feature "BASE" . The connecting party will be known as client, the other as server. For each message, the action code and the message contexts under which it is valid are specified. @@ -415,6 +415,34 @@ |NORMAL |STA, SUP, INF, MSG, SCH, RES, CTM, RCM, QUI, GET, GFI, SND |===== +=== Features +Features are used to indicate support for protocol commands or functionality. + +The server may use any feature that the client indicates support for regardless of its own SUP and vice versa. A client can announce features in the SUP regardless of the INF's SU field and vice versa. + +A feature name consists of four uppercase letters, where the last letter may be changed to a number to indicate a revised version of the feature. + +A central register of known features is kept to avoid clashes, see below features in this protocol and the features in the extension document. + +==== BASE +All clients must support the BASE feature (unless a future revision takes its place), which is this protocol. + +Clients must add the feature to the INF's SU field. + +==== TCP4 / TCP6 +The features TCP4 and TCP6 are used to indicate support for incoming TCP connections. The 4 and 6 indicate IPv4 and IPv6. + +Clients should add the feature to the INF's SU field. + +Clients that support incoming TCP connections is referenced as 'active' where the opposite is 'passive'. + +==== UDP4 / UDP6 +The features UDP4 and UDP6 are used to indicate support for incoming UDP packets. The 4 and 6 indicate UDP with IPv4 and IPv6. + +Clients should add the feature to the INF's SU field. + +Clients that support incoming UDP packets is referenced as 'active' where the opposite is 'passive'. + === Actions ==== STA STA code description @@ -486,13 +514,7 @@ States: PROTOCOL, NORMAL -This command identifies which features a specific client / hub supports. The -feature name consists of four uppercase letters, where the last letter may be -changed to a number to indicate a revised version of the feature. A central -register of known features should be kept, to avoid clashes. All ADC clients -must support the BASE feature (unless a future revision takes its place), -which is this protocol. The server may use any feature that the client -indicates support for regardless of its own SUP, and vice versa. +This command identifies which features a specific client / hub supports. This command can also be used to dynamically add / remove features, 'AD' meaning add and 'RM' meaning remove. @@ -536,10 +558,10 @@ |Code |Type |Description |ID |base32 |The CID of the client. Mandatory for C-C connections. |PD |base32 |The PID of the client. Hubs must check that the hash(PID) == CID and then discard the field before broadcasting it to other clients. Must not be sent in C-C connections. -|I4 |IPv4 |IPv4 address without port. A zero address (0.0.0.0) means that the server should replace it with the real IP of the client. Hubs must check that a specified address corresponds to what the client is connecting from to avoid DoS attacks and only allow trusted clients to specify a different address. Clients should use the zero address when connecting, but may opt not to do so at the user's discretion. Any client that supports incoming TCPv4 connections must also add the feature TCP4 to their SU field. -|I6 |IPv6 |IPv6 address without port. A zero address (::) means that the server should replace it with the IP of the client. Any client that supports incoming TCPv6 connections must also add the feature TCP6 to their SU field. -|U4 |integer |Client UDP port. Any client that supports incoming UDPv4 packets must also add the feature UDP4 to their SU field. -|U6 |integer |Same as U4, but for IPv6. Any client that supports incoming UDPv6 packets must also add the feature UDP6 to their SU field. +|I4 |IPv4 |IPv4 address without port. A zero address (0.0.0.0) means that the server should replace it with the real IP of the client. Hubs must check that a specified address corresponds to what the client is connecting from to avoid DoS attacks and only allow trusted clients to specify a different address. Clients should use the zero address when connecting, but may opt not to do so at the user's discretion. +|I6 |IPv6 |IPv6 address without port. A zero address (::) means that the server should replace it with the IP of the client. +|U4 |integer |Client UDP port. +|U6 |integer |Same as U4, but for IPv6. |SS |integer |Share size in bytes |SF |integer |Number of shared files |VE |string |Client identification, version (client-specific, a short identifier then a dotted version number is recommended) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-02-23 14:37:59
|
Revision: 96 http://adc.svn.sourceforge.net/adc/?rev=96&view=rev Author: ullner Date: 2013-02-23 14:37:47 +0000 (Sat, 23 Feb 2013) Log Message: ----------- Added examples for each command. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2013-01-31 18:49:07 UTC (rev 95) +++ trunk/ADC.txt 2013-02-23 14:37:47 UTC (rev 96) @@ -1,6 +1,5 @@ = ADC Protocol -Fredrik Ullner <ul...@gm...> -1.0.2, January 2013 +1.0.3, UNRELEASED == Abstract ADC is a text protocol for a client-server network similar to Neo-Modus' @@ -25,6 +24,10 @@ $URL$. This version corresponds to $Revision$. +=== Version 1.0.3, UNRELEASED + +* Added examples for each command. + === Version 1.0.2, 2013-01-31 Fredrik Ullner <ul...@gm...> @@ -759,6 +762,8 @@ starting at <start_pos>. == Examples +Note that examples listed here omit the trailing newline character that shall always end a message. + === Client – Hub connection [options="autowidth,header"] @@ -790,6 +795,131 @@ |<data> | |===== +=== Commands + +==== STA +[options="header"] +|===== +|ISTA 211 Hub\sfull |A STA sent from a hub with the severity Fatal (2) and the error code Hub full (11). The descriptive text afterward is to preferably be presented to the user. +|CSTA 151 File\snot\savailable |A STA is sent in a client to client connection, indicating that the request for a file failed (error code 51), as the file was not vailable. The severity (Recoverable, 1) indicates that an error occured but that the connection will remain. +|ESTA BBBB CCCC 142 Transfer\sprotocol\sunsupported TO123456789 PRADC/0.5 |A STA is sent from one client to another client in a hub, routed as a E-type message (meaning that the sender should receive it as well), as a response for not supporting transfers of the 'protocol' kind. The token '123456789' is used and the protocol is "ADC/0.5" (see the command CTM for the version that shall be used in this protocol version). +|===== + +==== SUP +[options="header"] +|===== +|Example |Description +|ISUP ADBASE ADTIGR ADBLOM |A SUP sent from a hub indicating that the hub has added the features BASE, TIGR and BLOM. +|HSUP RMBLOM ADZLIF |A SUP sent from a client to the hub indicating that the client has added the fature ZLIF and removed the feature BLOM. +|===== + +==== SID +[options="header"] +|===== +|Example |Description +|ISID BBBB |An SID is sent from the hub indicating that the client's SID from then on shall be BBBB. +|===== + +==== INF +[options="header"] +|===== +|Example |Description +|IINF CT32 NIexample_hub DEThe\s\simple\shub |An INF is sent from the hub containing its own information: the name is "example_hub" and description "The simple hub". +|BINF BBBB HN0 HR1 HO2 NIsample_user DEsample\scontent SF123456 SS42 I4192.168.0.1 U46666 IDIPJJWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KC3I PDIJJJWEPPPLCA33F2ZCR7YO4F6ZXWE4NJ3WQ3C3I |An INF sent from a client (with the SID BBBB) containing the following information: the name is "sample_user", the description is "sample content", in three hubs in total (one as registered and two as operator), with a total share size of 42 bytes (with 123456 files) etc. +|CINF IPJJWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KC3I TO123456789 |An INF is sent in a client to client connection indicating the CID and token. +|===== + +==== MSG +[options="header"] +|===== +|Example |Description +|IMSG There\sare\s42\susers\sonline |A MSG that is sent from the hub with the message "There are 42 users online". +|BMSG BBBB likes\scats ME1 |A MSG that is sent from a client (with SID BBBB), spoken in third person with the message "likes cats". This will appear like (or something similar) "john likes cats" (assuming that the user with BBBB has the name john). +|DMSG CCCC BBBB I\sprefer\sdogs PMCCCC |A MSG is sent from a client to another client, spoken as a "private message", with the message "I prefer dogs". +|===== + +==== SCH +[options="header"] +|===== +|Example |Description +|BSCH BBBB ANubuntu ANlinux NOgentoo EXISO EXIMG TO123456789 TY1 |A SCH that is sent from a client where the search terms "ubuntu" and "linux" should be in the file (TY1) name, excluding files that have "gentoo" in them. The extension of the file should be ISO or IMG. The token "123456789" is used. +|BSCH BBBB ANubuntu LE4294967296 TO123456789 |A SCH that is sent from a client where the search term "ubuntu" should be in the file (TY1) name. The token "123456789" is used. The file must be less than 4 GiB in size (4294967296 bytes). +|FSCH BBBB +TCP4 ANubuntu TO123456789 |A SCH that is sent from a client where the search term "ubuntu" should be in the file (TY1) name. The token "123456789" is used. The hub should only route the SCH to clients that support the feature TCP4. +|===== + +==== RES +[options="header"] +|===== +|Example |Description +|DRES CCCC BBBB FN/share/linux/ubuntu.iso SI42 SL1 TO123456789 TRIPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII |A RES that is sent from a client (through the hub) indicating a response with the file name "ubuntu.iso" (and its path within the share), where the file sise is 42 bytes. The token "123456789" is used. The TR field indicate the hash of the file (see the TIGR extension). +|URES IPJJWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII TRIPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII FN/share/linux/ubuntu.iso SI42 TO123456789| A RES that is sent from a client (via UDP) indicating a response with the file name "ubuntu.iso" (and its path within the share), where the file sise is 42 bytes. The token "123456789" is used. The TR field indicate the hash of the file (see the TIGR extension). +|CRES FN/share/linux/ubuntu.iso SI42 |A RES that is sent from a client indicating a response with the file name "ubuntu.iso" (and its path within the share), where the file sise is 42 bytes. +|===== + +==== CTM +[options="header"] +|===== +|Example |Description +|DCTM BBBB CCCC ADC/1.0 6666 123456789 |A CTM that is sent from a client to another client indicating that it wants to have a client to client connection. The protocol "ADC/1.0" is used. The port 6666 is used. The token is 123456789. The hub should only send this to the target user (with SID CCCC). +|ECTM BBBB CCCC ADC/0.5 6666 123456789 |A CTM that is sent from a client to another client indicating that it wants to have a client to client connection. The (fictional) protocol "ADC/1.0" is used. The port 6666 is used. The token is 123456789. The hub should send this to the target user (with SID CCCC) and to the originating party (with SID BBBB). +|===== + +==== RCM +[options="header"] +|===== +|Example |Description +|DRCM BBBB CCCC ADC/1.0 123456789 |A RCM that is sent from a client to another client indicating that it wants to have a client to client connection. The protocol "ADC/1.0" is used. TThe token is 123456789. The hub should only send this to the target user (with SID CCCC). +|ERCM BBBB CCCC ADC/0.5 123456789 |A RCM that is sent from a client to another client indicating that it wants to have a client to client connection. The (fictional) protocol "ADC/0.5" is used. TThe token is 123456789. The hub should send this to the target user (with SID CCCC) and to the originating party (with SID BBBB). +|===== + +==== GPA +[options="header"] +|===== +|Example |Description +|IGPA JJWEPPPLCA3PF2ZCRRYO3333 |A GPA that is sent from the hub indicating the password-response sequence with the random data JJWEPPPLCA3PF2ZCRRYO3333. +|===== + +==== PAS +[options="header"] +|===== +|Example |Description +|HPAS YO4F2ZX2EV2JMW2KCIIYYYYY |A PAS that is sent from the client where the password and random data is hashed. +|===== + +==== QUI +[options="header"] +|===== +|Example |Description +|IQUI BBBB |A QUI that is sent from the hub indicating that the client BBBB has disconnected. +|IQUI BBBB IDCCCC MSCats\sare\horrible DI1 TL-1 |A QUI that is sent from the hub indicating that the client BBBB has disconnected. The originator of the action is the client with the SID CCCC. The message "Cats are horrible" is included. All clients should terminate their connections with the client BBBB (DI1). The client should never attempt to reconnect (TL-1). +|===== + +==== GET +[options="header"] +|===== +|Example |Description +|CGET file TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII 0 -1 |A GET that is sent from a client as a request for a file with the identifier TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII (see TIGR extension). The sending client should send the entire file. +|CGET list /share/ 0 -1 RE1 |A GET that is sent from a client as a request for a directory with the identifier /share/. The sending client should send the directory and its subdirectories. +|CGET file TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII 6666 3333 |A GET that is sent from a client as a request for a file with the identifier TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII (see TIGR extension). The sending client should send the next 3333 bytes, starting at byte position 6666. +|===== + +==== GFI +[options="header"] +|===== +|Example |Description +|CGFI file TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII |A GFI that is sent from a client as a request for file information for a file with the identifier TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII (see TIGR extension). +|CGFI list /share/ |A GFI that is sent from a client as a request for directory information with the identifier /share/. +|===== + +==== SND +[options="header"] +|===== +|Example |Description +|CSND file TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII 0 9999 |A SND that is sent from a client prior to streaming data for the file with the identifier TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII (see TIGR extension). The sending client indicates that it will send 9999 bytes and start streaming at the byte position 0 (the beginning of the file). +|CSND list /share/ 0 66 |A SND that is sent from a client prior to streaming data for the directory with the identifier /share/. The sending client indicates that it will send 66 bytes. +|CSND file TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII 6666 3333 |A SND that is sent from a client prior to streaming data for the file with the identifier TTH/IPPPWEPPPLCA3PF2ZCRRYO4F2ZX2EV2JMW2KCII (see TIGR extension). The sending client indicates that it will send 3333 bytes and start streaming at the byte position 6666. +|===== + == Terminology [options="autowidth,header"] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-01-31 18:49:13
|
Revision: 95 http://adc.svn.sourceforge.net/adc/?rev=95&view=rev Author: ullner Date: 2013-01-31 18:49:07 +0000 (Thu, 31 Jan 2013) Log Message: ----------- Misspelling; it's 1.0.2 Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2013-01-31 18:45:29 UTC (rev 94) +++ trunk/ADC.txt 2013-01-31 18:49:07 UTC (rev 95) @@ -25,7 +25,7 @@ $URL$. This version corresponds to $Revision$. -=== Version 1.0.3, 2013-01-31 +=== Version 1.0.2, 2013-01-31 Fredrik Ullner <ul...@gm...> * Editorial updates This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-01-31 18:45:38
|
Revision: 94 http://adc.svn.sourceforge.net/adc/?rev=94&view=rev Author: ullner Date: 2013-01-31 18:45:29 +0000 (Thu, 31 Jan 2013) Log Message: ----------- ADC is now at 1.0.3. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2013-01-14 19:00:40 UTC (rev 93) +++ trunk/ADC.txt 2013-01-31 18:45:29 UTC (rev 94) @@ -1,6 +1,6 @@ = ADC Protocol Fredrik Ullner <ul...@gm...> -1.0.2, November 2012 +1.0.2, January 2013 == Abstract ADC is a text protocol for a client-server network similar to Neo-Modus' @@ -14,9 +14,9 @@ this structure. ADC stands for anything you would like it to stand for; Advanced Direct Connect is the first neutral thing that springs to mind =). -Many ideas for the protocol come from Jan Vidar Krey's DCTNG draft. Major -contributors include Dustin Brody, Walter Doekes, Timmo Stange, Fredrik -Ullner, Fredrik Stenberg and others. Jon Hess contributed the original Direct +Many ideas for the protocol come from Jan Vidar Krey's DCTNG draft. Major +contributors include Dustin Brody, Walter Doekes, Timmo Stange, Fredrik +Ullner, Fredrik Stenberg and others. Jon Hess contributed the original Direct Connect idea through the Neo-Modus Direct Connect client / hub. == Version history @@ -25,7 +25,7 @@ $URL$. This version corresponds to $Revision$. -=== Version 1.0.2, UNRELEASED +=== Version 1.0.3, 2013-01-31 Fredrik Ullner <ul...@gm...> * Editorial updates @@ -114,7 +114,7 @@ message type only to aid in parsing the message and otherwise ignore it. The following message types are defined: -[options="autowidth"] +[options="autowidth"] |===== |B |Broadcast |Hub must send message to all connected clients, including the sender of the message. |C |Client message |Clients must use this message type when communicating directly over TCP. @@ -328,7 +328,7 @@ clients may support using the message in additional contexts as well. The context codes are as follows: -[options="autowidth"] +[options="autowidth"] |===== |F |From hub (hub-client TCP) |T |To hub (hub-client TCP) @@ -342,73 +342,73 @@ In the descriptions of the commands, the message header and trailing named parameters have been omitted. -=== State management - -ADC defines a state machine to control flow and processing of messages. The receiving end must ensure, according to the state machine, that it does not parse or drop messages while it is in the process of another state where the message might be invalid. - -[options="autowidth, header"] -|===== -|State |Description -|PROTOCOL |Feature support recovery -|IDENTIFY |User identification and static checks -|VERIFY |Password check (does not exist in C-C communication unless announced by an extension) -|NORMAL |Normal operation (end state) -|DATA |Binary transfers. The state changes back to NORMAL once the transfer is complete. -|===== - -The states presented are the login order, from top to bottom. - -==== States -===== PROTOCOL -When the hub receives a SUP, it should reply with its own SUP followed by SID assignment. The hub transitions the state then to IDENTIFY. - -When the server party receives a SUP in the client-client connection, it should reply with its own SUP. The server transitions the state then to IDENTIFY. - -===== IDENTIFY -The hub may initiate this state by sending its own INF in this state but is not required. The client should send its INF whereupon the hub shall verify the PD and ID fields and other required fields. The hub transitions the state then to VERIFY if the user is registered or NORMAL if not. - -The client party in the client-client connection shall send its INF whereupon the server party shall send its INF. The server transitions the state then to NORMAL (or VERIFY if an extension implements this). - -===== VERIFY -The hub shall send a GPA whereupon the client will respond with a PAS. The server transitions the state then to NORMAL. - -Client-client support for VERIFY must be signaled as an extension. - -===== NORMAL -The hub should send its INF if not done already. The server shall send the INF of all connected clients whereupon the connecting client's INF shall be last. Normal operation may then commence with chatting and file sharing. - -Normal operation may commence immediately in a client-client connection. Typically, the downloading party sends a GET whereupon the other party sends a SND followed by a transition to the DATA state. - -===== DATA -The DATA state is an actual binary transfer state, it does not have any commands or other content beyond streaming data. - -The DATA state exist only in the client-client communication, an extension can be used to add binary transfers between a client and a hub. The DATA state commence after a SND command. - -The state transitions back to NORMAL once the correct amount of bytes are transferred (specified by a previous command). - -==== Notes -State always transitions from PROTOCOL to IDENTIFY and never from IDENTIFY to PROTOCOL. Likewise apply between IDENTIFY, VERIFY and NORMAL. This does not apply between NORMAL and DATA. - -Successful commands sent after a state transition indicate that the next state has been reached. For example, PROTOCOL begins a connection and state changes to IDENTIFY once the hub sends the SID. - -The state is shared between the client and the server while the server (implicitly) controls state transitions. - -The connecting party is known as the client and the other is known as the server (or hub). The client initiates the connection and state machine by sending its own SUP. - -A STA is valid in all states (except DATA) and may require that messages are resent (i.e. that the state transition does not occur). - -It is always the client party in a client-client connection that sent the connection request (CTM/RCM) command that is given control of the connection once the NORMAL state has been reached. - -Any party may disconnect the connection if they receive invalid data or insufficient data. All implementations must therefore be prepared for a potential disconnection following each command, meaning that the following state is not achieved. A disconnection should be preceded by a STA or a QUI to indicate what was wrong. - -The hub's INF is optionally sent in IDENTIFY or in NORMAL. - -[options="autowidth, header"] -|===== -|State |Commands -|PROTOCOL |STA, SUP, SID -|IDENTIFY |STA, INF, QUI -|VERIFY |STA, GPA, PAS, QUI +=== State management + +ADC defines a state machine to control flow and processing of messages. The receiving end must ensure, according to the state machine, that it does not parse or drop messages while it is in the process of another state where the message might be invalid. + +[options="autowidth, header"] +|===== +|State |Description +|PROTOCOL |Feature support recovery +|IDENTIFY |User identification and static checks +|VERIFY |Password check (does not exist in C-C communication unless announced by an extension) +|NORMAL |Normal operation (end state) +|DATA |Binary transfers. The state changes back to NORMAL once the transfer is complete. +|===== + +The states presented are the login order, from top to bottom. + +==== States +===== PROTOCOL +When the hub receives a SUP, it should reply with its own SUP followed by SID assignment. The hub transitions the state then to IDENTIFY. + +When the server party receives a SUP in the client-client connection, it should reply with its own SUP. The server transitions the state then to IDENTIFY. + +===== IDENTIFY +The hub may initiate this state by sending its own INF in this state but is not required. The client should send its INF whereupon the hub shall verify the PD and ID fields and other required fields. The hub transitions the state then to VERIFY if the user is registered or NORMAL if not. + +The client party in the client-client connection shall send its INF whereupon the server party shall send its INF. The server transitions the state then to NORMAL (or VERIFY if an extension implements this). + +===== VERIFY +The hub shall send a GPA whereupon the client will respond with a PAS. The server transitions the state then to NORMAL. + +Client-client support for VERIFY must be signaled as an extension. + +===== NORMAL +The hub should send its INF if not done already. The server shall send the INF of all connected clients whereupon the connecting client's INF shall be last. Normal operation may then commence with chatting and file sharing. + +Normal operation may commence immediately in a client-client connection. Typically, the downloading party sends a GET whereupon the other party sends a SND followed by a transition to the DATA state. + +===== DATA +The DATA state is an actual binary transfer state, it does not have any commands or other content beyond streaming data. + +The DATA state exist only in the client-client communication, an extension can be used to add binary transfers between a client and a hub. The DATA state commence after a SND command. + +The state transitions back to NORMAL once the correct amount of bytes are transferred (specified by a previous command). + +==== Notes +State always transitions from PROTOCOL to IDENTIFY and never from IDENTIFY to PROTOCOL. Likewise apply between IDENTIFY, VERIFY and NORMAL. This does not apply between NORMAL and DATA. + +Successful commands sent after a state transition indicate that the next state has been reached. For example, PROTOCOL begins a connection and state changes to IDENTIFY once the hub sends the SID. + +The state is shared between the client and the server while the server (implicitly) controls state transitions. + +The connecting party is known as the client and the other is known as the server (or hub). The client initiates the connection and state machine by sending its own SUP. + +A STA is valid in all states (except DATA) and may require that messages are resent (i.e. that the state transition does not occur). + +It is always the client party in a client-client connection that sent the connection request (CTM/RCM) command that is given control of the connection once the NORMAL state has been reached. + +Any party may disconnect the connection if they receive invalid data or insufficient data. All implementations must therefore be prepared for a potential disconnection following each command, meaning that the following state is not achieved. A disconnection should be preceded by a STA or a QUI to indicate what was wrong. + +The hub's INF is optionally sent in IDENTIFY or in NORMAL. + +[options="autowidth, header"] +|===== +|State |Commands +|PROTOCOL |STA, SUP, SID +|IDENTIFY |STA, INF, QUI +|VERIFY |STA, GPA, PAS, QUI |NORMAL |STA, SUP, INF, MSG, SCH, RES, CTM, RCM, QUI, GET, GFI, SND |===== @@ -426,7 +426,7 @@ Severity values: -[options="autowidth"] +[options="autowidth"] |===== |0 |Success (used for confirming commands), error code must be "00", and an additional flag "FC" contains the FOURCC of the command being confirmed if applicable. |1 |Recoverable (error but no disconnect) @@ -435,7 +435,7 @@ Error codes: -[options="autowidth"] +[options="autowidth"] |===== |00 |Generic, show description |x0 |Same as 00, but categorized according to the rough structure set below @@ -528,7 +528,7 @@ Fields: -[options="autowidth,header"] +[options="autowidth,header"] |===== |Code |Type |Description |ID |base32 |The CID of the client. Mandatory for C-C connections. @@ -579,7 +579,7 @@ Flags: -[options="autowidth"] +[options="autowidth"] |===== |PM<group-SID> |Private message, <group-SID> is the SID clients must send responses to. This field must contain the originating SID if this is a normal private conversation. |ME |Speak in third person, 1 = message should be displayed as /me in IRC ("*nick text") @@ -598,7 +598,7 @@ unless no known fields are present in which case the client must ignore the search. -[options="autowidth"] +[options="autowidth"] |===== |AN, NO, EX |String search term, where AN is include (and), NO is exclude (and not), and EX is extension. Each filename (including the path to it) should be matched using case insensitive substring search as follows: match all AN, remove those that match any NO, and make sure the extension matches at least one of the EX (if it is present). Extensions must be sent without the leading period (\'.'). |LE |Smaller (less) than or equal size in bytes @@ -624,7 +624,7 @@ encouraged to supply additional fields if available. Passive results should be limited to 5 and active to 10. -[options="autowidth"] +[options="autowidth"] |===== |FN |Full filename including path in share |SI |Size, in bytes @@ -693,7 +693,7 @@ The following flags may be present: -[options="autowidth"] +[options="autowidth"] |===== |ID |SID of the initiator of the disconnect (for example the one that issued a kick). |TL |Time Left until reconnect is allowed, in seconds. -1 = forever. @@ -761,7 +761,7 @@ == Examples === Client – Hub connection -[options="autowidth,header"] +[options="autowidth,header"] |===== |Client |Hub |HSUP ADBASE ADTIGR ...| @@ -778,7 +778,7 @@ === Client – Client connection -[options="autowidth,header"] +[options="autowidth,header"] |===== |Client |Server |CSUP ADBASE ADTIGR ... | @@ -795,9 +795,9 @@ [options="autowidth,header"] |===== |Term |Description -|FOURCC |Four character code. This may be the message type followed by the command, e.g. "ISTA", "BMSG" etc. This may also be the name of a feature (BASE, TIGR etc). Any four character identification. -|Server |The hub is the 'server' in a client - hub context. The client receiving the incoming connection is the 'server' in a client - client context. -|Base32 |An encoding used by the protocol, see RFC 4648 for more information about Base32. Note that the Base32 implementation in ADC is never padded. +|FOURCC |Four character code. This may be the message type followed by the command, e.g. "ISTA", "BMSG" etc. This may also be the name of a feature (BASE, TIGR etc). Any four character identification. +|Server |The hub is the 'server' in a client - hub context. The client receiving the incoming connection is the 'server' in a client - client context. +|Base32 |An encoding used by the protocol, see RFC 4648 for more information about Base32. Note that the Base32 implementation in ADC is never padded. |Context |When a command states a context, e.g. "T" (To hub), it defines an expectance on the flow of traffic. A context may refer to one or multiple message types. For example, for the context 'T', the message types "B", "C", "D", "E", "F" and "H" are valid. Note that the context is not a restriction in any way, implementations may further extend a command's expected contexts. |===== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2013-01-14 19:00:53
|
Revision: 93 http://adc.svn.sourceforge.net/adc/?rev=93&view=rev Author: ullner Date: 2013-01-14 19:00:40 +0000 (Mon, 14 Jan 2013) Log Message: ----------- ADC.txt: * State management is now its own section. * The client in a client-client connection should send its INF first now. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2012-12-27 23:31:00 UTC (rev 92) +++ trunk/ADC.txt 2013-01-14 19:00:40 UTC (rev 93) @@ -31,6 +31,8 @@ * Editorial updates * Added a terminology section * Added note in STA, severity 2 (Fatal), on responsibility. +* State management is now its own section. +* The client in a client-client connection should send its INF first now. === Version 1.0.1, 2008-05-02 Jacek Sieka <arn...@gm...> @@ -319,8 +321,7 @@ ADC clients/hubs that support the following messages may advertise the feature "BASE" in the PROTOCOL phase. -The connecting party will be known as client, the other as server. The server -always controls state transitions. For each message, the action code and the +The connecting party will be known as client, the other as server. For each message, the action code and the message contexts under which it is valid are specified. The message context specifies how the message may be received / sent. Hubs and @@ -341,27 +342,83 @@ In the descriptions of the commands, the message header and trailing named parameters have been omitted. -=== Client – Hub communication -During login, the client goes through a number of stages. An action is valid -only in the NORMAL stage unless otherwise noted. The stages, in login order, -are PROTOCOL (feature support discovery), IDENTIFY (user identification, -static checks), VERIFY (password check), NORMAL (normal operation), and DATA -(for binary transfers). +=== State management + +ADC defines a state machine to control flow and processing of messages. The receiving end must ensure, according to the state machine, that it does not parse or drop messages while it is in the process of another state where the message might be invalid. + +[options="autowidth, header"] +|===== +|State |Description +|PROTOCOL |Feature support recovery +|IDENTIFY |User identification and static checks +|VERIFY |Password check (does not exist in C-C communication unless announced by an extension) +|NORMAL |Normal operation (end state) +|DATA |Binary transfers. The state changes back to NORMAL once the transfer is complete. +|===== + +The states presented are the login order, from top to bottom. + +==== States +===== PROTOCOL +When the hub receives a SUP, it should reply with its own SUP followed by SID assignment. The hub transitions the state then to IDENTIFY. + +When the server party receives a SUP in the client-client connection, it should reply with its own SUP. The server transitions the state then to IDENTIFY. + +===== IDENTIFY +The hub may initiate this state by sending its own INF in this state but is not required. The client should send its INF whereupon the hub shall verify the PD and ID fields and other required fields. The hub transitions the state then to VERIFY if the user is registered or NORMAL if not. + +The client party in the client-client connection shall send its INF whereupon the server party shall send its INF. The server transitions the state then to NORMAL (or VERIFY if an extension implements this). + +===== VERIFY +The hub shall send a GPA whereupon the client will respond with a PAS. The server transitions the state then to NORMAL. + +Client-client support for VERIFY must be signaled as an extension. + +===== NORMAL +The hub should send its INF if not done already. The server shall send the INF of all connected clients whereupon the connecting client's INF shall be last. Normal operation may then commence with chatting and file sharing. + +Normal operation may commence immediately in a client-client connection. Typically, the downloading party sends a GET whereupon the other party sends a SND followed by a transition to the DATA state. + +===== DATA +The DATA state is an actual binary transfer state, it does not have any commands or other content beyond streaming data. + +The DATA state exist only in the client-client communication, an extension can be used to add binary transfers between a client and a hub. The DATA state commence after a SND command. + +The state transitions back to NORMAL once the correct amount of bytes are transferred (specified by a previous command). + +==== Notes +State always transitions from PROTOCOL to IDENTIFY and never from IDENTIFY to PROTOCOL. Likewise apply between IDENTIFY, VERIFY and NORMAL. This does not apply between NORMAL and DATA. + +Successful commands sent after a state transition indicate that the next state has been reached. For example, PROTOCOL begins a connection and state changes to IDENTIFY once the hub sends the SID. + +The state is shared between the client and the server while the server (implicitly) controls state transitions. + +The connecting party is known as the client and the other is known as the server (or hub). The client initiates the connection and state machine by sending its own SUP. + +A STA is valid in all states (except DATA) and may require that messages are resent (i.e. that the state transition does not occur). + +It is always the client party in a client-client connection that sent the connection request (CTM/RCM) command that is given control of the connection once the NORMAL state has been reached. + +Any party may disconnect the connection if they receive invalid data or insufficient data. All implementations must therefore be prepared for a potential disconnection following each command, meaning that the following state is not achieved. A disconnection should be preceded by a STA or a QUI to indicate what was wrong. + +The hub's INF is optionally sent in IDENTIFY or in NORMAL. + +[options="autowidth, header"] +|===== +|State |Commands +|PROTOCOL |STA, SUP, SID +|IDENTIFY |STA, INF, QUI +|VERIFY |STA, GPA, PAS, QUI +|NORMAL |STA, SUP, INF, MSG, SCH, RES, CTM, RCM, QUI, GET, GFI, SND +|===== -=== Client – Client communication -The client – client protocol use the same stages as client – hub, but clients -are not required to support the VERIFY state and GPA/PAS commands. Support for -VERIFY/GPA/PAS must be advertised as an extension. It is always the client -that sends the first CTM/RCM command that is given control of the connection -once the NORMAL state has been reached. - === Actions ==== STA STA code description Contexts: F, T, C, U -States: All +States: PROTOCOL, IDENTIFY, VERIFY, NORMAL Status code in the form "xyy" where x specifies severity and yy the specific error code. The severity and error code are treated separately, the same error @@ -437,14 +494,6 @@ This command can also be used to dynamically add / remove features, 'AD' meaning add and 'RM' meaning remove. -When the hub receives this message in PROTOCOL state, it should reply in kind, -assign a SID to the client, optionally send an INF about itself, and move to -the IDENTIFY state. - -When the server receives this message in a client-client connection in the -PROTOCOL state, it should reply in kind, send an INF about itself, and move to -the IDENTIFY state. - ==== SID SID sid @@ -452,9 +501,7 @@ States: PROTOCOL -This command assigns a SID to a user who is currently logging on. The hub must -send this command after SUP but before INF in the PROTOCOL state. The client, -when it receives it, should send an INF about itself. +This command assigns a SID to a user who is currently logging on. ==== INF INF @@ -517,22 +564,16 @@ domain (IPv4 or IPv6) to be specified. If you fail to do this, your hub can be used as a medium for DDoS attacks. -When a hub receives this message in the IDENTIFY state, it should verify the -PD and ID fields, and proceed to the VERIFY state by sending a PAS request or -NORMAL state by sending its own INF (unless it already did so previously), -then the INF of all connected clients in NORMAL state, and last the INF of the -connecting client. When the hub sends an INF about itself, the NI becomes hub +When the hub sends an INF about itself, the NI becomes hub name, the VE the hub version, and DE the hub description. -When the server receives this during client-client communication in IDENTIFY -state, it should verify the ID and TO fields, send an INF about itself and -pass to the NORMAL state. - ==== MSG MSG text Contexts: F, T +States: NORMAL + A chat message. The receiving clients should precede it with "<" nick ">", to allow for uniform message displays. @@ -549,6 +590,8 @@ Contexts: F, T, C, (U) +States: NORMAL + Search. Each parameter is an operator followed by a term. Each term is a two-letter code followed by the data to search for. Clients must ignore any unknown fields and complete the search request as if they were not present, @@ -574,6 +617,8 @@ Contexts: F, T, C, U +States: NORMAL + Search result, made up of fields syntactically and structurally similar to the INF ones. Clients must provide filename, session hash, size and token, but are encouraged to supply additional fields if available. Passive results should be @@ -592,6 +637,8 @@ Contexts: F, T +States: NORMAL + Connect to me. Used by active clients that want to connect to someone, or in response to RCM. Only TCP active clients may send this. <token> is a string that identifies the incoming connection triggered by this command and must be @@ -608,6 +655,8 @@ Contexts: F, T +States: NORMAL + Reverse CTM. Used by passive clients to request a connection token from an active client. @@ -629,7 +678,6 @@ Password. The password (utf-8 encoded bytes), followed by the random data (binary), passed through the session hash algorithm then converted to base32. -When validated, this transitions the server into NORMAL state. ==== QUI QUI sid @@ -659,6 +707,8 @@ Contexts: C +States: NORMAL + Requests that a certain file or binary data be transmitted. <start_pos> counts 0 as the first byte. <bytes> may be set to -1 to indicate that the sending client should fill it in with the number of bytes needed to complete the file @@ -689,6 +739,8 @@ Contexts: C +States: NORMAL + Get File Information. Requests that the other client returns a RES about the file as if it had responded to a SCH command. Type and identifier are the same as for GET, but the identifier may come from any namespace, including the @@ -699,8 +751,9 @@ Contexts: C -Transitions to DATA state. The sender will transmit until <bytes> bytes of -binary data have been sent and then will transition back to NORMAL state. The +States: NORMAL + +The sender will transmit until <bytes> bytes of binary data have been sent. The parameters correspond to the GET parameters except that if <bytes> equals -1 it must be replaced by the number of bytes needed to complete the file starting at <start_pos>. @@ -730,8 +783,8 @@ |Client |Server |CSUP ADBASE ADTIGR ... | | |CSUP ADBASE ADTIGR ... +|CINF IDxxx TO<token> | | |CINF IDxxx -|CINF IDxxx TO<token> | | |CGET ... |CSND ... | |<data> | This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-12-27 23:31:13
|
Revision: 92 http://adc.svn.sourceforge.net/adc/?rev=92&view=rev Author: ullner Date: 2012-12-27 23:31:00 +0000 (Thu, 27 Dec 2012) Log Message: ----------- Adding only the test cases in XML form (for automatic management) Added Paths: ----------- trunk/ADC-Testcases.xml Added: trunk/ADC-Testcases.xml =================================================================== --- trunk/ADC-Testcases.xml (rev 0) +++ trunk/ADC-Testcases.xml 2012-12-27 23:31:00 UTC (rev 92) @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><adctestcases><tc Name="Too short random data" Expected="Client sends a STA indicating that the GPA is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives random data in the GPA that is too short (less than 24 bytes)" Command="GPA"><step Info="Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client B sends "INF BBBB ..."" /><step Info="The server sends "GPA A" (1 byte)" /></tc><tc Name="Invalid characters in random data" Expected="Client sends a STA indicating that the GPA is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives random data in the GPA that contain invalid characters (1 for instance)" Command="GPA"><step Info="Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client B sends "INF BBBB ..."" /><step Info="The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAA1" (24 bytes)" /></tc><tc Name="Valid random data" Expected="" PostCondition="" PreCondition="" Purpose="" Command="GPA" /><tc Name="Empty GPA" Expected="" PostCondition="" PreCondition="" Purpose="" Command="GPA" /><tc Name="ID and PD fields present and matching" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="ID and PD fields present and mismatching" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Only ID field present" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Only PD field present" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Neither ID or PD fields present" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in ID field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in PD field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in NI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in DE field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid IP in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid IP in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Wrong IP in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Wrong IP in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="DNS in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="DNS in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Zero address in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Zero address in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Correct address in I4 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Correct address in I6 field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Too long FOURCC in SU field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Too short FOURCC in SU field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid FOURCC in SU field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid formatting of SU field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Empty INF" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Underflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Negative out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="0 value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Overflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW " Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Positive out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="Invalid characters in fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW" Expected="" PostCondition="" PreCondition="" Purpose="" Command="INF" /><tc Name="A basic MSG with no named parameters" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="A basic MSG with ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="A basic MSG with PM field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="A basic MSG with ME and PM fields" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Negative out-of-bounds value in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Underflow value in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="0 Value in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Empty ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Overflow value in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Postive out-of-bounds value in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Invalid characters in ME field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Empty PM" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Too short SID value in PM field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Too long SID value in PM field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Invalid characters SID value in PM field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Non-existing SID value in PM field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="MSG in PROTOCOL state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="MSG in IDENTIFY state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="MSG in VERIFY state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="MSG in NORMAL state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="MSG" /><tc Name="Invalid response based on the GPA" Expected="Server sends a STA indicating that the PAS is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives a response that does not match the request." Command="PAS"><step Info="Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client B sends "INF BBBB ..."" /><step Info="The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes)" /><step Info="The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBBB"" /></tc><tc Name="Invalid characters in response" Expected="Server sends a STA indicating that the PAS is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives a response that contain invalid characters (1 for instance)" Command="PAS"><step Info="Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client B sends "INF BBBB ..."" /><step Info="The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes)" /><step Info="The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBB1" (last byte is invalid)" /></tc><tc Name="Valid response" Expected="" PostCondition="" PreCondition="" Purpose="" Command="PAS" /><tc Name="Empty PAS" Expected="" PostCondition="" PreCondition="" Purpose="" Command="PAS" /><tc Name="Too short SID" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Too long SID" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Invalid characters in SID" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="No client with the specified SID" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Too short ID field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Too long ID field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Invalid characters in ID field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="No client with the specified SID in the ID field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Negative out-of-bounds value in TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Underflow TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Overflow TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="-1 (forever) in TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="120 second value in TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Invalid characters in TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Empty TL field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name=""example" in MS field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Empty MS field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Negative out-of-bounds value in DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Underflow DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Overflow DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="0 as value in DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="1 as value in DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Invalid characters in DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Empty DI field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Empty RD field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="QUI in PROTOCOL state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="QUI in IDENTIFY state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="QUI in VERIFY state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="QUI in NORMAL state" Expected="" PostCondition="" PreCondition="" Purpose="" Command="QUI" /><tc Name="Underflow fields LE, GE, EQ, TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Negative out-of-range value for fields LE, GE, EQ, TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="0 value for fields LE, GE, EQ, TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Overflow fields LE, GE, EQ, TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Positive out-of-range value for TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Invalid characters in fields LE, GE, EQ, TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Combination of LE and EQ fields with conflicting values" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Combination of GE and EQ fields with conflicting values" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Combination of LE, GE and EQ fields with conflicting values" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Valid AN field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Valid NO field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Only NO field" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Combination of AN and NO fields with conflicting values" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Invalid characters in field EX" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty AN" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty NO" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty EX" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty LE" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty GE" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty EQ" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty TO" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Empty TY" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SCH" /><tc Name="Too short SID from hub" Expected="Client sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives an SID that is too short (less than 4 characters)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBB"" /></tc><tc Name="Too long SID from hub" Expected="Client sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives an SID that is too long (longer than 4 characters)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBBB"" /></tc><tc Name="Invalid characters in SID from hub" Expected="Client sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives an SID that contain invalid characters (1 for instance)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBB1"" /></tc><tc Name="Too short SID from client in INF" Expected="Server sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives an SID that is too short (less than 4 characters)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client sends "INF BBB ..."" /></tc><tc Name="Too long SID from client in INF" Expected="Server sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives an SID that is too long (longer than 4 characters)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client sends "INF BBBBB ..."" /></tc><tc Name="Invalid characters in SID from client" Expected="Server sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives an SID that contain invalid characters (1 for instance)" Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client sends "INF BBB1 ..."" /></tc><tc Name="Non-assigned SID from client" Expected="Server sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives an SID that it didn't assign a client." Command="SID"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="The client sends "INF CCCC ..."" /></tc><tc Name="Assigned SID from another client" Expected="Server sends a STA indicating that the SID is invalid and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives an SID that was already assigned to another a client." Command="SID"><step Info="Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID BBBB"" /><step Info="Continue with normal communication until NORMAL is reached and stabalized" /><step Info="Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server sends "SID CCCC"" /><step Info="Client B sends "INF BBBB ..."" /></tc><tc Name="Valid SID assignment" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SID" /><tc Name="Valid SID use" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SID" /><tc Name="No SID from server" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SID" /><tc Name="Invalid BASE version from server" Expected="Client sends a STA indicating lack of support for BASE and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it receives BAS2 instead of BASE." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ..."" /><step Info="The server responds with "SUP ADBAS2 ..."" /></tc><tc Name="Invalid BASE version from client" Expected="Server sends a STA indicating lack of support for BASE and disconnects" PostCondition="" PreCondition="" Purpose="Validate what a server does when it receives BAS2 instead of BASE" Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBAS2 ..."" /></tc><tc Name="Lack of overlapping hash support from server" Expected="Client sends a STA indicating no overlapping hash support and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when it does not receive overlapping hashes." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE"" /></tc><tc Name="Lack of overlapping hash support from client" Expected="Server sends a STA indicating no overlapping hash support and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when it does not receive overlapping hashes." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE"" /></tc><tc Name="Remove BASE support in NORMAL from server" Expected="Client sends a STA indicating lack of support for BASE and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when the BASE support is removed during NORMAL state." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="Continue with normal communication until NORMAL is reached and stabalized" /><step Info="The server sends "SUP RMBASE"" /></tc><tc Name="Remove BASE support in NORMAL from client" Expected="Server sends a STA indicating lack of support for BASE and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when the BASE support is removed during NORMAL state." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="Continue with normal communication until NORMAL is reached and stabalized" /><step Info="The client sends "SUP RMBASE"" /></tc><tc Name="Remove hash support in NORMAL from server" Expected="Client sends a STA indicating lack of support for TIGR and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a client does when the hash support is removed during NORMAL state." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="Continue with normal communication until NORMAL is reached and stabalized" /><step Info="The server sends "SUP RMTIGR"" /></tc><tc Name="Remove hash support in NORMAL from client" Expected="Server sends a STA indicating lack of support for TIGR and disconnects." PostCondition="" PreCondition="" Purpose="Validate what a server does when the hash support is removed during NORMAL state." Command="SUP"><step Info="Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR"" /><step Info="The server responds with "SUP ADBASE ADTIGR"" /><step Info="Continue with normal communication until NORMAL is reached and stabalized" /><step Info="The client sends "SUP RMTIGR"" /></tc><tc Name="No SUP content from client" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SUP" /><tc Name="No SUP content from server" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SUP" /><tc Name="Valid SUP sequence from server" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SUP" /><tc Name="Valid SUP sequence from client" Expected="" PostCondition="" PreCondition="" Purpose="" Command="SUP" /></adctestcases> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-12-27 23:23:43
|
Revision: 91 http://adc.svn.sourceforge.net/adc/?rev=91&view=rev Author: ullner Date: 2012-12-27 23:23:36 +0000 (Thu, 27 Dec 2012) Log Message: ----------- Added a rudimentary test spec Modified Paths: -------------- trunk/ADC-EXT.conf trunk/ADC.conf Added Paths: ----------- trunk/ADC-Test.conf trunk/ADC-Test.txt Removed Paths: ------------- trunk/Source/cpp/Microsoft Visual Studio/AssemblyInfo.cpp Modified: trunk/ADC-EXT.conf =================================================================== --- trunk/ADC-EXT.conf 2012-11-22 21:01:03 UTC (rev 90) +++ trunk/ADC-EXT.conf 2012-12-27 23:23:36 UTC (rev 91) @@ -1,6 +1,7 @@ [attributes] numbered toc +toclevels=4 frame="all" grid="all" Added: trunk/ADC-Test.conf =================================================================== --- trunk/ADC-Test.conf (rev 0) +++ trunk/ADC-Test.conf 2012-12-27 23:23:36 UTC (rev 91) @@ -0,0 +1,9 @@ +[attributes] +numbered +toc +toclevels=4 +frame="all" +grid="all" + +[tabledef-default] +colspec= Added: trunk/ADC-Test.txt =================================================================== --- trunk/ADC-Test.txt (rev 0) +++ trunk/ADC-Test.txt 2012-12-27 23:23:36 UTC (rev 91) @@ -0,0 +1,1101 @@ +== ADC Test specification +Fredrik Ullner <ul...@gm...> +1.0.0, December 2012 + +== Abstract +These is the official test specification for ADC. + +This document describes the different circumstances that may arise and what implementations may be aware that others are sending and how they are processing the information. + +The 'server' in this document may describe the server party in a client-hub connection as well as in a client-client connection. + +== Version history +The latest draft of the next version of this document as well as intermediate +and older versions can be downloaded from +$URL: https://adc.svn.sourceforge.net/svnroot/adc/trunk/ADC-Test.txt $. + +This version corresponds to $Revision: 90 $. + +=== Version 1.0 +Fredrik Ullner <ul...@gm...>, 2012-12-27 + +* Initial release. + +== Tests + +=== GPA + +==== Too short random data +Purpose: Validate what a client does when it receives random data in the GPA that is too short (less than 24 bytes) + +Expected: Client sends a STA indicating that the GPA is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client B sends "INF BBBB ..." | +|5 |The server sends "GPA A" (1 byte) | +|===== +Result: +|===== +| +|===== + +==== Invalid characters in random data +Purpose: Validate what a client does when it receives random data in the GPA that contain invalid characters (1 for instance) + +Expected: Client sends a STA indicating that the GPA is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client B sends "INF BBBB ..." | +|5 |The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAA1" (24 bytes) | +|===== +Result: +|===== +| +|===== + +==== Valid random data +Result: +|===== +| +|===== + +==== Empty GPA +Result: +|===== +| +|===== + +=== INF + +==== ID and PD fields present and matching +Result: +|===== +| +|===== + +==== ID and PD fields present and mismatching +Result: +|===== +| +|===== + +==== Only ID field present +Result: +|===== +| +|===== + +==== Only PD field present +Result: +|===== +| +|===== + +==== Neither ID or PD fields present +Result: +|===== +| +|===== + +==== Invalid characters in ID field +Result: +|===== +| +|===== + +==== Invalid characters in PD field +Result: +|===== +| +|===== + +==== Invalid characters in NI field +Result: +|===== +| +|===== + +==== Invalid characters in DE field +Result: +|===== +| +|===== + +==== Invalid characters in I4 field +Result: +|===== +| +|===== + +==== Invalid characters in I6 field +Result: +|===== +| +|===== + +==== Invalid IP in I4 field +Result: +|===== +| +|===== + +==== Invalid IP in I6 field +Result: +|===== +| +|===== + +==== Wrong IP in I4 field +Result: +|===== +| +|===== + +==== Wrong IP in I6 field +Result: +|===== +| +|===== + +==== DNS in I4 field +Result: +|===== +| +|===== + +==== DNS in I6 field +Result: +|===== +| +|===== + +==== Zero address in I4 field +Result: +|===== +| +|===== + +==== Zero address in I6 field +Result: +|===== +| +|===== + +==== Correct address in I4 field +Result: +|===== +| +|===== + +==== Correct address in I6 field +Result: +|===== +| +|===== + +==== Too long FOURCC in SU field +Result: +|===== +| +|===== + +==== Too short FOURCC in SU field +Result: +|===== +| +|===== + +==== Invalid FOURCC in SU field +Result: +|===== +| +|===== + +==== Invalid formatting of SU field +Result: +|===== +| +|===== + +==== Empty INF +Result: +|===== +| +|===== + +==== Underflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +==== Negative out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +==== 0 value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +==== Overflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +==== Positive out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +==== Invalid characters in fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW +Result: +|===== +| +|===== + +=== MSG + +==== A basic MSG with no named parameters +Result: +|===== +| +|===== + +==== A basic MSG with ME field +Result: +|===== +| +|===== + +==== A basic MSG with PM field +Result: +|===== +| +|===== + +==== A basic MSG with ME and PM fields +Result: +|===== +| +|===== + +==== Negative out-of-bounds value in ME field +Result: +|===== +| +|===== + +==== Underflow value in ME field +Result: +|===== +| +|===== + +==== 0 Value in ME field +Result: +|===== +| +|===== + +==== Empty ME field +Result: +|===== +| +|===== + +==== Overflow value in ME field +Result: +|===== +| +|===== + +==== Postive out-of-bounds value in ME field +Result: +|===== +| +|===== + +==== Invalid characters in ME field +Result: +|===== +| +|===== + +==== Empty PM +Result: +|===== +| +|===== + +==== Too short SID value in PM field +Result: +|===== +| +|===== + +==== Too long SID value in PM field +Result: +|===== +| +|===== + +==== Invalid characters SID value in PM field +Result: +|===== +| +|===== + +==== Non-existing SID value in PM field +Result: +|===== +| +|===== + +==== MSG in PROTOCOL state +Result: +|===== +| +|===== + +==== MSG in IDENTIFY state +Result: +|===== +| +|===== + +==== MSG in VERIFY state +Result: +|===== +| +|===== + +==== MSG in NORMAL state +Result: +|===== +| +|===== + +=== PAS + +==== Invalid response based on the GPA +Purpose: Validate what a server does when it receives a response that does not match the request. + +Expected: Server sends a STA indicating that the PAS is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client B sends "INF BBBB ..." | +|5 |The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes) | +|6 |The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBBB" | +|===== +Result: +|===== +| +|===== + +==== Invalid characters in response +Purpose: Validate what a server does when it receives a response that contain invalid characters (1 for instance) + +Expected: Server sends a STA indicating that the PAS is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client B sends "INF BBBB ..." | +|5 |The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes) | +|6 |The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBB1" (last byte is invalid) | +|===== +Result: +|===== +| +|===== + +==== Valid response +Result: +|===== +| +|===== + +==== Empty PAS +Result: +|===== +| +|===== + +=== QUI + +==== Too short SID +Result: +|===== +| +|===== + +==== Too long SID +Result: +|===== +| +|===== + +==== Invalid characters in SID +Result: +|===== +| +|===== + +==== No client with the specified SID +Result: +|===== +| +|===== + +==== Too short ID field +Result: +|===== +| +|===== + +==== Too long ID field +Result: +|===== +| +|===== + +==== Invalid characters in ID field +Result: +|===== +| +|===== + +==== No client with the specified SID in the ID field +Result: +|===== +| +|===== + +==== Negative out-of-bounds value in TL field +Result: +|===== +| +|===== + +==== Underflow TL field +Result: +|===== +| +|===== + +==== Overflow TL field +Result: +|===== +| +|===== + +==== -1 (forever) in TL field +Result: +|===== +| +|===== + +==== 120 second value in TL field +Result: +|===== +| +|===== + +==== Invalid characters in TL field +Result: +|===== +| +|===== + +==== Empty TL field +Result: +|===== +| +|===== + +==== "example" in MS field +Result: +|===== +| +|===== + +==== Empty MS field +Result: +|===== +| +|===== + +==== Negative out-of-bounds value in DI field +Result: +|===== +| +|===== + +==== Underflow DI field +Result: +|===== +| +|===== + +==== Overflow DI field +Result: +|===== +| +|===== + +==== 0 as value in DI field +Result: +|===== +| +|===== + +==== 1 as value in DI field +Result: +|===== +| +|===== + +==== Invalid characters in DI field +Result: +|===== +| +|===== + +==== Empty DI field +Result: +|===== +| +|===== + +==== Empty RD field +Result: +|===== +| +|===== + +==== QUI in PROTOCOL state +Result: +|===== +| +|===== + +==== QUI in IDENTIFY state +Result: +|===== +| +|===== + +==== QUI in VERIFY state +Result: +|===== +| +|===== + +==== QUI in NORMAL state +Result: +|===== +| +|===== + +=== SCH + +==== Underflow fields LE, GE, EQ, TY +Result: +|===== +| +|===== + +==== Negative out-of-range value for fields LE, GE, EQ, TY +Result: +|===== +| +|===== + +==== 0 value for fields LE, GE, EQ, TY +Result: +|===== +| +|===== + +==== Overflow fields LE, GE, EQ, TY +Result: +|===== +| +|===== + +==== Positive out-of-range value for TY +Result: +|===== +| +|===== + +==== Invalid characters in fields LE, GE, EQ, TY +Result: +|===== +| +|===== + +==== Combination of LE and EQ fields with conflicting values +Result: +|===== +| +|===== + +==== Combination of GE and EQ fields with conflicting values +Result: +|===== +| +|===== + +==== Combination of LE, GE and EQ fields with conflicting values +Result: +|===== +| +|===== + +==== Valid AN field +Result: +|===== +| +|===== + +==== Valid NO field +Result: +|===== +| +|===== + +==== Only NO field +Result: +|===== +| +|===== + +==== Combination of AN and NO fields with conflicting values +Result: +|===== +| +|===== + +==== Invalid characters in field EX +Result: +|===== +| +|===== + +==== Empty AN +Result: +|===== +| +|===== + +==== Empty NO +Result: +|===== +| +|===== + +==== Empty EX +Result: +|===== +| +|===== + +==== Empty LE +Result: +|===== +| +|===== + +==== Empty GE +Result: +|===== +| +|===== + +==== Empty EQ +Result: +|===== +| +|===== + +==== Empty TO +Result: +|===== +| +|===== + +==== Empty TY +Result: +|===== +| +|===== + +=== SID + +==== Too short SID from hub +Purpose: Validate what a client does when it receives an SID that is too short (less than 4 characters) + +Expected: Client sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBB" | +|===== +Result: +|===== +| +|===== + +==== Too long SID from hub +Purpose: Validate what a client does when it receives an SID that is too long (longer than 4 characters) + +Expected: Client sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBBB" | +|===== +Result: +|===== +| +|===== + +==== Invalid characters in SID from hub +Purpose: Validate what a client does when it receives an SID that contain invalid characters (1 for instance) + +Expected: Client sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBB1" | +|===== +Result: +|===== +| +|===== + +==== Too short SID from client in INF +Purpose: Validate what a server does when it receives an SID that is too short (less than 4 characters) + +Expected: Server sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client sends "INF BBB ..." | +|===== +Result: +|===== +| +|===== + +==== Too long SID from client in INF +Purpose: Validate what a server does when it receives an SID that is too long (longer than 4 characters) + +Expected: Server sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client sends "INF BBBBB ..." | +|===== +Result: +|===== +| +|===== + +==== Invalid characters in SID from client +Purpose: Validate what a server does when it receives an SID that contain invalid characters (1 for instance) + +Expected: Server sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client sends "INF BBB1 ..." | +|===== +Result: +|===== +| +|===== + +==== Non-assigned SID from client +Purpose: Validate what a server does when it receives an SID that it didn't assign a client. + +Expected: Server sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |The client sends "INF CCCC ..." | +|===== +Result: +|===== +| +|===== + +==== Assigned SID from another client +Purpose: Validate what a server does when it receives an SID that was already assigned to another a client. + +Expected: Server sends a STA indicating that the SID is invalid and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |The server sends "SID BBBB" | +|4 |Continue with normal communication until NORMAL is reached and stabalized | +|5 |Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|6 |The server sends "SID CCCC" | +|7 |Client B sends "INF BBBB ..." | +|===== +Result: +|===== +| +|===== + +==== Valid SID assignment +Result: +|===== +| +|===== + +==== Valid SID use +Result: +|===== +| +|===== + +==== No SID from server +Result: +|===== +| +|===== + +=== SUP + +==== Invalid BASE version from server +Purpose: Validate what a client does when it receives BAS2 instead of BASE. + +Expected: Client sends a STA indicating lack of support for BASE and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ..." | +|2 |The server responds with "SUP ADBAS2 ..." | +|===== +Result: +|===== +| +|===== + +==== Invalid BASE version from client +Purpose: Validate what a server does when it receives BAS2 instead of BASE + +Expected: Server sends a STA indicating lack of support for BASE and disconnects + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBAS2 ..." | +|===== +Result: +|===== +| +|===== + +==== Lack of overlapping hash support from server +Purpose: Validate what a client does when it does not receive overlapping hashes. + +Expected: Client sends a STA indicating no overlapping hash support and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE" | +|===== +Result: +|===== +| +|===== + +==== Lack of overlapping hash support from client +Purpose: Validate what a server does when it does not receive overlapping hashes. + +Expected: Server sends a STA indicating no overlapping hash support and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE" | +|===== +Result: +|===== +| +|===== + +==== Remove BASE support in NORMAL from server +Purpose: Validate what a client does when the BASE support is removed during NORMAL state. + +Expected: Client sends a STA indicating lack of support for BASE and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |Continue with normal communication until NORMAL is reached and stabalized | +|4 |The server sends "SUP RMBASE" | +|===== +Result: +|===== +| +|===== + +==== Remove BASE support in NORMAL from client +Purpose: Validate what a server does when the BASE support is removed during NORMAL state. + +Expected: Server sends a STA indicating lack of support for BASE and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |Continue with normal communication until NORMAL is reached and stabalized | +|4 |The client sends "SUP RMBASE" | +|===== +Result: +|===== +| +|===== + +==== Remove hash support in NORMAL from server +Purpose: Validate what a client does when the hash support is removed during NORMAL state. + +Expected: Client sends a STA indicating lack of support for TIGR and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |Continue with normal communication until NORMAL is reached and stabalized | +|4 |The server sends "SUP RMTIGR" | +|===== +Result: +|===== +| +|===== + +==== Remove hash support in NORMAL from client +Purpose: Validate what a server does when the hash support is removed during NORMAL state. + +Expected: Server sends a STA indicating lack of support for TIGR and disconnects. + +Steps: +[options="autowidth, header"] +|===== +|Step item |Info |Comment +|1 |Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | +|2 |The server responds with "SUP ADBASE ADTIGR" | +|3 |Continue with normal communication until NORMAL is reached and stabalized | +|4 |The client sends "SUP RMTIGR" | +|===== +Result: +|===== +| +|===== + +==== No SUP content from client +Result: +|===== +| +|===== + +==== No SUP content from server +Result: +|===== +| +|===== + +==== Valid SUP sequence from server +Result: +|===== +| +|===== + +==== Valid SUP sequence from client +Result: +|===== +| +|===== + Modified: trunk/ADC.conf =================================================================== --- trunk/ADC.conf 2012-11-22 21:01:03 UTC (rev 90) +++ trunk/ADC.conf 2012-12-27 23:23:36 UTC (rev 91) @@ -1,6 +1,7 @@ [attributes] numbered toc +toclevels=4 frame="all" grid="all" Deleted: trunk/Source/cpp/Microsoft Visual Studio/AssemblyInfo.cpp =================================================================== --- trunk/Source/cpp/Microsoft Visual Studio/AssemblyInfo.cpp 2012-11-22 21:01:03 UTC (rev 90) +++ trunk/Source/cpp/Microsoft Visual Studio/AssemblyInfo.cpp 2012-12-27 23:23:36 UTC (rev 91) @@ -1,40 +0,0 @@ -#include "stdafx.h" - -using namespace System; -using namespace System::Reflection; -using namespace System::Runtime::CompilerServices; -using namespace System::Runtime::InteropServices; -using namespace System::Security::Permissions; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly:AssemblyTitleAttribute("ADCLibrary")]; -[assembly:AssemblyDescriptionAttribute("")]; -[assembly:AssemblyConfigurationAttribute("")]; -[assembly:AssemblyCompanyAttribute("Microsoft")]; -[assembly:AssemblyProductAttribute("ADCLibrary")]; -[assembly:AssemblyCopyrightAttribute("Copyright (c) Microsoft 2010")]; -[assembly:AssemblyTrademarkAttribute("")]; -[assembly:AssemblyCultureAttribute("")]; - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the value or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly:AssemblyVersionAttribute("1.0.*")]; - -[assembly:ComVisible(false)]; - -[assembly:CLSCompliantAttribute(true)]; - -[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-11-22 21:01:13
|
Revision: 90 http://adc.svn.sourceforge.net/adc/?rev=90&view=rev Author: ullner Date: 2012-11-22 21:01:03 +0000 (Thu, 22 Nov 2012) Log Message: ----------- Pushing ADC-Ext to 1.0.7 Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2012-11-20 20:47:54 UTC (rev 89) +++ trunk/ADC-EXT.txt 2012-11-22 21:01:03 UTC (rev 90) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.7, UNRELASED +1.0.7, November 2012 == Abstract These are the official extensions to ADC. This document is based on the @@ -68,7 +68,7 @@ * Added 'ADCS' extension for encryption in ADC. === Version 1.0.7 -Fredrik Ullner <ul...@gm...>, UNRELASED +Fredrik Ullner <ul...@gm...>, 2012-11-22 * Added application and version separation in INF * TIGR should now correctly reference SCH and RES This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-11-20 20:48:00
|
Revision: 89 http://adc.svn.sourceforge.net/adc/?rev=89&view=rev Author: ullner Date: 2012-11-20 20:47:54 +0000 (Tue, 20 Nov 2012) Log Message: ----------- * Added a terminology section * Added note in STA, severity 2 (Fatal), on responsibility. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2012-08-17 17:01:17 UTC (rev 88) +++ trunk/ADC.txt 2012-11-20 20:47:54 UTC (rev 89) @@ -1,6 +1,6 @@ = ADC Protocol Fredrik Ullner <ul...@gm...> -1.0.2, March 2011 +1.0.2, November 2012 == Abstract ADC is a text protocol for a client-server network similar to Neo-Modus' @@ -29,6 +29,8 @@ Fredrik Ullner <ul...@gm...> * Editorial updates +* Added a terminology section +* Added note in STA, severity 2 (Fatal), on responsibility. === Version 1.0.1, 2008-05-02 Jacek Sieka <arn...@gm...> @@ -371,7 +373,7 @@ |===== |0 |Success (used for confirming commands), error code must be "00", and an additional flag "FC" contains the FOURCC of the command being confirmed if applicable. |1 |Recoverable (error but no disconnect) -|2 |Fatal (disconnect) +|2 |Fatal (disconnect), sending party is responsible for action. |===== Error codes: @@ -735,6 +737,17 @@ |<data> | |===== +== Terminology + +[options="autowidth,header"] +|===== +|Term |Description +|FOURCC |Four character code. This may be the message type followed by the command, e.g. "ISTA", "BMSG" etc. This may also be the name of a feature (BASE, TIGR etc). Any four character identification. +|Server |The hub is the 'server' in a client - hub context. The client receiving the incoming connection is the 'server' in a client - client context. +|Base32 |An encoding used by the protocol, see RFC 4648 for more information about Base32. Note that the Base32 implementation in ADC is never padded. +|Context |When a command states a context, e.g. "T" (To hub), it defines an expectance on the flow of traffic. A context may refer to one or multiple message types. For example, for the context 'T', the message types "B", "C", "D", "E", "F" and "H" are valid. Note that the context is not a restriction in any way, implementations may further extend a command's expected contexts. +|===== + == Standard Extensions Apart from supporting BASE, clients may opt to implement one or more of the This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-08-17 17:01:23
|
Revision: 88 http://adc.svn.sourceforge.net/adc/?rev=88&view=rev Author: ullner Date: 2012-08-17 17:01:17 +0000 (Fri, 17 Aug 2012) Log Message: ----------- Fixed error in KEYP generation script. Modified Paths: -------------- trunk/Source/scripts/keyp_keyprint_generation.sh Modified: trunk/Source/scripts/keyp_keyprint_generation.sh =================================================================== --- trunk/Source/scripts/keyp_keyprint_generation.sh 2012-08-17 16:37:03 UTC (rev 87) +++ trunk/Source/scripts/keyp_keyprint_generation.sh 2012-08-17 17:01:17 UTC (rev 88) @@ -1,3 +1,3 @@ #!/bin/sh -openssl x509 -noout -fingerprint -sha256 < "$1" | cut -d '=' -f 2 | tr -d ":" | python -c "import sys; import base64; print base64.b32encode(base64.b16decode(sys.stdin.readline()))" | tr -d "=" \ No newline at end of file +openssl x509 -noout -fingerprint -sha256 < "$1" | cut -d '=' -f 2 | tr -dc "[A-F][0-9]" | python -c "import sys; import base64; print base64.b32encode(base64.b16decode(sys.stdin.readline()))" | tr -d "=" \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-08-17 16:37:09
|
Revision: 87 http://adc.svn.sourceforge.net/adc/?rev=87&view=rev Author: ullner Date: 2012-08-17 16:37:03 +0000 (Fri, 17 Aug 2012) Log Message: ----------- Added keyprint generation (for KEYP) based on OpenSSL and Python. Modified Paths: -------------- trunk/Source/Python/bloom.py Added Paths: ----------- trunk/Source/scripts/ trunk/Source/scripts/keyp_keyprint_generation.sh trunk/Source/scripts/keyp_keyprint_generation_readme.txt Modified: trunk/Source/Python/bloom.py =================================================================== --- trunk/Source/Python/bloom.py 2012-07-16 19:55:49 UTC (rev 86) +++ trunk/Source/Python/bloom.py 2012-08-17 16:37:03 UTC (rev 87) @@ -1,5 +1,5 @@ from math import log, ceil -import base64, sys +import sys import base32 try: from bitarray import bitarray Added: trunk/Source/scripts/keyp_keyprint_generation.sh =================================================================== --- trunk/Source/scripts/keyp_keyprint_generation.sh (rev 0) +++ trunk/Source/scripts/keyp_keyprint_generation.sh 2012-08-17 16:37:03 UTC (rev 87) @@ -0,0 +1,3 @@ +#!/bin/sh + +openssl x509 -noout -fingerprint -sha256 < "$1" | cut -d '=' -f 2 | tr -d ":" | python -c "import sys; import base64; print base64.b32encode(base64.b16decode(sys.stdin.readline()))" | tr -d "=" \ No newline at end of file Added: trunk/Source/scripts/keyp_keyprint_generation_readme.txt =================================================================== --- trunk/Source/scripts/keyp_keyprint_generation_readme.txt (rev 0) +++ trunk/Source/scripts/keyp_keyprint_generation_readme.txt 2012-08-17 16:37:03 UTC (rev 87) @@ -0,0 +1,13 @@ +This bash script generates a keyprint of a particular certificate in Linux, as used in the KEYP extension. + +The script uses OpenSSL, filters all the verbosity OpenSSL adds and then uses Python to encode it into Base32. + +The script first calls OpenSSL to get the fingerprint then remove the verbosity and the colons convert with Python and remove any padding. + +How to use: +./keyp_keyprint_generation.sh file + +Where 'file' is the name and path of the certificate file. + +Example: +./keyp_keyprint_generation.sh /etc/adchpp/certs/cacert.pem \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-07-16 19:55:55
|
Revision: 86 http://adc.svn.sourceforge.net/adc/?rev=86&view=rev Author: ullner Date: 2012-07-16 19:55:49 +0000 (Mon, 16 Jul 2012) Log Message: ----------- Removing Base32 conversion from bloom.py; see base32.py Modified Paths: -------------- trunk/Source/Python/bloom.py Modified: trunk/Source/Python/bloom.py =================================================================== --- trunk/Source/Python/bloom.py 2012-07-16 19:54:18 UTC (rev 85) +++ trunk/Source/Python/bloom.py 2012-07-16 19:55:49 UTC (rev 86) @@ -1,5 +1,6 @@ from math import log, ceil import base64, sys +import base32 try: from bitarray import bitarray except ImportError: @@ -9,19 +10,6 @@ """ HASH_BITS = 192 -def toBase32(s): - """Returns a base32 encoded string, stripped from padding""" - return base64.b32encode(s).strip('=') - -def fromBase32(base32): - """Padds a base32 string and returns it decoded""" - quanta, leftover = divmod(len(base32), 8) - if leftover: - base32+='='*(8-leftover) - try: - return base64.b32decode(base32) - except TypeError, e: - print str(e)+' %s size: %d'% ( base32, len(base32)) class HashBloom(object): @staticmethod @@ -97,7 +85,7 @@ bit = start+i byte = bit/ 8 pos = bit % 8 - if ord(fromBase32(str(tth))[byte]) & (1 << pos): + if ord(base32.fromBase32(str(tth))[byte]) & (1 << pos): x |= (1 << i) return x % len(self.bitarray) @@ -110,7 +98,7 @@ hb.reset(k,m,h) for tth in tths: hb.add(tth) - ok_ctrl = (ctrl == toBase32(hb.bitarray.tostring())) + ok_ctrl = (ctrl == base32.toBase32(hb.bitarray.tostring())) ok_match = hb.match(tths[0]) return ok_ctrl , ok_match This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2012-07-16 19:54:25
|
Revision: 85 http://adc.svn.sourceforge.net/adc/?rev=85&view=rev Author: ullner Date: 2012-07-16 19:54:18 +0000 (Mon, 16 Jul 2012) Log Message: ----------- Adding Bloom filter file for Python. Added Paths: ----------- trunk/Source/Python/bloom.py Added: trunk/Source/Python/bloom.py =================================================================== --- trunk/Source/Python/bloom.py (rev 0) +++ trunk/Source/Python/bloom.py 2012-07-16 19:54:18 UTC (rev 85) @@ -0,0 +1,165 @@ +from math import log, ceil +import base64, sys +try: + from bitarray import bitarray +except ImportError: + print """ + Bitarray module required. + http://pypi.python.org/pypi/bitarray/ + """ + +HASH_BITS = 192 +def toBase32(s): + """Returns a base32 encoded string, stripped from padding""" + return base64.b32encode(s).strip('=') + +def fromBase32(base32): + """Padds a base32 string and returns it decoded""" + quanta, leftover = divmod(len(base32), 8) + if leftover: + base32+='='*(8-leftover) + try: + return base64.b32decode(base32) + except TypeError, e: + print str(e)+' %s size: %d'% ( base32, len(base32)) + +class HashBloom(object): + @staticmethod + def get_k(_n, _h): + """get_k(n, h), get largest possible k""" + _k = HASH_BITS/_h + while _k > 1: + m = HashBloom.get_m(_n, _k) + if m >> _h == 0: + return _k + _k -= 1 + return 1 + + @staticmethod + def get_m(_n, _k): + """get_m(n,k), m = int(ceil((_n * _k) /log(2))), return int(m+64-(m%64))""" + m = int(ceil((_n * _k) /log(2))) + return int(m+64-(m%64)) + + def __init__(self, data=None): + self.k = 0 + self.h = 0 + self.bitarray = bitarray(0) + if data: self.add(data) + + def add(self, tth): + """add(tth), adds tth value to bloomfilter""" + for i in range(0, self.k): + self.bitarray[self._pos(tth, i)] = 1 + + def __len__(self): + return len(self.bitarray) + + def __str__(self): + return self.bitarray.tostring() + + def __contains__(self, tth): + """__contains__(tth), check if tth exists in bloomfliter""" + if len(self.bitarray) == 0: + return False + for i in range(0, self.k): + if not self.bitarray[self._pos(tth, i)]: + return False + return True + + def reset(self, k, m, h): + """reset(k, m, h) , k, h, and resize bitarray to len(m)""" + self.bitarray = bitarray(m*[0],endian=sys.byteorder) + self.k = k + self.h = h + + def dataReset(self, data, k, h): + """reset(data, k, h) , k, h, and resize bitarray to len(data) and set data to bitarray""" + self.k = k + self.h = h + self.bitarray = bitarray(len(data)*8*[0],endian=sys.byteorder) + + for i in range(0, len(data)): + for j in range(0,7): + self.bitarray[i*8+j] = (((ord(data[i]) >> j) & 1) != 0) + + def match(self, tth): + """match(tth), same as __contains__""" + return self.__contains__(tth) + + + def _pos(self, tth, n): + if (n+1)*self.h > HASH_BITS: + return 0 + x=0 + start = n*self.h + for i in range(0, self.h): + bit = start+i + byte = bit/ 8 + pos = bit % 8 + if ord(fromBase32(str(tth))[byte]) & (1 << pos): + x |= (1 << i) + return x % len(self.bitarray) + + + + + +def testBloomVectors(k, m, h, tths, ctrl): + hb=HashBloom() + hb.reset(k,m,h) + for tth in tths: + hb.add(tth) + ok_ctrl = (ctrl == toBase32(hb.bitarray.tostring())) + ok_match = hb.match(tths[0]) + + return ok_ctrl , ok_match + +testvalues = ( +(8, 1024, 24, ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(8, 1024, 24, ('BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(8, 1024, 24, ('QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(8, 1024, 24, ('BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA','QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), 'AEAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(8, 1024, 24, ('UDRJ6EGCH3CGWIIU2V6CH7VLFN4N2PCZKSPTBQA',), 'AAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAA'), +(2, 1024, 64, ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(2, 1024, 64, ('BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(2, 1024, 64, ('QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(2, 1024, 64, ('BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA','QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',), 'AEAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +(2, 1024, 64, ('UDRJ6EGCH3CGWIIU2V6CH7VLFN4N2PCZKSPTBQA',), 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'), +) + +def calculateProbability(k, n, m, h): + return ((1.0 - (1.0 - 1.0 / m)**(k * n))**k) + + +if __name__ == '__main__': + print "Preforming %d bloomfilter creation tests" % len(testvalues) + for n,args in enumerate(testvalues): + ok_ctrl, ok_match = testBloomVectors(*args) + print "%d of %d tests complete, bloom creation = %s, bloom match = %s" % (n+1, len(testvalues),str(ok_ctrl), str(ok_match)) + print + print + print "Calculating of probable false positives" + + print + h=24 + kstr='[h=%d]\t\t|\t'%h + print '-'*174 + for i in range(1,9): + kstr += "[k=%d]\t|\t" % i + print kstr + print '-'*174 + for n in [500, 2500, 5000, 10000, 20*1000, 50*1000, 100*1000, 150*1000, 200*1000, 250*1000, 500*1000]: + sep = '' + if n < 99999: + sep='\t' + line = "[n=%d]%s\t|"%(n, sep)#+sep + for k in range(1,9): + m = HashBloom.get_m(n,k) + p= calculateProbability(k, n, m, h) + #line+= ("\t\t%.2f%%" % (100-p*100)) + line+= "\t%.5f%%\t|" % (p) + print line + print '-'*174 + + print m/8 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <co...@us...> - 2012-02-26 13:26:42
|
Revision: 84 http://adc.svn.sourceforge.net/adc/?rev=84&view=rev Author: cologic Date: 2012-02-26 13:26:36 +0000 (Sun, 26 Feb 2012) Log Message: ----------- update dead THEX reference Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-07-19 19:01:44 UTC (rev 83) +++ trunk/ADC-EXT.txt 2012-02-26 13:26:36 UTC (rev 84) @@ -86,7 +86,8 @@ ==== TIGR for shared files All files shared by TIGR supporting clients must have been hashed using Merkle Hash trees, as defined by -http://www.open-content.net/specs/draft-jchapweske-thex-02.html. The Tiger +http://web.archive.org/web/20080316033726/http://www.open-content.net/specs/draft-jchapweske-thex-02.html. +The Tiger algorithm, as specified by http://www.cs.technion.ac.il/~biham/Reports/Tiger/, functions as the hash algorithm. A base segment size of 1024 bytes must be used when generating the tree, but clients may then discard parts of the tree This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-07-19 19:01:50
|
Revision: 83 http://adc.svn.sourceforge.net/adc/?rev=83&view=rev Author: ullner Date: 2011-07-19 19:01:44 +0000 (Tue, 19 Jul 2011) Log Message: ----------- Revised: * TIGR should now correctly reference SCH and RES Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-07-19 18:57:44 UTC (rev 82) +++ trunk/ADC-EXT.txt 2011-07-19 19:01:44 UTC (rev 83) @@ -71,6 +71,7 @@ Fredrik Ullner <ul...@gm...>, UNRELASED * Added application and version separation in INF +* TIGR should now correctly reference SCH and RES == Extensions @@ -117,7 +118,7 @@ In the GET/GFI namespace, files are identified by "TTH/<base32-encoded tree root>". -In SCH and GFI, the following attributes are added: +In SCH and RES, the following attributes are added: [options="autowidth"] |===== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-07-19 18:57:50
|
Revision: 82 http://adc.svn.sourceforge.net/adc/?rev=82&view=rev Author: ullner Date: 2011-07-19 18:57:44 +0000 (Tue, 19 Jul 2011) Log Message: ----------- Pushing: * Added application vs version INF field Modified Paths: -------------- trunk/ADC-EXT.txt Modified: trunk/ADC-EXT.txt =================================================================== --- trunk/ADC-EXT.txt 2011-05-01 16:48:20 UTC (rev 81) +++ trunk/ADC-EXT.txt 2011-07-19 18:57:44 UTC (rev 82) @@ -1,6 +1,6 @@ = ADC Extensions Fredrik Ullner <ul...@gm...> -1.0.6, November 2010 +1.0.7, UNRELASED == Abstract These are the official extensions to ADC. This document is based on the @@ -67,6 +67,11 @@ * Added free slots to the client's INF. * Added 'ADCS' extension for encryption in ADC. +=== Version 1.0.7 +Fredrik Ullner <ul...@gm...>, UNRELASED + +* Added application and version separation in INF + == Extensions === TIGR - Tiger tree hash support @@ -729,4 +734,12 @@ ==== Client-Client encryption TLS client-client connections can be established either by negotiating the feature "ADCS" on connection or by specifying "ADCS/1.0" in the CTM protocol field. Clients supporting encrypted connections must indicate this in the INF SU field with "ADCS". +=== Application and version separation in INF +This extension adds the parameter 'AP' to the INF to signal application. The current parameter in BASE, VE, will be used for version signalling. + +Example: +==== +BINF BBBB APDCPLUSPLUS VE0.782 +==== + // vim: set syntax=asciidoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <co...@us...> - 2011-05-01 16:48:29
|
Revision: 81 http://adc.svn.sourceforge.net/adc/?rev=81&view=rev Author: cologic Date: 2011-05-01 16:48:20 +0000 (Sun, 01 May 2011) Log Message: ----------- filelist compression data - times in seconds and sizes in bytes; benchmarked on Athlon XP 3000+ with 1GiB RAM with each recorded time being average of three passes/trials Added Paths: ----------- trunk/Data/ trunk/Data/filelist_compression_stats.csv Added: trunk/Data/filelist_compression_stats.csv =================================================================== --- trunk/Data/filelist_compression_stats.csv (rev 0) +++ trunk/Data/filelist_compression_stats.csv 2011-05-01 16:48:20 UTC (rev 81) @@ -0,0 +1,442 @@ +filelist_name,raw_size,raw_time,status_quo_size,status_quo_time,zlib_1_size,zlib_1_time,zlib_2_size,zlib_2_time,zlib_3_size,zlib_3_time,zlib_4_size,zlib_4_time,zlib_5_size,zlib_5_time,zlib_6_size,zlib_6_time,zlib_7_size,zlib_7_time,zlib_8_size,zlib_8_time,zlib_9_size,zlib_9_time,bzip2_1_size,bzip2_1_time,bzip2_2_size,bzip2_2_time,bzip2_3_size,bzip2_3_time,bzip2_4_size,bzip2_4_time,bzip2_5_size,bzip2_5_time,bzip2_6_size,bzip2_6_time,bzip2_7_size,bzip2_7_time,bzip2_8_size,bzip2_8_time,bzip2_9_size,bzip2_9_time,xmill_zlib_1_size,xmill_zlib_1_time,xmill_zlib_2_size,xmill_zlib_2_time,xmill_zlib_3_size,xmill_zlib_3_time,xmill_zlib_4_size,xmill_zlib_4_time,xmill_zlib_5_size,xmill_zlib_5_time,xmill_zlib_6_size,xmill_zlib_6_time,xmill_zlib_7_size,xmill_zlib_7_time,xmill_zlib_8_size,xmill_zlib_8_time,xmill_zlib_9_size,xmill_zlib_9_time,xmill_bzip2_size,xmill_bzip2_time,xz_1_size,xz_1_time,xz_2_size,xz_2_time,xz_3_size,xz_3_time,xz_4_size,xz_4_time,xz_5_size,xz_5_time,xz_6_size,xz_6_time,xz_7_size,xz_7_time,xz_8_size,xz_8_time,xz_e_1_size,xz_e_1_time,xz_e_2_size,xz_e_2_time,xz_e_3_size,xz_e_3_time,xz_e_4_size,xz_e_4_time,xz_e_5_size,xz_e_5_time,xz_e_6_size,xz_e_6_time,xz_e_7_size,xz_e_7_time,xz_e_8_size,xz_e_8_time,freearc_1x_size,freearc_1x_time,freearc_2x_size,freearc_2x_time,freearc_3x_size,freearc_3x_time,freearc_4x_size,freearc_4x_time,freearc_5x_size,freearc_5x_time,freearc_6x_size,freearc_6x_time,freearc_7x_size,freearc_7x_time,freearc_1_size,freearc_1_time,freearc_2_size,freearc_2_time,freearc_3_size,freearc_3_time,freearc_4_size,freearc_4_time,freearc_5_size,freearc_5_time,freearc_6_size,freearc_6_time,freearc_7_size,freearc_7_time,freearc_1p_size,freearc_1p_time,freearc_2p_size,freearc_2p_time,freearc_3p_size,freearc_3p_time,freearc_4p_size,freearc_4p_time,freearc_5p_size,freearc_5p_time,freearc_6p_size,freearc_6p_time,freearc_7p_size,freearc_7p_time +000_xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,774846,2.94049580892e-06,149298,0.320546627045,202379,0.0219677289327,198698,0.0233430067698,197034,0.0276079972585,183960,0.0381546020508,180485,0.0467802683512,179337,0.054438273112,175602,0.0723567008972,174373,0.209499359131,174365,0.216056982676,148077,0.197772264481,147175,0.216589689255,144131,0.239694356918,148085,0.250199000041,148613,0.252986987432,147395,0.275221347809,148919,0.297709306081,149298,0.319360335668,149298,0.319961309433,167484,0.0870903333028,165296,0.0853882630666,163304,0.0922070344289,156737,0.0994696617126,154247,0.109131018321,153828,0.11887105306,153728,0.125381946564,153563,0.155710935593,153531,0.181461016337,145330,0.315423647563,164128,0.137547969818,161092,0.186474005381,138100,0.75394765536,138008,0.760622262955,138008,0.769928057988,135304,0.931524038315,135304,0.960902690887,135304,1.01619664828,138476,0.908256371816,134412,1.03365365664,134428,1.05384532611,134428,1.0593966643,134428,1.06962831815,134428,1.08751765887,134428,1.12271602949,134428,1.17362236977,194611,0.243354320526,179980,0.161780277888,157239,0.220878998439,137670,0.60712369283,135565,0.947413682938,135565,0.948897043864,135565,0.947313308716,194611,0.111738681793,179984,0.160984992981,157158,0.222250302633,137618,0.610136985779,135573,0.92624036471,135573,0.925248702367,135573,0.927621603012,194546,0.109342654546,179984,0.160152673721,157158,0.220906734467,137618,0.605671326319,135573,0.925549666087,135573,0.925876696905,135573,0.924132664998 +001_[xxx]xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,2047857,3.01996866862e-06,604077,0.900238355001,879790,0.0918837388357,867822,0.0958460172017,857787,0.103806336721,830815,0.13935303688,817121,0.153830687205,813236,0.176768700282,805409,0.212560653687,803619,0.29495493571,803619,0.296939611435,715628,0.531868298848,685037,0.582950671514,667826,0.637436628342,664226,0.687947670619,605104,0.766395012538,625149,0.787899335225,639230,0.833364009857,631975,0.848079999288,604077,0.892976681391,731469,0.233284314473,723930,0.238076368968,717999,0.248043378194,694471,0.286958058675,688452,0.314381996791,685834,0.335695664088,685337,0.35099196434,684192,0.429426987966,684067,0.435384988785,573945,2.71811334292,797036,0.5328810215,628376,0.688145001729,530460,1.87827761968,529824,1.89598099391,529824,1.91724832853,523476,2.21901901563,523476,2.26000666618,523476,2.33668804169,709088,2.09964068731,540980,2.88008300463,518680,3.0128780206,518224,3.06024694443,518224,3.09185703595,518224,3.12596599261,518224,3.17007931074,518224,3.25306598345,739003,0.167335351308,620690,0.349125941594,578105,0.653886000315,541301,1.37325994174,520928,2.68483130137,520928,2.68359239896,520928,2.68100237846,739003,0.162065664927,620481,0.361099322637,577631,0.662985642751,540881,1.38493998845,520625,2.65213004748,520625,2.65479969978,520625,2.65732733409,735950,0.17781329155,620481,0.361686309179,577631,0.662488698959,540881,1.383740743,520625,2.65893332163,520625,2.65234732628,520625,2.65064795812 +002_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,347724,3.33786010742e-06,106488,0.115678707759,136984,0.0136956373851,135729,0.0142270723979,134768,0.015645980835,129606,0.0209777355194,127442,0.0233213106791,127169,0.0274773438772,125490,0.0324529806773,124991,0.0464516480764,124989,0.0467813014984,109844,0.093868970871,107621,0.0991679827372,107665,0.10950533549,106488,0.115153710047,106488,0.115700006485,106488,0.115068991979,106488,0.115150690079,106488,0.115323066711,106488,0.1154414018,120235,0.0406490166982,119375,0.0390246709188,118791,0.0422790050507,114738,0.0466143290202,113515,0.0513016382853,113278,0.0544450283051,113127,0.059911330541,113019,0.0710559686025,113013,0.0723086198171,104889,0.136927684148,124876,0.0836836496989,125840,0.11304696401,111388,0.271945635478,111388,0.273438294729,111388,0.282167673111,109992,0.374687671661,109992,0.405155022939,109992,0.458964347839,110308,0.3664346536,109616,0.399827003479,109616,0.399704297384,109616,0.401116371155,109616,0.409697294235,109616,0.427466630936,109616,0.456047614415,109616,0.511140028636,132326,0.109560330709,129282,0.139511028926,118201,0.169546683629,112119,0.274736960729,110002,0.433820327123,110002,0.432137648265,110002,0.433096647263,132326,0.103939294815,129320,0.135115305583,118228,0.168946027756,112245,0.275566339493,109994,0.430828332901,109994,0.430592616399,109994,0.430630366007,132369,0.0969839890798,129320,0.133703390757,118228,0.167534987132,112245,0.27205602328,109994,0.427640040716,109994,0.428720315297,109994,0.429585695267 +003_[xxx]xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,886285,3.33786010742e-06,307847,0.383380651474,409143,0.0416696866353,403667,0.0437072912852,398560,0.0472643375397,388296,0.0623416105906,382700,0.0697037378947,380989,0.0800369580587,377215,0.0973776976267,376462,0.138714631399,376452,0.139281352361,324587,0.234310388565,318645,0.247308731079,315656,0.270627339681,313769,0.28594271342,311804,0.302057345708,311917,0.31228129069,311676,0.324297984441,309891,0.348875284195,307847,0.380960702896,351913,0.109196662903,349091,0.112350702286,346355,0.116587956746,337240,0.132984638214,334953,0.145147323608,333673,0.157411019007,333404,0.165707031886,332757,0.223032395045,332721,0.226876656214,305921,0.349225997925,376468,0.240969657898,376528,0.361275275548,333432,0.982444047928,333432,0.971440315247,333432,0.986211299896,332576,1.10052831968,332576,1.13488403956,332576,1.18996898333,336164,0.868222395579,332136,1.06845100721,331800,1.07887196541,331800,1.07191197077,331800,1.08682632446,331800,1.11570668221,331800,1.14910968145,331800,1.21239598592,393492,0.132972399394,381340,0.240462303162,356597,0.364770968755,337619,0.75831302007,332740,1.06605601311,332740,1.06608899434,332740,1.06475901604,393492,0.127639293671,381375,0.240695953369,356626,0.369426329931,337652,0.762682358424,332722,1.06810164452,332722,1.06898832321,332722,1.06751267115,393535,0.126784642537,381375,0.239347378413,356626,0.366720358531,337652,0.760879993439,332722,1.06818970044,332722,1.06859366099,332722,1.06672064463 +004_xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,27448975,3.33786010742e-06,7259374,12.969181935,9666389,1.02036698659,9569877,1.06359100342,9494511,1.12760535876,9118465,1.59287261963,9023609,1.76870330175,8948451,2.1577026844,8868196,2.48172736168,8750112,3.34641639392,8748644,3.69760592779,7654374,8.08982268969,7473498,8.98217900594,7399156,9.7434946696,7353328,10.4460016886,7325105,11.0924946467,7306355,11.640580972,7288964,12.1608156363,7277791,12.633632342,7259374,13.1473150253,8287608,2.41910894712,8209422,2.41610272725,8131331,2.55703735352,7867656,3.04146496455,7792286,3.36363704999,7757935,3.69474800428,7743526,3.93534938494,7726792,4.99430592855,7725870,5.17064595222,7124634,20.0839823882,8881300,5.88251797358,8923196,8.95481769244,7788320,24.4068090121,7736936,27.0415040652,7679032,30.7786603769,7466892,44.4496386846,7428724,47.3054950237,7419796,48.0098853111,7748872,32.7908906142,7617432,40.3764986992,7575204,43.2709236145,7524948,46.4258653323,7467336,51.2935773532,7420772,55.6988660494,7383688,58.8089403311,7374624,59.4580790202,9200350,0.993028402328,8715010,4.06295800209,8212585,10.0993786653,7763280,21.2991683483,7392699,52.3324143092,7383522,53.3713256518,7383522,53.2629713217,9200350,0.985333601634,8714910,4.4593363603,8211984,10.4658896923,7762588,21.6714093685,7390511,52.7044419448,7381729,53.4784607093,7381729,53.4925139745,9199922,1.45122901599,8714910,4.50204165777,8211984,10.4907693068,7762588,21.7624893188,7390511,52.6268976529,7381729,53.5248483022,7381729,53.5140020053 +005_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,376710,3.01996866862e-06,138971,0.117473602295,176322,0.017750342687,174504,0.0184163252513,172688,0.0197726885478,168657,0.0264753500621,166764,0.0290466149648,166268,0.0327256520589,165057,0.0396163463593,164842,0.0546553134918,164838,0.0545913378398,143546,0.0954943497976,141378,0.102643648783,138480,0.111299673716,138971,0.117510636648,138971,0.117237647374,138971,0.117826382319,138971,0.117254336675,138971,0.117465019226,138971,0.117435693741,153441,0.0472739537557,152318,0.0460419654846,151494,0.0496646563212,147370,0.0569983323415,146406,0.0638800462087,145957,0.0662442843119,145872,0.0685760180155,145680,0.0808622837067,145677,0.0822277069092,137524,0.149078687032,163264,0.105828682582,162616,0.144125938416,145560,0.362999041875,145560,0.362900972366,145560,0.370952367783,145300,0.411665360133,145300,0.442767063777,145300,0.496924638748,146948,0.357553958893,144896,0.401072661082,144896,0.400351285934,144896,0.400575399399,144896,0.409540335337,144896,0.426527659098,144896,0.45875064532,144896,0.512708346049,170263,0.1113606294,167207,0.150853633881,154636,0.187633037567,146994,0.335818052292,145548,0.44565431277,145548,0.445587317149,145548,0.44525829951,170263,0.106166680654,167233,0.147186279297,154655,0.187772989273,147016,0.334966023763,145506,0.443614721298,145506,0.443003336589,145506,0.443792025248,170339,0.0990273157756,167233,0.145653327306,154655,0.18642338117,147016,0.333408991496,145506,0.441204388936,145506,0.442349672318,145506,0.441355307897 +006_[xxx]xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,487553,3.65575154622e-06,171572,0.159917990367,223780,0.0225032965342,221014,0.0235550403595,218784,0.0252850055695,213067,0.0337456067403,210471,0.0372986793518,209723,0.042756319046,207752,0.051672299703,207477,0.0715800126394,207477,0.0721820195516,179659,0.126528978348,176828,0.131415685018,174503,0.140829404195,174017,0.151304960251,171572,0.161115725835,171572,0.160152673721,171572,0.160279671351,171572,0.160930395126,171572,0.160235643387,194559,0.0588526725769,193166,0.0573933124542,192109,0.0654916763306,186723,0.0750513076782,185586,0.0804759661357,185021,0.0851890246073,184883,0.088919321696,184576,0.109359025955,184554,0.110152403514,170500,0.189848661423,206800,0.134611288706,206628,0.188362360001,183908,0.484002987544,183908,0.484085003535,183908,0.494208971659,183324,0.561786731084,183324,0.591938654582,183324,0.646452665329,185224,0.471283356349,182848,0.544848680496,182848,0.541278998057,182848,0.541122674942,182848,0.552525997162,182848,0.571571667989,182848,0.608697334925,182848,0.657542705536,215938,0.116326729457,211051,0.167108297348,196152,0.216569026311,186223,0.406772931417,183551,0.580702622732,183551,0.582006613413,183551,0.581438064575,215938,0.110205332438,211082,0.163865645727,196179,0.218308289846,186290,0.407505671183,183578,0.582318623861,183578,0.582600990931,183578,0.582133372625,215988,0.10444132487,211082,0.162370681763,196179,0.217087984085,186290,0.405249993006,183578,0.580951372782,183578,0.580929040909,183578,0.580984671911 +007_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,850909,3.33786010742e-06,292976,0.346653938293,369572,0.0377046267192,366424,0.0393807093302,363865,0.0426406860352,348361,0.0568253199259,344075,0.0618429978689,343179,0.0701180299123,339951,0.0822083950043,338958,0.122797330221,338951,0.125939289729,298827,0.212536334991,296666,0.232803662618,295560,0.242864608765,296286,0.264008283615,293463,0.269920984904,294368,0.28643099467,293037,0.314327955246,294194,0.338847319285,292976,0.345039049784,321646,0.0991563796997,320345,0.105941295624,319306,0.109184026718,309684,0.126139720281,307968,0.132866621017,307581,0.138194322586,307235,0.144700050354,307044,0.17039736112,307029,0.176095962524,286293,0.34261059761,346436,0.224741299947,341420,0.319488366445,300412,0.845892270406,300412,0.835621356964,300412,0.848834673564,296748,0.993229707082,296748,1.02670995394,296748,1.08386802673,305568,0.847544987996,297532,1.02365899086,296224,1.03403266271,296224,1.02325638135,296224,1.03827532132,296224,1.06096633275,296224,1.10469802221,296224,1.15126601855,352766,0.129726012548,339092,0.227358341217,321078,0.342067321142,304514,0.690313021342,296952,0.998696327209,296952,1.00147167842,296952,1.00024731954,352766,0.124401330948,339125,0.227606693904,321106,0.345981677373,304557,0.694049278895,296780,1.00331966082,296780,1.00230964025,296780,1.00239133835,352821,0.123350381851,339125,0.226397275925,321106,0.345574935277,304557,0.6911500295,296780,1.00063538551,296780,0.999700307846,296780,1.00167528788 +008_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,343198,3.01996866862e-06,127751,0.105745315552,166786,0.0167960325877,165002,0.0176053841909,163775,0.0192179679871,159786,0.0254153410594,158865,0.0286792914073,158480,0.0327790578206,156855,0.0407230059306,156729,0.0540683269501,156729,0.0542386372884,134114,0.0875509579976,131198,0.0919543902079,129881,0.102419376373,127751,0.10527865092,127751,0.104686021805,127751,0.105848709742,127751,0.104862689972,127751,0.105268319448,127751,0.105155944824,146459,0.0433893203735,145035,0.0424120426178,143779,0.0463539759318,139692,0.0527860323588,138692,0.0598820050557,138276,0.0649030208588,138190,0.0676000118256,138095,0.0854489803314,138086,0.0859417120616,127165,0.135273297628,154768,0.101751963298,152288,0.136054039001,136480,0.336822668711,136480,0.338624954224,136480,0.347890297572,136412,0.388644695282,136412,0.417986710866,136412,0.47012702624,139708,0.320666313171,136088,0.374691963196,136088,0.373781363169,136088,0.374780019124,136088,0.384222348531,136088,0.40233763059,136088,0.432410001755,136088,0.487000624339,160988,0.110291004181,156532,0.147376378377,146233,0.182394981384,138977,0.315741697947,136632,0.411029338837,136632,0.412599643071,136632,0.412365357081,160988,0.104672352473,156566,0.143378655116,146262,0.181193351746,138991,0.315193335215,136653,0.411096652349,136653,0.412399371465,136653,0.411264340083,161037,0.0985143184662,156566,0.142110029856,146262,0.179251670837,138991,0.313049952189,136653,0.410062392553,136653,0.409775972366,136653,0.409747362137 +009_[xxx]xxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,557198,3.01996866862e-06,189149,0.210220336914,244811,0.0249186356862,241955,0.0261283715566,239702,0.0282329718272,232830,0.0380736986796,229120,0.0416719913483,228136,0.0480190118154,226477,0.0576053460439,226167,0.0795753002167,226167,0.0799225966136,200410,0.150122006734,196427,0.161966323853,193464,0.172226985296,193238,0.181164662043,191330,0.203890959422,189149,0.213178714116,189149,0.213455994924,189149,0.213206291199,189149,0.21307905515,210369,0.0649349689484,208871,0.0665090084076,207680,0.072003364563,201268,0.0830796559652,200100,0.0885820388794,199484,0.0939033031464,199349,0.0983013312022,199025,0.117196639379,198987,0.118388732274,188626,0.218050638835,224952,0.149176677068,219604,0.208290338516,195372,0.528985023499,195372,0.528147379557,195372,0.540912707647,194772,0.607064326604,194772,0.639112710953,194772,0.69566933314,201556,0.537322362264,194084,0.636022011439,194076,0.633273363113,194076,0.631827274958,194076,0.644240299861,194076,0.664596001307,194076,0.695385297139,194076,0.751597642899,232970,0.119257926941,224085,0.182927370071,207827,0.24937136968,196991,0.464324951172,194898,0.642029364904,194898,0.643920342127,194898,0.642560005188,232970,0.114154338837,223872,0.180164337158,207632,0.247074683507,196861,0.460823694865,194839,0.613568703334,194839,0.612713654836,194839,0.611704985301,232635,0.109146674474,223872,0.178818702698,207632,0.245684305827,196861,0.4580570062,194839,0.611045678457,194839,0.612032651901,194839,0.61225271225 +010_[xxx]xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,426103,3.33786010742e-06,141109,0.140085617701,192156,0.0199309984843,189129,0.0210976600647,186487,0.0231116612752,181772,0.0303183396657,178709,0.0348370075226,177768,0.0411766370138,176030,0.0501680374146,175570,0.0670464038849,175570,0.0669887065887,149596,0.110224962234,145448,0.121217012405,144116,0.124087333679,142526,0.137094020844,141109,0.138765652974,141109,0.139693339666,141109,0.13858071963,141109,0.138993342717,141109,0.139189958572,168967,0.0508232911428,166635,0.0497612953186,164780,0.0548553466797,159988,0.0627036889394,158239,0.0716703732808,157474,0.0794143676758,157127,0.0850876172384,156802,0.107687711716,156788,0.109622955322,140841,0.161686738332,176348,0.116072654724,174896,0.163638989131,154180,0.433755318324,154180,0.434438387553,154180,0.445425987244,153796,0.505693594615,153796,0.53528936704,153796,0.59269563357,156944,0.424697001775,153652,0.491518338521,153652,0.488816976547,153652,0.491258064906,153652,0.504861275355,153652,0.523103634516,153652,0.550659020742,153652,0.610303958257,185228,0.114173650742,179029,0.156396309535,167127,0.198611338933,157650,0.373680273692,154015,0.524566650391,154015,0.524936993917,154015,0.5241903464,185228,0.109036684036,179058,0.153029282888,167160,0.199064334234,157663,0.373500347137,154069,0.52596004804,154069,0.524818261464,154069,0.524915297826,185267,0.102713664373,179058,0.152018706004,167160,0.197426319122,157663,0.372691313426,154069,0.523350636164,154069,0.522581974665,154069,0.522647062937 +011_xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,464152,3.25838724772e-06,151918,0.157057285309,206072,0.0212206840515,202826,0.0220113595327,199679,0.0239336490631,194154,0.0317169825236,190696,0.0359466870626,189687,0.0413093566895,187337,0.0498116811117,187100,0.0707077185313,187100,0.0711353619893,160010,0.119136651357,157487,0.12774236997,154368,0.138047297796,154067,0.149930000305,151918,0.157948652903,151918,0.15739496549,151918,0.158179998398,151918,0.157238006592,151918,0.158164978027,177430,0.0549709796906,175507,0.0531193415324,174104,0.061646382014,169111,0.0694800217946,167995,0.0757676760356,167208,0.0835666656494,167034,0.0875817139943,166627,0.112145026525,166618,0.114480018616,151585,0.175099372864,188128,0.125005642573,187468,0.175293604533,165932,0.472104390462,165932,0.469990332921,165932,0.483726342519,165528,0.546470721563,165528,0.577178001404,165528,0.630495627721,168444,0.46871805191,165552,0.544052680333,165552,0.542781352997,165552,0.542957305908,165552,0.55561598142,165552,0.575296719869,165552,0.605521678925,165552,0.660842021306,197519,0.114515384038,191765,0.160530726115,178598,0.206696987152,168781,0.396953662237,165706,0.579008340836,165706,0.579175313314,165706,0.579344272614,197519,0.109106302261,191798,0.157284975052,178624,0.208052953084,168803,0.398005962372,165742,0.579890330633,165742,0.580519676208,165742,0.580943346024,197557,0.103033304214,191798,0.156039317449,178624,0.206596692403,168803,0.39610004425,165742,0.580171028773,165742,0.57838066419,165742,0.578601678212 +012_[xxx]xxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,361834,3.33786010742e-06,128202,0.112853686015,171268,0.0170609951019,169417,0.0178686777751,167502,0.0192506313324,163790,0.0255043506622,161927,0.0284573237101,161453,0.0322399934133,160260,0.0396526654561,160129,0.0534596443176,160127,0.0535340309143,136154,0.0911283493042,132000,0.0986493428548,130912,0.105876366297,128202,0.112233002981,128202,0.112128019333,128202,0.112199068069,128202,0.112258672714,128202,0.111984650294,128202,0.112569650014,149166,0.0447970231374,147644,0.0436920324961,146680,0.0476373831431,142508,0.0542519887288,141476,0.0614703496297,140954,0.0649263064067,140858,0.0679256916046,140591,0.0832873185476,140575,0.0839296181997,127893,0.138667345047,158180,0.102818330129,156956,0.140914042791,140056,0.358757654826,140056,0.359344959259,140056,0.368621349335,139784,0.408281326294,139784,0.437644322713,139784,0.494033654531,142280,0.341463645299,139544,0.38759636879,139544,0.387711286545,139544,0.389230012894,139544,0.398124376933,139544,0.416098038356,139544,0.44660671552,139544,0.499514977137,165225,0.111728986104,161341,0.149616638819,149837,0.185121377309,142385,0.335449298223,140030,0.431308666865,140030,0.432657639186,140030,0.431744734446,165225,0.106058597565,161372,0.145345687866,149863,0.184810320536,142404,0.335959355036,140049,0.431728680929,140049,0.432997067769,140049,0.431774695714,165261,0.0991646448771,161372,0.144528309504,149863,0.183138688405,142404,0.33323097229,140049,0.429291327794,140049,0.430337985357,140049,0.429886341095 +013_[xxx]xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,2367248,3.33786010742e-06,762739,0.970229705175,953971,0.0995330015818,946200,0.103853305181,940114,0.112287680308,891613,0.151594003042,878137,0.163382291794,874379,0.185925960541,861607,0.224725961685,858638,0.342834313711,858634,0.34716629982,790666,0.606861988703,783356,0.655264059703,769840,0.716651678085,774232,0.769816001256,773321,0.807423988978,764683,0.865319331487,759704,0.905572970708,753943,0.976304372152,762739,0.968438307444,816208,0.27517469724,811477,0.279240687688,807689,0.286258300145,779943,0.332745949427,774658,0.348938624064,773569,0.363030672073,773229,0.373709996541,772956,0.40128493309,772869,0.412823994954,739751,1.21033294996,880800,0.571295976639,828240,0.82680829366,704676,2.3394056956,702240,2.38181869189,702244,2.42264731725,697764,2.72992499669,697752,2.75528899829,697752,2.81925932566,776304,2.56107632319,715224,3.35021328926,697820,3.52515832583,695460,3.60043271383,695444,3.62870637576,695444,3.64439630508,695444,3.67955271403,695444,3.74074665705,882826,0.182733694712,805812,0.45224738121,756284,0.83020567894,706783,1.84985566139,695917,2.92210904757,695917,2.92689967155,695917,2.92773628235,882826,0.177338997523,805817,0.467533032099,756124,0.8459760348,706865,1.86116671562,696020,2.92873064677,696020,2.93790499369,696020,2.92502268155,880854,0.196885029475,805817,0.467125654221,756124,0.844516674678,706865,1.85720364253,696020,2.93305397034,696020,2.93247532845,696020,2.93913197517 +014_[xxx][xx]xxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,326781,3.33786010742e-06,111212,0.103417952855,150049,0.0148503780365,148252,0.0157969792684,146917,0.0167676607768,143130,0.0223159790039,141634,0.0249670346578,141176,0.028602997462,139798,0.035150607427,139627,0.0477820237478,139627,0.0478786627452,119973,0.0855523745219,117199,0.0889569918315,113569,0.100436687469,111212,0.103417396545,111212,0.103776375453,111212,0.103581984838,111212,0.10347533226,111212,0.103824059168,111212,0.103361686071,121131,0.0352636973063,119954,0.0381276607513,119127,0.0411059856415,115419,0.0451350212097,114605,0.0530200004578,114290,0.0556650161743,114211,0.0583553314209,114004,0.0727223555247,113996,0.0732429822286,111099,0.125090281169,134568,0.0890456835429,124392,0.114905675252,111576,0.286869366964,111576,0.289586941401,111576,0.30029630661,111296,0.344510714213,111296,0.37437693278,111296,0.428893009822,121196,0.3246336778,111060,0.375827948252,111060,0.377190589905,111060,0.378487269084,111060,0.387852668762,111060,0.404833396276,111060,0.435703357061,111060,0.490557670593,132083,0.110198974609,129007,0.140112002691,118512,0.168809652328,112672,0.281308015188,111556,0.397974332174,111556,0.397160371145,111556,0.39673670133,132083,0.104707956314,129007,0.135298013687,118514,0.167781035105,112730,0.279334624608,111609,0.392882267634,111609,0.393016020457,111609,0.392207622528,132145,0.0966910521189,129007,0.134274323781,118514,0.16642165184,112730,0.278923988342,111609,0.390572627385,111609,0.391095638275,111609,0.391029993693 +015_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,2085928,3.01996866862e-06,530661,0.891000986099,715483,0.0753326416016,704822,0.0777110258738,696296,0.0845116774241,667018,0.115254958471,654697,0.127727667491,650948,0.145977338155,647849,0.167882998784,642876,0.230111996333,642873,0.233955065409,551167,0.550000667572,542047,0.6059923172,538831,0.655155738195,536604,0.702752033869,535690,0.740576346715,534394,0.765094359716,531843,0.818444728851,531104,0.844652016958,530661,0.8940076828,611538,0.222952683767,605329,0.228107690811,599428,0.236353397369,580171,0.266080379486,573237,0.288308938344,570020,0.313507636388,569316,0.33452129364,568684,0.380050341288,568585,0.397667725881,525496,0.90252105395,656576,0.437943696976,660852,0.657508691152,568940,1.93822566668,567344,1.9727760156,567344,1.99772802989,555128,2.73934896787,555128,2.77848140399,555128,2.8476263682,576508,2.16716003418,565788,2.61933334668,555772,2.82379539808,553868,2.90256071091,553868,2.93331694603,553868,2.95986763636,553868,3.01298999786,553868,3.0684996446,678623,0.165254592896,646805,0.383563995361,605985,0.661924997965,575137,1.47200862567,554571,2.67778126399,554571,2.68839836121,554571,2.68239005407,678623,0.160084009171,646683,0.39607334137,605715,0.673888683319,575000,1.48583539327,554503,2.67855970065,554503,2.67176437378,554503,2.67573062579,676048,0.175586303075,646683,0.395020325979,605715,0.672259012858,575000,1.48505703608,554503,2.67425966263,554503,2.68117666245,554503,2.67160336177 +016_[xxx]xxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1107694,3.01996866862e-06,383763,0.442148685455,486057,0.0495393276215,480466,0.0520072778066,476206,0.0558689435323,457740,0.0746640364329,450755,0.0815083185832,448836,0.0931946436564,444552,0.112357060115,443556,0.164737304052,443555,0.166548967361,400225,0.281499306361,393874,0.29874531428,391810,0.325926701228,382769,0.356666962306,385493,0.371673027674,391583,0.383790334066,385935,0.409466028214,384060,0.422945340474,383763,0.441782315572,403181,0.131817340851,400677,0.13424595197,398717,0.137248595556,386169,0.159005006154,384037,0.170012633006,383072,0.176849683126,382825,0.182829300563,382423,0.21068294843,382382,0.216826995214,374370,0.481815656026,429756,0.278385003408,432652,0.416351318359,374508,1.10964465141,374500,1.09666307767,374500,1.11151496569,373196,1.24190330505,373196,1.27653201421,373196,1.33746059736,382440,1.10010099411,380280,1.29793667793,372736,1.33462333679,372744,1.32097665469,372744,1.34938033422,372744,1.36836004257,372744,1.39842939377,372744,1.45887001355,445946,0.139962991079,426558,0.272591352463,399458,0.44246061643,377362,0.922033945719,373309,1.24782760938,373309,1.24883596102,373309,1.24776434898,445946,0.134182691574,426323,0.274286031723,399145,0.439799308777,377019,0.916620651881,373199,1.18321832021,373199,1.1842666467,373199,1.185044686,440174,0.134839693705,426323,0.273126999537,399145,0.43821032842,377019,0.917019287745,373199,1.18320902189,373199,1.18345197042,373199,1.18050201734 +017_[xxx]xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,467905,3.01996866862e-06,156750,0.158685366313,200402,0.0202130476634,198741,0.0209216276805,197357,0.0227519671122,190773,0.0305103460948,188619,0.0332299868266,188120,0.0377196470896,185583,0.0470079580943,185347,0.0669186909993,185347,0.0671130021413,161960,0.11648607254,159261,0.125551382701,159104,0.135114272436,158936,0.143579006195,156750,0.157090981801,156750,0.157603263855,156750,0.157639662425,156750,0.157249689102,156750,0.15706094106,175055,0.0551915963491,173908,0.0534853935242,173152,0.0575606822968,167332,0.0663863023122,166140,0.0730506579081,165905,0.0753707091014,165701,0.0783569812775,165599,0.0956869920095,165597,0.0960149765015,155986,0.181017319361,183584,0.120581626892,183288,0.168167273204,162484,0.429396708806,162484,0.429520368576,162484,0.439634005229,161668,0.526517629623,161668,0.55705165863,161668,0.613641341527,163720,0.491465330124,161356,0.55633131663,161356,0.552623669306,161356,0.555428266525,161356,0.565586964289,161356,0.582648038864,161356,0.611968676249,161356,0.66978597641,192082,0.115491310755,187049,0.160487651825,172764,0.207369963328,163645,0.386228005091,161891,0.558669010798,161891,0.55937798818,161891,0.559037049611,192082,0.109691381454,187086,0.157693624496,172794,0.207765340805,163695,0.385637998581,161940,0.559709628423,161940,0.561056375504,161940,0.560397624969,192126,0.103714068731,187086,0.15639034907,172794,0.206671317418,163695,0.384655952454,161940,0.558635950089,161940,0.559295336405,161940,0.559210062027 +018_xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1036856,3.33786010742e-06,362807,0.389003356298,447586,0.0460770130157,443959,0.04816365242,441251,0.0525629520416,422057,0.0699396928151,417130,0.0766886870066,415764,0.0879683494568,411256,0.104968706767,410470,0.164055029551,410467,0.164838393529,368846,0.252295970917,365864,0.269128958384,362219,0.290700674057,362768,0.304811000824,360427,0.334140618642,361430,0.338527679443,361689,0.350768327713,362205,0.365327040354,362807,0.39012336731,389094,0.118743260701,387258,0.127823670705,385697,0.131999969482,374544,0.151813030243,372584,0.161900997162,372013,0.170065959295,371828,0.174211343129,371744,0.182006279627,371731,0.186372995377,350814,0.416654984156,415608,0.270752986272,418120,0.403283278147,365700,1.12830670675,365700,1.1224146684,365700,1.13485598564,364840,1.25510160128,364840,1.29278771083,364840,1.35019199053,367244,1.11337431272,364396,1.33941435814,364260,1.36244130135,364260,1.35526736577,364260,1.37468504906,364260,1.40142933528,364260,1.43650062879,364260,1.49354362488,425749,0.136814673742,417068,0.257949670156,390626,0.432741721471,367144,0.974246660868,365022,1.2351530393,365022,1.23564434052,365022,1.23777127266,425749,0.131025393804,417104,0.259845972061,390649,0.436697324117,366875,0.97899166743,364437,1.23665928841,364437,1.23653499285,364437,1.23728664716,425810,0.131790955861,417104,0.258828719457,390649,0.435532013575,366875,0.978533347448,364437,1.2376806736,364437,1.23718937238,364437,1.23452266057 +019_[xxx]xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,792745,3.33786010742e-06,267300,0.308403968811,357187,0.0363032817841,352794,0.0381223360697,348510,0.0412509441376,339255,0.0545577208201,333979,0.0604079564412,332638,0.0696796576182,329708,0.0847562948863,329178,0.117299000422,329178,0.117465019226,282266,0.202457666397,276156,0.220761060715,273634,0.234036684036,271075,0.248598655065,270417,0.252848704656,270739,0.264903306961,269798,0.289099693298,267300,0.309006929398,267300,0.30993326505,309551,0.0963583787282,306668,0.0989013512929,304334,0.103333075841,296089,0.117633978526,293872,0.128789027532,292687,0.138168334961,292407,0.144772926966,291804,0.180416345596,291766,0.181843996048,266930,0.308439016342,328688,0.211670001348,327944,0.313965002696,290384,0.84433833758,290384,0.839751640956,290384,0.851428667704,289508,0.959826946259,289508,0.987051328023,289508,1.04847693443,294228,0.772898276647,289240,0.936954339345,289036,0.941763718923,289036,0.935213963191,289036,0.951088349024,289036,0.98260029157,289036,1.01202766101,289036,1.06861837705,343506,0.128636280696,332441,0.22257399559,310491,0.32820002238,293827,0.672123273214,289761,0.936979691188,289761,0.94011370341,289761,0.935562690099,343506,0.123041391373,332433,0.222187995911,310467,0.330948670705,293790,0.675663630168,289744,0.935736656189,289744,0.935108025869,289744,0.934492270152,343535,0.121360619863,332433,0.222062031428,310467,0.329937696457,293790,0.672415018082,289744,0.935566663742,289744,0.933550357819,289744,0.934032678604 +020_[xxx]xxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1410687,3.01996866862e-06,465462,0.555012305578,623921,0.0646913051605,616870,0.0679759979248,610644,0.0733799934387,593031,0.0976183414459,584127,0.108433326085,581723,0.123402992884,575974,0.149175008138,574900,0.213342666626,574899,0.2149913311,500958,0.362728357315,488835,0.39338962237,482967,0.426999648412,478344,0.447916984558,476957,0.474355618159,474161,0.496568361918,469011,0.542030970256,466758,0.550088644028,465462,0.555834611257,536897,0.168040355047,531587,0.171089967092,526334,0.178383270899,511290,0.206911325455,506361,0.225938638051,504619,0.241880655289,504252,0.25426030159,503640,0.332419395447,503587,0.33843533198,462438,0.62318499883,570236,0.369545300802,551216,0.557456731796,471672,1.47431699435,471532,1.47371228536,471528,1.49382432302,469428,1.70526266098,469428,1.73833568891,469428,1.80302699407,504304,1.41569399834,480736,1.78450163205,467792,1.86727269491,467700,1.8627003034,467700,1.88976335526,467700,1.91555428505,467700,1.95384971301,467700,2.02557969093,591618,0.151645342509,544368,0.317981004715,508901,0.546533664068,477679,1.16547203064,469343,1.71452506383,469343,1.71538464228,469343,1.7157313029,591618,0.14609670639,544319,0.322172323863,508703,0.553294340769,477572,1.17153700193,469274,1.71817501386,469274,1.71231603622,469274,1.7157116731,589642,0.151482979457,544319,0.321475028992,508703,0.552091360092,477572,1.16841268539,469274,1.71202898026,469274,1.71277968089,469274,1.71488698324 +021_xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,7339877,3.33786010742e-06,2344989,3.06320134799,3067907,0.320947329203,3029526,0.335216363271,2992518,0.362833340963,2887598,0.486661036809,2837586,0.534637610118,2826251,0.606401284536,2792235,0.732394695282,2784516,1.07646560669,2784488,1.08516867956,2442817,1.91579635938,2397882,2.06522933642,2378327,2.24271297455,2367319,2.37988567352,2357084,2.49662963549,2352290,2.63717699051,2349801,2.77716000875,2349623,2.93004965782,2344989,3.06526700656,2636344,0.839042345683,2614895,0.856559594472,2594015,0.900937716166,2519562,1.03641939163,2497801,1.13103397687,2489273,1.20989926656,2487092,1.25680033366,2482802,1.5637579759,2482506,1.62118562063,2304592,3.83006803195,2824984,1.83898003896,2827100,2.85747893651,2457392,8.40146303177,2444808,9.13068000476,2434080,10.0053919951,2415620,11.4286383788,2415620,11.3786087036,2415620,11.462350289,2495596,7.97030464808,2452972,10.1016776562,2436740,10.8661470413,2422996,11.6034560204,2410972,12.5947303772,2409984,12.8534610271,2409752,12.8428459962,2409752,12.8655836582,2917039,0.369901339213,2786632,1.33985328674,2626736,2.80966361364,2461274,6.99692440033,2414745,11.1716276805,2414745,11.1839416822,2414745,11.1635699272,2917039,0.364148616791,2786485,1.43393230438,2626588,2.9194393158,2461459,7.06407467524,2413745,11.1805606683,2413745,11.1542126338,2413745,11.185640653,2916701,0.475105365117,2786485,1.43163696925,2626588,2.90858594577,2461459,7.07327167193,2413745,11.174497366,2413745,11.1754070123,2413745,11.1817563375 +022_[xxx]xxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,426169,2.94049580892e-06,145585,0.140293677648,178542,0.0177943706512,177389,0.0184956391652,176508,0.0199082692464,169449,0.0269570350647,166792,0.0293640295664,166339,0.0330680211385,164454,0.0389606952667,164266,0.0573943456014,164259,0.0579466819763,149841,0.111105283101,148096,0.117648045222,146919,0.123701969783,147252,0.137886365255,145585,0.141074975332,145585,0.141299645106,145585,0.140939633052,145585,0.141148964564,145585,0.141213655472,154139,0.05113697052,153500,0.048757314682,153028,0.0522123177846,148069,0.0607940355937,147157,0.0657902558645,146986,0.0674653053284,146956,0.0690229733785,146855,0.0710903008779,146844,0.0723617076874,143273,0.173671642939,163820,0.108439683914,165188,0.150130351384,145824,0.373353322347,145824,0.371411720912,145824,0.380745331446,144936,0.460285663605,144936,0.4922803243,144936,0.54389166832,145200,0.431534369787,144712,0.480091015498,144712,0.478567679723,144712,0.478444019953,144712,0.488212029139,144712,0.506335020065,144712,0.536195278168,144712,0.591271003087,171758,0.113687356313,168748,0.155119975408,154780,0.195624351501,146508,0.344099283218,145223,0.505710601807,145223,0.505884011587,145223,0.505666335424,171758,0.108377297719,168740,0.15128993988,154763,0.194891055425,146555,0.340778032939,145125,0.491113026937,145125,0.488873958588,145125,0.49020131429,171800,0.102163632711,168740,0.149740378062,154763,0.193478981654,146555,0.341485023499,145125,0.488561709722,145125,0.48873368899,145125,0.487130641937 +023_[xxxxx]xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,582861,3.33786010742e-06,159932,0.222832361857,192301,0.0198454062144,190334,0.0203370253245,188546,0.0216523011525,179399,0.0311126708984,175153,0.0337923367818,174182,0.0390263398488,170894,0.0449999968211,170262,0.0697282950083,170265,0.0717443625132,164332,0.158444325129,162559,0.170663674672,161220,0.189694722493,161506,0.191849946976,160994,0.201354662577,159932,0.222203969955,159932,0.22176027298,159932,0.221960624059,159932,0.221937656403,165202,0.0582432746887,164469,0.0624413490295,164026,0.058989683787,157577,0.077559709549,156509,0.0793636639913,155995,0.0813582738241,155913,0.0826943715413,155726,0.0838729540507,155717,0.0917640527089,154483,0.271970272064,174800,0.120398680369,177420,0.170188744863,152960,0.433369000753,152944,0.432296673457,152944,0.443720022837,150508,0.598748048147,150508,0.630529006322,150508,0.687918265661,151020,0.678706328074,149992,0.77395995458,149932,0.771533648173,149932,0.773944616318,149932,0.782581647237,149932,0.802232980728,149932,0.834492286046,149932,0.887625932693,182795,0.116734663645,179356,0.168636322021,163376,0.22607533137,153726,0.401748657227,150033,0.738410313924,150033,0.738312959671,150033,0.736262003581,182795,0.111421346664,179357,0.165820042292,163389,0.226394335429,153700,0.40189965566,150225,0.730000019073,150225,0.728676398595,150225,0.727566003799,182814,0.107170979182,179357,0.164786020915,163389,0.224804004033,153700,0.39985871315,150225,0.723774671555,150225,0.725271383921,150225,0.724729935328 +024_(xxx)xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,557030,3.33786010742e-06,192706,0.19580300649,254979,0.0258909861247,252229,0.0271299680074,249873,0.0294036070506,244239,0.0400426387787,241326,0.0442639986674,240388,0.0514290332794,238262,0.0623383522034,237734,0.0874240398407,237726,0.0882896582286,203506,0.1448533535,199124,0.153823296229,196913,0.166480620702,195800,0.173242727915,195303,0.184655030568,192706,0.194953282674,192706,0.19478003184,192706,0.195243994395,192706,0.19473862648,222523,0.0694479942322,220681,0.0707156658173,219153,0.0734803676605,213334,0.0838212966919,211847,0.091313680013,211217,0.0974123477936,211036,0.10253461202,210605,0.135059674581,210592,0.137338320414,191524,0.219034036001,235788,0.151333332062,234620,0.216295719147,209364,0.547148307165,209364,0.543457349141,209364,0.557556708654,208944,0.619480689367,208944,0.651352008184,208944,0.710912704468,211680,0.564222653707,208328,0.659238974253,208292,0.657477696737,208292,0.652235269547,208292,0.665677626928,208292,0.68665599823,208292,0.716841697693,208292,0.777103980382,247299,0.119602362315,239427,0.187082052231,222658,0.256050984065,211571,0.480182329814,209015,0.661986986796,209015,0.661722024282,209015,0.662461042404,247299,0.113720019658,239455,0.18438967069,222684,0.257287979126,211566,0.482604026794,208964,0.66370066007,208964,0.66441599528,208964,0.662841955821,247352,0.108930985133,239455,0.183593670527,222684,0.255769650141,211566,0.478839000066,208964,0.662875731786,208964,0.662716627121,208964,0.662749687831 +025_xxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,14365385,3.01996866862e-06,4314545,6.64146669706,5548745,0.580823342005,5479425,0.607391357422,5431403,0.654586712519,5178216,0.892553011576,5107325,0.978885650635,5084767,1.12723700205,5022064,1.3319923083,5003643,2.08023667336,5003520,2.13365467389,4498524,3.80506332715,4427060,4.15676426888,4380562,4.59299000104,4360707,4.95913100243,4356004,5.33428033193,4336934,5.7180946668,4332969,6.04423332214,4324671,6.35803699493,4314545,6.64878471692,4730158,1.52451062202,4694328,1.54540832837,4662795,1.60418001811,4491528,1.86532934507,4454395,2.00338538488,4441707,2.14530332883,4436696,2.25453766187,4430522,2.70533672969,4429520,2.83066360156,4192862,9.34063235919,5119036,3.31246431669,5087364,5.07200797399,4413532,14.6283566157,4344484,15.7452993393,4326872,17.4918469588,4224792,23.0263870557,4217352,23.1879356702,4217612,23.1304186185,4475424,20.3041953246,4345044,29.8669303258,4317232,30.9944916566,4246348,32.5676942666,4229792,34.6605882645,4205520,36.1468266646,4198960,36.5063192844,4198960,36.3814387321,5175925,0.595204671224,4902191,2.39577333132,4623278,5.26523566246,4337730,11.8812890053,4209630,24.379134655,4209630,24.4325300058,4209630,24.3917079767,5175925,0.592015345891,4899863,2.58531332016,4622128,5.45992700259,4335326,12.0247586568,4208223,24.0052786668,4208223,23.9836026827,4208223,23.9706603686,5095251,0.819284995397,4899863,2.58677434921,4622128,5.4413309892,4335326,12.0740903219,4208223,23.9674616655,4208223,23.9804003239,4208223,23.9580940406 +026_[xxx]xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1668711,3.01996866862e-06,549467,0.666693369548,700755,0.0724296569824,695159,0.0758796532949,691122,0.0822642644246,660218,0.11070505778,652149,0.120411316554,650579,0.136219660441,642335,0.158590714137,640363,0.247541983922,640357,0.253633022308,567764,0.411746660868,560055,0.441948334376,555204,0.479393641154,555117,0.511849323908,554920,0.534620682398,545333,0.577025969823,548775,0.604757706324,553542,0.650457302729,549467,0.665772358576,593376,0.194802999496,590632,0.197554588318,587751,0.205327987671,568956,0.236780643463,564082,0.252496004105,563301,0.267844994863,563078,0.280111710231,562802,0.357481718063,562750,0.411296685537,529650,0.813886642456,644992,0.416322390238,620912,0.607945680618,534004,1.67130629222,532144,1.67957369486,532144,1.7071270148,524308,2.06763068835,524344,2.09454536438,524344,2.16486501694,562928,2.03413470586,533716,2.64876699448,525016,2.73186000188,523008,2.75053326289,523008,2.77763406436,523008,2.79740468661,523008,2.83650366465,523008,2.8950706323,657649,0.160718043645,608749,0.348679304123,571858,0.616475979487,535557,1.29295961062,524249,2.10157895088,524249,2.1039946874,524249,2.10301939646,657649,0.155003627141,608596,0.357881307602,571621,0.626725991567,535384,1.29955331484,524144,2.07762964567,524144,2.07827035586,524144,2.07526429494,646346,0.164660692215,608596,0.35665400823,571621,0.625202337901,535384,1.29624334971,524144,2.07512831688,524144,2.07553561529,524144,2.07522892952 +027_[xxx]xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1726377,3.01996866862e-06,583756,0.714741309484,714231,0.0737126668294,707376,0.0768747329712,703857,0.0835593541463,667766,0.112471342087,661436,0.122646649679,659922,0.139832019806,650914,0.16913596789,648932,0.274573644002,648924,0.278639316559,590952,0.425453027089,587288,0.458467642466,582825,0.501617034276,587514,0.533424297969,581729,0.565815289815,578420,0.607318957647,578703,0.627652645111,587824,0.67128666242,583756,0.714817365011,608970,0.206880331039,606423,0.210184971491,604450,0.214884678523,584152,0.249292691549,580754,0.262704372406,580133,0.276158650716,580067,0.285153945287,580217,0.322082360586,580216,0.356203953425,561374,0.92810066541,658716,0.431776603063,639724,0.632059017817,548148,1.86814300219,547760,1.87192130089,547760,1.89657704035,544500,2.11479727427,544500,2.15308396022,544496,2.20811398824,574236,2.3302163283,546692,3.10685435931,545128,3.19612598419,544664,3.21596503258,544664,3.24449928602,544664,3.26922035217,544664,3.30625629425,544664,3.36811335882,661797,0.161850690842,636279,0.361486991247,595491,0.641936699549,551427,1.50823338826,544731,2.21608201663,544731,2.21763531367,544731,2.21868530909,661797,0.156373341878,635913,0.371772368749,595179,0.6523873806,551071,1.51086068153,545013,2.20134798686,545013,2.19968366623,545013,2.19424263636,649387,0.167092005412,635913,0.370541334152,595179,0.6506579717,551071,1.51142430305,545013,2.19200364749,545013,2.19146760305,545013,2.19460829099 +028_[xxx]xxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1199184,3.33786010742e-06,389534,0.465659062068,513686,0.0525296529134,506735,0.0551156997681,501164,0.0596196651459,485288,0.0798579851786,476137,0.0893909931183,473917,0.103280305862,469526,0.123190641403,468539,0.167954603831,468538,0.168436368306,409356,0.307921330134,401054,0.330907344818,397391,0.356046676636,395245,0.379555702209,392547,0.395626942317,392311,0.41651503245,390773,0.425534645716,390041,0.436660607656,389534,0.464912335078,443452,0.139525016149,439834,0.14333597819,436641,0.149034341176,424329,0.17071668307,420980,0.186699946721,419457,0.199966351191,419051,0.209578275681,418443,0.250979661942,418374,0.256450017293,387061,0.485762993495,470928,0.305013974508,469868,0.459185679754,413712,1.22402699788,413712,1.22152964274,413712,1.23466968536,411144,1.45811994871,411144,1.49159598351,411144,1.5502529939,418988,1.21369695663,411212,1.47781864802,410072,1.5110446612,410068,1.49958197276,410068,1.51804272334,410068,1.55222566923,410068,1.58012668292,410068,1.64659865697,492712,0.14336403211,472220,0.288419644038,441934,0.470547993978,417499,0.993809938431,411074,1.42559337616,411074,1.42776703835,411074,1.42968400319,492712,0.137020349503,472246,0.290623982747,441962,0.476851304372,417504,1.00050059954,411107,1.42860301336,411107,1.42798336347,411107,1.42972636223,492793,0.140272299449,472246,0.289000352224,441962,0.476055622101,417504,1.00011436145,411107,1.42605598768,411107,1.42863535881,411107,1.42894132932 +029_[xxx]xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,1530321,3.33786010742e-06,531014,0.577239354451,680284,0.069831609726,673621,0.0729417006175,668723,0.0790533224742,644460,0.10505994161,636208,0.115998665492,634454,0.133312702179,628403,0.16090464592,627346,0.228373289108,627347,0.230657656988,553277,0.381992657979,544723,0.406965732574,538966,0.442227363586,536262,0.468315998713,534377,0.495528697968,534479,0.513850688934,531651,0.543630679448,531054,0.568360964457,531014,0.576465686162,591515,0.18264635404,587154,0.186067342758,583324,0.193041324615,565991,0.223763306936,562604,0.241064627965,561284,0.255350669225,561060,0.265729665756,560747,0.313884019852,560683,0.317331631978,525544,0.716198364894,629288,0.401984294256,625936,0.604916731517,550852,1.6011449496,550852,1.60685499509,550860,1.62445704142,547904,1.85554393133,547904,1.89963833491,547904,1.96099638939,560324,1.5693256855,548656,1.92125201225,546760,1.97722872098,546368,1.9909594059,546368,2.01188071569,546368,2.04161103566,546368,2.07825136185,546368,2.14015499751,652805,0.158711353938,626264,0.349469661713,587484,0.608317613602,555573,1.29523801804,548025,1.79059966405,548025,1.7892566522,548025,1.7936946551,652805,0.152364015579,626296,0.355403661728,587513,0.618338664373,555186,1.30290134748,548016,1.80166633924,548016,1.79674569766,548016,1.79736034075,652881,0.158555666606,626296,0.353712320328,587513,0.617332617442,555186,1.30357964834,548016,1.80002570152,548016,1.7982172966,548016,1.79720664024 +030_[xxx]xxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,722256,3.01996866862e-06,245534,0.269724686941,318078,0.0323046843211,314400,0.0341226259867,311555,0.0369030634562,301418,0.0490556557973,296497,0.0545960267385,295448,0.0637726783752,292993,0.0767986774445,292509,0.105862617493,292506,0.105926354726,256946,0.185078620911,251827,0.197394688924,249721,0.208493947983,248766,0.225033601125,249113,0.22959335645,248333,0.246785004934,247445,0.271993637085,245534,0.27003065745,245534,0.270395994186,275912,0.0875623226166,273741,0.0889019966125,272078,0.0921610196431,263876,0.106619358063,261976,0.11484336853,261234,0.123392343521,261010,0.128450949987,260717,0.154721657435,260693,0.157162666321,244123,0.280135711034,292732,0.191293001175,293168,0.277187347412,260020,0.713033994039,260020,0.710477987925,260020,0.724855979284,259020,0.821767965953,259020,0.857010602951,259020,0.919832706451,261548,0.722174008687,258444,0.858208020528,258352,0.85819196701,258352,0.85378130277,258352,0.869703610738,258352,0.893787384033,258352,0.924015680949,258352,0.985243002574,305493,0.126164674759,296533,0.209632317225,276625,0.302811304728,262070,0.596389691035,259166,0.842480977376,259166,0.841979980469,259166,0.842018047969,305493,0.120560328166,296560,0.208678722382,276643,0.305601358414,262103,0.598262310028,259127,0.84148200353,259127,0.844189325968,259127,0.844666639964,305563,0.117254654566,296560,0.207136631012,276643,0.304187695185,262103,0.596567710241,259127,0.841574668884,259127,0.841703971227,259127,0.843142986298 +031_[xxx]xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,20439371,3.33786010742e-06,6234977,9.14105073611,8093829,0.839131673177,7981971,0.880148649216,7879166,0.956644376119,7531358,1.30114197731,7402741,1.45044501623,7352061,1.68716398875,7241715,2.00061496099,7218912,2.90288837751,7218620,2.94440929095,6591390,5.31932067871,6430307,5.84212327003,6337018,6.91258335114,6321249,6.80213570595,6277891,7.3382109801,6273443,7.79324436188,6256606,8.10882170995,6238927,8.69643672307,6234977,9.13451600075,6876948,1.93061733246,6815104,1.90284029643,6756163,1.99712427457,6529100,2.37866934141,6468753,2.60460432371,6439850,3.03101269404,6432803,3.2239882946,6424079,4.01406606038,6423276,4.15434495608,6132274,10.9761479696,7368332,4.81305734317,7169532,7.36168495814,6147468,21.712417682,6090832,23.6269276142,6049532,26.6177573204,5965756,33.9126943747,5960792,35.2701353232,5960912,35.1964086692,6463104,23.1543273131,6143708,29.1541883151,6074428,31.3561876615,6014072,33.7540729841,5970152,37.5283533732,5945484,40.417216301,5940892,41.8695459366,5941132,41.7625133197,7422226,0.811960061391,7003183,3.32401800156,6580698,8.05613263448,6149949,18.4167566299,5948548,36.5622723897,5948535,36.6427253087,5948535,36.7901413441,7422226,0.802523692449,7002392,3.60738499959,6580122,8.21401937803,6149366,18.6436247031,5947922,36.4840916793,5947968,36.5678643386,5947968,36.6069879532,7417709,1.13512468338,7002392,3.59007294973,6580122,8.23446202278,6149366,18.5908559958,5947922,36.5350156625,5947968,36.617884318,5947968,36.5989803473 +032_[xx][xx]xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,835025,3.01996866862e-06,278483,0.33745098114,341090,0.0352713267008,337756,0.0367056528727,335354,0.0401233037313,319310,0.0535260041555,314512,0.0583113829295,313504,0.0662503242493,308913,0.0796630382538,308312,0.11948800087,308297,0.120625336965,283905,0.211973031362,282009,0.226545651754,279798,0.244690020879,281261,0.258587360382,279080,0.267262379328,279823,0.279374599457,279454,0.298736333847,279855,0.320590337118,278483,0.337921301524,294249,0.0989089806875,292722,0.100153684616,291822,0.102556387583,282109,0.119373639425,280333,0.124163627625,280060,0.128539641698,279984,0.131027380625,279814,0.139657656352,279811,0.144681692123,272115,0.325576702754,314660,0.209060351054,317828,0.297615687052,279268,0.815002361933,279268,0.806163311005,279268,0.824358701706,278064,0.944569031398,278064,0.977277358373,278064,1.0311563015,279228,0.909991025925,277812,1.06689834595,277744,1.07133968671,277744,1.0643603007,277744,1.07687862714,277744,1.10261662801,277744,1.13417800268,277744,1.18831634521,324599,0.128926356634,317561,0.219613393148,297702,0.325963020325,280650,0.674553314845,278183,0.980070988337,278183,0.977745374044,278183,0.977082014084,324599,0.123250007629,317539,0.219727993011,297668,0.329625368118,280690,0.678335666656,278150,0.970600366592,278150,0.969636996587,278150,0.970874945323,324682,0.122238000234,317539,0.218920389811,297668,0.327873706818,280690,0.677449305852,278150,0.970851659775,278150,0.97216963768,278150,0.970456043879 +033_[xxx]xxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,852766,3.33786010742e-06,305003,0.336908022563,396204,0.0404960314433,392472,0.0423692862193,389141,0.0458846092224,378249,0.060676018397,374192,0.067581653595,373139,0.0767006874084,369399,0.0935046672821,368957,0.127118666967,368957,0.128094991048,323338,0.215286652247,316243,0.23074833552,312445,0.250035365423,311104,0.267353693644,308379,0.274514993032,309006,0.288796027501,308654,0.304309686025,307328,0.332749605179,305003,0.3364833196,346843,0.104163726171,343889,0.10652867953,341420,0.111081997554,331591,0.127794981003,329249,0.138941685359,328398,0.147937695185,328209,0.154915014903,327897,0.186119000117,327886,0.186733722687,302158,0.34125272433,365636,0.235615332921,361940,0.345650990804,321004,0.873376687368,321004,0.867423613866,320996,0.883195320765,320200,0.983644406001,320200,1.020566384,320200,1.07780663172,327412,0.808519363403,319660,1.01159199079,319312,1.02241802216,319312,1.01178630193,319328,1.02564438184,319328,1.05438733101,319328,1.08633335431,319328,1.14971439044,380873,0.132649342219,365833,0.23662463824,343192,0.354384263357,325235,0.7103480498,320340,0.980274041494,320340,0.978018045425,320340,0.979557355245,380873,0.127059300741,365863,0.236363013585,343220,0.357871691386,325240,0.713632663091,320359,0.984532674154,320359,0.985378662745,320359,0.982862393061,380926,0.125885645549,365863,0.234833637873,343220,0.356698671977,325240,0.715690374374,320359,0.982865333557,320359,0.980626026789,320359,0.982560714086 +034_[xxx]xxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,7163518,3.33786010742e-06,2253624,3.10225470861,2932203,0.30465666453,2904844,0.318917353948,2880190,0.347287019094,2751974,0.461107651393,2708667,0.509644985199,2700542,0.586194992065,2653766,0.695237000783,2644119,1.07802128792,2644045,1.09914596876,2370226,1.80377006531,2333947,1.97757236163,2315258,2.18268171946,2304780,2.30028367043,2260997,2.440381368,2281106,2.63780872027,2267425,2.78406469027,2264359,2.91057729721,2253624,3.10362100601,2526754,0.810204029083,2509490,0.821704705556,2496989,0.809203942617,2414402,0.997119983037,2394227,1.05951134364,2389492,1.13628904025,2379151,1.18585030238,2377819,1.52464763323,2377566,1.60561299324,2199128,4.91183129946,2698672,1.73339804014,2541288,2.53338098526,2199628,7.14856036504,2189268,7.59299031893,2107644,8.19993631045,2032072,10.3415043354,2032128,10.3045979341,2032128,10.3141070207,2363400,8.79045470556,2179532,11.3397886753,2154536,11.893543005,2143168,12.4794850349,2060280,13.4560256799,2021992,13.8003466924,2021992,13.7745860418,2021992,13.8013983568,2718681,0.357493718465,2390665,1.17253295581,2267393,2.48499735196,2120529,5.70334235827,2028972,10.8803483645,2028972,10.8796199958,2028972,10.9051249822,2718681,0.351878325144,2390526,1.25301162402,2266309,2.56167968114,2120004,5.78497600555,2028796,10.8241296609,2028796,10.8304136594,2028796,10.8255136808,2718076,0.457383314768,2390526,1.25681535403,2266309,2.5623216629,2120004,5.79278270404,2028796,10.8145727317,2028796,10.831760327,2028796,10.8207293351 +035_[xxx]xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,360783,2.94049580892e-06,122713,0.113651037216,156308,0.0156637032827,154658,0.0164483388265,153178,0.0178633530935,148316,0.023862361908,145963,0.0266303221385,145380,0.031197309494,143990,0.0379526615143,143734,0.0526216824849,143734,0.0527773698171,127665,0.0928843816121,124616,0.0997583866119,124396,0.107975959778,122713,0.113551696142,122713,0.113039016724,122713,0.113039334615,122713,0.113514661789,122713,0.113116979599,122713,0.113239049911,136188,0.0431373914083,135283,0.0418163935343,134524,0.0451980431875,130295,0.0494507153829,129292,0.0554316838582,128938,0.0591646830241,128853,0.0649173259735,128739,0.0809392929077,128735,0.0822546482086,123033,0.13542731603,143684,0.0954693953196,143148,0.128669023514,127724,0.322021007538,127724,0.322616020838,127724,0.331939935684,127336,0.398759285609,127336,0.427706003189,127336,0.482512315114,128912,0.361039956411,127056,0.405148029327,127056,0.402826944987,127056,0.405377308528,127056,0.414057334264,127056,0.432284355164,127056,0.462361653646,127056,0.516986370087,150786,0.111416021983,147609,0.145361661911,135958,0.17967303594,128983,0.304643710454,127586,0.438582022985,127586,0.438551346461,127586,0.438846667608,150786,0.106079339981,147622,0.141544342041,135957,0.178631305695,128974,0.303546667099,127505,0.433725674947,127505,0.434255679448,127505,0.434859673182,150818,0.0991960366567,147622,0.140271345774,135957,0.177048365275,128974,0.302386681239,127505,0.433032035828,127505,0.433562040329,127505,0.433146635691 +036_(xxx)xxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,578286,3.01996866862e-06,195696,0.210105021795,264259,0.0268490314484,260818,0.0280986626943,258581,0.0304822921753,251290,0.040732383728,248381,0.0456716219584,247690,0.0527450243632,245447,0.0631190141042,244780,0.0857993761698,244778,0.0865656534831,211261,0.148563623428,204795,0.159678379695,202347,0.173911650976,201762,0.178502957026,199997,0.191980361938,195696,0.210102717082,195696,0.209756294886,195696,0.210422039032,195696,0.209783395131,227376,0.0707739988963,224584,0.0723950068156,222233,0.0754799842834,215176,0.0865876674652,212938,0.0941340128581,212291,0.101625363032,212108,0.107423067093,211942,0.133939345678,211936,0.134423017502,196317,0.223346392314,238696,0.155294020971,226692,0.217181682587,201564,0.526053667068,201564,0.524566650391,201564,0.537273645401,200620,0.640602032344,200620,0.669915278753,200620,0.72678732872,213096,0.568455378215,199856,0.693484624227,199744,0.691528638204,199744,0.689478317897,199744,0.701335668564,199744,0.722562392553,199744,0.751307328542,199744,0.813807010651,248111,0.120190699895,231788,0.184613307317,215637,0.253648996353,203992,0.460374355316,200747,0.66534336408,200747,0.664010683695,200747,0.664289633433,248111,0.114471673965,231818,0.18253437678,215666,0.255617618561,204028,0.462129354477,200833,0.668226718903,200833,0.666893641154,200833,0.665604670842,248165,0.109512646993,231818,0.181574980418,215666,0.254642645518,204028,0.461157004038,200833,0.665606021881,200833,0.664517323176,200833,0.664460976919 +037_[xxx]xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,457043,3.25838724772e-06,154249,0.149838685989,193268,0.0193066596985,191348,0.0204350153605,190275,0.0219716231028,180276,0.0290956497192,178119,0.0318427085876,177756,0.0364663600922,175127,0.0437983671824,174828,0.0708759625753,174828,0.0723746617635,155703,0.115118662516,154955,0.121712684631,154967,0.127169688543,154645,0.139527320862,154249,0.14895661672,154249,0.14905166626,154249,0.149087349574,154249,0.149171988169,154249,0.148994286855,167808,0.0545893510183,167259,0.0530016422272,166920,0.0565483570099,161326,0.0651183128357,160109,0.0706076622009,160013,0.0736720561981,160003,0.0765367348989,159996,0.0903656482697,159987,0.096052646637,149980,0.176901976267,180084,0.117447296778,182152,0.162697315216,159184,0.449938297272,159184,0.448199272156,159184,0.458422025045,158288,0.5386753877,158288,0.571806351344,158288,0.625727971395,158656,0.535154660543,158280,0.622184038162,158280,0.618436654409,158280,0.617989301682,158280,0.628796339035,158280,0.646552721659,158280,0.676398674647,158280,0.729161024094,184244,0.115020354589,182720,0.15998562177,170137,0.205243984858,159929,0.402024666468,158556,0.570067962011,158556,0.571849346161,158556,0.569367647171,184244,0.109407027562,182755,0.156857013702,170167,0.205874681473,159951,0.403194665909,158561,0.57084997495,158561,0.569375356038,158561,0.56903330485,184293,0.104293982188,182755,0.163117011388,170167,0.208555618922,159951,0.402436335882,158561,0... [truncated message content] |
From: <ul...@us...> - 2011-03-25 19:38:33
|
Revision: 80 http://adc.svn.sourceforge.net/adc/?rev=80&view=rev Author: ullner Date: 2011-03-25 19:38:27 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Added Paths: ----------- trunk/Schemas/ Removed Paths: ------------- trunk/Schema/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-03-25 19:37:47
|
Revision: 79 http://adc.svn.sourceforge.net/adc/?rev=79&view=rev Author: ullner Date: 2011-03-25 19:37:40 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Adding schema of files.xml Added Paths: ----------- trunk/Schema/ trunk/Schema/files.xml.xsd Added: trunk/Schema/files.xml.xsd =================================================================== --- trunk/Schema/files.xml.xsd (rev 0) +++ trunk/Schema/files.xml.xsd 2011-03-25 19:37:40 UTC (rev 79) @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:simpleType name="base32Binary"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Za-z2-7]+"></xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="zeroOne"> + <xs:restriction base="xs:int"> + <xs:enumeration value="0"></xs:enumeration> + <xs:enumeration value="1"></xs:enumeration> + </xs:restriction> + </xs:simpleType> + + <xs:complexType name="ContainerType"> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + <xs:choice> + <xs:element ref="Directory"></xs:element> + <xs:element ref="File"></xs:element> + <xs:any processContents="lax"></xs:any> + </xs:choice> + </xs:sequence> + </xs:complexType> + + <xs:attribute name="Base" type="xs:string"></xs:attribute> + <xs:attribute name="CID" type="base32Binary"></xs:attribute> + <xs:attribute name="Generator" type="xs:string"></xs:attribute> + <xs:attribute name="Incomplete" type="zeroOne" default="0"></xs:attribute> + <xs:attribute name="Name" type="xs:string"></xs:attribute> + <xs:attribute name="Size" type="xs:int"></xs:attribute> + <xs:attribute name="Version" type="xs:int"></xs:attribute> + + <xs:element name="FileListing"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="ContainerType"> + <xs:attribute ref="CID" use="required"></xs:attribute> + <xs:attribute ref="Version" use="required"></xs:attribute> + <xs:attribute ref="Generator" use="optional"></xs:attribute> + <xs:attribute ref="Base" use="required"></xs:attribute> + <xs:anyAttribute processContents="lax"></xs:anyAttribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="Directory"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="ContainerType"> + <xs:attribute ref="Name" use="required"></xs:attribute> + <xs:attribute ref="Incomplete" use="optional"></xs:attribute> + <xs:anyAttribute processContents="lax"></xs:anyAttribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="File"> + <xs:complexType> + <xs:sequence> + <xs:any minOccurs="0" maxOccurs="unbounded"></xs:any> + </xs:sequence> + <xs:attribute ref="Name" use="required"></xs:attribute> + <xs:attribute ref="Size" use="required"></xs:attribute> + <xs:anyAttribute processContents="lax"></xs:anyAttribute> + </xs:complexType> + </xs:element> + +</xs:schema> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-03-25 19:29:19
|
Revision: 78 http://adc.svn.sourceforge.net/adc/?rev=78&view=rev Author: ullner Date: 2011-03-25 19:29:13 +0000 (Fri, 25 Mar 2011) Log Message: ----------- Editorial updates. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2011-01-02 12:44:39 UTC (rev 77) +++ trunk/ADC.txt 2011-03-25 19:29:13 UTC (rev 78) @@ -1,6 +1,6 @@ = ADC Protocol Fredrik Ullner <ul...@gm...> -1.0.2, January 2011 +1.0.2, March 2011 == Abstract ADC is a text protocol for a client-server network similar to Neo-Modus' @@ -23,7 +23,7 @@ The latest draft of the next version of this document as well as intermediate and older versions can be downloaded from $URL$. -This version correspods to $Revision$. +This version corresponds to $Revision$. === Version 1.0.2, UNRELEASED Fredrik Ullner <ul...@gm...> @@ -55,7 +55,7 @@ type. * Client addresses must be specified in dotted-decimal form ("x.x.x.x") for IPv4 and RFC 4291 form for IPv6. Hub addresses must be specified in URL - form, with "adc" as protocol specifier ("adc://server:port/" and "adc://[server]:port/" for IPv4 and IPv6 respectively). + form, with "adc" as protocol specifier ("adc://server:port/"). * Numbers are sent as strings in standard floating point notation, using '.' as the decimal separator and without a thousands separator. Integers are numbers with neither a decimal portion nor an exponent. Applications should @@ -252,6 +252,7 @@ <xs:complexContent> <xs:extension base="ContainerType"> <xs:attribute ref="Name" use="required"></xs:attribute> + <xs:attribute ref="Incomplete" use="optional"></xs:attribute> <xs:anyAttribute processContents="lax"></xs:anyAttribute> </xs:extension> </xs:complexContent> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ul...@us...> - 2011-01-02 12:44:45
|
Revision: 77 http://adc.svn.sourceforge.net/adc/?rev=77&view=rev Author: ullner Date: 2011-01-02 12:44:39 +0000 (Sun, 02 Jan 2011) Log Message: ----------- Made editorial updates to the document. However, this should create a new version; 1.0.2. AS OF YET UNRELEASED! Check the diff to see the differences (the only "real" difference is the IPv6 RFC reference which is likely people have updated to anyway). It is possible this document contain a mismatch of CRLF/LF. Modified Paths: -------------- trunk/ADC.txt Modified: trunk/ADC.txt =================================================================== --- trunk/ADC.txt 2010-12-02 21:52:35 UTC (rev 76) +++ trunk/ADC.txt 2011-01-02 12:44:39 UTC (rev 77) @@ -1,6 +1,6 @@ = ADC Protocol -Jacek Sieka <arn...@gm...> -1.0.1, May 2008 +Fredrik Ullner <ul...@gm...> +1.0.2, January 2011 == Abstract ADC is a text protocol for a client-server network similar to Neo-Modus' @@ -14,9 +14,9 @@ this structure. ADC stands for anything you would like it to stand for; Advanced Direct Connect is the first neutral thing that springs to mind =). -Many ideas for the protocol come from Jan Vidar Krey's DCTNG draft. Major -contributors include Dustin Brody, Walter Doekes, Timmo Stange, Fredrik -Ullner, Fredrik Stenberg and others. Jon Hess contributed the original Direct +Many ideas for the protocol come from Jan Vidar Krey's DCTNG draft. Major +contributors include Dustin Brody, Walter Doekes, Timmo Stange, Fredrik +Ullner, Fredrik Stenberg and others. Jon Hess contributed the original Direct Connect idea through the Neo-Modus Direct Connect client / hub. == Version history @@ -25,16 +25,25 @@ $URL$. This version correspods to $Revision$. +=== Version 1.0.2, UNRELEASED +Fredrik Ullner <ul...@gm...> + +* Editorial updates + === Version 1.0.1, 2008-05-02 +Jacek Sieka <arn...@gm...> + * Moved extensions to a separate document * Moved specification to a separate project on SourceForge === Version 1.0, 2007-12-01 +Jacek Sieka <arn...@gm...> + * Initial release == Line protocol === General -* All messages begin with a four-letter word. The first letter designates how +* All messages begin with a four-letter word (FOURCC). The first letter designates how the message should be sent and the other three specify what to do. * Parameters are separated by space and a newline (codepoint 0x0a) ends each message. The string "\s" escapes space, "\n" newline and "\\" backslash. @@ -45,8 +54,8 @@ invalid messages and should dispatch unknown messages according to their type. * Client addresses must be specified in dotted-decimal form ("x.x.x.x") for - IPv4 and RFC 1884 form for IPv6. Hub addresses must be specified in URL - form, with "adc" as protocol specifier ("adc://server:port/"). + IPv4 and RFC 4291 form for IPv6. Hub addresses must be specified in URL + form, with "adc" as protocol specifier ("adc://server:port/" and "adc://[server]:port/" for IPv4 and IPv6 respectively). * Numbers are sent as strings in standard floating point notation, using '.' as the decimal separator and without a thousands separator. Integers are numbers with neither a decimal portion nor an exponent. Applications should @@ -66,7 +75,7 @@ === Message syntax .................. message ::= message_body? eol -message_body ::= (b_message_header | cih_message_header | de_message_header | f_message_header | u_message_header | message_header) +message_body ::= (b_message_header | cih_message_header | de_message_header | f_message_header | u_message_header) (separator positional_parameter)* (separator named_parameter)* b_message_header ::= 'B' command_name separator my_sid cih_message_header ::= ('C' | 'I' | 'H') command_name @@ -101,17 +110,17 @@ message type only to aid in parsing the message and otherwise ignore it. The following message types are defined: -[separator="|"] -```_ -B | Broadcast | Hub must send message to all connected clients, including the sender of the message. -C | Client message | Clients must use this message type when communicating directly over TCP. -D | Direct message | The hub must send the message to the target_sid user. -E | Echo message | The hub must send the message to the target_sid user and the my_sid user. -F | Feature broadcast | The hub must send message to all clients that support both all required (+) and no excluded (-) features named. The feature name is matched against the corresponding SU field in INF sent by each client. -H | Hub message | Clients must use this message type when a message is intended for the hub only. -I | Info message | Hubs must use this message type when sending a message to a client that didn't come from another client. -U | UDP message | Clients must use this message type when communicating directly over UDP. -___ +[options="autowidth"] +|===== +|B |Broadcast |Hub must send message to all connected clients, including the sender of the message. +|C |Client message |Clients must use this message type when communicating directly over TCP. +|D |Direct message |The hub must send the message to the target_sid user. +|E |Echo message |The hub must send the message to the target_sid user and the my_sid user. +|F |Feature broadcast |The hub must send message to all clients that support both all required (+) and no excluded (-) features named. The feature name is matched against the corresponding SU field in INF sent by each client. +|H |Hub message |Clients must use this message type when a message is intended for the hub only. +|I |Info message |Hubs must use this message type when sending a message to a client that didn't come from another client. +|U |UDP message |Clients must use this message type when communicating directly over UDP. +|===== === Session hash Certain commands require the use of a hash function. The hash function used is @@ -298,6 +307,8 @@ unlisted items. "1" means the directory contains unlisted items, "0" that it does not. Incomplete="0" is the default and may thus be omitted. +"TTH" is used by the TIGR extension. + More information may be added to the file by extensions, but is not guaranteed to be interpreted by other clients. @@ -313,13 +324,13 @@ clients may support using the message in additional contexts as well. The context codes are as follows: -[separator="|"] -``_ -F | From hub (hub-client TCP) -T | To hub (hub-client TCP) -C | Between clients (client-client TCP) -U | Between clients (client-client UDP) -___ +[options="autowidth"] +|===== +|F |From hub (hub-client TCP) +|T |To hub (hub-client TCP) +|C |Between clients (client-client TCP) +|U |Between clients (client-client UDP) +|===== When requesting a new client-client connection, this protocol is identified by "ADC/1.0". @@ -355,47 +366,47 @@ Severity values: -[separator="|"] -``_ -0 | Success (used for confirming commands), error code must be "00", and an additional flag "FC" contains the FOURCC of the command being confirmed if applicable. -1 | Recoverable (error but no disconnect) -2 | Fatal (disconnect) -___ +[options="autowidth"] +|===== +|0 |Success (used for confirming commands), error code must be "00", and an additional flag "FC" contains the FOURCC of the command being confirmed if applicable. +|1 |Recoverable (error but no disconnect) +|2 |Fatal (disconnect) +|===== Error codes: -[separator="|"] -``_ -00 | Generic, show description -x0 | Same as 00, but categorized according to the rough structure set below -10 | Generic hub error -11 | Hub full -12 | Hub disabled -20 | Generic login/access error -21 | Nick invalid -22 | Nick taken -23 | Invalid password -24 | CID taken -25 | Access denied, flag "FC" is the FOURCC of the offending command. Sent when a user is not allowed to execute a particular command -26 | Registered users only -27 | Invalid PID supplied -30 | Kicks/bans/disconnects generic -31 | Permanently banned -32 | Temporarily banned, flag "TL" is an integer specifying the number of seconds left until it expires (This is used for kick as well…). -40 | Protocol error -41 | Transfer protocol unsupported, flag "TO" the token, flag "PR" the protocol string. The client receiving a CTM or RCM should send this if it doesn't support the C-C protocol. -42 | Direct connection failed, flag "TO" the token, flag "PR" the protocol string. The client receiving a CTM or RCM should send this if it tried but couldn't connect. -43 | Required INF field missing/bad, flag "FM" specifies missing field, "FB" specifies invalid field. -44 | Invalid state, flag "FC" the FOURCC of the offending command. -45 | Required feature missing, flag "FC" specifies the FOURCC of the missing feature. -46 | Invalid IP supplied in INF, flag "I4" or "I6" specifies the correct IP. -47 | No hash support overlap in SUP between client and hub. -50 | Client-client / file transfer error -51 | File not available -52 | File part not available -53 | Slots full -54 | No hash support overlap in SUP between clients. -___ +[options="autowidth"] +|===== +|00 |Generic, show description +|x0 |Same as 00, but categorized according to the rough structure set below +|10 |Generic hub error +|11 |Hub full +|12 |Hub disabled +|20 |Generic login/access error +|21 |Nick invalid +|22 |Nick taken +|23 |Invalid password +|24 |CID taken +|25 |Access denied, flag "FC" is the FOURCC of the offending command. Sent when a user is not allowed to execute a particular command +|26 |Registered users only +|27 |Invalid PID supplied +|30 |Kicks/bans/disconnects generic +|31 |Permanently banned +|32 |Temporarily banned, flag "TL" is an integer specifying the number of seconds left until it expires (This is used for kick as well…). +|40 |Protocol error +|41 |Transfer protocol unsupported, flag "TO" the token, flag "PR" the protocol string. The client receiving a CTM or RCM should send this if it doesn't support the C-C protocol. +|42 |Direct connection failed, flag "TO" the token, flag "PR" the protocol string. The client receiving a CTM or RCM should send this if it tried but couldn't connect. +|43 |Required INF field missing/bad, flag "FM" specifies missing field, "FB" specifies invalid field. +|44 |Invalid state, flag "FC" the FOURCC of the offending command. +|45 |Required feature missing, flag "FC" specifies the FOURCC of the missing feature. +|46 |Invalid IP supplied in INF, flag "I4" or "I6" specifies the correct IP. +|47 |No hash support overlap in SUP between client and hub. +|50 |Client-client / file transfer error +|51 |File not available +|52 |File part not available +|53 |Slots full +|54 |No hash support overlap in SUP between clients. +|===== Description: Description of the error, suitable for viewing directly by the user @@ -467,36 +478,35 @@ Fields: -[separator="|"] -```_ -Code | Type | Description -___ -ID | base32 | The CID of the client. Mandatory for C-C connections. -PD | base32 | The PID of the client. Hubs must check that the hash(PID) == CID and then discard the field before broadcasting it to other clients. Must not be sent in C-C connections. -I4 | IPv4 | IPv4 address without port. A zero address (0.0.0.0) means that the server should replace it with the real IP of the client. Hubs must check that a specified address corresponds to what the client is connecting from to avoid DoS attacks and only allow trusted clients to specify a different address. Clients should use the zero address when connecting, but may opt not to do so at the user's discretion. Any client that supports incoming TCPv4 connections must also add the feature TCP4 to their SU field. -I6 | IPv6 | IPv6 address without port. A zero address (::) means that the server should replace it with the IP of the client. Any client that supports incoming TCPv6 connections must also add the feature TCP6 to their SU field. -U4 | integer | Client UDP port. Any client that supports incoming UDPv4 packets must also add the feature UDP4 to their SU field. -U6 | integer | Same as U4, but for IPv6. Any client that supports incoming UDPv6 packets must also add the feature UDP6 to their SU field. -SS | integer | Share size in bytes -SF | integer | Number of shared files -VE | string | Client identification, version (client-specific, a short identifier then a dotted version number is recommended) -US | integer | Maximum upload speed, bytes/second -DS | integer | Maximum download speed, bytes/second -SL | integer | Maximum simultaneous upload connections (slots) -AS | integer | Automatic slot allocator speed limit, bytes/sec. The client keeps opening slots as long as its total upload speed doesn't exceed this value. -AM | integer | Minimum simultaneous upload connectins in automatic slot manager mode -EM | string | E-mail address -NI | string | Nickname (or hub name). The hub must ensure that this is unique in the hub up to case-sensitivity. Valid are all characters in the Unicode character set with code point above 32, although hubs may limit this further as they like with an appropriate error message. -DE | string | Description. Valid are all characters in the Unicode character set with code point equal to or greater than 32. -HN | integer | Hubs where user is a normal user and in NORMAL state -HR | integer | Hubs where user is registered (had to supply password) and in NORMAL state -HO | integer | Hubs where user is op and in NORMAL state -TO | string | Token, as received in RCM/CTM, when establishing a C-C connection. -CT | integer | Client (user) type, 1=bot, 2=registered user, 4=operator, 8=super user, 16=hub owner, 32=hub (used when the hub sends an INF about itself). Multiple types are specified by adding the numbers together. -AW | integer | 1=Away, 2=Extended away, not interested in hub chat (hubs may skip sending broadcast type MSG commands to clients with this flag) -SU | string | Comma-separated list of feature FOURCC's. This notifies other clients of extended capabilities of the connecting client. -RF | string | URL of referer (hub in case of redirect, web page) -___ +[options="autowidth,header"] +|===== +|Code |Type |Description +|ID |base32 |The CID of the client. Mandatory for C-C connections. +|PD |base32 |The PID of the client. Hubs must check that the hash(PID) == CID and then discard the field before broadcasting it to other clients. Must not be sent in C-C connections. +|I4 |IPv4 |IPv4 address without port. A zero address (0.0.0.0) means that the server should replace it with the real IP of the client. Hubs must check that a specified address corresponds to what the client is connecting from to avoid DoS attacks and only allow trusted clients to specify a different address. Clients should use the zero address when connecting, but may opt not to do so at the user's discretion. Any client that supports incoming TCPv4 connections must also add the feature TCP4 to their SU field. +|I6 |IPv6 |IPv6 address without port. A zero address (::) means that the server should replace it with the IP of the client. Any client that supports incoming TCPv6 connections must also add the feature TCP6 to their SU field. +|U4 |integer |Client UDP port. Any client that supports incoming UDPv4 packets must also add the feature UDP4 to their SU field. +|U6 |integer |Same as U4, but for IPv6. Any client that supports incoming UDPv6 packets must also add the feature UDP6 to their SU field. +|SS |integer |Share size in bytes +|SF |integer |Number of shared files +|VE |string |Client identification, version (client-specific, a short identifier then a dotted version number is recommended) +|US |integer |Maximum upload speed, bytes/second +|DS |integer |Maximum download speed, bytes/second +|SL |integer |Maximum simultaneous upload connections (slots) +|AS |integer |Automatic slot allocator speed limit, bytes/sec. The client keeps opening slots as long as its total upload speed doesn't exceed this value. +|AM |integer |Minimum simultaneous upload connectins in automatic slot manager mode +|EM |string |E-mail address +|NI |string |Nickname (or hub name). The hub must ensure that this is unique in the hub up to case-sensitivity. Valid are all characters in the Unicode character set with code point above 32, although hubs may limit this further as they like with an appropriate error message. +|DE |string |Description. Valid are all characters in the Unicode character set with code point equal to or greater than 32. +|HN |integer |Hubs where user is a normal user and in NORMAL state +|HR |integer |Hubs where user is registered (had to supply password) and in NORMAL state +|HO |integer |Hubs where user is op and in NORMAL state +|TO |string |Token, as received in RCM/CTM, when establishing a C-C connection. +|CT |integer |Client (user) type, 1=bot, 2=registered user, 4=operator, 8=super user, 16=hub owner, 32=hub (used when the hub sends an INF about itself). Multiple types are specified by adding the numbers together. +|AW |integer |1=Away, 2=Extended away, not interested in hub chat (hubs may skip sending broadcast type MSG commands to clients with this flag) +|SU |string |Comma-separated list of feature FOURCC's. This notifies other clients of extended capabilities of the connecting client. +|RF |string |URL of referrer (hub in case of redirect, web page) +|===== NOTE: Normally one would only accept an IP (I4 or I6) that is the same as the source IP of the connecting peer. Use caution when accepting unknown IPs. Only @@ -525,11 +535,11 @@ Flags: -[separator="|"] -``_ -PM<group-SID> | Private message, <group-SID> is the SID clients must send responses to. This field must contain the originating SID if this is a normal private conversation. -ME | 1 = message should be displayed as /me in IRC ("*nick text") -___ +[options="autowidth"] +|===== +|PM<group-SID> |Private message, <group-SID> is the SID clients must send responses to. This field must contain the originating SID if this is a normal private conversation. +|ME |Speak in third person, 1 = message should be displayed as /me in IRC ("*nick text") +|===== ==== SCH SCH @@ -542,15 +552,15 @@ unless no known fields are present in which case the client must ignore the search. -[separator="|"] -``_ -AN, NO, EX | String search term, where AN is include (and), NO is exclude (and not), and EX is extension. Each filename (including the path to it) should be matched using case insensitive substring search as follows: match all AN, remove those that match any NO, and make sure the extension matches at least one of the EX (if it is present). Extensions must be sent without the leading '.'. -LE | Smaller (less) than or equal size in bytes -GE | Larger (greater) than or equal size in bytes -EQ | Exact size in bytes -TO | Token, string. Used by the client to tell one search from the other. If present, the responding client must copy this field to each search result. -TY | File type, to be chosen from the following (none specified = any type): 1 = File, 2 = Directory -___ +[options="autowidth"] +|===== +|AN, NO, EX |String search term, where AN is include (and), NO is exclude (and not), and EX is extension. Each filename (including the path to it) should be matched using case insensitive substring search as follows: match all AN, remove those that match any NO, and make sure the extension matches at least one of the EX (if it is present). Extensions must be sent without the leading period (\'.'). +|LE |Smaller (less) than or equal size in bytes +|GE |Larger (greater) than or equal size in bytes +|EQ |Exact size in bytes +|TO |Token, string. Used by the client to tell one search from the other. If present, the responding client must copy this field to each search result. +|TY |File type, to be chosen from the following (none specified = any type): 1 = File, 2 = Directory +|===== Searching by UDP is subject to IP spoofing; can thus be used to initiate a DoS attack. Clients should only accept incoming UDP searches in a trusted @@ -566,13 +576,13 @@ encouraged to supply additional fields if available. Passive results should be limited to 5 and active to 10. -[separator="|"] -``_ -FN | Full filename including path in share -SI | Size, in bytes -SL | Slots currently available -TO | Token -___ +[options="autowidth"] +|===== +|FN |Full filename including path in share +|SI |Size, in bytes +|SL |Slots currently available +|TO |Token +|===== ==== CTM CTM protocol separator port separator token @@ -632,14 +642,14 @@ The following flags may be present: -[separator="|"] -``_ -ID | SID of the initiator of the disconnect (for example the one that issued a kick). -TL | Time Left until reconnect is allowed, in seconds. -1 = forever. -MS | Message. -RD | Redirect server URL. -DI | Any client that has this flag in the QUI message should have its transfers terminated by other clients connected to it, as it is unwanted in the system. -___ +[options="autowidth"] +|===== +|ID |SID of the initiator of the disconnect (for example the one that issued a kick). +|TL |Time Left until reconnect is allowed, in seconds. -1 = forever. +|MS |Message. +|RD |Redirect server URL. +|DI |Any client that has this flag in the QUI message should have its transfers terminated by other clients connected to it, as it is unwanted in the system. +|===== ==== GET GET type identifier start_pos bytes @@ -695,36 +705,34 @@ == Examples === Client – Hub connection -[separator="|"] -``_ -Client | Hub -___ -HSUP ADBASE ADTIGR ... | - | ISUP ADBASE ADTIGR ... - | ISID <client-sid> - | IINF HU1 HI1 ... -BINF <my-sid> ID... PD... | - | IGPA ... -HPAS ... | - | BINF <all clients> - | BINF <Client-SID> -... | ... -___ +[options="autowidth,header"] +|===== +|Client |Hub +|HSUP ADBASE ADTIGR ...| +| |ISUP ADBASE ADTIGR ... +| |ISID <client-sid> +| |IINF CT32 ... +|BINF <my-sid> ID... PD... | +| |IGPA ... +|HPAS ... | +| |BINF <all clients> +| |BINF <Client-SID> +|... |... +|===== === Client – Client connection -[separator="|"] -``_ -Client | Server -___ -CSUP ADBASE ADTIGR ... | - | CSUP ADBASE ADTIGR ... - | CINF IDxxx -CINF IDxxx TO<token> | - | CGET ... -CSND ... | -<data> | -___ +[options="autowidth,header"] +|===== +|Client |Server +|CSUP ADBASE ADTIGR ... | +| |CSUP ADBASE ADTIGR ... +| |CINF IDxxx +|CINF IDxxx TO<token> | +| |CGET ... +|CSND ... | +|<data> | +|===== == Standard Extensions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |