Gtk-Gnutella

Software Screenshot:
Gtk-Gnutella
Software Details:
Version: 1.1.9 updated
Upload Date: 12 Mar 16
Developer: Raphael Manfredi
Distribution Type: Freeware
Downloads: 54

Rating: 3.3/5 (Total Votes: 3)

As its name suggests, Gtk-Gnutella is a Gnutella client written in GTK+ for any GNU/Linux operating systems. It is an open source, efficient, fast, reliable and freely distributed graphical application that allows you to easily connect to a Gnutella peer-to-peer network

Features at a glance

Key features include full support for the Gnutella peer-to-peer (P2P) network, including DHT (Distributed Hash Table), support for Magnet links, state-of-the-art file swarming, support for NAT-PMP (NAT Port Mapping Protocol) and UPnP (Universal Plug and Play), as well as Transport Layer Security (TLS) support.

The application is highly customizable and configurable, it’s low on resources and interoperable any other Gnutella implementation. It provides users with a very modern graphical user interface (GUI) that allows them to easily connect to a Gnutella network and download files. In addition, a command-line interface (CLI) is also provided for advanced Linux users.

Modern, tabbed GUI

As mentioned, Gtk-Gnutella comes with a modern graphical user interface that features tabs, which allows you to quickly navigate between multiple view modes (network, searches, downloads, uploads, statistics, search monitor, upload history, hostcache and search stats). On the left side of the window it will display the total number of connections, uploads and downloads, as well as HTTP, Gnutella and DHT traffic.

Supported operating systems and architectures

Gtk-Gnutella is a multi-platform application that supports Linux, BSD (FreeBSD, NetBSD, OpenBSD), Darwin, Solaris, Tru64 UNIX (OSF/1), SGI IRIX and BeOS operating systems. Supported CPU architectures include x86, x86_64, PowerPC, SPARC and MIPS.

Under the hood and availability

The program is written entirely in the C programming language and uses the cross-platform GTK+ GUI toolkit for its graphical user interface. It has been designed from the offset to run non-stop (24/7), as its consumes very little CPU time.

Currently, Gtk-Gnutella is distributed as pre-built binary packages for Debian GNU/Linux, Ubuntu and their derivatives. It has been successfully tested under 32-bit and 64-bit hardware platforms.

What is new in this release:

  • Improvements:
  • [GTK2] Added translation URL in the "About" GUI dialog.
  • [GTK2] Highlight searches with registered downloads by using green text.
  • [GTK2] Added tri-state column sorting to the "upload history" panel.
  • FAQ: added new entry explaining how to get the magnet of a shared file.
  • Map the "collection" G2 query tag to the Windows / Linux "archive" file set.
  • Map the "torrent" G2 query tag to the "torrent" file set.
  • Added support for "rom", "wordprocessing" and "subtitle" G2 query media types.
  • Further optimized SHA1 computation, now going about twice faster for files.
  • Bug Fixes:
  • page_cache_insert_pages(): fixed incorrect write-lock upgrade logic.
  • pmap_insert_region(): must recompute insertion index if we extend the pmap!
  • tmalloc: fixed thread magazine accounting in the depots.
  • Did not commit back to database after updating the DHT key request count.
  • routing_chunk_move(): must check messages carefully when chunk was moved.
  • route_message(): beware of check_duplicate() which can remove the node.
  • thread_element_matches(): pay more attention to discovered threads.
  • thread_find_tid(): skip thread elements not marked as being valid!
  • node_shutdown_mode(): must correctly account for shutdowning G2 nodes!
  • bogons_changed(): forgot to close opened file descriptor
  • upload_stats_load_history(): added missing break in switch.
  • qrt_compressed(): was not handling QRP compression task cancellation properly.
  • Under the Hood:
  • Added hostile ranges.
  • Updated GeoIP databases for IPv4 and IPv6.
  • Throttle the amount of PUSH messages we can send for a given remote server.
  • Legitimate Shareaza nodes cannot be flagging themselves as ultrapeers.
  • Windows: stack unwinding made safer with more memory checks to avoid faults.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • Added new TSIG_OVFLOW signal sent when a thread overflows its stack.
  • Fixed race condition between concurrent waiter_refcnt_dec() calls.
  • Added logging of layer which reports a TX error in case of assert failure.
  • Track the last seen time (activity) of discovered threads other than main.
  • Prevent glade-2 from outputting support files now, since we patched them.
  • Added tracing of funny X-Falt lines we are seeing when demsh_debug is set.
  • Added tracing of funny X-Alt lines we are seeing when dmesh_debug is set.
  • Added tracing of funny X-Nalt lines we are seeing when dmesh_debug is set.
  • Added crash hook for the thread layer.
  • Added TX layer write-fault mechansim to help detect user error handling bugs.
  • Syntaxic adjustments to make the latest guile happy with definitions.
  • The GUI will now display current bandwidth by default, instead of the average.
  • mingw_exception(): write shorter messages in case of stack overflows.
  • thread_element_reset(): forgot to reset te->stack_base to NULL.
  • header_append(): allow "." in header names.
  • thread_join_internal(): no thread_cancel_test_element() on foreign thread!
  • thread_find_element(): avoid leaving routine without unlocking mutex!
  • cond_wait_until(): now correctly handle underlying cond variable mutation.
  • thread_block_timeout(): don't panic if main thread already unblocked.
  • dir_entry_filename(): made the Windows version thread-safe.
  • hfield_dump(): fixed formatting of continuation lines.
  • dmesh_collect_locations(): only parse the last timestamp when many given.
  • xmalloc_thread_free(): always handle blocks in the cross-thread free list.
  • Hide strtok_free(), forcing clients to use new strtok_free_null().

