Commit initial: GNUWorld servicii IRC cu README.md complet in limba romana - Analiza arhitecturala completa a proiectului - Documentatie ierarhie clase, bucla de evenimente, protocol P10 - Identificare probleme memorie si recomandari modernizare
This commit is contained in:
commit
fcb24f6de9
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Ask2AgentMigrationStateService">
|
||||||
|
<option name="migrationStatus" value="COMPLETED" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.14" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/underchat-gnuworld.iml" filepath="$PROJECT_DIR$/.idea/underchat-gnuworld.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.14" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,340 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
|
||||||
|
This file is here to recognize the many people who are
|
||||||
|
responsible for bringing GNUWorld to the free society.
|
||||||
|
|
||||||
|
Orlando Bassatto (nextie) - Orlando is the project's original
|
||||||
|
founder. His insight and talent have brought this project to the
|
||||||
|
world. Orlando is responsible for the original design and
|
||||||
|
implementation from which gnuworld is born.
|
||||||
|
|
||||||
|
Andrea Cocito (Nemesi) - Andrea is a very gifted and dedicated
|
||||||
|
programmer. He has helped with some of the most difficult
|
||||||
|
areas of ircu and gnuworld. His contributions are immeasurable.
|
||||||
|
|
||||||
|
Perry (Isomer) - Lots of great ideas and a calming attitude in
|
||||||
|
times of panic. Perry is the project manager, putting The Man
|
||||||
|
into his place.
|
||||||
|
|
||||||
|
Greg (Gte) - Lots of real world testing and development of
|
||||||
|
gnuworld and its modules. Greg is the father of the cservice
|
||||||
|
module, which I (ripper_) continually break.
|
||||||
|
|
||||||
|
Tomer (MrBean) - Creator of the ccontrol (oper services) module.
|
||||||
|
Tomer has generated a huge amount of code, and withstood the
|
||||||
|
weight of my (ripper_) nitpicking. Good job on your first major
|
||||||
|
project :)
|
||||||
|
|
||||||
|
Jeekay (jeekay@netgamers.org) - Creator of the dronescan module.
|
||||||
|
He has provided a wealth of new information, as well as asking
|
||||||
|
lots of tough questions.
|
||||||
|
|
||||||
|
Stephane (mbuna) - Silently challenging me to do better, plus
|
||||||
|
normal type support and feedback :)
|
||||||
|
|
||||||
|
Julien (nighty) - Development of the web interface almost
|
||||||
|
entirely on his own. This system looks good, and works even
|
||||||
|
better. Thanks for all of your tireless hours without tangible
|
||||||
|
rewards!
|
||||||
|
|
||||||
|
ZAMBOO (zamboo@under-web.net) Lots of bug reporting and diligent
|
||||||
|
efforts to try out all the possibilities. Thanks :)
|
||||||
|
|
||||||
|
OUTSider - Always testing and retesting, looking for bugs...you found
|
||||||
|
some! Also thanks for contributing some code.
|
||||||
|
|
||||||
|
Doug (seiki) - Thanks a lot for letting me thrash your machine
|
||||||
|
during development and testing of gnuworld. You really made a
|
||||||
|
lot of sacrifices and had to put up with my complaining :)
|
||||||
|
|
||||||
|
Ben (Obike) - Enormous help with the php security issues, and
|
||||||
|
the web interface in general. Your expertise was invaluable.
|
||||||
|
|
||||||
|
Keir - Helping with new ideas and finding bugs, testing in the real
|
||||||
|
world. Keir has put forth some excellent ideas on enhancements for
|
||||||
|
gnuworld.
|
||||||
|
|
||||||
|
Marc Dondlinger (aka HiGhPwR) <highpwr@quake.lu>
|
||||||
|
Huge amounts of bug reporting, a loyal user without whom this
|
||||||
|
project would never have been ready :)
|
||||||
|
|
||||||
|
Kevin Mitchell (Kev) - Helping to fill in the gaps, there are lots!
|
||||||
|
|
||||||
|
David Henriksen <david@itwebnet.dk> (Plexus@IRC)
|
||||||
|
Real world testing and implementation, bug finding. Youve helped
|
||||||
|
this project with a lot of issues.
|
||||||
|
|
||||||
|
Raystonn <raystonn@hotmail.com> - Thanks for helping with some of
|
||||||
|
the finer points :)
|
||||||
|
|
||||||
|
Maniac <maniac@krushnet.org> - Thanks for lots of bug fixing and
|
||||||
|
testing...you really like to pick apart our code!
|
||||||
|
|
@ -0,0 +1,234 @@
|
||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||||
|
2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
Briefly, the shell commands `./configure; make; make install' should
|
||||||
|
configure, build, and install this package. The following
|
||||||
|
more-detailed instructions are generic; see the `README' file for
|
||||||
|
instructions specific to this package.
|
||||||
|
|
||||||
|
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 a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.
|
||||||
|
|
||||||
|
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 you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||||
|
you want to change it or regenerate `configure' using a newer version
|
||||||
|
of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system.
|
||||||
|
|
||||||
|
Running `configure' might take a while. While running, it prints
|
||||||
|
some messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. 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 distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
With a non-GNU `make', it is safer to compile the package for one
|
||||||
|
architecture at a time in the source code directory. After you have
|
||||||
|
installed the package for one architecture, use `make distclean' before
|
||||||
|
reconfiguring for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script).
|
||||||
|
|
||||||
|
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||||
|
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||||
|
|
||||||
|
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
!!!WARNING!!! I DON'T provide any support for the webpage installation, bugfix, modification, asking me for any kind of question/support will result in automatic ignore !!!
|
||||||
|
|
||||||
|
!!!WARNING!!! I DON'T provide any support for the webpage installation, bugfix, modification, asking me for any kind of question/support will result in automatic ignore !!!
|
||||||
|
|
||||||
|
!!!WARNING!!! I DON'T provide any support for the webpage installation, bugfix, modification, asking me for any kind of question/support will result in automatic ignore !!!
|
||||||
|
|
||||||
|
This document is outdated, use it at your own risk.
|
||||||
|
|
||||||
|
In order to work the webpage, so far we need to use at most ubuntu 12, installs php version under 5.3.28,
|
||||||
|
so the maximum version of php still containing the required register_globals variable in php.ini is 5.3.27
|
||||||
|
Anyone who knows a fix, or bypass the necessity of register_globals let me know.
|
||||||
|
|
||||||
|
In root we install the dependencies:
|
||||||
|
----Apache & php quick install---------------------------------
|
||||||
|
sudo apt-get install apache2
|
||||||
|
sudo apt-get install php5
|
||||||
|
sudo apt-get install libapache2-mod-php5
|
||||||
|
|
||||||
|
linux:/root# sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
|
||||||
|
linux:/root# sudo apt-get install php5-gd
|
||||||
|
linux:/root# sudo apt-get install php5-dev php5-pgsql
|
||||||
|
linux:/root# sudo apt-get install libpqxx-3.1 libpqxx3-dev
|
||||||
|
|
||||||
|
You can always find the available libpqxx version with searching:
|
||||||
|
|
||||||
|
linux:/root# sudo apt-cache search libpqxx
|
||||||
|
|
||||||
|
Restarting apache:
|
||||||
|
sudo /etc/init.d/apache2 restart
|
||||||
|
|
||||||
|
We install postgresql:
|
||||||
|
|
||||||
|
linux:/root# sudo apt-get install libreadline-dev
|
||||||
|
linux:/root# sudo apt-get install bison
|
||||||
|
linux:/root# wget http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.gz
|
||||||
|
linux:/root# tar zxvf postgresql-9.3.4.tar.gz
|
||||||
|
linux:/root# cd postgresql-9.3.4.tar.gz
|
||||||
|
linux:/root/postgresql-9.3.4# ./configure
|
||||||
|
linux:/root/postgresql-9.3.4# make; make install
|
||||||
|
|
||||||
|
Now we create the databse:
|
||||||
|
linux:/root# [sudo] mkdir /usr/local/pgsql/data
|
||||||
|
linux:/root# chown gnuworld /usr/local/pgsql/data
|
||||||
|
linux:/root# chgrp gnuworld /usr/local/pgsql/data
|
||||||
|
linux:/root# su - gnuworld
|
||||||
|
linux:/home/gnuworld$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &
|
||||||
|
Start the database with:
|
||||||
|
linux:/home/gnuworld$ /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
|
||||||
|
It worth to put that line in a crontab line:
|
||||||
|
crontab -e
|
||||||
|
@reboot /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
|
||||||
|
So on a reboot you'll get postgres running.
|
||||||
|
|
||||||
|
Warning: Don't do these if you already started and have a gnuworld installation.
|
||||||
|
-- Start --
|
||||||
|
linux:/home/gnuworld$ git clone https://github.com/Seven-7/gnuworld-enhanced.git
|
||||||
|
linux:/home/gnuworld$ cd gnuworld-enhanced/doc
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII cservice
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.config.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < languages.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < language_table.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < greeting.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.help.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.web.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.addme.sql
|
||||||
|
-- End -- of not repeatable part --
|
||||||
|
|
||||||
|
local_db must be created for website! [Error code (L)]
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII local_db
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql local_db < local_db.sql
|
||||||
|
linux:/gnuworld/gnuworld-enhanced/doc$ cd ~
|
||||||
|
|
||||||
|
linux:/home/gnuworld$ git clone https://github.com/Seven-7/website-gnuworld.git
|
||||||
|
linux:/home/gnuworld$ su -
|
||||||
|
linux:/root# cd /var/www/html
|
||||||
|
linux:/var/www/html# chmod 711 ~gnuworld
|
||||||
|
linux:/var/www/html# chmod 711 ~gnuworld/website-gnuworld
|
||||||
|
linux:/var/www/html# chmod 755 ~gnuworld/website-gnuworld/php_includes
|
||||||
|
linux:/var/www/html# chmod 644 ~gnuworld/website-gnuworld/php_includes/config.inc
|
||||||
|
linux:/var/www/html# chmod 755 ~gnuworld/website-gnuworld/docs/gnuworld/
|
||||||
|
linux:/var/www/html# ln -s /home/gnuworld/website-gnuworld/docs/gnuworld live
|
||||||
|
|
||||||
|
Now you can try see the webpage in the following addresses:
|
||||||
|
|
||||||
|
http://localhost/live
|
||||||
|
http://127.0.0.1/live
|
||||||
|
http://yourIP/live
|
||||||
|
|
||||||
|
Reanaming/replacing 'Undernet' in X's responses with your network name:
|
||||||
|
Enter in postgresql command line:
|
||||||
|
linux:/home/gnuworld$ /usr/local/pgsql/bin/psql cservice
|
||||||
|
cservice=# UPDATE translations SET text=REPLACE(text, 'Undernet', 'YourNetwork');
|
||||||
|
Quit from psql command line with \q
|
||||||
|
cservice=# \q
|
||||||
|
linux:/home/gnuworld$
|
||||||
|
|
@ -0,0 +1,106 @@
|
||||||
|
This is a typical ubuntu installation.
|
||||||
|
|
||||||
|
root@vps189189:~# sudo apt-get install gcc g++ cpp
|
||||||
|
root@vps189189:~# sudo apt-get install flex
|
||||||
|
root@vps189189:~# sudo apt-get install byacc
|
||||||
|
root@vps189189:~# sudo apt-get install bison
|
||||||
|
root@vps189189:~# sudo apt-get install make automake
|
||||||
|
root@vps189189:~# sudo apt-get install openssl libssl-dev
|
||||||
|
root@vps189189:~# sudo apt-get install git
|
||||||
|
root@vps189189:~# sudo apt-get install libpqxx-4.0
|
||||||
|
root@vps189189:~# sudo apt-get install libreadline6-dev
|
||||||
|
root@vps189189:~# sudo apt-get install zlib1g-dev
|
||||||
|
root@vps189189:~# sudo apt-get install vim
|
||||||
|
|
||||||
|
Add a non-root user for postgresql, eg. 'gnuworld'
|
||||||
|
root@vps189189:~# adduser gnuworld
|
||||||
|
|
||||||
|
Installing PostgreSQL database:
|
||||||
|
root@vps189189:~# wget http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.gz
|
||||||
|
root@vps189189:~# tar zxvf postgresql-9.3.4.tar.gz
|
||||||
|
root@vps189189:~# cd postgresql-9.3.4/
|
||||||
|
root@vps189189:~/postgresql-9.3.4# ./configure [--without-readline --without-zlib]
|
||||||
|
root@vps189189:~/postgresql-9.3.4# make && sudo make install
|
||||||
|
root@vps189189:~/postgresql-9.3.4# cd ~
|
||||||
|
You can use here nano if you want, I use vim editor
|
||||||
|
root@vps189189:~# vim /etc/ld.so.conf
|
||||||
|
Press 'a' to enter in edit mode, and insert the line:
|
||||||
|
/usr/local/pgsql/lib
|
||||||
|
Press ESC
|
||||||
|
write: ':wq' or hold down Shift and press two times 'z' (Shift + ZZ)
|
||||||
|
|
||||||
|
Now let's create the database directories:
|
||||||
|
root@vps189189:~# [sudo] mkdir /usr/local/pgsql/data
|
||||||
|
root@vps189189:~# chown gnuworld /usr/local/pgsql/data
|
||||||
|
root@vps189189:~# chgrp gnuworld /usr/local/pgsql/data
|
||||||
|
Starting the database itself:
|
||||||
|
root@vps189189:~# su gnuworld
|
||||||
|
gnuworld@vps189189:/root$ cd ~
|
||||||
|
gnuworld@vps189189:~$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
|
||||||
|
Success. You can now start the database server using:
|
||||||
|
gnuworld@vps189189:~$ /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data &
|
||||||
|
|
||||||
|
This line is useful to put in crontab, so on server reboot you get postgres running
|
||||||
|
gnuworld@vps189189:~$ crontab -e
|
||||||
|
At the end insert:
|
||||||
|
@reboot /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
|
||||||
|
|
||||||
|
After this I usually open a new terminal window, to not to be bothered with database messages.
|
||||||
|
|
||||||
|
Now install gnuworld-enhanced:
|
||||||
|
gnuworld@vps189189:~$ git clone https://github.com/Seven-7/gnuworld-enhanced.git
|
||||||
|
gnuworld@vps189189:~$ cd gnuworld-enhanced/
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced$ ./configure --with-extra-includes=/usr/local/include --with-extra-includes=/usr/include/postgresql/ --with-pgsql-home=/usr/local/pgsql/ --enable-modules=cservice,ccontrol,dronescan,openchanfix[,gnutest,nickserv,scanner,snoop,stats]
|
||||||
|
Please note here that gnutest,nickserv,scanner,snoop,stats modules are experimental, unfinished, not useful, probably you should ommit modules!
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced$ make; make install
|
||||||
|
|
||||||
|
Now create the actual databases:
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced$ cd doc
|
||||||
|
Note!: You can try to shortcat all of these with running the
|
||||||
|
~/gnuworld-enhanced/doc/do-db.sh
|
||||||
|
script! You must be in the ~/gnuworld-enhanced/doc directory!
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ ./do-db.sh
|
||||||
|
Or manually:
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII cservice
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.config.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < languages.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < language_table.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < greeting.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.help.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.web.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < cservice.addme.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII ccontrol
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql ccontrol < ccontrol.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql ccontrol < ccontrol.help.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql ccontrol < ccontrol.addme.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql ccontrol < ccontrol.commands.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII dronescan
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql dronescan < dronescan.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII chanfix
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/doc$ cd ../mod.openchanfix/doc/
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ /usr/local/pgsql/bin/psql chanfix < chanfix.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ /usr/local/pgsql/bin/psql chanfix < chanfix.languages.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ /usr/local/pgsql/bin/psql chanfix < chanfix.language.english.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ /usr/local/pgsql/bin/psql chanfix < chanfix.help.sql
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ /usr/local/pgsql/bin/psql chanfix < chanfix.addme.sql
|
||||||
|
|
||||||
|
Go to bin directory, and create the gnuworld config files:
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/mod.openchanfix/doc$ cd ~/gnuworld-enhanced/bin/
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ cp GNUWorld.example.conf GNUWorld.conf
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ cp cservice.example.conf cservice.conf
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ cp ccontrol.example.conf ccontrol.conf
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ cp dronescan.example.conf dronescan.conf
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ cp openchanfix.example.conf openchanfix.conf
|
||||||
|
Edit all these files.
|
||||||
|
|
||||||
|
In GNUWorld.conf don't forget to uncomment the modules you configured with
|
||||||
|
|
||||||
|
# To use a certain module, uncomment it below.
|
||||||
|
module = libcservice.la cservice.conf
|
||||||
|
module = libccontrol.la ccontrol.conf
|
||||||
|
module = libchanfix.la openchanfix.conf
|
||||||
|
module = libdronescan.la dronescan.conf
|
||||||
|
|
||||||
|
And finally we can start gnuworld:
|
||||||
|
gnuworld@vps189189:~/gnuworld-enhanced/bin$ ./gnuworld &
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
Example of installing ircd (Nefarious2 or ircu)
|
||||||
|
|
||||||
|
root@vps189189:~# sudo apt-get update
|
||||||
|
root@vps189189:~# sudo apt-get install gcc g++ cpp
|
||||||
|
root@vps189189:~# sudo apt-get install flex
|
||||||
|
root@vps189189:~# sudo apt-get install byacc
|
||||||
|
root@vps189189:~# sudo apt-get install bison
|
||||||
|
root@vps189189:~# sudo apt-get install make autoconf automake
|
||||||
|
root@vps189189:~# sudo apt-get install openssl libssl-dev
|
||||||
|
root@vps189189:~# sudo apt-get install libpcre3-dev
|
||||||
|
root@vps189189:~# sudo apt-get install git
|
||||||
|
root@vps189189:~# sudo apt-get install vim
|
||||||
|
|
||||||
|
Let's create a user for ircd
|
||||||
|
root@vps189189:~# adduser ircd
|
||||||
|
root@vps189189:~# su ircd
|
||||||
|
ircd@vps189189:~# cd ~
|
||||||
|
ircd@vps189189:~# mkdir ircds
|
||||||
|
|
||||||
|
Depending which (or both) ircd you install:
|
||||||
|
ircd@vps189189:~# mkdir ircds/nef2-bin
|
||||||
|
ircd@vps189189:~# mkdir ircds/ircu-bin
|
||||||
|
ircd@vps189189:~# cd ~
|
||||||
|
ircd@vps189189:~# git clone https://github.com/evilnet/nefarious2.git
|
||||||
|
ircd@vps189189:~# cd nefarious2
|
||||||
|
|
||||||
|
Important note: Do the patch described in gnuworld-enhanced/README-DO-UPDATES.txt at date 2016.01.06
|
||||||
|
|
||||||
|
ircd@vps189189:~/nefarious2$ ./configure --prefix=/home/ircd/ircds/nef2-bin
|
||||||
|
ircd@vps189189:~/nefarious2$ make; make install
|
||||||
|
ircd@vps189189:~/nefarious2$ cd /home/ircd/ircds/nef2-bin/lib
|
||||||
|
|
||||||
|
Copy from the example conf from gnuworld-enhanced doc
|
||||||
|
ircd@vps189189:~/ircds/nef2-bin/lib$ cp /home/gnuworld/gnuworld-enhanced/doc/ircds.example.conf/ircd-nef.example.conf /home/ircd/ircds/nef2-bin
|
||||||
|
ircd@vps189189:~/ircds/nef2-bin/lib$ mv ircd-nef.example.conf ircd.conf
|
||||||
|
Edit the conf to your needs!
|
||||||
|
ircd@vps189189:~/ircds/nef2-bin/lib$ vim ircd.conf
|
||||||
|
Start the ircd:
|
||||||
|
ircd@vps189189:~/ircds/nef2-bin/lib$ cd ../bin
|
||||||
|
ircd@vps189189:~/ircds/nef2-bin/bin$ ./ircd &
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
==========================================================================
|
||||||
|
* Any change in a *.h file requires a complete reconfigure and remake.
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
After you modified a *.h file, you should do the following steps:
|
||||||
|
1) Note down you actual config line fom ~/gnuworld-enhanced/config.log
|
||||||
|
2) make clean; make distclean
|
||||||
|
3) ./configure ......
|
||||||
|
4) make; make install
|
||||||
|
==========================================================================
|
||||||
|
* Fast postgresql restart command:
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
/usr/local/pgsql/bin/pg_ctl restart -m fast -D /usr/local/pgsql/data -o -F &
|
||||||
|
|
@ -0,0 +1,340 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) 19yy <name of author>
|
||||||
|
|
||||||
|
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
|
|
@ -0,0 +1,192 @@
|
||||||
|
## $Id: Makefile.am,v 1.26 2007/08/28 16:09:56 dan_karrels Exp $
|
||||||
|
## test
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
if COND_MODCCONTROL
|
||||||
|
MODCCONTROL = mod.ccontrol
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODCHANFIX
|
||||||
|
MODCHANFIX = mod.chanfix
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODCLIENTEXAMPLE
|
||||||
|
MODCLIENTEXAMPLE = mod.clientExample
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODCLONER
|
||||||
|
MODCLONER = mod.cloner
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODCSERVICE
|
||||||
|
MODCSERVICE = mod.cservice
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODDRONESCAN
|
||||||
|
MODDRONESCAN = mod.dronescan
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODGNUTEST
|
||||||
|
MODGNUTEST = mod.gnutest
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODNICKSERV
|
||||||
|
MODNICKSERV = mod.nickserv
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODOPENCHANFIX
|
||||||
|
MODOPENCHANFIX = mod.openchanfix
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODSCANNER
|
||||||
|
MODSCANNER = mod.scanner
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODSTATS
|
||||||
|
MODSTATS = mod.stats
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_MODSNOOP
|
||||||
|
MODSNOOP = mod.snoop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if COND_TESTDIR
|
||||||
|
TESTDIR = test
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS = libgnuworld libltdl src db \
|
||||||
|
$(NEW_MODS) \
|
||||||
|
$(MODCCONTROL) \
|
||||||
|
$(MODCHANFIX) \
|
||||||
|
$(MODCLIENTEXAMPLE) \
|
||||||
|
$(MODCLONER) \
|
||||||
|
$(MODCSERVICE) \
|
||||||
|
$(MODDRONESCAN) \
|
||||||
|
$(MODGNUTEST) \
|
||||||
|
$(MODNICKSERV) \
|
||||||
|
$(MODOPENCHANFIX) \
|
||||||
|
$(MODSCANNER) \
|
||||||
|
$(MODSTATS) \
|
||||||
|
$(MODSNOOP) \
|
||||||
|
$(TESTDIR) \
|
||||||
|
libircu
|
||||||
|
|
||||||
|
EXTRA_DIST = bin/ccontrol.example.conf.in \
|
||||||
|
bin/chanfix.example.conf.in \
|
||||||
|
bin/clientExample.example.conf.in \
|
||||||
|
bin/cloner.example.conf.in \
|
||||||
|
bin/cservice.example.conf.in \
|
||||||
|
bin/dronescan.example.conf.in \
|
||||||
|
bin/gnutest.example.conf.in \
|
||||||
|
bin/GNUWorld.example.conf.in \
|
||||||
|
bin/nickserv.example.conf.in \
|
||||||
|
bin/openchanfix.example.conf.in \
|
||||||
|
bin/scanner.example.conf.in \
|
||||||
|
bin/stats.example.conf.in \
|
||||||
|
bin/server_command_map.in \
|
||||||
|
contrib/00INDEX.TXT \
|
||||||
|
contrib/chktrans.py \
|
||||||
|
contrib/encrypt.sh \
|
||||||
|
doc/README.pgsql \
|
||||||
|
doc/README \
|
||||||
|
doc/README.appjudge \
|
||||||
|
doc/README.ccontrol \
|
||||||
|
doc/README.cservice \
|
||||||
|
doc/README.dronescan \
|
||||||
|
doc/README.sharedmemory \
|
||||||
|
doc/autokill.sql \
|
||||||
|
doc/ccontrol.addme.sql \
|
||||||
|
doc/ccontrol.commands.sql \
|
||||||
|
doc/ccontrol.help.sql \
|
||||||
|
doc/ccontrol.sql \
|
||||||
|
doc/ccontrol.update.sql \
|
||||||
|
doc/checkvarargs.py \
|
||||||
|
doc/chktrans.py \
|
||||||
|
doc/cparse.py \
|
||||||
|
doc/cservice.addme.sql \
|
||||||
|
doc/cservice.config.sql \
|
||||||
|
doc/cservice.help.sql \
|
||||||
|
doc/cservice.sql \
|
||||||
|
doc/cservice.web.sql \
|
||||||
|
doc/dronescan.sql \
|
||||||
|
doc/genhelp.py \
|
||||||
|
doc/grant.sql \
|
||||||
|
doc/greeting.sql \
|
||||||
|
doc/language_christmas.sql \
|
||||||
|
doc/language_dutch.sql \
|
||||||
|
doc/language_easter.sql \
|
||||||
|
doc/language_german.sql \
|
||||||
|
doc/language_greek.sql \
|
||||||
|
doc/language_halloween.sql \
|
||||||
|
doc/language_swedish.sql \
|
||||||
|
doc/language_table.sql \
|
||||||
|
doc/languages.sql \
|
||||||
|
doc/local_db.sql \
|
||||||
|
doc/motd.sql \
|
||||||
|
doc/movetables \
|
||||||
|
doc/notes.sql \
|
||||||
|
doc/README \
|
||||||
|
doc/README.appjudge \
|
||||||
|
doc/README.ccontrol \
|
||||||
|
doc/README.cservice \
|
||||||
|
doc/README.pgsql \
|
||||||
|
doc/README.sharedmemory \
|
||||||
|
doc/update.channels.sql \
|
||||||
|
doc/update_complaints_20031020.sql \
|
||||||
|
doc/update_complaints_20031026.sql \
|
||||||
|
doc/update_complaints.sql \
|
||||||
|
doc/update.delete.sql \
|
||||||
|
doc/update.gfxcode.sql \
|
||||||
|
doc/update.statistics.sql \
|
||||||
|
doc/update_fraud_lists.sql \
|
||||||
|
doc/update.statistics.sql \
|
||||||
|
doc/update_themes.sql \
|
||||||
|
doc/update_tzmove_l.sql \
|
||||||
|
doc/update_tzmove_r.sql \
|
||||||
|
doc/cmaster/maint/cleanup_traffic.sql \
|
||||||
|
doc/cmaster/maint/enc_pass.sh \
|
||||||
|
doc/cmaster/maint/fixDOS.sh \
|
||||||
|
doc/cmaster/maint/Manager1K.sh \
|
||||||
|
doc/cmaster/maint/WipeUser.sh \
|
||||||
|
doc/cmaster/regproc/appjudge \
|
||||||
|
doc/cmaster/regproc/appjudge-config \
|
||||||
|
doc/cmaster/regproc/cron-judge.in \
|
||||||
|
doc/cmaster/regproc/cycle-judge \
|
||||||
|
doc/cmaster/website/faq.html \
|
||||||
|
doc/cmaster/website/index.html \
|
||||||
|
doc/cmaster/website/install.html \
|
||||||
|
doc/cmaster/website/manual.html \
|
||||||
|
doc/cmaster/website/web.html \
|
||||||
|
doc/idoc/index.php \
|
||||||
|
doc/idoc/README \
|
||||||
|
doc/nickserv/nickserv.sql \
|
||||||
|
doc/nickserv/INSTALL \
|
||||||
|
doc/nickserv/USAGE \
|
||||||
|
include/defs.h \
|
||||||
|
include/Channel.h \
|
||||||
|
include/ChannelUser.h \
|
||||||
|
include/Gline.h \
|
||||||
|
include/LoadClientTimerHandler.h \
|
||||||
|
include/Network.h \
|
||||||
|
include/NetworkTarget.h \
|
||||||
|
include/Numeric.h \
|
||||||
|
include/ServerCommandHandler.h \
|
||||||
|
include/ServerTimerHandlers.h \
|
||||||
|
include/Timer.h \
|
||||||
|
include/TimerHandler.h \
|
||||||
|
include/UnloadClientTimerHandler.h \
|
||||||
|
include/client.h \
|
||||||
|
include/events.h \
|
||||||
|
include/iClient.h \
|
||||||
|
include/iServer.h \
|
||||||
|
include/ip.h \
|
||||||
|
include/gnuworld_config.h \
|
||||||
|
include/gw_hashmap.h \
|
||||||
|
include/moduleLoader.h \
|
||||||
|
include/server.h \
|
||||||
|
libltdl/acconfig.h \
|
||||||
|
libltdl/ltdl.h \
|
||||||
|
libltdl/config.h \
|
||||||
|
tools/checkgnuworld.sh
|
||||||
|
|
||||||
|
|
@ -0,0 +1,941 @@
|
||||||
|
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = .
|
||||||
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
|
$(srcdir)/Makefile.in \
|
||||||
|
$(top_srcdir)/bin/GNUWorld.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/ccontrol.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/chanfix.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/clientExample.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/cloner.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/cservice.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/dronescan.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/gnutest.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/logging.properties.in \
|
||||||
|
$(top_srcdir)/bin/nickserv.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/openchanfix.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/scanner.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/server_command_map.in \
|
||||||
|
$(top_srcdir)/bin/snoop.example.conf.in \
|
||||||
|
$(top_srcdir)/bin/stats.example.conf.in \
|
||||||
|
$(top_srcdir)/configure $(top_srcdir)/include/defs.h.in \
|
||||||
|
$(top_srcdir)/tools/checkgnuworld.sh.in AUTHORS COPYING \
|
||||||
|
ChangeLog INSTALL NEWS TODO config.guess config.sub depcomp \
|
||||||
|
install-sh ltconfig ltmain.sh missing mkinstalldirs
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/ac_cxx_namespaces.m4 \
|
||||||
|
$(top_srcdir)/ax_boost_thread.m4 $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/include/defs.h
|
||||||
|
CONFIG_CLEAN_FILES = bin/server_command_map bin/ccontrol.example.conf \
|
||||||
|
bin/chanfix.example.conf bin/clientExample.example.conf \
|
||||||
|
bin/cloner.example.conf bin/cservice.example.conf \
|
||||||
|
bin/gnutest.example.conf bin/GNUWorld.example.conf \
|
||||||
|
bin/nickserv.example.conf bin/openchanfix.example.conf \
|
||||||
|
bin/scanner.example.conf bin/stats.example.conf \
|
||||||
|
bin/snoop.example.conf bin/dronescan.example.conf \
|
||||||
|
bin/logging.properties tools/checkgnuworld.sh
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
|
html-recursive info-recursive install-data-recursive \
|
||||||
|
install-dvi-recursive install-exec-recursive \
|
||||||
|
install-html-recursive install-info-recursive \
|
||||||
|
install-pdf-recursive install-ps-recursive install-recursive \
|
||||||
|
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||||
|
ps-recursive uninstall-recursive
|
||||||
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir dist dist-all distcheck
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = libgnuworld libltdl src db @NEW_MODS@ mod.ccontrol \
|
||||||
|
mod.chanfix mod.clientExample mod.cloner mod.cservice \
|
||||||
|
mod.dronescan mod.gnutest mod.nickserv mod.openchanfix \
|
||||||
|
mod.scanner mod.stats mod.snoop test libircu
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
{ test ! -d "$(distdir)" \
|
||||||
|
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -fr "$(distdir)"; }; }
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
|
GZIP_ENV = --best
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BOOST_THREAD_LIB = @BOOST_THREAD_LIB@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INCLTDL = @INCLTDL@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBGNUWORLD = @LIBGNUWORLD@
|
||||||
|
LIBLTDL = @LIBLTDL@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTDLDEPS = @LTDLDEPS@
|
||||||
|
LTDLINCL = @LTDLINCL@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NEW_MODS = @NEW_MODS@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
pgsql_includedir = @pgsql_includedir@
|
||||||
|
pgsql_libdir = @pgsql_libdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
subdirs = @subdirs@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
threadLib = @threadLib@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
@COND_MODCCONTROL_TRUE@MODCCONTROL = mod.ccontrol
|
||||||
|
@COND_MODCHANFIX_TRUE@MODCHANFIX = mod.chanfix
|
||||||
|
@COND_MODCLIENTEXAMPLE_TRUE@MODCLIENTEXAMPLE = mod.clientExample
|
||||||
|
@COND_MODCLONER_TRUE@MODCLONER = mod.cloner
|
||||||
|
@COND_MODCSERVICE_TRUE@MODCSERVICE = mod.cservice
|
||||||
|
@COND_MODDRONESCAN_TRUE@MODDRONESCAN = mod.dronescan
|
||||||
|
@COND_MODGNUTEST_TRUE@MODGNUTEST = mod.gnutest
|
||||||
|
@COND_MODNICKSERV_TRUE@MODNICKSERV = mod.nickserv
|
||||||
|
@COND_MODOPENCHANFIX_TRUE@MODOPENCHANFIX = mod.openchanfix
|
||||||
|
@COND_MODSCANNER_TRUE@MODSCANNER = mod.scanner
|
||||||
|
@COND_MODSTATS_TRUE@MODSTATS = mod.stats
|
||||||
|
@COND_MODSNOOP_TRUE@MODSNOOP = mod.snoop
|
||||||
|
@COND_TESTDIR_TRUE@TESTDIR = test
|
||||||
|
SUBDIRS = libgnuworld libltdl src db \
|
||||||
|
$(NEW_MODS) \
|
||||||
|
$(MODCCONTROL) \
|
||||||
|
$(MODCHANFIX) \
|
||||||
|
$(MODCLIENTEXAMPLE) \
|
||||||
|
$(MODCLONER) \
|
||||||
|
$(MODCSERVICE) \
|
||||||
|
$(MODDRONESCAN) \
|
||||||
|
$(MODGNUTEST) \
|
||||||
|
$(MODNICKSERV) \
|
||||||
|
$(MODOPENCHANFIX) \
|
||||||
|
$(MODSCANNER) \
|
||||||
|
$(MODSTATS) \
|
||||||
|
$(MODSNOOP) \
|
||||||
|
$(TESTDIR) \
|
||||||
|
libircu
|
||||||
|
|
||||||
|
EXTRA_DIST = bin/ccontrol.example.conf.in \
|
||||||
|
bin/chanfix.example.conf.in \
|
||||||
|
bin/clientExample.example.conf.in \
|
||||||
|
bin/cloner.example.conf.in \
|
||||||
|
bin/cservice.example.conf.in \
|
||||||
|
bin/dronescan.example.conf.in \
|
||||||
|
bin/gnutest.example.conf.in \
|
||||||
|
bin/GNUWorld.example.conf.in \
|
||||||
|
bin/nickserv.example.conf.in \
|
||||||
|
bin/openchanfix.example.conf.in \
|
||||||
|
bin/scanner.example.conf.in \
|
||||||
|
bin/stats.example.conf.in \
|
||||||
|
bin/server_command_map.in \
|
||||||
|
contrib/00INDEX.TXT \
|
||||||
|
contrib/chktrans.py \
|
||||||
|
contrib/encrypt.sh \
|
||||||
|
doc/README.pgsql \
|
||||||
|
doc/README \
|
||||||
|
doc/README.appjudge \
|
||||||
|
doc/README.ccontrol \
|
||||||
|
doc/README.cservice \
|
||||||
|
doc/README.dronescan \
|
||||||
|
doc/README.sharedmemory \
|
||||||
|
doc/autokill.sql \
|
||||||
|
doc/ccontrol.addme.sql \
|
||||||
|
doc/ccontrol.commands.sql \
|
||||||
|
doc/ccontrol.help.sql \
|
||||||
|
doc/ccontrol.sql \
|
||||||
|
doc/ccontrol.update.sql \
|
||||||
|
doc/checkvarargs.py \
|
||||||
|
doc/chktrans.py \
|
||||||
|
doc/cparse.py \
|
||||||
|
doc/cservice.addme.sql \
|
||||||
|
doc/cservice.config.sql \
|
||||||
|
doc/cservice.help.sql \
|
||||||
|
doc/cservice.sql \
|
||||||
|
doc/cservice.web.sql \
|
||||||
|
doc/dronescan.sql \
|
||||||
|
doc/genhelp.py \
|
||||||
|
doc/grant.sql \
|
||||||
|
doc/greeting.sql \
|
||||||
|
doc/language_christmas.sql \
|
||||||
|
doc/language_dutch.sql \
|
||||||
|
doc/language_easter.sql \
|
||||||
|
doc/language_german.sql \
|
||||||
|
doc/language_greek.sql \
|
||||||
|
doc/language_halloween.sql \
|
||||||
|
doc/language_swedish.sql \
|
||||||
|
doc/language_table.sql \
|
||||||
|
doc/languages.sql \
|
||||||
|
doc/local_db.sql \
|
||||||
|
doc/motd.sql \
|
||||||
|
doc/movetables \
|
||||||
|
doc/notes.sql \
|
||||||
|
doc/README \
|
||||||
|
doc/README.appjudge \
|
||||||
|
doc/README.ccontrol \
|
||||||
|
doc/README.cservice \
|
||||||
|
doc/README.pgsql \
|
||||||
|
doc/README.sharedmemory \
|
||||||
|
doc/update.channels.sql \
|
||||||
|
doc/update_complaints_20031020.sql \
|
||||||
|
doc/update_complaints_20031026.sql \
|
||||||
|
doc/update_complaints.sql \
|
||||||
|
doc/update.delete.sql \
|
||||||
|
doc/update.gfxcode.sql \
|
||||||
|
doc/update.statistics.sql \
|
||||||
|
doc/update_fraud_lists.sql \
|
||||||
|
doc/update.statistics.sql \
|
||||||
|
doc/update_themes.sql \
|
||||||
|
doc/update_tzmove_l.sql \
|
||||||
|
doc/update_tzmove_r.sql \
|
||||||
|
doc/cmaster/maint/cleanup_traffic.sql \
|
||||||
|
doc/cmaster/maint/enc_pass.sh \
|
||||||
|
doc/cmaster/maint/fixDOS.sh \
|
||||||
|
doc/cmaster/maint/Manager1K.sh \
|
||||||
|
doc/cmaster/maint/WipeUser.sh \
|
||||||
|
doc/cmaster/regproc/appjudge \
|
||||||
|
doc/cmaster/regproc/appjudge-config \
|
||||||
|
doc/cmaster/regproc/cron-judge.in \
|
||||||
|
doc/cmaster/regproc/cycle-judge \
|
||||||
|
doc/cmaster/website/faq.html \
|
||||||
|
doc/cmaster/website/index.html \
|
||||||
|
doc/cmaster/website/install.html \
|
||||||
|
doc/cmaster/website/manual.html \
|
||||||
|
doc/cmaster/website/web.html \
|
||||||
|
doc/idoc/index.php \
|
||||||
|
doc/idoc/README \
|
||||||
|
doc/nickserv/nickserv.sql \
|
||||||
|
doc/nickserv/INSTALL \
|
||||||
|
doc/nickserv/USAGE \
|
||||||
|
include/defs.h \
|
||||||
|
include/Channel.h \
|
||||||
|
include/ChannelUser.h \
|
||||||
|
include/Gline.h \
|
||||||
|
include/LoadClientTimerHandler.h \
|
||||||
|
include/Network.h \
|
||||||
|
include/NetworkTarget.h \
|
||||||
|
include/Numeric.h \
|
||||||
|
include/ServerCommandHandler.h \
|
||||||
|
include/ServerTimerHandlers.h \
|
||||||
|
include/Timer.h \
|
||||||
|
include/TimerHandler.h \
|
||||||
|
include/UnloadClientTimerHandler.h \
|
||||||
|
include/client.h \
|
||||||
|
include/events.h \
|
||||||
|
include/iClient.h \
|
||||||
|
include/iServer.h \
|
||||||
|
include/ip.h \
|
||||||
|
include/gnuworld_config.h \
|
||||||
|
include/gw_hashmap.h \
|
||||||
|
include/moduleLoader.h \
|
||||||
|
include/server.h \
|
||||||
|
libltdl/acconfig.h \
|
||||||
|
libltdl/ltdl.h \
|
||||||
|
libltdl/config.h \
|
||||||
|
tools/checkgnuworld.sh
|
||||||
|
|
||||||
|
all: all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
am--refresh:
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
echo ' $(SHELL) ./config.status'; \
|
||||||
|
$(SHELL) ./config.status;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
include/defs.h: include/stamp-h1
|
||||||
|
@if test ! -f $@; then \
|
||||||
|
rm -f include/stamp-h1; \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) include/stamp-h1; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
|
include/stamp-h1: $(top_srcdir)/include/defs.h.in $(top_builddir)/config.status
|
||||||
|
@rm -f include/stamp-h1
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status include/defs.h
|
||||||
|
$(top_srcdir)/include/defs.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||||
|
rm -f include/stamp-h1
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
distclean-hdr:
|
||||||
|
-rm -f include/defs.h include/stamp-h1
|
||||||
|
bin/server_command_map: $(top_builddir)/config.status $(top_srcdir)/bin/server_command_map.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/ccontrol.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/ccontrol.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/chanfix.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/chanfix.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/clientExample.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/clientExample.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/cloner.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/cloner.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/cservice.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/cservice.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/gnutest.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/gnutest.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/GNUWorld.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/GNUWorld.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/nickserv.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/nickserv.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/openchanfix.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/openchanfix.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/scanner.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/scanner.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/stats.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/stats.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/snoop.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/snoop.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/dronescan.example.conf: $(top_builddir)/config.status $(top_srcdir)/bin/dronescan.example.conf.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
bin/logging.properties: $(top_builddir)/config.status $(top_srcdir)/bin/logging.properties.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
tools/checkgnuworld.sh: $(top_builddir)/config.status $(top_srcdir)/tools/checkgnuworld.sh.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool config.lt
|
||||||
|
|
||||||
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
|
# into them and run `make' without going through this Makefile.
|
||||||
|
# To change the values of `make' variables: instead of editing Makefiles,
|
||||||
|
# (1) if the variable is set in `config.status', edit `config.status'
|
||||||
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
|
$(RECURSIVE_TARGETS):
|
||||||
|
@fail= failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
dot_seen=yes; \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
|
@fail= failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
dot_seen=no; \
|
||||||
|
case "$@" in \
|
||||||
|
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||||
|
*) list='$(SUBDIRS)' ;; \
|
||||||
|
esac; \
|
||||||
|
rev=''; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = "."; then :; else \
|
||||||
|
rev="$$subdir $$rev"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
rev="$$rev ."; \
|
||||||
|
target=`echo $@ | sed s/-recursive//`; \
|
||||||
|
for subdir in $$rev; do \
|
||||||
|
echo "Making $$target in $$subdir"; \
|
||||||
|
if test "$$subdir" = "."; then \
|
||||||
|
local_target="$$target-am"; \
|
||||||
|
else \
|
||||||
|
local_target="$$target"; \
|
||||||
|
fi; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
|
done
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
|
include_option=--etags-include; \
|
||||||
|
empty_fix=.; \
|
||||||
|
else \
|
||||||
|
include_option=--include; \
|
||||||
|
empty_fix=; \
|
||||||
|
fi; \
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test ! -f $$subdir/TAGS || \
|
||||||
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
test -d "$(distdir)/$$subdir" \
|
||||||
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$new_top_distdir" \
|
||||||
|
distdir="$$new_distdir" \
|
||||||
|
am__remove_distdir=: \
|
||||||
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -755 \
|
||||||
|
-exec chmod u+rwx,go+rx {} \; -o \
|
||||||
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|
|| chmod -R a+r "$(distdir)"
|
||||||
|
dist-gzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-bzip2: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-lzma: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-tarZ: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-shar: distdir
|
||||||
|
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-zip: distdir
|
||||||
|
-rm -f $(distdir).zip
|
||||||
|
zip -rq $(distdir).zip $(distdir)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist dist-all: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
# This target untars the dist file and tries a VPATH configuration. Then
|
||||||
|
# it guarantees that the distribution is self-contained by making another
|
||||||
|
# tarfile.
|
||||||
|
distcheck: dist
|
||||||
|
case '$(DIST_ARCHIVES)' in \
|
||||||
|
*.tar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
|
*.tar.bz2*) \
|
||||||
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.lzma*) \
|
||||||
|
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
|
*.tar.Z*) \
|
||||||
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||||
|
*.zip*) \
|
||||||
|
unzip $(distdir).zip ;;\
|
||||||
|
esac
|
||||||
|
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||||
|
mkdir $(distdir)/_build
|
||||||
|
mkdir $(distdir)/_inst
|
||||||
|
chmod a-w $(distdir)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& am__cwd=`pwd` \
|
||||||
|
&& $(am__cd) $(distdir)/_build \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||||
|
distuninstallcheck \
|
||||||
|
&& chmod -R a-w "$$dc_install_base" \
|
||||||
|
&& ({ \
|
||||||
|
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||||
|
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||||
|
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||||
|
&& rm -rf "$$dc_destdir" \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
|
$(am__remove_distdir)
|
||||||
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
|
distuninstallcheck:
|
||||||
|
@$(am__cd) '$(distuninstallcheck_dir)' \
|
||||||
|
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||||
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
|
if test -n "$(DESTDIR)"; then \
|
||||||
|
echo " (check DESTDIR support)"; \
|
||||||
|
fi ; \
|
||||||
|
$(distuninstallcheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
distcleancheck: distclean
|
||||||
|
@if test '$(srcdir)' = . ; then \
|
||||||
|
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||||
|
exit 1 ; \
|
||||||
|
fi
|
||||||
|
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||||
|
$(distcleancheck_listfiles) ; \
|
||||||
|
exit 1; } >&2
|
||||||
|
check-am: all-am
|
||||||
|
check: check-recursive
|
||||||
|
all-am: Makefile
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
install: install-recursive
|
||||||
|
install-exec: install-exec-recursive
|
||||||
|
install-data: install-data-recursive
|
||||||
|
uninstall: uninstall-recursive
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-recursive
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-recursive
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am:
|
||||||
|
|
||||||
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||||
|
install-am install-strip tags-recursive
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
|
all all-am am--refresh check check-am clean clean-generic \
|
||||||
|
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||||
|
dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
|
||||||
|
distcheck distclean distclean-generic distclean-hdr \
|
||||||
|
distclean-libtool distclean-tags distcleancheck distdir \
|
||||||
|
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am install-man \
|
||||||
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||||
|
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||||
|
ps ps-am tags tags-recursive uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
The newest versions (v7.3.x) of postgresql do not come with c++ support by
|
||||||
|
default. These libraries have been moved to a separate project. However,
|
||||||
|
that project is not yet mature enough to compile no most systems.
|
||||||
|
Therefore, we recommend you use the latest version of pgsql v7.2.x
|
||||||
|
(currently 7.2.4).
|
||||||
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
!!! WARNING !!!
|
||||||
|
READ ALL THE FOLLOWING WARINGS BEFORE PROCEED WITH INSTALL !!!
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
Use this version of gnuworld at your own risk, this is used by smaller communities, it is not so well tested like the official gnuworld, therefore easily could be found bugs!
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
DO NOT use older versions, which comes from circulation from "hand-to hand" those represents a higher risk of containing critical bugs, always use the latest version. There are a few basic steps to get correctly the latest version:
|
||||||
|
1. Install git:
|
||||||
|
sudo apt-get install git
|
||||||
|
2. Get the latest 'gnuworld-enhanced'
|
||||||
|
git clone https://github.com/ZioNeL/gnuworld-enhanced.git
|
||||||
|
3. Install it in the usual way:
|
||||||
|
cd gnuworld-enhanced
|
||||||
|
./configure ........
|
||||||
|
make && make instal, etc etc
|
||||||
|
4. Keep your code updated, periodically, and/or check for any new commits on github:
|
||||||
|
git pull
|
||||||
|
5. Rebuild and restart gnuworld
|
||||||
|
make && make install
|
||||||
|
restart gnu ...
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
Official gnuworld database and gnuworld-enhanced databases are not compatible! Once you installed one version doesn't work to change your mind and use an existing database with the other gnuworld! Only advanced users could attempt a migration, but it's probably not the case for major usual users!
|
||||||
|
If you want to switch between gnuworld-enhanced and gnuworld official you must recreate all the databases!!
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
Don't run the original official TheJudge crontab scripts with this version of gnuworld! This version handles internally the channel registration process, the crontabs scripts interfere with it in an unpredictable, not wanted way!
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
The Judge settings must be kept in synchron MANUALLY in BOTH gnuworld's cservice.conf as also in website configs!
|
||||||
|
Do not expect the website settings will be applied to the gnuworld too!
|
||||||
|
|
||||||
|
!!! WARNING !!!
|
||||||
|
gnuworld-enhanced is an UNOFFICIAL gnuworld, do not ask for support on Undernet #coder-com, but instead you can ask on #GNUWorld
|
||||||
|
|
@ -0,0 +1,188 @@
|
||||||
|
==============================================================================
|
||||||
|
2020.04.26 * SETHOST: Prevent setting some restricted/reserved hostnames
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
- Add the new restricted/reserved hostnames section from cservice.example.conf to your cservice.conf
|
||||||
|
... restart gnuworld ...
|
||||||
|
|
||||||
|
- If you just edited/updated the restricted hostnames in cservice.conf just:
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
|
||||||
|
- If you don't want to allow admins/opers to set restricted/reserved hosts, edit
|
||||||
|
|
||||||
|
mod.cservice/cservice_config.h
|
||||||
|
|
||||||
|
#undef ADMINS_USE_RESTRICTED_SETHOSTS
|
||||||
|
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
==============================================================================
|
||||||
|
2016.02.18 Added halfop support: mod.cservice HALFOPCommand and HALFDEOPCommand
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make clean; make distclean
|
||||||
|
- Reconfigure again:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ ./configure ......
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
Note: If doesn't works, follow the steps like in SCANCommand, saving libltdl, and doing the autoreconf
|
||||||
|
============================================================================
|
||||||
|
2016.02.04 Recognizing and handling Nefarious2's cloaked IP and cloaked Host
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
Also don't forget to set "HOST_HIDING_STYLE" > 1 in Nefarious2's ircd.conf if you intend to see cloaked IPs/hosts
|
||||||
|
============================================================================
|
||||||
|
2016.01.08 Prevent users to set 'exotic' hostnames, like with colors, etc.
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
============================================================================
|
||||||
|
2016.01.07 Added mod.cservice SCANCommand
|
||||||
|
First puropse: find owner user of a nickname
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
- Check and note down your current configure line:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ vim config.log
|
||||||
|
In my case:
|
||||||
|
./configure --with-extra-includes=/usr/local/include --with-extra-includes=/usr/include/postgresql/ --with-pgsql-home=/usr/local/pgsql/ --enable-modules=cservice,ccontrol
|
||||||
|
- Do a full clean:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make clean; make distclean
|
||||||
|
- Save libltdl:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ cp -rf libltdl/ libltdl-save
|
||||||
|
- Do a full autoreconf:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ autoreconf -Wall -i
|
||||||
|
- Delete libltdl/, rename back libltdl-save:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ rm -rf libltdl; mv libltdl-save libltdl
|
||||||
|
- Configure again:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ ./configure --with-extra-includes=/usr/local/include --with-extra-includes=/usr/include/postgresql/ --with-pgsql-home=/usr/local/pgsql/ --enable-modules=cservice,ccontrol
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
============================================================================
|
||||||
|
2016.01.07 mod.cservice NEWPASS: Admins can set target users a new password
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
- The usual update procedure:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
============================================================================
|
||||||
|
2016.01.06 Nick protection through mod.cservice (nickreg/nickserv function)
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
Warning! You need to patch Nefarious2 to handle correctly svsnicks!
|
||||||
|
- Edit nefarious2/ircd/s_user.c
|
||||||
|
- Find set_nick_name function
|
||||||
|
On the section where writes:
|
||||||
|
/*
|
||||||
|
* Refuse nick change if the last nick change was less
|
||||||
|
* then 30 seconds ago. This is intended to get rid of
|
||||||
|
... ...
|
||||||
|
There is:
|
||||||
|
if (CurrentTime < cli_nextnick(cptr))
|
||||||
|
{
|
||||||
|
cli_nextnick(cptr) += 2;
|
||||||
|
send_reply(cptr, ERR_NICKTOOFAST, parv[1],
|
||||||
|
cli_nextnick(cptr) - CurrentTime);
|
||||||
|
/* Send error message */
|
||||||
|
sendcmdto_one(cptr, CMD_NICK, cptr, "%s", cli_name(cptr));
|
||||||
|
/* bounce NICK to user */
|
||||||
|
return 0; /* ignore nick change! */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Limit total to 1 change per NICK_DELAY seconds: */
|
||||||
|
cli_nextnick(cptr) += NICK_DELAY;
|
||||||
|
/* However allow _maximal_ 1 extra consecutive nick change: */
|
||||||
|
if (cli_nextnick(cptr) < CurrentTime)
|
||||||
|
cli_nextnick(cptr) = CurrentTime;
|
||||||
|
}
|
||||||
|
Change it to:
|
||||||
|
if (!svsnick)
|
||||||
|
{
|
||||||
|
if (CurrentTime < cli_nextnick(cptr))
|
||||||
|
{
|
||||||
|
cli_nextnick(cptr) += 2;
|
||||||
|
send_reply(cptr, ERR_NICKTOOFAST, parv[1],
|
||||||
|
cli_nextnick(cptr) - CurrentTime);
|
||||||
|
/* Send error message */
|
||||||
|
sendcmdto_one(cptr, CMD_NICK, cptr, "%s", cli_name(cptr));
|
||||||
|
/* bounce NICK to user */
|
||||||
|
return 0; /* ignore nick change! */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Limit total to 1 change per NICK_DELAY seconds: */
|
||||||
|
cli_nextnick(cptr) += NICK_DELAY;
|
||||||
|
/* However allow _maximal_ 1 extra consecutive nick change: */
|
||||||
|
if (cli_nextnick(cptr) < CurrentTime)
|
||||||
|
cli_nextnick(cptr) = CurrentTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- Save the file
|
||||||
|
- Do a make; make install again
|
||||||
|
- Restart ircd!
|
||||||
|
|
||||||
|
Now updating gnuworld:
|
||||||
|
- Update the database 'users' table structure:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced/doc
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < update_cservice_users_nickname.sql
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced/doc$ cd ..
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
Done.
|
||||||
|
============================================================================
|
||||||
|
2016.01.06 New feature: Set welcome notice-message on channel joins through X
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
- Update the database 'channels' table structure:
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ cd doc
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < update_cservice_channel_welcome.sql
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced/doc$ cd ..
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
|
||||||
|
Done. You can see the welcome message on any channel join.
|
||||||
|
============================================================================
|
||||||
|
2015.08.06 New feature: Set (fake)hostname for users
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
Warning! This feature requires Nefarious2 with it's Fake host support.
|
||||||
|
If you have an existing installation, you can upgrade with the following steps:
|
||||||
|
- Update the database 'users' table structure:
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ git pull
|
||||||
|
gnuworld@ubuntu:~$ cd gnuworld-enhanced/doc
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced/doc$ /usr/local/pgsql/bin/psql cservice < update_cservice_users_hostname.sql
|
||||||
|
- This update probably requires a full reconfigure, so note down your configure line from
|
||||||
|
~/gnuworld-enhanced/config.log
|
||||||
|
after that, do a full reconfigure and remake
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make clean; make distclean
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ ./configure ....
|
||||||
|
gnuworld@ubuntu:~/gnuworld-enhanced$ make; make install
|
||||||
|
... restart gnuworld ...
|
||||||
|
|
||||||
|
The command syntax for setting a hostname for a username:
|
||||||
|
|
||||||
|
/msg X set hostname <anyhost.youwant.com>
|
||||||
|
|
||||||
|
To clear your hostname use:
|
||||||
|
|
||||||
|
/msg X set hostname off
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
Often might be needed to save your database, you want to do a migration, a reinstall, etc.
|
||||||
|
Creating and restoring a database is easy:
|
||||||
|
|
||||||
|
Creating a backup:
|
||||||
|
-----------------
|
||||||
|
/usr/local/pgsql/bin/pg_dump cservice > cservice-backup.sql
|
||||||
|
/usr/local/pgsql/bin/pg_dump ccontrol > ccontrol-backup.sql
|
||||||
|
|
||||||
|
Restoring a database from backup:
|
||||||
|
--------------------------------
|
||||||
|
First drop the current databases what we want to replace:
|
||||||
|
/usr/local/pgsql/bin/dropdb cservice
|
||||||
|
/usr/local/pgsql/bin/dropdb ccontrol
|
||||||
|
|
||||||
|
Create back the databases, they will be empty:
|
||||||
|
/usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII cservice
|
||||||
|
/usr/local/pgsql/bin/createdb --template=template0 -E=SQL_ASCII ccontrol
|
||||||
|
|
||||||
|
Copy back the backup data:
|
||||||
|
/usr/local/pgsql/bin/psql cservice < cservice-backup.sql
|
||||||
|
/usr/local/pgsql/bin/psql ccontrol < ccontrol-backup.sql
|
||||||
|
|
@ -0,0 +1,574 @@
|
||||||
|
==============================================================================
|
||||||
|
2021.02.20 * Added -new suffixed web sql database files to use with the official webpage
|
||||||
|
Original files are kept for optional use with the original-old-webpage
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Advanced database migration, or complete rebuilt of the database required
|
||||||
|
==============================================================================
|
||||||
|
2020.06.26 * FIX/UPDATE: Newly created users are created with no last_seen data
|
||||||
|
so without login within one day they expire.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Beside the usual update procedure, you must enter into postgresql command line:
|
||||||
|
|
||||||
|
/usr/local/pgsql/bin/psql cservice
|
||||||
|
|
||||||
|
and execute the command:
|
||||||
|
|
||||||
|
cservice=# DROP TRIGGER t_new_user ON users;
|
||||||
|
|
||||||
|
In case of new installation this step is not necessary!
|
||||||
|
==============================================================================
|
||||||
|
2020.06.12 * cservice HELLO now sends out a real email with the generated password
|
||||||
|
* cservice NEWPASS now clears TOTP authentication data as well!
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
The feature has to be enabled in cservice.conf:
|
||||||
|
|
||||||
|
hello_sendmail_enabled = 1
|
||||||
|
|
||||||
|
** IMPORTANT: mailutils or mailx package must be installed on your system!
|
||||||
|
|
||||||
|
For normal users NEWPASS command now can act as Password recovery in case the user is not logged in!
|
||||||
|
(For admins no change in the behavior)
|
||||||
|
If the user is logged in, the original new password generation mechanism applies.
|
||||||
|
So the new syntax is:
|
||||||
|
|
||||||
|
NEWPASS <new passphrase|username>
|
||||||
|
|
||||||
|
So for example a user lost it's password and is NOT logged in,
|
||||||
|
can recover it's password by passing the username as parameter, for example:
|
||||||
|
|
||||||
|
/msg x@channels.yournetwork.org NEWPASS SomeUser
|
||||||
|
|
||||||
|
otherwise if IS logged in, just want to change it's password:
|
||||||
|
|
||||||
|
/msg x@channels.yournetwork.org NEWPASS NewPassword
|
||||||
|
==============================================================================
|
||||||
|
2020.04.26 * SETHOST: Prevent setting some restricted/reserved hostnames
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Restricted/reserved hostnames are set in cservice.conf.
|
||||||
|
Any number of "reservedHost = " entry is allowed.
|
||||||
|
|
||||||
|
To restrict admins/opers to set restricted/reserved hostnames edit
|
||||||
|
mod.cservice/cservice_config.h
|
||||||
|
|
||||||
|
#undef ADMINS_USE_RESTRICTED_SETHOSTS
|
||||||
|
==============================================================================
|
||||||
|
2016.02.18 * Added halfop support: mod.cservice HALFOPCommand and HALFDEOPCommand
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
To enable halfop command in mod.cservice you must
|
||||||
|
#define USING_NEFARIOUS
|
||||||
|
#define USE_HALFOPS
|
||||||
|
in mod.cservice/cservice_config.h
|
||||||
|
|
||||||
|
The syntax is very similar to op and deop.
|
||||||
|
/msg X halfop <#channel> [nick1 nick2 nick3]
|
||||||
|
/msg X haldefop <#channel> [nick1 nick2 nick3]
|
||||||
|
|
||||||
|
Warning! This feature requires Nefarious2 with it's halfop support.
|
||||||
|
Warning! Don't forget to enable halfops in ircd.conf:
|
||||||
|
"HALFOPS" = "TRUE";
|
||||||
|
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
|
||||||
|
==============================================================================
|
||||||
|
2016.02.04 * Recognizing and handling Nefarious2's cloaked IP and cloaked Host
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
If you set "HOST_HIDING_STYLE" greater than 1 in Nefarious2's ircd.conf
|
||||||
|
gnuworld now will recognize the cloaked style
|
||||||
|
==============================================================================
|
||||||
|
2016.01.08 * Prevent users to set 'exotic' hostnames, like with colors, etc.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
You might find lame to see colored/bolded/etc. hostnames, so if you enable
|
||||||
|
|
||||||
|
#define VALIDATE_SET_HOSTNAME
|
||||||
|
|
||||||
|
in mod.cservice/cservice_config.h only normal characters will be allowed.
|
||||||
|
Also it is a possibility of confusion/abuse to allow users to set hosts
|
||||||
|
with the network's hidden-host-suffix(eg. something.users.yournetwork.org)
|
||||||
|
so this is not allowed from now on.
|
||||||
|
============================================================================
|
||||||
|
2016.01.07 * Added mod.cservice SCANCommand
|
||||||
|
First puropse: find owner user of a nickname
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
To find an owner of a nickname:
|
||||||
|
/msg X scan nick|nickname <nick>
|
||||||
|
==============================================================================
|
||||||
|
2016.01.07 * mod.cservice NEWPASS: Admins can set target users a new password
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Admins above access level level::newpass can set target users a new password:
|
||||||
|
Syntax:
|
||||||
|
/msg X@channels.yournetwork.org newpass <targetUser> <target New Password>
|
||||||
|
|
||||||
|
Note: Changing own password remained valid as originally:
|
||||||
|
/msg X@channels.yournetwork.org newpass <your new password>
|
||||||
|
==============================================================================
|
||||||
|
2016.01.06 * Nick protection through mod.cservice (nickreg/nickserv function)
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Warning! This feature requires Nefarious2 with it's svsnick support.
|
||||||
|
Warning! This feature requires to patch Nefarious2 for a proper svsnick handling. Read README-DO-UPDATES.txt!
|
||||||
|
Also USING_NEFARIOUS must be #define in mod.cservice/cservice_config.h
|
||||||
|
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
|
||||||
|
This nick protection works through an svsnick nick changing mechanism by gnuworld.
|
||||||
|
For the cservice user structure is added a nickname field, so gnuworld takes care any nick on the network is used by the 'right person'
|
||||||
|
by force-changing and generating an arbitrary 4 digits numbers ended nickname.
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/msg X set nick|nickname <TheNick>
|
||||||
|
|
||||||
|
To clear any nickname:
|
||||||
|
/msg X set nick|nickname OFF
|
||||||
|
or simply
|
||||||
|
/msg X set nick|nickname
|
||||||
|
|
||||||
|
Also coders/admins with (levels.h -> level::nickset) access can set nickname for a target username.
|
||||||
|
|
||||||
|
/msg X set nick|nickname <targetUser> <targetNewNickname>
|
||||||
|
|
||||||
|
There is a new user flag too, AUTONICK:
|
||||||
|
|
||||||
|
/msg X set autonick <ON|OFF>
|
||||||
|
|
||||||
|
If it is ON, on login the saved nickname will be set for the client.
|
||||||
|
==============================================================================
|
||||||
|
2016.01.06 * Set welcome message-notice for channel joins through X
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
The command syntax for setting welcome message for a channel:
|
||||||
|
|
||||||
|
/msg X set #channel_name welcome <welcome_message>
|
||||||
|
|
||||||
|
To clear any welcome message:
|
||||||
|
|
||||||
|
/msg X set #channel_name welcome OFF
|
||||||
|
or simply
|
||||||
|
/msg X set #channel_name welcome
|
||||||
|
|
||||||
|
Done.
|
||||||
|
You can see the welcome message on any channel join.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
2015.08.06 * Set (fake)hostname for users
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Warning! This feature requires Nefarious2 with it's Fake host support.
|
||||||
|
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
|
||||||
|
|
||||||
|
The command syntax for setting a hostname for a username:
|
||||||
|
|
||||||
|
/msg X set hostname <anyhost.youwant.com>
|
||||||
|
|
||||||
|
To clear your hostname use:
|
||||||
|
|
||||||
|
/msg X set hostname off
|
||||||
|
|
||||||
|
The set hostname will be applied instantaneously (if +x), and on every login with +x
|
||||||
|
insted of the default users hiddenhost suffix
|
||||||
|
==============================================================================
|
||||||
|
* Status * command shows currently logged in officials
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
/msg X status *
|
||||||
|
|
||||||
|
-X- Status of currently logged '*' officials:
|
||||||
|
-X- Auth: SomeUser1/SomeNick1 (1000) SomeUser2/SomeNick2 (750) SomeUser3/SomeNick31 SomeNick32 (750) SomeUser4/SomeNick4 (600)
|
||||||
|
|
||||||
|
Note: The original function of status * is moved to stats *
|
||||||
|
==============================================================================
|
||||||
|
* Suspension of users on channels with reason
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
-X- SYNTAX: SUSPEND <#channel> <username> [duration] [level] [reason]
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
-X- Your reason must be 2 - 300 charcters long.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
-> *x* access #coder-com Seven
|
||||||
|
-X- USER: Seven ACCESS: 499 L
|
||||||
|
-X- CHANNEL: #coder-com -- AUTOMODE: None
|
||||||
|
-X- *** SUSPENDED *** - Expires in 0 days, 00:09:48 (Level 400)
|
||||||
|
-X- Reason: Not proper behavior
|
||||||
|
-X- LAST SEEN: 0 days, 10:13:18 ago.
|
||||||
|
-X- End of access list
|
||||||
|
|
||||||
|
-X- SYNTAX: UNSUSPEND <#channel> <username> [reason]
|
||||||
|
|
||||||
|
-> *x* unsuspend #coder-com Seven I forgive you this time
|
||||||
|
-X- USER: Seven ACCESS: 499 L
|
||||||
|
-X- CHANNEL: #coder-com -- AUTOMODE: None
|
||||||
|
-X- UNSUSPENDED - I forgive you this time
|
||||||
|
-X- LAST SEEN: 0 days, 10:16:09 ago.
|
||||||
|
-X- End of access list
|
||||||
|
|
||||||
|
If the suspension expires, no reason will be show.
|
||||||
|
If no reason is supplied, reason will be "No reason supplied"
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
* NOTEs is accessible for normal users too.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Notes can be used to bother the another, and maybe admins don't even want to get notes from normal users, for
|
||||||
|
this I introduced config lines in "cservice_config.h"
|
||||||
|
|
||||||
|
#define USE_NOTES
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do you want normal users to use the Noteserv functionality?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define USE_USERS_NOTES
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Normal users can send notes to admins?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define USERS_NOTE_ADMINS
|
||||||
|
|
||||||
|
It can be choose between only admins use notes, admins and users, and admins can or cannot get notes from users.
|
||||||
|
An ignore option might be advisable.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
* Target users get notification about a new access modification.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
... and if the target user is not logged in in the moment of modification, the notification will be saved and displayed when the user logs in.
|
||||||
|
|
||||||
|
-X- You have been added to channel #coder-com with access level 499
|
||||||
|
-X- Your access on #coder-com has been suspended.
|
||||||
|
-X- Your suspension on #coder-com has been cancelled.
|
||||||
|
-X- Your access on #coder-com has been modified from 499 to 400
|
||||||
|
-X- Your access from #coder-com has been removed by Admin.
|
||||||
|
|
||||||
|
The maxmimum amount of notification can be set up in "cservice.example.conf" at the "max_notes" line. Only the latest "max_notes" count will be stored.
|
||||||
|
|
||||||
|
-X- AUTHENTICATION SUCCESSFUL as Seven
|
||||||
|
-X- Remember: Nobody from CService will ever ask you for your password, do NOT give out your password to anyone claiming to be CService.
|
||||||
|
|
||||||
|
-X- You have been added to channel #coder-com with access level 499
|
||||||
|
-
|
||||||
|
-X- Your access on #coder-com has been suspended.
|
||||||
|
-
|
||||||
|
-X- Your suspension on #coder-com has been cancelled.
|
||||||
|
-
|
||||||
|
-X- Your access on #coder-com has been modified from 499 to 400
|
||||||
|
-
|
||||||
|
-X- Your access from #coder-com has been removed.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
* Completed users url, useable as a short description, motto, etc of the user (like we do with the Real Name).
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
It can be used with 3 keywords:
|
||||||
|
|
||||||
|
/msg X set URL <urlstring>
|
||||||
|
/msg X set DESC || DESCRIPTION <descstring>
|
||||||
|
/msg X set MOTTO <mottostring>
|
||||||
|
|
||||||
|
-> *x* set motto Escape from Paradise
|
||||||
|
-X- Set your MOTTO to Escape from Paradise.
|
||||||
|
|
||||||
|
-> *x* info seven
|
||||||
|
-X- Information about: Seven (2)
|
||||||
|
-X- Escape from Paradise
|
||||||
|
-X- Currently logged on via:
|
||||||
|
|
||||||
|
To clear a motto/desc/url must type:
|
||||||
|
/msg X set url off
|
||||||
|
-X- Cleared your URL
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Chaninfo shows information about channels under registration
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Admins get fullinformation about the channel:
|
||||||
|
|
||||||
|
-> *x* info #anychan
|
||||||
|
-X- Channel #anychan is in applications list at stage:
|
||||||
|
-X- *** PENDING SUPPORTERS CONFIRMATION ***
|
||||||
|
-X- Applicant: Seven - last seen: 0 days, 00:31:32 ago
|
||||||
|
-X- Real Name: Seven RealName
|
||||||
|
-X- Description: Channel for nobody
|
||||||
|
-X- Application posted on: Sun Jun 17 10:01:55 2012
|
||||||
|
-X- Supporters: johndoe/johndoe (0), NoBody (0)
|
||||||
|
|
||||||
|
Where johndoe/johndoe (0) means
|
||||||
|
username/nick (joincount)
|
||||||
|
|
||||||
|
If user has supported channel with YES, it will appear with bold letters
|
||||||
|
If the nick is currently on the channel it will appear with bold letters, if not, in plain, if not logged in then skipped.
|
||||||
|
If a user set it's support to NO, the username will appear with bold upper, and it will appear the decision.
|
||||||
|
|
||||||
|
Applicant and supporters don't get the joincount.
|
||||||
|
Non-supporters get's information Only about Status, Applicant and Description:
|
||||||
|
|
||||||
|
-X- Channel #anychan is in applications list at stage:
|
||||||
|
-X- *** PENDING SUPPORTERS CONFIRMATION ***
|
||||||
|
-X- Applicant: Seven - last seen: 0 days, 01:56:49 ago
|
||||||
|
-X- Description: Channel for nobody
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Officials with *1+ can set nopurge for their user form IRC
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
-> *x* set nopurge on
|
||||||
|
-X- Your NOPURGE setting is now ON
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Manual commands for channel ACCEPT/REJECT from IRC
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-> *x* reject #anychan For some reason rejected
|
||||||
|
-channels.homenetwork.org:#coder-com- [X] Admin (Admin) has rejected #anychan from Seven
|
||||||
|
-X- Rejected channel #anychan
|
||||||
|
|
||||||
|
-> *x* info #anychan
|
||||||
|
-X- Channel #anychan is in applications list at stage:
|
||||||
|
-X- *** REJECTED ***
|
||||||
|
-X- Applicant: Seven - last seen: 0 days, 00:00:50 ago
|
||||||
|
-X- Real Name: Seven RealName
|
||||||
|
-X- Description: Channel for nobody
|
||||||
|
-X- Application posted on: Sun Jun 17 11:28:30 2012
|
||||||
|
-X- Decision by CService Admin: For some reason rejected
|
||||||
|
-X- Supporters: johndoe/johndoe (0), NoBody (0)
|
||||||
|
|
||||||
|
-> *x* accept #anychan For some reason Still Accept
|
||||||
|
-channels.homenetwork.org:#coder-com- [X] Admin (Admin) has accepted #anychan to Seven
|
||||||
|
-X- Accepted channel #anychan
|
||||||
|
|
||||||
|
The from-IRC accept is superior realtive to web-accept, because it's no needed any sychronization time betweeen gnuworld and web,
|
||||||
|
the channel chache is refreshed instantaneously, +R appear, X can be asked to join immediately.
|
||||||
|
|
||||||
|
-X- Your reason must be 2 - 300 charcters long.
|
||||||
|
=============================================================================
|
||||||
|
* Completed HELLO command with verification answer requirement
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-X- SYNTAX: HELLO <username> <email> <email> <1-3> <verification answer>
|
||||||
|
|
||||||
|
-X- Valid verification answer numbers are: 1 to 3
|
||||||
|
-X- 1: What's your mother's maiden name ?
|
||||||
|
-X- 2: What's your dog's(or cat's) name ?
|
||||||
|
-X- 3: What's your father's birth date ?
|
||||||
|
|
||||||
|
-X- Your verification answer must be 4 - 300 charcters long.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Channel REGISTER and HELLO commands take into account NOREG/LOCKED's
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-> *x* hello duckyjoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
|
||||||
|
-X- Invalid username (NOREG)
|
||||||
|
-X- Usernames matching *ducky* are disallowed for the following reason:
|
||||||
|
-X- Ducks are not allowed here
|
||||||
|
|
||||||
|
-> *x* hello duckijoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
|
||||||
|
-X- Invalid email address (NOREG)
|
||||||
|
-X- Email addresses matching *ducky* are disallowed for the following reason:
|
||||||
|
-X- Ducks are not allowed here
|
||||||
|
|
||||||
|
-> *x* hello duckyjoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
|
||||||
|
-X- Invalid username (LOCKED)
|
||||||
|
-X- Usernames matching *ducky* are disallowed for the following reason:
|
||||||
|
-X- Ducks must stay out from here
|
||||||
|
|
||||||
|
*** Also for locked verification answer ***
|
||||||
|
|
||||||
|
In cservice_config.h i'v separated 2 config line:
|
||||||
|
|
||||||
|
#define ALLOW_HELLO ==> enable HELLO command only for admins
|
||||||
|
#define ALLOW_USERS_HELLO ==> enable HELLO command for admins and users
|
||||||
|
|
||||||
|
Note: If HELLO is not enabled for admins, than also will not be for users.
|
||||||
|
Note2: Admins with access level above level::hello defined in mod.cservice/levels.h can bypass NOREG/LOCKED's, etc.
|
||||||
|
|
||||||
|
Tha same story for REGISTER command. (cheking for NOREG/LOCKED email, username, verification answer
|
||||||
|
+ target user must be logged in at least once on IRC
|
||||||
|
|
||||||
|
Note: Admins with access level above level::immune::registercmd defined in levels.h can bypass NOREG/LOCKED's, etc.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* POWER user flag, enables almighty admins
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
/msg X set POWER [targetuser] ON|OFF
|
||||||
|
|
||||||
|
Many networks asked for a possbility of 'special' admins, with absolute administrative power, to be able to set another 1000 admin,
|
||||||
|
remove, etc.
|
||||||
|
Userid 1 always has the capability to set itself as POWER, other users can get only from an another POWER-ed user.
|
||||||
|
The POWER flag is visible in user info only to an another POWER-ed admin, for normal admins is not listed.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* SPECIAL channel flag is used for prevention of setting normal accesses above 499
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Logic dictate to not to allow to set accesses above 500, except for some special cases, those with SPECIAL channel flag:
|
||||||
|
|
||||||
|
-> *x* adduser #cservice Seven 501
|
||||||
|
-X- Access levels on regular channels cannot exceed 499 (except SPECIAL)
|
||||||
|
-> *x* adduser #cservice Seven 499
|
||||||
|
-X- Added user Seven to #cservice with access level 499
|
||||||
|
-> *x* modinfo #cservice access Seven 501
|
||||||
|
-X- Access levels on regular channels cannot exceed 499 (except SPECIAL)
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Expiration of users for more than 60 days are automatical from the gnuworld's internal timer
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
In mod.cservice/ in cservice.h/cservice.cc it is declared a new timer looking after users expiration.
|
||||||
|
This can be fine tuned within cservice.example.conf
|
||||||
|
|
||||||
|
"users_expire_days"
|
||||||
|
|
||||||
|
config line.
|
||||||
|
For this, and for the channel expiration it is valid the
|
||||||
|
|
||||||
|
"hour_seconds" and "day_seconds" config lines.
|
||||||
|
|
||||||
|
The "users_db_idle" is the time interval in hours to check the users for the lastseen value.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Expiration of channels within gnuworld, with setting the proper MIA, LOCKED, DESC, URL's
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
It is well known the steps of channel expiration, this does the same in automatic way.
|
||||||
|
In cservice.example.conf there are config lines for this
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequncy for check database for for channels for missing managers(in hours)
|
||||||
|
# cannot be 0, default 3 will be used
|
||||||
|
|
||||||
|
channels_db_idle = 1
|
||||||
|
|
||||||
|
# Set hour length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
hour_seconds = 3600
|
||||||
|
|
||||||
|
# Set day length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
day_seconds = 86400
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set MIA flag on channels where manager missing for
|
||||||
|
# 0 = never expire
|
||||||
|
|
||||||
|
MIA_start_days = 21
|
||||||
|
|
||||||
|
#
|
||||||
|
# Purge MIA flagged channels after
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_days = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA starting period
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_start_desc = Manager has failed to login. To vote for new manager send mail to cservice@undernet.org
|
||||||
|
|
||||||
|
#
|
||||||
|
# MIA URL
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_URL = Only 400+ Ops
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA ending period (manager has logged in)
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_desc = Manager has logged in. This was the last warning for failure to login
|
||||||
|
|
||||||
|
If the manager has logged in in the MIA period, a CAUTION channel flag will be set (LOCKED,MIA will be removed),
|
||||||
|
what will cause an immediate channel purge next time when the manager fails to log in in time.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Automode VOICE/OP are Not allowed in any kind below the required access levels.
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Everyone knows that automode voice/op can be set starting with 1 access. This is an issue to fix,
|
||||||
|
So:
|
||||||
|
|
||||||
|
-> *x* modinfo #coder-com access Seven 24
|
||||||
|
-X- Modified Seven's access level on channel #coder-com to 24
|
||||||
|
-> *x* modinfo #coder-com automode seven op
|
||||||
|
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
|
||||||
|
-> *x* modinfo #coder-com automode seven voice
|
||||||
|
-X- Target user Seven on channel #coder-com has insufficient access for an automode VOICE
|
||||||
|
-> *x* modinfo #coder-com access Seven 25
|
||||||
|
-X- Modified Seven's access level on channel #coder-com to 25
|
||||||
|
-> *x* modinfo #coder-com automode seven voice
|
||||||
|
-X- Set AUTOMODE to VOICE for Seven on channel #coder-com
|
||||||
|
-> *x* modinfo #coder-com automode seven op
|
||||||
|
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
|
||||||
|
-> *x* modinfo #coder-com access Seven 99
|
||||||
|
-X- Modified Seven's access level on channel #coder-com to 99
|
||||||
|
-> *x* modinfo #coder-com automode seven op
|
||||||
|
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
|
||||||
|
-> *x* modinfo #coder-com access Seven 100
|
||||||
|
-X- Modified Seven's access level on channel #coder-com to 100
|
||||||
|
-> *x* modinfo #coder-com automode seven op
|
||||||
|
-X- Set AUTOMODE to OP for Seven on channel #coder-com
|
||||||
|
|
||||||
|
In addition if channel has a userflag VOICE/OP, when the access level is modified to the required level, it will get the automode,
|
||||||
|
if the access is modified below, it will be lost, set to NONE.
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* RENAMECommand of the usernames
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-X- SYNTAX: RENAME <old_username> <new_username>
|
||||||
|
|
||||||
|
-> *x* rename seven George
|
||||||
|
-X- Successfully renamed username Seven to George
|
||||||
|
|
||||||
|
It is required an admin access level level::rename in mod.cservice/levels.h
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* Reimplemented NOFORCE channel flag
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
Noforce channel flag prevents admins to force themselves on a channel.
|
||||||
|
|
||||||
|
-> *x* set #cservice noforce on
|
||||||
|
-X- NOFORCE for #cservice is ON
|
||||||
|
|
||||||
|
-X- Channel #cservice has 2 users (2 operators)
|
||||||
|
-X- Mode is: +tnR
|
||||||
|
-X- I'm currently in this channel.
|
||||||
|
-X- MassDeopPro: 3
|
||||||
|
-X- Flags set: NOFORCE AUTOJOIN
|
||||||
|
-X- Auth:
|
||||||
|
|
||||||
|
-> *x* force #cservice
|
||||||
|
-X- The NOFORCE flag is set on #cservice
|
||||||
|
|
||||||
|
Requires an adminlevel level::set::noforce
|
||||||
|
=============================================================================
|
||||||
|
* Implemented NOVOICE channel flag, homologous as NOOP
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
/msg X set #anychan NOVOICE <on|off>
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* REGISTER command is available to normal users, to start a new channel registration from irc
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
/msg X register #channel
|
||||||
|
|
||||||
|
and than follow X's instructions!
|
||||||
|
|
||||||
|
The admin registration method remains:
|
||||||
|
/msg X register #channel [targetuser]
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* NOTAKE channel flag prevents 'takeover' banning *!*@* through X
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
/msg X set #channel NOTAKE <on|off>
|
||||||
|
|
||||||
|
The revenge action can be 3 types:
|
||||||
|
|
||||||
|
/msg X set #channel TAKEREVENGE <IGNORE|BAN|SUSPEND>
|
||||||
|
|
||||||
|
IGNORE - simply will do nothing on ban *!*@*
|
||||||
|
BAN - will ban and kick the person for 100 days at level 500
|
||||||
|
SUSPEND - will ban and kick and suspend for 100 days 500 level
|
||||||
|
|
||||||
|
=============================================================================
|
||||||
|
* PURGE command can delete users too
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
/msg X purge <#channel|username>
|
||||||
|
|
||||||
|
If a username is provided, then will delete it.
|
||||||
|
=============================================================================
|
||||||
|
* Other minor enhancements
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
* On Channel join (bursting channels) X looks after NOOP and NOVOICE channel flag, and deop/devoice everyone.
|
||||||
|
* Ban nicklength is now 50 instead of maximum of 15, ident legth is 25 instead of 12.
|
||||||
|
* Channel description length is now can be 128 charcters long, url is 75 charcters long.
|
||||||
|
Don't forget to adjust ircu's values too if needed.
|
||||||
|
* On user suspension on a channel, all logged clients corresponding the suspended account will be deopped instantaneously.
|
||||||
|
* On global user suspension, all clients corresponding to logged user, on all channels where is opped will be deopped instantaneously.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,328 @@
|
||||||
|
# 🌐 GNUWorld — Servicii IRC pentru Undernet/P10
|
||||||
|
|
||||||
|
## Prezentare Generală
|
||||||
|
|
||||||
|
**GNUWorld** este un cadru (framework) de servicii IRC scris în **C++**, proiectat pentru rețele bazate pe protocolul **P10** (ircu/Undernet). Arhitectura este modulară, permițând încărcarea dinamică a clienților de servicii (CService, CControl, ChanFix, DroneScan etc.) prin intermediul bibliotecii `libtool` (`lt_dlopen`).
|
||||||
|
|
||||||
|
Proiectul este o adaptare și extensie a GNUWorld original, personalizat pentru nevoile rețelei **Underchat**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📐 Arhitectura Generală
|
||||||
|
|
||||||
|
### Ierarhia de Clase Principale
|
||||||
|
|
||||||
|
```
|
||||||
|
NetworkTarget ← Clasa de bază (adresare numerică P10 base64: YY + XXX)
|
||||||
|
├── iClient ← Utilizator de rețea (nick, user, host, moduri, canale)
|
||||||
|
├── iServer ← Server de rețea (uplink, stare burst, flag-uri)
|
||||||
|
├── xClient (+ TimerHandler) ← Client de servicii (bază pentru module: cservice, ccontrol etc.)
|
||||||
|
└── xServer (+ ConnectionManager ← Serverul principal — inima sistemului
|
||||||
|
+ ConnectionHandler
|
||||||
|
+ NetworkTarget)
|
||||||
|
|
||||||
|
Channel ← Canal IRC (moduri, utilizatori, ban-uri)
|
||||||
|
ChannelUser ← Asociere utilizator-canal (op, voice, half-op)
|
||||||
|
xNetwork ← Container global — stochează toți clienții, serverele și canalele
|
||||||
|
```
|
||||||
|
|
||||||
|
### Componentele Cheie
|
||||||
|
|
||||||
|
| Componentă | Locație | Descriere |
|
||||||
|
|---|---|---|
|
||||||
|
| **xServer** | `include/server.h`, `src/server.cc`, `src/main.cc` | Serverul principal — bucla de evenimente, gestionarea conexiunii, rutarea mesajelor |
|
||||||
|
| **xClient** | `include/client.h` | Clasa de bază pentru toate modulele de servicii |
|
||||||
|
| **xNetwork** | `include/Network.h`, `src/Network.cc` | Containerul global al rețelei — tabele pentru clienți, servere, canale |
|
||||||
|
| **ConnectionManager** | `libgnuworld/ConnectionManager.h`, `libgnuworld/ConnectionManager.cc` | Gestionarea conexiunilor I/O prin `select()` |
|
||||||
|
| **iClient / iServer** | `include/iClient.h`, `include/iServer.h` | Reprezentarea entităților de rețea |
|
||||||
|
| **Channel / ChannelUser** | `include/Channel.h`, `include/ChannelUser.h` | Reprezentarea canalelor și a utilizatorilor din canale |
|
||||||
|
| **Baza de Date** | `db/gnuworldDB.h`, `db/pgsqlDB.h` | Strat abstract cu implementare PostgreSQL |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Bucla Principală de Evenimente
|
||||||
|
|
||||||
|
Punctul de intrare este `main()` din `src/main.cc`, care instanțiază `xServer` și apelează `run()` → `mainLoop()`.
|
||||||
|
|
||||||
|
### Fluxul `mainLoop()` (din `src/main.cc`, linia 335):
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────┐
|
||||||
|
│ while( keepRunning ) │
|
||||||
|
│ │
|
||||||
|
│ 1. Verifică reconectarea (dacă e cazul) │
|
||||||
|
│ 2. Verifică dacă este ultima iterație │
|
||||||
|
│ 3. Calculează timeout-ul pe baza timerelor │
|
||||||
|
│ 4. ConnectionManager::Poll(seconds) │
|
||||||
|
│ └─> select() pe toate socket-urile │
|
||||||
|
│ └─> handleRead() / handleWrite() │
|
||||||
|
│ └─> OnRead() → Process() → dispatch │
|
||||||
|
│ 5. CheckTimers() — execută timerele │
|
||||||
|
│ 6. Verifică semnalele (Signal::getSignal) │
|
||||||
|
│ 7. PostSignal() către module │
|
||||||
|
│ │
|
||||||
|
│ La ieșire: doShutdown() │
|
||||||
|
└─────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multiplexarea I/O — `select()`
|
||||||
|
|
||||||
|
`ConnectionManager::Poll()` (din `libgnuworld/ConnectionManager.cc`, linia 559) folosește apelul **`select()`** clasic:
|
||||||
|
|
||||||
|
- Iterează prin `handlerMap` (mapare `ConnectionHandler* → set<Connection*>`)
|
||||||
|
- Configurează `fd_set` (readfds / writefds) pentru fiecare conexiune
|
||||||
|
- Apelează `::select(1 + highestFD, &readfds, &writefds, 0, &to)`
|
||||||
|
- Procesează rezultatele: citire, scriere, conexiuni noi, timeout-uri
|
||||||
|
|
||||||
|
> ⚠️ **Observație:** Se folosește `select()` și nu `poll()`/`epoll()`. Aceasta este o limitare pentru rețele foarte mari (limita FD_SETSIZE, de obicei 1024).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 Procesarea BURST și Sincronizarea cu Rețeaua
|
||||||
|
|
||||||
|
Sincronizarea cu rețeaua urmează protocolul P10 complet:
|
||||||
|
|
||||||
|
### Secvența de Burst:
|
||||||
|
|
||||||
|
```
|
||||||
|
1. msg_Server → Creează iServer pentru uplink, pornește burst-ul
|
||||||
|
2. msg_S → Adaugă servere noi (EVT_NETJOIN)
|
||||||
|
3. msg_N → Adaugă clienți de rețea (iClient) în timpul burst-ului
|
||||||
|
4. msg_B → BURST canale: moduri, utilizatori (base64), ban-uri
|
||||||
|
(libircu/msg_B.cc — 541 linii, parser complex)
|
||||||
|
5. msg_EB → End of Burst:
|
||||||
|
├─ setUseHoldBuffer(false) — eliberează bufferul reținut
|
||||||
|
├─ BurstClients() — trimite clienții de servicii
|
||||||
|
├─ BurstChannels() — trimite canalele serviciilor
|
||||||
|
├─ setBursting(false)
|
||||||
|
├─ PostEvent(EVT_BURST_CMPLT)
|
||||||
|
├─ Trimite EB + EA
|
||||||
|
└─ WriteBurstBuffer() — golește datele reținute
|
||||||
|
6. msg_EA → End of Burst Acknowledge — confirmă sincronizarea
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mecanismul `burstHoldBuffer`:
|
||||||
|
|
||||||
|
În timpul burst-ului, `Write()` redirecționează datele într-un `burstHoldBuffer` separat (variabila `useHoldBuffer`). Aceasta previne trimiterea prematură de date către rețea înainte ca sincronizarea să fie completă. După `msg_EB`, datele sunt transferate în bufferul normal de ieșire prin `WriteBurstBuffer()`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 Sistemul de Module (Pluginuri)
|
||||||
|
|
||||||
|
### Încărcare Dinamică
|
||||||
|
|
||||||
|
Modulele sunt încărcate prin `libtool` (`lt_dlopen`) folosind clasa template `moduleLoader<>` din `include/moduleLoader.h`.
|
||||||
|
|
||||||
|
**Două tipuri de module:**
|
||||||
|
|
||||||
|
1. **Module de Servicii** (`xClient`) — încărcate prin `loadClients()`:
|
||||||
|
- Fiecare subclasează `xClient`
|
||||||
|
- Exportă o funcție fabrică: `_gnuwinit_<nume>(configFile)`
|
||||||
|
- Exemple: `mod.cservice`, `mod.ccontrol`, `mod.chanfix`
|
||||||
|
|
||||||
|
2. **Handlere de Comenzi Server** (`ServerCommandHandler`) — încărcate prin `loadCommandHandlers()`:
|
||||||
|
- Fiecare procesează un mesaj P10 specific (B, N, Q, M, J, etc.)
|
||||||
|
- Exportă: `_gnuwinit_<msg_X>(xServer*)`
|
||||||
|
- Locație: `libircu/msg_*.cc` (~42 de handlere)
|
||||||
|
- Macrourile `CREATE_HANDLER` / `CREATE_LOADER` simplifică declararea
|
||||||
|
|
||||||
|
### Handlere P10 Disponibile (libircu/)
|
||||||
|
|
||||||
|
| Token | Handler | Descriere |
|
||||||
|
|---|---|---|
|
||||||
|
| `B` | `msg_B` | BURST — sincronizare canale |
|
||||||
|
| `N` | `msg_N` | NICK — client nou / schimbare nick |
|
||||||
|
| `S` | `msg_S` | SERVER — server nou |
|
||||||
|
| `J` | `msg_J` | JOIN — intrare în canal |
|
||||||
|
| `L` | `msg_L` | PART — ieșire din canal |
|
||||||
|
| `Q` | `msg_Q` | QUIT — deconectare client |
|
||||||
|
| `M` | `msg_M` | MODE — schimbare moduri |
|
||||||
|
| `P` | `msg_P` | PRIVMSG — mesaj privat |
|
||||||
|
| `K` | `msg_K` | KICK — eliminare din canal |
|
||||||
|
| `G` / `GL` | `msg_G` / `msg_GL` | GLINE — ban global |
|
||||||
|
| `EB` | `msg_EB` | End of Burst |
|
||||||
|
| `EA` | `msg_EA` | End of Burst Acknowledge |
|
||||||
|
| `SQ` | `msg_SQ` | SQUIT — deconectare server |
|
||||||
|
| `AC` | `msg_AC` | ACCOUNT — autentificare |
|
||||||
|
| `T` | `msg_T` | TOPIC |
|
||||||
|
| `CM` | `msg_CM` | CLEARMODE |
|
||||||
|
| `W` | `msg_W` | WHOIS |
|
||||||
|
| `I` | `msg_I` | INVITE |
|
||||||
|
| `XQ` / `XR` | `msg_XQ` / `msg_XR` | Interogări/Răspunsuri extinse |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Sistemul de Evenimente
|
||||||
|
|
||||||
|
### Evenimente de Rețea (definite în `include/events.h`):
|
||||||
|
|
||||||
|
| Eveniment | Descriere |
|
||||||
|
|---|---|
|
||||||
|
| `EVT_NICK` | Client nou conectat |
|
||||||
|
| `EVT_QUIT` | Client deconectat |
|
||||||
|
| `EVT_KILL` | Client eliminat (kill) |
|
||||||
|
| `EVT_CHNICK` | Schimbare de nick |
|
||||||
|
| `EVT_OPER` | Operator IRC |
|
||||||
|
| `EVT_NETJOIN` | Server nou conectat |
|
||||||
|
| `EVT_NETBREAK` | Server deconectat (netsplit) |
|
||||||
|
| `EVT_BURST_CMPLT` | Burst complet |
|
||||||
|
| `EVT_BURST_ACK` | Confirmare burst |
|
||||||
|
| `EVT_GLINE` / `EVT_REMGLINE` | Adăugare/Ștergere GLINE |
|
||||||
|
| `EVT_ACCOUNT` | Autentificare cont |
|
||||||
|
|
||||||
|
### Evenimente de Canal:
|
||||||
|
|
||||||
|
| Eveniment | Descriere |
|
||||||
|
|---|---|
|
||||||
|
| `EVT_JOIN` | Intrare în canal |
|
||||||
|
| `EVT_PART` | Ieșire din canal |
|
||||||
|
| `EVT_KICK` | Eliminare din canal |
|
||||||
|
| `EVT_TOPIC` | Schimbare topic |
|
||||||
|
| `EVT_CREATE` | Canal creat |
|
||||||
|
|
||||||
|
Modulele se înregistrează prin `RegisterEvent()` / `RegisterChannelEvent()` și primesc notificări prin `OnEvent()` / `OnChannelEvent()`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🗄️ Baza de Date
|
||||||
|
|
||||||
|
### Arhitectura:
|
||||||
|
|
||||||
|
```
|
||||||
|
gnuworldDB (abstract) ← db/gnuworldDB.h — Interfață abstractă (Exec, isConnected)
|
||||||
|
└── pgsqlDB ← db/pgsqlDB.h — Implementare PostgreSQL (libpq)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modele SQL per Modul (exemplu: mod.cservice):
|
||||||
|
|
||||||
|
| Clasă | Fișier | Descriere |
|
||||||
|
|---|---|---|
|
||||||
|
| `sqlUser` | `mod.cservice/sqlUser.h` | Utilizator CService |
|
||||||
|
| `sqlChannel` | `mod.cservice/sqlChannel.h` | Canal înregistrat |
|
||||||
|
| `sqlLevel` | `mod.cservice/sqlLevel.h` | Nivel de acces utilizator-canal |
|
||||||
|
| `sqlBan` | `mod.cservice/sqlBan.h` | Ban pe canal |
|
||||||
|
|
||||||
|
Scripturile SQL de inițializare se găsesc în directorul `doc/` (`cservice.sql`, `ccontrol.sql`, etc.).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Gestionarea Memoriei — Probleme Identificate
|
||||||
|
|
||||||
|
### Folosire exclusivă de `new`/`delete` brut
|
||||||
|
|
||||||
|
Codul nu utilizează **deloc** smart pointers (`std::unique_ptr`, `std::shared_ptr`). Toate alocările sunt manuale:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// Exemple de alocare tipice:
|
||||||
|
iClient* theClient = new (std::nothrow) iClient(...);
|
||||||
|
Channel* theChan = new (std::nothrow) Channel(...);
|
||||||
|
ChannelUser* chanUser = new (std::nothrow) ChannelUser(theClient);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zone Critice de Dealocare:
|
||||||
|
|
||||||
|
| Locație | Ce se dezalocă |
|
||||||
|
|---|---|
|
||||||
|
| `xServer::doShutdown()` | Clienți locali, clienți de rețea, canale, servere, gline-uri, timere |
|
||||||
|
| `xNetwork::removeClient()` | `ChannelUser` asociați, canale goale |
|
||||||
|
| `xNetwork::removeServer()` | Toți clienții de pe serverul eliminat |
|
||||||
|
| `msg_Q::Execute()` | iClient la QUIT |
|
||||||
|
| `msg_B::Execute()` | Channel + ChannelUser la BURST (cu verificare de erori) |
|
||||||
|
|
||||||
|
### Potențiale Scurgeri de Memorie:
|
||||||
|
|
||||||
|
1. **`doShutdown()` — Iterare cu break prematur:** Buclele de cleanup iterează și fac `break` dacă containerul devine gol, dar sar elemente intermediare dacă mai sunt.
|
||||||
|
2. **`msg_B::parseBurstBans()`** — Vectorul de ban-uri este creat cu `st.size()` elemente goale *și* apoi se face `push_back`, rezultând elemente duplicate goale.
|
||||||
|
3. **`channelEventMap`** — Listele alocate cu `new` pentru evenimentele de canal trebuie dezalocate manual.
|
||||||
|
4. **Excepții negestionate** — Fără RAII, orice excepție între `new` și `delete` creează o scurgere.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Structura Directoarelor
|
||||||
|
|
||||||
|
```
|
||||||
|
underchat-gnuworld/
|
||||||
|
├── src/ ← Codul sursă principal (main.cc, server.cc, Network.cc)
|
||||||
|
├── include/ ← Fișierele header principale
|
||||||
|
├── libircu/ ← Handlere protocol P10 (msg_*.cc — ~42 fișiere)
|
||||||
|
├── libgnuworld/ ← Biblioteci auxiliare (ConnectionManager, ELog, EConfig, Buffer)
|
||||||
|
├── db/ ← Stratul de bază de date (abstract + PostgreSQL)
|
||||||
|
├── mod.cservice/ ← Modulul CService (X) — managementul canalelor
|
||||||
|
├── mod.ccontrol/ ← Modulul CControl — administrare rețea
|
||||||
|
├── mod.chanfix/ ← Modulul ChanFix — reparare canale
|
||||||
|
├── mod.dronescan/ ← Modulul DroneScan — detectare boți
|
||||||
|
├── mod.nickserv/ ← Modulul NickServ — servicii de nick
|
||||||
|
├── mod.openchanfix/ ← Modulul OpenChanFix
|
||||||
|
├── mod.scanner/ ← Modulul Scanner
|
||||||
|
├── mod.snoop/ ← Modulul Snoop — monitorizare
|
||||||
|
├── mod.stats/ ← Modulul Stats — statistici
|
||||||
|
├── mod.cloner/ ← Modulul Cloner (testare)
|
||||||
|
├── mod.gnutest/ ← Modulul de test
|
||||||
|
├── mod.clientExample/ ← Exemplu de modul client
|
||||||
|
├── bin/ ← Fișiere de configurare (.conf, .sh)
|
||||||
|
├── doc/ ← Documentație și scripturi SQL
|
||||||
|
├── contrib/ ← Utilitare auxiliare
|
||||||
|
├── test/ ← Teste
|
||||||
|
└── tools/ ← Unelte de dezvoltare
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Compilare și Instalare
|
||||||
|
|
||||||
|
### Cerințe:
|
||||||
|
- **Compilator C++** (GCC / G++ — standard pre-C++11)
|
||||||
|
- **PostgreSQL** (libpq-dev)
|
||||||
|
- **libtool** (pentru încărcarea dinamică a modulelor)
|
||||||
|
- **autotools** (autoconf, automake)
|
||||||
|
|
||||||
|
### Pași de compilare:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./autogen.sh
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configurare:
|
||||||
|
|
||||||
|
Fișierele de configurare se găsesc în directorul `bin/`:
|
||||||
|
- `GNUWorld.example.conf.in` — Configurația principală a serverului
|
||||||
|
- `cservice.example.conf.in` — Configurația CService
|
||||||
|
- `ccontrol.example.conf.in` — Configurația CControl
|
||||||
|
- Alte fișiere `.conf.in` pentru fiecare modul
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Recomandări de Modernizare
|
||||||
|
|
||||||
|
| Zonă | Starea Curentă | Recomandare |
|
||||||
|
|---|---|---|
|
||||||
|
| **Multiplexare I/O** | `select()` | Migrare la `epoll()` (Linux) sau `kqueue()` (BSD) |
|
||||||
|
| **Gestionare Memorie** | `new`/`delete` brut | Adoptare `std::unique_ptr` / `std::shared_ptr` (RAII) |
|
||||||
|
| **Standard C++** | Pre-C++11 | Migrare la C++17 minim |
|
||||||
|
| **Încărcare Module** | `libtool` (`lt_dlopen`) | `dlopen()` nativ sau C++20 modules |
|
||||||
|
| **Bază de Date** | PostgreSQL sincron | Query-uri asincrone (`PQsendQuery`) |
|
||||||
|
| **Parsare Stringuri** | `StringTokenizer` propriu | `std::string_view` + `std::regex` |
|
||||||
|
| **Logging** | `ELog` propriu / `log4cplus` opțional | Standardizare pe `spdlog` sau similar |
|
||||||
|
| **Testare** | Minimală | Adăugare teste unitare (Google Test / Catch2) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 Licență
|
||||||
|
|
||||||
|
Acest proiect este distribuit sub licența **GNU General Public License v2** (GPL-2.0).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Contribuții
|
||||||
|
|
||||||
|
Proiect menținut de echipa **Underchat**. Contribuțiile sunt binevenite prin intermediul serverului Gitea:
|
||||||
|
|
||||||
|
🔗 **Repository:** [https://gitlab.back.ro/underchat/gnuworld.git](https://gitlab.back.ro/underchat/gnuworld.git)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Generat pe baza analizei codului sursă — Martie 2026*
|
||||||
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
- ****** DOCUMENTATION!!!! ******
|
||||||
|
- Improve how the configure script detects the postgresql installation
|
||||||
|
- Remove the link against the pgsql library in modules, if they need the
|
||||||
|
db interface they should just link against the db library
|
||||||
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
dnl @synopsis AC_CXX_NAMESPACES
|
||||||
|
dnl
|
||||||
|
dnl If the compiler can prevent names clashes using namespaces, define
|
||||||
|
dnl HAVE_NAMESPACES.
|
||||||
|
dnl
|
||||||
|
dnl @category Cxx
|
||||||
|
dnl @author Todd Veldhuizen
|
||||||
|
dnl @author Luc Maisonobe <luc@spaceroots.org>
|
||||||
|
dnl @version 2004-02-04
|
||||||
|
dnl @license AllPermissive
|
||||||
|
|
||||||
|
AC_DEFUN([AC_CXX_NAMESPACES],
|
||||||
|
[AC_CACHE_CHECK(whether the compiler implements namespaces,
|
||||||
|
ac_cv_cxx_namespaces,
|
||||||
|
[AC_LANG_SAVE
|
||||||
|
AC_LANG_CPLUSPLUS
|
||||||
|
AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}],
|
||||||
|
[using namespace Outer::Inner; return i;],
|
||||||
|
ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no)
|
||||||
|
AC_LANG_RESTORE
|
||||||
|
])
|
||||||
|
if test "$ac_cv_cxx_namespaces" = yes; then
|
||||||
|
AC_DEFINE(HAVE_NAMESPACES,,[define if the compiler implements namespaces])
|
||||||
|
fi
|
||||||
|
])
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Regenerate auto-tools stuff...
|
||||||
|
|
||||||
|
aclocal
|
||||||
|
autoconf
|
||||||
|
libtoolize --automake --copy --ltdl
|
||||||
|
autoheader
|
||||||
|
automake -a -c
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,76 @@
|
||||||
|
# This file was generated by Autom4te Sun May 1 09:53:53 UTC 2011.
|
||||||
|
# It contains the lists of macros which have been traced.
|
||||||
|
# It can be safely removed.
|
||||||
|
|
||||||
|
@request = (
|
||||||
|
bless( [
|
||||||
|
'0',
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'/usr/share/autoconf/autoconf/autoconf.m4f',
|
||||||
|
'aclocal.m4',
|
||||||
|
'configure.ac'
|
||||||
|
],
|
||||||
|
{
|
||||||
|
'_LT_AC_TAGCONFIG' => 1,
|
||||||
|
'AM_PROG_F77_C_O' => 1,
|
||||||
|
'AC_INIT' => 1,
|
||||||
|
'm4_pattern_forbid' => 1,
|
||||||
|
'AC_CANONICAL_TARGET' => 1,
|
||||||
|
'_AM_COND_IF' => 1,
|
||||||
|
'AC_CONFIG_LIBOBJ_DIR' => 1,
|
||||||
|
'AC_SUBST' => 1,
|
||||||
|
'AC_CANONICAL_HOST' => 1,
|
||||||
|
'AC_FC_SRCEXT' => 1,
|
||||||
|
'AC_PROG_LIBTOOL' => 1,
|
||||||
|
'AM_INIT_AUTOMAKE' => 1,
|
||||||
|
'AC_CONFIG_SUBDIRS' => 1,
|
||||||
|
'AM_PATH_GUILE' => 1,
|
||||||
|
'AM_AUTOMAKE_VERSION' => 1,
|
||||||
|
'LT_CONFIG_LTDL_DIR' => 1,
|
||||||
|
'AC_CONFIG_LINKS' => 1,
|
||||||
|
'AC_REQUIRE_AUX_FILE' => 1,
|
||||||
|
'm4_sinclude' => 1,
|
||||||
|
'LT_SUPPORTED_TAG' => 1,
|
||||||
|
'AM_MAINTAINER_MODE' => 1,
|
||||||
|
'AM_NLS' => 1,
|
||||||
|
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
|
||||||
|
'_m4_warn' => 1,
|
||||||
|
'AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AM_PROG_CXX_C_O' => 1,
|
||||||
|
'_AM_COND_ENDIF' => 1,
|
||||||
|
'_AM_MAKEFILE_INCLUDE' => 1,
|
||||||
|
'AM_ENABLE_MULTILIB' => 1,
|
||||||
|
'AM_PROG_MOC' => 1,
|
||||||
|
'AM_SILENT_RULES' => 1,
|
||||||
|
'AC_CONFIG_FILES' => 1,
|
||||||
|
'include' => 1,
|
||||||
|
'LT_INIT' => 1,
|
||||||
|
'AM_GNU_GETTEXT' => 1,
|
||||||
|
'AM_PROG_AR' => 1,
|
||||||
|
'AC_LIBSOURCE' => 1,
|
||||||
|
'AC_CANONICAL_BUILD' => 1,
|
||||||
|
'AM_PROG_FC_C_O' => 1,
|
||||||
|
'AC_FC_FREEFORM' => 1,
|
||||||
|
'AH_OUTPUT' => 1,
|
||||||
|
'AC_CONFIG_AUX_DIR' => 1,
|
||||||
|
'_AM_SUBST_NOTMAKE' => 1,
|
||||||
|
'AM_PROG_CC_C_O' => 1,
|
||||||
|
'sinclude' => 1,
|
||||||
|
'm4_pattern_allow' => 1,
|
||||||
|
'AM_CONDITIONAL' => 1,
|
||||||
|
'AC_CANONICAL_SYSTEM' => 1,
|
||||||
|
'AM_XGETTEXT_OPTION' => 1,
|
||||||
|
'AC_CONFIG_HEADERS' => 1,
|
||||||
|
'AC_DEFINE_TRACE_LITERAL' => 1,
|
||||||
|
'AM_POT_TOOLS' => 1,
|
||||||
|
'm4_include' => 1,
|
||||||
|
'_AM_COND_ELSE' => 1,
|
||||||
|
'AC_SUBST_TRACE' => 1
|
||||||
|
}
|
||||||
|
], 'Autom4te::Request' )
|
||||||
|
);
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,48 @@
|
||||||
|
dnl @synopsis AX_BOOST_THREAD
|
||||||
|
dnl
|
||||||
|
dnl This macro checks to see if the Boost.Thread library is installed.
|
||||||
|
dnl It also attempts to guess the currect library name using several
|
||||||
|
dnl attempts. It tries to build the library name using a user supplied
|
||||||
|
dnl name or suffix and then just the raw library.
|
||||||
|
dnl
|
||||||
|
dnl If the library is found, HAVE_BOOST_THREAD is defined and
|
||||||
|
dnl BOOST_THREAD_LIB is set to the name of the library.
|
||||||
|
dnl
|
||||||
|
dnl This macro calls AC_SUBST(BOOST_THREAD_LIB).
|
||||||
|
dnl
|
||||||
|
dnl @category InstalledPackages
|
||||||
|
dnl @author Michael Tindal <mtindal@paradoxpoint.com>
|
||||||
|
dnl @version 2004-09-20
|
||||||
|
dnl @license GPLWithACException
|
||||||
|
|
||||||
|
AC_DEFUN([AX_BOOST_THREAD],
|
||||||
|
[AC_REQUIRE([AC_CXX_NAMESPACES])dnl
|
||||||
|
AC_CACHE_CHECK(whether the Boost::Thread library is available,
|
||||||
|
ax_cv_boost_thread,
|
||||||
|
[AC_LANG_SAVE
|
||||||
|
AC_LANG_CPLUSPLUS
|
||||||
|
CXXFLAGS_SAVE=$CXXFLAGS
|
||||||
|
dnl FIXME: need to include a generic way to check for the flag
|
||||||
|
dnl to turn on threading support.
|
||||||
|
CXXFLAGS="-pthread $CXXFLAGS"
|
||||||
|
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include <boost/thread/thread.hpp>]],
|
||||||
|
[[boost::thread_group thrds; return 0;]]),
|
||||||
|
ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
|
||||||
|
CXXFLAGS=$CXXFLAGS_SAVE
|
||||||
|
AC_LANG_RESTORE
|
||||||
|
])
|
||||||
|
if test "$ax_cv_boost_thread" = yes; then
|
||||||
|
AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::Thread library is available])
|
||||||
|
dnl Now determine the appropriate file names
|
||||||
|
AC_ARG_WITH([boost-thread],AS_HELP_STRING([--with-boost-thread],
|
||||||
|
[specify the boost thread library or suffix to use]),
|
||||||
|
[if test "x$with_boost_thread" != "xno"; then
|
||||||
|
ax_thread_lib=$with_boost_thread
|
||||||
|
ax_boost_thread_lib=boost_thread-$with_boost_thread
|
||||||
|
fi])
|
||||||
|
for ax_lib in $ax_thread_lib $ax_boost_thread_lib boost_thread; do
|
||||||
|
AC_CHECK_LIB($ax_lib, main, [BOOST_THREAD_LIB=-l$ax_lib break])
|
||||||
|
done
|
||||||
|
AC_SUBST(BOOST_THREAD_LIB)
|
||||||
|
fi
|
||||||
|
])dnl
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
precious ^.*(\.conf)$
|
||||||
|
precious ^server_command_map$
|
||||||
|
precious ^gnuworld
|
||||||
|
|
||||||
|
backup \.log$
|
||||||
|
backup ^core$
|
||||||
|
|
||||||
|
backup ^gnuworld
|
||||||
|
backup \.log$
|
||||||
|
backup ^core$
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
*.la
|
||||||
|
*.so
|
||||||
|
*.0
|
||||||
|
*.log
|
||||||
|
*.Log
|
||||||
|
gnuworld.pid
|
||||||
|
gnuworld
|
||||||
|
ccontrol.conf
|
||||||
|
cservice.conf
|
||||||
|
GNUWorld.conf
|
||||||
|
cloner.conf
|
||||||
|
nickserv.conf
|
||||||
|
openchanfix.conf
|
||||||
|
stats.conf
|
||||||
|
scanner.conf
|
||||||
|
clientExample.conf
|
||||||
|
gnutest.conf
|
||||||
|
EVT_*
|
||||||
|
*.example.conf
|
||||||
|
users_per_channel
|
||||||
|
channels_per_user
|
||||||
|
Server_UnJupe
|
||||||
|
Server_Jupe
|
||||||
|
Oper_Up
|
||||||
|
Nick_Change
|
||||||
|
Net_Join
|
||||||
|
Net_Break
|
||||||
|
Gline_Remove
|
||||||
|
Gline_Add
|
||||||
|
Client_Quit
|
||||||
|
Client_Kill
|
||||||
|
Client_Connect
|
||||||
|
Channel_Topic_Change
|
||||||
|
Channel_Part
|
||||||
|
Channel_Kick
|
||||||
|
Channel_Join
|
||||||
|
Channel_Create
|
||||||
|
Burst_Complete
|
||||||
|
Burst_Acknowledge
|
||||||
|
Account_Login
|
||||||
|
server_command_map
|
||||||
|
logging.properties
|
||||||
|
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
# $Id: GNUWorld.example.conf.in,v 1.15 2006/12/22 06:41:41 kewlio Exp $
|
||||||
|
# GNUWorld Core Configuration File
|
||||||
|
#
|
||||||
|
|
||||||
|
uplink = 127.0.0.1
|
||||||
|
port = 4400
|
||||||
|
password = 54321
|
||||||
|
name = channels.yournetwork.org
|
||||||
|
description = UnderNet Services
|
||||||
|
numeric = 51
|
||||||
|
|
||||||
|
# Set this variable to yes if you want the server to attempt
|
||||||
|
# to auto_reconnect when a connection is terminated, set
|
||||||
|
# to no otherwise.
|
||||||
|
# Be careful using this.
|
||||||
|
auto_reconnect = yes
|
||||||
|
|
||||||
|
# There is currently a bug in ircu which causes the first client
|
||||||
|
# of a multiclient server to be lost, but only if maxclients is set
|
||||||
|
# to an even number.
|
||||||
|
# Therefore, only use odd numbers for maxclients here.
|
||||||
|
maxclients = 1023
|
||||||
|
|
||||||
|
# This is the variable which defines the host suffix to be concatenated
|
||||||
|
# onto the user's account name for host hiding.
|
||||||
|
hidden_host_suffix = .users.yournetwork.org
|
||||||
|
|
||||||
|
# command_map is the name of the file which contains the mappings
|
||||||
|
# from module filenames (of server command handlers) to the
|
||||||
|
# message name to which it is associated.
|
||||||
|
# You probably will not need to ever change this.
|
||||||
|
command_map = server_command_map
|
||||||
|
|
||||||
|
# libdir is the path to the directory containing
|
||||||
|
# the gnuworld modules
|
||||||
|
libdir = ../lib
|
||||||
|
|
||||||
|
# To use a certain module, uncomment it below.
|
||||||
|
#module = libcservice.la cservice.example.conf
|
||||||
|
#module = libccontrol.la ccontrol.example.conf
|
||||||
|
#module = libchanfix.la openchanfix.example.conf
|
||||||
|
#module = libcloner.la cloner.example.conf
|
||||||
|
#module = libnickserv.la nickserv.example.conf
|
||||||
|
#module = libstats.la stats.example.conf
|
||||||
|
#module = libscanner.la scanner.example.conf
|
||||||
|
#module = libgnutest.la gnutest.example.conf
|
||||||
|
#module = libclientExample.la clientExample.example.conf
|
||||||
|
#module = libdronescan.la dronescan.example.conf
|
||||||
|
#module = libsnoop.la snoop.example.conf
|
||||||
|
|
||||||
|
# Control nicknames
|
||||||
|
# List here the nicknames to which you want the server to respond
|
||||||
|
# for control commands.
|
||||||
|
# You need not list any, it could be construed as a security
|
||||||
|
# risk, but adds very nice functionality.
|
||||||
|
# No clients are burst for control, instead control commands
|
||||||
|
# must be sent via MSG controlnick@server.name <command>
|
||||||
|
controlnick = control
|
||||||
|
|
||||||
|
# List the AC account usernames for those users you want to
|
||||||
|
# have access to the control commands.
|
||||||
|
# Be careful who you choose for this.
|
||||||
|
# AC account usernames are case sensitive.
|
||||||
|
allowcontrol = reppir
|
||||||
|
|
||||||
|
#################################################
|
||||||
|
# It is safe to leave the rest of this file alone
|
||||||
|
# These variables are for fine tuning
|
||||||
|
|
||||||
|
# The time between checks for expired glines (seconds)
|
||||||
|
glineUpdateInterval = 15
|
||||||
|
|
||||||
|
# The time between pings to the uplink (seconds)
|
||||||
|
pingUpdateInterval = 60
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
# $Id: ccontrol.example.conf.in,v 1.4 2009/06/09 05:55:55 hidden1 Exp $
|
||||||
|
# conf file for testClient
|
||||||
|
|
||||||
|
# database specifications
|
||||||
|
sql_host = 127.0.0.1
|
||||||
|
sql_port = 5432
|
||||||
|
|
||||||
|
# sql_db = Name of the database.
|
||||||
|
|
||||||
|
sql_db = ccontrol
|
||||||
|
|
||||||
|
#if you dont need user/pass just leave it with ''
|
||||||
|
sql_user = gnuworld
|
||||||
|
sql_pass = foo
|
||||||
|
|
||||||
|
# The following fields are required
|
||||||
|
username = UWorld
|
||||||
|
nickname = UWorld
|
||||||
|
hostname = UWorld.undernet.org
|
||||||
|
userdescription = UWorld
|
||||||
|
|
||||||
|
operchanmodes = +isn
|
||||||
|
mode = +iodkw
|
||||||
|
|
||||||
|
# make sure channel names are preceeded
|
||||||
|
# by the '#' character
|
||||||
|
operchan = #coder-com
|
||||||
|
|
||||||
|
# msgchan is also an operchan
|
||||||
|
msgchan = #coder-com
|
||||||
|
|
||||||
|
# Default gline length (in seconds)
|
||||||
|
glength = 3600
|
||||||
|
|
||||||
|
# Default reason for adding an oper chan
|
||||||
|
operchanreason = This is now an IRC Operator only channel
|
||||||
|
|
||||||
|
# Maximum numbers of channels to show with LIST channels command
|
||||||
|
# 0 = all
|
||||||
|
maxlistchannels = 0;
|
||||||
|
|
||||||
|
# report specification
|
||||||
|
|
||||||
|
# abuse_mail - the email that the report should be emailed to
|
||||||
|
abuse_mail = abuse@yournet.org
|
||||||
|
|
||||||
|
# ccemail - the email that ccontrol will put in the from field
|
||||||
|
# of the report
|
||||||
|
ccemail = uworld-report@yourdomain.com
|
||||||
|
|
||||||
|
# sendmail - full path to the sendmail program
|
||||||
|
sendmail = /usr/sbin/sendmail
|
||||||
|
|
||||||
|
# mail_report - set 1 for the bot to mail the report
|
||||||
|
# set to 0 if you dont want a report to be mailed
|
||||||
|
mail_report = 0
|
||||||
|
|
||||||
|
# gline_interval - the interval in which ccontrol should check
|
||||||
|
# for expired glines
|
||||||
|
gline_interval = 3600
|
||||||
|
|
||||||
|
# max_connection - the maximum connections a host can have before glined
|
||||||
|
max_connection = 5
|
||||||
|
|
||||||
|
# max_GLen - the length of the gline the for excessive
|
||||||
|
# connection (in seconds)
|
||||||
|
max_GLen = 86400
|
||||||
|
|
||||||
|
# max_threads - maximum number of gate checking threads to start
|
||||||
|
max_threads = 100
|
||||||
|
|
||||||
|
# check_gates - set 1 for the bot to check for open gates, or 0 for not
|
||||||
|
check_gates = 0
|
||||||
|
|
||||||
|
# check_clones - set 1 for the bot to check for clones, or 0 for not
|
||||||
|
check_clones = 0
|
||||||
|
|
||||||
|
# Expired_Interval
|
||||||
|
Expired_interval = 60
|
||||||
|
|
||||||
|
# dbinterval
|
||||||
|
dbinterval = 60
|
||||||
|
|
||||||
|
# showCGIpsInLogs - If set to 1, it shows channel glines IPs in lastcom logs and in daily logs sent by email
|
||||||
|
showCGIpsInLogs = 1
|
||||||
|
|
||||||
|
# AnnounceNick - Nick used by the fake client to make announcements using the ANNOUNCE command
|
||||||
|
AnnounceNick = A
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Configuration file for the GNUWorld ChanFix module
|
||||||
|
|
||||||
|
username = ChanFix
|
||||||
|
nickname = CF
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = GNUWorld ChanFix
|
||||||
|
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
# Console channel
|
||||||
|
consoleChannel = #chanfix
|
||||||
|
# Console channel modes
|
||||||
|
consoleModes = +ns
|
||||||
|
|
||||||
|
# Delay between linking and starting to count in seconds
|
||||||
|
startDelay = 120
|
||||||
|
|
||||||
|
# Number of points to allocate to an authed op per period
|
||||||
|
pointsAuth = 10
|
||||||
|
|
||||||
|
# Duration of a single period in seconds
|
||||||
|
period = 60
|
||||||
|
|
||||||
|
# Maximum points a user can gain
|
||||||
|
# Set this to be equal to 24 hours of ops
|
||||||
|
# ie (24*60*60) * (pointsAuth / period)
|
||||||
|
maxPoints = 100
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# $Id: clientExample.example.conf.in,v 1.2 2003/06/05 01:38:01 dan_karrels Exp $
|
||||||
|
# conf file for testClient
|
||||||
|
username = clientEx
|
||||||
|
nickname = clientEx
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = GNUWorld Test Client
|
||||||
|
|
||||||
|
mode = +i
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
# $Id: cloner.example.conf.in,v 1.5 2005/01/08 23:33:41 dan_karrels Exp $
|
||||||
|
# Configuration file for Cloner (mod.cloner)
|
||||||
|
|
||||||
|
# The following fields pertain to the client that connects and
|
||||||
|
# provides an interface to the server
|
||||||
|
username = Cloner
|
||||||
|
nickname = Cloner
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = I am the clone man!
|
||||||
|
|
||||||
|
# The mode for the cloning client
|
||||||
|
mode = +iodk
|
||||||
|
|
||||||
|
# permit the given user -- by account login name -- to use the
|
||||||
|
# module. You may have as many of these as you like (including none).
|
||||||
|
# This is case-insensitive.
|
||||||
|
permit_user = reppir
|
||||||
|
permit_user = someotherusername
|
||||||
|
|
||||||
|
# Set this to true if you want to permit opers to use the module,
|
||||||
|
# set to false otherwise (will not affect other users who have access)
|
||||||
|
allow_opers = true
|
||||||
|
|
||||||
|
########
|
||||||
|
# The following fields are information about the clones
|
||||||
|
# and the server created to host them.
|
||||||
|
|
||||||
|
# The name of the server to which to connect the clones
|
||||||
|
fakeservername = spawn.undernet.org
|
||||||
|
|
||||||
|
# The server description of the fake clone server
|
||||||
|
fakeserverdescription = Clones really are my bag baby!
|
||||||
|
|
||||||
|
# fakehost's are used for clone host names
|
||||||
|
# There may be as many as you like
|
||||||
|
fakehost=this.is.a.fake.host.com
|
||||||
|
fakehost=whitehouse.gov
|
||||||
|
fakehost=cia.gov
|
||||||
|
fakehost=fbi.gov
|
||||||
|
fakehost=clone.fbi.gov
|
||||||
|
fakehost=i.hacked.cia.gov
|
||||||
|
fakehost=osd.gov
|
||||||
|
fakehost=af.mil
|
||||||
|
fakehost=army.mil
|
||||||
|
fakehost=marines.mil
|
||||||
|
fakehost=navy.mil
|
||||||
|
fakehost=coastguard.mil
|
||||||
|
|
||||||
|
# fakeuser's are used for clone usernames
|
||||||
|
# There may be as many as you like
|
||||||
|
fakeuser=bill
|
||||||
|
fakeuser=mcnamara
|
||||||
|
fakeuser=hillary
|
||||||
|
fakeuser=mccain
|
||||||
|
fakeuser=gore
|
||||||
|
fakeuser=big_al
|
||||||
|
fakeuser=george
|
||||||
|
fakeuser=cheney
|
||||||
|
fakeuser=lott
|
||||||
|
fakeuser=blair
|
||||||
|
fakeuser=bigdick
|
||||||
|
fakeuser=rumsfeld
|
||||||
|
fakeuser=hw
|
||||||
|
fakeuser=tenet
|
||||||
|
fakeuser=graham
|
||||||
|
fakeuser=clarke
|
||||||
|
fakeuser=rice
|
||||||
|
|
||||||
|
# Real name field of each clone
|
||||||
|
clonedescription = This is a clone, this is only a clone...
|
||||||
|
|
||||||
|
# Modes that each clone needs to set
|
||||||
|
clonemode = +d
|
||||||
|
|
||||||
|
# The minimum length of a clone nickname
|
||||||
|
minnicklength = 5
|
||||||
|
|
||||||
|
# The maximum length of a clone nickname (default max on normal
|
||||||
|
# non-edited IRCu is 9)
|
||||||
|
maxnicklength = 9
|
||||||
|
|
||||||
|
# The max number of clones to burst on each iteration
|
||||||
|
cloneburstcount = 35
|
||||||
|
|
@ -0,0 +1,322 @@
|
||||||
|
# $Id: cservice.example.conf.in,v 1.9 2005/12/06 18:12:44 kewlio Exp $
|
||||||
|
# Channel Services configuration file.
|
||||||
|
#
|
||||||
|
# sql_host = Hostname/IP of the PostgreSQL server.
|
||||||
|
|
||||||
|
sql_host = 10.1.100.252
|
||||||
|
sql_port = 5432
|
||||||
|
|
||||||
|
# sql_db = Name of the database.
|
||||||
|
# (To create from the template, run cservice.sql through Postgres)
|
||||||
|
|
||||||
|
sql_db = cservice
|
||||||
|
|
||||||
|
# sql_user is the username to pass to Postgres on connection.
|
||||||
|
# Usefull if your account name is not the same as your Database
|
||||||
|
# username.
|
||||||
|
|
||||||
|
sql_user = gnuworld
|
||||||
|
sql_pass = foo
|
||||||
|
|
||||||
|
# General 'Bot' options.
|
||||||
|
|
||||||
|
nickname = X
|
||||||
|
username = cservice
|
||||||
|
hostname = underchat.org
|
||||||
|
userdescription = For help type: /msg X help
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay flood/warnings/exceptions, etc.
|
||||||
|
#
|
||||||
|
|
||||||
|
pending_page_url = http://cservice.underchat.org/live/view_app.php
|
||||||
|
|
||||||
|
relay_channel = #CSC
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay useful information, but not quite as annoying
|
||||||
|
# as the debug_channel ! (a.k.a privileged user relay channel)
|
||||||
|
#
|
||||||
|
|
||||||
|
priv_relay_channel = #CSC
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay useful debug information that otherwise
|
||||||
|
# annoy CS admins. :)
|
||||||
|
#
|
||||||
|
|
||||||
|
debug_channel = #CSC
|
||||||
|
|
||||||
|
#
|
||||||
|
# Coder channel.
|
||||||
|
#
|
||||||
|
# Channel used to extract levels to display coder access status.
|
||||||
|
|
||||||
|
coder_channel = #CSC
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequency in seconds to check the database for updates.
|
||||||
|
#
|
||||||
|
|
||||||
|
update_interval = 180
|
||||||
|
|
||||||
|
#
|
||||||
|
# Number of seconds to sample for flooding.
|
||||||
|
#
|
||||||
|
|
||||||
|
flood_duration = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# Input flood rate.
|
||||||
|
#
|
||||||
|
# Eg: 30, for 30 points amassed within "flood_duration" seconds.
|
||||||
|
#
|
||||||
|
|
||||||
|
input_flood = 3000
|
||||||
|
|
||||||
|
#
|
||||||
|
# Output flood rate.
|
||||||
|
#
|
||||||
|
# Eg: 20480 (20k within "flood_duration" seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
output_flood = 20480
|
||||||
|
|
||||||
|
#
|
||||||
|
# Minimum duration at which to set a topic in a non idle channel.
|
||||||
|
# (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
topic_duration = 1800
|
||||||
|
|
||||||
|
#
|
||||||
|
# Duration at which we check for idle user accounts in memory.
|
||||||
|
# (Seconds).
|
||||||
|
|
||||||
|
expire_interval = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long those accounts should have been idle before they are
|
||||||
|
# uncached. (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
cache_interval = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often to notify/commit changes to Pending channels.
|
||||||
|
# (Seconds).
|
||||||
|
|
||||||
|
pending_duration = 1800
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often to check if the connection to the backend has
|
||||||
|
# fallen over? (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
connection_check_frequency = 10
|
||||||
|
|
||||||
|
#
|
||||||
|
# How many times do we try every 'connection_check_frequency' seconds
|
||||||
|
# to reconnect before finally giving up and exiting?
|
||||||
|
#
|
||||||
|
|
||||||
|
connection_retry_total = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often (in seconds) should we check all channels that have
|
||||||
|
# floating-limit set to see if they need a new limit setting?
|
||||||
|
#
|
||||||
|
# Note: 30 is a good value, try 1min if you have lots of chans
|
||||||
|
# and not so much CPU.
|
||||||
|
|
||||||
|
limit_check = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long (In seconds) should we wait before allowing
|
||||||
|
# logins after startup. (Incase you're on a busy network
|
||||||
|
# with a really large burst and need things to settle down
|
||||||
|
# first to ease up load on the Db).
|
||||||
|
#
|
||||||
|
|
||||||
|
login_delay = 5
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# What is the period (in seconds) in which we will check to
|
||||||
|
# see if someone has sent too many notes, and what do we
|
||||||
|
# define "Too Many" as?
|
||||||
|
# Ie: You can send 'note_limit' notes in 'note_duration' seconds.
|
||||||
|
#
|
||||||
|
|
||||||
|
note_duration = 3600
|
||||||
|
note_limit = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# How many not(ic)es will be stored at one time
|
||||||
|
# 0 disallowed, 3 will be used
|
||||||
|
|
||||||
|
max_notes = 30;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pre-cache 'x' days worth of user accounts.
|
||||||
|
# This lets you preload all the users who have logged in during the last
|
||||||
|
# 'x' number of days to avoid a large number of queries when processing
|
||||||
|
# +r accounts during the initial net.burst.
|
||||||
|
#
|
||||||
|
preload_user_days = 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specify the filename for the 'Admin Log'.
|
||||||
|
# Basically a log of all commands admins type.
|
||||||
|
#
|
||||||
|
admin_logfile = admin.log
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specify the filename for the 'Command Log'
|
||||||
|
# A log of ALL commands issued by ALL users.
|
||||||
|
# requires USE_COMMAND_LOG in cservice_config.h
|
||||||
|
command_logfile = cs.log
|
||||||
|
|
||||||
|
#
|
||||||
|
# This option is used only if ALLOW_HELLO is defined in
|
||||||
|
# cservice_config.h, thus enabling the HELLO command in cservice.
|
||||||
|
# This is the time to block users attempting to flood the bot with
|
||||||
|
# hello commands, in seconds.
|
||||||
|
#
|
||||||
|
hello_block_period = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# If this is set to 1, the password generated for the new user will be sent to the email
|
||||||
|
# otherwise displayed directly to the user
|
||||||
|
# ** IMPORTANT: mailutils or mailx package must be installed on your system
|
||||||
|
|
||||||
|
hello_sendmail_enabled = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sending email when new user registered
|
||||||
|
# Define here the "from address"
|
||||||
|
#
|
||||||
|
|
||||||
|
sendmail_from = cservice@underchat.org
|
||||||
|
|
||||||
|
#
|
||||||
|
# What is the period (in seconds) in which we will check for
|
||||||
|
# new webrelay messages
|
||||||
|
#
|
||||||
|
|
||||||
|
webrelay_interval = 10;
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long the bot should stay in an idle channel before leaving it.
|
||||||
|
# This only takes into account join/parts, not privmsg.
|
||||||
|
# Default is 2 days (172800 seconds)
|
||||||
|
#
|
||||||
|
|
||||||
|
part_idle_chan = 172800
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable/Disable totp authentication (must be enabled in mod.cservice/cservice_config.h on compliation)
|
||||||
|
# 1 = totp enabled, 0 = totp disabled
|
||||||
|
|
||||||
|
enable_totp = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Days to expire users
|
||||||
|
# 0 = never expire
|
||||||
|
|
||||||
|
users_expire_days = 365
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set MIA flag on channels where manager missing for
|
||||||
|
# 0 = never expire
|
||||||
|
|
||||||
|
MIA_start_days = 90
|
||||||
|
|
||||||
|
#
|
||||||
|
# Purge MIA flagged channels after
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_days = 100
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequncy for check database for last seen users(in hours)
|
||||||
|
# cannot be 0, default 8 will be used
|
||||||
|
|
||||||
|
users_db_idle = 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequncy for check database for for channels for missing managers(in hours)
|
||||||
|
# cannot be 0, default 3 will be used
|
||||||
|
|
||||||
|
channels_db_idle = 1
|
||||||
|
|
||||||
|
# Set hour length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
hour_seconds = 3600
|
||||||
|
|
||||||
|
# Set day length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
day_seconds = 86400
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA starting period
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_start_desc = Manager has failed to login. To vote for new manager send mail to cservice@underchat.org
|
||||||
|
|
||||||
|
#
|
||||||
|
# MIA URL
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_URL = Only 400+ Ops
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA ending period (manager has logged in)
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_desc = Manager has logged in. This was the last warning for failure to login
|
||||||
|
|
||||||
|
# # #
|
||||||
|
# ***** The Judge ***** #
|
||||||
|
# # #
|
||||||
|
|
||||||
|
required_supporters = 2
|
||||||
|
judge_day_seconds = 360
|
||||||
|
min_days_before_reg = 1
|
||||||
|
min_days_before_support = 1
|
||||||
|
max_concurrent_supports = 3
|
||||||
|
noreg_days_on_nosupport = 1
|
||||||
|
reject_app_on_userfraud = 1
|
||||||
|
rewiev_on_object = 1
|
||||||
|
rewievs_expire_time = 100
|
||||||
|
pendings_expire_time = 30
|
||||||
|
max_days = 3
|
||||||
|
unique_joins = 5
|
||||||
|
joins = 10
|
||||||
|
min_supporters = 2
|
||||||
|
min_supporters_joins = 2
|
||||||
|
notify_days = 2
|
||||||
|
support_days = 1
|
||||||
|
reviewer_id = 1
|
||||||
|
|
||||||
|
# A welcome message for a newly accepted channel
|
||||||
|
# For empty use '' and it means disabled
|
||||||
|
|
||||||
|
welcome_newchan_message = Congratulations! Channel %s has been registered!
|
||||||
|
|
||||||
|
# A welcome topic for a newly accepted channel
|
||||||
|
# For empty use '' and it means disabled. Applies only on empty channel topic.
|
||||||
|
# TOPIC_TRACK must be #define in \include\gnuworld_config.h
|
||||||
|
|
||||||
|
welcome_newchan_topic = *** Congratulations! Your channel application has been accepted! ***
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reserved/restricted hostnames.
|
||||||
|
# Cannot set by regular users. Wildcard match is accepted.
|
||||||
|
# The bot's hostname and hiddenhost suffix are automatically added to the list
|
||||||
|
#
|
||||||
|
|
@ -0,0 +1,342 @@
|
||||||
|
# $Id: cservice.example.conf.in,v 1.9 2005/12/06 18:12:44 kewlio Exp $
|
||||||
|
# Channel Services configuration file.
|
||||||
|
#
|
||||||
|
# sql_host = Hostname/IP of the PostgreSQL server.
|
||||||
|
|
||||||
|
sql_host = 127.0.0.1
|
||||||
|
sql_port = 5432
|
||||||
|
|
||||||
|
# sql_db = Name of the database.
|
||||||
|
# (To create from the template, run cservice.sql through Postgres)
|
||||||
|
|
||||||
|
sql_db = cservice
|
||||||
|
|
||||||
|
# sql_user is the username to pass to Postgres on connection.
|
||||||
|
# Usefull if your account name is not the same as your Database
|
||||||
|
# username.
|
||||||
|
|
||||||
|
sql_user = gnuworld
|
||||||
|
sql_pass = foo
|
||||||
|
|
||||||
|
# General 'Bot' options.
|
||||||
|
|
||||||
|
nickname = X
|
||||||
|
username = cservice
|
||||||
|
hostname = yournetwork.org
|
||||||
|
userdescription = For help type: /msg X help
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay flood/warnings/exceptions, etc.
|
||||||
|
#
|
||||||
|
|
||||||
|
pending_page_url = http://www.yoursite.com/live/view_app.php
|
||||||
|
|
||||||
|
relay_channel = #coder-com
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay useful information, but not quite as annoying
|
||||||
|
# as the debug_channel ! (a.k.a privileged user relay channel)
|
||||||
|
#
|
||||||
|
|
||||||
|
priv_relay_channel = #coder-com
|
||||||
|
|
||||||
|
#
|
||||||
|
# Channel to relay useful debug information that otherwise
|
||||||
|
# annoy CS admins. :)
|
||||||
|
#
|
||||||
|
|
||||||
|
debug_channel = #coder-com
|
||||||
|
|
||||||
|
#
|
||||||
|
# Coder channel.
|
||||||
|
#
|
||||||
|
# Channel used to extract levels to display coder access status.
|
||||||
|
|
||||||
|
coder_channel = #coder-com
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequency in seconds to check the database for updates.
|
||||||
|
#
|
||||||
|
|
||||||
|
update_interval = 180
|
||||||
|
|
||||||
|
#
|
||||||
|
# Number of seconds to sample for flooding.
|
||||||
|
#
|
||||||
|
|
||||||
|
flood_duration = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# Input flood rate.
|
||||||
|
#
|
||||||
|
# Eg: 30, for 30 points amassed within "flood_duration" seconds.
|
||||||
|
#
|
||||||
|
|
||||||
|
input_flood = 3000
|
||||||
|
|
||||||
|
#
|
||||||
|
# Output flood rate.
|
||||||
|
#
|
||||||
|
# Eg: 20480 (20k within "flood_duration" seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
output_flood = 20480
|
||||||
|
|
||||||
|
#
|
||||||
|
# Minimum duration at which to set a topic in a non idle channel.
|
||||||
|
# (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
topic_duration = 1800
|
||||||
|
|
||||||
|
#
|
||||||
|
# Duration at which we check for idle user accounts in memory.
|
||||||
|
# (Seconds).
|
||||||
|
|
||||||
|
expire_interval = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long those accounts should have been idle before they are
|
||||||
|
# uncached. (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
cache_interval = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often to notify/commit changes to Pending channels.
|
||||||
|
# (Seconds).
|
||||||
|
|
||||||
|
pending_duration = 1800
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often to check if the connection to the backend has
|
||||||
|
# fallen over? (Seconds).
|
||||||
|
#
|
||||||
|
|
||||||
|
connection_check_frequency = 10
|
||||||
|
|
||||||
|
#
|
||||||
|
# How many times do we try every 'connection_check_frequency' seconds
|
||||||
|
# to reconnect before finally giving up and exiting?
|
||||||
|
#
|
||||||
|
|
||||||
|
connection_retry_total = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# How often (in seconds) should we check all channels that have
|
||||||
|
# floating-limit set to see if they need a new limit setting?
|
||||||
|
#
|
||||||
|
# Note: 30 is a good value, try 1min if you have lots of chans
|
||||||
|
# and not so much CPU.
|
||||||
|
|
||||||
|
limit_check = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long (In seconds) should we wait before allowing
|
||||||
|
# logins after startup. (Incase you're on a busy network
|
||||||
|
# with a really large burst and need things to settle down
|
||||||
|
# first to ease up load on the Db).
|
||||||
|
#
|
||||||
|
|
||||||
|
login_delay = 5
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# What is the period (in seconds) in which we will check to
|
||||||
|
# see if someone has sent too many notes, and what do we
|
||||||
|
# define "Too Many" as?
|
||||||
|
# Ie: You can send 'note_limit' notes in 'note_duration' seconds.
|
||||||
|
#
|
||||||
|
|
||||||
|
note_duration = 3600
|
||||||
|
note_limit = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# How many not(ic)es will be stored at one time
|
||||||
|
# 0 disallowed, 3 will be used
|
||||||
|
|
||||||
|
max_notes = 30;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pre-cache 'x' days worth of user accounts.
|
||||||
|
# This lets you preload all the users who have logged in during the last
|
||||||
|
# 'x' number of days to avoid a large number of queries when processing
|
||||||
|
# +r accounts during the initial net.burst.
|
||||||
|
#
|
||||||
|
preload_user_days = 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specify the filename for the 'Admin Log'.
|
||||||
|
# Basically a log of all commands admins type.
|
||||||
|
#
|
||||||
|
admin_logfile = admin.log
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specify the filename for the 'Command Log'
|
||||||
|
# A log of ALL commands issued by ALL users.
|
||||||
|
# requires USE_COMMAND_LOG in cservice_config.h
|
||||||
|
command_logfile = cs.log
|
||||||
|
|
||||||
|
#
|
||||||
|
# This option is used only if ALLOW_HELLO is defined in
|
||||||
|
# cservice_config.h, thus enabling the HELLO command in cservice.
|
||||||
|
# This is the time to block users attempting to flood the bot with
|
||||||
|
# hello commands, in seconds.
|
||||||
|
#
|
||||||
|
hello_block_period = 3600
|
||||||
|
|
||||||
|
#
|
||||||
|
# If this is set to 1, the password generated for the new user will be sent to the email
|
||||||
|
# otherwise displayed directly to the user
|
||||||
|
# ** IMPORTANT: mailutils or mailx package must be installed on your system
|
||||||
|
|
||||||
|
hello_sendmail_enabled = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sending email when new user registered
|
||||||
|
# Define here the "from address"
|
||||||
|
#
|
||||||
|
|
||||||
|
sendmail_from = cservice@yournetwork.org
|
||||||
|
|
||||||
|
#
|
||||||
|
# What is the period (in seconds) in which we will check for
|
||||||
|
# new webrelay messages
|
||||||
|
#
|
||||||
|
|
||||||
|
webrelay_interval = 10;
|
||||||
|
|
||||||
|
#
|
||||||
|
# How long the bot should stay in an idle channel before leaving it.
|
||||||
|
# This only takes into account join/parts, not privmsg.
|
||||||
|
# Default is 2 days (172800 seconds)
|
||||||
|
#
|
||||||
|
|
||||||
|
part_idle_chan = 172800
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable/Disable totp authentication (must be enabled in mod.cservice/cservice_config.h on compliation)
|
||||||
|
# 1 = totp enabled, 0 = totp disabled
|
||||||
|
|
||||||
|
enable_totp = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Days to expire users
|
||||||
|
# 0 = never expire
|
||||||
|
|
||||||
|
users_expire_days = 60
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set MIA flag on channels where manager missing for
|
||||||
|
# 0 = never expire
|
||||||
|
|
||||||
|
MIA_start_days = 21
|
||||||
|
|
||||||
|
#
|
||||||
|
# Purge MIA flagged channels after
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_days = 30
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequncy for check database for last seen users(in hours)
|
||||||
|
# cannot be 0, default 8 will be used
|
||||||
|
|
||||||
|
users_db_idle = 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frequncy for check database for for channels for missing managers(in hours)
|
||||||
|
# cannot be 0, default 3 will be used
|
||||||
|
|
||||||
|
channels_db_idle = 1
|
||||||
|
|
||||||
|
# Set hour length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
hour_seconds = 3600
|
||||||
|
|
||||||
|
# Set day length in seconds
|
||||||
|
# (appliabale only for "new" features user and channel expires
|
||||||
|
# cannot be 0; 1 will be used
|
||||||
|
|
||||||
|
day_seconds = 86400
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA starting period
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_start_desc = Manager has failed to login. To vote for new manager send mail to cservice@undernet.org
|
||||||
|
|
||||||
|
#
|
||||||
|
# MIA URL
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_URL = Only 400+ Ops
|
||||||
|
|
||||||
|
#
|
||||||
|
# Description for MIA ending period (manager has logged in)
|
||||||
|
#
|
||||||
|
|
||||||
|
MIA_end_desc = Manager has logged in. This was the last warning for failure to login
|
||||||
|
|
||||||
|
# # #
|
||||||
|
# ***** The Judge ***** #
|
||||||
|
# # #
|
||||||
|
|
||||||
|
required_supporters = 2
|
||||||
|
|
||||||
|
judge_day_seconds = 360
|
||||||
|
|
||||||
|
min_days_before_reg = 1
|
||||||
|
|
||||||
|
min_days_before_support = 1
|
||||||
|
|
||||||
|
max_concurrent_supports = 3
|
||||||
|
|
||||||
|
noreg_days_on_nosupport = 1
|
||||||
|
|
||||||
|
reject_app_on_userfraud = 1
|
||||||
|
|
||||||
|
rewiev_on_object = 1
|
||||||
|
|
||||||
|
rewievs_expire_time = 100
|
||||||
|
|
||||||
|
pendings_expire_time = 30
|
||||||
|
|
||||||
|
max_days = 5
|
||||||
|
|
||||||
|
unique_joins = 5
|
||||||
|
|
||||||
|
joins = 15
|
||||||
|
|
||||||
|
min_supporters = 2
|
||||||
|
|
||||||
|
min_supporters_joins = 3
|
||||||
|
|
||||||
|
notify_days = 2
|
||||||
|
|
||||||
|
support_days = 1
|
||||||
|
|
||||||
|
reviewer_id = 1
|
||||||
|
|
||||||
|
# A welcome message for a newly accepted channel
|
||||||
|
# For empty use '' and it means disabled
|
||||||
|
|
||||||
|
welcome_newchan_message = Congratulations! Channel %s has been registered!
|
||||||
|
|
||||||
|
# A welcome topic for a newly accepted channel
|
||||||
|
# For empty use '' and it means disabled. Applies only on empty channel topic.
|
||||||
|
# TOPIC_TRACK must be #define in \include\gnuworld_config.h
|
||||||
|
|
||||||
|
welcome_newchan_topic = *** Congratulations! Your channel application has been accepted! ***
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reserved/restricted hostnames.
|
||||||
|
# Cannot set by regular users. Wildcard match is accepted.
|
||||||
|
# The bot's hostname and hiddenhost suffix are automatically added to the list
|
||||||
|
#
|
||||||
|
|
||||||
|
reservedHost = *anyhost.com
|
||||||
|
reservedHost = *.anyhost2.com
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
# $Id: dronescan.example.conf.in,v 1.19 2008/11/17 02:54:42 hidden1 Exp $
|
||||||
|
# What nickname should the bot use?
|
||||||
|
nickname = E
|
||||||
|
|
||||||
|
# What username should the bot use?
|
||||||
|
username = dronescan
|
||||||
|
|
||||||
|
# What hostname should the bot use?
|
||||||
|
hostname = undernet.org
|
||||||
|
|
||||||
|
# What should the bots real name be?
|
||||||
|
userdescription = Drone Scanner
|
||||||
|
|
||||||
|
# What user modes should the bot use?
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
# Console channel name and initial modes
|
||||||
|
consoleChannel = #ds.console
|
||||||
|
consoleChannelModes = +ntsim
|
||||||
|
|
||||||
|
# enable autoTopic when dronescan joins? true or false
|
||||||
|
setAutoTopic = false
|
||||||
|
|
||||||
|
# SQL Setup
|
||||||
|
sqlHost = 127.0.0.1
|
||||||
|
sqlPort = 5432
|
||||||
|
sqlDB = dronescan
|
||||||
|
sqlUser = gnuworld
|
||||||
|
sqlPass = dronescan
|
||||||
|
|
||||||
|
# Margins
|
||||||
|
# Be careful with these. I wouldn't touch chanMargin too much but I suspect
|
||||||
|
# nickMargin will need tweaking from network to network. These defaults were
|
||||||
|
# taken from a fairly old burst from a small (2k5 user) network so beware!
|
||||||
|
|
||||||
|
# The fraction of users who must be `abnormal' in a channel for the channel
|
||||||
|
# to be reported.
|
||||||
|
channelMargin = 0.8
|
||||||
|
|
||||||
|
# The margin around the average entropy within which a nickname is considered
|
||||||
|
# `normal'. Outside this margin is `abnormal'. Note this is the margin *either
|
||||||
|
# side* of the center, ie 0.25 would give a 50% spread - from 25% to 75%.
|
||||||
|
nickMargin = 0.1
|
||||||
|
|
||||||
|
# The channel cutoff is the minimum amount of members a channel must have before
|
||||||
|
# it can be considered a drone channel.
|
||||||
|
channelCutoff = 10
|
||||||
|
|
||||||
|
# The minimum level of information shown in the console channels. Available
|
||||||
|
# levels are as follows:
|
||||||
|
# 0 - DEBUG Random debug things that you very probably are not interested in
|
||||||
|
# 1 - INFO Informational things - this is usually worth seeing
|
||||||
|
# 2 - WARN Warnings about drone channels and serious events.
|
||||||
|
# 3 - ERROR DroneScan core errors.
|
||||||
|
consoleLevel = 1
|
||||||
|
|
||||||
|
# The minimum amount of votes needed for a channel to be considered abnormal
|
||||||
|
voteCutoff = 30
|
||||||
|
|
||||||
|
# The interval (in seconds) during which a channel won't be reported again
|
||||||
|
# This is to stop repeated spamming of the same channel
|
||||||
|
dcInterval = 600
|
||||||
|
|
||||||
|
# The interval in seconds for how often we should attempt to refresh any
|
||||||
|
# caches from the database. The refreshes typically only trigger if any
|
||||||
|
# data has actually changed.
|
||||||
|
rcInterval = 300
|
||||||
|
|
||||||
|
# The level that an opered client without an account should be assumed
|
||||||
|
# to have.
|
||||||
|
# If you wish this functionality to be disabled, set the level to 0.
|
||||||
|
fakeOperLevel = 300
|
||||||
|
|
||||||
|
################
|
||||||
|
# JOIN COUNTER #
|
||||||
|
################
|
||||||
|
|
||||||
|
# The interval over which join counter checks for joins. This is in seconds.
|
||||||
|
jcInterval = 10
|
||||||
|
|
||||||
|
# The trigger level for which join counter warns. Note that the total join
|
||||||
|
# count must be OVER this level to trigger.
|
||||||
|
jcCutoff = 10
|
||||||
|
|
||||||
|
# The minimum time a client needs to join and part within a flood to be reported/glined
|
||||||
|
jcMinJoinToGline = 1
|
||||||
|
|
||||||
|
# Whether or not to gline join flood clients
|
||||||
|
jcGlineEnable = 0
|
||||||
|
|
||||||
|
# The minimum joins during join-floods required for an IP to be glined without a part (Can be on multiple channels)
|
||||||
|
jcMinJoinsPerIPToGline = 4
|
||||||
|
|
||||||
|
# The time within the joins.
|
||||||
|
jcJoinsPerIPTime = 14400
|
||||||
|
|
||||||
|
# The number of clients per IP required during *ONE* joinflood to set a gline if there are no parts
|
||||||
|
jcMinJoinToGlineJOnly = 2
|
||||||
|
|
||||||
|
# The join-flood size required to set a gline with no parts
|
||||||
|
jcMinJFJOnlySizeToGline = 25
|
||||||
|
|
||||||
|
# The minimum number of flooding clients required to gline
|
||||||
|
jcMinJFSizeToGline = 20
|
||||||
|
|
||||||
|
# The gline reason to set when glining join flood offenders
|
||||||
|
jcGlineReason = Flooding is not tollerated on this network!
|
||||||
|
|
||||||
|
# The length in seconds for glines which are issued on join flood offenders
|
||||||
|
jcGlineLength = 3600
|
||||||
|
|
||||||
|
|
||||||
|
################
|
||||||
|
# NICK COUNTER #
|
||||||
|
################
|
||||||
|
|
||||||
|
# The interval over which nick counter checks for nicks changes. This is in
|
||||||
|
# seconds.
|
||||||
|
ncInterval = 10
|
||||||
|
|
||||||
|
# The trigger level for which nick counter warns. Note that the total nick
|
||||||
|
# change count must be OVER this level to trigger.
|
||||||
|
ncCutoff = 10
|
||||||
|
|
||||||
|
|
||||||
|
#################
|
||||||
|
# CHANNEL RANGE #
|
||||||
|
#################
|
||||||
|
|
||||||
|
# The total range of entropy in a channel before it is considered abnormal
|
||||||
|
channelRange = 0.2
|
||||||
|
|
||||||
|
|
||||||
|
############
|
||||||
|
# MAXCHANS #
|
||||||
|
############
|
||||||
|
|
||||||
|
# The minimum channel membership before a client in a channel is considered
|
||||||
|
# normal:
|
||||||
|
maxChans = 2
|
||||||
|
|
||||||
|
|
||||||
|
##############
|
||||||
|
# COMMONREAL #
|
||||||
|
##############
|
||||||
|
|
||||||
|
# The amount of users who must have the same realname before being considered
|
||||||
|
# abnormal.
|
||||||
|
realCutoff = 4
|
||||||
|
|
||||||
|
###############
|
||||||
|
# GLINE QUEUE #
|
||||||
|
###############
|
||||||
|
|
||||||
|
# The number of clients to gline when processing the gline queue
|
||||||
|
gbCount = 2
|
||||||
|
|
||||||
|
# The interval (in seconds) processing the gline queue
|
||||||
|
gbInterval = 1
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
# $Id: gnutest.example.conf.in,v 1.3 2003/11/11 19:21:19 dan_karrels Exp $
|
||||||
|
# conf file for testClient
|
||||||
|
username = gnutest
|
||||||
|
nickname = gnutest
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = GNUTest Test Client
|
||||||
|
|
||||||
|
mode = +iok
|
||||||
|
|
||||||
|
operchan = #Valhalla
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
./gnuworld -c -f GNUWorld.example.conf&
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
log4cplus.logger.gnuworld.ds.jf.glined=INFO, DS-JFGLINED
|
||||||
|
|
||||||
|
log4cplus.appender.DS-JFGLINED=log4cplus::DailyRollingFileAppender
|
||||||
|
log4cplus.appender.DS-JFGLINED.File=jf-glined.log
|
||||||
|
log4cplus.appender.DS-JFGLINED.Schedule=Daily
|
||||||
|
log4cplus.appender.DS-JFGLINED.layout=log4cplus::PatternLayout
|
||||||
|
log4cplus.appender.DS-JFGLINED.layout.ConversionPattern=%d - %m%n
|
||||||
|
|
||||||
|
log4cplus.logger.gnuworld.ds.jf.cservice=INFO, DS-CSERVICE
|
||||||
|
|
||||||
|
log4cplus.appender.DS-CSERVICE=log4cplus::DailyRollingFileAppender
|
||||||
|
log4cplus.appender.DS-CSERVICE.File=jf-cservice.log
|
||||||
|
log4cplus.appender.DS-CSERVICE.Schedule=Daily
|
||||||
|
log4cplus.appender.DS-CSERVICE.layout=log4cplus::PatternLayout
|
||||||
|
log4cplus.appender.DS-CSERVICE.layout.ConversionPattern=%d - %m%n
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
# $Id: nickserv.example.conf.in,v 1.5 2003/06/05 01:38:01 dan_karrels Exp $
|
||||||
|
nickname = NS
|
||||||
|
|
||||||
|
username = nickserv
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = NickServ
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
# Console output for nickserv
|
||||||
|
consoleChannel = #ns.console
|
||||||
|
consoleChannelModes = +ntsim
|
||||||
|
|
||||||
|
# DB connection configuration
|
||||||
|
dbHost = 127.0.0.1
|
||||||
|
dbPort = 5432
|
||||||
|
dbDb = nickserv
|
||||||
|
dbUser = nickserv
|
||||||
|
dbPass = ""
|
||||||
|
|
||||||
|
# The frequency with which to check the queue
|
||||||
|
checkFreq = 60
|
||||||
|
|
||||||
|
# The initial startup wait.
|
||||||
|
# Note this does NOT include checkFreq so make sure to set
|
||||||
|
# a value somewhat higher than 0
|
||||||
|
startDelay = 60
|
||||||
|
|
||||||
|
# How frequently to commit to the database
|
||||||
|
# _freq is max time to wait, _count is max entries to wait
|
||||||
|
commitFreq = 5
|
||||||
|
commitCount = 1
|
||||||
|
|
||||||
|
# What level of debug stuff should be sent to the console channel?
|
||||||
|
# This is a bitfield, values as follows:
|
||||||
|
# 1 - PROTOCOL
|
||||||
|
# 2 - SQL
|
||||||
|
# 4 - DEBUG
|
||||||
|
# 8 - INFO
|
||||||
|
# 16 - WARNING
|
||||||
|
# 32 - ERROR
|
||||||
|
# Simply add the numbers together from the levels you want.
|
||||||
|
consoleLevel = 63
|
||||||
|
|
||||||
|
|
@ -0,0 +1,163 @@
|
||||||
|
# $Id: openchanfix.example.conf.in,v 1.1 2006/12/22 06:41:41 kewlio Exp $
|
||||||
|
# chanfix configuration file
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Nickname of bot
|
||||||
|
nickname = C
|
||||||
|
|
||||||
|
# Username of bot
|
||||||
|
username = chanfix
|
||||||
|
|
||||||
|
# Hostname of bot
|
||||||
|
hostname = evilnet.development
|
||||||
|
|
||||||
|
# Real name (info) of bot
|
||||||
|
userdescription = Oooh! Oooh! I can fix it!
|
||||||
|
|
||||||
|
# User modes bot should set
|
||||||
|
mode = +idk
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Database specifications
|
||||||
|
|
||||||
|
# Host and port of database
|
||||||
|
sqlHost = 127.0.0.1
|
||||||
|
sqlPort = 5432
|
||||||
|
# Name of database
|
||||||
|
sqlDB = chanfix
|
||||||
|
# If you don't need user/pass just put "" for option(s) below
|
||||||
|
sqlcfUser = gnuworld
|
||||||
|
sqlPass = ""
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Channels the bot should join
|
||||||
|
|
||||||
|
# Console channel name and initial modes
|
||||||
|
consoleChan = #coder-com
|
||||||
|
consoleChanModes = +nst
|
||||||
|
|
||||||
|
# Should the bot relay admin messages to the console channel?
|
||||||
|
# NOTE: This only disables relaying information sent to the
|
||||||
|
# adminLog. debugLog information is *always* relayed.
|
||||||
|
sendConsoleNotices = true
|
||||||
|
|
||||||
|
# Channel(s) that chanfix should join besides consoleChan (can be multiple)
|
||||||
|
joinChan = #chanfix
|
||||||
|
joinChan = #staff
|
||||||
|
|
||||||
|
# Initial modes all joinChans should have
|
||||||
|
joinChanModes = +nt
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Fixing settings
|
||||||
|
|
||||||
|
# Should chanfix automatically fix opless channels?
|
||||||
|
enableAutoFix = true
|
||||||
|
|
||||||
|
# Should chanfix be able to manually fix channels?
|
||||||
|
enableChanFix = true
|
||||||
|
|
||||||
|
# Can channels be blocked by admins?
|
||||||
|
enableChannelBlocking = true
|
||||||
|
|
||||||
|
# Should chanfix join the channel its fixing? this avoids the hopping issue
|
||||||
|
joinChannels = true
|
||||||
|
|
||||||
|
# Should chanfix send notices saying the channel is being fixed for auto
|
||||||
|
# fixes. Also a notice after its finished saying its done?
|
||||||
|
autoFixNotice = true
|
||||||
|
|
||||||
|
# Should chanfix send notices saying the channel is being fixed for manual
|
||||||
|
# fixes Also a notice after its finished saying its done?
|
||||||
|
manualFixNotice = true
|
||||||
|
|
||||||
|
# Should auto fixes stop if an already reopped user ops another user?
|
||||||
|
stopAutoFixOnOp = true
|
||||||
|
|
||||||
|
# Should manual fixes stop if an already reopped user ops another user?
|
||||||
|
stopChanFixOnOp = true
|
||||||
|
|
||||||
|
# Should the top ops be allowed to perform fixes on their own channels?
|
||||||
|
allowTopOpFix = false
|
||||||
|
|
||||||
|
# Should the top op fixes be able to alert the top 10 ops who are not in
|
||||||
|
# the channel at the time of the fix automatically? If no/false then the
|
||||||
|
# database help entry for REQUESTOP will need to be updated.
|
||||||
|
allowTopOpAlert = true
|
||||||
|
|
||||||
|
# How much percentage within the top score should the top ops score be
|
||||||
|
# before they are allowed to perform fixes. Dont include a %.
|
||||||
|
topOpPercent = 10
|
||||||
|
|
||||||
|
# Minimum score an op has be before they can issue fixes in their own
|
||||||
|
# channel without requiring an oper to do them.
|
||||||
|
minFixScore = 1000
|
||||||
|
|
||||||
|
# Minimum score an op has to be before they can use the CANFIX command for
|
||||||
|
# a channel they are ops in.
|
||||||
|
minCanFixScore = 500
|
||||||
|
|
||||||
|
# Minimum time required between REQUESTOP fixes. (In seconds). The last
|
||||||
|
# fix time is updated at the start of a fix so allow time for the first
|
||||||
|
# fix aswell as time for a gap.
|
||||||
|
minRequestOpTime = 720
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Network settings
|
||||||
|
|
||||||
|
# Version of IRCu used on the network (11 or 12)
|
||||||
|
# Use 11 for u2.10.11 and 12 for u2.10.12
|
||||||
|
# NOTE: You MUST restart GNUWorld for this change to take place.
|
||||||
|
version = 12
|
||||||
|
|
||||||
|
# Should burst be used to fix takeovers (through a manual fix)?
|
||||||
|
# Burst guarantees that the abusers will not be reopped due to
|
||||||
|
# a netsplit, but it can cause problems due to lowering timestamp.
|
||||||
|
# NOTE: You MUST restart GNUWorld for this change to take place.
|
||||||
|
useBurstToFix = true
|
||||||
|
|
||||||
|
# Total number of servers on the network
|
||||||
|
numServers = 10
|
||||||
|
|
||||||
|
# The minimum percentage of servers that need to be linked;
|
||||||
|
# if there are fewer servers linked, chanfix will not fix
|
||||||
|
# any channels, be it automatic or manual.
|
||||||
|
minServersPresent = 75
|
||||||
|
|
||||||
|
# The full server name of the channel service. This is used in
|
||||||
|
# checking whether the channel service is currently linked or
|
||||||
|
# not to the network.
|
||||||
|
chanServName = channels.undernet.org
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Interface settings
|
||||||
|
|
||||||
|
# The amount of scores to report when issuing the SCORE #channel
|
||||||
|
# command. Do not set this to a higher value than 10.
|
||||||
|
numTopScores = 10
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Database settings
|
||||||
|
|
||||||
|
# Minimum clients needed in a channel for it to be scored
|
||||||
|
minClients = 4
|
||||||
|
|
||||||
|
# Which clients score a point if they are opped?
|
||||||
|
# Client needs to be idented (no ~ before username)
|
||||||
|
clientNeedsIdent = false
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Miscellaneous settings
|
||||||
|
|
||||||
|
# Frequency (in seconds) between database connection status checks
|
||||||
|
connectCheckFreq = 10
|
||||||
|
|
||||||
|
# File where all admin commands sent to backchan are logged and saved
|
||||||
|
adminLogFile = chanfix-admin.log
|
||||||
|
|
||||||
|
# File where all debug information sent to backchan is logged and saved
|
||||||
|
debugLogFile = chanfix-debug.log
|
||||||
|
|
||||||
|
# End of config file.
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# $Id: scanner.example.conf.in,v 1.2 2003/06/05 01:38:01 dan_karrels Exp $
|
||||||
|
# Config file for the scanner client
|
||||||
|
nickname = netscan
|
||||||
|
username = netscan
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = Don't be afraid, I won't hurt you...
|
||||||
|
|
||||||
|
mode = +iok
|
||||||
|
|
||||||
|
# The maximum number of outgoing connections to establish
|
||||||
|
max_connects = 1500
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# $Id: server_command_map.in,v 1.6 2009/07/25 18:12:33 hidden1 Exp $
|
||||||
|
# The mapping from module to message name for server command handlers
|
||||||
|
# format: module_file_name module_loader_symbol command_key
|
||||||
|
# example: libircu msg_AC AC
|
||||||
|
# example: libircu msg_P P
|
||||||
|
# example: libircu msg_NOOP Z
|
||||||
|
|
||||||
|
libircu msg_AC AC
|
||||||
|
libircu msg_AD AD
|
||||||
|
libircu msg_B B
|
||||||
|
libircu msg_C C
|
||||||
|
libircu msg_CM CM
|
||||||
|
libircu msg_D D
|
||||||
|
libircu msg_NOOP DE
|
||||||
|
libircu msg_DS DS
|
||||||
|
libircu msg_EA EA
|
||||||
|
libircu msg_EB EB
|
||||||
|
libircu msg_G G
|
||||||
|
libircu msg_GL GL
|
||||||
|
libircu msg_I I
|
||||||
|
libircu msg_J J
|
||||||
|
libircu msg_JU JU
|
||||||
|
libircu msg_K K
|
||||||
|
libircu msg_L L
|
||||||
|
libircu msg_M351 351
|
||||||
|
libircu msg_M391 391
|
||||||
|
libircu msg_M M
|
||||||
|
libircu msg_N N
|
||||||
|
libircu msg_NOOP NOOP
|
||||||
|
libircu msg_PA PA
|
||||||
|
libircu msg_PA PASS
|
||||||
|
libircu msg_O O
|
||||||
|
libircu msg_OM OM
|
||||||
|
libircu msg_P P
|
||||||
|
libircu msg_Q Q
|
||||||
|
libircu msg_R R
|
||||||
|
libircu msg_RI RI
|
||||||
|
libircu msg_RO RO
|
||||||
|
libircu msg_S S
|
||||||
|
libircu msg_Server SERVER
|
||||||
|
libircu msg_SQ SQ
|
||||||
|
libircu msg_T T
|
||||||
|
libircu msg_V V
|
||||||
|
libircu msg_WA WA
|
||||||
|
libircu msg_W W
|
||||||
|
libircu msg_Y Y
|
||||||
|
libircu msg_Y ERROR
|
||||||
|
libircu msg_NOOP Z
|
||||||
|
libircu msg_NOOP A
|
||||||
|
libircu msg_NOOP U
|
||||||
|
libircu msg_NOOP WU
|
||||||
|
libircu msg_NOOP MO
|
||||||
|
libircu msg_NOOP 482
|
||||||
|
libircu msg_NOOP 443
|
||||||
|
libircu msg_FA FA
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
# $Id: snoop.example.conf.in,v 1.2 2003/12/06 22:11:36 dan_karrels Exp $
|
||||||
|
# conf file for snoop bot
|
||||||
|
username = snoopy
|
||||||
|
nickname = snoopy_
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = Inquiring Minds Want to Know
|
||||||
|
|
||||||
|
mode = +i
|
||||||
|
|
||||||
|
# permit the given user -- by account login name -- to use the
|
||||||
|
# module. You may have as many of these as you like (including none).
|
||||||
|
# This is case-insensitive.
|
||||||
|
#permit_user = reppir
|
||||||
|
#permit_user = Jeekay
|
||||||
|
|
||||||
|
# Set this to true if you want to permit opers to use the module,
|
||||||
|
# set to false otherwise (will not affect other users who have access)
|
||||||
|
allow_opers = true
|
||||||
|
|
||||||
|
# The command character (or string) to which the bot will respond
|
||||||
|
# in channels. This can be any length, but can only be one word.
|
||||||
|
cmdchar = snoopy
|
||||||
|
|
||||||
|
# The channel in which the bot will accept channel commands
|
||||||
|
adminchan = #2010
|
||||||
|
|
||||||
|
# The channel to which relay information will be sent
|
||||||
|
relaychan = #coder-com
|
||||||
|
|
||||||
|
# The default quit message for spawned clients
|
||||||
|
defaultquitmessage = Exiting
|
||||||
|
|
||||||
|
# The maximum nickname length for your network
|
||||||
|
maxnicklen = 9
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
# $Id: stats.example.conf.in,v 1.6 2003/07/24 21:14:25 dan_karrels Exp $
|
||||||
|
# conf file for stats bot
|
||||||
|
username = ubercow
|
||||||
|
nickname = ubercow
|
||||||
|
hostname = undernet.org
|
||||||
|
userdescription = UnderNet Statistical Services
|
||||||
|
|
||||||
|
mode = +iok
|
||||||
|
|
||||||
|
# permit the given user -- by account login name -- to use the
|
||||||
|
# module. You may have as many of these as you like (including none).
|
||||||
|
# This is case-insensitive.
|
||||||
|
permit_user = reppir
|
||||||
|
permit_user = Jeekay
|
||||||
|
|
||||||
|
# Set this to true if you want to permit opers to use the module,
|
||||||
|
# set to false otherwise (will not affect other users who have access)
|
||||||
|
allow_opers = true
|
||||||
|
|
||||||
|
# Set this value to "true" to enable stats logging during burst (it chews
|
||||||
|
# the hard drive/CPU)
|
||||||
|
logDuringBurst = false
|
||||||
|
|
||||||
|
# Path to where you want output files to be placed
|
||||||
|
data_path = .
|
||||||
|
|
||||||
|
part_message = Im too sexy for this channel
|
||||||
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
/* Nothing here */
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,497 @@
|
||||||
|
dnl $Id: configure.ac,v 1.42 2008/04/16 15:25:49 danielaustin Exp $
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
|
||||||
|
echo Configuring GNUWorld...
|
||||||
|
echo
|
||||||
|
|
||||||
|
AC_REVISION($Revision: 1.42 $)
|
||||||
|
AC_INIT
|
||||||
|
AC_CONFIG_SRCDIR([src/main.cc])
|
||||||
|
AM_INIT_AUTOMAKE(gnuworld,3.0)
|
||||||
|
AM_CONFIG_HEADER(include/defs.h)
|
||||||
|
|
||||||
|
AC_PROG_CXX
|
||||||
|
AC_LANG([C++])
|
||||||
|
|
||||||
|
AC_PROG_MAKE_SET(gmake)
|
||||||
|
|
||||||
|
AC_DISABLE_STATIC
|
||||||
|
AC_ENABLE_SHARED
|
||||||
|
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
dnl Enable building of the convenience library
|
||||||
|
dnl and set LIBLTDL accordingly
|
||||||
|
AC_LIBLTDL_CONVENIENCE
|
||||||
|
|
||||||
|
dnl Substitute INCLTDL and LIBLTDL in the Makefiles
|
||||||
|
dnl For some reason, INCLTDL and LIBLTDL aren't set
|
||||||
|
dnl properly on OpenBSD
|
||||||
|
LIBLTDL="\$(top_builddir)/libltdl/libltdlc.la"
|
||||||
|
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
AC_ISC_POSIX
|
||||||
|
|
||||||
|
dnl Check for dlopen support
|
||||||
|
AC_LIBTOOL_DLOPEN
|
||||||
|
|
||||||
|
dnl Configure libtool
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
CXXFLAGS="-W -Wall -pipe -I\$(top_srcdir)/libltdl"
|
||||||
|
CXXFLAGS="$CXXFLAGS -I\$(top_srcdir)/db"
|
||||||
|
CFLAGS="$CFLAGS"
|
||||||
|
|
||||||
|
AC_PREFIX_DEFAULT(`pwd`)
|
||||||
|
|
||||||
|
dnl Configure libltdl
|
||||||
|
AC_CONFIG_SUBDIRS(libltdl)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to detect pthread libraries])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([threads],
|
||||||
|
AC_HELP_STRING([--disable-threads],
|
||||||
|
[disable the linking of the pthread library (default = no)]),
|
||||||
|
[check_threadLib=$enable_threads],
|
||||||
|
[check_threadLib=yes])
|
||||||
|
|
||||||
|
AC_MSG_RESULT([$check_threadLib])
|
||||||
|
|
||||||
|
dnl Do we need an explicit lib for the pthreads?
|
||||||
|
gcc_support_pthread=no
|
||||||
|
if test "$check_threadLib" = yes; then
|
||||||
|
dnl usually, gcc needs -pthread
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether gcc accepts the -pthread option])
|
||||||
|
pthreadtest=`$CXX -pthread 2>&1 | grep -c unrecognized`
|
||||||
|
|
||||||
|
if [ test "x$pthreadtest" = "x0" ]; then
|
||||||
|
gcc_support_pthread=yes
|
||||||
|
AC_SUBST(threadLib)
|
||||||
|
threadLib=-pthread
|
||||||
|
else
|
||||||
|
gcc_support_pthread=no
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$gcc_support_pthread])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ test x"$gcc_support_pthread" = xno ]; then
|
||||||
|
pthread_found=no
|
||||||
|
AC_CHECK_LIB(pthread, pthread_create, pthread_found=yes)
|
||||||
|
if [ test x"$pthread_found" = xyes ]; then
|
||||||
|
AC_SUBST(threadLib)
|
||||||
|
threadLib=-lpthread
|
||||||
|
else
|
||||||
|
AC_CHECK_LIB(c_r, pthread_create,threadLib=-lc_r)
|
||||||
|
AC_CHECK_LIB(gcc_r, main, threadLib=-gcc_r)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl The below algorithm is incorrect because gcc is given no
|
||||||
|
dnl input files
|
||||||
|
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
dnl
|
||||||
|
dnl System specific checks
|
||||||
|
dnl
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
|
||||||
|
AC_CHECK_LIB(socket,socket)
|
||||||
|
AC_CHECK_LIB(nsl,gethostbyname)
|
||||||
|
|
||||||
|
dnl Check for pcre for building a test program.
|
||||||
|
dnl If it is not present, just don't build the program.
|
||||||
|
AC_CHECK_LIB(pcre,pcre_compile,
|
||||||
|
AM_CONDITIONAL(COND_PCRE,[/bin/true]),
|
||||||
|
AM_CONDITIONAL(COND_PCRE,[/bin/false]))
|
||||||
|
dnl AC_CHECK_LIB(z,inflate)
|
||||||
|
dnl AC_CHECK_LIB(pthread,pthread_create)
|
||||||
|
dnl AC_SEARCH_LIBS(pthread_create,lthread pthread c c_r)
|
||||||
|
dnl AC_SEARCH_LIBS(pthread_kill,lthread pthread c c_r)
|
||||||
|
dnl AC_CHECK_FUNCS(pthread_create)
|
||||||
|
|
||||||
|
dnl ----------------------------------------------------------
|
||||||
|
dnl
|
||||||
|
dnl Checking for headers, functions, and a type declarations
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(sys/file.h unistd.h sys/stat.h sys/ioctl.h sys/resource.h )
|
||||||
|
AC_CHECK_HEADERS(sys/time.h asm/ioctls.h xti_inet.h sys/filio.h getopt.h)
|
||||||
|
AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h sys/un.h pthread.h)
|
||||||
|
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_HEADER_TIME
|
||||||
|
AC_TYPE_SIGNAL
|
||||||
|
AC_TYPE_MODE_T
|
||||||
|
AC_TYPE_PID_T
|
||||||
|
AC_TYPE_SIZE_T
|
||||||
|
AC_TYPE_UID_T
|
||||||
|
|
||||||
|
found_socklen_t=no
|
||||||
|
AC_EGREP_HEADER(socklen_t,sys/socket.h, AC_DEFINE(HAVE_SOCKLEN_T) found_socklen_t=yes)
|
||||||
|
|
||||||
|
if test $found_socklen_t = yes; then
|
||||||
|
AC_EGREP_HEADER(socklen_t,bits/socket.h,
|
||||||
|
AC_DEFINE([HAVE_SOCKLEN_T],[],[Socket length type]))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $found_socklen_t = yes; then
|
||||||
|
AC_MSG_CHECKING(for socklen_t)
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
else
|
||||||
|
AC_CHECK_TYPE(socklen_t,int)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_WITH(debug,
|
||||||
|
AC_HELP_STRING([--without-debug],
|
||||||
|
[Disable debugging in the executables]),
|
||||||
|
[dummy=true],
|
||||||
|
[CXXFLAGS="$CXXFLAGS -g"]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl By default, do NOT build test directory
|
||||||
|
build_testdir=false
|
||||||
|
AC_ARG_WITH(test,
|
||||||
|
AC_HELP_STRING([--with-test],
|
||||||
|
[Enable building of test programs]),
|
||||||
|
[build_testdir=true]
|
||||||
|
)
|
||||||
|
AM_CONDITIONAL(COND_TESTDIR,[test $build_testdir = true])
|
||||||
|
|
||||||
|
AC_ARG_WITH(pedantic,
|
||||||
|
AC_HELP_STRING([--with-pedantic],
|
||||||
|
[Add -pedantic to compile options]),
|
||||||
|
[CXXFLAGS="$CXXFLAGS -pedantic"]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(optimization,
|
||||||
|
AC_HELP_STRING([--with-optimization],
|
||||||
|
[Optimize the executables]),
|
||||||
|
[CXXFLAGS="$CXXFLAGS -O2"],
|
||||||
|
[CXXFLAGS="$CXXFLAGS -O0"]
|
||||||
|
)
|
||||||
|
|
||||||
|
AC_ARG_WITH(prof,
|
||||||
|
AC_HELP_STRING([--with-prof],
|
||||||
|
[Generate profiling information]),
|
||||||
|
[CXXFLAGS="$CXXFLAGS -pg"]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl The idea with this pgsql code is to check for a system installed
|
||||||
|
dnl postgresql and use it if found. However, if the user specifies
|
||||||
|
dnl an alternate install location, use that instead.
|
||||||
|
|
||||||
|
dnl Prepare to capture the user's input for the location of a pgsql
|
||||||
|
dnl installation.
|
||||||
|
AC_ARG_WITH(pgconfig,
|
||||||
|
AC_HELP_STRING([--with-pgconfig=FILE],
|
||||||
|
[Specify an alternate pg_config location.]),
|
||||||
|
[pg_config_binary=$withval], [pg_config_binary=""]
|
||||||
|
)
|
||||||
|
|
||||||
|
if test "x$pg_config_binary" = "x"; then
|
||||||
|
dnl pg_config was not specified; search for it it in PATH.
|
||||||
|
AC_PATH_PROG([pg_config_binary], [pg_config])
|
||||||
|
|
||||||
|
if test "x$pg_config_binary" = "x"; then
|
||||||
|
AC_MSG_ERROR([Could not find pg_config. Ensure that PostgreSQL is installed, or specify pg_config location using --with-pgconfig.])
|
||||||
|
fi
|
||||||
|
elif test -f $pg_config_binary; then
|
||||||
|
AC_MSG_RESULT([Using pg_config: $pg_config_binary])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([pg_config file $pg_config_binary does not exist])
|
||||||
|
fi
|
||||||
|
|
||||||
|
pgsql_includedir=$($pg_config_binary --includedir)
|
||||||
|
pgsql_libdir=$($pg_config_binary --libdir)
|
||||||
|
|
||||||
|
CXXFLAGS="$CXXFLAGS -I$pgsql_includedir"
|
||||||
|
CPPFLAGS="$CPPFLAGS -I$pgsql_includedir"
|
||||||
|
LIBS="$LIBS -L$pgsql_libdir"
|
||||||
|
|
||||||
|
dnl Check for the pgsql library and header file.
|
||||||
|
dnl Need to generalize when mysql support is added.
|
||||||
|
AC_CHECK_LIB(pq, PQconnectdb)
|
||||||
|
AC_CHECK_HEADER([libpq-fe.h])
|
||||||
|
AC_DEFINE([HAVE_PGSQL],[],[Using PostGreSQL])
|
||||||
|
|
||||||
|
dnl Enable log4cplus if required
|
||||||
|
AC_ARG_WITH(log4cplus,
|
||||||
|
AC_HELP_STRING([--with-log4cplus],
|
||||||
|
[Check log4cplus, if not enabled some modules may not have logging support]),
|
||||||
|
[check_log4cplus=$withval]
|
||||||
|
)
|
||||||
|
|
||||||
|
LOG4CPLUS_LIB="${check_log4cplus}/lib"
|
||||||
|
AC_ARG_WITH(log4cplus-lib,
|
||||||
|
AC_HELP_STRING([--with-log4cplus-lib=LOG4CPLUSLIBDIR],
|
||||||
|
[Specify location to find liblog4cplus.so]),
|
||||||
|
[LOG4CPLUS_LIB=$withval]
|
||||||
|
)
|
||||||
|
|
||||||
|
LOG4CPLUS_INCLUDE="${check_log4cplus}/include"
|
||||||
|
AC_ARG_WITH(log4cplus-include,
|
||||||
|
AC_HELP_STRING([--with-log4cplus-include=LOG4CPLUSINCLUDEDIR],
|
||||||
|
[Specify location to find logger.h]),
|
||||||
|
[LOG4CPLUS_INCLUDE=$withval]
|
||||||
|
)
|
||||||
|
|
||||||
|
if [test "x$check_log4cplus" != "x" ]; then
|
||||||
|
AC_MSG_CHECKING(for liblog4cplus.so)
|
||||||
|
if [test -f "$LOG4CPLUS_LIB/liblog4cplus.so"]; then
|
||||||
|
/bin/true
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR( Unable to find liblog4cplus.so, \
|
||||||
|
please use the --with-log4cplus-lib argument to point to the right path)
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for log4cplus/logger.h)
|
||||||
|
if [test -f "$LOG4CPLUS_INCLUDE/log4cplus/logger.h"]; then
|
||||||
|
/bin/true
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR( Unable to find log4cplus/logger.h, \
|
||||||
|
please use the --with-log4cplus-include argument to point to the right path)
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE([ENABLE_LOG4CPLUS], [], [Enable LOG4CPLUS])
|
||||||
|
LDFLAGS="${LDFLAGS} -L${LOG4CPLUS_LIB} -llog4cplus"
|
||||||
|
CXXFLAGS="${CXXFLAGS} -I${LOG4CPLUS_INCLUDE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Enable liboath if required
|
||||||
|
AC_ARG_WITH(liboath,
|
||||||
|
AC_HELP_STRING([--with-liboath],
|
||||||
|
[Check liboath, if not enabled TOTP functionality will not be available]),
|
||||||
|
[check_liboath=$withval]
|
||||||
|
)
|
||||||
|
if [test "$check_liboath" == "yes"]; then
|
||||||
|
check_liboath=/usr/local
|
||||||
|
fi
|
||||||
|
OATH_LIB="${check_liboath}/lib"
|
||||||
|
AC_ARG_WITH(liboath-lib,
|
||||||
|
AC_HELP_STRING([--with-liboath-lib=LIBOATHLIBDIR],
|
||||||
|
[Specify location to find liboath.so]),
|
||||||
|
[OATH_LIB=$withval]
|
||||||
|
)
|
||||||
|
|
||||||
|
OATH_INCLUDE="${check_liboath}/include"
|
||||||
|
AC_ARG_WITH(liboath-include,
|
||||||
|
AC_HELP_STRING([--with-liboath-include=OATHINCLUDEDIR],
|
||||||
|
[Specify location to find oath.h]),
|
||||||
|
[OATH_INCLUDE=$withval]
|
||||||
|
)
|
||||||
|
|
||||||
|
if [test "x$check_liboath" != "x" ]; then
|
||||||
|
LDFLAGS="${LDFLAGS} -L${OATH_LIB}"
|
||||||
|
CXXFLAGS="${CXXFLAGS} -I${OATH_INCLUDE} -L${OATH_LIB}"
|
||||||
|
dnl AC_CHECK_FILE("$OATH_LIB/liboath.so",, [AC_MSG_ERROR([Unable to find liboath.so, \
|
||||||
|
dnl please use the --with-liboath-lib argument to point to the right path],1)])
|
||||||
|
AC_CHECK_LIB(oath,oath_totp_validate,, [AC_MSG_ERROR([Unable to find liboath.so, please use the --with-liboath-lib argument to point to the right path],1)])
|
||||||
|
AC_CHECK_FILE("$OATH_INCLUDE/liboath/oath.h",, [AC_MSG_ERROR([Unable to find oath.h, please use the --with-liboath-include argument to point to the right path],1)])
|
||||||
|
dnl AC_DEFINE([ENABLE_LIBOATH], [], [Enable LIBOATH])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Allow selection of additional includes and libraries paths
|
||||||
|
dnl just in case!
|
||||||
|
|
||||||
|
AC_ARG_WITH(extra-includes,
|
||||||
|
AC_HELP_STRING([--with-extra-includes=INCLUDESDIR],
|
||||||
|
[Specify location to find additional include files]),
|
||||||
|
[CXXFLAGS="$CXXFLAGS -I$withval"]
|
||||||
|
)
|
||||||
|
AC_ARG_WITH(extra-libraries,
|
||||||
|
AC_HELP_STRING([--with-extra-libraries=LIBRARYDIR],
|
||||||
|
[Specify location to find additional libraries]),
|
||||||
|
[LDFLAGS="$LDFLAGS -L$withval"]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl This calls a macro in ax_boost_thread.m4
|
||||||
|
m4_include([ac_cxx_namespaces.m4])
|
||||||
|
m4_include([ax_boost_thread.m4])
|
||||||
|
CXXFLAGS="$CXXFLAGS $threadLib"
|
||||||
|
AX_BOOST_THREAD
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Detecting modules..."
|
||||||
|
echo
|
||||||
|
|
||||||
|
build_modccontrol=false
|
||||||
|
build_modchanfix=false
|
||||||
|
build_modclientExample=false
|
||||||
|
build_modcloner=false
|
||||||
|
build_modcservice=false
|
||||||
|
build_moddronescan=false
|
||||||
|
build_modgnutest=false
|
||||||
|
build_modnickserv=false
|
||||||
|
build_modopenchanfix=false
|
||||||
|
build_modscanner=false
|
||||||
|
build_modstats=false
|
||||||
|
build_modsnoop=false
|
||||||
|
|
||||||
|
NEW_MODS=""
|
||||||
|
MOD_DIRS=""
|
||||||
|
searchForMods=yes
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(modules,
|
||||||
|
AC_HELP_STRING([--enable-modules=mods],
|
||||||
|
[Enable one or more modules; all modules found in the \
|
||||||
|
current directory are enabled by default. Specify "no" (without quotes) \
|
||||||
|
to build server only]),
|
||||||
|
[
|
||||||
|
dnl echo "enableval: $enableval"
|
||||||
|
if [test $enableval = "yes"]; then
|
||||||
|
searchForMods=yes
|
||||||
|
elif [test $enableval = "no"]; then
|
||||||
|
searchForMods=no
|
||||||
|
else
|
||||||
|
tmp="mod.$enableval"
|
||||||
|
dnl echo "tmp: $tmp"
|
||||||
|
tmp=`echo $tmp | sed 's/,/ mod./g'`
|
||||||
|
dnl echo "tmp: $tmp"
|
||||||
|
MOD_DIRS="$MOD_DIRS $tmp"
|
||||||
|
searchForMods=no
|
||||||
|
|
||||||
|
dnl Prepare for conditionals
|
||||||
|
for moduleName in $MOD_DIRS; do
|
||||||
|
case "$moduleName" in
|
||||||
|
mod.ccontrol) build_modccontrol=true;;
|
||||||
|
mod.chanfix) build_modchanfix=true;;
|
||||||
|
mod.clientExample) build_modclientExample=true;;
|
||||||
|
mod.cloner) build_modcloner=true;;
|
||||||
|
mod.cservice) build_modcservice=true;;
|
||||||
|
mod.dronescan) build_moddronescan=true;;
|
||||||
|
mod.gnutest) build_modgnutest=true;;
|
||||||
|
mod.nickserv) build_modnickserv=true;;
|
||||||
|
mod.openchanfix) build_modopenchanfix=true;;
|
||||||
|
mod.scanner) build_modscanner=true;;
|
||||||
|
mod.stats) build_modstats=true;;
|
||||||
|
mod.snoop) build_modsnoop=true;;
|
||||||
|
*) NEW_MODS="$NEW_MODS $moduleName";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
],
|
||||||
|
[
|
||||||
|
dnl echo "running later"
|
||||||
|
searchForMods=yes
|
||||||
|
]) dnl AC_ARG_ENABLE
|
||||||
|
|
||||||
|
dnl echo "searchForMods: $searchForMods"
|
||||||
|
if [test $searchForMods = yes]; then
|
||||||
|
mod_list=`\ls $srcdir | \grep "mod."`
|
||||||
|
dnl echo "mod_list: $mod_list"
|
||||||
|
|
||||||
|
for file in $mod_list; do
|
||||||
|
if [ ! test -d $srcdir/$file ]; then
|
||||||
|
echo "$srcdir/$file is not a directory!"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ test -f $srcdir/$file/Makefile.in ]; then
|
||||||
|
echo Adding module `echo $file | \cut -f2 -d"."`
|
||||||
|
case "$file" in
|
||||||
|
mod.ccontrol) build_modccontrol=true;;
|
||||||
|
mod.chanfix) build_modchanfix=true;;
|
||||||
|
mod.clientExample) build_modclientExample=true;;
|
||||||
|
mod.cloner) build_modcloner=true;;
|
||||||
|
mod.cservice) build_modcservice=true;;
|
||||||
|
mod.dronescan) build_moddronescan=true;;
|
||||||
|
mod.gnutest) build_modgnutest=true;;
|
||||||
|
mod.nickserv) build_modnickserv=true;;
|
||||||
|
mod.openchanfix) build_modopenchanfix=true;;
|
||||||
|
mod.scanner) build_modscanner=true;;
|
||||||
|
mod.stats) build_modstats=true;;
|
||||||
|
mod.snoop) build_modsnoop=true;;
|
||||||
|
*) NEW_MODS="$NEW_MODS $file";;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(COND_MODCCONTROL,[test $build_modccontrol = true])
|
||||||
|
AM_CONDITIONAL(COND_MODCHANFIX,[test $build_modchanfix = true])
|
||||||
|
AM_CONDITIONAL(COND_MODCLIENTEXAMPLE,[test $build_modclientExample = true])
|
||||||
|
AM_CONDITIONAL(COND_MODCLONER,[test $build_modcloner = true])
|
||||||
|
AM_CONDITIONAL(COND_MODCSERVICE,[test $build_modcservice = true])
|
||||||
|
AM_CONDITIONAL(COND_MODDRONESCAN,[test $build_moddronescan = true])
|
||||||
|
AM_CONDITIONAL(COND_MODGNUTEST,[test $build_modgnutest = true])
|
||||||
|
AM_CONDITIONAL(COND_MODNICKSERV,[test $build_modnickserv = true])
|
||||||
|
AM_CONDITIONAL(COND_MODOPENCHANFIX,[test $build_modopenchanfix = true])
|
||||||
|
AM_CONDITIONAL(COND_MODSCANNER,[test $build_modscanner = true])
|
||||||
|
AM_CONDITIONAL(COND_MODSTATS,[test $build_modstats = true])
|
||||||
|
AM_CONDITIONAL(COND_MODSNOOP,[test $build_modsnoop = true])
|
||||||
|
|
||||||
|
for file in $NEW_MODS; do
|
||||||
|
AC_CONFIG_SUBDIRS($file)
|
||||||
|
done
|
||||||
|
|
||||||
|
LIBGNUWORLD="\$(top_builddir)/libgnuworld/libgnuworld.la"
|
||||||
|
AC_SUBST(LIBGNUWORLD)
|
||||||
|
|
||||||
|
AC_SUBST(NEW_MODS)
|
||||||
|
AC_SUBST(CXXFLAGS)
|
||||||
|
AC_SUBST(INCLTDL)
|
||||||
|
AC_SUBST(LIBLTDL)
|
||||||
|
AC_SUBST(LIBTOOL_DEPS)
|
||||||
|
AC_SUBST(pgsql_includedir)
|
||||||
|
AC_SUBST(pgsql_libdir)
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile \
|
||||||
|
db/Makefile \
|
||||||
|
libgnuworld/Makefile \
|
||||||
|
libircu/Makefile \
|
||||||
|
src/Makefile \
|
||||||
|
test/Makefile \
|
||||||
|
mod.ccontrol/Makefile \
|
||||||
|
mod.chanfix/Makefile \
|
||||||
|
mod.clientExample/Makefile \
|
||||||
|
mod.cloner/Makefile \
|
||||||
|
mod.cservice/Makefile \
|
||||||
|
mod.dronescan/Makefile \
|
||||||
|
mod.gnutest/Makefile \
|
||||||
|
mod.nickserv/Makefile \
|
||||||
|
mod.openchanfix/Makefile \
|
||||||
|
mod.scanner/Makefile \
|
||||||
|
mod.stats/Makefile \
|
||||||
|
mod.snoop/Makefile \
|
||||||
|
bin/server_command_map \
|
||||||
|
bin/ccontrol.example.conf \
|
||||||
|
bin/chanfix.example.conf \
|
||||||
|
bin/clientExample.example.conf \
|
||||||
|
bin/cloner.example.conf \
|
||||||
|
bin/cservice.example.conf \
|
||||||
|
bin/gnutest.example.conf \
|
||||||
|
bin/GNUWorld.example.conf \
|
||||||
|
bin/nickserv.example.conf \
|
||||||
|
bin/openchanfix.example.conf \
|
||||||
|
bin/scanner.example.conf \
|
||||||
|
bin/stats.example.conf \
|
||||||
|
bin/snoop.example.conf \
|
||||||
|
bin/dronescan.example.conf \
|
||||||
|
bin/logging.properties \
|
||||||
|
tools/checkgnuworld.sh])
|
||||||
|
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "##########################"
|
||||||
|
echo "# GNUWorld Configuration #"
|
||||||
|
echo "##########################"
|
||||||
|
echo ""
|
||||||
|
echo "Configuration of GNUWorld is complete - you're almost ready to run 'make'..."
|
||||||
|
echo ""
|
||||||
|
echo "Check the following files for modification before building:"
|
||||||
|
echo " include/gnuworld_config.h"
|
||||||
|
|
||||||
|
if [test $build_modcservice = true]; then
|
||||||
|
echo " mod.cservice/cservice_config.h"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [test $build_modopenchanfix = true]; then
|
||||||
|
echo " mod.openchanfix/chanfix_config.h"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
encrypt.sh Program to generate cmaster password hashes
|
||||||
|
chktrans.py Program to generate a report on the translations table
|
||||||
|
00INDEX.TXT This file.
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# Check GNUWorld's mod.cservice translations
|
||||||
|
# (C) 2001 Alex Badea <vampire@go.ro>
|
||||||
|
|
||||||
|
# Use the following command in the mod.cservice directory to get the grep data:
|
||||||
|
# grep -n "language::" *.cc > grep-data
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from string import *
|
||||||
|
|
||||||
|
language_id = '8'
|
||||||
|
|
||||||
|
responses = {}
|
||||||
|
resp_used = {}
|
||||||
|
trans = {}
|
||||||
|
alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
|
||||||
|
|
||||||
|
f = open("language_table.sql", "r")
|
||||||
|
for line in f.readlines():
|
||||||
|
line = strip(line)
|
||||||
|
toks = split(line, '\t')
|
||||||
|
if len(toks) < 4: continue
|
||||||
|
if toks[0] != language_id: continue
|
||||||
|
if toks[len(toks)-1] != "31337": continue
|
||||||
|
if trans.has_key(toks[1]):
|
||||||
|
print "* Duplicate translation, ID: ", toks[1]
|
||||||
|
trans[toks[1]] = toks[2]
|
||||||
|
f.close()
|
||||||
|
print "* Read %d translations from language_table.sql" % len(trans)
|
||||||
|
|
||||||
|
f = open("responses.h", "r")
|
||||||
|
for line in f.readlines():
|
||||||
|
line = strip(line)
|
||||||
|
toks = split(line)
|
||||||
|
if len(toks) < 2: continue
|
||||||
|
if toks[0] != "const": continue
|
||||||
|
if toks[1] != "int": continue
|
||||||
|
if responses.has_key(toks[2]):
|
||||||
|
print "* Duplicate response, name: ", toks[2]
|
||||||
|
responses[toks[2]] = toks[4][:-1]
|
||||||
|
resp_used[toks[2]] = 0
|
||||||
|
f.close()
|
||||||
|
print "* Read %d responses from responses.h" % len(responses)
|
||||||
|
|
||||||
|
f = open("grep-data", "r")
|
||||||
|
line = f.readline()
|
||||||
|
while line:
|
||||||
|
try: start = index(line, "language::")
|
||||||
|
except ValueError: start = -1
|
||||||
|
if start >= 0:
|
||||||
|
start = start + 10
|
||||||
|
end = start
|
||||||
|
while (line[end] in alpha) and (end < len(line)):
|
||||||
|
end = end + 1
|
||||||
|
id = line[start:end]
|
||||||
|
toks = split(line, ':')
|
||||||
|
fname = ""
|
||||||
|
fline = 0
|
||||||
|
if len(toks) > 0: fname = toks[0]
|
||||||
|
if len(toks) > 1: fline = int(toks[1])
|
||||||
|
try: numeric = responses[id]
|
||||||
|
except KeyError: numeric = '****';
|
||||||
|
try: text = trans[numeric]
|
||||||
|
except KeyError: text = '**UNASSIGNED**';
|
||||||
|
try: resp_used[id] = 1
|
||||||
|
except: pass
|
||||||
|
print "%-25s (%4d): %-30s (%4s) -> %s" % (fname, fline, id, numeric, text)
|
||||||
|
line = f.readline()
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
for resp in resp_used.keys():
|
||||||
|
if not resp_used[resp]:
|
||||||
|
try: numeric = responses[resp]
|
||||||
|
except KeyError: numeric = '****';
|
||||||
|
try: text = trans[numeric]
|
||||||
|
except KeyError: text = '**UNASSIGNED**';
|
||||||
|
print "%-25s : %-30s (%4s) -> %s" % ("* Unused response", resp, numeric, text)
|
||||||
|
|
||||||
|
print "* Done"
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
function encrypt() {
|
||||||
|
pass=$1
|
||||||
|
COOKIE=`mcookie|cut -b-8`
|
||||||
|
export COOKIE pass
|
||||||
|
echo ${COOKIE}`echo ${COOKIE}${pass} | md5sum | cut -f1 -d' '`
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
while read pass; do
|
||||||
|
encrypt $pass
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "--help" ]; then
|
||||||
|
echo $0 -- generate passwords for gnuworld
|
||||||
|
echo
|
||||||
|
echo usage:
|
||||||
|
echo $0 password
|
||||||
|
echo or
|
||||||
|
echo cat passwords \| $0
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
encrypt $1
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
Makefile
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
## $Id: Makefile.am,v 1.14 2007/09/18 15:34:47 dan_karrels Exp $
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libgnuworldDB.la
|
||||||
|
libgnuworldDB_la_SOURCES = gnuworldDB.cc \
|
||||||
|
pgsqlDB.cc
|
||||||
|
##libgnuworldDB_la_CXXFLAGS = -I$(pgsql_includedir)
|
||||||
|
libgnuworldDB_la_LDFLAGS = -L$(pgsql_libdir) -lpq
|
||||||
|
|
||||||
|
EXTRA_DIST = gnuworldDB.h \
|
||||||
|
pgsqlDB.h \
|
||||||
|
dbHandle.h
|
||||||
|
|
@ -0,0 +1,543 @@
|
||||||
|
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
build_triplet = @build@
|
||||||
|
host_triplet = @host@
|
||||||
|
subdir = db
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/ac_cxx_namespaces.m4 \
|
||||||
|
$(top_srcdir)/ax_boost_thread.m4 $(top_srcdir)/configure.ac
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/include/defs.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
libgnuworldDB_la_LIBADD =
|
||||||
|
am_libgnuworldDB_la_OBJECTS = gnuworldDB.lo pgsqlDB.lo
|
||||||
|
libgnuworldDB_la_OBJECTS = $(am_libgnuworldDB_la_OBJECTS)
|
||||||
|
libgnuworldDB_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(libgnuworldDB_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
CXXLD = $(CXX)
|
||||||
|
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
|
||||||
|
$(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libgnuworldDB_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(libgnuworldDB_la_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
BOOST_THREAD_LIB = @BOOST_THREAD_LIB@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INCLTDL = @INCLTDL@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBGNUWORLD = @LIBGNUWORLD@
|
||||||
|
LIBLTDL = @LIBLTDL@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTDLDEPS = @LTDLDEPS@
|
||||||
|
LTDLINCL = @LTDLINCL@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAINT = @MAINT@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NEW_MODS = @NEW_MODS@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
am__tar = @am__tar@
|
||||||
|
am__untar = @am__untar@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
pgsql_includedir = @pgsql_includedir@
|
||||||
|
pgsql_libdir = @pgsql_libdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
subdirs = @subdirs@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
threadLib = @threadLib@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
lib_LTLIBRARIES = libgnuworldDB.la
|
||||||
|
libgnuworldDB_la_SOURCES = gnuworldDB.cc \
|
||||||
|
pgsqlDB.cc
|
||||||
|
|
||||||
|
libgnuworldDB_la_LDFLAGS = -L$(pgsql_libdir) -lpq
|
||||||
|
EXTRA_DIST = gnuworldDB.h \
|
||||||
|
pgsqlDB.h \
|
||||||
|
dbHandle.h
|
||||||
|
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .cc .lo .o .obj
|
||||||
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu db/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu db/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
|
||||||
|
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||||
|
list2=; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
list2="$$list2 $$p"; \
|
||||||
|
else :; fi; \
|
||||||
|
done; \
|
||||||
|
test -z "$$list2" || { \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall-libLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-libLTLIBRARIES:
|
||||||
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libgnuworldDB.la: $(libgnuworldDB_la_OBJECTS) $(libgnuworldDB_la_DEPENDENCIES)
|
||||||
|
$(libgnuworldDB_la_LINK) -rpath $(libdir) $(libgnuworldDB_la_OBJECTS) $(libgnuworldDB_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnuworldDB.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pgsqlDB.Plo@am__quote@
|
||||||
|
|
||||||
|
.cc.o:
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.cc.obj:
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.cc.lo:
|
||||||
|
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f "$(distdir)/$$file" \
|
||||||
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||||
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am: install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||||
|
distclean-compile distclean-generic distclean-libtool \
|
||||||
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am \
|
||||||
|
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
|
||||||
|
install-ps install-ps-am install-strip installcheck \
|
||||||
|
installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
tags uninstall uninstall-am uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
/**
|
||||||
|
* dbHandle.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __DBHANDLE_H
|
||||||
|
#define __DBHANDLE_H "$Id: dbHandle.h,v 1.1 2007/08/28 16:09:58 dan_karrels Exp $"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
|
#include "defs.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_PGSQL
|
||||||
|
#include "pgsqlDB.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace gnuworld
|
||||||
|
{
|
||||||
|
|
||||||
|
class dbHandle
|
||||||
|
#ifdef HAVE_PGSQL
|
||||||
|
: public pgsqlDB
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
dbHandle( const std::string& dbHost,
|
||||||
|
const unsigned short int dbPort,
|
||||||
|
const std::string& dbName,
|
||||||
|
const std::string& userName,
|
||||||
|
const std::string& password )
|
||||||
|
#ifdef HAVE_PGSQL
|
||||||
|
: pgsqlDB( dbHost,
|
||||||
|
dbPort,
|
||||||
|
dbName,
|
||||||
|
userName,
|
||||||
|
password )
|
||||||
|
#endif
|
||||||
|
{}
|
||||||
|
dbHandle( const std::string& connectInfo )
|
||||||
|
#ifdef HAVE_PGSQL
|
||||||
|
: pgsqlDB( connectInfo )
|
||||||
|
#endif
|
||||||
|
{}
|
||||||
|
virtual ~dbHandle() {}
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
} // namespace gnuworld
|
||||||
|
|
||||||
|
#endif // __DBHANDLE_H
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
/**
|
||||||
|
* gnuworldDB.cc
|
||||||
|
* Author: Daniel Karrels (dan@karrels.com)
|
||||||
|
* Copyright (C) 2002 Daniel Karrels <dan@karrels.com>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* $Id: gnuworldDB.cc,v 1.5 2008/01/02 23:32:17 kewlio Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "gnuworldDB.h"
|
||||||
|
|
||||||
|
const char gnuworldDB_cc_rcsId[] = "$Id: gnuworldDB.cc,v 1.5 2008/01/02 23:32:17 kewlio Exp $" ;
|
||||||
|
const char gnuworldDB_h_rcsId[] = __GNUWORLDDB_H ;
|
||||||
|
|
||||||
|
namespace gnuworld
|
||||||
|
{
|
||||||
|
using std::string ;
|
||||||
|
|
||||||
|
gnuworldDB::gnuworldDB( )
|
||||||
|
{
|
||||||
|
/* dummy to prevent issues with pedantic compilers */
|
||||||
|
}
|
||||||
|
|
||||||
|
gnuworldDB::gnuworldDB( const string& _dbHost,
|
||||||
|
const unsigned short int _dbPort,
|
||||||
|
const string& _dbName,
|
||||||
|
const string& _userName,
|
||||||
|
const string& _password )
|
||||||
|
: dbHost( _dbHost ),
|
||||||
|
dbPort( _dbPort ),
|
||||||
|
dbName( _dbName ),
|
||||||
|
userName( _userName ),
|
||||||
|
password( _password )
|
||||||
|
{}
|
||||||
|
|
||||||
|
gnuworldDB::gnuworldDB( const string& /* connectInfo */ )
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
gnuworldDB::~gnuworldDB()
|
||||||
|
{}
|
||||||
|
|
||||||
|
} // namespace gnuworld
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
/**
|
||||||
|
* gnuworldDB.h
|
||||||
|
* Copyright (C) 2002 Daniel Karrels <dan@karrels.com>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* $Id: gnuworldDB.h,v 1.5 2009/07/26 18:30:37 mrbean_ Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __GNUWORLDDB_H
|
||||||
|
#define __GNUWORLDDB_H "$Id: gnuworldDB.h,v 1.5 2009/07/26 18:30:37 mrbean_ Exp $"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
namespace gnuworld
|
||||||
|
{
|
||||||
|
|
||||||
|
class gnuworldDB
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
std::string dbHost ;
|
||||||
|
unsigned short int dbPort ;
|
||||||
|
std::string dbName ;
|
||||||
|
std::string userName ;
|
||||||
|
std::string password ;
|
||||||
|
|
||||||
|
public:
|
||||||
|
gnuworldDB() ;
|
||||||
|
gnuworldDB( const std::string& dbHost,
|
||||||
|
const unsigned short int dbPort,
|
||||||
|
const std::string& dbName,
|
||||||
|
const std::string& userName,
|
||||||
|
const std::string& password ) ;
|
||||||
|
gnuworldDB( const std::string& connectInfo ) ;
|
||||||
|
virtual ~gnuworldDB() ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Exec method will execute an SQL command with the database.
|
||||||
|
* The "returnData" argument is false by default, and indicated
|
||||||
|
* whether or not data is expected back.
|
||||||
|
* If data is expected back, pass true to this method,
|
||||||
|
* and the return value will indicate if data was successfully
|
||||||
|
* returned.
|
||||||
|
* Otherwise, no data is expected back, and the method will
|
||||||
|
* return true if the command was successfully executed
|
||||||
|
* (with no data returned).
|
||||||
|
*/
|
||||||
|
virtual bool Exec( const std::stringstream&,
|
||||||
|
bool returnData = false ) = 0 ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Exec method will execute an SQL command with the database.
|
||||||
|
* The "returnData" argument is false by default, and indicated
|
||||||
|
* whether or not data is expected back.
|
||||||
|
* If data is expected back, pass true to this method,
|
||||||
|
* and the return value will indicate if data was successfully
|
||||||
|
* returned.
|
||||||
|
* Otherwise, no data is expected back, and the method will
|
||||||
|
* return true if the command was successfully executed
|
||||||
|
* (with no data returned).
|
||||||
|
*/
|
||||||
|
virtual bool Exec( const std::string&,
|
||||||
|
bool returnData = false ) = 0 ;
|
||||||
|
virtual bool isConnected() const = 0 ;
|
||||||
|
virtual bool ConnectionBad() const
|
||||||
|
{ return !isConnected() ; }
|
||||||
|
|
||||||
|
virtual unsigned int countTuples() const = 0 ;
|
||||||
|
virtual unsigned int Tuples() const
|
||||||
|
{ return countTuples() ; }
|
||||||
|
|
||||||
|
virtual const std::string ErrorMessage() const = 0 ;
|
||||||
|
virtual const std::string GetValue( unsigned int row,
|
||||||
|
unsigned int column ) const = 0 ;
|
||||||
|
virtual const std::string GetValue( unsigned int row,
|
||||||
|
const std::string& colName )
|
||||||
|
const = 0 ;
|
||||||
|
|
||||||
|
virtual bool PutLine( const std::string& ) = 0 ;
|
||||||
|
virtual bool StartCopyIn( const std::string& ) = 0 ;
|
||||||
|
virtual bool StopCopyIn() = 0 ;
|
||||||
|
|
||||||
|
inline const std::string& getDBHost() const
|
||||||
|
{ return dbHost ; }
|
||||||
|
inline const unsigned short int& getDBPort() const
|
||||||
|
{ return dbPort ; }
|
||||||
|
inline const std::string& getDBName() const
|
||||||
|
{ return dbName ; }
|
||||||
|
inline const std::string& getUserName() const
|
||||||
|
{ return userName ; }
|
||||||
|
inline const std::string& getPassword() const
|
||||||
|
{ return password ; }
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
} // namespace gnuworld
|
||||||
|
|
||||||
|
#endif // __GNUWORLDDB_H
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
/**
|
||||||
|
* pgsqlDB.cc
|
||||||
|
* Author: Daniel Karrels (dan@karrels.com)
|
||||||
|
* Copyright (C) 2002 Daniel Karrels <dan@karrels.com>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* $Id: pgsqlDB.cc,v 1.5 2009/07/25 16:59:48 mrbean_ Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
#include <iostream>
|
||||||
|
#include <exception>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "libpq-fe.h"
|
||||||
|
#include "gnuworldDB.h"
|
||||||
|
#include "pgsqlDB.h"
|
||||||
|
|
||||||
|
const char pgsqlDB_cc_rcsId[] = "$Id: pgsqlDB.cc,v 1.5 2009/07/25 16:59:48 mrbean_ Exp $" ;
|
||||||
|
const char pgsqlDB_h_rcsId[] = __PGSQLDB_H ;
|
||||||
|
|
||||||
|
namespace gnuworld
|
||||||
|
{
|
||||||
|
|
||||||
|
using std::cout ;
|
||||||
|
using std::endl ;
|
||||||
|
using std::ends ;
|
||||||
|
using std::string ;
|
||||||
|
using std::stringstream ;
|
||||||
|
|
||||||
|
pgsqlDB::pgsqlDB( const string& dbHost,
|
||||||
|
const unsigned short int dbPort,
|
||||||
|
const string& dbName,
|
||||||
|
const string& userName,
|
||||||
|
const string& password )
|
||||||
|
: gnuworldDB( dbHost, dbPort, dbName, userName, password ),
|
||||||
|
theDB( 0 ),
|
||||||
|
lastResult( 0 )
|
||||||
|
{
|
||||||
|
stringstream s ;
|
||||||
|
s << "host=" << dbHost
|
||||||
|
<< " dbname=" << dbName
|
||||||
|
<< " port=" << dbPort ;
|
||||||
|
|
||||||
|
if( !userName.empty() )
|
||||||
|
{
|
||||||
|
s << " user=" << userName ;
|
||||||
|
}
|
||||||
|
if( !password.empty() )
|
||||||
|
{
|
||||||
|
s << " password=" << password ;
|
||||||
|
}
|
||||||
|
s << ends ;
|
||||||
|
|
||||||
|
// Allow exception to be thrown
|
||||||
|
theDB = PQconnectdb( s.str().c_str() ) ;
|
||||||
|
if( 0 == theDB )
|
||||||
|
{
|
||||||
|
cout << "pgsqlDB> Failed to allocate memory for db handle"
|
||||||
|
<< endl ;
|
||||||
|
throw std::exception() ;
|
||||||
|
}
|
||||||
|
if( !isConnected() )
|
||||||
|
{
|
||||||
|
cout << "pgsqlDB> Failed to connect to db: "
|
||||||
|
<< ErrorMessage()
|
||||||
|
<< endl ;
|
||||||
|
throw std::exception() ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pgsqlDB::pgsqlDB( const string& connectInfo )
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
// Allow exception to be thrown
|
||||||
|
lastResult = 0;
|
||||||
|
theDB = PQconnectdb( connectInfo.c_str() ) ;
|
||||||
|
if( 0 == theDB )
|
||||||
|
{
|
||||||
|
cout << "pgsqlDB> Failed to allocate memory for db handle"
|
||||||
|
<< endl ;
|
||||||
|
throw std::exception() ;
|
||||||
|
}
|
||||||
|
if( !isConnected() )
|
||||||
|
{
|
||||||
|
cout << "pgsqlDB> Failed to connect to db: "
|
||||||
|
<< ErrorMessage()
|
||||||
|
<< endl ;
|
||||||
|
throw std::exception() ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pgsqlDB::~pgsqlDB()
|
||||||
|
{
|
||||||
|
if( theDB != 0 )
|
||||||
|
{
|
||||||
|
PQfinish( theDB ) ;
|
||||||
|
theDB = 0 ;
|
||||||
|
}
|
||||||
|
if( lastResult != 0 )
|
||||||
|
{
|
||||||
|
PQclear( lastResult ) ;
|
||||||
|
lastResult = 0 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::Exec( const string& theQuery, bool dataRet )
|
||||||
|
{
|
||||||
|
// It is necessary to manually deallocate the last result
|
||||||
|
// to prevent memory leaks.
|
||||||
|
if( lastResult != 0 )
|
||||||
|
{
|
||||||
|
PQclear( lastResult ) ;
|
||||||
|
lastResult = 0 ;
|
||||||
|
}
|
||||||
|
lastResult = PQexec( theDB, theQuery.c_str() ) ;
|
||||||
|
|
||||||
|
ExecStatusType status = PQresultStatus( lastResult ) ;
|
||||||
|
if( dataRet )
|
||||||
|
{
|
||||||
|
// User is expecting data back, so return status according
|
||||||
|
// to tuples being returned
|
||||||
|
if (PGRES_COPY_IN == status) return true;
|
||||||
|
if (PGRES_TUPLES_OK == status) return true;
|
||||||
|
if (PGRES_COMMAND_OK == status) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Command execution with no data returned.
|
||||||
|
if (PGRES_COPY_IN == status) return true;
|
||||||
|
if (PGRES_TUPLES_OK == status) return true;
|
||||||
|
if (PGRES_COMMAND_OK == status) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::Exec( const stringstream& theQuery, bool retData )
|
||||||
|
{
|
||||||
|
return Exec( theQuery.str(), retData ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::StartCopyIn( const string& writeMe )
|
||||||
|
{
|
||||||
|
return Exec( writeMe ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::StopCopyIn()
|
||||||
|
{
|
||||||
|
if( 0 == lastResult )
|
||||||
|
{
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
return (PQputCopyEnd( theDB, 0 ) != -1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::PutLine( const string& writeMe )
|
||||||
|
{
|
||||||
|
if( 0 == lastResult )
|
||||||
|
{
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
return (PQputline( theDB, writeMe.c_str() ) != -1) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int pgsqlDB::countTuples() const
|
||||||
|
{
|
||||||
|
if( 0 == lastResult )
|
||||||
|
{
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
return PQntuples( lastResult ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
const string pgsqlDB::ErrorMessage() const
|
||||||
|
{
|
||||||
|
return string( PQerrorMessage( theDB ) ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
const string pgsqlDB::GetValue( unsigned int rowNumber,
|
||||||
|
unsigned int columnNumber ) const
|
||||||
|
{
|
||||||
|
if( 0 == lastResult )
|
||||||
|
{
|
||||||
|
return string() ;
|
||||||
|
}
|
||||||
|
return PQgetvalue( lastResult, rowNumber, columnNumber ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
const string pgsqlDB::GetValue( unsigned int rowNumber,
|
||||||
|
const string& columnName ) const
|
||||||
|
{
|
||||||
|
if( 0 == lastResult )
|
||||||
|
{
|
||||||
|
return string( "No result stored" ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve the column number for this name.
|
||||||
|
const int columnNumber = PQfnumber( lastResult, columnName.c_str() ) ;
|
||||||
|
if( -1 == columnNumber )
|
||||||
|
{
|
||||||
|
return (string( "No such column: " ) + columnName) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PQgetvalue( lastResult, rowNumber, columnNumber ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pgsqlDB::isConnected() const
|
||||||
|
{
|
||||||
|
return (CONNECTION_OK == PQstatus( theDB )) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gnuworld
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* pgsqlDB.h
|
||||||
|
* Copyright (C) 2002 Daniel Karrels <dan@karrels.com>
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* $Id: pgsqlDB.h,v 1.3 2007/08/28 16:09:59 dan_karrels Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __PGSQLDB_H
|
||||||
|
#define __PGSQLDB_H "$Id: pgsqlDB.h,v 1.3 2007/08/28 16:09:59 dan_karrels Exp $"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
|
#include "libpq-fe.h"
|
||||||
|
#include "gnuworldDB.h"
|
||||||
|
|
||||||
|
namespace gnuworld
|
||||||
|
{
|
||||||
|
|
||||||
|
class pgsqlDB : public gnuworldDB
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
PGconn *theDB ;
|
||||||
|
PGresult *lastResult ;
|
||||||
|
|
||||||
|
public:
|
||||||
|
pgsqlDB( const std::string& dbHost,
|
||||||
|
const unsigned short int dbPort,
|
||||||
|
const std::string& dbName,
|
||||||
|
const std::string& userName,
|
||||||
|
const std::string& password ) ;
|
||||||
|
pgsqlDB( const std::string& connectInfo ) ;
|
||||||
|
virtual ~pgsqlDB() ;
|
||||||
|
|
||||||
|
virtual bool Exec( const std::string&, bool = false ) ;
|
||||||
|
virtual bool Exec( const std::stringstream&, bool = false ) ;
|
||||||
|
virtual bool isConnected() const ;
|
||||||
|
|
||||||
|
virtual bool PutLine( const std::string& ) ;
|
||||||
|
virtual bool StartCopyIn( const std::string& ) ;
|
||||||
|
virtual bool StopCopyIn() ;
|
||||||
|
|
||||||
|
virtual unsigned int countTuples() const ;
|
||||||
|
virtual const std::string ErrorMessage() const ;
|
||||||
|
|
||||||
|
// tuple number, field number (row,col)
|
||||||
|
virtual const std::string GetValue( unsigned int,
|
||||||
|
unsigned int ) const ;
|
||||||
|
virtual const std::string GetValue( unsigned int row,
|
||||||
|
const std::string& colName )
|
||||||
|
const ;
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
} // namespace gnuworld
|
||||||
|
|
||||||
|
#endif // __PGSQLDB_H
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
EConfig> Unable to open file: GNUWorld.conf
|
||||||
|
EConfig::Require> Configuration requires value for key "uplink"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,584 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2006-10-15.18
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
|
||||||
|
# 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, 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.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||||
|
as side-effects.
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
depmode Dependency tracking mode.
|
||||||
|
source Source file read by `PROGRAMS ARGS'.
|
||||||
|
object Object file output by `PROGRAMS ARGS'.
|
||||||
|
DEPDIR directory where to store dependencies.
|
||||||
|
depfile Dependency file to output.
|
||||||
|
tmpdepfile Temporary file to use when outputing dependencies.
|
||||||
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||||
|
depfile=${depfile-`echo "$object" |
|
||||||
|
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||||
|
## the command line argument order; so add the flags where they
|
||||||
|
## appear in depend2.am. Note that the slowdown incurred here
|
||||||
|
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||||
|
*) set fnord "$@" "$arg" ;;
|
||||||
|
esac
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
done
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the `deleted header file' problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr '
|
||||||
|
' ' ' >> $depfile
|
||||||
|
echo >> $depfile
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> $depfile
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. In older versions, this file always lives in the
|
||||||
|
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||||
|
# start of each line; $object doesn't have directory information.
|
||||||
|
# Version 6 uses the directory in both cases.
|
||||||
|
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then :
|
||||||
|
else
|
||||||
|
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
outname="$stripped.o"
|
||||||
|
# Each line is of the form `foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
# Intel's C compiler understands `-MD -MF file'. However on
|
||||||
|
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||||
|
# ICC 7.0 will fill foo.d with something like
|
||||||
|
# foo.o: sub/foo.c
|
||||||
|
# foo.o: sub/foo.h
|
||||||
|
# which is wrong. We want:
|
||||||
|
# sub/foo.o: sub/foo.c
|
||||||
|
# sub/foo.o: sub/foo.h
|
||||||
|
# sub/foo.c:
|
||||||
|
# sub/foo.h:
|
||||||
|
# ICC 7.1 will output
|
||||||
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
|
# and will wrap long lines using \ :
|
||||||
|
# foo.o: sub/foo.c ... \
|
||||||
|
# sub/foo.h ... \
|
||||||
|
# ...
|
||||||
|
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each line is of the form `foo.o: dependent.h',
|
||||||
|
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
# correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||||
|
sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp2)
|
||||||
|
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||||
|
# compilers, which have integrated preprocessors. The correct option
|
||||||
|
# to use with these is +Maked; it writes dependencies to a file named
|
||||||
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
|
# happens to be.
|
||||||
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
"$@" -Wc,+Maked
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
"$@" +Maked
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
|
# Add `dependent.h:' lines.
|
||||||
|
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
# With Tru64 cc, shared objects can also be used to make a
|
||||||
|
# static library. This mechanism is used in libtool 1.4 series to
|
||||||
|
# handle both shared and static libraries in a single compilation.
|
||||||
|
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||||
|
#
|
||||||
|
# With libtool 1.5 this exception was removed, and libtool now
|
||||||
|
# generates 2 separate objects for the 2 libraries. These two
|
||||||
|
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||||
|
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.o.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
tmpdepfile4=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
# That's a tab and a space in the [].
|
||||||
|
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
# Require at least two characters before searching for `:'
|
||||||
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
|
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||||
|
"$@" $dashmflag |
|
||||||
|
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# Remove any Libtool call
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
# Strip any option that makedepend may not understand. Remove
|
||||||
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-*|$object)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||||
|
' | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test $1 != '--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove `-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E |
|
||||||
|
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
"$@" || exit $?
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
|
echo " " >> "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- "$Id: README,v 1.5 2002/08/30 10:38:15 nighty Exp $"
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- 2001-10-04: nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
Main Help Section
|
||||||
|
|
||||||
|
|
||||||
|
README - This file
|
||||||
|
README.pgsql - How to setup pgsql for GNUworld
|
||||||
|
README.ccontrol - How to prepare things to use the 'ccontrol' module
|
||||||
|
README.cservice - How to prepare things to use the 'cservice' module
|
||||||
|
REAMDE.sharedmemory - How to tweak shared memory to run more pgsl threads
|
||||||
|
|
||||||
|
|
||||||
|
The GNUworld development team.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- "$Id: README.appjudge,v 1.5 2002/08/30 10:38:15 nighty Exp $"
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
-- 2001-10-16: nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
- copy cmaster/regproc/ and its subdirs to /usr/local/pgsql
|
||||||
|
|
||||||
|
- make it owned by your gnuworld user (the one running the postgres) :
|
||||||
|
chown -R gnuworld /usr/local/pgsql/regproc
|
||||||
|
|
||||||
|
- edit the file /usr/local/pgsql/regproc/appjudge-config and set your preferences.
|
||||||
|
|
||||||
|
- crontab the content of /usr/local/pgsql/regproc/cron-judge.in :
|
||||||
|
as root : crontab -u gnuworld /usr/local/pgsql/regproc/cron-judge.in
|
||||||
|
or, as gnuworld : crontab /usr/local/pgsql/regproc/cron-judge.in
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- you're done!
|
||||||
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
-- "$Id: README.ccontrol,v 1.10 2008/08/06 19:35:58 hidden1 Exp $"
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
-- 2001-10-04: nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Setting up ccontrol for the first time
|
||||||
|
---------------------------------------------------------------
|
||||||
|
|
||||||
|
Follow these steps to setup the database for the ccontrol module. This
|
||||||
|
file assumes that postgresql is running and configured, and that you have
|
||||||
|
access to add and modify databases within it.
|
||||||
|
|
||||||
|
Create the database
|
||||||
|
-------------------
|
||||||
|
> createdb ccontrol
|
||||||
|
|
||||||
|
Note that this assumes that the ccontrol database does not already exist.
|
||||||
|
|
||||||
|
Load the schema
|
||||||
|
---------------
|
||||||
|
Make sure you are in the gnuworld/doc directory.
|
||||||
|
|
||||||
|
> psql ccontrol < ccontrol.sql
|
||||||
|
> psql ccontrol < ccontrol.help.sql
|
||||||
|
> psql ccontrol < ccontrol.shells.sql
|
||||||
|
|
||||||
|
Add yourself
|
||||||
|
------------
|
||||||
|
|
||||||
|
After all this is done, you need to add yourself to the bot , to do that simply run
|
||||||
|
|
||||||
|
> psql ccontrol < ccontrol.addme.sql
|
||||||
|
|
||||||
|
Note: the script add the user Admin , with all commands enabled .
|
||||||
|
the host that will be added is *!*@* , you should change it
|
||||||
|
the first time that you login to the bot along with the pass
|
||||||
|
which is temPass , for more help /msg bot help modoper.
|
||||||
|
|
||||||
|
|
||||||
|
then you should
|
||||||
|
|
||||||
|
> psql ccontrol < ccontrol.commands.sql
|
||||||
|
|
||||||
|
|
||||||
|
If you have problems with an upgrade of GNUworld with ccontrol module on certain features,
|
||||||
|
you may want to upgrade your old tables to fit, then do the following :
|
||||||
|
|
||||||
|
> psql ccontrol < ccontrol.update.sql
|
||||||
|
|
||||||
|
|
||||||
|
NOTE: in the default GNUworld.conf use rather 'ccontrol.conf' as a default for CControl
|
||||||
|
than the 'gnuworld3.conf' file (it's not complete).
|
||||||
|
|
||||||
|
All Done
|
||||||
|
--------
|
||||||
|
That's it for the sql stuff. Be sure to edit the configuration file for
|
||||||
|
cmaster (../bin/ccontrol.conf), giving username, nickname, etc, and
|
||||||
|
database information.
|
||||||
|
|
||||||
|
The GNUworld development team.
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
-- "$Id: README.cservice,v 1.19 2005/09/30 00:48:43 kewlio Exp $"
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- 2001-10-04: nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
Follow these steps to setup the database for the cservice module. This
|
||||||
|
file assumes that postgresql is running and configured, and that you have
|
||||||
|
access to add and modify databases within it.
|
||||||
|
|
||||||
|
Create the database
|
||||||
|
-------------------
|
||||||
|
> createdb cservice
|
||||||
|
|
||||||
|
Note that this assumes that the cservice database does not already exist.
|
||||||
|
|
||||||
|
Install the pl language
|
||||||
|
-----------------------
|
||||||
|
The following command assumes (in addition to above conditions) that the
|
||||||
|
pgsql libraries are located in /usr/local/pgsql/lib:
|
||||||
|
|
||||||
|
> createlang -L /usr/local/pgsql/lib plpgsql cservice
|
||||||
|
|
||||||
|
Load the schema
|
||||||
|
---------------
|
||||||
|
Make sure you are in the gnuworld/doc directory.
|
||||||
|
|
||||||
|
> psql cservice < cservice.sql
|
||||||
|
> psql cservice < languages.sql
|
||||||
|
> psql cservice < language_table.sql
|
||||||
|
> psql cservice < cservice.help.sql
|
||||||
|
> psql cservice < cservice.web.sql
|
||||||
|
> psql cservice < cservice.config.sql
|
||||||
|
> psql cservice < greeting.sql
|
||||||
|
|
||||||
|
Create a local (for the www) Database called 'local_db' for webcookies
|
||||||
|
(without this local db the website will NOT work)
|
||||||
|
Tho you can also choose to name the 'cservice' db 'local_db' for a
|
||||||
|
strictly and whole local use of DB + webserver, and issue the
|
||||||
|
following to the same db and then forgot the other 'createdb' thing.
|
||||||
|
|
||||||
|
This database will also hosts the pending verif q/a reset requests.
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
> createdb local_db
|
||||||
|
> psql local_db < local_db.sql
|
||||||
|
|
||||||
|
|
||||||
|
Add administrator account
|
||||||
|
-------------------------
|
||||||
|
This command will add an account called 'Admin' with level 1000 access on
|
||||||
|
channel '*'...use this power wisely, The Dark Side is very powerful.
|
||||||
|
|
||||||
|
This will also register channel #coder-com to 'Admin' to make the VERIFY
|
||||||
|
command work on authenticated users.
|
||||||
|
|
||||||
|
> psql cservice < cservice.addme.sql
|
||||||
|
|
||||||
|
Using this account you will be able to login as Admin online with your
|
||||||
|
cservice bot.
|
||||||
|
|
||||||
|
Username: Admin
|
||||||
|
Password: temPass (be sure to change this after login online)
|
||||||
|
|
||||||
|
All Done
|
||||||
|
--------
|
||||||
|
That's it for the sql stuff. Be sure to edit the configuration file for
|
||||||
|
cmaster (../bin/cservice.conf), giving username, nickname, etc, and
|
||||||
|
database information.
|
||||||
|
For the website, be sure to edit website/php_includes/config.inc to configure your website.
|
||||||
|
|
||||||
|
The GNUWorld development team
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
Creating dronescan DB configuration
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
First, create the dronescan database in pgql:
|
||||||
|
|
||||||
|
/usr/local/pgsql/bin/createdb dronescan
|
||||||
|
|
||||||
|
Next, add the dronescan user:
|
||||||
|
|
||||||
|
/usr/local/pgsql/bin/createuser dronescan
|
||||||
|
|
||||||
|
Just answer yes to all questions.
|
||||||
|
|
||||||
|
Finally, add the .sql file:
|
||||||
|
|
||||||
|
/usr/local/pgsql/bin/psql dronescan < dronescan.sql
|
||||||
|
|
||||||
|
This will create the database called dronescan, and db user dronescan,
|
||||||
|
with default (empty) password.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
-- "$Id: README.pgsql,v 1.10 2002/08/30 10:38:15 nighty Exp $"
|
||||||
|
--
|
||||||
|
-- Building PostgreSQL for GNUworld
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
--
|
||||||
|
-- 2001-10-14 : nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
in order to build postgres you need :
|
||||||
|
- a recent version of gmake (GNU make 3.79 ftp://gnu.wwc.edu/make/make-3.79.tar.gz)
|
||||||
|
- a recent version of TCL (TCL 8+ http://dev.scriptics.com/ftp/tcl/tcl8_3/tcl8.3.3.tar.gz)
|
||||||
|
NOTE: for FreeBSD users *only* :
|
||||||
|
|
||||||
|
root:# cd /usr/ports/lang/tcl83
|
||||||
|
root:# make
|
||||||
|
|
||||||
|
it will auto-download it.
|
||||||
|
|
||||||
|
root:# make install
|
||||||
|
|
||||||
|
- unpack the postgresql tarball (latest is version 7.1.3 : ftp://ftp.us.postgresql.org/v7.1.3/postgresql-7.1.3.tar.gz) :
|
||||||
|
tar -xzvf postgresql-7.1.3.tar.gz
|
||||||
|
- 'cd' to the directory :
|
||||||
|
cd postgresql-7.1.3/
|
||||||
|
- use the following configure options :
|
||||||
|
|
||||||
|
|
||||||
|
--with-CXX : needed for several things like GNUworld or PHP to have pgsql support.
|
||||||
|
--with-tcl --without-tk : needed to compile pgtclsh (TCL interpreter)
|
||||||
|
which is needed for the script gnuworld/doc/cmaster/regproc/appjudge
|
||||||
|
and this script is the one making the applications advance in registration process.
|
||||||
|
To install this properly, see the included README.appjudge file.
|
||||||
|
|
||||||
|
- build pgsql
|
||||||
|
root:# ./configure --with-CXX --with-tcl --without-tk
|
||||||
|
root:# gmake
|
||||||
|
root:# gmake install
|
||||||
|
|
||||||
|
- add the pgsl library directories to the lib PATH, this varies from system to another
|
||||||
|
(if you don't do this, GNUworld wille *NOT* be able to compile)
|
||||||
|
|
||||||
|
on Linux type OS's you will need to edit :
|
||||||
|
/etc/ld.so.conf
|
||||||
|
and add the line :
|
||||||
|
/usr/local/pgsql/lib
|
||||||
|
|
||||||
|
save, then run 'ldconfig'.
|
||||||
|
|
||||||
|
on FreeBSD or other systems you may need to set the LD_LIBRARY_PATH environment variable
|
||||||
|
you can add the line :
|
||||||
|
|
||||||
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
|
||||||
|
|
||||||
|
into /etc/profile for bash.
|
||||||
|
|
||||||
|
zsh, sh and ksh use 'export' too in their respective .shrc .zshrc .kshrc ~ files.
|
||||||
|
|
||||||
|
for csh and tcsh you will need to use 'setenv' instead :
|
||||||
|
|
||||||
|
setenv LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
|
||||||
|
|
||||||
|
|
||||||
|
- create a data directory for PGSL :
|
||||||
|
root:# mkdir /usr/local/pgsql/data
|
||||||
|
|
||||||
|
change its permissions to the gnuworld user (the one that run postgres) :
|
||||||
|
root:# chown gnuworld /usr/local/pgsql/data
|
||||||
|
|
||||||
|
- do the final process to set the database UP :
|
||||||
|
root:# su - gnuworld
|
||||||
|
gnuworld:$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
|
||||||
|
start postgresql with default values :
|
||||||
|
gnuworld:$ /usr/local/pgsql/bin/postmaster -S -B 64 -N 32 -i -D /usr/local/pgsql/data -o -F
|
||||||
|
|
||||||
|
NOTE: this will only allow 32 threads simultaneously .. this should be large enough for small networks
|
||||||
|
if you want to increase this .. please view the 'README.sharedmemory' in this directory.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
now go look README.ccontrol and README.cservice ;)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
-- "$Id: README.sharedmemory,v 1.6 2002/08/30 10:38:15 nighty Exp $"
|
||||||
|
--
|
||||||
|
-- For more detailed information about setting up GNUworld, visit :
|
||||||
|
-- http://coder-com.undernet.org/gnuworld-setup/
|
||||||
|
--
|
||||||
|
-- Manipulating shared memory
|
||||||
|
--
|
||||||
|
-- 2001-12-25: nighty <nighty@undernet.org>: fixed example
|
||||||
|
-- 2001-10-04: nighty <nighty@undernet.org>
|
||||||
|
--
|
||||||
|
|
||||||
|
|
||||||
|
PostgreSQL runs 32 maximum threads by default
|
||||||
|
if you want to increase this (-N parameter) you will need
|
||||||
|
to increase the -B paramter as well (buffers)
|
||||||
|
|
||||||
|
and '-B' must be at least twice '-N' but you will prefer
|
||||||
|
set -B bigger on more important networks.
|
||||||
|
|
||||||
|
for example :
|
||||||
|
|
||||||
|
/usr/local/pgsql/bin/postmaster -S -B 1024 -N 200 -i -D /usr/local/pgsql/data -o -F
|
||||||
|
|
||||||
|
for 200 threads,
|
||||||
|
you would need to tweak max # of shared memory segments etc...
|
||||||
|
|
||||||
|
|
||||||
|
we will explain two cases, /proc/* compatible linux, and FreeBSD kernel options.
|
||||||
|
|
||||||
|
1) The '/proc/*' Linux case
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
add the following to /etc/rc.d/rc.local (or equivalent) :
|
||||||
|
|
||||||
|
echo -n 100000000 > /proc/sys/kernel/shmmax
|
||||||
|
echo -n 100000000 > /proc/sys/kernel/shmall
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
You may also issue them directly on the shell as root to avoid rebooting,
|
||||||
|
it will be in the startup file in case reboot happen.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2) The FreeBSD kernel tweaking case
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
You need your kernel sources installed.
|
||||||
|
do all the following as root :
|
||||||
|
|
||||||
|
|
||||||
|
# cd /usr/src/sys/i386/conf
|
||||||
|
|
||||||
|
if you don't have a config already here, do this :
|
||||||
|
# cp GENERIC YOURCONF
|
||||||
|
|
||||||
|
then...
|
||||||
|
|
||||||
|
# vi YOURCONF
|
||||||
|
|
||||||
|
set 'maxusers' to 512.
|
||||||
|
|
||||||
|
and add the following lines :
|
||||||
|
|
||||||
|
options SYSVSHM
|
||||||
|
options SYSVMSG
|
||||||
|
options SYSVSEM
|
||||||
|
|
||||||
|
options SHMMAXPGS=100000000
|
||||||
|
options SHMMAX=100000000
|
||||||
|
options SHMALL=100000000
|
||||||
|
options SHMMNI=8192
|
||||||
|
options SHMMIN=1
|
||||||
|
options SHMSEG=512
|
||||||
|
|
||||||
|
options SEMMNI=32
|
||||||
|
options SEMMNS=2048
|
||||||
|
options SEMMNU=30
|
||||||
|
options SEMMAP=30
|
||||||
|
options SEMMSL=512
|
||||||
|
|
||||||
|
configure your new kernel :
|
||||||
|
|
||||||
|
# /usr/sbin/config YOURCONF
|
||||||
|
|
||||||
|
build it.
|
||||||
|
|
||||||
|
# cd ../../compile/YOURCONF
|
||||||
|
# make depend
|
||||||
|
# make
|
||||||
|
# make install
|
||||||
|
|
||||||
|
then reboot the machine
|
||||||
|
|
||||||
|
# reboot
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
--
|
||||||
|
-- $Id: autokill.sql,v 1.17 2008/04/18 11:33:26 danielaustin Exp $
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Starting the process...
|
||||||
|
\qecho [*] Starting autokill.sql..
|
||||||
|
BEGIN WORK;
|
||||||
|
--
|
||||||
|
-- Clean up the temporary table from last time.
|
||||||
|
DROP TABLE IF EXISTS to_die;
|
||||||
|
-- Select all user_id's idle > 60 days into a temp table.
|
||||||
|
--
|
||||||
|
\qecho [*] Fetching list of idle user accounts:
|
||||||
|
SELECT users_lastseen.user_id,users_lastseen.last_seen,users.user_name INTO TABLE to_die FROM users_lastseen,users WHERE (users_lastseen.last_seen <= extract(epoch from now() - interval '60 days')::integer) AND users.id=users_lastseen.user_id;
|
||||||
|
-- Remove any who currently have a pending application (Shouldn't happen <g>)
|
||||||
|
\qecho [*] Moving those with old channel applications to user "AutoPurged".
|
||||||
|
UPDATE pending SET manager_id = (SELECT id FROM users WHERE lower(user_name) = 'AutoPurged') WHERE pending.manager_id IN (select user_id from to_die);
|
||||||
|
\qecho [*] Not deleting those users who have the NoPurge flag.
|
||||||
|
DELETE FROM to_die WHERE user_id IN (SELECT id FROM users WHERE (flags::int4 & 32) = 32);
|
||||||
|
-- Output who are are going to kill, log stdout.
|
||||||
|
\qecho [*] Listing Final Accounts to be removed:
|
||||||
|
SELECT users.user_name,to_die.last_seen FROM users,to_die WHERE users.id IN (SELECT user_id);
|
||||||
|
--
|
||||||
|
-- Clean up userlogs.
|
||||||
|
\qecho [*] Removing userlogs..
|
||||||
|
DELETE FROM userlog WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up level records.
|
||||||
|
\qecho [*] Removing access levels..
|
||||||
|
DELETE FROM levels WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up FRAUD USERNAMES.
|
||||||
|
\qecho [*] Removing FRAUD USERNAME records..
|
||||||
|
DELETE FROM noreg WHERE type=4 AND user_name IN (SELECT user_name FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up supporter records.
|
||||||
|
\qecho [*] Removing supporter records..
|
||||||
|
DELETE FROM supporters WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up objection records.
|
||||||
|
\qecho [*] Removing Objection records..
|
||||||
|
DELETE FROM objections WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
-- Clean up mailq records.
|
||||||
|
--\qecho [*] Removing mailq records..
|
||||||
|
--DELETE FROM mailq WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up notes records.
|
||||||
|
\qecho [*] Removing notes received and/or sent..
|
||||||
|
DELETE FROM notes WHERE user_id IN (SELECT user_id FROM to_die) OR from_user_id IN (SELECt user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up webaccessteam records..
|
||||||
|
--\qecho [*] Removing webaccessteam records..
|
||||||
|
--DELETE FROM webaccessteam where admin_id IN (SELECT admin_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up fraud_lists records..
|
||||||
|
\qecho [*] Removing fraud_list_data..
|
||||||
|
DELETE FROM fraud_list_data WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up last_seens.
|
||||||
|
\qecho [*] Removing last_seens..
|
||||||
|
DELETE FROM users_lastseen WHERE user_id IN (SELECT user_id FROM to_die);
|
||||||
|
--
|
||||||
|
-- Clean up users (Finally!).
|
||||||
|
\qecho [*] Removing user accounts..
|
||||||
|
DELETE FROM users WHERE user_name IN (SELECT user_name FROM to_die);
|
||||||
|
--
|
||||||
|
-- Commit all the work (if this line is not executed, you can "undo" the done stuff using 'ROLLBACK WORK;'
|
||||||
|
\qecho [*] Comitting changes to database..
|
||||||
|
COMMIT WORK;
|
||||||
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- "$Id: ccontrol.addme.sql,v 1.6 2002/08/30 10:15:12 nighty Exp $"
|
||||||
|
-- 2001-03-29 : |MrBean|
|
||||||
|
-- This script will add the first user to ccontrol
|
||||||
|
-- it will create a user with a coder access by the handle of Admin
|
||||||
|
-- with pass : temPass
|
||||||
|
-- the host that will be added is *!*@* , this is a security risk, and should be changed along with the password
|
||||||
|
-- Note: this script should be run only once , and when the database got no other opers
|
||||||
|
|
||||||
|
INSERT INTO OPERS (user_name,password,access,saccess,last_updated,isCODER) VALUES ('Admin','07d976a29bdb3ff42e19c102852151b28097bbad',2147483647,2147483647,extract(epoch FROM now())::int,'t');
|
||||||
|
INSERT INTO HOSTS (user_id,host) VALUES (1,'*!*@*');
|
||||||
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
-- "$Id: ccontrol.commands.sql,v 1.8 2002/08/30 10:15:12 nighty Exp $"
|
||||||
|
|
||||||
|
-- Fills the commands table with the default values
|
||||||
|
-- Note: DO NOT EDIT THIS FILE BY HAND!
|
||||||
|
-- THESE ARE JUST DEFAULT VALUES
|
||||||
|
-- USE THE COMMANDS COMMAND TO CHANGE THEM
|
||||||
|
|
||||||
|
-- Last Updated : 26/07/01 |MrBean|
|
||||||
|
|
||||||
|
Delete from commands;
|
||||||
|
COPY "commands" FROM stdin;
|
||||||
|
ACCESS ACCESS 1 n n t 1 n
|
||||||
|
HELP HELP 2 n n t 1 n
|
||||||
|
LOGIN LOGIN 0 n t t 1 n
|
||||||
|
DEAUTH DEAUTH 4 n n t 1 n
|
||||||
|
NEWPASS NEWPASS 8 n n t 1 n
|
||||||
|
MODE MODE 16 n n n 1 n
|
||||||
|
OP OP 32 n n n 1 n
|
||||||
|
DEOP DEOP 64 n n n 1 n
|
||||||
|
MODERATE MODERATE 128 n n n 1 n
|
||||||
|
UNMODERATE UNMODERATE 256 n n n 1 n
|
||||||
|
INVITE INVITE 512 n n n 1 n
|
||||||
|
JUPE JUPE 1024 n n n 1 n
|
||||||
|
GLINE GLINE 2048 n n n 1 n
|
||||||
|
REMGLINE REMGLINE 4096 n n n 1 n
|
||||||
|
SCANGLINE SCANGLINE 8192 n n n 1 n
|
||||||
|
REMOPERCHAN REMOPERCHAN 16384 n n n 1 n
|
||||||
|
ADDOPERCHAN ADDOPERCHAN 32768 n n n 1 n
|
||||||
|
LISTOPERCHANS LISTOPERCHANS 65536 n n n 1 n
|
||||||
|
CHANINFO CHANINFO 131072 n n n 1 n
|
||||||
|
WHOIS WHOIS 262144 n n n 1 n
|
||||||
|
ADDUSER ADDUSER 524288 n n n 1 n
|
||||||
|
REMUSER REMUSER 1048576 n n n 1 n
|
||||||
|
MODUSER MODUSER 2097152 n n n 1 n
|
||||||
|
TRANSLATE TRANSLATE 4194304 n n n 1 n
|
||||||
|
KICK KICK 8388608 n n n 1 n
|
||||||
|
ADDCOMMAND ADDCOMMAND 16777216 n n n 1 n
|
||||||
|
REMCOMMAND REMCOMMAND 33554432 n n n 1 n
|
||||||
|
SUSPEND SUSPEND 67108864 n n n 1 n
|
||||||
|
UNSUSPEND UNSUSPEND 134217728 n n n 1 n
|
||||||
|
CLEARCHAN CLEARCHAN 268435456 n n n 1 n
|
||||||
|
LISTHOSTS LISTHOSTS 536870912 n n n 1 n
|
||||||
|
ADDSERVER ADDSERVER 1073741824 n n n 1 n
|
||||||
|
LEARNNET LEARNNET 1 n n n 1 t
|
||||||
|
REMSERVER REMSERVER 2 n n n 1 t
|
||||||
|
CHECKNET CHECKNET 4 n n n 1 t
|
||||||
|
LASTCOM LASTCOM 8 n n n 1 t
|
||||||
|
FORCEGLINE FORCEGLINE 16 n n n 1 t
|
||||||
|
EXCEPTIONS EXCEPTIONS 32 n n n 1 t
|
||||||
|
LISTIGNORES LISTIGNORES 64 n n n 1 t
|
||||||
|
REMIGNORE REMIGNORE 128 n n n 1 t
|
||||||
|
LIST LIST 256 n n n 1 t
|
||||||
|
COMMANDS COMMANDS 512 n n n 1 t
|
||||||
|
GCHAN GCHAN 1024 n n n 1 t
|
||||||
|
REMGCHAN REMGCHAN 2048 n n n 1 t
|
||||||
|
\.
|
||||||
|
|
@ -0,0 +1,334 @@
|
||||||
|
-- 2001-03-02 |MrBean| "$Id: ccontrol.help.sql,v 1.20 2009/07/25 18:12:33 hidden1 Exp $"
|
||||||
|
-- Created the file and added all help topics to the database
|
||||||
|
|
||||||
|
-- 2201-03-11 |MrBean|
|
||||||
|
-- Added OP,DEOP,MODERATE,UNMODERATE,CLEARCHAN
|
||||||
|
-- Now the script first deletes previous help , and then reinsert all of the topics
|
||||||
|
|
||||||
|
-- Changed some commands. Also usage replaced with Syntax in the commands it was missing FWAP
|
||||||
|
|
||||||
|
-- Restructure help into alphabetical order, remove obselete commands, add new commands
|
||||||
|
|
||||||
|
-- Delete the current help entries
|
||||||
|
|
||||||
|
DELETE FROM help;
|
||||||
|
COPY "help" FROM stdin;
|
||||||
|
ADDCOMMAND 1 ****** ADDCOMMAND COMMAND ******
|
||||||
|
ADDCOMMAND 2 Gives permission to an oper to use a specified command
|
||||||
|
ADDCOMMAND 3 Syntax: /msg $BOT$ addcommand [-fr] <oper> <command>
|
||||||
|
ADDCOMMAND 4 -fr can only be specified by SMT+ to force addition
|
||||||
|
ADDCOMMAND 5 <oper> - the oper username you want to give the command to
|
||||||
|
ADDCOMMAND 6 <command> - the command you want to add
|
||||||
|
ADDCOMMAND 7 CODERS only: you can use /msg $BOT$ addcommand [-fr] <-allopers|-alladmins|-allsmts|-allcoders> <command>
|
||||||
|
ADDSERVER 1 ****** ADDSERVER COMMAND ******
|
||||||
|
ADDSERVER 2 Adds a new server to the bot database
|
||||||
|
ADDSERVER 3 Syntax: /msg $BOT$ addserver <server>
|
||||||
|
ADDSERVER 4 *note* The server has to be linked in order for this command to work
|
||||||
|
ADDUSER 1 ****** ADDUSER COMMAND ******
|
||||||
|
ADDUSER 2 Adds new oper to the bot access list
|
||||||
|
ADDUSER 3 Syntax: /msg $BOT$ adduser <username> <oper level> [server] <password>
|
||||||
|
ADDUSER 4 <username> - The username the bot will recognize the oper under
|
||||||
|
ADDUSER 5 <oper level> - Sets the initial oper commands, options are: oper, admin, smt, coder
|
||||||
|
ADDUSER 6 [server] - add the oper to the specified server, defaults to your home server
|
||||||
|
ADDUSER 7 <password> - the password of the new oper
|
||||||
|
ADDOPERCHAN 1 ****** ADDOPERCHAN COMMAND ******
|
||||||
|
ADDOPERCHAN 2 Marks a channel as ircoperators only
|
||||||
|
ADDOPERCHAN 3 Syntax: /msg $BOT$ addoperchan <channel>
|
||||||
|
ADDOPERCHAN 4 thous making the bot kick and ban everyone who is not an ircop
|
||||||
|
CHANINFO 1 ****** CHANINFO COMMAND ******
|
||||||
|
CHANINFO 2 Gives you all sort of information about a channel
|
||||||
|
CHANINFO 3 Syntax: /msg $BOT$ chaninfo <#channel>
|
||||||
|
CHANINFO 4 <#channel> - the channel you would like information about
|
||||||
|
CHECKNET 1 ****** CHECKNET COMMAND ******
|
||||||
|
CHECKNET 2 Lists all current missing servers
|
||||||
|
CHECKNET 3 Syntax: /msg $BOT$ checknet
|
||||||
|
CLEARCHAN 1 ****** CLEARCHAN COMMAND ******
|
||||||
|
CLEARCHAN 2 Clears a channel's modes
|
||||||
|
CLEARCHAN 3 Syntax: /msg $BOT$ clearchan <#channel> [mode string]
|
||||||
|
CLEARCHAN 4 <#channel> - the channel to clear modes in
|
||||||
|
CLEARCHAN 5 [mode string] - can be ALL (for all channel modes) or any combination of ilpskmntDob
|
||||||
|
CLEARCHAN 6 o = remove all channel ops
|
||||||
|
CLEARCHAN 7 b = remove all bans
|
||||||
|
CLEARCHAN 8 *NOTE* - if you dont specify a mode string the bot will remove modes obikl
|
||||||
|
COMMANDS 1 ****** COMMANDS COMMAND ******
|
||||||
|
COMMANDS 2 Changes a command's options
|
||||||
|
COMMANDS 3 Syntax: /msg $BOT$ commands <-ds|-en|-no|-nl|-na|-ml> <command> <option>
|
||||||
|
COMMANDS 4 -ds - disable the command
|
||||||
|
COMMANDS 5 -en - enable the command
|
||||||
|
COMMANDS 6 -no - toggles the need to be oper'd up to use the command
|
||||||
|
COMMANDS 7 -nl - toggles if the command should not be logged in the lastcom report
|
||||||
|
COMMANDS 8 -na - changes the name of the command
|
||||||
|
COMMANDS 9 -ml - set the minimum level a oper must have for this command to be added to
|
||||||
|
CONFIG 1 ****** CONFIG COMMAND ******
|
||||||
|
CONFIG 2 Sets internal configuration options within the bot
|
||||||
|
CONFIG 3 Syntax: /msg $BOT$ config <option> <value>
|
||||||
|
CONFIG 4 <option> may be:
|
||||||
|
CONFIG 5 -GTime <duration> - default gline time (accepts friendly times e.g. 900s, 30m, 3h, 1d)
|
||||||
|
CONFIG 6 -VClones <amount> - threshold for warning about virtual (realname) clones
|
||||||
|
CONFIG 7 -Clones <amount> - threshold for clones on a single IP
|
||||||
|
CONFIG 8 -CClones <amount> - threshold for CIDR clones (see below)
|
||||||
|
CONFIG 9 -CClonesCIDR <size> - CIDR bit length for clones (0-32)
|
||||||
|
CONFIG 10 -CClonesGline <Yes|No> - auto-gline for CIDR clones flag
|
||||||
|
CONFIG 11 -CClonesGTime <duration> - gline duration for CIDR clones (accepts friendly times)
|
||||||
|
CONFIG 12 -IClones <amount> - threshold for CIDR ident clones
|
||||||
|
CONFIG 13 -IClonesGline <Yes|No> - auto-gline for CIDR ident clones flag
|
||||||
|
CONFIG 14 -CClonesTime <duration> - time between clone warnings to msglog (accepts friendly times)
|
||||||
|
CONFIG 15 -GBCount <count> - number of glines to set at once
|
||||||
|
CONFIG 16 -GBInterval <duration> - time between setting gline bursts (accepts friendly times)
|
||||||
|
CONFIG 17 -SGline <Yes|No> - Save glines flag
|
||||||
|
DEAUTH 1 ****** DEAUTH COMMAND ******
|
||||||
|
DEAUTH 2 Deauthenticates you from the bot
|
||||||
|
DEAUTH 3 Syntax: /msg $BOT$ deauth
|
||||||
|
DEOP 1 ****** DEOP COMMAND ******
|
||||||
|
DEOP 2 Deops one or more users on a specific channel
|
||||||
|
DEOP 3 Syntax: /msg $BOT$ deop <#chan> <nick1> [nick2 nick3...]
|
||||||
|
DEOP 4 <#chan> - the channel to deop the users on
|
||||||
|
DEOP 5 <nick1, nick2..> - nicks to deop
|
||||||
|
EXCEPTIONS 1 ****** EXCEPTIONS COMMAND ******
|
||||||
|
EXCEPTIONS 2 Excepts users from the various glines/warnings within CONFIG
|
||||||
|
EXCEPTIONS 3 Syntax: /msg $BOT$ exceptions <add|del|list> <host mask> <connections>
|
||||||
|
EXCEPTIONS 4 <host mask> - user@host mask to except
|
||||||
|
EXCEPTIONS 5 <connections> - number of connections allowed before gline/warning
|
||||||
|
FORCECHANGLINE 1 ****** FORCECHANGLINE COMMAND ******
|
||||||
|
FORCECHANGLINE 2 Glines all users on the given channel
|
||||||
|
FORCECHANGLINE 3 Syntax: /msg $BOT$ forcechangline [-u] <#channel> [duration] <reason>
|
||||||
|
FORCECHANGLINE 4 <#channel> - the channel name to gline
|
||||||
|
FORCECHANGLINE 5 [duration] - Duration of the gline, may have s,m,h,d for secs,mins,hours,days
|
||||||
|
FORCECHANGLINE 6 <reason> - reason for the gline
|
||||||
|
FORCECHANGLINE 7 [-u] - only glines the unidented clients found on the channel with ~*@IP glines
|
||||||
|
FORCECHANGLINE 8 This type of chan gline is limited for 24 hours and cannot be issued on channels with opers or channels which are marked as nomode channels
|
||||||
|
FORCEGLINE 1 ****** FORCEGLINE COMMAND ******
|
||||||
|
FORCEGLINE 2 Glines a host for a certain amount of time
|
||||||
|
FORCEGLINE 3 Syntax: /msg $BOT$ forcegline [-fu] <nick|user@host> <duration[s/m/h/d]> <reason>
|
||||||
|
FORCEGLINE 4 -fu flag can only be specified by SMT+ (used to force)
|
||||||
|
FORCEGLINE 5 <nick|user@host> - the nick or user@host to gline (user@host supports CIDR)
|
||||||
|
FORCEGLINE 6 <duration> - duration of the gline (supports s,m,h,d for secs,mins,hours,days)
|
||||||
|
FORCEGLINE 7 <reason> - the reason for the gline
|
||||||
|
FORCEGLINE 8 This type of gline is used to gline for more than 14 days and/or for a gline which affects more than 255 users.
|
||||||
|
GCHAN 1 ****** GCHAN COMMAND ******
|
||||||
|
GCHAN 2 Sets a bad channel gline on a channel
|
||||||
|
GCHAN 3 Syntax: /msg $BOT$ gchan <#channel> <duration|-per> <reason>
|
||||||
|
GCHAN 4 <#channel> - the channel to badchannel gline
|
||||||
|
GCHAN 5 <duration> - duration of the gline (-per for permanent)
|
||||||
|
GCHAN 6 <reason> - reason for the badchannel gline
|
||||||
|
GLINE 1 ****** GLINE COMMAND ******
|
||||||
|
GLINE 2 glines a certain host from the network
|
||||||
|
GLINE 3 Syntax: /msg $BOT$ gline <user@host> [duration] <reason>
|
||||||
|
GLINE 4 <user@host> - the host to gline (CIDR not supported)
|
||||||
|
GLINE 5 <duration> - the duration of the gline (supports s,m,h,d for secs,mins,hours,days)
|
||||||
|
GLINE 6 <reason> - the reason for the gline
|
||||||
|
HELP 1 ****** HELP COMMAND ******
|
||||||
|
HELP 2 Shows help on commands (like this one!)
|
||||||
|
HELP 3 Syntax: /msg $BOT$ help [command]
|
||||||
|
HELP 4 If command is empty, this command shows the commands you have access to.
|
||||||
|
INVITE 1 ****** INVITE COMMAND ******
|
||||||
|
INVITE 2 Makes the bot invite you to an invite only channel
|
||||||
|
INVITE 3 Syntax: /msg $BOT$ invite <#channel>
|
||||||
|
INVITE 4 <#channel> - the channel to invite you to
|
||||||
|
JUPE 1 ****** JUPE COMMAND ******
|
||||||
|
JUPE 2 Jupe a server (prevent it connecting to the network)
|
||||||
|
JUPE 3 Syntax: /msg $BOT$ jupe <servername> <reason>
|
||||||
|
JUPE 4 <servername> - the name of the server to jupe
|
||||||
|
JUPE 5 <reason> - reason for the jupe
|
||||||
|
KICK 1 ****** KICK COMMAND ******
|
||||||
|
KICK 2 Makes the bot kick a user from a channel
|
||||||
|
KICK 3 Syntax: /msg $BOT$ kick <#channel> <nick> <reason>
|
||||||
|
KICK 4 <#channel> - the channel to kick the user from
|
||||||
|
KICK 5 <nick> - the nick of the user you want to kick
|
||||||
|
KICK 6 <reason> - reason for the kick
|
||||||
|
LASTCOM 1 ****** LASTCOM COMMAND ******
|
||||||
|
LASTCOM 2 This command will paste all the last commands which where issued to the bot
|
||||||
|
LASTCOM 3 Syntax: /msg $BOT$ lastcom [numcommands] [from days ago - d]
|
||||||
|
LASTCOM 4 [numcommands] - The number of commands to show (default: 20)
|
||||||
|
LASTCOM 5 You can also specify the number of days ago
|
||||||
|
LASTCOMM 1 See /msg $BOT$ help lastcom
|
||||||
|
LEARNNET 1 ****** LEARNNET COMMAND ******
|
||||||
|
LEARNNET 2 Adds all the unknown servers which are currently connected to the network to the bot database
|
||||||
|
LEARNNET 3 Syntax: /msg $BOT$ learnnet
|
||||||
|
LIST 1 ****** LIST COMMAND ******
|
||||||
|
LIST 2 This command lists various internal lists
|
||||||
|
LIST 3 Syntax: /msg $BOT$ list <type>
|
||||||
|
LIST 4 <type> - glines, servers, badchannels, exceptions, channels, shells
|
||||||
|
LIST 5 (see /msg $BOT$ help list channels for more info on channels)
|
||||||
|
LIST CHANNELS 1 ****** LIST CHANNELS COMMAND ******
|
||||||
|
LIST CHANNELS 2 This command lists channels based on various criteria
|
||||||
|
LIST CHANNELS 3 Syntax: /msg $BOT$ list channels <type>
|
||||||
|
LIST CHANNELS 4 <type> may be:
|
||||||
|
LIST CHANNELS 5 key <key> - list all channels with the specified key (supports wildcards)
|
||||||
|
LIST CHANNELS 6 modes <modes> - list all channels with the modes, you may explicitly specify + or - modes
|
||||||
|
LIST CHANNELS 7 topic <topic> - list all channels with a topic matching the specified topic (supports wildcards)
|
||||||
|
LIST CHANNELS 8 topicby <nick!user@host> - list all channels with topics set by nick!user@host (supports wildcards)
|
||||||
|
LISTHOSTS 1 ****** LISTHOSTS COMMAND ******
|
||||||
|
LISTHOSTS 2 Lists all the hosts that an oper is allowed to login from
|
||||||
|
LISTHOSTS 3 Syntax: /msg $BOT$ listhosts <username>
|
||||||
|
LISTHOSTS 4 <username> - the username to lookup
|
||||||
|
LISTIGNORES 1 ****** LISTIGNORES COMMAND ******
|
||||||
|
LISTIGNORES 2 Shows the current ignore list of the bot
|
||||||
|
LISTIGNORES 3 Syntax: /msg $BOT$ listignores
|
||||||
|
LISTOPERCHANS 1 ****** LISTOPERCHANS COMMANDS ******
|
||||||
|
LISTOPERCHANS 2 Shows a list of the channels that are marked as ircops only
|
||||||
|
LISTOPERCHANS 3 Syntax: /msg $BOT$ listoperchans
|
||||||
|
LOGIN 1 ****** LOGIN COMMAND ******
|
||||||
|
LOGIN 2 Authenticates you with the bot
|
||||||
|
LOGIN 3 Syntax: /msg $BOT$ login <username> <password>
|
||||||
|
LOGIN 4 <handle> - your username on the bot
|
||||||
|
LOGIN 5 <password> - your password
|
||||||
|
LOGOUT 1 See /msg $BOT$ help deauth
|
||||||
|
MAXUSERS 1 ****** MAXUSERS COMMANDS ******
|
||||||
|
MAXUSERS 2 Shows the peak user level as seen by the bot
|
||||||
|
MAXUSERS 3 Syntax: /msg $BOT$ maxusers
|
||||||
|
MODE 1 ****** MODE COMMAND ******
|
||||||
|
MODE 2 Makes the bot change a channel's modes
|
||||||
|
MODE 3 Syntax: /msg $BOT$ mode <#channel> <mode string>
|
||||||
|
MODE 4 <#channel> - the channel to change the mode in
|
||||||
|
MODE 5 <mode string> - the string that contains the mode
|
||||||
|
MODERATE 1 ****** MODERATE COMMAND ******
|
||||||
|
MODERATE 2 Moderates a channel
|
||||||
|
MODERATE 3 Syntax: /msg $BOT$ moderate <#channel>
|
||||||
|
MODERATE 4 <#channel> - the channel to moderate
|
||||||
|
MODUSER 1 ****** MODUSER COMMAND ******
|
||||||
|
MODUSER 2 Modify an existing bot user
|
||||||
|
MODUSER 3 Syntax: /msg $BOT$ moduser <username> [-ah new host] [-dh host] [-s server] [-p password] [-gl on|off]
|
||||||
|
MODUSER 4 [-op on|off] [-ua] [-uf flags] [-e email] [-mt m|n]
|
||||||
|
MODUSER 5 <username> - username to modify
|
||||||
|
MODUSER 6 [-ah host] - adds a new host for the user
|
||||||
|
MODUSER 7 [-dh host] - removes a host for a user
|
||||||
|
MODUSER 8 [-s server] - associate the user with a server
|
||||||
|
MODUSER 9 [-p password] - changes the user's password
|
||||||
|
MODUSER 10 [-gl on|off] - toggles whether the logs will be messaged to the user
|
||||||
|
MODUSER 11 [-op on|off] - toggles if a user must be oper'd up to use the needop commands
|
||||||
|
MODUSER 12 [-ua] - resets the user access acording to his flags
|
||||||
|
MODUSER 13 [-uf flags] - updates the oper flags to new one (OPER|ADMIN|SMT|CODER)
|
||||||
|
MODUSER 14 [-e email] - updates the user's email
|
||||||
|
MODUSER 15 [-mt m|n] - change the way the bot communicates to the user (m=message,n=notice)
|
||||||
|
MODUSER 16 [-glag on|off] - toggles whether the server lag reports will be messaged to the user
|
||||||
|
NEWPASS 1 ****** NEWPASS COMMAND ******
|
||||||
|
NEWPASS 2 Changes your password for the bot
|
||||||
|
NEWPASS 3 Syntax: /msg $BOT$ newpass <newpass>
|
||||||
|
NOMODE 1 ****** NOMODE COMMAND ******
|
||||||
|
NOMODE 2 Managed the nomode list
|
||||||
|
NOMODE 3 Syntax: /msg $BOT$ nomode <#channel> <reason>
|
||||||
|
NOMODE 4 <#channel> - channel to ban modes from
|
||||||
|
NOMODE 5 <reason> - reason to give when someone tries
|
||||||
|
OP 1 ****** OP COMMAND ******
|
||||||
|
OP 2 Op users on a specific channel
|
||||||
|
OP 3 Syntax: /msg $BOT$ op <#channel> <nick1> [nick2 nickN...]
|
||||||
|
OP 4 <#channel> - channel to op the user(s) on
|
||||||
|
OP 5 <nick1 nick2...> - users to op
|
||||||
|
REMCOMMAND 1 ****** DELCOMMAND COMMAND ******
|
||||||
|
REMCOMMAND 2 Removes an oper's access to a certain command
|
||||||
|
REMCOMMAND 3 Syntax: /msg $BOT$ remcommand <command> <username>
|
||||||
|
REMCOMMAND 4 <command> - the command to remove access to
|
||||||
|
REMCOMMAND 5 <username> - the username of the oper you want to remove the command from
|
||||||
|
REMCOMMAND 6 CODERS only: you can use /msg $BOT$ remcommand <-allopers|-alladmins|-allsmts|-allcoders> <command>
|
||||||
|
REMGCHAN 1 ****** REMGCHAN COMMAND ******
|
||||||
|
REMGCHAN 2 Removes a gchan badchannel gline
|
||||||
|
REMGCHAN 3 Syntax: /msg $BOT$ remgchan <#channel>
|
||||||
|
REMGCHAN 4 <#channel> - channel to remove from badchannel gline list
|
||||||
|
REMGLINE 1 ****** REMGLINE COMMAND ******
|
||||||
|
REMGLINE 2 Removes a gline on a user@host
|
||||||
|
REMGLINE 3 Syntax: /msg $BOT$ remgline <user@host>
|
||||||
|
REMGLINE 4 <user@host> - the host to remove the gline for
|
||||||
|
REMIGNORE 1 ****** REMIGNORE COMMAND ******
|
||||||
|
REMIGNORE 2 Removes a host from the bot's ignore list
|
||||||
|
REMIGNORE 3 Syntax: /msg $BOT$ remignore <host>
|
||||||
|
REMIGNORE 4 <host> - the host to remove from the ignore list
|
||||||
|
REMOPERCHAN 1 ****** REMOPERCHAN COMMAND ******
|
||||||
|
REMOPERCHAN 2 Unmarks a channel as ircop only
|
||||||
|
REMOPERCHAN 3 Syntax: /msg $BOT$ remoperchan <#channel>
|
||||||
|
REMOPERCHAN 4 <#channel> - the channel you want to unmark as operchan
|
||||||
|
REMSERVER 1 ****** REMSERVER COMMAND ******
|
||||||
|
REMSERVER 2 Removes a server from the bot's database
|
||||||
|
REMSERVER 3 Syntax: /msg $BOT$ remserver <server name>
|
||||||
|
REMSERVER 4 NOTE: use with caution!
|
||||||
|
REMSGLINE 1 ****** REMSGLINE COMMAND ******
|
||||||
|
REMSGLINE 2 Removes an SGLINE from the network
|
||||||
|
REMSGLINE 3 Syntax: /msg $BOT$ remsgline <user@host>
|
||||||
|
REMSGLINE 4 <user@host> - the user@host to remove from the sgline list
|
||||||
|
REMUSER 1 ****** REMOVEOPER COMMAND ******
|
||||||
|
REMUSER 2 Removes an oper from the bot's access list
|
||||||
|
REMUSER 3 Syntax: /msg $BOT$ remuser <username>
|
||||||
|
REMUSER 4 <username> - username of the oper you want to remove
|
||||||
|
REOP 1 ****** REOP COMMAND ******
|
||||||
|
REOP 2 Removes all channel ops from a channel and ops the specified nick
|
||||||
|
REOP 3 Syntax: /msg $BOT$ reop <#channel> <nick>
|
||||||
|
REOP 4 <#channel> - channel to perform reop in
|
||||||
|
REOP 5 <nick> - nick to be opped once channel is deopped
|
||||||
|
SAY 1 ****** SAY COMMAND ******
|
||||||
|
SAY 2 Force the bot (or server) to talk in a channel or to a nick
|
||||||
|
SAY 3 Syntax: /msg $BOT$ say <-s|-b> <#channel|nick> <message>
|
||||||
|
SAY 4 <-s> - Message will originate from the server
|
||||||
|
SAY 5 <-b> - Message will originate from the bot ($BOT$)
|
||||||
|
SAY 6 <#channel|nick> - the channel or nick to receive the message
|
||||||
|
SAY 7 <message> - the message to send
|
||||||
|
SCAN 1 ****** SCAN COMMAND ******
|
||||||
|
SCAN 2 Scans the network for users matching the required criteria
|
||||||
|
SCAN 3 Syntax: /msg $BOT$ scan <-fh user@host | -h user@host> [-v] [-i]
|
||||||
|
SCAN 4 Syntax: /msg $BOT$ scan <-n realname> [-v] [-i]
|
||||||
|
SCAN 5 <-h user@host> - match user@host/host/IP mask (supports CIDR and wildcards)
|
||||||
|
SCAN 6 <-fh user@host> - match user@host (masked host only) (supports wildcards)
|
||||||
|
SCAN 7 <-n realname> - match the specified realname (supports wildcards)
|
||||||
|
SCAN 8 [-v] - display the first 15 matching users (rather than just a count)
|
||||||
|
SCAN 9 [-i] - perform an ident report (listing number of unique idents found within the match)
|
||||||
|
SCANGLINE 1 ****** SCANGLINE COMMAND ******
|
||||||
|
SCANGLINE 2 Scans the gline list for a gline matching a certain host
|
||||||
|
SCANGLINE 3 Syntax: /msg $BOT$ scangline <host mask>
|
||||||
|
SCANGLINE 4 <host mask> - the host mask to lookup
|
||||||
|
SCHANGLINE 1 ****** SCHANGLINE COMMAND ******
|
||||||
|
SCHANGLINE 2 Glines all users on the given channel
|
||||||
|
SCHANGLINE 3 Syntax: /msg $BOT$ schangline [-u] <#channel> [duration] <reason>
|
||||||
|
SCHANGLINE 4 <#channel> - the channel name to gline
|
||||||
|
SCHANGLINE 5 [duration] - Duration of the gline, may have s,m,h,d for secs,mins,hours,days
|
||||||
|
SCHANGLINE 6 <reason> - reason for the gline
|
||||||
|
SCHANGLINE 7 [-u] - only glines the unidented clients found on the channel with ~*@IP glines
|
||||||
|
SGLINE 1 ****** SGLINE COMMAND ******
|
||||||
|
SGLINE 2 gline a user@host with relaxed restrictions
|
||||||
|
SGLINE 3 Syntax: /msg $BOT$ sgline <user@host> [duration] <reason>
|
||||||
|
SGLINE 4 <user@host> - the user@host to gline from the network
|
||||||
|
SGLINE 5 [duration] - duration of the gline, supports s,m,h,d for secs,mins,hours,days
|
||||||
|
SGLINE 6 <reason> - reason for the gline
|
||||||
|
SHELLS 1 ****** SHELLS COMMAND ******
|
||||||
|
SHELLS 2 Add/remove/modify shells limits/exceptions
|
||||||
|
SHELLS 3 Syntax: /msg $BOT$ SHELLS <addcompany|addnetblock|delcompany|delnetblock|list|chlimit|chname|clearall> <Shell company|Netblock> <max connections>
|
||||||
|
SHELLS 4 <Shell company>: The name of the shell company
|
||||||
|
SHELLS 5 <Netblock>: CIDR netblock
|
||||||
|
SHELLS 6 <max connections>: The number of connections allowed before gline
|
||||||
|
SHUTDOWN 1 ****** SHUTDOWN COMMAND ******
|
||||||
|
SHUTDOWN 2 Shutdown the service and exit
|
||||||
|
SHUTDOWN 3 Syntax: /msg $BOT$ shutdown <reason>
|
||||||
|
SHUTDOWN 4 <reason> - the reason to use in the /squit message of the server
|
||||||
|
STATUS 1 ****** STATUS COMMAND ******
|
||||||
|
STATUS 2 Show all sorts of debug and status information about the bot and server
|
||||||
|
STATUS 3 Syntax: /msg $BOT$ status
|
||||||
|
SUSPEND 1 ****** SUSPEND COMMAND ******
|
||||||
|
SUSPEND 2 Suspends an oper from the bot for a certain amount of time
|
||||||
|
SUSPEND 3 Syntax: /msg $BOT$ suspend <username> <duration> [-l level] <reason>
|
||||||
|
SUSPEND 4 <username> - username to suspend
|
||||||
|
SUSPEND 5 <duration> - the duration of the suspend (supports s,m,h,d for secs,mins,hours,days)
|
||||||
|
SUSPEND 6 [-l level] - level at which the user is suspended (required minimum to unsuspend)
|
||||||
|
SUSPEND 7 <reason> - reason for suspension
|
||||||
|
TRANSLATE 1 ****** TRANSLATE COMMAND ******
|
||||||
|
TRANSLATE 2 Translates a numeric into a nick
|
||||||
|
TRANSLATE 3 Syntax: /msg $BOT$ translate <numeric>
|
||||||
|
TRANSLATE 4 <numeric> - the numeric you want to translate
|
||||||
|
UNJUPE 1 ****** UNJUPE COMMAND ******
|
||||||
|
UNJUPE 2 Removes a server jupe previously set by the jupe command
|
||||||
|
UNJUPE 3 Syntax: /msg $BOT$ unjupe <server>
|
||||||
|
UNJUPE 4 <server> - server name to unjupe
|
||||||
|
UNMODERATE 1 ****** UNMODERATE COMMAND ******
|
||||||
|
UNMODERATE 2 UnModerates a channel previously moderated with 'moderate'
|
||||||
|
UNMODERATE 3 Syntax: /msg $BOT$ unmoderate <#channel>
|
||||||
|
UNMODERATE 4 <#channel> - the channel to stop moderating
|
||||||
|
UNSUSPEND 1 ****** UNSUSPEND COMMAND ******
|
||||||
|
UNSUSPEND 2 UNSuspend an oper previously suspended
|
||||||
|
UNSUSPEND 3 Syntax: /msg $BOT$ unsuspend <username>
|
||||||
|
UNSUSPEND 4 <username> - username to unsuspend
|
||||||
|
USERINFO 1 ****** USERINFO COMMAND ******
|
||||||
|
USERINFO 2 Shows information about all the opers that their server/handle match the supplied mask
|
||||||
|
USERINFO 3 Syntax: /msg $BOT$ userinfo <server|username> [-cl]
|
||||||
|
USERINFO 4 <server|username> - the server or username to lookup (supports wildcards)
|
||||||
|
USERINFO 5 [-cl] - If this is specified, the command will also list all commands available to each user matched
|
||||||
|
WHOIS 1 ****** WHOIS COMMAND ******
|
||||||
|
WHOIS 2 Gives information about a user on the network
|
||||||
|
WHOIS 3 Syntax: /msg $BOT$ whois <nick>
|
||||||
|
WHOIS 4 <nick> - the person you want to get info about
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
CREATE TABLE ShellCompanies (
|
||||||
|
id SERIAL,
|
||||||
|
name VARCHAR(200) UNIQUE NOT NULL,
|
||||||
|
active int4 NOT NULL DEFAULT 1,
|
||||||
|
addedby VARCHAR(200) NOT NULL,
|
||||||
|
addedon int4 NOT NULL,
|
||||||
|
lastmodby VARCHAR(200) NOT NULL,
|
||||||
|
lastmodon int4 NOT NULL,
|
||||||
|
maxlimit int4 NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ShellNetblocks (
|
||||||
|
companyid int4 NOT NULL,
|
||||||
|
cidr VARCHAR(20) NOT NULL,
|
||||||
|
addedby VARCHAR(200) NOT NULL,
|
||||||
|
addedon int4 NOT NULL
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,164 @@
|
||||||
|
-- "$Id: ccontrol.sql,v 1.34 2009/07/25 18:12:33 hidden1 Exp $"
|
||||||
|
|
||||||
|
-- 2009-01-16 : Spike
|
||||||
|
-- Merged ShellCompanies and ShellNetblocks tables in.
|
||||||
|
|
||||||
|
-- 2002-25-02 : |MrBean|
|
||||||
|
-- Added the Misc table
|
||||||
|
|
||||||
|
-- 2001-10-14 : nighty
|
||||||
|
-- corrected fieldname typo in "suspendReason" -> "suspend_reason"
|
||||||
|
|
||||||
|
-- 2001-13-02 : |MrBean|
|
||||||
|
-- Added level patch for ccontrol module
|
||||||
|
|
||||||
|
-- 2001-22-02 : |MrBean|
|
||||||
|
-- Added help table for a new help system being developed
|
||||||
|
|
||||||
|
-- 2001-13-03 : |MrBean|
|
||||||
|
-- Added Glines table
|
||||||
|
|
||||||
|
-- 2001-30-04 : |MrBean|
|
||||||
|
-- Added servers table
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE opers (
|
||||||
|
user_id SERIAL,
|
||||||
|
user_name TEXT NOT NULL UNIQUE,
|
||||||
|
password VARCHAR (40) NOT NULL,
|
||||||
|
access INT4 NOT NULL DEFAULT '0',
|
||||||
|
saccess INT4 NOT NULL DEFAULT '0',
|
||||||
|
-- For a full list of access mask see CControlCommands.h
|
||||||
|
server VARCHAR (128) NOT NULL DEFAULT 'undernet.org', -- the server the oper is assosiated to
|
||||||
|
flags INT4 NOT NULL DEFAULT '0',
|
||||||
|
isSuspended BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
suspend_expires INT4,
|
||||||
|
suspend_level INT4,
|
||||||
|
suspended_by VARCHAR(128),
|
||||||
|
suspend_Reason VARCHAR(256),
|
||||||
|
isUHS BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
isOPER BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
isADMIN BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
isSMT BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
isCODER BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
getLOGS BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
GetLAG BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
needOP BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
email VARCHAR(128),
|
||||||
|
last_updated_by VARCHAR (128), -- nick!user@host
|
||||||
|
last_updated INT4 NOT NULL,
|
||||||
|
LastPassChangeTS INT4 NOT NULL DEFAULT '0',
|
||||||
|
notice BOOLEAN NOT NULL DEFAULT 't',
|
||||||
|
is_deleted BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
PRIMARY KEY( user_id )
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE hosts (
|
||||||
|
user_id INT4 NOT NULL,
|
||||||
|
host VARCHAR(128) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE help (
|
||||||
|
command VARCHAR(40) NOT NULL,
|
||||||
|
subcommand VARCHAR(40),
|
||||||
|
line INT4 NOT NULL DEFAULT '1',
|
||||||
|
help VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE glines (
|
||||||
|
Id SERIAL,
|
||||||
|
Host VARCHAR(128) UNIQUE NOT NULL,
|
||||||
|
AddedBy VARCHAR(128) NOT NULL,
|
||||||
|
AddedOn INT4 NOT NULL,
|
||||||
|
ExpiresAt INT4 NOT NULL,
|
||||||
|
LastUpdated INT4 NOT NULL DEFAULT date_part('epoch', CURRENT_TIMESTAMP)::int,
|
||||||
|
Reason VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE servers (
|
||||||
|
Name VARCHAR(100) NOT NULL,
|
||||||
|
LastUplink VARCHAR(100),
|
||||||
|
LastConnected INT4 NOT NULL DEFAULT '0',
|
||||||
|
SplitedOn INT4 NOT NULL DEFAULT '0',
|
||||||
|
LastNumeric VARCHAR(4),
|
||||||
|
SplitReason VARCHAR(512),
|
||||||
|
Version VARCHAR(256),
|
||||||
|
AddedOn INT4 NOT NULL,
|
||||||
|
LastUpdated INT4 NOT NULL,
|
||||||
|
ReportMissing BOOLEAN NOT NULL DEFAULT 't'
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE comlog (
|
||||||
|
ts INT4 NOT NULL,
|
||||||
|
oper text,
|
||||||
|
command VARCHAR(512)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE opernews (
|
||||||
|
MessageId SERIAL,
|
||||||
|
MessageFlags INT4 NOT NULL DEFAULT '0',
|
||||||
|
PostTime INT4 NOT NULL,
|
||||||
|
PostedBy VARCHAR(128) NOT NULL,
|
||||||
|
Message VARCHAR(512) NOT NULL,
|
||||||
|
ExpiresOn INT4
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE exceptions (
|
||||||
|
Host VARCHAR(128) NOT NULL,
|
||||||
|
Connections INT4 NOT NULL,
|
||||||
|
AddedBy VARCHAR(128) NOT NULL,
|
||||||
|
AddedOn INT4 NOT NULL DEFAULT date_part('epoch', CURRENT_TIMESTAMP)::int,
|
||||||
|
Reason VARCHAR(450)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE commands (
|
||||||
|
RealName VARCHAR(128) NOT NULL UNIQUE,
|
||||||
|
Name VARCHAR(128) NOT NULL UNIQUE,
|
||||||
|
Flags INT4 NOT NULL,
|
||||||
|
IsDisabled BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
NeedOp BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
NoLog BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
MinLevel INT4 NOT NULL DEFAULT '1',
|
||||||
|
SAccess BOOLEAN NOT NULL DEFAULT 'n'
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE notes (
|
||||||
|
user_id INT4 NOT NULL REFERENCES opers (user_id),
|
||||||
|
sentby TEXT NOT NULL,
|
||||||
|
postedOn INT4 NOT NULL,
|
||||||
|
IsNew BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
note VARCHAR (512)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Misc (
|
||||||
|
VarName VARCHAR(30) NOT NULL,
|
||||||
|
Value1 INT4,
|
||||||
|
Value2 INT4,
|
||||||
|
Value3 INT4,
|
||||||
|
Value4 VARCHAR(40),
|
||||||
|
Value5 VARCHAR(128)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE BadChannels (
|
||||||
|
Name VARCHAR(400) NOT NULL,
|
||||||
|
Reason VARCHAR(512) NOT NULL,
|
||||||
|
AddedBy VARCHAR(200) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ShellCompanies (
|
||||||
|
id SERIAL,
|
||||||
|
name VARCHAR(200) UNIQUE NOT NULL,
|
||||||
|
active int4 NOT NULL DEFAULT 1,
|
||||||
|
addedby VARCHAR(200) NOT NULL,
|
||||||
|
addedon int4 NOT NULL,
|
||||||
|
lastmodby VARCHAR(200) NOT NULL,
|
||||||
|
lastmodon int4 NOT NULL,
|
||||||
|
maxlimit int4 NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE ShellNetblocks (
|
||||||
|
companyid int4 NOT NULL,
|
||||||
|
cidr VARCHAR(20) NOT NULL,
|
||||||
|
addedby VARCHAR(200) NOT NULL,
|
||||||
|
addedon int4 NOT NULL
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
|
||||||
|
-- "$Id: ccontrol.update.sql,v 1.28 2009/07/25 18:12:33 hidden1 Exp $"
|
||||||
|
|
||||||
|
-- ccontrol database changes update
|
||||||
|
-- this file will add the new features to an old database
|
||||||
|
|
||||||
|
-- this script will only update the opers who doesnt have getlogs enabled
|
||||||
|
-- because of misfunctionality of postgresql
|
||||||
|
|
||||||
|
-- Add missing columns
|
||||||
|
-- ALTER TABLE opers ADD isSuspended BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD suspend_Reason VARCHAR(256);
|
||||||
|
-- ALTER TABLE opers ADD email VARCHAR(128);
|
||||||
|
-- ALTER TABLE opers ADD isUHS BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD isOPER BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD isADMIN BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD isSMT BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD isCODER BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD getLOGS BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD needOP BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
-- ALTER TABLE opers ADD saccess INT4 NOT NULL DEFAULT '0';
|
||||||
|
|
||||||
|
-- Update all the other opers to the new settings
|
||||||
|
|
||||||
|
-- UPDATE opers set isOPER = 't' where flags = 2;
|
||||||
|
-- UPDATE opers set isADMIN = 't' where flags = 4;
|
||||||
|
-- UPDATE opers set isSMT = 't' where flags = 8;
|
||||||
|
-- UPDATE opers set isCODER = 't' where flags = 32;
|
||||||
|
|
||||||
|
-- Create the commands table
|
||||||
|
|
||||||
|
-- CREATE TABLE commands (
|
||||||
|
-- RealName VARCHAR(128) NOT NULL UNIQUE,
|
||||||
|
-- Name VARCHAR(128) NOT NULL UNIQUE,
|
||||||
|
-- Flags INT4 NOT NULL,
|
||||||
|
-- IsDisabled BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
-- NeedOp BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
-- NoLog BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
-- MinLevel INT4 NOT NULL DEFAULT '1'
|
||||||
|
-- SAccess BOOLEAN NOT NULL DEFAULT 'n'
|
||||||
|
-- );
|
||||||
|
|
||||||
|
-- For those who already have the commands table
|
||||||
|
--ALTER TABLE commands add SAccess BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
|
||||||
|
-- Add the notes table
|
||||||
|
--CREATE TABLE notes (
|
||||||
|
-- user_id INT4 NOT NULL REFERENCES opers (user_id),
|
||||||
|
-- sentby TEXT NOT NULL,
|
||||||
|
-- postedOn INT4 NOT NULL,
|
||||||
|
-- IsNew BOOLEAN NOT NULL DEFAULT 'n',
|
||||||
|
-- note VARCHAR (512)
|
||||||
|
-- );
|
||||||
|
|
||||||
|
-- ALTER TABLE opers add suspend_level INT4 NOT NULL DEFAULT '0';
|
||||||
|
-- ALTER TABLE opers rename suspendreason to suspend_Reason;
|
||||||
|
-- ALTER TABLE servers add SplitReason VARCHAR(512);
|
||||||
|
|
||||||
|
-- 28/12/01 - Add some missing feilds to the servers table
|
||||||
|
|
||||||
|
-- alter TABLE servers add Version VARCHAR(256);
|
||||||
|
-- alter TABLE servers add AddedOn INT4 NOT NULL;
|
||||||
|
-- alter TABLE servers add LastUpdated INT4 NOT NULL;
|
||||||
|
|
||||||
|
-- 30/12/01 - Add notice column to the opers table
|
||||||
|
|
||||||
|
-- alter TABLE opers add Notice BOOLEAN NOT NULL DEFAULT 't';
|
||||||
|
-- update opers set notice = 't';
|
||||||
|
|
||||||
|
-- 02/01/02 - update all opers so that they'll have access for scan
|
||||||
|
|
||||||
|
-- update opers set saccess = (saccess | 65536);
|
||||||
|
|
||||||
|
-- 25/01/02 - update all opers who had access to LEARNNET to the new flags
|
||||||
|
|
||||||
|
-- update opers set saccess = (saccess | 131072) where (saccess & 1)=1;
|
||||||
|
|
||||||
|
-- 25/02/02 - Add the Misc table
|
||||||
|
|
||||||
|
-- CREATE TABLE Misc (
|
||||||
|
-- VarName VARCHAR(30) NOT NULL,
|
||||||
|
-- Value1 INT4,
|
||||||
|
-- Value2 INT4,
|
||||||
|
-- Value3 INT4,
|
||||||
|
-- Value4 VARCHAR(40),
|
||||||
|
-- Value5 VARCHAR(128)
|
||||||
|
-- );
|
||||||
|
-- 14/03/02 Add MaxUsers command for opers
|
||||||
|
|
||||||
|
--update opers set saccess = (saccess | 262144);
|
||||||
|
|
||||||
|
-- 20/03/02 Add LASTCOM command for opers
|
||||||
|
-- update opers set saccess = (saccess | 8);
|
||||||
|
|
||||||
|
-- 16/05/02 Add the BadChannels table
|
||||||
|
|
||||||
|
-- CREATE TABLE BadChannels (
|
||||||
|
-- Name VARCHAR(400) NOT NULL,
|
||||||
|
-- Reason VARCHAR(512) NOT NULL,
|
||||||
|
-- AddedBy VARCHAR(200) NOT NULL
|
||||||
|
-- );
|
||||||
|
|
||||||
|
-- update opers set saccess = (saccess | 2097152) where isCODER = 't';
|
||||||
|
|
||||||
|
-- 27/08/02 Add REOP command to opers
|
||||||
|
-- update opers set saccess = (saccess | 4194304);
|
||||||
|
-- 16/12/02 Added lastupdated to glines
|
||||||
|
-- alter table glines add LastUpdated INT4 NOT NULL DEFAULT date_part('epoch', CURRENT_TIMESTAMP)::int;
|
||||||
|
|
||||||
|
-- 28/04/02 Add reason to the exceptions table
|
||||||
|
-- alter table exceptions add Reason VARCHAR(450);
|
||||||
|
|
||||||
|
-- 13/03/04 Add is deleted fields
|
||||||
|
-- alter table opers add is_deleted BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
|
||||||
|
-- 25/03/04 Add ReportMissing to servers
|
||||||
|
-- alter table servers add ReportMissing boolean not null default 't';
|
||||||
|
|
||||||
|
-- 04/06/04 Add UNJUPE command to the opers
|
||||||
|
-- update opers set saccess = (saccess | 33554432);
|
||||||
|
|
||||||
|
-- 05/06/04 Move MODUSER to the opers
|
||||||
|
-- update opers set access = (access | 2097152);
|
||||||
|
|
||||||
|
-- 2009/07/24 Add GETLAG and LastPassChangeTS to opers
|
||||||
|
alter TABLE opers add LastPassChangeTS INT4 NOT NULL DEFAULT '0';
|
||||||
|
alter TABLE opers add GetLAG BOOLEAN NOT NULL DEFAULT 'n';
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Script to check GNUWorld's mod.cservice translations for mismatched
|
||||||
|
# variable arguments
|
||||||
|
# (C) 2001 Alex Badea <vampire@go.ro>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Change this to suit your system
|
||||||
|
gnuworld_home = "../"
|
||||||
|
|
||||||
|
# English language ID (or, any language ID that is known to have
|
||||||
|
# valid translated strings)
|
||||||
|
english_id = 1
|
||||||
|
|
||||||
|
# Regular expression (don't ask me how I got to it)
|
||||||
|
regstr = "(%([0123456789]+\\$)?[-\\+ #'0]*[0123456789]*(\\.[0123456789]+)?([hjlLqtzZ]|hh|ll)?[diouxXfeEgGaAcspnm])"
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
from string import *
|
||||||
|
|
||||||
|
trans = {}
|
||||||
|
|
||||||
|
def read_language_table(fname):
|
||||||
|
print "* Reading translations from %s" % fname
|
||||||
|
f = open(fname, "r")
|
||||||
|
for line in f.readlines():
|
||||||
|
line = strip(line)
|
||||||
|
if len(line) < 2: continue
|
||||||
|
if line[0][:1] == "--": continue
|
||||||
|
if line[0][:1] == "\.": continue
|
||||||
|
|
||||||
|
toks = split(line, '\t')
|
||||||
|
if len(toks) < 4: continue
|
||||||
|
if toks[0] == "DELETE": continue
|
||||||
|
if toks[0] == "COPY": continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
pk = (int(toks[0]), int(toks[1]))
|
||||||
|
except ValueError:
|
||||||
|
print "* Non-numeric IDs, line: %s" % `toks`
|
||||||
|
continue
|
||||||
|
|
||||||
|
if toks[len(toks)-2] != "31337":
|
||||||
|
print "* Translation ID (%d,%d) doesn't have a '31337' timestamp" % pk
|
||||||
|
if toks[len(toks)-1] != "0":
|
||||||
|
print "* Translation ID (%d,%d) doesn't have a '0' deleted flag" % pk
|
||||||
|
if trans.has_key(pk):
|
||||||
|
print "* Duplicate translation ID (%d,%d) Text: '%s' conflicts with '%s'" % (pk[0], pk[1], toks[2], trans[toks[1]])
|
||||||
|
trans[pk] = toks[2]
|
||||||
|
f.close()
|
||||||
|
print "* Read %d translations" % len(trans)
|
||||||
|
|
||||||
|
read_language_table(os.path.join(gnuworld_home, "doc", "language_table.sql"))
|
||||||
|
|
||||||
|
r = re.compile(regstr)
|
||||||
|
print "* Checking varargs..."
|
||||||
|
for (lang, tr) in trans.keys():
|
||||||
|
if lang == english_id: continue
|
||||||
|
|
||||||
|
ctext = trans[(lang, tr)]
|
||||||
|
cva_list = r.findall(ctext)
|
||||||
|
if not len(cva_list):
|
||||||
|
if count(ctext, '%'): print '* Possible missed vararg:', ctext
|
||||||
|
etext = trans[(english_id, tr)]
|
||||||
|
eva_list = r.findall(etext)
|
||||||
|
|
||||||
|
if cva_list != eva_list:
|
||||||
|
print "* Mismatched vararg list, translation ID %d:" % tr
|
||||||
|
print " %d> %s" % (lang, ctext)
|
||||||
|
print " %d> %s" % (english_id, etext)
|
||||||
|
|
||||||
|
print "* Done"
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Script to check GNUWorld's mod.cservice translations
|
||||||
|
# (C) 2001 Alex Badea <vampire@go.ro>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Change this to suit your system
|
||||||
|
gnuworld_home = "../"
|
||||||
|
|
||||||
|
# Language ID to check
|
||||||
|
language_id = "8"
|
||||||
|
|
||||||
|
# The maximum distance, in lines, between a bot->Notice and a getResponse
|
||||||
|
notice_thresh = 1
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from string import *
|
||||||
|
|
||||||
|
responses = {}
|
||||||
|
resp_used = {}
|
||||||
|
trans = {}
|
||||||
|
trans_r = {}
|
||||||
|
alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
|
||||||
|
|
||||||
|
def read_language_table(fname):
|
||||||
|
f = open(fname, "r")
|
||||||
|
for line in f.readlines():
|
||||||
|
line = strip(line)
|
||||||
|
toks = split(line, '\t')
|
||||||
|
if len(toks) < 4: continue
|
||||||
|
if toks[0] != language_id: continue
|
||||||
|
if toks[len(toks)-1] != "31337": continue
|
||||||
|
if trans.has_key(toks[1]):
|
||||||
|
print "* Duplicate translation ID (%s) Text: '%s' conflicts with '%s' defined by ID %d" % (toks[1], toks[2], trans[toks[1]], trans_r[toks[2]])
|
||||||
|
if trans_r.has_key(toks[2]):
|
||||||
|
print "* Duplicate translation text '%s', ID %s already defined by ID %s" % (toks[2], toks[1], trans_r[toks[2]])
|
||||||
|
trans[toks[1]] = toks[2]
|
||||||
|
trans_r[toks[2]] = toks[1]
|
||||||
|
f.close()
|
||||||
|
print "* Read %d translations from %s" % (len(trans), fname)
|
||||||
|
|
||||||
|
def read_response_table(fname):
|
||||||
|
f = open(fname, "r")
|
||||||
|
for line in f.readlines():
|
||||||
|
line = strip(line)
|
||||||
|
toks = split(line)
|
||||||
|
if len(toks) < 2: continue
|
||||||
|
if toks[0] != "const": continue
|
||||||
|
if toks[1] != "int": continue
|
||||||
|
if responses.has_key(toks[2]):
|
||||||
|
print "* Duplicate response name (%s) ID: %s" % (toks[2], toks[4])
|
||||||
|
responses[toks[2]] = toks[4][:-1]
|
||||||
|
resp_used[toks[2]] = 0
|
||||||
|
f.close()
|
||||||
|
print "* Read %d responses from %s" % (len(responses), fname)
|
||||||
|
|
||||||
|
def parse_file(fname):
|
||||||
|
f = open(os.path.join(gnuworld_home, "mod.cservice", fname), "r")
|
||||||
|
line = f.readline()
|
||||||
|
lineno = 1
|
||||||
|
last_notice = 0
|
||||||
|
while line:
|
||||||
|
# Check the integrity of language:: references
|
||||||
|
try: start = index(line, "language::")
|
||||||
|
except ValueError: start = -1
|
||||||
|
if start >= 0:
|
||||||
|
start = start + 10
|
||||||
|
end = start
|
||||||
|
while (line[end] in alpha) and (end < len(line)):
|
||||||
|
end = end + 1
|
||||||
|
id = line[start:end]
|
||||||
|
numeric = 'UNDEFINED'
|
||||||
|
text = '[UNASSIGNED]'
|
||||||
|
if responses.has_key(id):
|
||||||
|
numeric = responses[id]
|
||||||
|
if trans.has_key(numeric):
|
||||||
|
text = trans[numeric]
|
||||||
|
resp_used[id] = 1
|
||||||
|
print "%s(%d): language::%s (%s) = '%s'" % (fname, lineno, id, numeric, text)
|
||||||
|
#print "%-25s (%4d): %-30s (%4s) -> %s" % (fname, lineno, id, numeric, text)
|
||||||
|
|
||||||
|
# Check for unlisted translations
|
||||||
|
try: start = index(line, "Notice")
|
||||||
|
except ValueError: start = -1
|
||||||
|
notice_done = 0
|
||||||
|
if (start >= 0) and (start == 0 or not line[start-1] in alpha):
|
||||||
|
last_notice = lineno
|
||||||
|
notice_line = strip(line[:-1])
|
||||||
|
if line[-2] == ";": notice_done = 1
|
||||||
|
|
||||||
|
try: start = index(line, "getResponse")
|
||||||
|
except ValueError: start = -1
|
||||||
|
if start >= 0:
|
||||||
|
last_notice = 0
|
||||||
|
|
||||||
|
if last_notice and (lineno > last_notice + notice_thresh or notice_done):
|
||||||
|
print "* Possible untranslated string in %s(%d): %s" % (fname, last_notice, notice_line)
|
||||||
|
last_notice = 0
|
||||||
|
|
||||||
|
|
||||||
|
lineno = lineno + 1
|
||||||
|
line = f.readline()
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
read_language_table(os.path.join(gnuworld_home, "doc", "language_table.sql"))
|
||||||
|
read_response_table(os.path.join(gnuworld_home, "mod.cservice", "responses.h"))
|
||||||
|
|
||||||
|
files = os.listdir(os.path.join(gnuworld_home, "mod.cservice"))
|
||||||
|
for file in files:
|
||||||
|
if len(file) < 4: continue
|
||||||
|
if file[-3:] != ".cc": continue
|
||||||
|
parse_file(file)
|
||||||
|
|
||||||
|
for resp in resp_used.keys():
|
||||||
|
if not resp_used[resp]:
|
||||||
|
numeric = 'UNDEFINED'
|
||||||
|
text = '[UNASSIGNED]'
|
||||||
|
if responses.has_key(resp):
|
||||||
|
numeric = responses[resp]
|
||||||
|
if trans.has_key(numeric):
|
||||||
|
text = trans[numeric]
|
||||||
|
print "* Unused response language::%s (%s) = '%s'" % (resp, numeric, text)
|
||||||
|
|
||||||
|
print "* Done"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
.arch-ids
|
||||||
|
|
@ -0,0 +1,365 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# You can change the above to the good path to your "bash" binary if needed
|
||||||
|
#
|
||||||
|
# $Id: Manager1K.sh,v 1.4 2003/07/14 10:35:44 nighty Exp $
|
||||||
|
#
|
||||||
|
|
||||||
|
# some default script values
|
||||||
|
DBNAME="cservice"
|
||||||
|
DBHOST="127.0.0.1"
|
||||||
|
|
||||||
|
# default information to put in the db for those .., DO NOT USE a BLANK 'LASTMODIF', use "0".
|
||||||
|
LASTMODIFBY=`basename $0`
|
||||||
|
LASTMODIF="now()::abstime::int4"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# I suggest you dont modify stuff below this point unless you know what you are doing ;P
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PSQLCMD=""
|
||||||
|
echo -n "Checking for 'psql' binary... "
|
||||||
|
if [ -x /usr/local/pgsql/bin/psql ]; then
|
||||||
|
PSQL="1"
|
||||||
|
PSQLCMD="/usr/local/pgsql/bin/psql"
|
||||||
|
else
|
||||||
|
PSQL="0"
|
||||||
|
if [ -x `which psql | head -n 1` ]; then
|
||||||
|
PSQL="1"
|
||||||
|
PSQLCMD="psql"
|
||||||
|
else
|
||||||
|
PSQL="0"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$PSQL" == "0" ]; then
|
||||||
|
echo "not found."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Ok."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "* *"
|
||||||
|
echo "* GNUworld/mod.cservice level 1000 management script *"
|
||||||
|
echo "* *"
|
||||||
|
echo "* With this script, you can make an existing user become a level 1000 *"
|
||||||
|
echo "* or create a new user that will be level 1000. *"
|
||||||
|
echo "* if you Modify a user already level 1000, he will be turned in 999. *"
|
||||||
|
echo "* *"
|
||||||
|
echo "* *"
|
||||||
|
echo "* Warning: This program stops on any input error. *"
|
||||||
|
echo "* *"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "\$Id: Manager1K.sh,v 1.4 2003/07/14 10:35:44 nighty Exp $"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "* Released under the GNU Public License *"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo -n "<-- Database host/IP ? [$DBHOST] "
|
||||||
|
read -e NEWDBHOST
|
||||||
|
if [ "$NEWDBHOST" != "" ]; then
|
||||||
|
echo "--> Using custom: $NEWDBHOST"
|
||||||
|
DBHOST="$NEWDBHOST"
|
||||||
|
else
|
||||||
|
echo "--> Using default: $DBHOST"
|
||||||
|
fi
|
||||||
|
echo -n "<-- Database name ? [$DBNAME] "
|
||||||
|
read -e NEWDBNAME
|
||||||
|
if [ "$NEWDBNAME" != "" ]; then
|
||||||
|
echo "--> Using custom: $NEWDBNAME"
|
||||||
|
DBNAME="$NEWDBNAME"
|
||||||
|
else
|
||||||
|
echo "--> Using default: $DBNAME"
|
||||||
|
fi
|
||||||
|
echo -n "<-- (M)odify existing user or (C)reate new user ? [M] "
|
||||||
|
read -e REP1
|
||||||
|
if [ "$REP1" == "c" ]; then
|
||||||
|
REP1="C"
|
||||||
|
fi
|
||||||
|
if [ "$REP1" == "m" ]; then
|
||||||
|
REP1="M"
|
||||||
|
fi
|
||||||
|
if [ "$REP1" != "C" ]; then
|
||||||
|
if [ "$REP1" != "M" ]; then
|
||||||
|
REP1="M"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
FROMC="0"
|
||||||
|
FORCEUSERNAME=""
|
||||||
|
if [ "$REP1" == "C" ]; then
|
||||||
|
echo "--> CREATE"
|
||||||
|
echo -n "<-- User name ? "
|
||||||
|
read -e REP2
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (blank)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
NUMCHARU=`echo -n $REP2 | wc -c`
|
||||||
|
NOTOKU0=`expr $NUMCHARU \> 12`
|
||||||
|
NOTOKU1=`expr $NUMCHARU \< 2`
|
||||||
|
if [ "$NOTOKU0" == "1" ]; then
|
||||||
|
echo "--> ERROR: Too many chars in username ($NUMCHARU). Valid range: 2 to 12."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$NOTOKU1" == "1" ]; then
|
||||||
|
echo "--> ERROR: Too few chars in username ($NUMCHARU). Valid range: 2 to 12."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FORCEUSERNAME="$REP2"
|
||||||
|
if `echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME >/dev/null 2>&1`; then
|
||||||
|
USRID=`echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }'`
|
||||||
|
if [ "$USRID" != "(0" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (already taken)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "--> ERROR: Credentials provided for database connection are either invalid or database setup isn't correct."
|
||||||
|
echo "--> ERROR: Connection to database '$DBNAME' at '$DBHOST' failed."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(2)"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo -n "<-- E-Mail address ? "
|
||||||
|
read -e REP2
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
echo "--> ERROR: Invalid E-Mail address (blank)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
USRID=`echo -n "SELECT id FROM users WHERE lower(email)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }'`
|
||||||
|
if [ "$USRID" != "(0" ]; then
|
||||||
|
echo "--> ERROR: Invalid E-Mail address (already taken)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
UEMAIL="$REP2"
|
||||||
|
echo "!!! NOTICE: E-Mail is OK (not in use), but not checked against SYNTAX/NOREG/DOMAINLOCK. Assuming you know what you do ;P"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "--> (1) What's your mother's maiden name ?"
|
||||||
|
echo "--> (2) What's your dog's (or cat's) name ?"
|
||||||
|
echo "--> (3) What's your father's birth date ?"
|
||||||
|
echo -n "<-- What verification question (1, 2 or 3) ? [2] "
|
||||||
|
read -e REP2
|
||||||
|
REPOK="0"
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
REP2="2"
|
||||||
|
fi
|
||||||
|
if [ "$REP2" == "1" ]; then
|
||||||
|
REPOK="1"
|
||||||
|
fi
|
||||||
|
if [ "$REP2" == "2" ]; then
|
||||||
|
REPOK="1"
|
||||||
|
fi
|
||||||
|
if [ "$REP2" == "3" ]; then
|
||||||
|
REPOK="1"
|
||||||
|
fi
|
||||||
|
if [ "$REPOK" == "0" ]; then
|
||||||
|
echo "--> ERROR: Invalid verification question choice ($REP2)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
UQID="$REP2"
|
||||||
|
|
||||||
|
echo -n "<-- Answer to the verification question (4 chars minimum) ? "
|
||||||
|
read -e REP2
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
echo "--> ERROR: Invalid answer (blank)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
NUMCHAR=`echo -n $REP2 | wc -c`
|
||||||
|
NOTOK=`expr $NUMCHAR \< 4`
|
||||||
|
if [ "$NOTOK" == "1" ]; then
|
||||||
|
echo "--> ERROR: You need at least 4 chars !"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
UVA="$REP2"
|
||||||
|
|
||||||
|
echo -n "<-- Please specify the user password (no thing will be displayed on screen, 6 chars minimum) : "
|
||||||
|
read -es PASS1
|
||||||
|
echo ""
|
||||||
|
NUMCHARP=`echo -n $PASS1 | wc -c`
|
||||||
|
NOTOKP=`expr $NUMCHARP \< 6`
|
||||||
|
if [ "$NOTOKP" == "1" ]; then
|
||||||
|
echo "--> ERROR: You need at least 6 chars !"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "<-- Please, this password again : "
|
||||||
|
read -es PASS2
|
||||||
|
echo ""
|
||||||
|
if [ "$PASS1" != "$PASS2" ]; then
|
||||||
|
echo "--> ERROR: Password mismatch"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
GENSALT=`mcookie | cut -b-8`
|
||||||
|
|
||||||
|
ENCPART=`echo -n $GENSALT$PASS1 | md5sum | cut -f1 -d' '`
|
||||||
|
ENCPASS="$GENSALT$ENCPART"
|
||||||
|
|
||||||
|
echo "--> Crypted password : $ENCPASS"
|
||||||
|
echo "--> ENCODED : [$ENCPART]"
|
||||||
|
echo "--> SALT : [$GENSALT]"
|
||||||
|
|
||||||
|
echo "--> Adding user '$FORCEUSERNAME'..."
|
||||||
|
DAQRY="INSERT INTO users (user_name,password,email,url,question_id,verificationdata,language_id,public_key,last_updated_by,last_updated,signup_cookie,signup_ip,tz_setting) VALUES ('$FORCEUSERNAME','$ENCPASS','$UEMAIL','',$UQID,'$UVA',1,'','$LASTMODIFBY',now()::abstime::int4,'Added from the console','127.0.0.1','')"
|
||||||
|
echo "--> DB: `echo -n \"$DAQRY\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
FROMC="1"
|
||||||
|
REP1="M"
|
||||||
|
fi
|
||||||
|
if [ "$REP1" == "M" ]; then
|
||||||
|
if [ "$FORCEUSERNAME" == "" ]; then
|
||||||
|
echo "--> MODIFY"
|
||||||
|
echo -n "<-- User name ? "
|
||||||
|
read -e REP2
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (blank)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
REP2="$FORCEUSERNAME"
|
||||||
|
fi
|
||||||
|
if `echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME >/dev/null 2>&1`; then
|
||||||
|
USRID=`echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }'`
|
||||||
|
if [ "$USRID" == "(0" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (non existant)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "--> ERROR: Credentials provided for database connection are either invalid or database setup isn't correct."
|
||||||
|
echo "--> ERROR: Connection to database '$DBNAME' at '$DBHOST' failed."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(2)"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$FROMC" == "1" ]; then
|
||||||
|
if [ "$USRID" == "1" ]; then
|
||||||
|
echo "--> NOTICE: It's the first user inserted.. which means you probably never used 'cservice.addme.sql' on that database ($DBNAME)"
|
||||||
|
echo "--> NOTICE: We will be running what should be at this moment just like if you ran 'cservice.addme.sql'"
|
||||||
|
echo "--> NOTICE: You will NOT need to run 'cservice.addme.sql' anymore, so don't run it ;P"
|
||||||
|
|
||||||
|
ADDADMCHAN="INSERT into channels (name,flags,channel_ts,registered_ts,last_updated) VALUES ('*',1,now()::abstime::int4,31337,now()::abstime::int4)"
|
||||||
|
ADDCODERCHAN="INSERT into channels (name,flags,channel_ts,registered_ts,last_updated) VALUES ('#coder-com',1,now()::abstime::int4,31337,now()::abstime::int4)"
|
||||||
|
ADDCODERACCESS="INSERT into levels (channel_id,user_id,access,added_by,added,last_modif_by,last_modif,last_updated) VALUES (2,1,500,'$LASTMODIFBY',$LASTMODIF,'$LASTMODIFBY',$LASTMODIF,now()::abstime::int4)"
|
||||||
|
|
||||||
|
echo "--> Inserting ADMIN (*) channel..."
|
||||||
|
echo "--> DB: `echo -n \"$ADDADMCHAN\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
echo "--> Inserting CODER (#coder-com) channel..."
|
||||||
|
echo "--> DB: `echo -n \"$ADDCODERCHAN\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
echo "--> Inserting level 500 access for '$FORCEUSERNAME' on '#coder-com'..."
|
||||||
|
echo "--> DB: `echo -n \"$ADDCODERACCESS\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ADMINLVL=`echo -n "SELECT access FROM levels WHERE channel_id=1 AND user_id=$USRID" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }'`
|
||||||
|
|
||||||
|
echo -n "--> users.id = $USRID current admin level = "
|
||||||
|
if [ "$ADMINLVL" == "(0" ]; then
|
||||||
|
echo "0"
|
||||||
|
else
|
||||||
|
echo $ADMINLVL
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ADMINLVL" == "1000" ]; then
|
||||||
|
echo "--> Modifying ADMIN access from $ADMINLVL to 999..."
|
||||||
|
DAQRY="UPDATE levels SET access=999,last_modif_by='$LASTMODIFBY',last_modif=$LASTMODIF,last_updated=now()::abstime::int4 WHERE channel_id=1 AND user_id=$USRID AND access=$ADMINLVL"
|
||||||
|
echo "--> DB: `echo -n \"$DAQRY\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
else
|
||||||
|
if [ "$ADMINLVL" == "(0" ]; then
|
||||||
|
echo "--> Adding ADMIN access at level 1000..."
|
||||||
|
DAQRY="INSERT INTO levels (channel_id,user_id,access,added_by,added,last_modif_by,last_modif,last_updated) VALUES (1,$USRID,1000,'$LASTMODIFBY',$LASTMODIF,'$LASTMODIFBY',$LASTMODIF,now()::abstime::int4)"
|
||||||
|
echo "--> DB: `echo -n \"$DAQRY\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
else
|
||||||
|
echo "--> Modifying ADMIN access from $ADMINLVL to 1000..."
|
||||||
|
DAQRY="UPDATE levels SET access=1000,last_modif_by='$LASTMODIFBY',last_modif=$LASTMODIF,last_updated=now()::abstime::int4 WHERE channel_id=1 AND user_id=$USRID AND access=$ADMINLVL"
|
||||||
|
echo "--> DB: `echo -n \"$DAQRY\" | $PSQLCMD -h $DBHOST $DBNAME`"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "--> Job finished !"
|
||||||
|
echo "--> NOTICE: Remember your CService bot updates his cache on a regular basis"
|
||||||
|
echo "--> NOTICE: depending on your cservice.conf file this can take a few minutes for the changes/addition to be available on IRC."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(0)"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# EOF
|
||||||
|
|
@ -0,0 +1,288 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# You can change the above to the good path to your "bash" binary if needed
|
||||||
|
#
|
||||||
|
# $Id: WipeUser.sh,v 1.7 2003/07/14 10:35:44 nighty Exp $
|
||||||
|
#
|
||||||
|
|
||||||
|
# some default script values
|
||||||
|
DBNAME="cservice"
|
||||||
|
DBHOST="127.0.0.1"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# I suggest you dont modify stuff below this point unless you know what you are doing ;P
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PSQLCMD=""
|
||||||
|
echo -n "Checking for 'psql' binary... "
|
||||||
|
if [ -x /usr/local/pgsql/bin/psql ]; then
|
||||||
|
PSQL="1"
|
||||||
|
PSQLCMD="/usr/local/pgsql/bin/psql"
|
||||||
|
else
|
||||||
|
PSQL="0"
|
||||||
|
if [ -x `which psql | head -n 1` ]; then
|
||||||
|
PSQL="1"
|
||||||
|
PSQLCMD="psql"
|
||||||
|
else
|
||||||
|
PSQL="0"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$PSQL" == "0" ]; then
|
||||||
|
echo "not found."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Ok."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "* *"
|
||||||
|
echo "* GNUworld/mod.cservice Username Removal Tool *"
|
||||||
|
echo "* *"
|
||||||
|
echo "* With this script, you can totally remove a user's entry in your db *"
|
||||||
|
echo "* *"
|
||||||
|
echo "* Warning: This program stops on any input error. *"
|
||||||
|
echo "* *"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "\$Id: WipeUser.sh,v 1.7 2003/07/14 10:35:44 nighty Exp $"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo "* Released under the GNU Public License *"
|
||||||
|
echo "***********************************************************************"
|
||||||
|
echo -n "<-- Database host/IP ? [$DBHOST] "
|
||||||
|
read -e NEWDBHOST
|
||||||
|
if [ "$NEWDBHOST" != "" ]; then
|
||||||
|
echo "--> Using custom: $NEWDBHOST"
|
||||||
|
DBHOST="$NEWDBHOST"
|
||||||
|
else
|
||||||
|
echo "--> Using default: $DBHOST"
|
||||||
|
fi
|
||||||
|
echo -n "<-- Database name ? [$DBNAME] "
|
||||||
|
read -e NEWDBNAME
|
||||||
|
if [ "$NEWDBNAME" != "" ]; then
|
||||||
|
echo "--> Using custom: $NEWDBNAME"
|
||||||
|
DBNAME="$NEWDBNAME"
|
||||||
|
else
|
||||||
|
echo "--> Using default: $DBNAME"
|
||||||
|
fi
|
||||||
|
echo -n "<-- User name to totally remove ? "
|
||||||
|
read -e REP2
|
||||||
|
if [ "$REP2" == "" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (blank)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FORCEUSERNAME="$REP2"
|
||||||
|
if `echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME >/dev/null 2>&1`; then
|
||||||
|
USRID=`echo -n "SELECT id FROM users WHERE lower(user_name)='$REP2'" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }'`
|
||||||
|
if [ "$USRID" == "(0" ]; then
|
||||||
|
echo "--> ERROR: Invalid User name (non existant)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "--> ERROR: Credentials provided for database connection are either invalid or database setup isn't correct."
|
||||||
|
echo "--> ERROR: Connection to database '$DBNAME' at '$DBHOST' failed."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(2)"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$USRID" == "1" ]; then
|
||||||
|
echo "--> ERROR: Cannot remove master user (ID = 1)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(1)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
QC001="SELECT COUNT(user_id) FROM userlog WHERE user_id=$USRID"
|
||||||
|
QC002="SELECT COUNT(user_id) FROM levels WHERE user_id=$USRID"
|
||||||
|
QC003="SELECT COUNT(user_id) FROM levels WHERE access=500 AND user_id=$USRID"
|
||||||
|
QC004="SELECT COUNT(user_id) FROM supporters WHERE user_id=$USRID"
|
||||||
|
QC005="SELECT COUNT(user_id) FROM objections WHERE user_id=$USRID"
|
||||||
|
QC006="SELECT COUNT(user_id) FROM users_lastseen WHERE user_id=$USRID"
|
||||||
|
QC007="SELECT COUNT(manager_id) FROM pending WHERE manager_id=$USRID"
|
||||||
|
QC008="SELECT COUNT(user_id) FROM pending_emailchanges WHERE user_id=$USRID"
|
||||||
|
QC009="SELECT COUNT(user_id) FROM pending_pwreset WHERE user_id=$USRID"
|
||||||
|
QC010="SELECT COUNT(user_id) FROM acl WHERE user_id=$USRID"
|
||||||
|
QC011="SELECT COUNT(manager_id) FROM pending_mgrchange WHERE manager_id=$USRID"
|
||||||
|
QC012="SELECT COUNT(new_manager_id) FROM pending_mgrchange WHERE new_manager_id=$USRID"
|
||||||
|
QC013="SELECT COUNT(user_id) FROM mailq WHERE user_id=$USRID"
|
||||||
|
QC014="SELECT COUNT(user_id) FROM notes WHERE user_id=$USRID or from_user_id=$USRID"
|
||||||
|
QC015="SELECT COUNT(user_id) FROM fraud_list_data WHERE user_id=$USRID"
|
||||||
|
QC016="SELECT COUNT(user_id) FROM notices WHERE user_id=$USRID"
|
||||||
|
|
||||||
|
echo "--> Counting records..."
|
||||||
|
|
||||||
|
CNT01=`echo -n "$QC001" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT02=`echo -n "$QC002" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT03=`echo -n "$QC003" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT04=`echo -n "$QC004" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT05=`echo -n "$QC005" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT06=`echo -n "$QC006" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT07=`echo -n "$QC007" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT08=`echo -n "$QC008" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT09=`echo -n "$QC009" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT10=`echo -n "$QC010" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT11=`echo -n "$QC011" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT12=`echo -n "$QC012" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT13=`echo -n "$QC013" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT14=`echo -n "$QC014" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT15=`echo -n "$QC015" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
CNT16=`echo -n "$QC016" | $PSQLCMD -h $DBHOST $DBNAME | head -n 3 | tail -n 1 | awk '{ print $1 }' | sed -e 's/(//'`
|
||||||
|
|
||||||
|
echo "--> The following entries would be removed if confirmed :"
|
||||||
|
echo "-->"
|
||||||
|
echo "--> $CNT01 userlog entries"
|
||||||
|
echo "--> $CNT02 channel accesses ($CNT03 level 500 (channels would be PURGED))"
|
||||||
|
echo "--> $CNT04 channel support entries"
|
||||||
|
echo "--> $CNT05 application objections"
|
||||||
|
echo "--> $CNT06 last_seen entry"
|
||||||
|
echo "--> $CNT07 channel applications (old and present)"
|
||||||
|
echo "--> $CNT08 pending email change entries"
|
||||||
|
echo "--> $CNT09 pending verif q/a reset entries"
|
||||||
|
echo "--> $CNT10 ACL entry"
|
||||||
|
echo "--> $CNT11 pending manager changes (user is old manager, channel will be PURGED)"
|
||||||
|
echo "--> $CNT12 pending manager changes (user is temp manager, channel will be PURGED)"
|
||||||
|
echo "--> $CNT13 mailq entries"
|
||||||
|
echo "--> $CNT14 notes sent/received"
|
||||||
|
echo "--> $CNT15 fraud list entries"
|
||||||
|
echo "--> $CNT16 notices entries"
|
||||||
|
echo "--> 1 user entry"
|
||||||
|
echo "-->"
|
||||||
|
echo -n "<-- Are you sure you want to totally and definetively remove those entries from your databse [y/N] ? [N] "
|
||||||
|
read -e YOUSURE
|
||||||
|
if [ "$YOUSURE" != "y" ]; then
|
||||||
|
if [ "$YOUSURE" != "Y" ]; then
|
||||||
|
YOUSURE="N"
|
||||||
|
else
|
||||||
|
YOUSURE="Y"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
YOUSURE="Y"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$YOUSURE" == "N" ]; then
|
||||||
|
echo "--> You're such a weenie ;P"
|
||||||
|
echo "--> Aborting upon user request (nothing was removed)"
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(0)"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "--> Removing entries..."
|
||||||
|
|
||||||
|
QR001="DELETE FROM userlog WHERE user_id=$USRID"
|
||||||
|
QR002="DELETE FROM levels WHERE user_id=$USRID AND (access!=500 OR channel_id=1)"
|
||||||
|
QR003="SELECT channel_id FROM levels WHERE access=500 AND user_id=$USRID" # first set of channels to purge
|
||||||
|
QR004="DELETE FROM supporters WHERE user_id=$USRID"
|
||||||
|
QR005="DELETE FROM objections WHERE user_id=$USRID"
|
||||||
|
QR006="DELETE FROM users_lastseen WHERE user_id=$USRID"
|
||||||
|
QR007="DELETE FROM pending WHERE manager_id=$USRID"
|
||||||
|
QR008="DELETE FROM pending_emailchanges WHERE user_id=$USRID"
|
||||||
|
QR009="DELETE FROM pending_pwreset WHERE user_id=$USRID"
|
||||||
|
QR010="DELETE FROM acl WHERE user_id=$USRID"
|
||||||
|
QR011="SELECT channel_id FROM pending_mgrchange WHERE manager_id=$USRID" # second set of channels to purge
|
||||||
|
QR012="DELETE FROM pending_mgrchange WHERE new_manager_id=$USRID"
|
||||||
|
QR013="DELETE FROM mailq WHERE user_id=$USRID"
|
||||||
|
QR014="DELETE FROM notes WHERE user_id=$USRID or from_user_id=$USRID"
|
||||||
|
QR015="DELETE FROM fraud_list_data WHERE user_id=$USRID"
|
||||||
|
QR016="DELETE FROM notices WHERE user_id=$USRID"
|
||||||
|
QR099="DELETE FROM users WHERE id=$USRID"
|
||||||
|
|
||||||
|
REM01=`echo -n "$QR001" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM01"
|
||||||
|
REM02=`echo -n "$QR002" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM02"
|
||||||
|
echo -n "$QR003" | $PSQLCMD -h $DBHOST $DBNAME | grep "." | grep -v -- "--" | grep -v "rows" | grep -v "channel_id" | awk '{ print "DELETE FROM levels WHERE channel_id=" $1 }' | $PSQLCMD -h $DBHOST $DBNAME | xargs echo "--> DB:"
|
||||||
|
echo -n "$QR003" | $PSQLCMD -h $DBHOST $DBNAME | grep "." | grep -v -- "--" | grep -v "rows" | grep -v "channel_id" | awk '{ print "DELETE FROM channels WHERE id=" $1 }' | $PSQLCMD -h $DBHOST $DBNAME | xargs echo "--> DB:"
|
||||||
|
REM04=`echo -n "$QR004" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM04"
|
||||||
|
REM05=`echo -n "$QR005" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM05"
|
||||||
|
REM06=`echo -n "$QR006" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM06"
|
||||||
|
REM07=`echo -n "$QR007" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM07"
|
||||||
|
REM08=`echo -n "$QR008" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM08"
|
||||||
|
REM09=`echo -n "$QR009" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM09"
|
||||||
|
REM10=`echo -n "$QR010" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM10"
|
||||||
|
echo -n "$QR011" | $PSQLCMD -h $DBHOST $DBNAME | grep "." | grep -v -- "--" | grep -v "rows" | grep -v "channel_id" | awk '{ print "DELETE FROM pending_mgrchanges WHERE channel_id=" $1 }' | $PSQLCMD -h $DBHOST $DBNAME | xargs echo "--> DB:"
|
||||||
|
echo -n "$QR011" | $PSQLCMD -h $DBHOST $DBNAME | grep "." | grep -v -- "--" | grep -v "rows" | grep -v "channel_id" | awk '{ print "DELETE FROM channels WHERE id=" $1 }' | $PSQLCMD -h $DBHOST $DBNAME | xargs echo "--> DB:"
|
||||||
|
REM12=`echo -n "$QR012" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM12"
|
||||||
|
REM13=`echo -n "$QR013" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM13"
|
||||||
|
REM14=`echo -n "$QR014" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM14"
|
||||||
|
REM15=`echo -n "$QR015" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM15"
|
||||||
|
REM16=`echo -n "$QR016" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM16"
|
||||||
|
|
||||||
|
REM99=`echo -n "$QR099" | $PSQLCMD -h $DBHOST $DBNAME`
|
||||||
|
echo "--> DB: $REM99"
|
||||||
|
|
||||||
|
echo "--> Username '$FORCEUSERNAME' has been totally removed."
|
||||||
|
|
||||||
|
echo "--> Job finished !"
|
||||||
|
echo "--> NOTICE: Remember your CService bot updates his cache on a regular basis"
|
||||||
|
echo "--> NOTICE: depending on your cservice.conf file this can take a few minutes for the changes/addition to be available on IRC."
|
||||||
|
echo "--> Stopping..."
|
||||||
|
echo "--> exit(0)"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# EOF
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue