forked from gtk-gnutella/gtk-gnutella
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
342 lines (246 loc) · 13.8 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
gtk-gnutella
Copyright (c) 2000-2001 Yann Grossel
Copyright (c) 2001-2020 Raphael Manfredi
------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc.:
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
------------------------------------------------------------------------
This software is currently maintained by [email protected].
If you have problems, your best bet is to subscribe to the gtk-gnutella-users
list on www.sourceforge.net, and more precisely here:
http://lists.sourceforge.net/lists/listinfo/gtk-gnutella-users
Also visit the main website for news, updates, FAQ, and more at:
https://gtk-gnutella.sourceforge.io/
Introduction
------------
gtk-gnutella is a GUI based Gnutella servent. It's based upon the original
look of Gnutella v0.5.
It's a fully featured Gnutella servent designed to share any type of file
the user wishes to share. gtk-gnutella implements compressed gnutella net
connections, ultra and leaf nodes, Partial File Sharing, Push Proxies and
uses Passive/Active Remote Queueing (PARQ).
When UDP traffic is enabled, it will increase the feature set: out-of-band
query hit reception, HEAD pings and pongs, Distributed Hash Table (DHT)
lookups for finding alternate sources and push-proxies.
It is compatible with all other Gnutella servents from other vendors: it will
join the same network and exchange with others seamlessly.
It's supposed to work on any Unix-like system, and can be built with either a
GTK+ (1.2 or above) or GTK+ 2.x GUI. Gnome is not required.
gtk-gnutella is currently developed and tested under Linux (Debian 2.2) and is
known to run at least on Linux, FreeBSD, NetBSD, OpenBSD, Darwin, Solaris,
Tru64 UNIX (OSF/1), SGI IRIX, BeOS whereas CPU architectures include x86,
AMD64, PowerPC, SPARC, MIPS.
It is released under the GNU General Public License (GPL).
For further information on Gnutella, try:
https://rfc-gnutella.sourceforge.net/
The gtk-gnutella Home Page is:
https://gtk-gnutella.sourceforge.io/
The Project Page is:
https://sourceforge.net/projects/gtk-gnutella/
Open Discussion Forums, try:
https://www.gnutellaforums.com/
There is an IRC channel for gtk-gnutella on https://libera.chat:
irc.libera.chat #gtk-gnutella
Mailing lists
https://sourceforge.net/projects/gtk-gnutella/lists/gtk-gnutella-devel
https://sourceforge.net/projects/gtk-gnutella/lists/gtk-gnutella-users
Installation
------------
To install one of the precompiled packages, consult your distribution's
documentation.
To compile gtk-gnutella, first make sure the following packages are installed:
make g++ libglib2.0-dev zlib1g-dev libgtk2.0-dev
so if you never compiled a C++ source code or if you have freshly installed your GNU/Linux OS you should run:
$ sudo apt install make g++ libglib2.0-dev zlib1g-dev libgtk2.0-dev
or log as super user and run:
$ su -
# apt install make g++ libglib2.0-dev zlib1g-dev libgtk2.0-dev
When all required packages are installed, run:
./build.sh
At the end, build.sh will output the command to run to install gtk-gnutella.
Usually it will be "make install" but it could be "gmake install" on some
systems where "make" is not the default.
The build.sh shell script is a wrapper for Configure. There should almost never
be a need to invoke Configure manually. The `Configure' shell script attempts
to guess correct values for various system-dependent variables used during
compilation. It uses those values to create a `Makefile' in each directory of
the package. It may also create one or more `.h' files containing
system-dependent definitions. Finally, it creates `config.sh' file that saves
the results of its tests to speed up reconfiguring, reusing your previous
values as defaults. If you don't want to reuse your previous values you can
delete them with:
make clobber
A list of available build options is shown if you run
./build.sh --help
The environment variables CC, CFLAGS, LDFLAGS, PREFIX, MAKE, YACC are
respected if set. The default path prefix is /usr/local. The default
front-end is Gtk+ 2.x. Support for DBUS, GNUTLS, IPv6, NLS, Socker is
enabled by default but will only be used if actually available during
the Configure run.
National Language Support requires at least GNU gettext 0.11.5 or a
compatible implementation which supports its plural model. To disable
NLS (National Language Support) i.e., nationalized text in the user
interface:
./build.sh --disable-nls
gtk-gnutella can also be compiled for headless operation the so-called
"topless" mode. The resulting executable won't use or depend on Gtk+
and gtk-gnutella can only be controlled through the remote shell in
this case. If you want a topless gtk-gnutella run
./build.sh --topless
The option "official" should be set to "true" unless you want to test
gtk-gnutella from git or are a developer. Currently, an "inofficial" build
will access files in the sources directory to ease the process of testing.
However, the meaning of this option might change at any time. Therefore,
software distributions and admins are urged to provide "official" builds
only.
For example, a fairly typical configuration for Linux x86, Gtk+ 2.x UI:
CC=gcc ./build.sh --prefix=/usr
You might have to CFLAGS and LDFLAGS so that the compiler and linker can find
the necessary libraries if they are not installed in the systems default
directories.
Packagers who need to install gtk-gnutella to a special base directory can
do so with:
make install INSTALL_PREFIX=/DESTDIR
which will install in /DESTDIR/$bindir, /DESTDIR/$privlib, etc.
If you need to do unusual things to compile the package, please try
to figure out how `Configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.sh'
contains results you don't want to keep, you may remove or edit it.
You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `Configure' created (so you can compile the package for
a different kind of computer), type `make clobber'.
Quick Start
-----------
To run gtk-gnutella, launch:
gtk-gnutella
If you wish to keep track of errors/warning for later perusal,
you may also do:
gtk-gnutella >gnutella.log 2>gnutella.warn &
Operation is fairly straightforward. Default values are set for getting
started, unless you are behind a firewall. This section should get you started
quickly.
You should have three directories created to store your files, "downloading,"
"done," and "corrupt."
Click on "Config" in the upper left hand box to get the configuration screen,
then select your downloading, done, and corrupt directories in the "Download
settings" tab.
In the "Upload settings" pane, "Path(s) to files" are your shared directories.
They are the files you will share to the network. It's easy and convenient to
share your "done" directory. When downloaded files are complete, they are
moved to the done directory and then can be uploaded by others. Once you have
selected your shared directories, click the "Rescan" button. Sharing is the
whole point of the Gnutella network. Those who don't share are called
"leechers" and some people will refuse to share with them. gtk-gnutella
offers fine-tuned bandwith control so even if you only have a dialup
connection, you should devote some bandwith to sharing.
Click on "GnutellaNet" in the upper left hand box to see how your connections
are going. If you see many connection attempts failing, don't worry, this is
normal. In extreme cases, it could take 10-30 minutes to get stable
connections the first time you use gtk-gnutella. If you don't get a
connection, quit the program and restart it to get a few more hosts from the
GWebCache server. If you still don't get connected, you may need to check your
Internet connection and DNS (etc/resolv.conf) list. If your Mozilla or
Konqueror web browser isn't working, you have a problem. In normal operations
you should be connected within 30 or so seconds.
Once you are connected to a few hosts (2 or 3 is good) you can perform a
search. Click on "Search" in the upper left hand box to get the Search pane,
then type in a keyword or two. Gnutella uses "AND" for keyword searches, so if
you type two words both will have to be in the file name to get a return. In
most situations it takes 60 seconds for search results to be returned. Be
patient! You are searching about 20,000 hosts.
Once you see a file name you like, click on it and press the button at the
bottom "Download Selected Files" ("Download selected" in the GTK2 version) and
the file will be queued for download. Click on "Downloads" in the upper left
hand box to see what's going on.
The client is pretty smart and won't "hammer" a host, even if you select all
the files a host has, if the host is busy it will only try that host every so
often. Select as many files as you like.
The default search selection option is "Autoselect identical", so when you
click on a file that several other hosts have, it will automatically select
any file in the list that is identical. This gives you a better chance of
completing a file if a host drops off the network. Duplicate names are handled
in the download manager, so don't worry about that. It's better to wait a
little bit for all the search results to come in, then click on file names you
like.
Once a file is in the "done" directory, the download manager will not download
the identical file again.
There are more features, click around and get used to the program. Most things
make sense. Visit Gnutella web sites for more information on Gnutella, the
protocol and network etiquette.
Bug Reports
-----------
This software will always be in a state of development, improvements being
added all the time. Stable version will be posted from time to time, but your
feedback is needed by developers in order to make a great program!
There is a Bug Report HOWTO on the gtk-gnutella home page.
Please post any Bug Reports to the Bug Tracker on the SourceForge
project page.
Developers, Programmers and Other Tech Info
-------------------------------------------
The following information is for Developers only.
* Run multiple copies on the same computer:
If you simply do a "make" rather than a "make install" a version of
gtk-gnutella will appear in your "src" directory. Create a new directory
called "test1", and copy at least config_gnet and config_gui from
$HOME/.gtk-gnutella, if you want to use the same settings.
Place the compiled version of gtk-gnutella into that directory, add a
"download" and "done" directory if you like, and from a shell prompt type
"GTK_GNUTELLA_DIR=path/to/test1 ./gtk-gnutella". The program will use the
local config file. The hosts file will now be read and saved to the local
directory. If you change the port number in the config file, you can run as
many copies as you want from different directories. You can also have them
connect to each other by using IP 127.0.0.1:6346 (or whatever port).
If you set the config variable "stop_host_get" the client will not try to
connect to any outside hosts, thus you can manually connect to your local
IP:port of the other client you have running for testing. It won't timeout the
host because of inactivity like it normally would.
* Debug variable use:
A config variable called "dbg" is used to print debug information to the
terminal window. It has 10 levels, the higher the level, the more information
is printed. Don't set it to 10 unless you like to see way too much
information! Data such as raw search packets are shown at level 7. Small
warnings and other stuff is found at level 1 or 2.
* Developer info:
Feel free to sign up and participate in the mail list. To get up to speed, you
might want to read some of the past messages in the archives and see what we
have been up to lately.
If you want contribute code, please follow the style guide, as described in
the doc/devguide/STYLE file.
Read the "Development" and "Developers Howto" pages on the gtk-gnutella home
page.
Please, use the patch tracking system found on the main development page to post
any patches you may have come up with. It allows you to upload the patch
file as a binary. Posting to a mailing list usually wraps lines and messes
up a patch file, although you can attach files. You should let everyone on the
mail list know that you posted a patch to the patch tracker.
If you find bugs, please use the bug tracker on sourceforge (or fix
them!). Once you get a copy from git (see the git page for instructions),
and you make some modifications, from a shell make sure you cd into the
"gtk-gnutella" directory, type "git diff > output-diff.txt" and a patch
file will be created, referencing the current git version. You can then
upload this file so others can patch their version with your changes.
If your patch requires other patches, you should include them also.
Before starting a big project, you may want to ask the list if anyone
else is working on that fix so you don't duplicate work.
In Memoriam
-----------
Dennis MacAlistair Ritchie, 1941-2011
#include <stdio.h>
main()
{
printf("Farewell, Dennis!\n");
return 0;
}
/* vi: set et ts=4: */