What is new in version 1.1.5:

  • Improvements:
  • [GTK2] Added translation URL in the "About" GUI dialog.
  • [GTK2] Highlight searches with registered downloads by using green text.
  • [GTK2] Added tri-state column sorting to the "upload history" panel.
  • FAQ: added new entry explaining how to get the magnet of a shared file.
  • Map the "collection" G2 query tag to the Windows / Linux "archive" file set.
  • Map the "torrent" G2 query tag to the "torrent" file set.
  • Added support for "rom", "wordprocessing" and "subtitle" G2 query media types.
  • Further optimized SHA1 computation, now going about twice faster for files.
  • Bug Fixes:
  • page_cache_insert_pages(): fixed incorrect write-lock upgrade logic.
  • pmap_insert_region(): must recompute insertion index if we extend the pmap!
  • tmalloc: fixed thread magazine accounting in the depots.
  • Did not commit back to database after updating the DHT key request count.
  • routing_chunk_move(): must check messages carefully when chunk was moved.
  • route_message(): beware of check_duplicate() which can remove the node.
  • thread_element_matches(): pay more attention to discovered threads.
  • thread_find_tid(): skip thread elements not marked as being valid!
  • node_shutdown_mode(): must correctly account for shutdowning G2 nodes!
  • bogons_changed(): forgot to close opened file descriptor
  • upload_stats_load_history(): added missing break in switch.
  • qrt_compressed(): was not handling QRP compression task cancellation properly.
  • Under the Hood:
  • Added hostile ranges.
  • Updated GeoIP databases for IPv4 and IPv6.
  • Throttle the amount of PUSH messages we can send for a given remote server.
  • Legitimate Shareaza nodes cannot be flagging themselves as ultrapeers.
  • Windows: stack unwinding made safer with more memory checks to avoid faults.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • Added new TSIG_OVFLOW signal sent when a thread overflows its stack.
  • Fixed race condition between concurrent waiter_refcnt_dec() calls.
  • Added logging of layer which reports a TX error in case of assert failure.
  • Track the last seen time (activity) of discovered threads other than main.
  • Prevent glade-2 from outputting support files now, since we patched them.
  • Added tracing of funny X-Falt lines we are seeing when demsh_debug is set.
  • Added tracing of funny X-Alt lines we are seeing when dmesh_debug is set.
  • Added tracing of funny X-Nalt lines we are seeing when dmesh_debug is set.
  • Added crash hook for the thread layer.
  • Added TX layer write-fault mechansim to help detect user error handling bugs.
  • Syntaxic adjustments to make the latest guile happy with definitions.
  • The GUI will now display current bandwidth by default, instead of the average.
  • mingw_exception(): write shorter messages in case of stack overflows.
  • thread_element_reset(): forgot to reset te->stack_base to NULL.
  • header_append(): allow "." in header names.
  • thread_join_internal(): no thread_cancel_test_element() on foreign thread!
  • thread_find_element(): avoid leaving routine without unlocking mutex!
  • cond_wait_until(): now correctly handle underlying cond variable mutation.
  • thread_block_timeout(): don't panic if main thread already unblocked.
  • dir_entry_filename(): made the Windows version thread-safe.
  • hfield_dump(): fixed formatting of continuation lines.
  • dmesh_collect_locations(): only parse the last timestamp when many given.
  • xmalloc_thread_free(): always handle blocks in the cross-thread free list.
  • Hide strtok_free(), forcing clients to use new strtok_free_null().

