gltail 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt ADDED
@@ -0,0 +1,66 @@
1
+ == 0.0.7 / 2007-10-..
2
+
3
+ * Make textures from BitmapCharacter font
4
+ * Use textured quads instead of BitmapCharacter
5
+ * Cache callLists for complete strings in BlobStore
6
+ * Clean out callLists in BlobStore regularly
7
+ * Slide new Elements in from left/right
8
+ * Don't crash if unable to parse Squid logs
9
+ * Keep non-showing elements around longer to help with
10
+ bursts in varied traffic
11
+ * add_activity(...{:type => 1}) renders quads instead of balls
12
+ * Use 'f' to toggle attempted framerate
13
+ * Use 'b' to toggle between balls and quads
14
+ * Consume all waiting data when checking for SSH activity
15
+ * Cisco Pix / FWSM parser (Leif Sawyer <leif@denali.net>)
16
+ * Distribute as Ruby Gem
17
+ * Configuration of background reverse IP lookups (disable/timeout)
18
+
19
+ == 0.0.6 / 2007-10-13
20
+
21
+ * Handle referrals including your site as params
22
+ * Handle disabling a block without disabling the source
23
+ * Rework coordinate systems, and swap to glOrtho instead of glFrustum
24
+ * PureFTPD parser
25
+ * MySQL activity log parser
26
+ * Background reverse IP lookup
27
+ * Use yaml for config file (Ian Ownbey <iownbey@notesake.com>)
28
+ * Highlight rate/total/avg column
29
+ * Split source into several files (Ben Bleything <ben@bleything.net>)
30
+ * qmail/vmpop3d parser (James Grant <james@lightbox.org>)
31
+ * Postfix fixes (Andre Luiz dos Santos <andre@netvision.com.br>)
32
+ * TShark parser (Landy Bible <landy@ljb2of3.net>)
33
+ * Updated Squid parser (Isuraeru Ochoa <isuraeru@gmail.com>)
34
+
35
+ == 0.0.5 / 2007-10-10
36
+
37
+ * Basic instructions on missing gems
38
+ * Fallback to BitmapCharacterX on RangeError
39
+ * Attempt to fix text color on non Linux platforms
40
+ * SASL Usernames (Andre Luiz dos Santos <andre@netvision.com.br>)
41
+ * SSH auth methods <leif@denali.net>
42
+ * PostgreSQL parser (Andrew MacBride <amacbride@yahoo.com>)
43
+ * Postfix warnings (Jim Pingle <jpingle@gmail.com)
44
+
45
+ == 0.0.4 / 2007-10-09
46
+
47
+ * Upgraded to GL/GLUT new syntax
48
+ Should fix several os/x and windows problems
49
+ * Nginx parser (Ian Ownbey <iownbey@notesake.com>)
50
+ * Squid parser (Benjamin Schweizer <2007@benjamin-schweizer.de>)
51
+ * SSH Keys support (Jason Drage <jasond@ibsglobalweb.com>)
52
+ * Postfix spamd/clamd (Jim Pingle <jpingle@gmail.com>)
53
+
54
+ == 0.0.3 / 2007-10-08
55
+
56
+ * Update Apache Combined parser to handle hostnames
57
+ * Handle message rates > (60000/FPS)
58
+
59
+ == 0.0.2 / 2007-10-07
60
+
61
+ * Postfix parser
62
+ * IIS parser (Tucker Sizemore <w8emx@sera.org>)
63
+
64
+ == 0.0.1 / 2007-10-06
65
+
66
+ * Initial release
data/Manifest.txt ADDED
@@ -0,0 +1,40 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ bin/gl_tail
8
+ dist/config.yaml
9
+ lib/gl_tail.rb
10
+ lib/gl_tail/activity.rb
11
+ lib/gl_tail/blob_store.rb
12
+ lib/gl_tail/block.rb
13
+ lib/gl_tail/config.rb
14
+ lib/gl_tail/config/configurable.rb
15
+ lib/gl_tail/config/yaml_parser.rb
16
+ lib/gl_tail/element.rb
17
+ lib/gl_tail/engine.rb
18
+ lib/gl_tail/font.bin
19
+ lib/gl_tail/font_store.rb
20
+ lib/gl_tail/http_helper.rb
21
+ lib/gl_tail/item.rb
22
+ lib/gl_tail/parser.rb
23
+ lib/gl_tail/parsers/apache.rb
24
+ lib/gl_tail/parsers/iis.rb
25
+ lib/gl_tail/parsers/mysql.rb
26
+ lib/gl_tail/parsers/nginx.rb
27
+ lib/gl_tail/parsers/pix-fwsm.rb
28
+ lib/gl_tail/parsers/postfix.rb
29
+ lib/gl_tail/parsers/postgresql.rb
30
+ lib/gl_tail/parsers/pureftpd.rb
31
+ lib/gl_tail/parsers/qmail.rb
32
+ lib/gl_tail/parsers/rails.rb
33
+ lib/gl_tail/parsers/squid.rb
34
+ lib/gl_tail/parsers/tshark.rb
35
+ lib/gl_tail/resolver.rb
36
+ lib/gl_tail/server.rb
37
+ lib/gl_tail/sources/base.rb
38
+ lib/gl_tail/sources/local.rb
39
+ lib/gl_tail/sources/ssh.rb
40
+ test/test_gl_tail.rb
data/README ADDED
@@ -0,0 +1,51 @@
1
+ glTail.rb - http://www.fudgie.org
2
+
3
+ I know, horrible code and global variables, and what not. But, it works,
4
+ and it's too fun to watch my servers traffic in real time to clean up
5
+ everything before releasing it.
6
+
7
+ Configuration:
8
+ Open config.yaml in a text editor, and tweak to your liking. You might want to save the
9
+ result to another file, and include that on the command line.
10
+ Either include a password for each of your servers, or make sure your ssh-keys are
11
+ correctly set up.
12
+
13
+ If you need to specify a SSH key replace
14
+ password: secret
15
+ with
16
+ keys: /path/to/key
17
+
18
+ Running:
19
+ ./gl_tail.rb --help
20
+ ./gl_tail.rb <config.yaml>
21
+
22
+ You can also press 'f' while running to toggle the attempted frames per second. Or 'b'
23
+ to change default blob type, and space to toggle bouncing.
24
+
25
+ Versions tested:
26
+ rubygems 0.9.4
27
+ ruby-opengl 0.40.1
28
+ net-ssh 1.1.2
29
+
30
+ Installation instructions (Ubuntu/Debian):
31
+ sudo apt-get install rubygems rake ruby1.8-dev libgl1-mesa-dev libglu1-mesa-dev libglut3-dev build-essential
32
+ sudo gem install -y net-ssh ruby-opengl -r
33
+
34
+ Installation instructions (Mandriva/RedHat):
35
+ sudo urpmi ruby ruby-devel ruby-RubyGems ruby-rake
36
+ sudo urpmi libmesagl1-devel libmesaglut3-devel ruby-rbogl
37
+ sudo gem install -y net-ssh ruby-opengl -r
38
+
39
+ Installation instructions (Mac OS/X):
40
+ <install ruby & rubygems>
41
+ sudo gem install -y net-ssh ruby-opengl -r
42
+
43
+ Installation instructions (Windows):
44
+ One-click Ruby installer from http://rubyforge.org/projects/rubyinstaller/
45
+ Start RubyGems/RubyGems Package Manager
46
+ gem install net-ssh ruby-opengl
47
+
48
+ (Make sure you've got accelerated OpenGL installed for your graphics card. Some drivers
49
+ shipped with your version of Windows do not include this, and it can be installed by
50
+ getting the latest drivers from your graphics card vendor)
51
+
data/README.txt ADDED
@@ -0,0 +1,376 @@
1
+ GlTail
2
+ by Erlend Simonsen <mr@fudgie.org>
3
+ http://www.fudgie.org
4
+
5
+ == DESCRIPTION:
6
+ Real-time view of server traffic and events using OpenGL and SSH.
7
+
8
+ == FEATURES:
9
+ * Real-Time OpenGL view
10
+ * Multiple logfiles on multiple servers
11
+ * Configurable layout
12
+ * Multiple logfile parsers
13
+ (Apache Combined, Rails, IIS, Postfix/spamd/clamd, Nginx, Squid, PostgreSQL, PureFTPD, MySQL, TShark, qmail/vmpop3d)
14
+ * Custom events
15
+ * Show rate, total or average
16
+ * If you can 'tail' it, you can visualize it
17
+ * Written in Ruby using net-ssh & libopengl-ruby
18
+ * Free!
19
+
20
+ == RUNNING:
21
+ gl_tail --help
22
+ gl_tail --new gl_tail.yaml
23
+ gl_tail
24
+
25
+ You can press 'f' while running to toggle the attempted frames per second. Or 'b'
26
+ to change default blob type, and space to toggle bouncing.
27
+
28
+ == REQUIREMENTS:
29
+ * rubygems 0.9.4
30
+ * ruby-opengl 0.40.1
31
+ * net-ssh 1.1.2
32
+ * opengl/ruby development packages (ruby1.8-dev libgl1-mesa-dev libglu1-mesa-dev libglut3-dev)
33
+
34
+ == INSTALL:
35
+ * sudo gem install gl_tail
36
+
37
+ == LICENSE:
38
+ GNU GENERAL PUBLIC LICENSE
39
+ Version 2, June 1991
40
+
41
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
42
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
43
+ Everyone is permitted to copy and distribute verbatim copies
44
+ of this license document, but changing it is not allowed.
45
+
46
+ Preamble
47
+
48
+ The licenses for most software are designed to take away your
49
+ freedom to share and change it. By contrast, the GNU General Public
50
+ License is intended to guarantee your freedom to share and change free
51
+ software--to make sure the software is free for all its users. This
52
+ General Public License applies to most of the Free Software
53
+ Foundation's software and to any other program whose authors commit to
54
+ using it. (Some other Free Software Foundation software is covered by
55
+ the GNU Lesser General Public License instead.) You can apply it to
56
+ your programs, too.
57
+
58
+ When we speak of free software, we are referring to freedom, not
59
+ price. Our General Public Licenses are designed to make sure that you
60
+ have the freedom to distribute copies of free software (and charge for
61
+ this service if you wish), that you receive source code or can get it
62
+ if you want it, that you can change the software or use pieces of it
63
+ in new free programs; and that you know you can do these things.
64
+
65
+ To protect your rights, we need to make restrictions that forbid
66
+ anyone to deny you these rights or to ask you to surrender the rights.
67
+ These restrictions translate to certain responsibilities for you if you
68
+ distribute copies of the software, or if you modify it.
69
+
70
+ For example, if you distribute copies of such a program, whether
71
+ gratis or for a fee, you must give the recipients all the rights that
72
+ you have. You must make sure that they, too, receive or can get the
73
+ source code. And you must show them these terms so they know their
74
+ rights.
75
+
76
+ We protect your rights with two steps: (1) copyright the software, and
77
+ (2) offer you this license which gives you legal permission to copy,
78
+ distribute and/or modify the software.
79
+
80
+ Also, for each author's protection and ours, we want to make certain
81
+ that everyone understands that there is no warranty for this free
82
+ software. If the software is modified by someone else and passed on, we
83
+ want its recipients to know that what they have is not the original, so
84
+ that any problems introduced by others will not reflect on the original
85
+ authors' reputations.
86
+
87
+ Finally, any free program is threatened constantly by software
88
+ patents. We wish to avoid the danger that redistributors of a free
89
+ program will individually obtain patent licenses, in effect making the
90
+ program proprietary. To prevent this, we have made it clear that any
91
+ patent must be licensed for everyone's free use or not licensed at all.
92
+
93
+ The precise terms and conditions for copying, distribution and
94
+ modification follow.
95
+
96
+ GNU GENERAL PUBLIC LICENSE
97
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
98
+
99
+ 0. This License applies to any program or other work which contains
100
+ a notice placed by the copyright holder saying it may be distributed
101
+ under the terms of this General Public License. The "Program", below,
102
+ refers to any such program or work, and a "work based on the Program"
103
+ means either the Program or any derivative work under copyright law:
104
+ that is to say, a work containing the Program or a portion of it,
105
+ either verbatim or with modifications and/or translated into another
106
+ language. (Hereinafter, translation is included without limitation in
107
+ the term "modification".) Each licensee is addressed as "you".
108
+
109
+ Activities other than copying, distribution and modification are not
110
+ covered by this License; they are outside its scope. The act of
111
+ running the Program is not restricted, and the output from the Program
112
+ is covered only if its contents constitute a work based on the
113
+ Program (independent of having been made by running the Program).
114
+ Whether that is true depends on what the Program does.
115
+
116
+ 1. You may copy and distribute verbatim copies of the Program's
117
+ source code as you receive it, in any medium, provided that you
118
+ conspicuously and appropriately publish on each copy an appropriate
119
+ copyright notice and disclaimer of warranty; keep intact all the
120
+ notices that refer to this License and to the absence of any warranty;
121
+ and give any other recipients of the Program a copy of this License
122
+ along with the Program.
123
+
124
+ You may charge a fee for the physical act of transferring a copy, and
125
+ you may at your option offer warranty protection in exchange for a fee.
126
+
127
+ 2. You may modify your copy or copies of the Program or any portion
128
+ of it, thus forming a work based on the Program, and copy and
129
+ distribute such modifications or work under the terms of Section 1
130
+ above, provided that you also meet all of these conditions:
131
+
132
+ a) You must cause the modified files to carry prominent notices
133
+ stating that you changed the files and the date of any change.
134
+
135
+ b) You must cause any work that you distribute or publish, that in
136
+ whole or in part contains or is derived from the Program or any
137
+ part thereof, to be licensed as a whole at no charge to all third
138
+ parties under the terms of this License.
139
+
140
+ c) If the modified program normally reads commands interactively
141
+ when run, you must cause it, when started running for such
142
+ interactive use in the most ordinary way, to print or display an
143
+ announcement including an appropriate copyright notice and a
144
+ notice that there is no warranty (or else, saying that you provide
145
+ a warranty) and that users may redistribute the program under
146
+ these conditions, and telling the user how to view a copy of this
147
+ License. (Exception: if the Program itself is interactive but
148
+ does not normally print such an announcement, your work based on
149
+ the Program is not required to print an announcement.)
150
+
151
+ These requirements apply to the modified work as a whole. If
152
+ identifiable sections of that work are not derived from the Program,
153
+ and can be reasonably considered independent and separate works in
154
+ themselves, then this License, and its terms, do not apply to those
155
+ sections when you distribute them as separate works. But when you
156
+ distribute the same sections as part of a whole which is a work based
157
+ on the Program, the distribution of the whole must be on the terms of
158
+ this License, whose permissions for other licensees extend to the
159
+ entire whole, and thus to each and every part regardless of who wrote it.
160
+
161
+ Thus, it is not the intent of this section to claim rights or contest
162
+ your rights to work written entirely by you; rather, the intent is to
163
+ exercise the right to control the distribution of derivative or
164
+ collective works based on the Program.
165
+
166
+ In addition, mere aggregation of another work not based on the Program
167
+ with the Program (or with a work based on the Program) on a volume of
168
+ a storage or distribution medium does not bring the other work under
169
+ the scope of this License.
170
+
171
+ 3. You may copy and distribute the Program (or a work based on it,
172
+ under Section 2) in object code or executable form under the terms of
173
+ Sections 1 and 2 above provided that you also do one of the following:
174
+
175
+ a) Accompany it with the complete corresponding machine-readable
176
+ source code, which must be distributed under the terms of Sections
177
+ 1 and 2 above on a medium customarily used for software interchange; or,
178
+
179
+ b) Accompany it with a written offer, valid for at least three
180
+ years, to give any third party, for a charge no more than your
181
+ cost of physically performing source distribution, a complete
182
+ machine-readable copy of the corresponding source code, to be
183
+ distributed under the terms of Sections 1 and 2 above on a medium
184
+ customarily used for software interchange; or,
185
+
186
+ c) Accompany it with the information you received as to the offer
187
+ to distribute corresponding source code. (This alternative is
188
+ allowed only for noncommercial distribution and only if you
189
+ received the program in object code or executable form with such
190
+ an offer, in accord with Subsection b above.)
191
+
192
+ The source code for a work means the preferred form of the work for
193
+ making modifications to it. For an executable work, complete source
194
+ code means all the source code for all modules it contains, plus any
195
+ associated interface definition files, plus the scripts used to
196
+ control compilation and installation of the executable. However, as a
197
+ special exception, the source code distributed need not include
198
+ anything that is normally distributed (in either source or binary
199
+ form) with the major components (compiler, kernel, and so on) of the
200
+ operating system on which the executable runs, unless that component
201
+ itself accompanies the executable.
202
+
203
+ If distribution of executable or object code is made by offering
204
+ access to copy from a designated place, then offering equivalent
205
+ access to copy the source code from the same place counts as
206
+ distribution of the source code, even though third parties are not
207
+ compelled to copy the source along with the object code.
208
+
209
+ 4. You may not copy, modify, sublicense, or distribute the Program
210
+ except as expressly provided under this License. Any attempt
211
+ otherwise to copy, modify, sublicense or distribute the Program is
212
+ void, and will automatically terminate your rights under this License.
213
+ However, parties who have received copies, or rights, from you under
214
+ this License will not have their licenses terminated so long as such
215
+ parties remain in full compliance.
216
+
217
+ 5. You are not required to accept this License, since you have not
218
+ signed it. However, nothing else grants you permission to modify or
219
+ distribute the Program or its derivative works. These actions are
220
+ prohibited by law if you do not accept this License. Therefore, by
221
+ modifying or distributing the Program (or any work based on the
222
+ Program), you indicate your acceptance of this License to do so, and
223
+ all its terms and conditions for copying, distributing or modifying
224
+ the Program or works based on it.
225
+
226
+ 6. Each time you redistribute the Program (or any work based on the
227
+ Program), the recipient automatically receives a license from the
228
+ original licensor to copy, distribute or modify the Program subject to
229
+ these terms and conditions. You may not impose any further
230
+ restrictions on the recipients' exercise of the rights granted herein.
231
+ You are not responsible for enforcing compliance by third parties to
232
+ this License.
233
+
234
+ 7. If, as a consequence of a court judgment or allegation of patent
235
+ infringement or for any other reason (not limited to patent issues),
236
+ conditions are imposed on you (whether by court order, agreement or
237
+ otherwise) that contradict the conditions of this License, they do not
238
+ excuse you from the conditions of this License. If you cannot
239
+ distribute so as to satisfy simultaneously your obligations under this
240
+ License and any other pertinent obligations, then as a consequence you
241
+ may not distribute the Program at all. For example, if a patent
242
+ license would not permit royalty-free redistribution of the Program by
243
+ all those who receive copies directly or indirectly through you, then
244
+ the only way you could satisfy both it and this License would be to
245
+ refrain entirely from distribution of the Program.
246
+
247
+ If any portion of this section is held invalid or unenforceable under
248
+ any particular circumstance, the balance of the section is intended to
249
+ apply and the section as a whole is intended to apply in other
250
+ circumstances.
251
+
252
+ It is not the purpose of this section to induce you to infringe any
253
+ patents or other property right claims or to contest validity of any
254
+ such claims; this section has the sole purpose of protecting the
255
+ integrity of the free software distribution system, which is
256
+ implemented by public license practices. Many people have made
257
+ generous contributions to the wide range of software distributed
258
+ through that system in reliance on consistent application of that
259
+ system; it is up to the author/donor to decide if he or she is willing
260
+ to distribute software through any other system and a licensee cannot
261
+ impose that choice.
262
+
263
+ This section is intended to make thoroughly clear what is believed to
264
+ be a consequence of the rest of this License.
265
+
266
+ 8. If the distribution and/or use of the Program is restricted in
267
+ certain countries either by patents or by copyrighted interfaces, the
268
+ original copyright holder who places the Program under this License
269
+ may add an explicit geographical distribution limitation excluding
270
+ those countries, so that distribution is permitted only in or among
271
+ countries not thus excluded. In such case, this License incorporates
272
+ the limitation as if written in the body of this License.
273
+
274
+ 9. The Free Software Foundation may publish revised and/or new versions
275
+ of the General Public License from time to time. Such new versions will
276
+ be similar in spirit to the present version, but may differ in detail to
277
+ address new problems or concerns.
278
+
279
+ Each version is given a distinguishing version number. If the Program
280
+ specifies a version number of this License which applies to it and "any
281
+ later version", you have the option of following the terms and conditions
282
+ either of that version or of any later version published by the Free
283
+ Software Foundation. If the Program does not specify a version number of
284
+ this License, you may choose any version ever published by the Free Software
285
+ Foundation.
286
+
287
+ 10. If you wish to incorporate parts of the Program into other free
288
+ programs whose distribution conditions are different, write to the author
289
+ to ask for permission. For software which is copyrighted by the Free
290
+ Software Foundation, write to the Free Software Foundation; we sometimes
291
+ make exceptions for this. Our decision will be guided by the two goals
292
+ of preserving the free status of all derivatives of our free software and
293
+ of promoting the sharing and reuse of software generally.
294
+
295
+ NO WARRANTY
296
+
297
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
298
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
299
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
300
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
301
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
302
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
303
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
304
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
305
+ REPAIR OR CORRECTION.
306
+
307
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
308
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
309
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
310
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
311
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
312
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
313
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
314
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
315
+ POSSIBILITY OF SUCH DAMAGES.
316
+
317
+ END OF TERMS AND CONDITIONS
318
+
319
+ How to Apply These Terms to Your New Programs
320
+
321
+ If you develop a new program, and you want it to be of the greatest
322
+ possible use to the public, the best way to achieve this is to make it
323
+ free software which everyone can redistribute and change under these terms.
324
+
325
+ To do so, attach the following notices to the program. It is safest
326
+ to attach them to the start of each source file to most effectively
327
+ convey the exclusion of warranty; and each file should have at least
328
+ the "copyright" line and a pointer to where the full notice is found.
329
+
330
+ <one line to give the program's name and a brief idea of what it does.>
331
+ Copyright (C) <year> <name of author>
332
+
333
+ This program is free software; you can redistribute it and/or modify
334
+ it under the terms of the GNU General Public License as published by
335
+ the Free Software Foundation; either version 2 of the License, or
336
+ (at your option) any later version.
337
+
338
+ This program is distributed in the hope that it will be useful,
339
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
340
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
341
+ GNU General Public License for more details.
342
+
343
+ You should have received a copy of the GNU General Public License along
344
+ with this program; if not, write to the Free Software Foundation, Inc.,
345
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
346
+
347
+ Also add information on how to contact you by electronic and paper mail.
348
+
349
+ If the program is interactive, make it output a short notice like this
350
+ when it starts in an interactive mode:
351
+
352
+ Gnomovision version 69, Copyright (C) year name of author
353
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
354
+ This is free software, and you are welcome to redistribute it
355
+ under certain conditions; type `show c' for details.
356
+
357
+ The hypothetical commands `show w' and `show c' should show the appropriate
358
+ parts of the General Public License. Of course, the commands you use may
359
+ be called something other than `show w' and `show c'; they could even be
360
+ mouse-clicks or menu items--whatever suits your program.
361
+
362
+ You should also get your employer (if you work as a programmer) or your
363
+ school, if any, to sign a "copyright disclaimer" for the program, if
364
+ necessary. Here is a sample; alter the names:
365
+
366
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
367
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
368
+
369
+ <signature of Ty Coon>, 1 April 1989
370
+ Ty Coon, President of Vice
371
+
372
+ This General Public License does not permit incorporating your program into
373
+ proprietary programs. If your program is a subroutine library, you may
374
+ consider it more useful to permit linking proprietary applications with the
375
+ library. If this is what you want to do, use the GNU Lesser General
376
+ Public License instead of this License.