GWC specs
For general information on GWCs, have a look at the GWC Wiki page.
Translation |
Do not translate this page into other languages. It is either low priority, too specific or incomplete. | e |
This page is thought to give an overview over the GWC specifications as they are implemented into Shareaza.
A GWC is a simple script that can be put on any webserver that supports one of the following scripting languages:
- PHP (Tip: PHP GWCs are usually the easiest to run and setup on a server.)
- Cachechu G2WC
- Skulls! Multi-Network WebCache
- Beacon Cache
- Bazooka G2WC
- PHPGnuCacheII
- The original GnuWebCache (PHP version is no longer supported)
- C
- GhostWhiteCrab (For dedicated server environments and people who know how to compile C source code!)
- JSP (Java Servlet)
- Jums Web Cache (Excellent for heavy loads)
- ASP
- Perl
- Jon Atkins' perlgcache
- The original GnuWebCache
Breakdown Of The Gnutella Web Caches:
Cache: | Gnutella: | Gnutella2: | Spec 1: | Spec 2: | Flat-File: | SQL: | Installer: | Other Networks: | Different network instances: | Latest release date: | |
---|---|---|---|---|---|---|---|---|---|---|---|
Beacon Cache (Core 2) | Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes (As of 0.2.0 Alpha) | Yes
|
Yes
|
2009-09-14 | |
Beacon Cache (Core 1) | Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No | Yes
|
Yes
|
Yes
| ||
Skulls | Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No | No | Yes
|
Yes
|
2015-04-10 | |
JumsWebCache | Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No | No | Yes
|
Yes
| ||
GnuWebCache (Perl) | Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No | No | Yes
|
Yes
| ||
GnuWebCache (PHP) | Yes
|
No | Yes
|
No | Yes
|
No | No | No | No | ||
GhostWhiteCrab(GWC) | Yes
|
Yes
|
Yes
|
Yes
|
N/A | N/A | N/A | Yes
|
No | ||
PHPGnuCacheII | Yes
|
Yes
|
Yes
|
Yes
|
No | Yes
|
No | No | Yes
| ||
Bazooka | No | Yes
|
No | Yes
|
Yes
|
No | Yes
|
No | No | ||
Cachechu | No | Yes
|
No | Yes
|
Yes
|
No | No | No | No | ||
Perlgcache | Yes
|
No | Yes
|
Yes
|
Yes
|
No | No | No | No | ||
Gerry GWC (v2) | Yes
|
No | No | Yes
|
Yes
|
No | No | No | No | ||
Gerry GWC (v1) | Yes
|
No | Yes
|
No | Yes
|
No | No | No | No | ||
Lynn | Yes
|
No | Yes
|
No | Yes
|
No | No | No | No | ||
LynnX | Yes
|
No | No | Yes
|
Yes
|
No | No | No | No |
Recovered |
Warninig: here I have pasted better formatted recovery, but not verified. Row recovery has been mooved below as I don't know if anybody has made any changes in it. If not then row recovery can be deleted. Paste starts from >>Shareaza Specific Details<<, here, and ends at second >>Shareaza Specific Details<< I hope it is visible. --Ocexyz 23:27, 27 July 2009 (UTC) | e |
Get String Breakdown:
- Update a leaf
- "?update=1&ip=(ip):(port)&x_leaves=(leaf count)
- Ping Variable
- Appends &ping=1 to identify the cache name in debug messages (for gnutella and gnutella2 in 2.4.0.0, but only for gnutella2 now in 2.4.0.X for spec1 cache compatibility).
- This feature new to Shareaza.
- Network Variable
- Appends &net=gnutella2 on Gnutella2 queries.
- Does NOT append a network variable on Gnutella(1) queries.
- Client Name / Version Format (2.4.0.0 and earlier):
- &client=(Shareaza 4 letter code (RAZA / RAZB) )
- &version=(Shareaza's version)
- Client Name / Version Format (2.4.0.X):
- If Gnutella
- &client=(Shareaza 4 letter code (RAZA / RAZB) )
- &version=(Shareaza's version)
- If Gnutella2
- &client=(Shareaza 4 letter code (RAZA / RAZB) )+(Shareaza's version)
- If Gnutella
GWC Response Matching:
- i|
- Informational output alone will not be taken as GWC 'success.'
- i|access|period|(time in sec.)
- Time in seconds before Shareaza is allowed to make a request to the cache.
- i|update|period|(time in sec.)
- Time in seconds before Shareaza is allowed to update to the cache.
- i|force|remove and i|update|warning|bad url
- Remove the GWC from the internal list.
- Some Response Matches (added in 2.3.1.X)
- i|NO-URL-NO-HOSTS
- Outputs warning of the cache being totally empty to the system log.
- i|NO-URL
- Outputs warning of the cache having no alternative URLs to the system log.
- i|NO-HOSTS
- Outputs warning of the cache having no hosts to the system log.
- i|warning|
- Outputs warning of the cache to the system log.
- ERROR Something Failed
- Outputs warning of the cache to the system log(Buggy Bazooka GWCs workaround).
- i|warning|You came back too early (2.3.1.X)
- i|warning|client|early (2.3.1.X)
- WARNING: You came back too early (2.3.1.X)
- ERROR: Client returned too early (2.3.1.X)
- Flood detection for the update side.
- Outputs GWebCache(update) Too many connection attempts to the system log.
- too early (2.3.1.X)
- early (2.4.0.X)
- Flood detection for the request side.
- Outputs GWebCache URL: Too many connection attempts to the system log.
- i|update|OK
- Outputs "GWebCache(v2) Update Passed: " to the system log.
- OK
- Outputs "GWebCache(v1) Update Passed: " to the system log.
- i|NO-URL-NO-HOSTS
Gnutella Web Cache Specifications
Specification 1:
- Networks Served
- Gnutella
- Format
- Update went fine:
- Ex: OK
- Update Warning (Small prob., not that bad):
- Ex: OKWARNING: Error Message
- Update went fine:
- Severe Warning (No 'OK' message sent)
- Ex: WARNING: Error Message
- URL Output:
- Ex: http://somefreakinrandomcache.com/cache/gcache.php
- OR - WITH A PORT NUMBER (If not 80)
- Ex: http://somefreakinrandomcache.com/cache/gcache.php
- Host Output:
- Ex: 66.132.55.12:6346
- Pong (ping variable response) - was explained below under the topic: variables.
- Example Cache Output (Beacon Cache) For urlfile Command
- Example "urlfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&urlfile=1
- Example URL Output:
- Example "urlfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&urlfile=1
- Example Cache Output (Beacon Cache) For hostfile Command
- Example "hostfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&hostfile=1
- Example Host Output:
- Example "hostfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&hostfile=1
PONG Beacon Cache 0.1.5D Beta71.8.84.153:391599.248.214.157:2752969.60.241.55:16369193.253.239.246:3021868.156.175.121:634871.179.7.241:1834474.196.22.241:634812.210.197.194:10531222.150.143.77:1000058.85.231.135:634624.141.199.164:2020572.175.201.195:634869.81.129.228:488097.81.221.63:1321970.15.130.224:7759216.211.188.106:5190375.167.168.156:4866012.214.14.3:3591676.177.244.106:2418098.165.218.139:3963068.112.182.125:368568.117.204.57:2348265.12.154.25:4076069.180.47.169:571175.138.40.173:2498798.201.19.0:3366270.187.2.144:634868.186.209.107:1442969.159.7.61:634876.208.176.196:48199 |
- For combining a hostfile and urlfile request:
- Warning: This is non-standard.
- Example Cache Output (Beacon Cache) For bfile Command
- Example "bfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&bfile=1
- Example Host and URL Output:
- Example "bfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&bfile=1
PONG Beacon Cache 0.1.5D Beta71.8.84.153:391599.248.214.157:2752969.60.241.55:16369193.253.239.246:3021868.156.175.121:634871.179.7.241:1834474.196.22.241:634812.210.197.194:10531222.150.143.77:1000058.85.231.135:634624.141.199.164:2020572.175.201.195:634869.81.129.228:488097.81.221.63:1321970.15.130.224:7759216.211.188.106:5190375.167.168.156:4866012.214.14.3:3591676.177.244.106:2418098.165.218.139:3963068.112.182.125:368568.117.204.57:2348265.12.154.25:4076069.180.47.169:571175.138.40.173:2498798.201.19.0:3366270.187.2.144:634868.186.209.107:1442969.159.7.61:634876.208.176.196:48199http://gwc.frodoslair.net/skulls/skulls.phphttp://bbs.robertwoolley.co.uk/GWebCache/gcache.phphttp://g2.tjtech.org/g2/http://g2.tjtech.org/g2/index.phphttp://gwc.monnsta.net/http://holograph.uni.cc/other/skulls.phphttp://gwc.nickstallman.net/http://gwc.eod.cc/skulls.phphttp://gwc.frodoslair.net/skulls/skullshttp://gwc.werwin.net/skulls.php |
Variables
- Mandatory
- ping:
- Response should have this always: PONG
- After, put the cache's name. ex: PONG fakecache 0.01
- client:
- Four letter code of the client. ex: RAZA
- version:
- Version number of the client.
- urlfile:
- Used by the client to request alternate cache urls.
- hostfile:
- Used by the client to request IPs with port numbers attached.
- url:
- Client update giving an alternate cache URL.
- Formatted with a http:// prefix to each cache.
- ip:
- Client update giving one's IP to submit.
- url1:
- OLD OUTDATED Client update giving an alternate cache URL.
- Formatted with a http:// prefix to each cache.
- ip1:
- OLD OUTDATED Client update giving one's IP to submit.
- ping:
- Optional
- bfile:
- For clients to request both URLs and IPs from the cache at the same time.
- statfile:
- Statistics of the cache request:
- First line: Total requests of the cache number.
- Second line: Requests of the cache an hour number.
- Third line: Updates of the cache an hour number.
- Statistics of the cache request:
- bfile:
Specification 2:
Networks Served
- Gnutella, Gnutella2, etc.
Format
- Information Output
- Starts with: I|
- Categories
- Pong (ping variable response) - Described below under the topic: variables.
- Update Status Response
- Format: I|update
- Responses
- I|update|OK
- - Everything went fine.
- I|update|OK|WARNING
- Small warning.
- I|update|WARNING
- Severe warning
- I|update|OK
- Plain Warnings
- Format: I|WARNING
- Append any warning messages after it - Ex: I|WARNING|You came back too early
- Format: I|WARNING
- Extra Info - Described below under the topic: variables.
- Categories
- Starts with: I|
- Host Output
- Starts with: H|
- Add the IP with its port:
- Ex: H|0.0.0.0:6346
- Add the time, thereafter, of the host's (In seconds*) time in cache:
- Ex: H|0.0.0.0:6346|45
- If cluster exists with cluster=somerandomwords
- Add the clustered words after the host's age:
- Ex: H|0.0.0.0:6346|45|somerandomwords
- Add the clustered words after the host's age:
- URL Output
- Starts with: U|
- Add the URL with http:// before it, plus the port (if it's not 80).
- Add the time, thereafter, of the URL's time (In seconds*) in cache:
- Example Cache Output (Beacon Cache) For get Command
- Example URL: http://grantgalitz.com/Beacon/gwc.php?get=1&client=RAZA&version=2.3.1.3&net=gnutella2&ping=1
- Example "Get" Output:
- Example URL: http://grantgalitz.com/Beacon/gwc.php?get=1&client=RAZA&version=2.3.1.3&net=gnutella2&ping=1
pong|Beacon Cache 0.1.5D Beta|gnutella-gnutella2H|65.9.200.243:4968|248261H|68.228.129.75:44599|242678H|98.240.196.122:8206|240719H|76.104.12.133:14921|218273H|69.136.1.12:3924|211610H|81.154.208.71:8595|174402H|97.96.105.51:2076|153610H|74.192.153.212:39340|144203H|72.190.106.57:12584|132984H|78.93.71.132:12334|125668H|82.43.248.184:27560|97974H|196.205.224.97:6357|86763H|74.129.219.30:33172|82005H|76.104.12.133:19185|57182H|69.59.83.131:18442|38628U|http://www.k33bz.com/g2/bazooka.php|248639U|http://gwebcache.ns1.net/|248592U|http://gwc2.wodi.org/skulls.php|248384U|http://gwc.guufshop.com/skulls/skulls.php|248322U|http://groovy.syxy.com/up/skulls.php|248300U|http://g2.tjtech.org/g2/index.php|247770U|http://midian.jayl.de/g2/bazooka.php|240719U|http://www.dom2porno.info/skulls/skulls.php|207473U|http://gwc.frodoslair.net/skulls/skulls|125668U|http://holograph.uni.cc/other/skulls.php|9642 |
Variables
- Mandatory
- ping:
- Main Part: I|pong|
- Then add the cache name and version: I|pong|fakecache 0.01
- Then lastly add the network support:
- I|pong|fakecache 0.01|gnutella
- - Gnutella only
- I|pong|fakecache 0.01|gnutella2
- - Gnutella2 only
- I|pong|fakecache 0.01|gnutella-gnutella2
- - Gnutella and Gnutella2 served
- I|pong|fakecache 0.01|gnutella
- get:
- Used by clients to requests alternate cache URLs along with IPs and their port numbers.
- update:
- url:
- Client update giving an alternate cache URL.
- Formatted with a http:// prefix to each cache.
- ip:
- Client update giving one's IP to submit.
- url:
- net:
- Which network to serve the client.
- Gnutella
- Ex: net=gnutella
- Gnutella2
- Ex: net=gnutella2
- Should always be lowercase
- GWCs should automatically convert network name given to lowercase to prevent Net ID mismatches
- Gnutella
- Which network to serve the client.
- ping:
solely on case alone.
-
- client:
- Four letter code of the client. ex: RAZA
- version:
- Version number of the client.
- client:
- Optional
- cluster:
- To add extra info to an IP update.
- Output by cache: H|0.0.0.0|AGE OF HOST (Seconds)|clustering some bull****
- To add extra info to an IP update.
- statfile:
- Exactly like the specification 1 statfile (Same routine and output style).
- Statistics of the cache request:
- First line: Total requests of the cache number.
- Second line: Requests of the cache an hour number.
- Third line: Updates of the cache an hour number.
- cluster:
Specification 2.1
This is an extension of specification 2, not a separate specification! Pong extension
- Append the networks supported joined by a hyphen '-'.
- Used for client-side validation of networks supported and for network support reporting to other web caches.
- Format:
- I|pong|cache name|network names joined by '-'
- Format Examples:
- I|pong|fakecache 0.01|gnutella
- - Gnutella only
- I|pong|fakecache 0.01|gnutella2
- - Gnutella2 only
- I|pong|fakecache 0.01|gnutella-gnutella2
- - Gnutella and Gnutella2 served
- I|pong|fakecache 0.01|gnutella
Host Output
- Just like specification 2, but with more fields supported for host output.
- H|ip:port|age in cache|clustering|leaves|4 letter vendor code|reported uptime of host|max. leaves possible
- The host, age, and clustering fields are all still the same as in specification 2.
- The leaf count of the hub reported is in the 5th field.
- The vendor code with version number is in the 6th field.
- H|ip:port|age in cache|clustering|leaves|4 letter vendor code|reported uptime of host|max. leaves possible
Request Control Variables:
- getleaves
- Used to obtain leaf counts of hubs given
- 4th field ultilized for current leaf count.
- 7th field ultilized for maximum leaf slots possible.
- Use this as 'getleaves=1' or 'getleaves' to enable.
- getclusters
- Enables/Disables clustering.
- Use this as 'getclusters=1'.
- Using 'getclusters' or 'getclusters=0' disables cluster output.
- getvendors
- Used to obtain the vendor code w/ version number of the hubs given.
- Found in the 5th field.
- Use this as 'getvendors=1' or 'getvendors' to enable.
- getuptime
- Used to obtain the vendor code w/ version number of the hubs given.
- Value is static, do not change the value given when time passes.
- Found in the 6th field.
- Use this as 'getuptime=1' or 'getuptime' to enable.
- spec
- To force the specification parameter
- Currently is only supported by Beacon Cache II
- pv
- Similar to the 'spec' parameter, except that it does not force, instead it simply negotiates the specification.
Special Data Requests
- info
- Outputs extra details of your cache.
- Start with the informational response: I|
- Ex: I|open-source|1
- Start with the informational response: I|
- Outputs extra details of your cache.
- support
- Outputs USEFUL details of your cache.
- Start with the informational response: I|
- Ex: I|support|gnutella2
- Start with the informational response: I|
- Outputs USEFUL details of your cache.
- getnetworks
- Outputs the enabled networks in two formats.
- Start with the informational response: I|
- For the 'I|nets|' line
- The third field contains the supported networks joined by '-'.
- For the 'I|networks|' line
- Interpret the fields from 3 and beyond as individual network names to challenge against.
- For the 'I|nets|' line
- Examples
-
- I|nets|gnutella-gnutella2
- I|networks|gnutella|gnutella2
-
- Start with the informational response: I|
- Outputs the enabled networks in two formats.
Update Extension Variables:
- x_leaves
- Number of leaves running on a given hub or ultrapeer.
- Value must not be greater than an integer value of 2047.
- Note: It is important to know that PHP automaticaly replace dots with underscores, so to keep compatibility with old/new version of clients all caches should support both variants, example: x.leaves x_leaves
- x_max
- Maximum number of leaves possible on a given hub or ultrapeer.
- Value must not be greater than an integer value of 2047.
- uptime
- Value submitted must be an integer value of the number of seconds of uptime.
- Value must not be greater than an integer value of 1 year (31536000) and less than 1 hour (60).
Pinging Caches With Your Cache
Please follow this standard:
- Client: TEST
- Version: Your Cache's Name
- The old value for "version" was 1
Some variables to attach to the ping (compatibility):
- multi
- Used by some gwcs in their pings to other gwcs.
- It tells the pinged cache to ignore the "net" parameter (so it should never say network not supported) and outputting the pong using this format, if possible, "I|pong|[cache name] [cache version]|[supported networks list]" - example: I|pong|Skulls 0.2.9|gnutella-gnutella2
- Used by Skulls GWC only, supported by Skulls and Beacon Cache II.
- cache
- This is added to every request made by some gwcs, it is for statistical purposes only.
- It simply tells the remote cache that the client is a GWC.
Help
- For PHP
- Use the fsockopen() function to open a connection to a cache.
- Make sure you "write" to the fsockopen carry value to open the GWC's target file.
- Use the fsockopen() function to open a connection to a cache.
Variable Combination Standards
Net variable decides specification!
- There are many ways to determine spec., but going with net is the safe way.
- Skulls GWC does not use the network parameter to determine specification level.
- Beacon Cache (I and II) uses the network parameter to determine the specification level.
Your cache needs to be able to process certain combinations of variables.
- Update variable
- Update should not fail if absent if spec. 2.
- A Specification 2 parameter.
- Update should not fail if absent if spec. 2.
Spec 1 parameters used in Spec 2:
- Should still accept hostfile and urlfile responses for spec. 2.
- Beacon Cache (I and II) accepts these parameters on spec 2.
The 'spec' paameter can be used to force a specification:
- Only known to exist in Beacon Cache II, it can force the request to be handled as a specification 1 or 2 request.
- Spec 1 = 'spec=1'
- Spec 2 = 'spec=2'
- If 'spec' is not equal to any current spec, then default to the predetermined spec.
Multiple variable requests
- If for instance a ping and request exist, you should always handle them properly.
- Same goes with other combos like an update and ping, statfile + ping and info.
- Handle multiple variables as BEST as possible!
- Some scanners and GWCs like to fit all their requests into one URL send.
Further Information:
Gnutella Web Cache
Gnutella requires Gnutella Web Caches (GWC) to get IPs to establish a connection to the network. These are critical to ensuring the health of the network. If you have a dedicated server and can spare some extra bandwidth then please consider running a GWC. People that don't have a dedicated server or are on normal broadband consumer lines should not run a cache from home.
A GWC is a simple script that can be put on any webserver that supports one of the following scripting languages:
- JSP (Java Servlet)
- C
- Perl
- Jon Atkins' perlgcache
- The original GnuWebCache
- PHP
- PHPGnuCacheII - MySQL
- Bazooka G2WC (recommended) - flat files
- Skulls! Multi-Network WebCache - flat files
Further Information:
Recovered |
Warninig: here ends pasted better formatted recovery. Row recovery has been mooved below as I don't know if anybody has made any changes in it. If not then row recovery can be deleted I suppose. Paste starts from >>Shareaza Specific Details<< and ends at second >> Shareaza Specific Details<<, here. I hope it is visible. --Ocexyz 23:27, 27 July 2009 (UTC) | e |
- Get String Breakdown:
o Update a leaf + "?update=1&ip=(ip):(port)&x_leaves=(leaf count) o Ping Variable + Appends &ping=1 to identify the cache name in debug messages (for gnutella and gnutella2 in 2.4.0.0, but only for gnutella2 now in 2.4.0.X for spec1 cache compatibility). + This feature new to Shareaza. o Network Variable + Appends &net=gnutella2 on Gnutella2 queries. + Does NOT append a network variable on Gnutella(1) queries. o Client Name / Version Format (2.4.0.0 and earlier): + &client=(Shareaza 4 letter code (RAZA / RAZB) ) + &version=(Shareaza's version) o Client Name / Version Format (2.4.0.X): + If Gnutella # &client=(Shareaza 4 letter code (RAZA / RAZB) ) # &version=(Shareaza's version) + If Gnutella2 # &client=(Shareaza 4 letter code (RAZA / RAZB) )+(Shareaza's version)
- GWC Response Matching:
o i| + Informational output alone will not be taken as GWC 'success.' o i|access|period|(time in sec.) + Time in seconds before Shareaza is allowed to make a request to the cache. o i|update|period|(time in sec.) + Time in seconds before Shareaza is allowed to update to the cache. o i|force|remove and i|update|warning|bad url + Remove the GWC from the internal list. o Some Response Matches (added in 2.3.1.X) + i|NO-URL-NO-HOSTS # Outputs warning of the cache being totally empty to the system log. + i|NO-URL # Outputs warning of the cache having no alternative URLs to the system log. + i|NO-HOSTS # Outputs warning of the cache having no hosts to the system log. + i|warning| # Outputs warning of the cache to the system log. + ERROR Something Failed # Outputs warning of the cache to the system log(Buggy Bazooka GWCs workaround). + i|warning|You came back too early (2.3.1.X) + i|warning|client|early (2.3.1.X) + WARNING: You came back too early (2.3.1.X) + ERROR: Client returned too early (2.3.1.X) # Flood detection for the update side. # Outputs GWebCache(update) Too many connection attempts to the system log. + too early (2.3.1.X) + early (2.4.0.X) # Flood detection for the request side. # Outputs GWebCache URL: Too many connection attempts to the system log. + i|update|OK # Outputs "GWebCache(v2) Update Passed: " to the system log. + OK # Outputs "GWebCache(v1) Update Passed: " to the system log.
- GWC Response Matching:
o i| + Informational output alone will not be taken as GWC 'success.' o i|access|period|(time in sec.) + Time in seconds before Shareaza is allowed to make a request to the cache. o i|update|period|(time in sec.) + Time in seconds before Shareaza is allowed to update to the cache. o i|force|remove and i|update|warning|bad url + Remove the GWC from the internal list. o Some Response Matches (added in 2.3.1.X) + i|NO-URL-NO-HOSTS # Outputs warning of the cache being totally empty to the system log. + i|NO-URL # Outputs warning of the cache having no alternative URLs to the system log. + i|NO-HOSTS # Outputs warning of the cache having no hosts to the system log. + i|warning| # Outputs warning of the cache to the system log. + ERROR Something Failed # Outputs warning of the cache to the system log(Buggy Bazooka GWCs workaround). + i|warning|You came back too early (2.3.1.X) + i|warning|client|early (2.3.1.X) + WARNING: You came back too early (2.3.1.X) + ERROR: Client returned too early (2.3.1.X) # Flood detection for the update side. # Outputs GWebCache(update) Too many connection attempts to the system log. + too early (2.3.1.X) + early (2.4.0.X) # Flood detection for the request side. # Outputs GWebCache URL: Too many connection attempts to the system log. + i|update|OK # Outputs "GWebCache(v2) Update Passed: " to the system log. + OK # Outputs "GWebCache(v1) Update Passed: " to the system log.
Gnutella Web Cache Specifications
<end of partial recovery by OCE>
<end of recovered content>
<row recovery, start>
Specification 1:
* Networks Served o Gnutella * Format o Update went fine: + Ex: OK o Update Warning (Small prob., not that bad): + Ex:
OK WARNING: Error Message
* Severe Warning (No 'OK' message sent) o Ex:
WARNING: Error Message
* URL Output: o Ex: http://somefreakinrandomcache.com/cache/gcache.php + OR - WITH A PORT NUMBER (If not 80) # Ex: http://somefreakinrandomcache.com:8080/cache/gcache.php * Host Output: o Ex: 66.132.55.12:6346 * Pong (ping variable response) - was explained below under the topic: variables. * Example Cache Output (Beacon Cache) For urlfile Command o Example "urlfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&urlfile=1 + Example URL Output:
Getting urls with a pong combined
PONG Beacon Cache 0.1.5D Beta http://gwc.frodoslair.net/skulls/skulls.php http://bbs.robertwoolley.co.uk/GWebCache/gcache.php http://g2.tjtech.org/g2/ http://g2.tjtech.org/g2/index.php http://gwc.monnsta.net/ http://holograph.uni.cc/other/skulls.php http://gwc.nickstallman.net/ http://gwc.eod.cc/skulls.php http://gwc.frodoslair.net/skulls/skulls http://gwc.werwin.net/skulls.php
* Example Cache Output (Beacon Cache) For hostfile Command o Example "hostfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&hostfile=1 + Example Host Output:
Getting the hosts with a pong combined
PONG Beacon Cache 0.1.5D Beta 71.8.84.153:3915 99.248.214.157:27529 69.60.241.55:16369 193.253.239.246:30218 68.156.175.121:6348 71.179.7.241:18344 74.196.22.241:6348 12.210.197.194:10531 222.150.143.77:10000 58.85.231.135:6346 24.141.199.164:20205 72.175.201.195:6348 69.81.129.228:4880 97.81.221.63:13219 70.15.130.224:7759 216.211.188.106:51903 75.167.168.156:48660 12.214.14.3:35916 76.177.244.106:24180 98.165.218.139:39630 68.112.182.125:3685 68.117.204.57:23482 65.12.154.25:40760 69.180.47.169:5711 75.138.40.173:24987 98.201.19.0:33662 70.187.2.144:6348 68.186.209.107:14429 69.159.7.61:6348 76.208.176.196:48199
* For combining a hostfile and urlfile request: o Warning: This is non-standard. o Example Cache Output (Beacon Cache) For bfile Command + Example "bfile Output" URL: Ex: http://grantgalitz.com/Beacon/gwc.php?ping=1&client=RAZA&version=2.3.1.3&bfile=1 # Example Host and URL Output:
Getting the hosts and urls with a pong combined
PONG Beacon Cache 0.1.5D Beta 71.8.84.153:3915 99.248.214.157:27529 69.60.241.55:16369 193.253.239.246:30218 68.156.175.121:6348 71.179.7.241:18344 74.196.22.241:6348 12.210.197.194:10531 222.150.143.77:10000 58.85.231.135:6346 24.141.199.164:20205 72.175.201.195:6348 69.81.129.228:4880 97.81.221.63:13219 70.15.130.224:7759 216.211.188.106:51903 75.167.168.156:48660 12.214.14.3:35916 76.177.244.106:24180 98.165.218.139:39630 68.112.182.125:3685 68.117.204.57:23482 65.12.154.25:40760 69.180.47.169:5711 75.138.40.173:24987 98.201.19.0:33662 70.187.2.144:6348 68.186.209.107:14429 69.159.7.61:6348 76.208.176.196:48199 http://gwc.frodoslair.net/skulls/skulls.php http://bbs.robertwoolley.co.uk/GWebCache/gcache.php http://g2.tjtech.org/g2/ http://g2.tjtech.org/g2/index.php http://gwc.monnsta.net/ http://holograph.uni.cc/other/skulls.php http://gwc.nickstallman.net/ http://gwc.eod.cc/skulls.php http://gwc.frodoslair.net/skulls/skulls http://gwc.werwin.net/skulls.php
* Variables o Mandatory + ping: # Response should have this always: PONG # After, put the cache's name. ex: PONG fakecache 0.01 + client: # Four letter code of the client. ex: RAZA + version: # Version number of the client. + urlfile: # Used by the client to request alternate cache urls. + hostfile: # Used by the client to request IPs with port numbers attached. + url: # Client update giving an alternate cache URL. # Formatted with a http:// prefix to each cache. + ip: # Client update giving one's IP to submit. + url1: # OLD OUTDATED Client update giving an alternate cache URL. # Formatted with a http:// prefix to each cache. + ip1: # OLD OUTDATED Client update giving one's IP to submit. o Optional + bfile: # For clients to request both URLs and IPs from the cache at the same time. + statfile: # Statistics of the cache request: * First line: Total requests of the cache number. * Second line: Requests of the cache an hour number. * Third line: Updates of the cache an hour number.
Specification 2:
* Networks Served o Gnutella, Gnutella2, etc. * Format o Information Output + Starts with: I| # Categories * Pong (ping variable response) - Described below under the topic: variables. * Update Status Response o Format: I|update o Responses + I|update|OK # - Everything went fine. + I|update|OK|WARNING # Small warning. + I|update|WARNING # Severe warning * Plain Warnings o Format: I|WARNING + Append any warning messages after it - Ex: I|WARNING|You came back too early * Extra Info - Described below under the topic: variables. o Host Output + Starts with: H| + Add the IP with its port: # Ex: H|0.0.0.0:6346 + Add the time, thereafter, of the host's (In seconds*) time in cache: # Ex: H|0.0.0.0:6346|45 + If cluster exists with cluster=somerandomwords # Add the clustered words after the host's age: * Ex: H|0.0.0.0:6346|45|somerandomwords o URL Output + Starts with: U| + Add the URL with http:// before it, plus the port (if it's not 80). # Ex: U|http://somerandomcache.com/ + Add the time, thereafter, of the URL's time (In seconds*) in cache: # Ex: U|http://somerandomcache.com/%7C45 o Example Cache Output (Beacon Cache) For get Command + Example URL: http://grantgalitz.com/Beacon/gwc.php?get=1&client=RAZA&version=2.3.1.3&net=gnutella2&ping=1 # Example "Get" Output:
Getting the hosts and urls with a pong combined
I|pong|Beacon Cache 0.1.5D Beta|gnutella-gnutella2 H|65.9.200.243:4968|248261 H|68.228.129.75:44599|242678 H|98.240.196.122:8206|240719 H|76.104.12.133:14921|218273 H|69.136.1.12:3924|211610 H|81.154.208.71:8595|174402 H|97.96.105.51:2076|153610 H|74.192.153.212:39340|144203 H|72.190.106.57:12584|132984 H|78.93.71.132:12334|125668 H|82.43.248.184:27560|97974 H|196.205.224.97:6357|86763 H|74.129.219.30:33172|82005 H|76.104.12.133:19185|57182 H|69.59.83.131:18442|38628 U|http://www.k33bz.com/g2/bazooka.php%7C248639 U|http://gwebcache.ns1.net/%7C248592 U|http://gwc2.wodi.org/skulls.php%7C248384 U|http://gwc.guufshop.com/skulls/skulls.php%7C248322 U|http://groovy.syxy.com/up/skulls.php%7C248300 U|http://g2.tjtech.org/g2/index.php%7C247770 U|http://midian.jayl.de/g2/bazooka.php%7C240719 U|http://www.dom2porno.info/skulls/skulls.php%7C207473 U|http://gwc.frodoslair.net/skulls/skulls%7C125668 U|http://holograph.uni.cc/other/skulls.php%7C9642
* Variables o Mandatory + ping: # Main Part: I|pong| # Then add the cache name and version: I|pong|fakecache 0.01 # Then lastly add the network support: * I|pong|fakecache 0.01|gnutella o - Gnutella only * I|pong|fakecache 0.01|gnutella2 o - Gnutella2 only * I|pong|fakecache 0.01|gnutella-gnutella2 o - Gnutella and Gnutella2 served + get: # Used by clients to requests alternate cache URLs along with IPs and their port numbers. + update: # url: * Client update giving an alternate cache URL. * Formatted with a http:// prefix to each cache. # ip: * Client update giving one's IP to submit. + net: # Which network to serve the client. * Gnutella o Ex: net=gnutella * Gnutella2 o Ex: net=gnutella2 * Should always be lowercase o GWCs should automatically convert network name given to lowercase to prevent Net ID mismatches
solely on case alone.
* o + client: # Four letter code of the client. ex: RAZA + version: # Version number of the client. o Optional + cluster: # To add extra info to an IP update. * Output by cache: H|0.0.0.0|AGE OF HOST (Seconds)|clustering some bull**** + statfile: # Exactly like the specification 1 statfile (Same routine and output style). # Statistics of the cache request: * First line: Total requests of the cache number. * Second line: Requests of the cache an hour number. * Third line: Updates of the cache an hour number.
Specification 2.1
* This is an extension of specification 2, not a separate specification! * Pong extension o Append the networks supported joined by a hyphen '-'. o Used for client-side validation of networks supported and for network support reporting to other web caches. o Format: + I|pong|cache name|network names joined by '-' + Format Examples: # I|pong|fakecache 0.01|gnutella * - Gnutella only # I|pong|fakecache 0.01|gnutella2 * - Gnutella2 only # I|pong|fakecache 0.01|gnutella-gnutella2 * - Gnutella and Gnutella2 served * Host Output o Just like specification 2, but with more fields supported for host output. + H|ip:port|age in cache|clustering|leaves|4 letter vendor code|reported uptime of host|max. leaves possible # The host, age, and clustering fields are all still the same as in specification 2. # The leaf count of the hub reported is in the 5th field. # The vendor code with version number is in the 6th field. * Request Control Variables: o getleaves + Used to obtain leaf counts of hubs given + 4th field ultilized for current leaf count. + 7th field ultilized for maximum leaf slots possible. + Use this as 'getleaves=1' or 'getleaves' to enable. o getclusters + Enables/Disables clustering. + Use this as 'getclusters=1'. + Using 'getclusters' or 'getclusters=0' disables cluster output. o getvendors + Used to obtain the vendor code w/ version number of the hubs given. + Found in the 5th field. + Use this as 'getvendors=1' or 'getvendors' to enable. o getuptime + Used to obtain the vendor code w/ version number of the hubs given. + Value is static, do not change the value given when time passes. + Found in the 6th field. + Use this as 'getuptime=1' or 'getuptime' to enable. o spec + To force the specification parameter + Currently is only supported by Beacon Cache II o pv + Similar to the 'spec' parameter, except that it does not force, instead it simply negotiates the specification. * Special Data Requests o info + Outputs extra details of your cache. # Start with the informational response: I| * Ex: I|open-source|1 o support + Outputs USEFUL details of your cache. # Start with the informational response: I| * Ex: I|support|gnutella2 o getnetworks + Outputs the enabled networks in two formats. # Start with the informational response: I| * For the 'I|nets|' line o The third field contains the supported networks joined by '-'. * For the 'I|networks|' line o Interpret the fields from 3 and beyond as individual network names to challenge against. # Examples * o I|nets|gnutella-gnutella2 o I|networks|gnutella|gnutella2 * Update Extension Variables: o x_leaves + Number of leaves running on a given hub or ultrapeer. + Value must not be greater than an integer value of 2047. + Note: It is important to know that PHP automaticaly replace dots with underscores, so to keep compatibility with old/new version of clients all caches should support both variants, example: x.leaves x_leaves o x_max + Maximum number of leaves possible on a given hub or ultrapeer. + Value must not be greater than an integer value of 2047. o uptime + Value submitted must be an integer value of the number of seconds of uptime. + Value must not be greater than an integer value of 1 year (31536000) and less than 1 hour (60).
Pinging Caches With Your Cache
* Please follow this standard: o Client: TEST o Version: Your Cache's Name + The old value for "version" was 1 * Some variables to attach to the ping (compatibility): o multi + Used by some gwcs in their pings to other gwcs. + It tells the pinged cache to ignore the "net" parameter (so it should never say network not supported) and outputting the pong using this format, if possible, "I|pong|[cache name] [cache version]|[supported networks list]|[url adding is enabled]" - example: I|pong|Skulls 0.2.8a|gnutella-gnutella2|1 + Used by Skulls GWC only, supported by Skulls and Beacon Cache II. o cache + This is added to every request made by some gwcs, it is for statistical purposes only. + It simply tells the remote cache that the client is a GWC. * Help o For PHP + Use the fsockopen() function to open a connection to a cache. # Make sure you "write" to the fsockopen carry value to open the GWC's target file. * http://us.php.net/manual/en/function.fsockopen.php
Variable Combination Standards
* Net variable decides specification! o There are many ways to determine spec., but going with net is the safe way. o Skulls GWC does not use the network parameter to determine specification level. o Beacon Cache (I and II) uses the network parameter to determine the specification level. * Your cache needs to be able to process certain combinations of variables. o Update variable + Update should not fail if absent if spec. 2. # A Specification 2 parameter. * Spec 1 parameters used in Spec 2: o Should still accept hostfile and urlfile responses for spec. 2. + Beacon Cache (I and II) accepts these parameters on spec 2. * The 'spec' paameter can be used to force a specification: o Only known to exist in Beacon Cache II, it can force the request to be handled as a specification 1 or 2 request. o Spec 1 = 'spec=1' o Spec 2 = 'spec=2' o If 'spec' is not equal to any current spec, then default to the predetermined spec. * Multiple variable requests o If for instance a ping and request exist, you should always handle them properly. + Same goes with other combos like an update and ping, statfile + ping and info. o Handle multiple variables as BEST as possible! + Some scanners and GWCs like to fit all their requests into one URL send.
<row recovery, end>
Further Information:
<content recovered from last aviable backup>
Gnutella Web Cache
Gnutella requires Gnutella Web Caches (GWC) to get IPs to establish a connection to the network. These are critical to ensuring the health of the network. If you have a dedicated server and can spare some extra bandwidth then please consider running a GWC. People that don't have a dedicated server or are on normal broadband consumer lines should not run a cache from home.
A GWC is a simple script that can be put on any webserver that supports one of the following scripting languages:
- JSP (Java Servlet)
- C
- Perl
- Jon Atkins' perlgcache
- The original GnuWebCache
- PHP
- PHPGnuCacheII - MySQL
- Bazooka G2WC (recommended) - flat files
- Skulls! Multi-Network WebCache - flat files