What is new in version 1.1.4:

  • Improvements:
  • [GTK2] Added translation URL in the "About" GUI dialog.
  • [GTK2] Highlight searches with registered downloads by using green text.
  • [GTK2] Added tri-state column sorting to the "upload history" panel.
  • FAQ: added new entry explaining how to get the magnet of a shared file.
  • Map the "collection" G2 query tag to the Windows / Linux "archive" file set.
  • Map the "torrent" G2 query tag to the "torrent" file set.
  • Added support for "rom", "wordprocessing" and "subtitle" G2 query media types.
  • Further optimized SHA1 computation, now going about twice faster for files.
  • Bug Fixes:
  • page_cache_insert_pages(): fixed incorrect write-lock upgrade logic.
  • pmap_insert_region(): must recompute insertion index if we extend the pmap!
  • tmalloc: fixed thread magazine accounting in the depots.
  • Did not commit back to database after updating the DHT key request count.
  • routing_chunk_move(): must check messages carefully when chunk was moved.
  • route_message(): beware of check_duplicate() which can remove the node.
  • thread_element_matches(): pay more attention to discovered threads.
  • thread_find_tid(): skip thread elements not marked as being valid!
  • node_shutdown_mode(): must correctly account for shutdowning G2 nodes!
  • bogons_changed(): forgot to close opened file descriptor
  • upload_stats_load_history(): added missing break in switch.
  • qrt_compressed(): was not handling QRP compression task cancellation properly.
  • Under the Hood:
  • Added hostile ranges.
  • Updated GeoIP databases for IPv4 and IPv6.
  • Throttle the amount of PUSH messages we can send for a given remote server.
  • Legitimate Shareaza nodes cannot be flagging themselves as ultrapeers.
  • Windows: stack unwinding made safer with more memory checks to avoid faults.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • Added new TSIG_OVFLOW signal sent when a thread overflows its stack.
  • Fixed race condition between concurrent waiter_refcnt_dec() calls.
  • Added logging of layer which reports a TX error in case of assert failure.
  • Track the last seen time (activity) of discovered threads other than main.
  • Prevent glade-2 from outputting support files now, since we patched them.
  • Added tracing of funny X-Falt lines we are seeing when demsh_debug is set.
  • Added tracing of funny X-Alt lines we are seeing when dmesh_debug is set.
  • Added tracing of funny X-Nalt lines we are seeing when dmesh_debug is set.
  • Added crash hook for the thread layer.
  • Added TX layer write-fault mechansim to help detect user error handling bugs.
  • Syntaxic adjustments to make the latest guile happy with definitions.
  • The GUI will now display current bandwidth by default, instead of the average.
  • mingw_exception(): write shorter messages in case of stack overflows.
  • thread_element_reset(): forgot to reset te->stack_base to NULL.
  • header_append(): allow "." in header names.
  • thread_join_internal(): no thread_cancel_test_element() on foreign thread!
  • thread_find_element(): avoid leaving routine without unlocking mutex!
  • cond_wait_until(): now correctly handle underlying cond variable mutation.
  • thread_block_timeout(): don't panic if main thread already unblocked.
  • dir_entry_filename(): made the Windows version thread-safe.
  • hfield_dump(): fixed formatting of continuation lines.
  • dmesh_collect_locations(): only parse the last timestamp when many given.
  • xmalloc_thread_free(): always handle blocks in the cross-thread free list.
  • Hide strtok_free(), forcing clients to use new strtok_free_null().

