A Gnutella web cache, also known as a GWebCache, is used by Gnutella2 and Gnutella clients to make an initial connection to their respective networks. A GWebCache uses standard HTTP to transmit data.
Gnutella Web Cache
editGnutella 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.
A GWC is a simple script that can be put on any webserver that supports one of the following scripting languages:
- JSP (Java Servlet)
- Jums Web Cache (Excellent for heavy loads)
- C
- GhostWhiteCrab (For dedicated server environments and people who know how to compile C source code!)
- ASP
- Perl
- Jon Atkins' perlgcache
- The original GnuWebCache
- PHP (Tip: PHP GWCs are usually the easiest to run and setup on a server.)
- PHPGnuCacheII
- Bazooka G2WC
- The original GnuWebCache (PHP version is no longer supported)
- Skulls! Multi-Network WebCache
- Beacon Cache
- Cachechu G2WC
Breakdown Of The Gnutella Web Caches
edit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
^ multi-net: This should be set to Yes only if the cache can handle multiple networks simultaneously without erroneously mixing data of various networks; many caches support multiple networks but they can be used only on ONE network, that it is set in the settings.
Gnutella Web Cache Specifications
editSpecification 1
edit- Networks Served
- Gnutella
- Format
- Update went fine:
- Ex: OK
- Update Warning (Small prob., not that bad):
- Ex:
- Update went fine:
OK
WARNING: Error Message
- 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 Beta |
- 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 Beta |
- 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:
- Mandatory
Specification 2
edit- 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
- Information Output
|
I|pong|Beacon Cache 0.1.5D Beta|gnutella-gnutella2 |
- 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:
- Mandatory
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.
- x_leaves:
- Number of leaves running on a given Gnutella2 hub.
- 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:
- info:
- Output extra details of your cache.
- Start with the informational response: I|
- Ex: I|open-source|1
- Start with the informational response: I|
- Output extra details of your cache.
- support:
- To output USEFUL details of your cache.
- Start with the informational response: I|
- Ex: I|support|gnutella2
- Start with the informational response: I|
- To output USEFUL details of your cache.
- spec:
- To force the specification parameter
- Currently is only supported by Beacon Cache II
- To force the specification parameter
- cluster:
Pinging Caches With Your Cache
edit- 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]|[url adding is enabled]" - example: I|pong|Skulls 0.2.8a|gnutella-gnutella2|1
- Used by Skulls GWC only.
- 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.
- multi
- 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.
- For PHP
Variable Combination Standards
edit- 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.
- Update variable
- 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.
- Should still accept hostfile and urlfile responses for 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.
- If for instance a ping and request exist, you should always handle them properly.
Further Information
edit