What is new in version 1.1.3:

  • Improvements:
  • [GTK2] Added translation URL in the "About" GUI dialog.
  • [GTK2] Highlight searches with registered downloads by using green text.
  • [GTK2] Added tri-state column sorting to the "upload history" panel.
  • FAQ: added new entry explaining how to get the magnet of a shared file.
  • Map the "collection" G2 query tag to the Windows / Linux "archive" file set.
  • Map the "torrent" G2 query tag to the "torrent" file set.
  • Added support for "rom", "wordprocessing" and "subtitle" G2 query media types.
  • Further optimized SHA1 computation, now going about twice faster for files.
  • Bug Fixes:
  • page_cache_insert_pages(): fixed incorrect write-lock upgrade logic.
  • pmap_insert_region(): must recompute insertion index if we extend the pmap!
  • tmalloc: fixed thread magazine accounting in the depots.
  • Did not commit back to database after updating the DHT key request count.
  • routing_chunk_move(): must check messages carefully when chunk was moved.
  • route_message(): beware of check_duplicate() which can remove the node.
  • thread_element_matches(): pay more attention to discovered threads.
  • thread_find_tid(): skip thread elements not marked as being valid!
  • node_shutdown_mode(): must correctly account for shutdowning G2 nodes!
  • bogons_changed(): forgot to close opened file descriptor
  • upload_stats_load_history(): added missing break in switch.
  • qrt_compressed(): was not handling QRP compression task cancellation properly.
  • Under the Hood:
  • Added hostile ranges.
  • Updated GeoIP databases for IPv4 and IPv6.
  • Throttle the amount of PUSH messages we can send for a given remote server.
  • Legitimate Shareaza nodes cannot be flagging themselves as ultrapeers.
  • Windows: stack unwinding made safer with more memory checks to avoid faults.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • UPNP: attempt rediscovery of port mapping devices every hour, if missing one.
  • Added new TSIG_OVFLOW signal sent when a thread overflows its stack.
  • Fixed race condition between concurrent waiter_refcnt_dec() calls.
  • Added logging of layer which reports a TX error in case of assert failure.
  • Track the last seen time (activity) of discovered threads other than main.
  • Prevent glade-2 from outputting support files now, since we patched them.
  • Added tracing of funny X-Falt lines we are seeing when demsh_debug is set.
  • Added tracing of funny X-Alt lines we are seeing when dmesh_debug is set.
  • Added tracing of funny X-Nalt lines we are seeing when dmesh_debug is set.
  • Added crash hook for the thread layer.
  • Added TX layer write-fault mechansim to help detect user error handling bugs.
  • Syntaxic adjustments to make the latest guile happy with definitions.
  • The GUI will now display current bandwidth by default, instead of the average.
  • mingw_exception(): write shorter messages in case of stack overflows.
  • thread_element_reset(): forgot to reset te->stack_base to NULL.
  • header_append(): allow "." in header names.
  • thread_join_internal(): no thread_cancel_test_element() on foreign thread!
  • thread_find_element(): avoid leaving routine without unlocking mutex!
  • cond_wait_until(): now correctly handle underlying cond variable mutation.
  • thread_block_timeout(): don't panic if main thread already unblocked.
  • dir_entry_filename(): made the Windows version thread-safe.
  • hfield_dump(): fixed formatting of continuation lines.
  • dmesh_collect_locations(): only parse the last timestamp when many given.
  • xmalloc_thread_free(): always handle blocks in the cross-thread free list.
  • Hide strtok_free(), forcing clients to use new strtok_free_null().

What is new in version 1.1.1:

  • This is an important release correcting severe bugs affecting the overall wealth of the system: the PARQ upload queue was not properly restored, the DHT was not always sending correct values back (resulting in failed lookups), and SDBM (the hash-on-disk database) had two well-hidden bugs that could cause crashes at startup or that compromised regular runtime operations.
  • This release uses a reliable UDP layer to transfer out-of-band query hits, ensuring that these important messages are properly sent and received and never lost.

What is new in version 0.96.9:

  • UPnP and NAT-PMP support was added.
  • More status icons were added for DHT, port mapping, and upload pre-stalling information.
  • 12 minor bugs were fixed and 25 "under the hood" improvements were made.

What is new in version 0.96.6:

  • Bug Fixes:
  • #1932909 "columns in search window do not scale properly".
  • Fixed improper HTTP chunking when outputing chunks larger than 64 KiB.
  • #2628899 "tries to download from my old self after IP changes".
  • Was not always resuming the interrupted SHA-1 computation of a finished file when servent was closed in the middle of processing.
  • Fixed bad range checking test in the download part.
  • Was not paying attention to the "give_server_hostname" property and instead sent "HNAME" GGEP extensions in query hits provided a non-empty name was defined as the "server_hostname".
  • Fixed improper upload slot counting which introduced race conditions, sometimes leading to having more slots used than the configured maximum (in addition to the "quick" upload slots).
  • Prevent occasional crashes at shutdown time, during subsystem cleanups.
  • Fixed corner cases where we could lose a server hostname and downright bug where we discarded the hostname after a DNS lookup if the subsequent connection attempt did not succeed.
  • Improvements:
  • Refuse to share certain directories: /, $HOME, $GTK_GNUTELLA_DIR, and the incomplete and corrupted directories.
  • Downloads GUI: added checkboxes to invert the select/filter patterns.
  • Downloads GUI: added "Modified" column and detail showing the timestamp of the last file modification.
  • Optional beautification operations on filenames: strip leading "-", remove consecutive "_" and prevent "_" surrounding punctuation characters.
  • Fixed significant performance issue in the Gtk+ 1.2 front-end: update of upload statistics was O(n) but is now O(1).
  • Background TTH file verification now lights an icon in the GUI.
  • Show TTH tree depth in the download "Details" pane.
  • Update the bitzi metadata info box when a query finishes, so that it is not required to click on the result again after requesting bitzi data.
  • Added MIME type column for search results.
  • Added "Last Request" and "Last Upload" columns to the Upload History.
  • Almost complete DHT support (missing only publishing of data), but code needs to be explicitly enabled by setting "enable_dht" to TRUE. The DHT knows how to look for alt-locs for files and push-proxies for firewalled hosts, and will store local data for others to query.
  • New shell commands "stats", "download", "echo".
  • It is now possible to rename files being downloaded (through GTK2 or shell, no support in GTK1).
  • Added more filename extensions to the built-in search filters.
  • Switch resources after getting an HTTP error if the connection is kept alive and the error permits follow-ups (non-busy conditions).
  • Improved ability to switch resources after file completion by ignoring trailing swarming data, to keep the connection alive.
  • Bitzi tickets are refreshed when explicitely requested, avoiding reuse of stale metadata
  • Completed files are displayed during hash verification.
  • Only propagate good alt-locs for files we are downloading, i.e. addresses of hosts which we know to be serving that file because we contacted them.
  • Many new statistics counters.
  • Allow scheduling of special downloads without considering per-host limits, as these are of a much shorter duration (THEX and browse host requests).
  • Always seed completed files, regardless of their size (no PFSP minimum as with partial files), when their SHA-1 has been verified.
  • Incorrectly encoded Bitzi metadata is translated to Unicode.
  • Browse-host responses are sorted alphanumerically on relative pathnames to allow users to relate files together if they don't understand GGEP "PATH".
  • Improved routing of PUSH messages by also looking whether targetted hosts happen to be one of our immediate neighbours.
  • Updated Norwegian Bokmal and Spanish translations.
  • Under the hood:
  • Parse legacy Shareaza THEX URIs "urn:tree:tiger/:" (extra "/" here).
  • Handle non-standard X-Thex-URI headers if peer provides a valid X-Content-URN header (Shareaza 2.1.0.0).
  • Also attempt to give priority to the last "pfsp_last_chunk" bytes of downloaded files, since that can contain important indexing information to enable pre-view of partial video files.
  • More MIME types known (derived from file extensions).
  • Can now download THEX data at a tree depth of 11 for files larger than 1 GiB.
  • Can download sub-optimal THEX data, as non-optimal data is better than none, but keeps looking for THEX data at the optimal tree depth nonetheless.
  • Reimplemented scanning of shared directories as a background task so that the process (not just the GUI) is fully responsive during the whole scan.
  • Let the background task scheduler compute the proper amount of ticks to use for each task.
  • Upload statistics now record the file's SHA-1, so that we can consolidate partial file sharing with library sharing statistics, with the filename being forced to the library's filename.
  • Avoid starting moving a completed file if there is not enough space on the targetted file system.
  • Recognize and propagate the "DHT" GGEP extension in pongs.
  • Added support for "DHTIPP" GGEP extension in pings, used for DHT bootstrap.
  • Added more entropy to the random number seed.
  • Plugged memory leaks
  • No longer send SHA-1 queries on the Gnutella network. They are now performed through the DHT, which has the suitable topology to do so efficiently.
  • Fixed UDP bandwidth computation, and removed any limit on UDP incoming.
  • Updated list of hostile IP adress ranges, Geo-IP data, spam patterns and spam samples.
  • Property loading from files was in O(n*n), made it O(n).
  • Now detect property files being blindly copied over from another gtk-gnutella's config directory and reset properties whose value needs to be unique.
  • The GUID and the KUID (Kademlia ID, the DHT node ID) were made sticky.
  • Optimization of QRP lookups in tables ranging from 16k to 2M slots.
  • Limit amount of hits to 10 per query hit packet, as LimeWire chokes otherwise.
  • Limit amount of alt-locs in hits to 10 or LimeWire chokes.
  • Keep connection alive when reporting an HTTP error to allow remote resource switching if necessary.
  • Emit and parse new X-Downloaded header, apparently introduced by LimeWire.
  • Added parsing of X-FW-Node-Info headers to grab push-proxies from firewalled hosts, as well as gather the proper GUID and host address/port.
  • Emit X-FW-Node-Info if node is firewalled but continue to list our push-proxies in the standard X-Push-Proxies header.
  • Avoid endless aggressive chunk splitting during swarming.
  • Proper parsing of comma-separated values in Accept and other Accept-Encoding HTTP headers.
  • Reject UDP packets from unspecified addresses.
  • Drain more data out of the UDP receive buffer to prevent it from filling up.
  • Strip at most 5 trailing characters from words when building the QRP table, thereby inserting less radices and making the table more sparse.
  • Removed workarounds for dealing with broken 0.96.2 nodes and earlier 0.95.x.
  • Extended syntax for push:// exact sources in magnets to be able to supply all the known push-proxies, even if that is an empty set. Since downloads are persisted as magnets, this also allows keeping all the previously known push-proxies accross sessions.
  • Upgraded PARQ to version 1.1 (mostly specification cleanups).
  • Added additional anti-hammering for cases where many files on the same server are queued and gtk-gnutella is configured to launch more than 1 connection per IP. Connection attempts to the same server are now limited to 5 per minute.
  • Limitations:
  • DHT code is still experimental, although functional: configuration of parameters can only be done through the shell, and there is no support for publishing yet.

Requirements:

  • gtk+

Similar Software

Cabos
Cabos

3 Jun 15

Pink Poodle
Pink Poodle

2 Jun 15

eDonkey2000
eDonkey2000

3 Jun 15

xMule
xMule

3 Jun 15

Comments to Gtk-Gnutella

Comments not found
Add Comment
Turn on images!