aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG52
-rw-r--r--COPYING340
-rw-r--r--README251
-rw-r--r--README.pt_BR248
-rw-r--r--README.simplaret143
-rw-r--r--README.simplaret.pt_BR148
-rw-r--r--TODO5
-rw-r--r--common.sh180
-rw-r--r--doc/simplepkg.aux30
-rw-r--r--doc/simplepkg.dvibin0 -> 25288 bytes
-rw-r--r--doc/simplepkg.html201
-rw-r--r--doc/simplepkg.log286
-rw-r--r--doc/simplepkg.out11
-rw-r--r--doc/simplepkg.pdfbin0 -> 69718 bytes
-rw-r--r--doc/simplepkg.tex241
-rw-r--r--doinst.sh2
-rwxr-xr-xjail-update62
-rwxr-xr-xjail-upgrade107
-rwxr-xr-xlspkg68
-rwxr-xr-xmetapkg60
-rwxr-xr-xmkjail100
-rwxr-xr-xold/lspkg.old31
-rwxr-xr-xold/merge-template.sh27
-rwxr-xr-xold/mkjail.old76
-rwxr-xr-xold/searchpkg24
-rwxr-xr-xold/templatepkg.old64
-rw-r--r--old/teste132
-rwxr-xr-xrebuildpkg83
-rw-r--r--repos.conf.new9
-rwxr-xr-xsimplaret482
-rwxr-xr-xsimplepkg.SlackBuild59
-rw-r--r--simplepkg.conf.new14
-rw-r--r--slack-desc19
-rwxr-xr-xtemplatepkg90
-rw-r--r--templates/mplayer.metapkg14
-rwxr-xr-xtemplates/openoffice.d/etc/profile.d/lang.csh33
-rwxr-xr-xtemplates/openoffice.d/etc/profile.d/lang.sh33
l---------templates/openoffice.d/opt/OpenOffice.org1
-rwxr-xr-xtemplates/openoffice.s/post-install.sh22
-rw-r--r--templates/openoffice.template60
-rw-r--r--templates/slackware.template566
-rw-r--r--templates/vserver-legacy.d/etc/apache/httpd.conf1046
-rw-r--r--templates/vserver-legacy.d/etc/apache/php.ini1122
-rw-r--r--templates/vserver-legacy.d/etc/apache/vhosts0
-rw-r--r--templates/vserver-legacy.d/etc/hosts21
-rw-r--r--templates/vserver-legacy.d/etc/logrotate.d/apache11
-rw-r--r--templates/vserver-legacy.d/etc/profile87
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.0110
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.4256
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.6110
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.K88
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.M256
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.S294
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.httpd21
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.inet2129
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.inetd36
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.ip_forward64
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.local5
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.mysqld80
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.postfix45
-rw-r--r--templates/vserver-legacy.d/etc/rc.d/rc.sendmail38
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.serial132
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.sshd50
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.syslog42
-rwxr-xr-xtemplates/vserver-legacy.d/etc/rc.d/rc.sysvinit58
-rw-r--r--templates/vserver-legacy.d/etc/rssh.conf48
-rw-r--r--templates/vserver-legacy.d/etc/ssh/sshd_config103
-rw-r--r--templates/vserver-legacy.d/var/www/htdocs/missing.html12
-rw-r--r--templates/vserver-legacy.d/var/www/missing.html12
-rw-r--r--templates/vserver-legacy.s/GPG-KEY88
-rw-r--r--templates/vserver-legacy.s/devices.tar.gzbin0 -> 322 bytes
-rw-r--r--templates/vserver-legacy.s/skel.conf70
-rw-r--r--templates/vserver-legacy.s/vserver-legacy.sh48
-rw-r--r--templates/vserver-legacy.template251
-rw-r--r--templates/vserver.d/etc/apache/httpd.conf1046
-rw-r--r--templates/vserver.d/etc/apache/php.ini1122
-rw-r--r--templates/vserver.d/etc/apache/vhosts0
-rw-r--r--templates/vserver.d/etc/hosts21
-rw-r--r--templates/vserver.d/etc/logrotate.d/apache11
-rw-r--r--templates/vserver.d/etc/profile87
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc11
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.0110
-rw-r--r--templates/vserver.d/etc/rc.d/rc.4256
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.6110
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.K88
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.M256
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.S294
-rw-r--r--templates/vserver.d/etc/rc.d/rc.httpd21
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.inet2129
-rw-r--r--templates/vserver.d/etc/rc.d/rc.inetd36
-rw-r--r--templates/vserver.d/etc/rc.d/rc.ip_forward64
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.local5
-rw-r--r--templates/vserver.d/etc/rc.d/rc.mysqld80
-rw-r--r--templates/vserver.d/etc/rc.d/rc.postfix45
-rw-r--r--templates/vserver.d/etc/rc.d/rc.sendmail38
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.serial132
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.sshd50
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.syslog42
-rwxr-xr-xtemplates/vserver.d/etc/rc.d/rc.sysvinit58
-rw-r--r--templates/vserver.d/etc/rssh.conf48
-rw-r--r--templates/vserver.d/etc/ssh/sshd_config103
-rw-r--r--templates/vserver.d/var/www/htdocs/missing.html12
-rw-r--r--templates/vserver.d/var/www/missing.html12
-rw-r--r--templates/vserver.s/GPG-KEY88
-rw-r--r--templates/vserver.s/devices.tar.gzbin0 -> 322 bytes
-rw-r--r--templates/vserver.s/vserver.sh49
-rw-r--r--templates/vserver.template252
107 files changed, 13783 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..4d65968
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,52 @@
+simplepkg changelog
+-------------------
+
+0.4.8: simplaret: removed extra folder from slamd64 definition
+ and fixed a typo
+
+0.4.7: templatepkg bugfix on blank template lines and on package deletion
+ changed simplaret working dir in simplaret.conf.new
+
+0.4.6: small bugfix on jail-update that prevented template update
+
+0.4.5: vserver template update
+
+0.4.4: WARNING option on config file for simplaret
+
+ SILENT env var, if a non-zero value, keeps simplaret
+ work silenty when purging and works like if WANRING is set
+ to not null.
+
+ add SIMPLARET_DELETE_DURING config parameter: when set
+ to a non-zero value deletes each package rigth after its
+ installation
+
+0.4.3: openoffice.org template
+
+0.4.2: common.sh: fix on install_packages when handling
+ with similar package names
+
+0.4.1: templatepkg: fixed tagfiles and comment handling
+
+0.4: multi-plataform and version management
+
+ now simplepkg supports jails with architectures and versions
+ others than the main system, read the docs for details.
+
+ added simplaret: a small script for downloading packages
+
+ jail-upgrade
+
+ * arch checking via /etc/slackware-version on each jail
+ * supports multi-arch and multi-version repository
+ * integrated with simplaret
+
+ common.sh: improved functions to support simplaret
+
+0.3.7-0.3.9: bugfix releases
+
+0.3.6: added "-u" option to eval_config to ask for a swaret --update
+
+0.3.5: "main" jail support for jail-update
+
+0.3.4: started changelog :)
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/COPYING
@@ -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.
diff --git a/README b/README
new file mode 100644
index 0000000..43bb57c
--- /dev/null
+++ b/README
@@ -0,0 +1,251 @@
+Simplepkg: installation manager and metapackage system
+------------------------------------------------------
+
+Author: Silvio Rhatto <rhatto at riseup.net>
+Licence: GPL
+
+Simplepkg is a non-intrusive package management system running on top of pkgtool.
+It uses templates -- lists of installed packages, scripts and configuration files
+-- allowing the creation of installation profiles that can be used do install a
+complete and configured slackware system in another partition or to create chroot
+environments. The same templating scheme extends slackware packaging system, adding
+metapackages: a list of packages installed or removed with a single command.
+
+Documentation
+-------------
+
+ English documentation: README | http://slack.sarava.org/node/15
+ Portuguese documentation: REAMDE.pt_BR | http://slack.sarava.org/node/12
+
+Description
+-----------
+
+All GNU/Linux distributions comes with a well developed packaging system. The question now
+is how pratical is the way to install, configure and control any changes in a system.
+
+As an example, suppose you should keep a list of about 200 slackware machines, some
+of them used as desktops, others as mail or webservers. If you lost some hardrives
+or usually need to re-install or update some of those boxes.
+
+Using the slackware installation cd and configuring by hand all the time you got a crash
+is a time loss activity and you'll never know if something remained missconfigured. An
+alternative is to keep a complete backup of a machine or some parts of the tree, but for
+a large number of different boxes this procedure costs a lots of resources.
+
+Simplepkg offers an alternative sollution for this and other problems related to installation
+management, allowing you to keep templates of each machine and install a custom slackware
+system with just one or a few commands. Creating and upgrading chroot and vservers is easy
+with simplepkg.
+
+Architecture
+------------
+
+Simplepkg is a set of scripts wrote in the KISS philosophy. Its a pretty simple system, composed
+by the following commands:
+
+ - mkjail: build a slackware jail/installation in a folder
+ - metapkg: install or remove a metapackage
+ - templatepkg: create or update a package list of an installation template
+ - lspkg: show installed packages and its contents
+ - jail-upgrade: upgrade all or some of the jails/installations
+ - jail-update: update all configuration files of a template
+ - rebuildpkg: rebuild a package based on its /var/log/packages entry
+
+Simplepkg configs are placed at /etc/simplepkg. Templates are .template files containing an one-by-line
+package list. A template can be something like this:
+
+ aaa_base
+ aaa_elflibs
+ apache
+ bash
+ bin
+ coreutils
+ findutils
+
+Slackware's tagfile format can be used too as a template.
+
+Installation
+------------
+
+The latest version of simplepkg is locate at http://slack.sarava.org/packages/noarch/.
+Install it with the usual way:
+
+ installpkg simplepkg-VERSION-noarch-BUILD.tgz
+
+If you have a working swaret on your system, add this line on you swaret.conf:
+
+ REPOS_ROOT=SlackMidiataticaNoarch%http://slack.sarava.org/packages/noarch
+
+and then issue those commands:
+
+ swaret --update
+ swaret --install simplepkg
+
+Configuration
+-------------
+
+As an example, we'll create a jail based on the packages installed in your slackware
+system. Edit the config file /etc/simplepkg/simplepkg.conf:
+
+ # /etc/simplepkg/simplepkg.conf
+ JAIL_ROOT="/vservers" # where jails are placed
+ SIMPLARET="simplaret" # package grabber program (can be swaret if you have it installed)
+ SIMPLARET_CLEAN="1" # clean package cache before installation
+ SIMPLARET_DELETE_DOWN="1" # clean package cache after the installation
+ SIMPLARET_UPDATE="0" # issue an simplaret --update before install the jail
+ SIMPLARET_PURGE_WEEKS="N" # delete packages older than N weeks from the cache
+ PATCHES_DIR="/storage/package/patches" # where patches are placed
+ DEFAULT_ARCH="i386"
+ DEFAULT=VERSION="10.2"
+ STORAGE="/storage/packages" # where simplepkg store packages
+ PASSIVE_FTP="1"
+
+You should also put in /etc/simplepkg/repos.conf all package repositories you use, like this:
+
+ ROOT-i386="http://slack.sarava.org/packages/slackware"
+ REPOS-i386="slack-sarava%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+ ROOT-x86_64-10.2="http://darkstar.ist.utl.pt/pub/slamd64/"
+ REPOS-x86_64-10.2="slamd-sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+
+Instead of simplaret you can use swaret to fetch packages and them your swaret.conf must
+be configured to use the same place as STORAGE to the package cache. In this case you cant
+keep installations and jails with multiple arquitetures and for that reason the use of
+simplaret is recommended.
+
+Creating jails and replicating installations
+--------------------------------------------
+
+ templatepkg my-slackare
+ mkjail jail my-slackware
+
+The previous commands creates a template called my-slackware from based on your installed
+softwares listed in /var/log/packages and then creates a completely new slackware
+tree with all those packages in the folder /vservers/jail (depending on the value of JAIL_ROOT from
+your simplepkg.conf).
+
+If you want that some config files get copied or some scripts executed after install this jail,
+place in the folder /etc/simplepkg/my-slackware.d all your config files (preserving the file
+system hierarchy, i.e, /etc/simplepkg/my-slackware/etc/apache/httpd.conf) and the scripts at
+/etc/simplepkg/my-slackware.s/. The template vserver, which comes in the simplepkg package, has
+an example script to use with mkjail.
+
+You can specify an alternative destination for your jail with a command like
+
+ ROOT=/mnt mkjail hda2 my-slackware
+
+This does exactly what you think: installs slackware in /mnt/hda2 with exactly the same packages
+you have on your system, replacing the need of the slackware installer!
+
+In case no template specified, mkjail uses the one called /etc/simplepkg/default.template.
+
+If you keep your jails in JAIL_ROOT with the same name as the template you used to create it, its
+possible to use the command jail-update to copy all modifications made in the files which their
+counterparts are placed at /etc/simplepkg/jail-name.d. Then you can copy all configuration files
+you edited to the template folder and leave a crontab entry to everyday seek for changes and update
+the template. When you issue the command
+
+ jail-update
+
+all jails listed in /etc/simplepkg/jaillist are updated. This command also updates the package list
+of the template.
+
+To add or remove packages from a template, you can just edit by hand the template file or use the
+command templatepkg with the -a (append) flag, which adds just the new installed packages in the
+template file.
+
+If you want to create a template from a jail, use
+
+ templatepkg jail /vservers/jail
+
+Metapackages
+------------
+
+Another use for the templates is the creation of metapackegs: new users have lots of difficulties
+to track dependencies when installing a software. Using a template containing the name of all
+packages needed by some program allow users to easily install it through the command
+
+ metapkg --install program-name
+
+This seems like swaret or slapt-get, with the only difference in the way metapkg deals with
+dependence resolution. Slapt-get support the slack-required file, wich comes or not with the
+package. Swaret has its own tool for dependence matching.
+
+Simplepkg doesn't wish to substitute those two dependence checking modes, but offer an alternate
+way to distribute packages where dependences are resolved without an specific tool or a change
+in the package itself.
+
+A metapackage, i.e, all installed packages from a template, can be removed with
+
+ metapkg --remove program-name
+
+Upgrading jails
+---------------
+
+Both the main installation (your root system) and your jails are upgraded with the command
+jail-upgrade: just adjust simplepkg.conf's PATCHES_DIR to where you store slackware patches
+(that can be rsync'ed everyday) and do a
+
+ jail-upgrade
+
+This will upgrade your main system and all jails living in JAIL_ROOT. To specify another
+folder, use
+
+ ROOT=/otherroot jail-upgrade
+
+If you want to upgrade just one specific jail,
+
+ jail-upgrade jail-name
+
+To use a patches folder other than PATCHES_DIR, e.g when you have jails with different
+slackware versions, use
+
+ PATCHES=/alternative/patches/folder jail-upgrade jail-name
+
+Different archs and versions
+----------------------------
+
+Simplepkg was idealized to permit a template to create jails from any architecture and version
+of a slackware-like system. Upgrading tasks also are unified. This feature just works if you
+use simplaret and not swaret as the package retrieval tool.
+
+As another example, to create an slack 10.1 installation (assuming your /etc/simplepkg/repos.conf with
+the right configuration), just type
+
+ VERSION=10.1 mkjail minha-jaula template-servidor
+
+Different archs can be used too. If you have a x86_64 system and wants to install a slack 10.2
+in a partition, try something like
+
+ ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+
+Note that the templates are arch and version independent, as they just contain package names,
+configuration files and scripts. For this reason, the commands templatepkg, metapkg, lspkg and
+jail-update can be used normaly.
+
+To upgrade jails with othes archs and versions, jail-upgrade checks this information through
+/etc/slackware-version for each jail and applies the correspondent patches grabed from
+simplaret (see the proper documentation).
+
+By this way, doesn't matter which versions and archs each of your jails has, jail-upgrade remains
+the same since your patches are sorted by arch an version, as explained in simplaret documentation
+found at http://slack.sarava.org/node/17.
+
+Auxiliar application: rebuildpkg
+--------------------------------
+
+Simplepkg comes with an additional helper tool that recover installed packages which the original
+.tgz file was lost. The command rebuildpkg rebuilds a package from their entry in /var/log/packages.
+As an example,
+
+ rebuildpkg coreutils
+
+rebuilds the coreutils package using the files, scripts and metainformations stored in
+/var/log/packages/ and /var/log/scripts/.
+
+Source
+------
+
+Source code for simplepkg and its package builder can be fetched via subversion:
+
+ svn checkout svn://slack.sarava.org:40/simplepkg
+
diff --git a/README.pt_BR b/README.pt_BR
new file mode 100644
index 0000000..b5b3ef0
--- /dev/null
+++ b/README.pt_BR
@@ -0,0 +1,248 @@
+Simplepkg: gerenciamento de instalações e metapacotes
+-----------------------------------------------------
+
+Autor: Silvio Rhatto <rhatto at riseup.net>
+Licença: GPL
+
+O simplepkg é um sistema de gerenciamento de pacotes que roda sobre o pkgtool.
+Ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração
+-- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa
+outra partição, criar um chroot específico ou até trabalhar com o conceito de metapacotes: uma
+lista de pacotes que pode ser instalada e removida com apenas um comando.
+
+Documentação
+------------
+
+A documentação mais atualizada do simplepkg está em http://slack.sarava.org/node/12
+
+Descrição
+---------
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão
+agora é a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos
+de configuração de uma máquina.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo
+que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email
+e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise
+cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que
+você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum
+detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina,
+por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O simplepkg permite que você mantenha um template para cada grupo de máquinas e com apenas um
+comando instalar o template numa partição. Além do template, você precisa configurar o simplepkg
+para obter pacotes de um repositório local ou remoto.
+
+Gerenciar instalações e metapacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na
+criação de vservers.
+
+Arquitetura
+-----------
+
+O simplepkg é um conjunto de scripts escritos com a filosofia KISS em mente. Ele é um sistema muito
+simples, composto pelos seguintes comandos:
+
+ - mkjail: constrói uma jaula/instalação de slackware numa pasta
+ - metapkg: instala ou remove um metapacote
+ - templatepkg: criar ou adiciona pacotes a um template
+ - lspkg: lista pacotes instalados
+ - jail-upgrade: faz o upgrade nas jaulas
+ - rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+ - simplaret: obtém pacotes de repositórios locais ou remotos
+
+A pasta de configuração e armazenamento de templates é a /etc/simplepkg. Templates são arquivos contendo
+uma lista de pacotes, um pacote por linha e com a extensão .template. Como exemplo, um template poderia se
+chamar minimo.template e conter a seguinte lista:
+
+ aaa_base
+ aaa_elflibs
+ apache
+ bash
+ bin
+ coreutils
+ findutils
+
+Se você quiser também é possível usar um tagfile do slackware como template, sem nem precisar editá-lo.
+
+Instalando o simplepkg
+----------------------
+
+Para baixar o pacote do simplepkg, vá em http://slack.sarava.org/packages/noarch/.
+
+ installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+
+Alternativamente, se você está com o swaret instalado, adicione em seu swaret.conf a linha
+
+ REPOS_ROOT=SlackMidiataticaNoarch%http://slack.sarava.org/packages/noarch
+
+e então digite
+
+ swaret --update
+ swaret --install simplepkg
+
+Configurando o simplepkg
+------------------------
+
+Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o
+arquivo /etc/simplepkg/simplepkg.conf:
+
+ # /etc/simplepkg/simplepkg.conf
+ JAIL_ROOT="/vservers" # local onde as jaulas serão criadas
+ SIMPLARET="simplaret" # programa que baixa os pacotes (pode ser o swaret se voce o tiver)
+ STORAGE="/var/simplaret" # local onde o simplepkg armazena seus pacotes
+ SIMPLARET_CLEAN="1" # apaga o cache de pacotes antes da instalação da jaula
+ SIMPLARET_DELETE_DOWN="1" # apaga o cache de pacotes após a instalação
+ SIMPLARET_UPDATE="0" # atualiza as listas de pacotes antes de iniciar a instalação da jaula
+ SIMPLARET_PURGE_WEEKS="N" # apaga os pacotes do cache mais velhos que N semanas antes de instalar
+ PATCHES_DIR="/var/simplaret/patches" # local os patches são armazenados
+ DEFAULT_ARCH="i386"
+ DEFAULT=VERSION="10.2"
+ STORAGE="/storage/packages" # where simplepkg store packages
+ PASSIVE_FTP="1"
+
+Para definir quais repositórios de pacotes você usará, edite o arquivo /etc/simplepkg/repos.conf,
+colocando algo como
+
+ ROOT-i386="http://slack.sarava.org/packages/slackware"
+ REPOS-i386="slack-sarava%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+ ROOT-x86_64-10.2="http://darkstar.ist.utl.pt/pub/slamd64/"
+ REPOS-x86_64-10.2="slamd-sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+
+Para informações detalhadas sobre o simplaret, consulte seu artigo específico em http://slack.sarava.org/node/16
+
+Se você quer utilizar o swaret em lugar do simplaret, o swaret.conf deve estar bem configurado para que ele
+seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como EXCLUDE podem ser um empecilho,
+e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via swaret --upgrade.
+A desvantagem de usar o swaret é que você não terá como administrar jaulas e instalações de múltiplas arquiteturas.
+
+Criando jaulas e replicando instalações
+---------------------------------------
+
+ templatepkg meu-slackware
+ mkjail jaula meu-slackware
+
+Isso cria o template meu-slackware a partir da sua lista de pacotes em /var/log/packages e cria uma nova árvore
+com esses pacotes na pasta /vservers/jaula (dependendo de qual o valor da variável JAIL_ROOT do simplepkg.conf, é claro).
+
+Se você quiser que alguns arquivos de configuração e executar scripts após a instalação dessa jaula, basta colocarmos na
+pasta /etc/simplepkg/meu-slackware.d/ os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é,
+/etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf) e os script em /etc/simplepkg/meu-slackware.s/. O template vserver,
+que já vem no mkjail contém um exemplo de script.
+
+Você pode especificar também destinos alternativos para sua jaula, através de um comando do tipo
+
+ ROOT=/mnt mkjail hda2 meu-slackware
+
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em /mnt/hda2, dispensando
+totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default.template.
+
+Se você manter uma jaula em JAIL_ROOT com o mesmo nome que um template, é possível ainda usar o script jail-update
+para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (/etc/simplepkg/nome-da-jaula.d).
+Assim, basta que você copie todos os arquivos de configuração que você editou para essa pasta e deixar o jail-update numa
+crontab para que você tenha sempre um template atualizado e baseado nas jaulas / instalações que você tem rodando e que
+estiverem listadas no arquivo /etc/simplepkg/jailist:
+
+ jail-update
+
+Para adicionar ou remover pacotes de um template, basta editar o arquivo de template. Uma outra forma de adicionar
+arquivos é usando o templatepkg com a opção -a, que adiciona apenas novos pacotes ao template. Se você quiser que o
+templatepkg crie um template a partir de uma jaula, simplesmente use
+
+ templatepkg jaula /vservers/jaula
+
+Metapacotes
+-----------
+
+Outro uso dos templates é a criação de pacotes: imagine por exemplo a dificuldade de um usuário/a novo de slackware
+para instalar o cinelerra e todas as suas dependências. Criando um template contendo o nome de todos os pacotes
+necessários para rodar esse software permite que um usuário instale-o simplesmente com o comando
+
+ metapkg --install cinelerra
+
+O comando sugere uma semelhança com o uso direto do swaret ou do slapt-get, com a única diferença residindo no
+modo como cada um desses programas lida com as dependências de um pacote. Os slapt-get suporta o arquivo
+slack-required, que pode ou não estar presente no pacote. Já o swaret possui uma ferramenta própria para a
+criação de uma lista de dependências.
+
+O simplepkg não pretende substituir esses dois modos de checagem e sim propor uma alternativa de distribuição
+de pacotes em que as dependências são resolvidas sem precisar de um repositório de dependências ou uma modificação
+no próprio pacote, que é o caso do slack-required, um arquivo que na maioria das vezes não está presente.
+
+A remoção de um aplicativo e todas as suas dependências podem ser feitas simplesmente com o comando
+
+ metapkg --remove cinelerra
+
+Upgrade de jaulas
+-----------------
+
+O upgrade de jaulas que estejam em JAIL_ROOT pode ser efetuado com o comando jail-upgrade. Simplesmente coloque
+os patches em PATCHES_DIR e dê o comando
+
+ jail-upgrade
+
+Se você quiser atualizar apenas uma das jaulas que estão em JAIL_ROOT, use
+
+ jail-upgrade nome-da-jaula
+
+Para especificar uma pasta contendo patches diferente de PATCHES_DIR (útil quando você possui jaulas com
+diferentes versões do slackware), simplesmente use
+
+ PATCHES=/local/dos/patches jail-upgrade nome-da-jaula
+
+De modo análogo ao mkjail, é possível indicar ao jail-upgrade uma outra pasta onde a jaula está armazenada:
+
+ ROOT=/otherroot jail-upgrade
+
+Arquiteturas e versões diferentes
+---------------------------------
+
+O simplepkg foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de
+arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também
+é unificada. Essa possibilidade só é permitida se você usa o simplaret e não o swaret como ferramenta
+de obtenção de pacotes.
+
+Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios
+do /etc/simplepkg/repos.conf contenham locais com slack 10.1), basta usar o comando
+
+ VERSION=10.1 mkjail minha-jaula template-servidor
+
+Arquiteturas diferentes também podem ser usadas. Se você está num sistema x86_64 e quer instalar um
+slack 10.2 numa partição, experimente
+
+ ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+
+Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes,
+arquivos de configuração e scripts. Por isso, o templatepkg, o metapkg, o lspkg e o jail-update
+funcionam normalmente.
+
+Para atualizar suas jaulas, o jail-upgrade checa antes qual a versão e arquitetura de cada uma
+de suas jaulas através do /etc/slackware-version correspondente e a partir disso aplica os patches
+da arquitetura e versão da mesma, usando para isso o simplaret (veja a documentação própria).
+
+Desse modo, mesmo que você tenha jaulas de versões e arquiteturas diversas, usar o comando "jail-upgrade"
+faz a atualização sem problemas, desde que seus patches estejam organizados por arquitetura e versão,
+conforme é detalhado na documentação do simplaret, em http://slack.sarava.org/node/16.
+
+Aplicativo auxiliar: rebuildpkg
+-------------------------------
+
+O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo tgz original
+foi perdido. O comando rebuildpkg reconstrói um pacote a partir de uma entrada no /var/log/packages. O comando
+
+ rebuildpkg coreutils
+
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo
+do /var/log/packages/ correspondente ao coreutils.
+
+Fonte
+-----
+
+Se você quiser obter diretamente o código-fonte do simplepkg, baixe-o do repositório:
+
+ svn checkout svn://slack.sarava.org:40/simplepkg
+
diff --git a/README.simplaret b/README.simplaret
new file mode 100644
index 0000000..ce7efbd
--- /dev/null
+++ b/README.simplaret
@@ -0,0 +1,143 @@
+simplaret: simplepkg retrieval tool
+-----------------------------------
+
+Simplaret is a simplepkg tool used to download packages from local and remote repositories.
+With simplaret, one can grab packages for all archictectures and versions of slackware-like
+distributions that follows the mirror guidelines, allowing an easy management all
+jails and slackware installations in a machine, no matter wich arquiteture or version
+each one has.
+
+It was inspired in swaret behavior but don't tries to get its complexity level, but
+execute package download in a different way, where the local repository is organized
+by archictecture and version. It can also search for packages.
+
+Documentation
+-------------
+
+The always updated english documentation is hosted at http://slack.sarava.org/node/17
+
+Downloading and installing
+--------------------------
+
+Simplaret comes with simplepkg, wich installation and configuration is detailed
+at http://slack.sarava.org/node/15. Simplaret uses /etc/simplepkg/simplepkg.conf for
+its definitions and /etc/simplepkg/repos.conf for repository information.
+
+Repository organization
+-----------------------
+
+Simplaret local storage folder is defined through STORAGE parameter and is organized
+in this manner:
+
+ $STORAGE/arch/version/
+
+Packages from contributed repositories (i.e, not from an official distro mirror) are
+stored at
+
+ $STORAGE/arch/version/repository-name/
+
+This means, for example, that slack 10.2 packages are located in
+
+ $STORAGE/i386/10.2/
+
+And the slack.sarava.org's slamd64 packages can be stored in a place such as
+
+ $STORAGE/x86_64/10.2/slack.sarava.org/
+
+In the repository definition file (/etc/simplepkg/repos.conf), the entries must match
+the following schema, something that remembers a swaret.conf:
+
+ ROOT-i386="http://slack.sarava.org/slackware/"
+ ROOT-x86_64="http://ftp.heanet.ie/pub/slamd64/"
+ REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+ REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+
+Repositories defined as ROOT are those wich
+
+ - Have packages from the official distro or
+ - Are organized by version according to the mirror guidelines
+
+Repositories defined as REPOS are those containing packages from a specific version or
+non-oficial packages.
+
+When simplaret searches for a package, precedence is given first for ROOT definitions and then
+for REPOS ones. REPOS definitions should also include a identification name, delimited from
+the repository URL by the special sign %.
+
+Fetching the package list
+-------------------------
+
+After configured, simplaret can fetch the package list with
+
+ simplaret --update
+
+This updates the package list from arch defined in DEFAULT_ARCH and version from DEFAULT_VERSION.
+To fetch package listings for x86_64 (slamd64) and version 10.2, use
+
+ ARCH=x86_64 VERSION=10.2 simplaret --update
+
+Searching
+---------
+
+To search for a package, use the following commands as examples:
+
+ simplaret --search coreutils
+
+for a Slack/390 package,
+
+ ARCH=s390 simplaret --search x11
+
+for slack 10.1 with contributed i686 packages,
+
+ ARCH=i686 VERSION=10.1 simplaret --search icecast
+
+Downloading
+-----------
+
+To download a package,
+
+ simplaret --get icecast
+
+Simplaret downloads the first package found with the precedence explaned above.
+Future versions should contain an option to explicit get a package from a
+specific repository.
+
+Downloading patches
+-------------------
+
+From the PATCHES_DIR parameter is possible to specify a folder where patches are
+placed, sorted by arch and version.
+
+Patches for slack 10.2 are always located at
+
+ $PATCHES_DIR/i386/10.2/
+
+In reality, patches are downloaded with a "simplaret --get" and stored in the $STORAGE
+subfolder for its arch and version and a symlink is created in $PATCHES_DIR/$ARCH/$VERSION.
+
+To grab all patches from an arch and version, use
+
+ ARCH=architecture VERSION=version simplaret --get-patches
+
+Purging the cache
+-----------------
+
+Simplaret cache from an arch and version can be purged with a
+
+ simplaret --purge
+
+But why use that?
+-----------------
+
+You may ask why someone wishes to use such tool.
+
+Simplaret was written with a *x86 environment in mind, where lots of jails with different archs
+and versions are installed. Suppose a x86_64 with the following chroots installed:
+
+ - slamd64 10.2
+ - slackware 10.2
+ - slackware 10.1 with additional i686 packages
+ - uSlack (i386 uClibc)
+
+Keep all this stuff update manually is really a headache. Simplaret just tries to make it trivial.
+
diff --git a/README.simplaret.pt_BR b/README.simplaret.pt_BR
new file mode 100644
index 0000000..164294b
--- /dev/null
+++ b/README.simplaret.pt_BR
@@ -0,0 +1,148 @@
+simplaret: ferramenta para obtenção de pacotes
+----------------------------------------------
+
+O simplaret é a ferramenta do simplepkg utilizada para obter pacotes de repositórios locais
+ou remotos. Com ele, você pode não só baixar pacotes do seu sistema slackware como também pode
+baixar de qualquer versão ou arquitetura cujo repositório siga os mirror guidelines, permitindo
+que você gerencie facilmente todas as suas jaulas e instalações de slackware, independentemente
+da arquitetura ou versão que elas utilizem.
+
+Ele foi inspirado no comportamento do swaret mas não pretende de modo algum chegar no nível de
+complexidade deste, mas sim executar a obtenção de pacotes de um modo diferente. Sua finalidade
+é apenas baixar pacotes para que os aplicativos do simplepkg possam utilizá-lo posteriormente.
+O simplaret ainda pode ser usado sozinho para procurar e baixar pacotes.
+
+Documentação
+------------
+
+A documentação atualizada do simplaret se encontra em http://slack.sarava.org/node/16
+
+Obtendo e instalando
+--------------------
+
+O simplaret acompanha o simplepkg e por isso sua instalação e configuração é dada no artigo dosimplepkg.
+Ele utiliza o mesmo arquivo de configuração do simplepkg, o /etc/simplepkg/simplepkg.conf e guarda as
+definições de repositórios em /etc/simplepkg/repos.conf.
+
+Organização do repositório
+--------------------------
+
+O repositório de armazenamento local do simplaret é definido pelo parâmetro STORAGE e é organizado
+da seguinte maneira:
+
+ $STORAGE/arch/version/
+
+Pacotes obtidos num repositório que não seja oficial da distribuição ficam em
+
+ $STORAGE/arch/version/repository-name/
+
+Isso quer dizer, por exemplo, que pacotes do slackware 10.2 ficariam em
+
+ $STORAGE/i386/10.2/
+
+e os pacotes obtidos a partir do repositório slamd64 do slack.sarava.org ficaria, por exemplo, em
+
+ $STORAGE/x86_64/10.2/slack.sarava.org/
+
+No arquivo de repositórios (/etc/simplepkg/repos.conf), as definições de repositório seguem o
+seguinte esquema, semelhante ao formato de configuração do swaret:
+
+ ROOT-i386="http://slack.sarava.org/slackware/"
+ ROOT-x86_64="http://ftp.heanet.ie/pub/slamd64/"
+ REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+ REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+
+Repositórios definidos como ROOT são aqueles que
+
+ - Possuem pacotes da distribuição oficial ou
+ - Estão organizados por versão, de acordo com os mirror guidelines
+
+Já os repositórios definidos como REPOS são aqueles que contém pacotes para uma versão específica e/ou
+que são não-oficiais.
+
+Quando o simplaret busca ou obtém um pacote, a precedência pelos repositórios é dada às definições de
+ROOT e em seguinda às de REPOS. As definições REPOS ainda devem possuir, além da URL do repositório, um
+nome para identificá-lo, sendo que esses dois campos são separados por um delimitador.
+
+Baixando as listas de pacotes
+-----------------------------
+
+Após configurá-lo, é preciso atualizar a lista de pacotes:
+
+ simplaret --update
+
+Isso atualiza a lista de pacotes da arquitetura definida em DEFAULT_ARCH e da versão DEFAULT_VERSION
+apenas. Se você quiser forçar a atualização, por exemplo, para a arquitetura x86_64 (slamd64)
+e versão 10.2, basta
+
+ ARCH=x86_64 VERSION=10.2 simplaret --update
+
+Buscando pacotes
+----------------
+
+Para buscar um pacote, esses comandos servem de exemplo:
+
+ simplaret --search coreutils
+
+pacote para o Slack/390,
+
+ ARCH=s390 simplaret --search x11
+
+e para slackware 10.1 com pacotes adicionais em i686,
+
+ ARCH=i686 VERSION=10.1 simplaret --search icecast
+
+Baixando um pacote
+------------------
+
+Para baixar um pacote:
+
+ simplaret --get icecast
+
+O simplaret baixa o primeiro pacote na ordem de precedência dos repositórios.
+Versões futuras deverão conter uma opção que force a obtenção do pacote de um
+repositório específico.
+
+Baixando patches
+----------------
+
+Através do parâmetro de configuração PATCHES_DIR é possível especificar uma pasta
+onde os patches de cada distribuição serão armazenados, organizados também por arquitetura.
+
+Por exemplo, patches do slackware 10.2 ficarão sempre em
+
+ $PATCHES_DIR/i386/10.2/
+
+Os patches na verdade são baixados através de um "simplaret --get" e armazenados na subpasta
+de $STORAGE correspondente e apenas um link simbólico é mantido em $PATCHES_DIR/$ARCH/$VERSION.
+
+Para baixar os patches, use uma chamada do tipo
+
+ ARCH=arquitetura VERSION=versao simplaret --get-patches
+
+E os patches dessa arquitetura e versão serão baixados.
+
+Apagando pacotes
+----------------
+
+O repositório de pacotes de uma arquitetura e versão pode ser apagado com o comando
+
+ simplaret --purge
+
+Mas pra quê serve isso?
+-----------------------
+
+Você pode estar se perguntando: quem utilizaria uma ferramenta que baixa pacotes de várias arquiteturas?
+
+O simplaret foi escrito tendo em mente um ambiente *86 onde várias jaulas de diferentes arquiteturas estão
+instaladas. Suponha por exemplo uma máquina x86_64 que possua as seguintes jaulas:
+
+ - slamd64 10.2
+ - slackware 10.2
+ - slackware 10.1 com pacotes adicionais em i686
+ - uSlack (uClibc para i386)
+
+O condenado/a em questão que roda todas essas jaulas, pelos mais diversos motivos, pode ter uma grande dor
+de cabeça para manter os pacotes em ordem de forma manual. Com o simplaret e eventualmente com o simplepkg,
+a tarefa se torna trivial.
+
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..9178f6e
--- /dev/null
+++ b/TODO
@@ -0,0 +1,5 @@
+simplepkg todo list
+-------------------
+
+TODO list at http://slack.sarava.org/wiki/Main/SimplePKG
+
diff --git a/common.sh b/common.sh
new file mode 100644
index 0000000..af31da3
--- /dev/null
+++ b/common.sh
@@ -0,0 +1,180 @@
+#!/bin/bash
+#
+# common.sh: common functions for simplepkg
+# feedback: rhatto at riseup.net | gpl
+#
+# Uses some functions from pkgtools, which license is:
+#
+# Copyright 1999 Patrick Volkerding, Moorhead, Minnesota, USA
+# Copyright 2001, 2002, 2003 Slackware Linux, Inc., Concord, California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+BASE_CONF="/etc/simplepkg"
+CONF="$BASE_CONF/simplepkg.conf"
+JAIL_LIST="$BASE_CONF/jailist"
+
+# pkgtool stuff
+function package_name {
+ STRING=`basename $1 .tgz`
+ # Check for old style package name with one segment:
+ if [ "`echo $STRING | cut -f 1 -d -`" = "`echo $STRING | cut -f 2 -d -`" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "`echo $STRING | cut -f $INDEX -d -`" = "" ]; do
+ INDEX=`expr $INDEX + 1`
+ done
+ INDEX=`expr $INDEX - 1` # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=`expr $INDEX - 3`
+ NAME="`echo $STRING | cut -f 1-$NAME -d -`"
+ echo $NAME
+ fi
+ fi
+}
+
+function install_packages {
+
+ if [[ "$SIMPLARET_CLEAN" == "1" ]]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ elif [[ ! -z "$SIMPLARET_PURGE_WEEKS" ]] && [[ "$SIMPLARET_PURGE_WEEKS" != "0" ]]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge -w $SIMPLARET_PURGE_WEEKS
+ fi
+
+ for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
+ package_downloaded="0"
+ if [ "$SIMPLARET" == "simplaret" ]; then
+ extrafolder="$ARCH/$VERSION/"
+ else
+ unset extrafolder
+ fi
+ for file in `find $STORAGE/$extrafolder -name $pack*tgz`; do
+ if [[ "`package_name $file`" == "$pack" ]]; then
+ package_downloaded="1"
+ package_file="$file"
+ break
+ fi
+ done
+ if [[ "$package_downloaded" != "1" ]]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --get $pack -a
+ for file in `find $STORAGE/$extrafolder -name $pack*tgz`; do
+ if [[ "`package_name $file`" == "$pack" ]]; then
+ package_file="$file"
+ break
+ fi
+ done
+ fi
+ if [ -z "$package_file" ]; then
+ echo error: could not install package $pack
+ else
+ installed_packs="`ls /$JAIL_ROOT/$server/var/log/packages/$pack* 2> /dev/null`"
+ if [ ! -z "$installed_packs" ]; then
+ for installed in $installed_packs; do
+ if [[ "$pack" == "`package_name $installed.tgz`" ]]; then
+ echo "package $pack already installed in $JAIL_ROOT/$server ($installed)"
+ package_installed="1"
+ break
+ fi
+ if [[ "$package_installed" != "1" ]]; then
+ installpkg -root /$JAIL_ROOT/$server $package_file
+ unset package_installed
+ if [ ! -z "$SIMPLARET_DELETE_DURING" ] && [ "$SIMPLARET_DELETE_DURING" != "0" ]; then
+ SILENT=1 ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ fi
+ break
+ fi
+ done
+ else
+ installpkg -root /$JAIL_ROOT/$server $package_file
+ if [ ! -z "$SIMPLARET_DELETE_DURING" ] && [ "$SIMPLARET_DELETE_DURING" != "0" ]; then
+ SILENT=1 ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ fi
+ fi
+ fi
+ unset package_file
+ done
+ if [[ "$SIMPLARET_DELETE_DOWN" == "1" ]]; then
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+ fi
+}
+
+function remove_packages {
+ for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
+ ROOT=/$JAIL_ROOT/$server removepkg $pack
+ done
+}
+
+function eval_config {
+ if [ -f "$CONF" ]; then
+ source $CONF
+ else
+ echo $1 error: config file $CONFIG not found
+ exit 1
+ fi
+
+ if [ -z "$SIMPLARET" ]; then
+ SIMPLARET="simplaret"
+ fi
+
+ if [ -z "$STORAGE" ]; then
+ if [ -d "/var/$SIMPLARET" ]; then
+ STORAGE="/var/$SIMPLARET"
+ else
+ echo error: please adjust value for STORAGE at $CONF
+ exit 1
+ fi
+ fi
+
+ if [ ! -z "$ROOT" ]; then
+ JAIL_ROOT="$ROOT"
+ elif [ -z "$JAIL_ROOT" ]; then
+ echo error: please adjust value for JAIL_ROOT at $CONF
+ exit 1
+ fi
+
+ if [ -z "$ARCH" ]; then
+ ARCH="$DEFAULT_ARCH"
+ fi
+
+ if [ -z "$VERSION" ]; then
+ VERSION="$DEFAULT_VERSION"
+ fi
+
+ if which $SIMPLARET &> /dev/null; then
+ if [[ "$SIMPLARET_UPDATE" == "1" ]]; then
+ if [[ "$2" == "-u" ]]; then
+ echo "updating package database..."
+ ARCH=$ARCH VERSION=$VERSION $SIMPLARET --update
+ fi
+ fi
+ else
+ echo "$SIMPLARET not found, please install it before run $0"
+ fi
+
+ if [ -z "PATCHES_DIR" ]; then
+ echo error: please adjust a value for PATCHES_DIR at $CONF
+ fi
+}
+
diff --git a/doc/simplepkg.aux b/doc/simplepkg.aux
new file mode 100644
index 0000000..ad47a5f
--- /dev/null
+++ b/doc/simplepkg.aux
@@ -0,0 +1,30 @@
+\relax
+\catcode`"\active
+\ifx\hyper@anchor\@undefined
+\global \let \oldcontentsline\contentsline
+\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global \let \oldnewlabel\newlabel
+\gdef \newlabel#1#2{\newlabelxx{#1}#2}
+\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\let \contentsline\oldcontentsline
+\let \newlabel\oldnewlabel}
+\else
+\global \let \hyper@last\relax
+\fi
+
+\select@language{brazilian}
+\@writefile{toc}{\select@language{brazilian}}
+\@writefile{lof}{\select@language{brazilian}}
+\@writefile{lot}{\select@language{brazilian}}
+\newlabel{start}{{}{1}{\relax }{}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Descri\c c\~ao}{1}{section.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {2}Arquitetura}{2}{section.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {3}Instalando o simplepkg}{2}{section.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {4}Configurando o simplepkg}{3}{section.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {5}Criando jaulas e replicando instala\c c\~oes}{3}{section.5}}
+\@writefile{toc}{\contentsline {section}{\numberline {6}Metapacotes}{4}{section.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Upgrade de jaulas}{5}{section.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Arquiteturas e vers\~oes diferentes}{5}{section.8}}
+\@writefile{toc}{\contentsline {section}{\numberline {9}Aplicativo auxiliar: rebuildpkg}{6}{section.9}}
+\@writefile{toc}{\contentsline {section}{\numberline {10}Fonte}{6}{section.10}}
+\@writefile{toc}{\contentsline {section}{\numberline {11}P\'agina de desenvolvimento}{6}{section.11}}
diff --git a/doc/simplepkg.dvi b/doc/simplepkg.dvi
new file mode 100644
index 0000000..2779fbe
--- /dev/null
+++ b/doc/simplepkg.dvi
Binary files differ
diff --git a/doc/simplepkg.html b/doc/simplepkg.html
new file mode 100644
index 0000000..85b2b06
--- /dev/null
+++ b/doc/simplepkg.html
@@ -0,0 +1,201 @@
+O <i>simplepkg</i> é um sistema de gerenciamento de pacotes que roda sobre o <i>pkgtool</i> e o <i>swaret</i>. Ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa outra partição, criar um chroot específico ou até trabalhar com o conceito de <i>metapacotes</i>: uma lista de pacotes que pode ser instalada e removida com apenas um comando.
+<!--break-->
+<b>Descrição</b>
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão agora é a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos de configuração de uma máquina.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina, por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O simplepkg permite que você mantenha um template para cada grupo de máquinas e com apenas um comando instalar o template numa partição. Além do template, você precisa do <i>swaret</i> configurado para os repositórios de pacote que possuem seus aplicativos.
+
+Gerenciar instalações e metapacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na criação de <i>vservers</i>. O simplepkg inclusive é um amadurecimento de idéias delineadas nos seguintes artigos:
+
+- <a href="/node/3">Rodando o OpenOffice.org em chroot no Slamd64</a>
+- <a href="/node/6">Linux Vservers e segurança por contexto</a>
+- <a href="/node/7">Instalando o Slackware sem programa de instalação</a>
+
+O <i>simplepkg</i> permite que o trampo proposto nos artigos acima seja simplificado a uma meia dúzia de comandos, desde que existam templates prontos.
+
+<b>Arquitetura</b>
+
+O <i>simplepkg</i> é um conjunto de scripts escritos com a filosofia KISS em mente. Ele é um sistema muito simples, composto pelos seguintes comandos:
+
+- mkjail: constrói uma jaula/instalação de slackware numa pasta
+- metapkg: instala ou remove um metapacote
+- templatepkg: criar ou adiciona pacotes a um template
+- lspkg: lista pacotes instalados
+- jail-upgrade: faz o upgrade nas jaulas
+- rebuildpkg: reconstrói um pacote a partir de sua entrada no <i>/var/log/packages</i>
+
+A pasta de configuração e armazenamento de templates é a <i>/etc/simplepkg</i>. Templates são arquivos contendo uma lista de pacotes, um pacote por linha e com a extensão <i>.template</i>. Como exemplo, um template poderia se chamar <i>minimo.template</i> e conter a seguinte lista:
+
+
+<pre>
+aaa_base
+aaa_elflibs
+apache
+bash
+bin
+coreutils
+findutils
+</pre>
+
+<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;
+Se você quiser também é possível usar um <i>tagfile</i> do slackware como template, sem nem precisar editá-lo.
+
+<b>Instalando o simplepkg</b>
+
+Para baixar o pacote do simplepkg, vá em http://slack.midiatatica.org/packages/noarch/. Depois de instalá-lo, não esqueça de configurar seu <i>swaret</i>:
+
+<pre>
+installpkg swaret-VERSAO-noarch-BUILD.tgz simplepkg-VERSAO-noarch-BUILD.tgz
+</pre>
+
+<br>&nbsp;
+Alternativamente, se você já está com o swaret instalado, adicione em seu <i>swaret.conf</i> a linha
+
+<pre>
+REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.org/packages/noarch
+</pre>
+
+<br>&nbsp;
+e então digite
+
+<pre>
+swaret --update
+swaret --install simplepkg
+</pre>
+
+<br>&nbsp;<br>&nbsp;
+<b>Configurando o simplepkg</b>
+
+Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o arquivo <i>/etc/simplepkg/simplepkg.conf</i>:
+
+<pre>
+# /etc/simplepkg/simplepkg.conf
+JAIL_ROOT="/vservers" # local onde as jaulas serão criadas
+SWARET_PACKS="/var/swaret" # local onde o swaret armazena seus pacotes
+SWARET_CLEAN="1" # apaga o cache de pacotes antes da instalação da jaula
+SWARET_DELETE_DOWN="1" # apaga o cache de pacotes após a instalação
+SWARET_UPDATE="0" # executa um swaret --update antes de iniciar a instalação da jaula
+SWARET_PURGE_WEEKS="N" # apaga os pacotes do cache mais velhos que N semanas antes de instalar
+PATCHES_DIR="/var/swaret/patches" # local os patches são armazenados
+</pre>
+
+<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;
+O <i>swaret.conf</i> deve estar bem configurado para que ele seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como <i>EXCLUDE</i> podem ser um empecilho, e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via <i>swaret --upgrade</i>.
+
+<b>Criando jaulas e replicando instalações</b>
+
+<pre>
+templatepkg meu-slackware
+mkjail jaula meu-slackware
+</pre>
+
+<br>&nbsp;<br>&nbsp;
+Isso cria o template <i>meu-slackware</i> a partir da sua lista de pacotes em <i>/var/log/packages</i> e cria uma nova árvore com esses pacotes na pasta <i>/vservers/jaula</i> (dependendo de qual o valor da variável <i>JAIL_ROOT</i> do simplepkg.conf, é claro).
+
+Se você quiser que alguns arquivos de configuração e executar scripts após a instalação dessa jaula, basta colocarmos na pasta <i>/etc/simplepkg/meu-slackware.d/</i> os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é, <i>/etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf</i>) e os script em <i>/etc/simplepkg/meu-slackware.s/</i>. O template <i>vserver</i>, que já vem no mkjail contém um exemplo de script.
+
+Você pode especificar também destinos alternativos para sua jaula, através de um comando do tipo
+
+<pre>
+ROOT=/mnt mkjail hda2 meu-slackware
+</pre>
+
+<br>&nbsp;
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em </i>/mnt/hda2</i>, dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o <i>mkjail</i> utiliza o template <i>/etc/simplepkg/default.template</i>.
+
+Se você manter uma jaula em <i>JAIL_ROOT</i> com o mesmo nome que um template, é possível ainda usar o script <i>jail-update</i> para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (<i>/etc/simplepkg/nome-da-jaula.d</i>). Assim, basta que você copie todos os arquivos de configuração que você editou para essa pasta e deixar o <i>jail-update</i> numa crontab para que você tenha sempre um template atualizado e baseado nas jaulas / instalações que você tem rodando e que estiverem listadas no arquivo <i>/etc/simplepkg/jailist</i>:
+
+<pre>
+jail-update
+</pre>
+
+<br>&nbsp;
+O <i>jail-update</i> considera que o template <i>main</i>, caso exista, se refere à instalação principal da sua máquina, isto é, o sistema de você roda. Dessa forma a invocação do <i>jail-update</i> atualiza todos os templates cujas jaulas estão em <i>JAIL_ROOT</i> e ainda atualiza o template da instalação principal.
+
+Para adicionar ou remover pacotes de um template, basta editar o arquivo de template. Uma outra forma de adicionar arquivos é usando o <i>templatepkg</i> com a opção <i>-a</i>, que adiciona apenas novos pacotes ao template. Se você quiser que o <i>templatepkg</i> crie um template a partir de uma jaula, simplesmente use
+
+<pre>
+templatepkg jaula /vservers/jaula
+</pre>
+
+<br>&nbsp;
+<b>Metapacotes</b>
+
+Outro uso dos templates é a criação de pacotes: imagine por exemplo a dificuldade de um usuário/a novo de slackware para instalar o cinelerra e todas as suas dependências. Criando um template contendo o nome de todos os pacotes necessários para rodar esse software permite que um usuário instale-o simplesmente com o comando
+
+<pre>
+metapkg --install cinelerra
+</pre>
+
+<br>&nbsp;
+O comando sugere uma semelhança com o uso direto do <i>swaret</i> ou do <i>slapt-get</i>, com a única diferença residindo no modo como cada um desses programas lida com as dependências de um pacote. Os <i>slapt-get</i> suporta o arquivo <i>slack-required</i>, que pode ou não estar presente no pacote. Já o <i>swaret</i> possui uma ferramenta própria para a criação de uma lista de dependências.
+
+O <i>simplepkg</i> não pretende substituir esses dois modos de checagem e sim propor uma alternativa de distribuição de pacotes em que as dependências são resolvidas sem precisar de um repositório de dependências ou uma modificação no próprio pacote, que é o caso do <i>slack-required</i>, um arquivo que na maioria das vezes não está presente.
+
+A remoção de um aplicativo e todas as suas dependências podem ser feitas simplesmente com o comando
+
+<pre>
+metapkg --remove cinelerra
+</pre>
+
+<br>&nbsp;
+<b>Upgrade de jaulas</b>
+
+O upgrade de jaulas que estejam em <i>JAIL_ROOT</i> pode ser efetuado com o comando <i>jail-upgrade</i>. Simplesmente coloque os patches em <i>PATCHES_DIR</i> e dê o comando
+
+<pre>
+jail-upgrade
+</pre>
+
+<br>&nbsp;
+Se você quiser atualizar apenas uma das jaulas que estão em <i>JAIL_ROOT</i>, use
+
+<pre>
+jail-upgrade nome-da-jaula
+</pre>
+
+<br>&nbsp;
+Para especificar uma pasta contendo patches diferente de <i>PATCHES_DIR</i> (útil quando você possui jaulas com diferentes versões do slackware), simplesmente use
+
+<pre>
+PATCHES=/local/dos/patches jail-upgrade nome-da-jaula
+</pre>
+
+<br>&nbsp;
+De modo análogo ao <i>mkjail</i>, é possível indicar ao <i>jail-upgrade</i> uma outra pasta onde a jaula está armazenada:
+
+<pre>
+ROOT=/otherroot jail-upgrade
+</pre>
+
+<br>&nbsp;
+<b>Aplicativo auxiliar: rebuildpkg</b>
+
+O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando <i>rebuildpkg</i> reconstrói um pacote a partir de uma entrada no <i>/var/log/packages</i>. O comando
+
+<pre>
+rebuildpkg coreutils
+</pre>
+
+<br>&nbsp;
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do <i>/var/log/packages/</i> correspondente ao coreutils.
+
+<b>Fonte</b>
+
+Se você quiser obter diretamente o código-fonte do <i>simplepkg</i>, baixe-o do repositório:
+
+<pre>
+svn checkout svn://slack.midiatatica.org:40/simplepkg
+</pre>
+
+<br>&nbsp;
+<b>Página de desenvolvimento</b>
+
+A página de desenvolvimento do <i>simplepkg</i> fica <a href="http://slack.midiatatica.org/wiki/Main/SimplePKG">aqui</a>.
diff --git a/doc/simplepkg.log b/doc/simplepkg.log
new file mode 100644
index 0000000..c6a55ef
--- /dev/null
+++ b/doc/simplepkg.log
@@ -0,0 +1,286 @@
+This is TeX, Version 3.14159 (Web2C 7.4.5) (format=latex 2005.1.14) 10 FEB 2006 12:19
+**simplepkg.tex
+(./simplepkg.tex
+LaTeX2e <2001/06/01>
+Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
+ohyphenation, loaded.
+(/usr/share/texmf/tex/latex/base/article.cls
+Document Class: article 2001/04/21 v1.4e Standard LaTeX document class
+(/usr/share/texmf/tex/latex/base/size10.clo
+File: size10.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/share/texmf/tex/generic/babel/babel.sty
+Package: babel 2001/03/01 v3.7h The Babel package
+
+(/usr/share/texmf/tex/generic/babel/portuges.ldf
+Language: portuges 2001/02/16 v1.2o Portuguese support from the babel system
+
+(/usr/share/texmf/tex/generic/babel/babel.def
+File: babel.def 2001/03/01 v3.7h Babel common definitions
+\babel@savecnt=\count87
+\U@D=\dimen103
+)
+
+Package babel Warning: No hyphenation patterns were loaded for
+(babel) the language `Portuguese'
+(babel) I will use the patterns loaded for \language=0 instead.
+
+\l@portuges = a dialect from \language0
+\l@brazilian = a dialect from \language\l@portuges
+Package babel Info: Making " an active character on input line 126.
+)) (/usr/share/texmf/tex/latex/base/inputenc.sty
+Package: inputenc 2001/07/10 v0.99a Input encoding file
+
+(/usr/share/texmf/tex/latex/base/latin1.def
+File: latin1.def 2001/07/10 v0.99a Input encoding file
+))
+(/usr/share/texmf/tex/latex/graphics/graphics.sty
+Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/share/texmf/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/share/texmf/tex/latex/config/graphics.cfg
+File: graphics.cfg 2001/08/31 v1.1 graphics configuration of teTeX/TeXLive
+)
+Package graphics Info: Driver file: dvips.def on input line 80.
+
+(/usr/share/texmf/tex/latex/graphics/dvips.def
+File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
+))
+(/usr/share/texmf/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2003/01/22 v6.73n Hypertext links for LaTeX
+
+(/usr/share/texmf/tex/latex/graphics/keyval.sty
+Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+\@linkdim=\dimen104
+\Hy@linkcounter=\count88
+\Hy@pagecounter=\count89
+
+(/usr/share/texmf/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2003/01/22 v6.73n Hyperref: PDFDocEncoding definition (HO)
+)
+(/usr/share/texmf/tex/latex/config/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
+)
+Package hyperref Info: Hyper figures OFF on input line 1792.
+Package hyperref Info: Link nesting OFF on input line 1797.
+Package hyperref Info: Hyper index ON on input line 1800.
+Package hyperref Info: Plain pages ON on input line 1805.
+Package hyperref Info: Backreferencing OFF on input line 1812.
+
+Implicit mode ON; LaTeX internals redefined
+Package hyperref Info: Bookmarks ON on input line 1916.
+(/usr/share/texmf/tex/latex/html/url.sty
+Package: url 1999/03/02 ver 1.4 Verb mode for urls, email addresses, and file
+ names
+)
+LaTeX Info: Redefining \url on input line 2055.
+\Fld@menulength=\count90
+\Field@Width=\dimen105
+\Fld@charsize=\dimen106
+\Choice@toks=\toks15
+\Field@toks=\toks16
+Package hyperref Info: Hyper figures OFF on input line 2513.
+Package hyperref Info: Link nesting OFF on input line 2518.
+Package hyperref Info: Hyper index ON on input line 2521.
+Package hyperref Info: backreferencing OFF on input line 2528.
+Package hyperref Info: Link coloring OFF on input line 2533.
+\c@Item=\count91
+\c@Hfootnote=\count92
+)
+*hyperref using default driver hdvips*
+(/usr/share/texmf/tex/latex/hyperref/hdvips.def
+File: hdvips.def 2003/01/22 v6.73n Hyperref driver for dvips
+
+(/usr/share/texmf/tex/latex/hyperref/pdfmark.def
+File: pdfmark.def 2003/01/22 v6.73n Hyperref definitions for pdfmark specials
+\pdf@docset=\toks17
+\pdf@box=\box26
+\pdf@toks=\toks18
+\pdf@defaulttoks=\toks19
+\Fld@listcount=\count93
+\@outlinefile=\write3
+)) (./simplepkg.aux)
+\openout1 = `simplepkg.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 11.
+LaTeX Font Info: ... okay on input line 11.
+Package hyperref Info: Link coloring OFF on input line 11.
+
+(/usr/share/texmf/tex/latex/hyperref/nameref.sty
+Package: nameref 2001/01/27 v2.19 Cross-referencing by name of section
+\c@section@level=\count94
+)
+LaTeX Info: Redefining \ref on input line 11.
+LaTeX Info: Redefining \pageref on input line 11.
+ (./simplepkg.out)
+(./simplepkg.out)
+\openout3 = `simplepkg.out'.
+
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <12> on input line 13.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <8> on input line 13.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <6> on input line 13.
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 31.
+ (/usr/share/texmf/tex/latex/base/omscmr.fd
+File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
+(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 31.
+ [1
+
+]
+Overfull \hbox (15.53741pt too wide) in paragraph at lines 48--49
+[]\OT1/cmr/m/n/10 rebuildpkg: re-con-str^^Soi um pa-cote a par-tir de sua en-tr
+ada no \OT1/cmr/m/it/10 /var/log/packages
+ []
+
+
+Overfull \hbox (40.63974pt too wide) in paragraph at lines 68--69
+\OT1/cmr/m/n/10 Para baixar o pa-cote do sim-plepkg, v^^Sa em http://slack.midi
+atatica.org/packages/noarch/.
+ []
+
+
+Overfull \hbox (64.49643pt too wide) in paragraph at lines 78--78
+[]\OT1/cmtt/m/n/10 REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.o
+rg/packages/noarch[]
+ []
+
+[2]
+Overfull \hbox (122.24593pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET="simplaret" # programa que baixa os pacotes (pode
+ser o swaret se voce o tiver)[]
+ []
+
+
+Overfull \hbox (11.99689pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 STORAGE="/var/simplaret" # local onde o swaret armazena seus
+ pacotes[]
+ []
+
+
+Overfull \hbox (48.74657pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_CLEAN="1" # apaga o cache de pacotes antes da inst
+ala^^Xc~ao da jaula[]
+ []
+
+
+Overfull \hbox (22.4968pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_DELETE_DOWN="1" # apaga o cache de pacotes ap^^Sos
+ a instala^^Xc~ao[]
+ []
+
+
+Overfull \hbox (132.74583pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_UPDATE="0" # atualiza as listas de pacotes antes d
+e iniciar a instala^^Xc~ao da jaula[]
+ []
+
+
+Overfull \hbox (116.99597pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 SIMPLARET_PURGE_WEEKS="N" # apaga os pacotes mais velhos que
+ N semanas antes de instalar[]
+ []
+
+
+Overfull \hbox (27.74675pt too wide) in paragraph at lines 101--101
+[]\OT1/cmtt/m/n/10 PATCHES_DIR="/var/simplaret/patches" # local os patches s~ao
+ armazenados[]
+ []
+
+
+Overfull \hbox (77.7997pt too wide) in paragraph at lines 103--104
+[]\OT1/cmr/m/n/10 Para definir quais reposit^^Sorios de pa-cotes voc^e usar^^Sa
+, edite o ar-quivo \OT1/cmr/m/it/10 /etc/simplepkg/repos.conf\OT1/cmr/m/n/10 ,
+ []
+
+
+Overfull \hbox (64.49643pt too wide) in paragraph at lines 110--110
+[]\OT1/cmtt/m/n/10 REPOS-i386="slack-midiatatica%http://slack.midiatatica.org/p
+ackages/slackware"[]
+ []
+
+
+Overfull \hbox (90.7462pt too wide) in paragraph at lines 110--110
+[]\OT1/cmtt/m/n/10 REPOS-x86_64-10.2="slamd-midiatatica%http://slack.midiatatic
+a.org/packages/slamd64"[]
+ []
+
+
+Overfull \hbox (16.50899pt too wide) in paragraph at lines 123--124
+\OT1/cmr/m/it/10 /var/log/packages \OT1/cmr/m/n/10 e cria uma nova ^^Sarvore co
+m esses pa-cotes na pasta \OT1/cmr/m/it/10 /vservers/jaula
+ []
+
+
+Overfull \hbox (12.48833pt too wide) in paragraph at lines 125--126
+\OT1/cmr/m/n/10 in-stala^^Xc~ao dessa jaula, basta colo-car-mos na pasta \OT1/c
+mr/m/it/10 /etc/simplepkg/meu-slackware.d/
+ []
+
+
+Overfull \hbox (54.39502pt too wide) in paragraph at lines 125--126
+\OT1/cmr/m/it/10 /etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf\OT1/cmr/m
+/n/10 ) e os script em \OT1/cmr/m/it/10 /etc/simplepkg/meu-
+ []
+
+[3]
+Overfull \hbox (97.57161pt too wide) in paragraph at lines 135--136
+[]\OT1/cmr/m/n/10 Caso nen-hum tem-plate for es-peci-fi-cado, o \OT1/cmr/m/it/1
+0 mk-jail \OT1/cmr/m/n/10 uti-liza o tem-plate \OT1/cmr/m/it/10 /etc/simplepkg/
+default.template\OT1/cmr/m/n/10 .
+ []
+
+[4] [5]
+Overfull \hbox (13.77249pt too wide) in paragraph at lines 231--232
+\OT1/cmr/m/n/10 Se voc^e quiser obter di-re-ta-mente o c^^Sodigo-fonte do \OT1/
+cmr/m/it/10 sim-plepkg\OT1/cmr/m/n/10 , baixe-o do reposit^^Sorio:
+ []
+
+
+Overfull \hbox (17.25352pt too wide) in paragraph at lines 239--240
+\OT1/cmr/m/n/10 A p^^Sagina do \OT1/cmr/m/it/10 sim-plepkg \OT1/cmr/m/n/10 fica
+ em [][][][].
+ []
+
+[6] (./simplepkg.aux) )
+Here is how much of TeX's memory you used:
+ 2420 strings out of 95847
+ 32073 string characters out of 1195948
+ 90698 words of memory out of 1000001
+ 5358 multiletter control sequences out of 10000+50000
+ 8746 words of font info for 31 fonts, out of 500000 for 1000
+ 14 hyphenation exceptions out of 1000
+ 25i,6n,36p,605b,344s stack positions out of 1500i,500n,5000p,200000b,5000s
+
+Output written on simplepkg.dvi (6 pages, 25288 bytes).
diff --git a/doc/simplepkg.out b/doc/simplepkg.out
new file mode 100644
index 0000000..4839e4e
--- /dev/null
+++ b/doc/simplepkg.out
@@ -0,0 +1,11 @@
+\BOOKMARK [1][-]{section.1}{Descri\347\343o}{}
+\BOOKMARK [1][-]{section.2}{Arquitetura}{}
+\BOOKMARK [1][-]{section.3}{Instalando o simplepkg}{}
+\BOOKMARK [1][-]{section.4}{Configurando o simplepkg}{}
+\BOOKMARK [1][-]{section.5}{Criando jaulas e replicando instala\347\365es}{}
+\BOOKMARK [1][-]{section.6}{Metapacotes}{}
+\BOOKMARK [1][-]{section.7}{Upgrade de jaulas}{}
+\BOOKMARK [1][-]{section.8}{Arquiteturas e vers\365es diferentes}{}
+\BOOKMARK [1][-]{section.9}{Aplicativo auxiliar: rebuildpkg}{}
+\BOOKMARK [1][-]{section.10}{Fonte}{}
+\BOOKMARK [1][-]{section.11}{P\341gina de desenvolvimento}{}
diff --git a/doc/simplepkg.pdf b/doc/simplepkg.pdf
new file mode 100644
index 0000000..9895ebb
--- /dev/null
+++ b/doc/simplepkg.pdf
Binary files differ
diff --git a/doc/simplepkg.tex b/doc/simplepkg.tex
new file mode 100644
index 0000000..7c98e54
--- /dev/null
+++ b/doc/simplepkg.tex
@@ -0,0 +1,241 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\newcommand\link{\hyperlink}
+
+\title{Gerenciamento de instalações e metapacotes com o simplepkg}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+O \emph{simplepkg} é um sistema de gerenciamento de pacotes que roda sobre o \emph{pkgtool}. Ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa outra partição, criar um chroot específico ou até trabalhar com o conceito de \emph{metapacotes}: uma lista de pacotes que pode ser instalada e removida com apenas um comando.
+\end{abstract}
+
+\section{Descrição}
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão agora é a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos de configuração de uma máquina.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina, por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O simplepkg permite que você mantenha um template para cada grupo de máquinas e com apenas um comando instalar o template numa partição. Além do template, você precisa do \emph{swaret} configurado para os repositórios de pacote que possuem seus aplicativos.
+
+Gerenciar instalações e metapacotes não é tudo o que o simplepkg faz. Ele pode ser usado até na criação de \emph{vservers}. O simplepkg inclusive é um amadurecimento de idéias delineadas nos seguintes artigos:
+
+\begin{itemize}
+ \item \link{/node/3}{Rodando o OpenOffice.org em chroot no Slamd64}
+ \item \link{/node/6}{Criando Vservers em Slackware}
+ \item \link{/node/7}{Instalando o Slackware sem programa de instalação}
+\end{itemize}
+
+O \emph{simplepkg} permite que o trampo proposto nos artigos acima seja simplificado a uma meia dúzia de comandos, desde que existam templates prontos.
+
+\section{Arquitetura}
+
+O \emph{simplepkg} é um conjunto de scripts escritos com a filosofia KISS em mente. Ele é um sistema muito simples, composto pelos seguintes comandos:
+
+\begin{itemize}
+ \item mkjail: constrói uma jaula/instalação de slackware numa pasta
+ \item metapkg: instala ou remove um metapacote
+ \item templatepkg: criar ou adiciona pacotes a um template
+ \item lspkg: lista pacotes instalados
+ \item jail-upgrade: faz o upgrade nas jaulas
+ \item rebuildpkg: reconstrói um pacote a partir de sua entrada no \emph{/var/log/packages}
+ \item simplaret: obtém pacotes de repositórios locais ou remotos
+\end{itemize}
+
+A pasta de configuração e armazenamento de templates é a \emph{/etc/simplepkg}. Templates são arquivos contendo uma lista de pacotes, um pacote por linha e com a extensão \emph{.template}. Como exemplo, um template poderia se chamar \emph{minimo.template} e conter a seguinte lista:
+
+\begin{verbatim}
+aaa_base
+aaa_elflibs
+apache
+bash
+bin
+coreutils
+findutils
+\end{verbatim}
+
+Se você quiser também é possível usar um \emph{tagfile} do slackware como template, sem nem precisar editá-lo.
+
+\section{Instalando o simplepkg}
+
+Para baixar o pacote do simplepkg, vá em http://slack.midiatatica.org/packages/noarch/. Depois de instalá-lo.
+
+\begin{verbatim}
+installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+\end{verbatim}
+
+Alternativamente, se você usa o swaret, adicione em seu \emph{swaret.conf} a linha
+
+\begin{verbatim}
+REPOS_ROOT=SlackMidiataticaNoarch%http://slack.midiatatica.org/packages/noarch
+\end{verbatim}
+
+e então digite
+
+\begin{verbatim}
+swaret --update
+swaret --install simplepkg
+\end{verbatim}
+
+\section{Configurando o simplepkg}
+
+Como exemplo, vamos criar uma jaula baseada nos pacotes instalados no seu slackware. Edite o arquivo \emph{/etc/simplepkg/simplepkg.conf}:
+
+\begin{verbatim}
+# /etc/simplepkg/simplepkg.conf
+JAIL_ROOT="/vservers" # local onde as jaulas serão criadas
+SIMPLARET="simplaret" # programa que baixa os pacotes (pode ser o swaret se voce o tiver)
+STORAGE="/var/simplaret" # local onde o swaret armazena seus pacotes
+SIMPLARET_CLEAN="1" # apaga o cache de pacotes antes da instalação da jaula
+SIMPLARET_DELETE_DOWN="1" # apaga o cache de pacotes após a instalação
+SIMPLARET_UPDATE="0" # atualiza as listas de pacotes antes de iniciar a instalação da jaula
+SIMPLARET_PURGE_WEEKS="N" # apaga os pacotes mais velhos que N semanas antes de instalar
+PATCHES_DIR="/var/simplaret/patches" # local os patches são armazenados
+\end{verbatim}
+
+Para definir quais repositórios de pacotes você usará, edite o arquivo \emph{/etc/simplepkg/repos.conf}, colocando algo como
+
+\begin{verbatim}
+ROOT-i386="http://slack.midiatatica.org/packages/slackware"
+REPOS-i386="slack-midiatatica%http://slack.midiatatica.org/packages/slackware"
+ROOT-x86_64-10.2="http://darkstar.ist.utl.pt/pub/slamd64/"
+REPOS-x86_64-10.2="slamd-midiatatica%http://slack.midiatatica.org/packages/slamd64"
+\end{verbatim}
+
+Se você quer utilizar o swaret em lugar do simplaret, o swaret.conf deve estar bem configurado para que ele seja capaz de baixar e instalar todos os pacotes dos templates. Parâmetros como \emph{EXCLUDE} podem ser um empecilho, e se você os remover da sua instalação tenha muito cuidado ao atualizar o seu sistema via \emph{swaret --upgrade}. A desvantagem de usar o swaret é que você não terá como administrar jaulas e instalações de múltiplas arquiteturas.
+
+Para informações detalhadas sobre o simplaret, consulte seu \link{/node/16}{artigo específico}.
+
+\section{Criando jaulas e replicando instalações}
+
+\begin{verbatim}
+templatepkg meu-slackware
+mkjail jaula meu-slackware
+\end{verbatim}
+
+Isso cria o template \emph{meu-slackware} a partir da sua lista de pacotes em \emph{/var/log/packages} e cria uma nova árvore com esses pacotes na pasta \emph{/vservers/jaula} (dependendo de qual o valor da variável \emph{JAIL\_ROOT} do simplepkg.conf, é claro).
+
+Se você quiser que alguns arquivos de configuração e executar scripts após a instalação dessa jaula, basta colocarmos na pasta \emph{/etc/simplepkg/meu-slackware.d/} os arquivos de configuração (dentro da hierarquia de pastas do sistema, isto é, \emph{/etc/simplepkg/meu-slackware.d/etc/apache/httpd.conf}) e os script em \emph{/etc/simplepkg/meu-slackware.s}. O template \emph{vserver}, que já vem no mkjail, contém um exemplo de script.
+
+Você pode especificar também destinos alternativos para sua jaula, através de um comando do tipo
+
+\begin{verbatim}
+ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em \emph{/mnt/hda2}, dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o \emph{mkjail} utiliza o template \emph{/etc/simplepkg/default.template}.
+
+Se você manter uma jaula em \emph{JAIL\_ROOT} com o mesmo nome que um template, é possível ainda usar o script \emph{jail-update} para copiar todas as alterações de arquivos da jaula na pasta de arquivos do seu template (\emph{/etc/simplepkg/nome-da-jaula.d}). Assim, basta que você copie todos os arquivos de configuração que você editou para essa pasta e deixar o \emph{jail-update} numa crontab para que você tenha sempre um template atualizado e baseado nas jaulas / instalações que você tem rodando e que estiverem listadas no arquivo \emph{/etc/simplepkg/jailist}:
+
+\begin{verbatim}
+jail-update
+\end{verbatim}
+
+O \emph{jail-update} considera que o template \emph{main}, caso exista, se refere à instalação principal da sua máquina, isto é, o sistema de você roda. Dessa forma a invocação do \emph{jail-update} atualiza todos os templates cujas jaulas estão em \emph{JAIL\_ROOT} e ainda atualiza o template da instalação principal.
+
+Para adicionar ou remover pacotes de um template, basta editar o arquivo de template. Uma outra forma de adicionar arquivos é usando o \emph{templatepkg} com a opção \emph{-a}, que adiciona apenas novos pacotes ao template. Se você quiser que o \emph{templatepkg} crie um template a partir de uma jaula, simplesmente use
+
+\begin{verbatim}
+templatepkg jaula /vservers/jaula
+\end{verbatim}
+
+\section{Metapacotes}
+
+Outro uso dos templates é a criação de pacotes: imagine por exemplo a dificuldade de um usuário/a novo de slackware para instalar o cinelerra e todas as suas dependências. Criando um template contendo o nome de todos os pacotes necessários para rodar esse software permite que um usuário instale-o simplesmente com o comando
+
+\begin{verbatim}
+metapkg --install cinelerra
+\end{verbatim}
+
+O comando sugere uma semelhança com o uso direto do \emph{swaret} ou do \emph{slapt-get}, com a única diferença residindo no modo como cada um desses programas lida com as dependências de um pacote. Os \emph{slapt-get} suporta o arquivo \emph{slack-required}, que pode ou não estar presente no pacote. Já o \emph{swaret} possui uma ferramenta própria para a criação de uma lista de dependências.
+
+O \emph{simplepkg} não pretende substituir esses dois modos de checagem e sim propor uma alternativa de distribuição de pacotes em que as dependências são resolvidas sem precisar de um repositório de dependências ou uma modificação no próprio pacote, que é o caso do \emph{slack-required}, um arquivo que na maioria das vezes não está presente.
+
+A remoção de um aplicativo e todas as suas dependências podem ser feitas simplesmente com o comando
+
+\begin{verbatim}
+metapkg --remove cinelerra
+\end{verbatim}
+
+\section{Upgrade de jaulas}
+
+O upgrade de jaulas que estejam em \emph{JAIL\_ROOT} pode ser efetuado com o comando \emph{jail-upgrade}. Simplesmente coloque os patches em \emph{PATCHES\_DIR} e dê o comando
+
+\begin{verbatim}
+jail-upgrade
+\end{verbatim}
+
+Se você quiser atualizar apenas uma das jaulas que estão em \emph{JAIL\_ROOT}, use
+
+\begin{verbatim}
+jail-upgrade nome-da-jaula
+\end{verbatim}
+
+Para especificar uma pasta contendo patches diferente de \emph{PATCHES\_DIR} (útil quando você possui jaulas com diferentes versões do slackware), simplesmente use
+
+\begin{verbatim}
+PATCHES=/local/dos/patches jail-upgrade nome-da-jaula
+\end{verbatim}
+
+De modo análogo ao \emph{mkjail}, é possível indicar ao \emph{jail-upgrade} uma outra pasta onde a jaula está armazenada:
+
+\begin{verbatim}
+ROOT=/otherroot jail-upgrade
+\end{verbatim}
+
+\section{Arquiteturas e versões diferentes}
+
+O \emph{simplepkg} foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também é unificada. Essa possibilidade só é permitida se você usa o simplaret e não o swaret como ferramenta de obtenção de pacotes.
+
+Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios do \emph{/etc/simplepkg/repos.conf} contenham locais com slack 10.1), basta usar o comando
+
+\begin{verbatim}
+VERSION=10.1 mkjail minha-jaula template-servidor
+\end{verbatim}
+
+Arquiteturas diferentes também podem ser usadas. Se você está num sistema \emph{x86\_64} e quer instalar um slack 10.2 numa partição, experimente
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes,
+arquivos de configuração e scripts. Por isso, o \emph{templatepkg}, o \emph{metapkg}, o \emph{lspkg} e o \emph{jail-update} funcionam normalmente.
+
+Para atualizar suas jaulas, o \emph{jail-upgrade} checa antes qual a versão e arquitetura de cada uma
+de suas jaulas através do \emph{/etc/slackware-version} correspondente e a partir disso aplica os patches da arquitetura e versão da mesma, usando para isso o simplaret (veja a \link{node/16}{documentação própria}).
+
+Desse modo, mesmo que você tenha jaulas de versões e arquiteturas diversas, usar o comando \emph{jail-upgrade} faz a atualização sem problemas, desde que seus patches estejam organizados por arquitetura e versão, conforme é detalhado na \link{/node/16}{documentação do simplaret}.
+
+\section{Aplicativo auxiliar: rebuildpkg}
+
+O simplepkg acompanha ainda um aplicativo auxiliar que ajuda a recuperar pacotes instalados cujo \emph{.tgz} original foi perdido. O comando \emph{rebuildpkg} reconstrói um pacote a partir de uma entrada no \emph{/var/log/packages}. O comando
+
+\begin{verbatim}
+rebuildpkg coreutils
+\end{verbatim}
+
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do \emph{/var/log/packages/} correspondente ao coreutils.
+
+\section{Fonte}
+
+Se você quiser obter diretamente o código-fonte do \emph{simplepkg}, baixe-o do repositório:
+
+\begin{verbatim}
+svn checkout svn://slack.midiatatica.org:40/simplepkg
+\end{verbatim}
+
+\section{Página de desenvolvimento}
+
+A página do \emph{simplepkg} fica em \link{http://slack.midiatatica.org/wiki/Main/SimplePKG}{http://slack.midiatatica.org/wiki/Main/SimplePKG}.
+
+\end{document}
diff --git a/doinst.sh b/doinst.sh
new file mode 100644
index 0000000..d8bcadf
--- /dev/null
+++ b/doinst.sh
@@ -0,0 +1,2 @@
+( echo please edit /etc/simplepkg/simplepkg.conf.new and /etc/simplepkg/repos.conf.new )
+( echo and rename them to /etc/simplepkg/simplepkg.conf and /etc/simplepkg/repos.conf )
diff --git a/jail-update b/jail-update
new file mode 100755
index 0000000..f6635b5
--- /dev/null
+++ b/jail-update
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# jail-update: update config files from a jail to a template
+# feedback: rhatto@riseup.net | gpl
+#
+# Jail-update 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 any later version.
+#
+# Jail-update 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
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -f $JAIL_LIST ]; then
+ for jailpath in `cat $JAIL_LIST`; do
+ jail="`basename $jailpath`"
+ echo updating $jailpath...
+ if [ -d "$BASE_CONF/$jail.d" ] || [ -a "$BASE_CONF/$jail.template" ]; then
+ templatepkg -a $jail $jailpath
+ cd $BASE_CONF/$jail.d
+ for file in `find`; do
+ if [[ -f "$file" && -f "$jailpath/$file" ]]; then
+ if ! diff $file $jailpath/$file; then
+ echo updating $file
+ cp -f $jailpath/$file $file
+ fi
+ fi
+ done
+ fi
+ done
+fi
+
+# main jail
+if [ -a "$BASE_CONF/main.template" ]; then
+ echo updating main installation...
+ templatepkg -a main
+fi
+if [ -d "$BASE_CONF/main.d" ]; then
+ cd $BASE_CONF/main.d
+ for file in `find`; do
+ if [[ -f "$file" && -f "/$file" ]]; then
+ if ! diff $file /$file; then
+ echo updating $file
+ cp -f /$file $file
+ fi
+ fi
+ done
+fi
diff --git a/jail-upgrade b/jail-upgrade
new file mode 100755
index 0000000..b9567fd
--- /dev/null
+++ b/jail-upgrade
@@ -0,0 +1,107 @@
+#!/bin/bash
+#
+# jail-upgrade v0.5: upgrade packages in jails
+# feedback: rhatto@riseup.net | GPL
+#
+# Jail-upgrade 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 any later version.
+#
+# Jail-upgrade 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
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+function swaret_jail_upgrade {
+
+ if [ ! -d "$PATCHES_DIR" ]; then
+ cd $PATCHES_DIR
+ for installed in `ls $1/var/log/packages/$pack* 2> /dev/null`; do
+ if [[ $pack == `package_name $installed.tgz` ]]; then
+ if [[ "`basename $installed`" != "`basename $file .tgz`" ]]; then
+ ROOT=$1 upgradepkg $file
+ fi
+ fi
+ done
+ fi
+}
+
+function simplaret_jail_upgrade {
+
+ echo upgrading jail $1...
+
+ VERSION="`cat $1/etc/slackware-version | awk '{ print $2 }' | sed -e 's/.0$//'`"
+ ARCH="`cat $1/etc/slackware-version | awk '{ print $3 }' | sed -e 's/(//' -e 's/)//'`"
+
+ if [ -z "$ARCH" ]; then
+ ARCH="i386"
+ fi
+
+ if [ -d "$PATCHES_DIR/$ARCH/$VERSION" ]; then
+ cd $PATCHES_DIR/$ARCH/$VERSION
+ for file in `ls *tgz`; do
+ pack=`package_name $file`
+ for installed in `ls $1/var/log/packages/$pack* 2> /dev/null`; do
+ if [[ "$pack" == "`package_name $installed.tgz`" ]]; then
+ if [[ "`basename $installed`" != "`basename $file .tgz`" ]]; then
+ ROOT=$1 upgradepkg $file
+ fi
+ fi
+ done
+ done
+ else
+ echo error: cant upgrade for arch $ARCH and version $VERSION on $1: no such patch dir $PATCHES_DIR/$ARCH/$VERSION
+ fi
+
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+ eval_config `basename $0`
+else
+ echo "error: file $COMMON not found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ ! -z "$PATCHES" ]; then
+ if [ -d "$PATCHES" ]; then
+ PATCHES_DIR="$PATCHES"
+ else
+ echo "error: folder $PATCHES does not exist"
+ fi
+fi
+
+if [ "$SIMPLARET" == "simplaret" ]; then
+ upgrade_method="simplaret_jail_upgrade"
+elif [ "$SIMPLARET" == "swaret" ]; then
+ upgrade_method="swaret_jail_upgrade"
+else
+ echo invalid value $SIMPLARET for SIMPLARET, please check your $CONF
+ exit 1
+fi
+
+if [ -z "$1" ]; then
+ if [ -d "/var/log/packages" ]; then
+ $upgrade_method /
+ fi
+ for vserver in `ls $JAIL_ROOT`; do
+ if [ -d "$JAIL_ROOT/$vserver/var/log/packages" ]; then
+ $upgrade_method $JAIL_ROOT/$vserver
+ fi
+ done
+elif [ -d "$JAIL_ROOT/$1" ]; then
+ if [ -d "$JAIL_ROOT/$1/var/log/packages" ]; then
+ $upgrade_method $JAIL_ROOT/$1
+ else
+ echo error: jail $JAIL_ROOT/$1 dont looks like a slackware system
+ fi
+else
+ echo "error: jail $0 does not exist"
+ exit 1
+fi
diff --git a/lspkg b/lspkg
new file mode 100755
index 0000000..0eb5e77
--- /dev/null
+++ b/lspkg
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+# lspkg v0.2: view installed and contents of
+# slackware packages
+#
+# feedback: rhatto at riseup.net | gpl
+#
+# Lspkg 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 any later version.
+#
+# Lspkg 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
+#
+#
+# -v, --view: view installed package contents
+# -p, --print: print the contents of a package file
+# -r, --remove: remove matching packages
+# -s, --search: search a file under installed packages
+#
+# todo:
+#
+# -d, --description: show matching packages' descriptions
+# -h, --help: show usage
+#
+
+function usage {
+ echo "usage: $0 [-v|-d|-s|-p expression]"
+ exit 1
+}
+
+if [[ "$1" = "-v" ]]; then
+ if [[ ! -z "$2" ]]; then
+ if $(ls /var/log/packages/$2* &> /dev/null); then
+ for file in $(ls /var/log/packages/$2*); do
+ less $file
+ done
+ else echo $2: package not found on /var/log/packages
+ fi
+ else
+ usage
+ fi
+elif [[ "$1" = "-p" ]]; then
+ if [ -f $2 ]; then
+ tar ztvf $2
+ else echo $2: file not found
+ fi
+elif [[ "$1" == "-r" ]]; then
+ if [ ! -z "$2" ]; then
+ if `ls /var/log/packages/$1* &> /dev/null`; then
+ removepkg /var/log/packages/$1*
+ fi
+ fi
+elif [[ "$1" == "-s" ]]; then
+ if [[ ! -z "$2" ]]; then
+ grep $2 /var/log/packages/*
+ fi
+else
+ if `ls /var/log/packages/$1* &> /dev/null`; then
+ ls /var/log/packages/$1*
+ else echo $1: package not found on /var/log/packages
+ fi
+fi
diff --git a/metapkg b/metapkg
new file mode 100755
index 0000000..e83ee4d
--- /dev/null
+++ b/metapkg
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# metapkg v0.1: install or remove a pkgtool metapackage
+#
+# feedback: rhatto at riseup.net | GPL
+#
+# Metapkg 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 any later version.
+#
+# Metapkg 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
+#
+# A metapackage is a file containing a list of packages.
+# This script just installs all the packages in a metapackage.
+# Remeber that mkjail template == metapkg metapackage.
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+ROOT="/"
+
+function usage {
+ echo "usage: [ROOT=/otherroot] `basename $0` --option [metapackage]"
+ echo "options: --install, --remove"
+ exit 1
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$2" ]; then
+ usage
+else
+ eval_config `basename $0` -u
+fi
+
+if [ ! -f "$BASE_CONF/$2.template" ]; then
+ echo error: template $2 not found
+ exit 1
+else
+ TEMPLATE="$BASE_CONF/$2.template"
+ unset server
+fi
+
+if [[ "$1" == "--install" ]]; then
+ install_packages
+elif [[ "$1" == "--remove" ]]; then
+ remove_packages
+else
+ usage
+fi
diff --git a/mkjail b/mkjail
new file mode 100755
index 0000000..d0d24a0
--- /dev/null
+++ b/mkjail
@@ -0,0 +1,100 @@
+#!/bin/bash
+#
+# mkjail v0.4: chroot jail maker
+#
+# feedback: rhatto at riseup.net | GPL
+#
+# Mkjail 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 any later version.
+#
+# Mkjail 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
+#
+# Under the config file, adjust this to where your things live, for example:
+#
+# JAIL_ROOT="/vservers" # default folder where jails lives
+# STORAGE="/var/simplaret" # place where simplaret host its packages
+# SIMPLARET_CLEAN="1" # delete downloaded packages before installation
+# SIMPLARET_DELETE_DOWN="1" # delete donwloaded packages after installation
+# SIMPLARET_DELETE_DURING="1" # delete each package rigth after its installation
+# SIMPLARET_UPDATE="0" # simplaret --update before get the packages
+# SIMPLARET_PURGE_WEEKS="N" # purge cached packages older than N weeks
+# PATCHES_DIR=/var/simplaret/patches" # where your patches lives
+#
+# todo: - list of packages that could not be installed
+# - use swaret just for network mirrors
+# - installation order
+# - optionally execute chroot-upgrade after installation
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+function usage {
+ echo "usage: [ROOT=/otherroot] `basename $0` <jail-name> [template]"
+ exit 1
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$1" ]; then
+ usage
+else
+ server="$1"
+ eval_config `basename $0` -u
+fi
+
+if [[ ! -z "$2" && -f "$BASE_CONF/$2.template" ]]; then
+ TEMPLATE="$BASE_CONF/$2.template"
+elif [[ ! -z "$2" && ! -f "$BASE_CONF/$2.template" ]]; then
+ echo template $2 not found, using default template
+ TEMPLATE="$BASE_CONF/default.template"
+elif [[ -z "$2" && -f "$BASE_CONF/default.template" ]]; then
+ TEMPLATE="$BASE_CONF/default.template"
+ echo using default template
+else
+ echo $0 error: no templates found
+ echo please create a template using templatepkg
+ exit 1
+fi
+
+if [ ! -d "$JAIL_ROOT/$server" ]; then
+ mkdir -p $JAIL_ROOT/$server
+else
+ if [ ! -z "`ls $JAIL_ROOT/$server | grep -v 'lost+found'`" ]; then
+ echo error: folder $JAIL_ROOT/$server already exists and seens to be not empty
+ echo probably the jail $1 already exists
+ exit 1
+ fi
+fi
+
+echo "instaling packages into $JAIL_ROOT/$server using $TEMPLATE..."
+install_packages
+
+TEMPLATE="`echo $TEMPLATE | sed -e 's/\.template$//'`"
+echo "copying template files..."
+if [ -d "$TEMPLATE.d" ]; then
+ rsync -av $TEMPLATE.d/ $JAIL_ROOT/$server/
+fi
+
+echo "executing template scripts..."
+if [ -d "$TEMPLATE.s" ]; then
+ for script in `ls $TEMPLATE.s/`; do
+ if [ -x "$TEMPLATE.s/$script" ]; then
+ exec $TEMPLATE.s/$script $JAIL_ROOT $server
+ fi
+ done
+fi
+
+echo "$JAIL_ROOT/$server" >> $JAIL_LIST
+echo "done creating $server jail"
diff --git a/old/lspkg.old b/old/lspkg.old
new file mode 100755
index 0000000..fe28a65
--- /dev/null
+++ b/old/lspkg.old
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# lspkg
+# feedback: rhatto at riseup.net | gpl
+#
+# todo:
+#
+# -r, --remove: remove matching packages
+# -d, --description: show matching packages' descriptions
+# -s, --search: search a file under the matching packages
+# -p, --print: print the contents of a package file
+#
+
+function usage {
+ echo usage: $0 [-v|-d|-s|-p expression]
+ exit 1
+}
+
+if [[ "$1" == "-v" ]]; then
+ if [[ ! -z "$2" ]]; then
+ less $(ls /var/log/packages/$2*)
+ else
+ usage
+ fi
+elif [[ $1 = -p ]]; then
+ if [ -f $2 ]; then
+ tar ztvf $2
+ fi
+else
+ ls /var/log/packages/$1*
+fi
diff --git a/old/merge-template.sh b/old/merge-template.sh
new file mode 100755
index 0000000..b3eaf5c
--- /dev/null
+++ b/old/merge-template.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+
+#
+# tip: to assemble a template from all slack tagfiles:
+#
+# for diskset in a ap d e f k l n t tcl x xap y; do
+# lynx -dump http://slack.sarava.org/slackware/slackware-10.2/slackware/$diskset/tagfile >> slack.template
+# done
+#
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <template> <base-template>"
+ exit 1
+elif [ ! -f "$1" ] || [ ! -f "$2" ]; then
+ echo error: $1 ou $2 not found
+ exit 1
+fi
+
+cp $2 $1.new
+
+cat $1 | while read line; do
+ pack="`echo $line | cut -d : -f 1`"
+ if ! grep -qe "^$pack:" $2; then
+ echo $line >> $1.new
+ fi
+done
diff --git a/old/mkjail.old b/old/mkjail.old
new file mode 100755
index 0000000..b6caac5
--- /dev/null
+++ b/old/mkjail.old
@@ -0,0 +1,76 @@
+#!/bin/bash
+#
+# mkjail v0.4: chroot jail maker
+# feedback: rhatto at riseup.net | GPL
+#
+
+BASE_CONF=/etc/mkjail
+CONF=$BASE_CONF/mkjail.conf
+
+# under the config file, adjust this to where your things live
+# PACKAGES="/storage/vserver/slack/"
+# DEVICES="/storage/vserver/devices.tar.gz"
+# SCRIPTS="/storage/vserver/etc/"
+# GPGKEY="/storage/vserver/slack/GPG-KEY"
+# SKEL="/storage/vserver/skel.conf"
+
+if [ -f "$CONF" ]; then
+ source $CONF
+else
+ echo $0 error: config file $CONFIG not found
+ exit 1
+elif (($# != 1)); then
+ echo "usage: $0 <jail-name> [template]"
+ exit 1
+elif [ -d "/vservers/$1" ]; then
+ echo $0 error: vserver $1 already exists
+ exit 1
+fi
+
+if [[ ! -z "$2" && -f "$BASE_CONF/$2.template"]]; then
+ TEMPLATE="$BASE_CONF/$2.template"
+elif [ -f "$BASE_CONF/default.template" ]
+ echo template $2 not found, using default template
+else
+ echo $0 error: no templates found
+ echo please create a template using templatepkg
+ exit 1
+fi
+
+server=$1
+mkdir /vservers/$server
+
+echo "instaling packages..."
+
+for pack in `cat $TEMPLATE`; do
+ installpkg --root /vservers/$server `searchpkg -1 $pack`
+done
+
+echo "creating /etc/ and copying init scripts"
+
+if [ -d "$BASE_CONF/$template" ]; then
+ rsync -Cav $BASE_CONF/$template/ /vservers/$server/
+fi
+
+cp /etc/resolv.conf /vservers/$server/etc/
+cp /etc/localtime /vservers/$server/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > /vservers/$server/etc/fstab
+echo /dev/hdv1 / ext2 rw 0 0 > /vservers/$server/etc/mtab
+
+echo "creating devices and dependencies"
+cd /vservers/$server/
+tar zxvf $DEVICES
+chroot /vservers/$server/ sbin/ldconfig
+
+echo "creating /etc/vservers/$server.conf"
+cp $SKEL /etc/vservers/$server.conf
+
+echo "importing slack gpg pubkey"
+mkdir /vservers/$server/root/.gnupg
+gpg --homedir /vservers/$server/root/.gnupg --import $GPGKEY
+
+# todo: add rebootmgr
+echo "done; now edit /etc/vservers/$server.conf"
+echo "then, set iptables rules and start $server vserver"
+echo "dont forget to change root's password"
+
diff --git a/old/searchpkg b/old/searchpkg
new file mode 100755
index 0000000..5f272a3
--- /dev/null
+++ b/old/searchpkg
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# searchpkg: search packages inside a local slackware-like repository
+# this is part of simplepkg
+# feedback: rhatto at riseup.net | gpl
+#
+
+# find . -type f -exec ls -l {} \; > FILELIST.TXT
+
+if [[ $# != 1 && $# != 2 ]]; then
+ echo "usage: $0 [-1] <repository> [package-name]"
+ echo "package-name can be either the full package file name, just its prefix or so"
+ echo "option -1 show just the first matching package"
+ exit 1
+fi
+
+FILELIST="$1/FILELIST.TXT"
+PACKAGE_FIELD="8"
+
+if [ -z "$2" ]; then
+ grep .tgz $FILELIST
+else
+ grep -e "$2" $FILELIST | grep tgz | awk "{ print \$$PACKAGE_FIELD }"
+fi
diff --git a/old/templatepkg.old b/old/templatepkg.old
new file mode 100755
index 0000000..51a4fc2
--- /dev/null
+++ b/old/templatepkg.old
@@ -0,0 +1,64 @@
+#!/bin/bash
+#
+# templatepkg: create a simplepkg package list from
+# a legacy slackware /var/log/packages
+#
+
+# pkgtool stuff
+package_name() {
+ STRING=`basename $1 .tgz`
+ # Check for old style package name with one segment:
+ if [ "`echo $STRING | cut -f 1 -d -`" = "`echo $STRING | cut -f 2 -d -`" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "`echo $STRING | cut -f $INDEX -d -`" = "" ]; do
+ INDEX=`expr $INDEX + 1`
+ done
+ INDEX=`expr $INDEX - 1` # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=`expr $INDEX - 3`
+ NAME="`echo $STRING | cut -f 1-$NAME -d -`"
+ echo $NAME
+ fi
+ fi
+}
+
+if [[ ! -z "$3" && "$1" == "-o" ]]; then
+ ROOT="$2"
+ TEMPLATE="$3"
+ OPTION="o"
+elif [[ ! -z "$2" && "$1" == "-o" ]]; then
+ ROOT="/"
+ TEMPLATE=$2
+ OPTION="o"
+elif [[ ! -z "$2" && "$1" != "-o" ]]; then
+ ROOT="$1"
+ TEMPLATE="$2"
+elif [ ! -z "$1" ]; then
+ ROOT="/"
+ TEMPLATE="$1"
+else
+ echo "usage: [MASK=mask] $0 [-o root-dir] [-a] <template-file>"
+ echo -e "\troot-dir is the absolute path from with the desired /var/log/packages is placed"
+ echo -e "\toptionaly, use MASK=mask $0 ..., eg: MASK=gcc* $0 ..."
+ exit 1
+fi
+
+if [ ! -d "$ROOT/var/log/packages" ]; then
+ echo $ROOT/var/log/packages: directory not found
+ exit 1
+elif [[ -f "$TEMPLATE" && "$OPTION" != "o" ]]; then
+ echo template $TEMPLATE already exists: use -o to overwrite
+ exit 1
+elif [[ -f "$TEMPLATE" && "$OPTION" == "o" ]]; then
+ rm -f $TEMPLATE
+fi
+
+for package in `ls -1 $ROOT/var/log/packages/$MASK`; do
+ package_name $package >> $TEMPLATE
+done
diff --git a/old/teste b/old/teste
new file mode 100644
index 0000000..6f9c64e
--- /dev/null
+++ b/old/teste
@@ -0,0 +1,132 @@
+Eterm
+anacron
+antiword
+ardour
+audacity
+azureus
+bitlbee
+bogofilter
+bootsplash
+cadaver
+camp
+checkinstall
+cinelerra
+cpan2tgz
+cryptsetup-luks
+darkice
+darksnow
+dopewars
+dvbackup
+dvgrab
+e_modules
+eclair
+ecore
+edb
+edje
+eel
+eet
+elicit
+elinks
+emacs
+embryo
+emotion
+enlightenment
+entice
+entrance
+eog
+epeg
+epsilon
+esmart
+etox
+evas
+ewl
+extralite
+ffmpeg
+fglrx64_6_8_0
+firefox
+gconf
+gdm
+gftp
+ghex
+gnome-icon-theme
+gnome-keyring
+gnome-mime-data
+gnome-vfs
+gnumeric
+gnupg
+gnutls
+gphoto2
+gqview
+grip
+grub
+gtk-gnutella
+gtkam
+hicolor-icon-theme
+homecrypt
+hydrogen
+iconbar
+jack
+jackmix
+jgal
+jre
+kernel-ratten
+kino
+ladspa_sdk
+latex2html-2002-2
+libart_lgpl
+libavc1394
+libbonobo
+libbonoboui
+libdrm
+libdv
+libexif-gtk
+libgnome
+libgnomecanvas
+libgnomeprint
+libgnomeprintui
+libgnomeui
+libgphoto2
+libgsasl
+libgsf
+libidl
+libjackasyn
+liblrdf
+libraw1394
+librsvg
+libsidplay
+libsndfile
+libstdc++5
+libtheora
+lm_sensors
+mairix
+mondo
+mp3blaster
+mplayer
+msmtp
+mutt
+netpbm
+nicotine
+offlineimap
+orbit2
+puredata-0.39
+pygtk
+python
+qemu
+qiv
+qjackctl
+raptor
+realtime-lsm
+rhattofonts
+rhattoscripts
+scons
+shfs
+sqlite
+stellarium
+tcd
+torsmo
+turboprint
+unrtf
+urlview
+vte
+wxGTK
+xmms_jack
diff --git a/rebuildpkg b/rebuildpkg
new file mode 100755
index 0000000..43c76cd
--- /dev/null
+++ b/rebuildpkg
@@ -0,0 +1,83 @@
+#!/bin/bash
+#
+# rebuildpkg: build a package from a /var/log/packages entry
+#
+# feedback: rhatto at riseup.net | gpl
+#
+# Rebuildpkg 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 any later version.
+#
+# Rebuildpkg 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
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+TMP="/tmp"
+
+function usage {
+ echo "usage: ROOT=/otherroot `basename $0` <package-name>"
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$1" ]; then
+ usage
+ exit 1
+fi
+
+pack="$1"
+
+for file in `find $ROOT/var/log/packages -name $pack*`; do
+ if [[ "`package_name $file.tgz`" == "$pack" ]]; then
+ package_file="$file"
+ break
+ fi
+done
+
+if [ -z "$package_file" ]; then
+ echo error: package $pack does not exist
+fi
+
+if [ -d "$TMP/package-$pack" ]; then
+ rm -rf $TMP/package-$pack
+fi
+
+mkdir $TMP/package-$pack
+cd $TMP/package-$pack
+
+for file in `grep -v -e "^PACKAGE NAME:" -e "^UNCOMPRESSED PACKAGE SIZE:" \
+ -e "^COMPRESSED PACKAGE SIZE:" -e "^PACKAGE LOCATION:" \
+ -e "^PACKAGE DESCRIPTION:" -e "^$pack:" -e "^FILE LIST:" $package_file`; do
+
+ if [ -d /$file ]; then
+ mkdir -p $TMP/package-$pack/$file
+ elif [ -f /$file ]; then
+ cp /$file $TMP/package-$pack/$file
+ else echo file /$file was not found, please add it manually, exploding and making the package again
+ fi
+
+done
+
+mkdir $TMP/package-$pack/install
+grep "^$pack:" $package_file > $TMP/package-$pack/install/slack-desc
+
+package_name="`grep "PACKAGE NAME:" $package_file | awk '{ print $3 }'`"
+
+if [ -f "$ROOT/var/log/scripts/$package_name" ]; then
+ cp $ROOT/var/log/scripts/$package_name $TMP/package-$pack/install/doinst.sh
+fi
+
+makepkg $package_name.tgz
+mv $package_name.tgz $TMP/
+echo "done: package rebuilt and stored at $TMP/$package_name.tgz"
diff --git a/repos.conf.new b/repos.conf.new
new file mode 100644
index 0000000..274e1c7
--- /dev/null
+++ b/repos.conf.new
@@ -0,0 +1,9 @@
+# repositories definitions
+#ROOT-i386="http://slackware.cs.utah.edu/"
+ROOT-i386="http://slack.sarava.org/slackware/"
+ROOT-x86_64="http://ftp.heanet.ie/pub/slamd64/"
+REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+REPOS-i386-10.2="slack.sarava.org-noarch%http://slack.sarava.org/packages/noarch/"
+REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+REPOS-x86_64-10.2="slack.sarava.org-noarch%http://slack.sarava.org/packages/noarch/"
+
diff --git a/simplaret b/simplaret
new file mode 100755
index 0000000..ed98402
--- /dev/null
+++ b/simplaret
@@ -0,0 +1,482 @@
+#!/bin/bash
+#
+# simplaret v0.1.1: simplepkg's package grabber
+# feedback: rhatto at riseup.net | gpl
+#
+# Simplaret 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 any later version.
+#
+# Simplaret 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
+#
+# config file simplepkg.conf:
+#
+# DEFAULT_ARCH="i386"
+# DEFAULT=VERSION="10.2"
+# STORAGE="/storage/packages"
+# PASSIVE_FTP="1"
+#
+# config file repos.conf:
+#
+# ROOT-i386="http://slack.sarava.org/packages/slackware"
+# REPOS-i386-10.2="slack.sarava.org%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+# ROOT-x86_64="http://darkstar.ist.utl.pt/pub/slamd64/"
+# REPOS-x86_64-10.2="slack.sarava.org%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+#
+# usage:
+#
+# --update: baixa lista de pacotes de cada repositorio
+# --search: busca
+# --get [-a]: baixa um unico pacote
+# --get-pacthes: baixa os patches e faz o checksum / gpg
+# --purge [-w N]: remove o cache
+#
+# precedence:
+#
+# - checa antes o repositorio raiz, caso o pacote nao seja encontrado segue na ordem das
+# definicoes REPOS do arquivo de configuracao
+#
+
+SIMPLARET_CONF="/etc/simplepkg/simplepkg.conf"
+REPOS_CONF="/etc/simplepkg/repos.conf"
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+function simplaret_usage {
+
+ echo "usage: [ARCH=otherarch] [VERSION=otherversion] `basename $0` <OPTION> package-name"
+ echo -e "\t OPTIONS: --update, --search, --get, --get-patches"
+ exit 1
+
+}
+
+function simplaret_eval_config {
+
+ if grep -qe "^DEFAULT_ARCH=" $SIMPLARET_CONF; then
+ DEFAULT_ARCH="`grep -e "^DEFAULT_ARCH=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+ else
+ DEFAULT_ARCH="i386"
+ fi
+
+ if grep -qe "^DEFAULT_VERSION=" $SIMPLARET_CONF; then
+ DEFAULT_VERSION="`grep -e "^DEFAULT_VERSION=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+ else
+ DEFAULT_VERSION="10.2"
+ fi
+
+ if grep -qe "^STORAGE=" $SIMPLARET_CONF; then
+ STORAGE="`grep -e "^STORAGE=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+ else
+ STORAGE="/var/simplaret"
+ fi
+
+ if grep -qe "^PASSIVE_FTP=" $SIMPLARET_CONF; then
+ PASSIVE_FTP="`grep -e "^PASSIVE_FTP=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+ else
+ PASSIVE_FTP="0"
+ fi
+
+ if grep -qe "^WARNING=" $SIMPLARET_CONF; then
+ WARNING="`grep -e "^WARNING=" $SIMPLARET_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+ else
+ WARNING="0"
+ fi
+
+}
+
+function simplaret_get_index {
+
+ for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
+ simplaret_download $1 $file $2
+ done
+
+}
+
+function simplaret_backup_index {
+
+ for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
+ if [ -f "$1/$file" ]; then
+ mv $1/$file $1/$file.old
+ fi
+ done
+
+}
+
+function simplaret_check_index {
+
+ for file in FILELIST.TXT CHECKSUMS.md5 CHECKSUMS.md5.asc; do
+ if [ ! -f "$1/$file" ] && [ -f "$1/$file" ]; then
+ echo restoring old $file to $1...
+ mv $1/$file.old $1/$file
+ else
+ rm -f $1/$file.old
+ fi
+ done
+
+}
+
+function simplaret_download {
+
+ # downloads a file from a repo to a folder
+ # usage: simplaret <repos_url> <package> <destination-folder>
+
+ protocol="`echo $1 | cut -d : -f 1`"
+
+ if [ ! -d "$3" ]; then
+ mkdir -p $3
+ fi
+
+ if [ "$protocol" == "http" ]; then
+ (cd $3 && wget $1/$2)
+ elif [ "$protocol" == "ftp" ]; then
+ if [ "$PASSIVE_FTP" == "1" ]; then
+ passive_ftp="--passive-ftp"
+ fi
+ (cd $3 && wget $passive_ftp $1/$2)
+ elif [ "$protocol" == "file" ]; then
+ url="`echo $1 | sed -e 's/file:\/\///'`"
+ cp $url/$2 $3 2> /dev/null
+ fi
+
+}
+
+function simplaret_repos_name {
+
+ if echo $repos | grep -qe %; then
+ repos_name="`echo $repos | cut -d % -f 1`"
+ if [ -z "$repos_name" ]; then
+ echo you should set a name for the repository $repos for arch $ARCH and version $VERSION
+ echo please correct your $REPOS_CONF so this repository definition looks like this:
+ echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
+ exit 1
+ fi
+ else
+ echo you should set a name for the repository $repos for arch $ARCH and version $VERSION
+ echo please correct your $REPOS_CONF so this repository definition looks like this:
+ echo REPOS-$ARCH-$VERSION=\"repository-name%$repos_url\"
+ exit 1
+ fi
+
+}
+
+function simplaret_repos_url {
+
+ if echo $repos | grep -qe %; then
+ repos_url="`echo $repos | cut -d % -f 2`"
+ if [ -z "$repos_url" ]; then
+ echo you should set a url for the repository $repos for arch $ARCH and version $VERSION
+ echo please correct your $REPOS_CONF so this repository definition looks like this:
+ echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
+ exit 1
+ fi
+ else
+ echo you should set a url for the repository $repos for arch $ARCH and version $VERSION
+ echo please correct your $REPOS_CONF so this repository definition looks like this:
+ echo REPOS-$ARCH-$VERSION=\"repository-name%repository-url\"
+ exit 1
+ fi
+
+}
+
+function simplaret_root_url {
+
+ root_url="`grep -e "^ROOT-$ARCH=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`"
+
+}
+
+function simplaret_update {
+
+ echo updating package information for arch $ARCH and version $VERSION...
+
+ if [ ! -d "$STORAGE/$ARCH/$VERSION" ]; then
+ mkdir -p $STORAGE/$ARCH/$VERSION
+ else
+ simplaret_backup_index $STORAGE/$ARCH/$VERSION
+ fi
+
+ simplaret_root_url
+ simplaret_get_index "$root_url/$DISTRO_FOLDER/$extra_folder" $STORAGE/$ARCH/$VERSION
+ simplaret_check_index $STORAGE/$ARCH/$VERSION
+
+ for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
+
+ simplaret_repos_name
+ simplaret_repos_url
+
+ if [ ! -d "$STORAGE/$ARCH/$VERSION/$repos_name" ]; then
+ mkdir -p $STORAGE/$ARCH/$VERSION/$repos_name
+ else
+ simplaret_backup_index $STORAGE/$ARCH/$VERSION/$repos_name
+ fi
+
+ simplaret_get_index $repos_url $STORAGE/$ARCH/$VERSION/$repos_name
+ simplaret_check_index $STORAGE/$ARCH/$VERSION/$repos_name
+
+ unset repos_name repos_url repos_protocol
+
+ done
+
+}
+
+function simplaret_search {
+
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/FILELIST.TXT" ]; then
+ if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+ echo warning: no file list for root repository on arch $ARCH version $VERSION, please do a simplaret --update
+ fi
+ else
+ for file in `grep $1 $STORAGE/$ARCH/$VERSION/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
+ if echo $file | grep -q "patches"; then
+ patch="(patch)"
+ fi
+ if [ "$2" == "-silent" ]; then
+ echo `basename $file`
+ else
+ echo root repos, arch: $ARCH, version: $VERSION: `basename $file` $patch
+ fi
+ unset patch
+ done
+ fi
+
+ for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
+
+ simplaret_repos_name
+
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT" ]; then
+ if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+ echo warning: no file list for $repos_name repository on arch $ARCH version $VERSION, please do a simplaret --update
+ fi
+ else
+ for file in `grep $1 $STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
+ if echo $file | grep -q "patches"; then
+ patch="(patch)"
+ fi
+ if [ "$2" == "-silent" ]; then
+ echo `basename $file`
+ else
+ echo $repos_name, arch: $ARCH, version: $VERSION: `basename $file` $patch
+ fi
+ done
+ fi
+
+ done
+
+}
+
+function simplaret_purge {
+
+ if [ "$2" == "-w" ] && [ ! -z "$3" ]; then
+ if [ -z "$SILENT" ]; then
+ echo purging all packages older than $3 weeks for arch $ARCH and version $VERSION
+ fi
+ mtime="`echo "$3*7" | bc -l`"
+ for file in `find $STORAGE/$ARCH/$VERSION/ -mtime +$mtime | bc -l 2> /dev/null`; do
+ for extension in tgz asc; do
+ if echo $file | grep -qe ".$extension$"; then
+ rm $file
+ fi
+ done
+ done
+ else
+ if [ -z "$SILENT" ]; then
+ echo purging all packages for arch $ARCH and version $VERSION
+ fi
+ for file in `find $STORAGE/$ARCH/$VERSION/ 2> /dev/null`; do
+ for extension in tgz asc; do
+ if echo $file | grep -qe ".$extension$"; then
+ rm $file
+ fi
+ done
+ done
+ fi
+
+ if [ -z "$SILENT" ]; then
+ echo done purging simplaret cache, please run simplaret --update to retrieve new package listings on this arch and version
+ fi
+
+}
+
+function simplaret_get {
+
+ # search for an already downloaded package
+ for file in `find $STORAGE/$ARCH/$VERSION/ -name $1*tgz 2> /dev/null`; do
+ candidate="`basename $file`"
+ if [ "`package_name $candidate`" == "$1" ]; then
+ echo package $candidate already downloaded and stored at `dirname $file`
+ exit 0
+ fi
+ done
+
+ # first search for the package in the root repository
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/FILELIST.TXT" ]; then
+ if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+ echo warning: no file list for root repository on arch $ARCH version $VERSION, please do a simplaret --update
+ fi
+ else
+ for file in `grep $1 $STORAGE/$ARCH/$VERSION/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
+ candidate="`basename $file`"
+ if [ "`package_name $candidate`" == "$1" ]; then
+ simplaret_root_url
+ simplaret_download $root_url/$DISTRO_FOLDER/$extra_folder $file $STORAGE/$ARCH/$VERSION
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/$candidate" ]; then
+ echo error downloading $candidate from root repository $root_url, please check your settings
+ exit 1
+ else
+ echo package $candidate stored at $STORAGE/$ARCH/$VERSION
+ simplaret_checksum $STORAGE/$ARCH/$VERSION/CHECKSUMS.md5 $STORAGE/$ARCH/$VERSION/$candidate
+ exit 0
+ fi
+ fi
+ done
+ fi
+
+ # then search for the package in contrib repos
+ for repos in `grep -e "^REPOS-$ARCH-$VERSION=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1`; do
+ simplaret_repos_name
+ simplaret_repos_url
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT" ]; then
+ if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+ echo warning: no file list for $repos_name repository on arch $ARCH version $VERSION, please do a simplaret --update
+ fi
+ else
+ for file in `grep $1 $STORAGE/$ARCH/$VERSION/$repos_name/FILELIST.TXT | awk '{ print $8 }' | grep -e ".tgz$"`; do
+ candidate="`basename $file`"
+ if [ "`package_name $candidate`" == "$1" ]; then
+ simplaret_download $repos_url $file $STORAGE/$ARCH/$VERSION/$repos_name
+ if [ ! -f "$STORAGE/$ARCH/$VERSION/$repos_name/$candidate" ]; then
+ echo error downloading $candidate from repository $repos_url, please check your settings
+ echo will try to fetch from the next repo, if exists...
+ else
+ echo package $candidate stored at $STORAGE/$ARCH/$VERSION/$repos_name
+ simplaret_checksum $STORAGE/$ARCH/$VERSION/$repos_name/CHECKSUMS.md5 $STORAGE/$ARCH/$VERSION/$repos_name/$candidate
+ exit 0
+ fi
+ fi
+ done
+ fi
+ done
+
+}
+
+function simplaret_get_patches {
+
+ if [ ! -d "$PATCHES_DIR/$ARCH/$VERSION" ]; then
+ mkdir -p $PATCHES_DIR/$ARCH/$VERSION
+ fi
+
+ echo fetching patches for arch $ARCH and version $VERSION...
+
+ # check for the downloaded patches
+ for patch in `ls $PATCHES_DIR/$ARCH/$VERSION/*tgz 2> /dev/null`; do
+ file="`find $STORAGE/$ARCH/$VERSION/ -name $patch 2> /dev/null`"
+ if [ ! -f "$file" ]; then
+ rm $patch
+ else
+ ln -sf $file $PATCHES_DIR/$ARCH/$VERSION/
+ fi
+ done
+
+ # grab new patches
+ for patch in `simplaret_search patches -silent`; do
+ simplaret --get `package_name $patch`
+ file="`find $STORAGE/$ARCH/$VERSION/ | grep "$patch" 2> /dev/null`"
+ if [ ! -f "$file" ]; then
+ echo error downloading package $file
+ exit 1
+ else
+ ln -sf $file $PATCHES_DIR/$ARCH/$VERSION/
+ echo patch stored as a symlink on $PATCHES_DIR/$ARCH/$VERSION/
+ fi
+ done
+
+}
+
+function simplaret_checksum {
+
+ # simplaret_checksum <md5file> <file-name>
+
+ if [ ! -f "$1" ] || [ ! -f "$2" ]; then
+ echo checksum error: file not found
+ exit 1
+ fi
+
+ pack="`basename $2`"
+ checksum="`grep -e "$pack\$" $1 | awk '{ print $1 }'`"
+
+ if [ -z "$checksum" ]; then
+ echo file $2 not in checksum $1
+ exit 1
+ elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then
+ echo checksum mismatch for file `basename $file`
+ else
+ echo checksum ok for file `basename $file`
+ fi
+
+}
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+if [ -z "$1" ]; then
+ simplaret_usage
+ exit 1
+else
+ server="$1"
+ eval_config `basename $0`
+ simplaret_eval_config
+fi
+
+if [ ! -d "$STORAGE" ]; then
+ mkdir -p $STORAGE
+fi
+
+if [ -z "$ARCH" ]; then
+ ARCH="$DEFAULT_ARCH"
+fi
+
+if [ -z "$VERSION" ]; then
+ VERSION="$DEFAULT_VERSION"
+fi
+
+if [ "$ARCH" == "i386" ]; then
+ DISTRO="slackware"
+ DISTRO_FOLDER="$DISTRO-$VERSION"
+elif [ "$ARCH" == "x86_64" ]; then
+ # extra_folder="tree"
+ DISTRO="slamd64"
+ DISTRO_FOLDER="$DISTRO-$VERSION"
+elif [ "$ARCH" == "s390" ]; then
+ DISTRO="slack390"
+ DISTRO_FOLDER="$DISTRO-$VERSION"
+elif [ "$ARCH" == "x86_uclibc" ]; then
+ DISTRO="ucslack"
+ DISTRO_FOLDER="$DISTRO-$VERSION"
+elif [ "$ARCH" == "arm" ]; then
+ DISTRO="armedslack"
+ DISTRO_FOLDER="$DISTRO-$VERSION"
+elif [ "$ARCH" == "powerpc" ]; then
+ DISTRO="slackintosh"
+ DISTRO_FOLDER="$VERSION"
+elif [ "$ARCH" == "sparc" ]; then
+ DISTRO="splack"
+ DISTRO_FOLDER="tree-$VERSION"
+fi
+
+case $1 in
+ --update) simplaret_update ;;
+ --search) simplaret_search $2 ;;
+ --get) simplaret_get $2 ;;
+ --get-patches) simplaret_get_patches ;;
+ --purge) simplaret_purge ;;
+ *) simplaret_usage ;;
+esac
+
diff --git a/simplepkg.SlackBuild b/simplepkg.SlackBuild
new file mode 100755
index 0000000..338af44
--- /dev/null
+++ b/simplepkg.SlackBuild
@@ -0,0 +1,59 @@
+#!/bin/bash
+#
+# constroi o pacote do simplepkg
+#
+
+PACKAGE="simplepkg"
+PACK_DIR="package-$PACKAGE"
+BUILD="3rha"
+VERSION="0.4.8"
+ARCH="noarch"
+
+LIBEXEC="/usr/libexec/$PACKAGE"
+BINDIR="/usr/sbin"
+DOC_DIR="/usr/doc"
+BINARY_LIST="mkjail templatepkg jail-update jail-upgrade lspkg metapkg rebuildpkg simplaret"
+LIB_LIST="common.sh"
+DOC_LIST="COPYING TODO CHANGELOG README README.pt_BR README.simplaret README.simplaret.pt_BR"
+
+rm -rf $PACK_DIR
+mkdir -p $PACK_DIR/install
+cp slack-desc $PACK_DIR/install
+cp doinst.sh $PACK_DIR/install
+
+mkdir -p $PACK_DIR/$BINDIR
+for binary in $BINARY_LIST; do
+ chmod +x $binary
+ cp $binary $PACK_DIR/$BINDIR
+done
+
+mkdir -p $PACK_DIR/$LIBEXEC
+for lib in $LIB_LIST; do
+ cp $lib $PACK_DIR/$LIBEXEC/
+done
+
+rm -rf $PACK_DIR/$DOC_DIR
+mkdir -p $PACK_DIR/$DOC_DIR/$PACKAGE-$VERSION
+for file in $DOC_LIST; do
+ cp $file $PACK_DIR/$DOC_DIR/$PACKAGE-$VERSION/
+done
+
+# especifico do simplepkg
+mkdir -p $PACK_DIR/etc/$PACKAGE/
+rsync -av --exclude=.svn templates/* $PACK_DIR/etc/$PACKAGE/
+chmod +x $PACK_DIR/etc/$PACKAGE/vserver.s/*.sh
+chmod +x $PACK_DIR/etc/$PACKAGE/vserver-legacy.s/*.sh
+cp simplepkg.conf.new $PACK_DIR/etc/$PACKAGE
+cp repos.conf.new $PACK_DIR/etc/$PACKAGE
+cd $PACK_DIR/usr/sbin && ln -s jail-upgrade vserver-upgrade
+cd -
+
+# install script
+echo '( if [ ! -f "/etc/simplepkg/simplepkg.conf" ]; then mv /etc/simplepkg.conf.new /etc/simplepkg/simplepkg.conf; fi )' > install/doinst.sh
+echo '( if [ ! -f "/etc/simplepkg/repos.conf" ]; then mv /etc/simplepkg/repos.conf.new /etc/simplepkg/repos.conf; fi )' >> install/doinst.sh
+
+cd $PACK_DIR
+chown -R root.root *
+
+makepkg -c y -l y ../simplepkg-$VERSION-$ARCH-$BUILD.tgz
+cd ..
diff --git a/simplepkg.conf.new b/simplepkg.conf.new
new file mode 100644
index 0000000..2b9e165
--- /dev/null
+++ b/simplepkg.conf.new
@@ -0,0 +1,14 @@
+# /etc/simplepkg/simplepkg.conf
+JAIL_ROOT="/vservers" # where jails are placed
+SIMPLARET="simplaret" # package grabber program (can be swaret if you have it installed)
+SIMPLARET_CLEAN="1" # clean package cache before installation
+SIMPLARET_DELETE_DOWN="1" # clean package cache after the installation
+SIMPLARET_UPDATE="0" # issue an simplaret --update before install the jail
+SIMPLARET_PURGE_WEEKS="3" # delete packages older than N weeks from the cache
+SIMPLARET_DELETE_DURING="0" # delete each package rigth after its installation
+PATCHES_DIR="/var/simplaret/patches" # where patches are placed
+DEFAULT_ARCH="i386"
+DEFAULT_VERSION="10.2"
+STORAGE="/var/simplaret/packages"
+PASSIVE_FTP="1"
+
diff --git a/slack-desc b/slack-desc
new file mode 100644
index 0000000..c0f52f4
--- /dev/null
+++ b/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+simplepkg: simplepkg (pkgtool templating system)
+simplepkg:
+simplepkg: simplepkg is a very small set of scripts intended to install slackware
+simplepkg: chroot jails using a simple template system. it also implements
+simplepkg: the concept of a "meta package", a template file where you
+simplepkg: put a list of packages that can be installed or removed with the
+simplepkg: command "metapkg".
+simplepkg:
+simplepkg:
+simplepkg:
+simplepkg:
diff --git a/templatepkg b/templatepkg
new file mode 100755
index 0000000..9c1f8bc
--- /dev/null
+++ b/templatepkg
@@ -0,0 +1,90 @@
+#!/bin/bash
+#
+# templatepkg v0.2: create a simplepkg package list from
+# a legacy slackware /var/log/packages
+#
+# feedback: rhatto at riseup.net | gpl
+#
+# Templatepkg 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 any later version.
+#
+# Templatepkg 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
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+ source $COMMON
+ eval_config `basename $0`
+else
+ echo "error: file $COMMON found, check your `basename $0` installation"
+ exit 1
+fi
+
+APPEND="0"
+if [[ ! -z "$3" && "$1" == "-a" ]]; then
+ ROOT="$3"
+ TEMPLATE="$BASE_CONF/$2.template"
+ APPEND="1"
+elif [[ ! -z "$2" && "$1" == "-a" ]]; then
+ ROOT="/"
+ TEMPLATE="$BASE_CONF/$2.template"
+ APPEND="1"
+elif [[ ! -z "$2" ]]; then
+ ROOT="$2"
+ TEMPLATE="$BASE_CONF/$1.template"
+elif [[ ! -z "$1" ]]; then
+ TEMPLATE="$BASE_CONF/$1.template"
+ ROOT="/"
+else
+ echo "usage: `basename $0` [-a] <template> [root-dir]"
+ echo -e "\t-a: append packages into <$BASE_CONF/template.template>"
+ exit 1
+fi
+
+if [ ! -d "$ROOT/var/log/packages" ]; then
+ echo $ROOT/var/log/packages: directory not found
+ exit 1
+elif [[ -f "$TEMPLATE" && "$APPEND" == "0" ]]; then
+ rm -f $TEMPLATE
+fi
+
+for package in `ls -1 $ROOT/var/log/packages/`; do
+ pack=`package_name $package`
+ if [ -f $TEMPLATE ]; then
+ if ! `grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | grep -q -e "^$pack\$"`; then
+ package_name $package >> $TEMPLATE
+ fi
+ else
+ package_name $package >> $TEMPLATE
+ fi
+done
+
+# checks if each package from the template is installed
+grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | while read pack; do
+
+ if [ ! -z "$pack" ]; then
+ unset found
+ for candidate in `ls $ROOT/var/log/packages/$pack* 2> /dev/null`; do
+ candidate="`package_name $candidate`"
+ if [ "$pack" == "$candidate" ]; then
+ found="1"
+ break
+ fi
+ done
+ if [ "$found" != "1" ]; then
+ # removes a non-installed package from the template
+ sed "/^$pack$/d" $TEMPLATE | sed "/^$pack $/d" | sed "/^$pack:*/d" > $TEMPLATE.tmp
+ cat $TEMPLATE.tmp > $TEMPLATE
+ rm -f $TEMPLATE.tmp
+ fi
+ fi
+
+done
diff --git a/templates/mplayer.metapkg b/templates/mplayer.metapkg
new file mode 100644
index 0000000..90d2ff3
--- /dev/null
+++ b/templates/mplayer.metapkg
@@ -0,0 +1,14 @@
+libmad
+esound
+glib
+libogg
+libvorbis
+libungif
+gtk
+arts
+audiofile
+sdl
+gdk-pixbuf
+cdparanoia
+lame
+essential
diff --git a/templates/openoffice.d/etc/profile.d/lang.csh b/templates/openoffice.d/etc/profile.d/lang.csh
new file mode 100755
index 0000000..94e8a92
--- /dev/null
+++ b/templates/openoffice.d/etc/profile.d/lang.csh
@@ -0,0 +1,33 @@
+#!/bin/csh
+# Set the system locale. (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+# locale -a
+
+# en_US is the Slackware default locale:
+setenv LANG pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#setenv LANG C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly. In those cases, you can set LANG=C before
+# starting them. Still, I'd avoid UTF unless you actually need it.
+#setenv LANG en_US.UTF-8
+
+# Another option for en_US:
+#setenv LANG en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places. Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+setenv LC_COLLATE C
+
+# End of /etc/profile.d/lang.csh
+
diff --git a/templates/openoffice.d/etc/profile.d/lang.sh b/templates/openoffice.d/etc/profile.d/lang.sh
new file mode 100755
index 0000000..c9cde20
--- /dev/null
+++ b/templates/openoffice.d/etc/profile.d/lang.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Set the system locale. (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+# locale -a
+
+# en_US is the Slackware default locale:
+export LANG=pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#export LANG=C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly. In those cases, you can set LANG=C before
+# starting them. Still, I'd avoid UTF unless you actually need it.
+#export LANG=en_US.UTF-8
+
+# Another option for en_US:
+#export LANG=en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places. Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+export LC_COLLATE=C
+
+# End of /etc/profile.d/lang.sh
+
diff --git a/templates/openoffice.d/opt/OpenOffice.org b/templates/openoffice.d/opt/OpenOffice.org
new file mode 120000
index 0000000..7146afd
--- /dev/null
+++ b/templates/openoffice.d/opt/OpenOffice.org
@@ -0,0 +1 @@
+../opt2/OpenOffice.org \ No newline at end of file
diff --git a/templates/openoffice.s/post-install.sh b/templates/openoffice.s/post-install.sh
new file mode 100755
index 0000000..086c7a4
--- /dev/null
+++ b/templates/openoffice.s/post-install.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+echo running post-installation script for $1/$2 jail...
+
+# copia de arquivos
+cp -p /etc/passwd $1/$2/etc/
+cp -p /etc/group $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+
+# pos-instalacao
+mount -t proc proc $1/$2/proc
+chroot $1/$2 /sbin/ldconfig
+cd $1/$2 && exec ./var/log/scripts/glibc-zoneinfo-*
+umount $1/$2/proc
diff --git a/templates/openoffice.template b/templates/openoffice.template
new file mode 100644
index 0000000..ef3ae52
--- /dev/null
+++ b/templates/openoffice.template
@@ -0,0 +1,60 @@
+aaa_base: ADD
+aaa_elflibs: ADD
+acpid: REC
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cups: REC
+cxxlibs: ADD
+devs: ADD
+etc: ADD
+a2ps
+bc
+enscript
+espgs
+etc
+findutils
+gawk
+gettext
+getty-ps
+gimp-print
+glibc
+glibc-i18n
+glibc-profile
+glibc-solibs
+glibc-zoneinfo
+grep
+gzip
+hpijs
+infozip
+ispell
+kbd
+kde-i18n-pt_BR
+kdebase
+kdelibs
+koffice-i18n-pt_BR
+less
+libart_lgpl
+libidn
+libmng
+pkgtools
+qt
+sed
+shadow
+sudo
+sysklogd
+sysvinit
+utempter
+util-linux
+x11
+x11-devel
+x11-fonts-100dpi
+x11-fonts-cyrillic
+x11-fonts-misc
+x11-fonts-scale
+x11-xdmx
+x11-xnest
+x11-xvfb
+openoffice-chroot
+openssl
diff --git a/templates/slackware.template b/templates/slackware.template
new file mode 100644
index 0000000..c3590c1
--- /dev/null
+++ b/templates/slackware.template
@@ -0,0 +1,566 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+acpid: REC
+apmd: REC
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cpio: ADD
+cups: REC
+cxxlibs: ADD
+dcron: ADD
+devs: ADD
+e2fsprogs: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+floppy: ADD
+gawk: ADD
+genpower: OPT
+gettext: REC
+getty-ps: OPT
+glibc-solibs: ADD
+glibc-zoneinfo: ADD
+gpm: REC
+grep: ADD
+gzip: ADD
+hdparm: ADD
+hotplug: ADD
+infozip: ADD
+isapnptools: OPT
+jfsutils: OPT
+kbd: REC
+kernel-ide: REC
+kernel-modules: ADD
+less: ADD
+lilo: ADD
+loadlin: REC
+logrotate: ADD
+minicom: REC
+mkinitrd: REC
+module-init-tools: ADD
+openssl-solibs: ADD
+pciutils: OPT
+pcmcia-cs: REC
+pkgtools: ADD
+procps: ADD
+reiserfsprogs: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+smartmontools: ADD
+sysklogd: ADD
+syslinux: ADD
+sysvinit: ADD
+tar: ADD
+tcsh: REC
+udev: ADD
+umsdos-progs: ADD
+usbutils: ADD
+utempter: REC
+util-linux: ADD
+xfsprogs: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+a2ps: REC
+acct: OPT
+alsa-utils: REC
+amp: OPT
+ash: OPT
+at: OPT
+aumix: OPT
+bc: OPT
+bpe: OPT
+cdparanoia: OPT
+cdrdao: OPT
+cdrtools: OPT
+diffutils: REC
+dvd+rw-tools: OPT
+enscript: OPT
+espgs: REC
+flac: OPT
+gimp-print: OPT
+groff: ADD
+gnu-gs-fonts: REC
+hpijs: REC
+ispell: OPT
+jed: OPT
+joe: OPT
+jove: OPT
+ksh93: OPT
+lsof: OPT
+lvm: OPT
+madplay: OPT
+man: ADD
+man-pages: REC
+mc: OPT
+mdadm: OPT
+most: OPT
+mpg321: OPT
+mt-st: OPT
+mysql: OPT
+normalize: OPT
+quota: OPT
+raidtools: OPT
+rexima: REC
+rpm: OPT
+rzip: OPT
+sc: OPT
+screen: OPT
+seejpeg: REC
+sgml-tools: REC
+sox: REC
+sudo: OPT
+texinfo: REC
+vim: OPT
+vorbis-tools: OPT
+workbone: OPT
+zsh: OPT
+
+autoconf: OPT
+automake: OPT
+bin86: ADD
+binutils: ADD
+bison: ADD
+byacc: OPT
+ccache: OPT
+clisp: OPT
+cscope: OPT
+cvs: REC
+distcc: OPT
+doxygen: OPT
+flex: ADD
+gcc: ADD
+gcc-g++: REC
+gcc-g77: OPT
+gcc-gnat: OPT
+gcc-java: OPT
+gcc-objc: OPT
+gdb: REC
+gettext-tools: REC
+guile: OPT
+indent: OPT
+kernel-headers: ADD
+libtool: OPT
+m4: REC
+make: ADD
+nasm: OPT
+oprofile: OPT
+p2c: OPT
+perl: REC
+pkgconfig: REC
+pmake: REC
+python: OPT
+python-demo: OPT
+python-tools: OPT
+rcs: OPT
+strace: REC
+subversion: OPT
+# Tagfile for emacs series
+emacs: ADD
+emacs-misc: REC
+emacs-lisp: OPT
+emacs-leim: OPT
+emacs-nox: OPT
+emacs-info: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+linux-faqs: ADD
+linux-howtos: ADD
+kernel-source: REC
+aalib: REC
+alsa-driver: ADD
+alsa-lib: ADD
+alsa-oss: OPT
+arts: ADD
+aspell: REC
+aspell-en: REC
+atk: REC
+audiofile: REC
+db3: REC
+db31: REC
+db4: REC
+esound: REC
+expat: REC
+fribidi: REC
+gdbm: REC
+gdk-pixbuf: REC
+glib: REC
+glib2: REC
+glibc: REC
+glibc-i18n: OPT
+glibc-profile: OPT
+glut: REC
+gmp: REC
+gnet: REC
+gtk+: REC
+gtk+2: REC
+imlib: REC
+jre: OPT
+lcms: REC
+lesstif: REC
+libao: REC
+libart_lgpl: REC
+libcaca: OPT
+libexif: REC
+libglade: REC
+libgsf: REC
+libgtkhtml: REC
+libid3tag: REC
+libidl: REC
+libidn: REC
+libieee1284: REC
+libjpeg: REC
+libmad: REC
+libmikmod: REC
+libmng: REC
+libogg: REC
+libpng: REC
+librsvg: REC
+libtermcap: REC
+libtiff: REC
+libungif: REC
+libusb: REC
+libvorbis: REC
+libwmf: REC
+libwmf-docs: OPT
+libwpd: REC
+libxml2: REC
+libxslt: REC
+mhash: REC
+mpeg_lib: OPT
+ncurses: REC
+netpbm: REC
+pango: REC
+pcre: REC
+pilot-link: REC
+popt: REC
+readline: REC
+sdl: REC
+shared-mime-info: REC
+slang: REC
+startup-notification: ADD
+svgalib: REC
+t1lib: REC
+taglib: REC
+wv2: REC
+xaw3d: REC
+zlib: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+autofs: OPT
+bind: REC
+bitchx: OPT
+bootp: OPT
+curl: OPT
+cyrus-sasl: REC
+dhcp: OPT
+dhcpcd: REC
+dnsmasq: OPT
+elm: OPT
+epic4: OPT
+fetchmail: OPT
+getmail: REC
+gnupg: OPT
+htdig: OPT
+imapd: OPT
+inetd: REC
+iproute2: OPT
+iptables: ADD
+iptraf: OPT
+irssi: OPT
+lftp: OPT
+links: OPT
+lynx: OPT
+metamail: REC
+mod_ssl: OPT
+mutt: OPT
+nail: REC
+nc: OPT
+ncftp: OPT
+netatalk: OPT
+netpipes: OPT
+netwatch: OPT
+newspost: OPT
+nfs-utils: OPT
+nmap: OPT
+nn: OPT
+ntp: OPT
+openssh: REC
+openssl: REC
+php: OPT
+pidentd: REC
+pine: OPT
+popa3d: REC
+portmap: REC
+ppp: OPT
+procmail: REC
+proftpd: OPT
+rdist: OPT
+rp-pppoe: OPT
+rsync: OPT
+samba: OPT
+sendmail-cf: OPT
+sendmail: REC
+slrn: OPT
+stunnel: OPT
+tcpdump: REC
+tcpip: REC
+tin: OPT
+traceroute: OPT
+trn: OPT
+uucp: OPT
+vsftpd: REC
+wget: OPT
+whois: OPT
+wireless-tools: OPT
+yptools: OPT
+ytalk: OPT
+tetex: ADD
+tetex-doc: REC
+xfig: OPT
+transfig: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+expect: OPT
+hfsutils: OPT
+tcl: ADD
+tk: REC
+tclx: REC
+tix: OPT
+x11: ADD
+x11-devel: ADD
+x11-docs: REC
+x11-docs-html: OPT
+x11-fonts-100dpi: OPT
+x11-fonts-cyrillic: OPT
+x11-fonts-misc: ADD
+x11-fonts-scale: ADD
+x11-xdmx: OPT
+x11-xnest: OPT
+x11-xvfb: OPT
+abiword: OPT
+blackbox: OPT
+fluxbox: OPT
+fvwm: REC
+gaim: OPT
+gftp: OPT
+gimp: REC
+gimp-help-2: REC
+gkrellm: OPT
+gnuchess: REC
+gnuplot: OPT
+gucharmap: OPT
+gv: REC
+gxine: OPT
+imagemagick: REC
+mozilla: REC
+mozilla-firefox: REC
+mozilla-thunderbird: REC
+pan: REC
+rxvt: REC
+sane: OPT
+seyon: OPT
+windowmaker: REC
+x3270: OPT
+xchat: OPT
+xfce: OPT
+xfm: OPT
+xfractint: OPT
+xgames: REC
+xine-lib: REC
+xine-ui: REC
+xpaint: OPT
+xpdf: OPT
+xmms: OPT
+xsane: OPT
+xlockmore: REC
+xscreensaver: REC
+xv: REC
+xvim: REC
+xxgdb: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+bsd-games: OPT
+
diff --git a/templates/vserver-legacy.d/etc/apache/httpd.conf b/templates/vserver-legacy.d/etc/apache/httpd.conf
new file mode 100644
index 0000000..7b7115d
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/apache/httpd.conf
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do. They're here only as hints or reminders. If you are unsure
+# consult the online docs. You have been warned.
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+# 1. Directives that control the operation of the Apache server process as a
+# whole (the 'global environment').
+# 2. Directives that define the parameters of the 'main' or 'default' server,
+# which responds to requests that aren't handled by a virtual host.
+# These directives also provide default values for the settings
+# of all virtual hosts.
+# 3. Settings for virtual hosts, which allow Web requests to be sent to
+# different IP addresses or hostnames and have them handled by the
+# same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path. If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone. Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE! If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename.
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this. But if yours does (you'll know because
+# this file will be created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation. Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request. If there are fewer than MinSpareServers, it creates
+# a new spare. If there are more than MaxSpareServers, some of the
+# spares die off. The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies. The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources. On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+# request per connection. For example, if a child process handles
+# an initial request and 10 subsequent "keptalive" requests, it
+# would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important. Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module libexec/apache/mod_env.so
+LoadModule define_module libexec/apache/mod_define.so
+LoadModule config_log_module libexec/apache/mod_log_config.so
+LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
+LoadModule mime_module libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module libexec/apache/mod_status.so
+#LoadModule info_module libexec/apache/mod_info.so
+LoadModule includes_module libexec/apache/mod_include.so
+LoadModule autoindex_module libexec/apache/mod_autoindex.so
+LoadModule dir_module libexec/apache/mod_dir.so
+LoadModule cgi_module libexec/apache/mod_cgi.so
+#LoadModule asis_module libexec/apache/mod_asis.so
+#LoadModule imap_module libexec/apache/mod_imap.so
+#LoadModule action_module libexec/apache/mod_actions.so
+#LoadModule speling_module libexec/apache/mod_speling.so
+#LoadModule userdir_module libexec/apache/mod_userdir.so
+LoadModule alias_module libexec/apache/mod_alias.so
+LoadModule rewrite_module libexec/apache/mod_rewrite.so
+LoadModule access_module libexec/apache/mod_access.so
+LoadModule auth_module libexec/apache/mod_auth.so
+LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module libexec/apache/mod_digest.so
+LoadModule proxy_module libexec/apache/libproxy.so
+LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
+LoadModule expires_module libexec/apache/mod_expires.so
+LoadModule headers_module libexec/apache/mod_headers.so
+#LoadModule usertrack_module libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module libexec/apache/mod_unique_id.so
+LoadModule setenvif_module libexec/apache/mod_setenvif.so
+
+# Reconstruction of the complete module list from all available modules
+# (static and shared ones) to achieve correct module execution order.
+# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition. These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+# . On HPUX you may not be able to use shared memory as nobody, and the
+# suggested workaround is to create a user www and use that user.
+# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+# when the value of (unsigned)Group is above 60000;
+# don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed. This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories).
+#
+# First, we configure the "default" to be a very restrictive set of
+# permissions.
+#
+<Directory />
+ Options FollowSymLinks
+ AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+ Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo",
+# "AuthConfig", and "Limit"
+#
+ AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+ Order allow,deny
+ Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+ UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+# AllowOverride FileInfo AuthConfig Limit
+# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+# <Limit GET POST OPTIONS PROPFIND>
+# Order allow,deny
+# Allow from all
+# </Limit>
+# <LimitExcept GET POST OPTIONS PROPFIND>
+# Order deny,allow
+# Deny from all
+# </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index. Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+ DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients. Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons. Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files. If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+ Order allow,deny
+ Deny from all
+ Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name. With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible. This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+ TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value. If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type. The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+ MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here. Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of: On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType On=InOut text/* message/* multipart/*
+# EBCDICConvertByType On=In application/x-www-form-urlencoded
+# EBCDICConvertByType On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+ #
+ # Note that if you include a trailing / on fakename then the server will
+ # require it to be present in the URL. So "/icons" isn't aliased in this
+ # example, only "/icons/". If the fakename is slash-terminated, then the
+ # realname must also be slash terminated, and if the fakename omits the
+ # trailing slash, the realname must also omit it.
+ #
+ Alias /icons/ "/var/www/icons/"
+
+ <Directory "/var/www/icons">
+ Options Indexes MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ # This Alias will project the on-line documentation tree under /manual/
+ # even if you change the DocumentRoot. Comment it if you don't want to
+ # provide access to the on-line documentation.
+ #
+ Alias /manual/ "/var/www/htdocs/manual/"
+
+ <Directory "/var/www/htdocs/manual">
+ Options Indexes FollowSymlinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the client.
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+ #
+ # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+ <Directory "/var/www/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+ #
+ # FancyIndexing is whether you want fancy directory indexing or standard
+ #
+ IndexOptions FancyIndexing
+
+ #
+ # AddIcon* directives tell the server which icon to show for different
+ # files or filename extensions. These are only displayed for
+ # FancyIndexed directories.
+ #
+ AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+ AddIconByType (TXT,/icons/text.gif) text/*
+ AddIconByType (IMG,/icons/image2.gif) image/*
+ AddIconByType (SND,/icons/sound2.gif) audio/*
+ AddIconByType (VID,/icons/movie.gif) video/*
+
+ AddIcon /icons/binary.gif .bin .exe
+ AddIcon /icons/binhex.gif .hqx
+ AddIcon /icons/tar.gif .tar
+ AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+ AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+ AddIcon /icons/a.gif .ps .ai .eps
+ AddIcon /icons/layout.gif .html .shtml .htm .pdf
+ AddIcon /icons/text.gif .txt
+ AddIcon /icons/c.gif .c
+ AddIcon /icons/p.gif .pl .py
+ AddIcon /icons/f.gif .for
+ AddIcon /icons/dvi.gif .dvi
+ AddIcon /icons/uuencoded.gif .uu
+ AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+ AddIcon /icons/tex.gif .tex
+ AddIcon /icons/bomb.gif core
+
+ AddIcon /icons/back.gif ..
+ AddIcon /icons/hand.right.gif README
+ AddIcon /icons/folder.gif ^^DIRECTORY^^
+ AddIcon /icons/blank.gif ^^BLANKICON^^
+
+ #
+ # DefaultIcon is which icon to show for files which do not have an icon
+ # explicitly set.
+ #
+ DefaultIcon /icons/unknown.gif
+
+ #
+ # AddDescription allows you to place a short description after a file in
+ # server-generated indexes. These are only displayed for FancyIndexed
+ # directories.
+ # Format: AddDescription "description" filename
+ #
+ #AddDescription "GZIP compressed document" .gz
+ #AddDescription "tar archive" .tar
+ #AddDescription "GZIP compressed tar archive" .tgz
+
+ #
+ # ReadmeName is the name of the README file the server will look for by
+ # default, and append to directory listings.
+ #
+ # HeaderName is the name of a file which should be prepended to
+ # directory indexes.
+ #
+ ReadmeName README.html
+ HeaderName HEADER.html
+
+ #
+ # IndexIgnore is a set of filenames which directory indexing should ignore
+ # and not include in the listing. Shell-style wildcarding is permitted.
+ #
+ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+ #
+ # AddLanguage allows you to specify the language of a document. You can
+ # then use content negotiation to give a browser a file in a language
+ # it can understand.
+ #
+ # Note 1: The suffix does not have to be the same as the language
+ # keyword --- those with documents in Polish (whose net-standard
+ # language code is pl) may wish to use "AddLanguage pl .po" to
+ # avoid the ambiguity with the common suffix for perl scripts.
+ #
+ # Note 2: The example entries below illustrate that in quite
+ # some cases the two character 'Language' abbreviation is not
+ # identical to the two character 'Country' code for its country,
+ # E.g. 'Danmark/dk' versus 'Danish/da'.
+ #
+ # Note 3: In the case of 'ltz' we violate the RFC by using a three char
+ # specifier. But there is 'work in progress' to fix this and get
+ # the reference data for rfc1766 cleaned up.
+ #
+ # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+ # French (fr) - German (de) - Greek-Modern (el)
+ # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+ # Portugese (pt) - Luxembourgeois* (ltz)
+ # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+ # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
+ #
+ AddLanguage da .dk
+ AddLanguage nl .nl
+ AddLanguage en .en
+ AddLanguage et .ee
+ AddLanguage fr .fr
+ AddLanguage de .de
+ AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
+ AddLanguage it .it
+ AddLanguage ja .ja
+ AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage nn .nn
+ AddLanguage no .no
+ AddLanguage pl .po
+ AddCharset ISO-8859-2 .iso-pl
+ AddLanguage pt .pt
+ AddLanguage pt-br .pt-br
+ AddLanguage ltz .lu
+ AddLanguage ca .ca
+ AddLanguage es .es
+ AddLanguage sv .sv
+ AddLanguage cs .cz .cs
+ AddLanguage ru .ru
+ AddLanguage zh-TW .zh-tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
+
+ # LanguagePriority allows you to give precedence to some languages
+ # in case of a tie during content negotiation.
+ #
+ # Just list the languages in decreasing order of preference. We have
+ # more or less alphabetized them here. You probably want to change this.
+ #
+ <IfModule mod_negotiation.c>
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+ </IfModule>
+
+ #
+ # AddType allows you to tweak mime.types without actually editing it, or to
+ # make certain files to be certain types.
+ #
+ AddType application/x-tar .tgz
+
+ #
+ # AddEncoding allows you to have certain browsers uncompress
+ # information on the fly. Note: Not all browsers support this.
+ # Despite the name similarity, the following Add* directives have nothing
+ # to do with the FancyIndexing customization directives above.
+ #
+ AddEncoding x-compress .Z
+ AddEncoding x-gzip .gz .tgz
+ #
+ # If the AddEncoding directives above are commented-out, then you
+ # probably should define those extensions to indicate media types:
+ #
+ #AddType application/x-compress .Z
+ #AddType application/x-gzip .gz .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers",
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action command (see below)
+ #
+ # If you want to use server side includes, or CGI outside
+ # ScriptAliased directories, uncomment the following lines.
+ #
+ # To use CGI scripts:
+ #
+ #AddHandler cgi-script .cgi
+
+ #
+ # To use server-parsed HTML files
+ #
+ #AddType text/html .shtml
+ #AddHandler server-parsed .shtml
+
+ #
+ # Uncomment the following line to enable Apache's send-asis HTTP file
+ # feature
+ #
+ #AddHandler send-as-is asis
+
+ #
+ # If you wish to use server-parsed imagemap files, use
+ #
+ #AddHandler imap-file map
+
+ #
+ # To enable type maps, you might want to use
+ #
+ #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+# these come in three flavors
+#
+# 1) plain text
+ErrorDocument 500 /missing.html
+# n.b. the single leading (") marks it as text, it does not get output
+#
+# 2) local redirects
+ErrorDocument 404 /missing.html
+# to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+# N.B.: You can redirect to a script or a document using server-side-includes.
+#
+# 3) external redirects
+ErrorDocument 402 /missing.html
+# N.B.: Many of the environment variables associated with the original
+# request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+ #
+ # The following directives modify normal HTTP response behavior.
+ # The first directive disables keepalive for Netscape 2.x and browsers that
+ # spoof it. There are known problems with these browser implementations.
+ # The second directive is for Microsoft Internet Explorer 4.0b2
+ # which has a broken HTTP/1.1 implementation and does not properly
+ # support keepalive when it is used on 301 or 302 (redirect) responses.
+ #
+ BrowserMatch "Mozilla/2" nokeepalive
+ BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+ #
+ # The following directive disables HTTP/1.1 responses to browsers which
+ # are in violation of the HTTP/1.0 spec by not being able to grok a
+ # basic 1.1 response.
+ #
+ BrowserMatch "RealPlayer 4\.0" force-response-1.0
+ BrowserMatch "Java/1\.0" force-response-1.0
+ BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+# SetHandler server-status
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+# SetHandler server-info
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days. This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging
+# script on phf.apache.org. Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+# Deny from all
+# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled. To enable a particular
+# module for Apache, make sure the necessary packages are installed. Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache. Note that some modules may need additional configuration steps. For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED: openssl-solibs (A series) and/or openssl (N series),
+# mysql (AP series), gmp (L series), mhash (L series),
+# and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED: apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/templates/vserver-legacy.d/etc/apache/php.ini b/templates/vserver-legacy.d/etc/apache/php.ini
new file mode 100644
index 0000000..e6cddef
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/apache/php.ini
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file. It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with. Using this
+; file is warmly recommended for production sites. As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3. Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off [Security, Performance]
+; Global variables are no longer registered for input data (POST, GET, cookies,
+; environment and other server variables). Instead of using $foo, you must use
+; you can use $_REQUEST["foo"] (includes any variable that arrives through the
+; request, namely, POST, GET and cookie variables), or use one of the specific
+; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+; on where the input originates. Also, you can look at the
+; import_request_variables() function.
+; Note that register_globals is going to be depracated (i.e., turned off by
+; default) in the next version of PHP, because it often leads to security bugs.
+; Read http://php.net/manual/en/security.registerglobals.php for further
+; information.
+; - display_errors = Off [Security]
+; With this directive set to off, errors that occur during the execution of
+; scripts will no longer be displayed as a part of the script output, and thus,
+; will no longer be exposed to remote users. With some errors, the error message
+; content may expose information about your script, web server, or database
+; server that may be exploitable for hacking. Production sites should have this
+; directive set to off.
+; - log_errors = On [Security]
+; This directive complements the above one. Any errors that occur during the
+; execution of your script will be logged (typically, to your server's error log,
+; but can be configured in several ways). Along with setting display_errors to off,
+; this setup gives you the ability to fully understand what may have gone wrong,
+; without exposing any sensitive information to remote users.
+; - output_buffering = 4096 [Performance]
+; Set a 4KB output buffer. Enabling output buffering typically results in less
+; writes, and sometimes less packets sent on the wire, which can often lead to
+; better performance. The gain this directive actually yields greatly depends
+; on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off [Performance]
+; Disables registration of the somewhat redundant $argv and $argc global
+; variables.
+; - magic_quotes_gpc = Off [Performance]
+; Input data is no longer escaped with slashes so that it can be sent into
+; SQL databases without further manipulation. Instead, you should use the
+; function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS" [Performance]
+; The environment variables are not hashed into the $HTTP_ENV_VARS[]. To access
+; environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL [Code Cleanliness, Security(?)]
+; By default, PHP surpresses errors of type E_NOTICE. These error messages
+; are emitted for non-critical errors, but that could be a symptom of a bigger
+; problem. Most notably, this will cause error messages about the use
+; of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off [Code cleanliness]
+; It's not possible to decide to force a variable to be passed by reference
+; when calling a function. The PHP 4 style to do this is by making the
+; function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision = 14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit. You can enable output buffering during runtime by calling the output
+; buffering functions. You can also enable output buffering for all files by
+; setting this directive to On. If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function. For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+; directive. Instead, explicitly set the output handler using ob_start().
+; Using this ini directive may cause problems unless you know what script
+; is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP
+; outputs chunks that are few handreds bytes each as a result of compression.
+; If you want larger chunk size for better performence, enable output_buffering
+; also.
+; Note: output_handler must be empty if this is set 'On' !!!!
+; Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block. This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block. Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time. This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend. The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration. You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes. In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here. By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note: If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv(). These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below. This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode. Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header). It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30 ; Maximum execution time of each script, in seconds
+max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field. Or each number up to get desired error
+; reporting level
+; E_ALL - All errors and warnings
+; E_ERROR - fatal run-time errors
+; E_WARNING - run-time warnings (non-fatal errors)
+; E_PARSE - compile-time parse errors
+; E_NOTICE - run-time notices (these are warnings which often result
+; from a bug in your code, but it's possible that it was
+; intentional (e.g., using an uninitialized variable and
+; relying on the fact it's automatically initialized to an
+; empty string)
+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
+; initial startup
+; E_COMPILE_ERROR - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR - user-generated error message
+; E_USER_WARNING - user-generated warning message
+; E_USER_NOTICE - user-generated notice message
+;
+; Examples:
+;
+; - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+; - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+; - Show all errors
+;
+error_reporting = E_ALL
+
+; Print out errors (as a part of the output). For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below). Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed. It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&".
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&".
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC). Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables. You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data. This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on; Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information). If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated. Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header. To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues. The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function. The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers. Left undefined, PHP turns this on by default. You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution. Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting
+; of zero causes PHP to behave as before. Default is zero. You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client. This allows IIS to define the
+; security context that the request runs under. mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS. Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+; extension=modulename.extension
+;
+; For example, on Windows:
+;
+; extension=msql.dll
+;
+; ... or under UNIX:
+;
+; extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information
+; needs to go here. Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default. Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default. Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db = Not yet implemented
+;odbc.default_user = Not yet implemented
+;odbc.default_pw = Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+odbc.max_links = -1
+
+; Handling of LONG fields. Returns number of bytes to variables. 0 means
+; passthru.
+odbc.defaultlrl = 4096
+
+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect(). If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password! And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect().
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links. -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings. This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns. May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1. In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler. In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data. php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled. PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+; to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+; in publically accessible computer.
+; - User may access your site with the same session ID
+; always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs. If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch. 0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting(). Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents. -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file =
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+; portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database =
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files. Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding
+; is used. For the decode settings you can distinguish between motorola and
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel = UCS-2LE
+;exif.encode_jis =
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/templates/vserver-legacy.d/etc/apache/vhosts b/templates/vserver-legacy.d/etc/apache/vhosts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/apache/vhosts
diff --git a/templates/vserver-legacy.d/etc/hosts b/templates/vserver-legacy.d/etc/hosts
new file mode 100644
index 0000000..6e33147
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/hosts
@@ -0,0 +1,21 @@
+#
+# hosts This file describes a number of hostname-to-address
+# mappings for the TCP/IP subsystem. It is mostly
+# used at boot time, when no name servers are running.
+# On small systems, this file can be used instead of a
+# "named" name server. Just add the names, addresses
+# and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine. It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1 localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1 darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/templates/vserver-legacy.d/etc/logrotate.d/apache b/templates/vserver-legacy.d/etc/logrotate.d/apache
new file mode 100644
index 0000000..f31fbe2
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/logrotate.d/apache
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+ monthly
+ nomail
+ compress
+ create 0664 root root
+ rotate 12
+ postrotate
+ /etc/rc.d/rc.httpd restart > /dev/null
+ endscript
+}
+
diff --git a/templates/vserver-legacy.d/etc/profile b/templates/vserver-legacy.d/etc/profile
new file mode 100644
index 0000000..563594a
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/profile
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+ export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH. Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+ echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+ if [ ! $? = 0 ]; then
+ PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+ fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+ VISUAL=emacs
+# VISUAL=gmacs
+# VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask. A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+ if [ -x $profile_script ]; then
+ . $profile_script
+ fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.0 b/templates/vserver-legacy.d/etc/rc.d/rc.0
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.0
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.4 b/templates/vserver-legacy.d/etc/rc.d/rc.4
new file mode 100644
index 0000000..b972052
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.4
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.6 b/templates/vserver-legacy.d/etc/rc.d/rc.6
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.6
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.K b/templates/vserver-legacy.d/etc/rc.d/rc.K
new file mode 100755
index 0000000..00a1501
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.K
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K This file is executed by init when it goes into runlevel
+# 1, which is the administrative state. It kills all
+# daemons and then puts the system into single user mode.
+# Note that the file systems are kept mounted.
+#
+# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off accounting."
+ /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to initialize.
+ sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.M b/templates/vserver-legacy.d/etc/rc.d/rc.M
new file mode 100755
index 0000000..0cb3343
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.M
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.S b/templates/vserver-legacy.d/etc/rc.d/rc.S
new file mode 100755
index 0000000..05c75b4
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.S
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S: System initialization script.
+#
+# Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+ if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ fi
+fi
+
+# Start devfsd if necessary. On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+ /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+ if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ /sbin/mount -v sysfs /sys -n -t sysfs
+ fi
+ fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+ if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ /etc/rc.d/rc.udev
+ fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+ rm -f /fsrwtestfile
+ READWRITE=yes
+else
+ echo "Testing root filesystem status: read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+ FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+ RETVAL=0
+ if [ ! -r /etc/fastboot ]; then
+ echo "Checking root filesystem:"
+ /sbin/fsck $FORCEFSCK -C -a /
+ RETVAL=$?
+ fi
+ # An error code of 2 or higher will require a reboot.
+ if [ $RETVAL -ge 2 ]; then
+ # An error code equal to or greater than 4 means that some errors
+ # could not be corrected. This requires manual attention, so we
+ # offer a chance to try to fix the problem in single-user mode:
+ if [ $RETVAL -ge 4 ]; then
+ echo
+ echo "***********************************************************"
+ echo "*** An error occurred during the root filesystem check. ***"
+ echo "*** You will now be given a chance to log into the ***"
+ echo "*** system in single-user mode to fix the problem. ***"
+ echo "*** ***"
+ echo "*** If you are using the ext2 filesystem, running ***"
+ echo "*** 'e2fsck -v -y <partition>' might help. ***"
+ echo "***********************************************************"
+ echo
+ echo "Once you exit the single-user shell, the system will reboot."
+ echo
+ PS1="(Repair filesystem) \#"; export PS1
+ sulogin
+ else # With an error code of 2 or 3, reboot the machine automatically:
+ echo
+ echo "***********************************"
+ echo "*** The filesystem was changed. ***"
+ echo "*** The system will now reboot. ***"
+ echo "***********************************"
+ echo
+ fi
+ echo "Unmounting file systems."
+ /sbin/umount -a -r
+ /sbin/mount -n -o remount,ro /
+ echo "Rebooting system."
+ sleep 2
+ reboot -f
+ fi
+ # Remount the root filesystem in read-write mode
+ echo "Remounting root device with read-write enabled."
+ /sbin/mount -w -v -n -o remount /
+ if [ $? -gt 0 ] ; then
+ echo
+ echo "Attempt to remount root device as read-write failed! This is going to"
+ echo "cause serious problems."
+ echo
+ echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+ echo "read-write! You can make sure the root filesystem is getting mounted "
+ echo "read-write with the 'rw' flag to Loadlin:"
+ echo
+ echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
+ echo
+ echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+ echo
+ echo "rdev -R /dev/fd0 0"
+ echo
+ echo "You can also get into your system by using a boot disk with a command like this"
+ echo "on the LILO prompt line: (change the root partition name as needed)"
+ echo
+ echo "LILO: mount root=/dev/hda1 rw"
+ echo
+ echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+ echo -n "get into your machine and start looking for the problem. "
+ read junk;
+ fi
+else
+ echo "Testing root filesystem status: read-write filesystem"
+ if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+ ROOTTYPE="umsdos"
+ fi
+ if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+ echo
+ echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+ echo
+ echo "For filesystem checking to work properly, your system must initially mount"
+ echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+ echo "it does this. If you're booting with LILO, add a line:"
+ echo
+ echo " read-only"
+ echo
+ echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+ echo
+ echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+ echo " rdev -R /dev/fd0 1"
+ echo
+ echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+ echo
+ echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+ echo
+ echo -n "Press ENTER to continue. "
+ read junk;
+ fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+ /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+ /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+ if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+ echo "Setting system time from the hardware clock (UTC)."
+ /sbin/hwclock --utc --hctosys
+ else
+ echo "Setting system time from the hardware clock (localtime)."
+ /sbin/hwclock --localtime --hctosys
+ fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+ if [ -x /sbin/isapnp ]; then
+ /sbin/isapnp /etc/isapnp.conf
+ fi
+fi
+
+# This loads any kernel modules that are needed. These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+ . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+ /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or
+# /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Initializing LVM (Logical Volume Manager):"
+ # Check for device-mapper support.
+ if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+ # If device-mapper exists as a module, try to load it.
+ if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+ insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+ fi
+ fi
+ # Scan for new volume groups:
+ /sbin/vgscan 2> /dev/null
+ if [ $? = 0 ]; then
+ # This needs a moment to register.
+ sleep 10
+ # Make volume groups available to the kernel.
+ # This should also make logical volumes available.
+ /sbin/vgchange -ay
+ # Enable swapping again in case any LVs are used for swap. Ignore previous error. :-)
+ /sbin/swapon -a
+ fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+ echo "Checking non-root filesystems:"
+ /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+ /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+ /sbin/umount /initrd 2> /dev/null
+ rmdir /initrd 2> /dev/null
+ blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+ echo "Synchronizing UMSDOS directory structure:"
+ echo " /sbin/umssync -r99 -v- /"
+ /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+ echo "Using /etc/random-seed to initialize /dev/urandom."
+ cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.httpd b/templates/vserver-legacy.d/etc/rc.d/rc.httpd
new file mode 100644
index 0000000..00b8837
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.httpd
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+ 'start')
+ /usr/sbin/apachectl start ;;
+ 'stop')
+ /usr/sbin/apachectl stop ;;
+ 'restart')
+ /usr/sbin/apachectl restart ;;
+ *)
+ echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.inet2 b/templates/vserver-legacy.d/etc/rc.d/rc.inet2
new file mode 100755
index 0000000..db56589
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.inet2
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2 This shell script boots up the entire network system.
+# Note, that when this script is used to also fire
+# up any important remote NFS disks (like the /usr
+# directory), care must be taken to actually
+# have all the needed binaries online _now_ ...
+#
+# Uncomment or comment out sections depending on which
+# services your site requires.
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+ # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+ # since it will need to be running in order to mount them. If portmap
+ # is not running, attempting to mount an NFS partition will cause mount
+ # to hang. Keep this in mind if you plan to mount unlisted partitions...
+ if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+ else
+ # Warn about a possible NFS problem. It's also possible to mount NFS partitions
+ # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+ echo "WARNING: NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+ echo " not executable. If you do not run portmap, NFS partitions will"
+ echo " not mount properly. To start rpc.portmap at boot, change the"
+ echo " permissions on /etc/rc.d/rc.portmap: chmod 755 /etc/rc.d/rc.portmap"
+ sleep 10
+ fi
+ echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs"
+ /sbin/mount -a -t nfs # This may be our /usr runtime!
+ # Show the mounted volumes:
+ /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+ echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
+ /sbin/mount -a -t smbfs
+ # Show the mounted volumes:
+ /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux. In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+ /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+ . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+ /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+ echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+ /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+ /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+ . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server. Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows. ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+# echo "Starting network routing daemon: /usr/sbin/routed"
+# /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+# echo "Starting system status server: /usr/sbin/rwhod"
+# /usr/sbin/rwhod
+# fi
+
+# # Fire up the PC-NFS daemon(s). This is a primarily obsolete system, and may
+# # not be very secure. It's not at all needed for normal NFS server support.
+# # You probably should not run this.
+# if [ -x /usr/sbin/rpc.pcnfsd ]; then
+# echo "Starting PC-NFS daemons: /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+# /usr/sbin/rpc.pcnfsd /var/spool/lpd
+# fi
+# if [ -x /usr/sbin/rpc.bwnfsd ]; then
+# /usr/sbin/rpc.bwnfsd /var/spool/lpd
+# fi
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.inetd b/templates/vserver-legacy.d/etc/rc.d/rc.inetd
new file mode 100644
index 0000000..9fe1419
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.inetd
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+ if [ -x /usr/sbin/inetd ]; then
+ echo "Starting Internet super-server daemon: /usr/sbin/inetd"
+ /usr/sbin/inetd
+ fi
+}
+
+# Stop inetd:
+inetd_stop() {
+ killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+ inetd_stop
+ sleep 1
+ inetd_start
+}
+
+case "$1" in
+'start')
+ inetd_start
+ ;;
+'stop')
+ inetd_stop
+ ;;
+'restart')
+ inetd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.ip_forward b/templates/vserver-legacy.d/etc/rc.d/rc.ip_forward
new file mode 100644
index 0000000..52bd2fe
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.ip_forward
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward: start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable: chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable: chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Activating IPv4 packet forwarding."
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ fi
+ # When using IPv4 packet forwarding, you will also get the
+ # rp_filter, which automatically rejects incoming packets if the
+ # routing table entry for their source address doesn't match the
+ # network interface they're arriving on. This has security
+ # advantages because it prevents the so-called IP spoofing,
+ # however it can pose problems if you use asymmetric routing
+ # (packets from you to a host take a different path than packets
+ # from that host to you) or if you operate a non-routing host
+ # which has several IP addresses on different interfaces. To
+ # turn rp_filter off, uncomment the lines below:
+ #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+ # echo "Disabling rp_filter."
+ # echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+ #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Disabling IPv4 packet forwarding."
+ echo 0 > /proc/sys/net/ipv4/ip_forward
+ fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+ ip_forward_stop
+ sleep 1
+ ip_forward_start
+}
+
+case "$1" in
+'start')
+ ip_forward_start
+ ;;
+'stop')
+ ip_forward_stop
+ ;;
+'restart')
+ ip_forward_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.local b/templates/vserver-legacy.d/etc/rc.d/rc.local
new file mode 100755
index 0000000..3cf2076
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.local
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local: Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.mysqld b/templates/vserver-legacy.d/etc/rc.d/rc.mysqld
new file mode 100644
index 0000000..239e2e6
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.mysqld
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database. To install an initial
+# database, do this as root:
+#
+# su - mysql
+# mysql_install_db
+#
+# Note that step one is becoming the mysql user. It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+ if [ -x /usr/bin/mysqld_safe ]; then
+ # If there is an old PID file (no mysqld running), clean it up:
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+ echo "Cleaning up old /var/run/mysql/mysql.pid."
+ rm -f /var/run/mysql/mysql.pid
+ fi
+ fi
+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+ fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+ # If there is no PID file, ignore this request...
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ killall mysqld
+ # Wait at least one minute for it to exit, as we don't know how big the DB is...
+ for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+ if [ ! -r /var/run/mysql/mysql.pid ]; then
+ break;
+ fi
+ sleep 1
+ done
+ if [ "$second" = "60" ]; then
+ echo "WARNING: Gave up waiting for mysqld to exit!"
+ sleep 15
+ fi
+ fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+ mysqld_stop
+ mysqld_start
+}
+
+case "$1" in
+'start')
+ mysqld_start
+ ;;
+'stop')
+ mysqld_stop
+ ;;
+'restart')
+ mysqld_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.postfix b/templates/vserver-legacy.d/etc/rc.d/rc.postfix
new file mode 100644
index 0000000..bc32367
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.postfix
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+## 20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+ if [ -x /usr/sbin/postfix ]; then
+ echo -n "Starting postfix MTA: "
+ echo "/usr/sbin/postfix start"
+ /usr/sbin/postfix start 2>/dev/null
+ fi
+}
+
+postfix_stop() {
+ /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+ sh $0 stop
+ sleep 1
+ sh $0 start
+}
+
+postfix_reload() {
+ /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+ 'start')
+ postfix_start
+ ;;
+ 'stop')
+ postfix_stop
+ ;;
+ 'restart')
+ postfix_restart
+ ;;
+ 'reload')
+ postfix_reload
+ ;;
+ *)
+ echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.sendmail b/templates/vserver-legacy.d/etc/rc.d/rc.sendmail
new file mode 100644
index 0000000..1a31c52
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.sendmail
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+ if [ -x /usr/sbin/sendmail ]; then
+ echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+ /usr/sbin/sendmail -L sm-mta -bd -q25m
+ echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+ /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+ fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+ killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+ sendmail_stop
+ sleep 1
+ sendmail_start
+}
+
+case "$1" in
+'start')
+ sendmail_start
+ ;;
+'stop')
+ sendmail_stop
+ ;;
+'restart')
+ sendmail_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.serial b/templates/vserver-legacy.d/etc/rc.d/rc.serial
new file mode 100755
index 0000000..5f31c01
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.serial
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial
+# Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver. We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial
+# file with a newer one.
+#
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now). Autosave also doesn't work for the hayes devices.
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+ ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+ SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+ SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+ if grep -q " ttyS$" /proc/devices ; then
+ LOADED="yes"
+ else
+ LOADED="no"
+ fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+ if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+ MODULE=$i/$DRIVER.o
+ fi
+done
+
+if ! test -f /proc/modules ; then
+ MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+ action="start";
+ ;;
+stop)
+ action="stop";
+ ;;
+*)
+ action="start";
+esac
+
+if test $action = stop ; then
+ if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+ `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+ echo -n "Saving state of serial devices... "
+ grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+ ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+ mv /etc/serial.conf /etc/.serial.conf.old
+ mv /etc/.serial.conf.new /etc/serial.conf
+ echo "done."
+ fi
+ if test -n "$MODULE" ; then
+ module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+ if test -z "$module" ; then
+ echo "The $DRIVER_NAME driver is not loaded."
+ rm -f ${RCLOCKFILE}
+ exit 0
+ fi
+ if rmmod $module ; then :; else
+ echo "The $DRIVER_NAME driver could NOT be unloaded."
+ exit 1;
+ fi
+ echo "The $DRIVER_NAME driver has been unloaded."
+ fi
+ rm -f ${RCLOCKFILE}
+ exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then
+ if insmod -f $MODULE $DRIVER_ARG ; then
+ true
+ else
+ echo "Couldn't load $DRIVER_NAME driver."
+ exit 1
+ fi
+fi
+
+if test -f /etc/serial.conf ; then
+ if test -n ${SETSERIAL} ; then
+ grep -v ^# < /etc/serial.conf | while read device args
+ do
+ if [ ! "$device" = "" -a ! "$args" = "" ]; then
+ ${SETSERIAL} -z $device $args
+ fi
+ done
+ fi
+else
+ echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.sshd b/templates/vserver-legacy.d/etc/rc.d/rc.sshd
new file mode 100755
index 0000000..a3707e3
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.sshd
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+ # Create host keys if needed.
+ if [ ! -r /etc/ssh/ssh_host_key ]; then
+ /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+ /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+ /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+ fi
+ /usr/sbin/sshd
+}
+
+sshd_stop() {
+ killall sshd
+}
+
+sshd_restart() {
+ if [ -r /var/run/sshd.pid ]; then
+ echo "WARNING: killing listener process only. To kill every sshd process, you must"
+ echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to"
+ echo " allow an admin logged in through sshd to use 'rc.sshd restart' without"
+ echo " being cut off. If sshd has been upgraded, new connections will now"
+ echo " use the new version, which should be a safe enough approach."
+ kill `cat /var/run/sshd.pid`
+ else
+ killall sshd
+ fi
+ sleep 1
+ sshd_start
+}
+
+case "$1" in
+'start')
+ sshd_start
+ ;;
+'stop')
+ sshd_stop
+ ;;
+'restart')
+ sshd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.syslog b/templates/vserver-legacy.d/etc/rc.d/rc.syslog
new file mode 100755
index 0000000..a005fb7
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.syslog
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+ if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+ echo -n "Starting sysklogd daemons: "
+ echo -n "/usr/sbin/syslogd "
+ /usr/sbin/syslogd
+ sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+ echo "/usr/sbin/klogd -c 3 -x"
+ # '-c 3' = display level 'error' or higher messages on console
+ # '-x' = turn off broken EIP translation
+ /usr/sbin/klogd -c 3 -x
+ fi
+}
+
+syslogd_stop() {
+ killall syslogd 2> /dev/null
+ killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+ syslogd_stop
+ sleep 1
+ syslogd_start
+}
+
+case "$1" in
+'start')
+ syslogd_start
+ ;;
+'stop')
+ syslogd_stop
+ ;;
+'restart')
+ syslogd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver-legacy.d/etc/rc.d/rc.sysvinit b/templates/vserver-legacy.d/etc/rc.d/rc.sysvinit
new file mode 100755
index 0000000..916e59e
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rc.d/rc.sysvinit
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit This file provides basic compatibility with SystemV style
+# startup scripts. The SystemV style init system places
+# start/stop scripts for each runlevel into directories such as
+# /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+# from /etc/rc.d/rc.M. This makes for a lot more init scripts,
+# and a more complicated execution path to follow through if
+# something goes wrong. For this reason, Slackware has always
+# used the traditional BSD style init script layout.
+#
+# However, many binary packages exist that install SystemV
+# init scripts. With rc.sysvinit in place, most well-written
+# startup scripts will work. This is primarily intended to
+# support commercial software, though, and probably shouldn't
+# be considered bug free.
+#
+# Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+# from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+ case "$1" in
+ *.sh)
+ sh "$@"
+ ;;
+ *)
+ "$@"
+ ;;
+ esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+ runlevel=$RUNLEVEL
+ export runlevel
+ prevlevel=$PREVLEVEL
+ export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+ for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+ if [ -x $script ]; then
+ startup $script stop
+ fi
+ done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+ if [ -x $script ]; then
+ startup $script start
+ fi
+done
+
diff --git a/templates/vserver-legacy.d/etc/rssh.conf b/templates/vserver-legacy.d/etc/rssh.conf
new file mode 100644
index 0000000..a74acc6
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/rssh.conf
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility. "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010: # the path can simply be left out to not chroot
+#user=rudy:077:00010 # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir" # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir" # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir" # both with chroot
+#user=rudy:011:00100: # cvs, with no chroot
+#user=rudy:011:01000: # rdist, with no chroot
+#user=rudy:011:10000: # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot" # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot" # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot' # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"
+#user = "rudy:011:00001:/usr/local/chroot dir" # neither do comments at line end
+
diff --git a/templates/vserver-legacy.d/etc/ssh/sshd_config b/templates/vserver-legacy.d/etc/ssh/sshd_config
new file mode 100644
index 0000000..a161fec
--- /dev/null
+++ b/templates/vserver-legacy.d/etc/ssh/sshd_config
@@ -0,0 +1,103 @@
+# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the ChallengeResponseAuthentication mechanism.
+# Depending on your PAM configuration, this may bypass the setting of
+# PasswordAuthentication, PermitEmptyPasswords, and
+# "PermitRootLogin without-password". If you just want the PAM account and
+# session checks to run without PAM authentication, then enable this but set
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem sftp /usr/libexec/sftp-server
diff --git a/templates/vserver-legacy.d/var/www/htdocs/missing.html b/templates/vserver-legacy.d/var/www/htdocs/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/templates/vserver-legacy.d/var/www/htdocs/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/templates/vserver-legacy.d/var/www/missing.html b/templates/vserver-legacy.d/var/www/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/templates/vserver-legacy.d/var/www/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/templates/vserver-legacy.s/GPG-KEY b/templates/vserver-legacy.s/GPG-KEY
new file mode 100644
index 0000000..fd23e95
--- /dev/null
+++ b/templates/vserver-legacy.s/GPG-KEY
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type bits/keyID Date User ID
+pub 1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub 1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/templates/vserver-legacy.s/devices.tar.gz b/templates/vserver-legacy.s/devices.tar.gz
new file mode 100644
index 0000000..992ba79
--- /dev/null
+++ b/templates/vserver-legacy.s/devices.tar.gz
Binary files differ
diff --git a/templates/vserver-legacy.s/skel.conf b/templates/vserver-legacy.s/skel.conf
new file mode 100644
index 0000000..73985d3
--- /dev/null
+++ b/templates/vserver-legacy.s/skel.conf
@@ -0,0 +1,70 @@
+if [ "" = "" ] ; then
+PROFILE=prod
+fi
+# Select the IP number assigned to the virtual server
+# This IP must be one IP of the server, either an interface
+# or an IP alias
+# A vserver may have more than one IP. Separate them with spaces.
+# do not forget double quotes.
+# Some examples:
+# IPROOT="1.2.3.4 2.3.4.5"
+# IPROOT="eth0:1.2.3.4 eth1:2.3.4.5"
+# If the device is not specified, IPROOTDEV is used
+case $PROFILE in
+prod)
+#IPROOT=143.106.35.156
+IPROOT="eth0:192.168.0.1"
+# The netmask and broadcast are computed by default from IPROOTDEV
+#IPROOTMASK=
+#IPROOTBCAST=
+# You can define on which device the IP alias will be done
+# The IP alias will be set when the server is started and unset
+# when the server is stopped
+#IPROOTDEV=eth0
+# You can set a different host name for the vserver
+# If empty, the host name of the main server is used
+S_HOSTNAME=skel
+;;
+backup)
+IPROOT=1.2.3.4
+#IPROOTMASK=
+#IPROOTBCAST=
+#IPROOTDEV=eth0
+S_HOSTNAME=
+;;
+esac
+# Uncomment the onboot line if you want to enable this
+# virtual server at boot time
+#ONBOOT=yes
+# You can set a different NIS domain for the vserver
+# If empty, the current on is kept
+# Set it to "none" to have no NIS domain set
+S_DOMAINNAME=
+# You can set the priority level (nice) of all process in the vserver
+# Even root won't be able to raise it
+S_NICE=
+# You can set various flags for the new security context
+# lock: Prevent the vserver from setting new security context
+# sched: Merge scheduler priority of all processes in the vserver
+# so that it acts a like a single one.
+# nproc: Limit the number of processes in the vserver according to ulimit
+# (instead of a per user limit, this becomes a per vserver limit)
+# private: No other process can join this security context. Even root
+# Do not forget the quotes around the flags
+S_FLAGS="lock nproc"
+# You can set various ulimit flags and they will be inherited by the
+# vserver. You enter here various command line argument of ulimit
+# ULIMIT="-HS -u 200"
+# The example above, combined with the nproc S_FLAGS will limit the
+# vserver to a maximum of 200 processes
+ULIMIT="-HS -u 1000"
+# You can set various capabilities. By default, the vserver are run
+# with a limited set, so you can let root run in a vserver and not
+# worry about it. He can't take over the machine. In some cases
+# you can to give a little more capabilities (such as CAP_NET_RAW)
+# S_CAPS="CAP_NET_RAW"
+S_CAPS="CAP_SETGID"
+# Select an unused context (this is optional)
+# The default is to allocate a free context on the fly
+# In general you don't need to force a context
+#S_CONTEXT=
diff --git a/templates/vserver-legacy.s/vserver-legacy.sh b/templates/vserver-legacy.s/vserver-legacy.sh
new file mode 100644
index 0000000..f243ea0
--- /dev/null
+++ b/templates/vserver-legacy.s/vserver-legacy.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+#
+# legacy vserver template
+#
+
+DEVICES="/etc/simplepkg/vserver-legacy.s/devices.tar.gz"
+GPGKEY="/etc/simplepkg/vserver-legacy.s/GPG-KEY"
+SKEL="/etc/simplepkg/vserver-legacy.s/skel.conf"
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab
+
+echo "creating devices and dependencies"
+if [ -f "$DEVICES" ]; then
+ cd $1/$2/
+ tar zxvf $DEVICES
+ chroot $1/$2/ sbin/ldconfig
+else
+ echo error: device template $DEVICES not found
+fi
+
+if [ -f "$SKEL" ]; then
+ echo "creating /etc/vservers/$2.conf"
+ cp $SKEL /etc/vservers/$2.conf
+else
+ echo error: config file template $SKEL not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+ echo "importing slack gpg pubkey"
+ mkdir $1/$2/root/.gnupg
+ gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+# todo: add rebootmgr
+echo "done; now edit /etc/vservers/$2.conf"
+echo "then, set all desired iptables rules and start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd""
diff --git a/templates/vserver-legacy.template b/templates/vserver-legacy.template
new file mode 100644
index 0000000..b810e32
--- /dev/null
+++ b/templates/vserver-legacy.template
@@ -0,0 +1,251 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+vim: OPT
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+htdig: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+nail: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+libsafe
+# contrib
+simplepkg
+ssmtp
diff --git a/templates/vserver.d/etc/apache/httpd.conf b/templates/vserver.d/etc/apache/httpd.conf
new file mode 100644
index 0000000..7b7115d
--- /dev/null
+++ b/templates/vserver.d/etc/apache/httpd.conf
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file. It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do. They're here only as hints or reminders. If you are unsure
+# consult the online docs. You have been warned.
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+# 1. Directives that control the operation of the Apache server process as a
+# whole (the 'global environment').
+# 2. Directives that define the parameters of the 'main' or 'default' server,
+# which responds to requests that aren't handled by a virtual host.
+# These directives also provide default values for the settings
+# of all virtual hosts.
+# 3. Settings for virtual hosts, which allow Web requests to be sent to
+# different IP addresses or hostnames and have them handled by the
+# same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path. If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone. Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE! If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename.
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this. But if yours does (you'll know because
+# this file will be created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation. Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request. If there are fewer than MinSpareServers, it creates
+# a new spare. If there are more than MaxSpareServers, some of the
+# spares die off. The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies. The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources. On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+# request per connection. For example, if a child process handles
+# an initial request and 10 subsequent "keptalive" requests, it
+# would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important. Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module libexec/apache/mod_env.so
+LoadModule define_module libexec/apache/mod_define.so
+LoadModule config_log_module libexec/apache/mod_log_config.so
+LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
+LoadModule mime_module libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module libexec/apache/mod_status.so
+#LoadModule info_module libexec/apache/mod_info.so
+LoadModule includes_module libexec/apache/mod_include.so
+LoadModule autoindex_module libexec/apache/mod_autoindex.so
+LoadModule dir_module libexec/apache/mod_dir.so
+LoadModule cgi_module libexec/apache/mod_cgi.so
+#LoadModule asis_module libexec/apache/mod_asis.so
+#LoadModule imap_module libexec/apache/mod_imap.so
+#LoadModule action_module libexec/apache/mod_actions.so
+#LoadModule speling_module libexec/apache/mod_speling.so
+#LoadModule userdir_module libexec/apache/mod_userdir.so
+LoadModule alias_module libexec/apache/mod_alias.so
+LoadModule rewrite_module libexec/apache/mod_rewrite.so
+LoadModule access_module libexec/apache/mod_access.so
+LoadModule auth_module libexec/apache/mod_auth.so
+LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module libexec/apache/mod_digest.so
+LoadModule proxy_module libexec/apache/libproxy.so
+LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
+LoadModule expires_module libexec/apache/mod_expires.so
+LoadModule headers_module libexec/apache/mod_headers.so
+#LoadModule usertrack_module libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module libexec/apache/mod_unique_id.so
+LoadModule setenvif_module libexec/apache/mod_setenvif.so
+
+# Reconstruction of the complete module list from all available modules
+# (static and shared ones) to achieve correct module execution order.
+# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition. These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+# . On HPUX you may not be able to use shared memory as nobody, and the
+# suggested workaround is to create a user www and use that user.
+# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+# when the value of (unsigned)Group is above 60000;
+# don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed. This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories).
+#
+# First, we configure the "default" to be a very restrictive set of
+# permissions.
+#
+<Directory />
+ Options FollowSymLinks
+ AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+ Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo",
+# "AuthConfig", and "Limit"
+#
+ AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+ Order allow,deny
+ Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+ UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+# AllowOverride FileInfo AuthConfig Limit
+# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+# <Limit GET POST OPTIONS PROPFIND>
+# Order allow,deny
+# Allow from all
+# </Limit>
+# <LimitExcept GET POST OPTIONS PROPFIND>
+# Order deny,allow
+# Deny from all
+# </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index. Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+ DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients. Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons. Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files. If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+ Order allow,deny
+ Deny from all
+ Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name. With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible. This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+ TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value. If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type. The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+ MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here. If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here. Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of: On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType On=InOut text/* message/* multipart/*
+# EBCDICConvertByType On=In application/x-www-form-urlencoded
+# EBCDICConvertByType On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+ #
+ # Note that if you include a trailing / on fakename then the server will
+ # require it to be present in the URL. So "/icons" isn't aliased in this
+ # example, only "/icons/". If the fakename is slash-terminated, then the
+ # realname must also be slash terminated, and if the fakename omits the
+ # trailing slash, the realname must also omit it.
+ #
+ Alias /icons/ "/var/www/icons/"
+
+ <Directory "/var/www/icons">
+ Options Indexes MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ # This Alias will project the on-line documentation tree under /manual/
+ # even if you change the DocumentRoot. Comment it if you don't want to
+ # provide access to the on-line documentation.
+ #
+ Alias /manual/ "/var/www/htdocs/manual/"
+
+ <Directory "/var/www/htdocs/manual">
+ Options Indexes FollowSymlinks MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the client.
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+ ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+ #
+ # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+ <Directory "/var/www/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+ #
+ # FancyIndexing is whether you want fancy directory indexing or standard
+ #
+ IndexOptions FancyIndexing
+
+ #
+ # AddIcon* directives tell the server which icon to show for different
+ # files or filename extensions. These are only displayed for
+ # FancyIndexed directories.
+ #
+ AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+ AddIconByType (TXT,/icons/text.gif) text/*
+ AddIconByType (IMG,/icons/image2.gif) image/*
+ AddIconByType (SND,/icons/sound2.gif) audio/*
+ AddIconByType (VID,/icons/movie.gif) video/*
+
+ AddIcon /icons/binary.gif .bin .exe
+ AddIcon /icons/binhex.gif .hqx
+ AddIcon /icons/tar.gif .tar
+ AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+ AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+ AddIcon /icons/a.gif .ps .ai .eps
+ AddIcon /icons/layout.gif .html .shtml .htm .pdf
+ AddIcon /icons/text.gif .txt
+ AddIcon /icons/c.gif .c
+ AddIcon /icons/p.gif .pl .py
+ AddIcon /icons/f.gif .for
+ AddIcon /icons/dvi.gif .dvi
+ AddIcon /icons/uuencoded.gif .uu
+ AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+ AddIcon /icons/tex.gif .tex
+ AddIcon /icons/bomb.gif core
+
+ AddIcon /icons/back.gif ..
+ AddIcon /icons/hand.right.gif README
+ AddIcon /icons/folder.gif ^^DIRECTORY^^
+ AddIcon /icons/blank.gif ^^BLANKICON^^
+
+ #
+ # DefaultIcon is which icon to show for files which do not have an icon
+ # explicitly set.
+ #
+ DefaultIcon /icons/unknown.gif
+
+ #
+ # AddDescription allows you to place a short description after a file in
+ # server-generated indexes. These are only displayed for FancyIndexed
+ # directories.
+ # Format: AddDescription "description" filename
+ #
+ #AddDescription "GZIP compressed document" .gz
+ #AddDescription "tar archive" .tar
+ #AddDescription "GZIP compressed tar archive" .tgz
+
+ #
+ # ReadmeName is the name of the README file the server will look for by
+ # default, and append to directory listings.
+ #
+ # HeaderName is the name of a file which should be prepended to
+ # directory indexes.
+ #
+ ReadmeName README.html
+ HeaderName HEADER.html
+
+ #
+ # IndexIgnore is a set of filenames which directory indexing should ignore
+ # and not include in the listing. Shell-style wildcarding is permitted.
+ #
+ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+ #
+ # AddLanguage allows you to specify the language of a document. You can
+ # then use content negotiation to give a browser a file in a language
+ # it can understand.
+ #
+ # Note 1: The suffix does not have to be the same as the language
+ # keyword --- those with documents in Polish (whose net-standard
+ # language code is pl) may wish to use "AddLanguage pl .po" to
+ # avoid the ambiguity with the common suffix for perl scripts.
+ #
+ # Note 2: The example entries below illustrate that in quite
+ # some cases the two character 'Language' abbreviation is not
+ # identical to the two character 'Country' code for its country,
+ # E.g. 'Danmark/dk' versus 'Danish/da'.
+ #
+ # Note 3: In the case of 'ltz' we violate the RFC by using a three char
+ # specifier. But there is 'work in progress' to fix this and get
+ # the reference data for rfc1766 cleaned up.
+ #
+ # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+ # French (fr) - German (de) - Greek-Modern (el)
+ # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+ # Portugese (pt) - Luxembourgeois* (ltz)
+ # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+ # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
+ #
+ AddLanguage da .dk
+ AddLanguage nl .nl
+ AddLanguage en .en
+ AddLanguage et .ee
+ AddLanguage fr .fr
+ AddLanguage de .de
+ AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
+ AddLanguage it .it
+ AddLanguage ja .ja
+ AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage nn .nn
+ AddLanguage no .no
+ AddLanguage pl .po
+ AddCharset ISO-8859-2 .iso-pl
+ AddLanguage pt .pt
+ AddLanguage pt-br .pt-br
+ AddLanguage ltz .lu
+ AddLanguage ca .ca
+ AddLanguage es .es
+ AddLanguage sv .sv
+ AddLanguage cs .cz .cs
+ AddLanguage ru .ru
+ AddLanguage zh-TW .zh-tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
+
+ # LanguagePriority allows you to give precedence to some languages
+ # in case of a tie during content negotiation.
+ #
+ # Just list the languages in decreasing order of preference. We have
+ # more or less alphabetized them here. You probably want to change this.
+ #
+ <IfModule mod_negotiation.c>
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+ </IfModule>
+
+ #
+ # AddType allows you to tweak mime.types without actually editing it, or to
+ # make certain files to be certain types.
+ #
+ AddType application/x-tar .tgz
+
+ #
+ # AddEncoding allows you to have certain browsers uncompress
+ # information on the fly. Note: Not all browsers support this.
+ # Despite the name similarity, the following Add* directives have nothing
+ # to do with the FancyIndexing customization directives above.
+ #
+ AddEncoding x-compress .Z
+ AddEncoding x-gzip .gz .tgz
+ #
+ # If the AddEncoding directives above are commented-out, then you
+ # probably should define those extensions to indicate media types:
+ #
+ #AddType application/x-compress .Z
+ #AddType application/x-gzip .gz .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers",
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action command (see below)
+ #
+ # If you want to use server side includes, or CGI outside
+ # ScriptAliased directories, uncomment the following lines.
+ #
+ # To use CGI scripts:
+ #
+ #AddHandler cgi-script .cgi
+
+ #
+ # To use server-parsed HTML files
+ #
+ #AddType text/html .shtml
+ #AddHandler server-parsed .shtml
+
+ #
+ # Uncomment the following line to enable Apache's send-asis HTTP file
+ # feature
+ #
+ #AddHandler send-as-is asis
+
+ #
+ # If you wish to use server-parsed imagemap files, use
+ #
+ #AddHandler imap-file map
+
+ #
+ # To enable type maps, you might want to use
+ #
+ #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+# these come in three flavors
+#
+# 1) plain text
+ErrorDocument 500 /missing.html
+# n.b. the single leading (") marks it as text, it does not get output
+#
+# 2) local redirects
+ErrorDocument 404 /missing.html
+# to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+# N.B.: You can redirect to a script or a document using server-side-includes.
+#
+# 3) external redirects
+ErrorDocument 402 /missing.html
+# N.B.: Many of the environment variables associated with the original
+# request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+ #
+ # The following directives modify normal HTTP response behavior.
+ # The first directive disables keepalive for Netscape 2.x and browsers that
+ # spoof it. There are known problems with these browser implementations.
+ # The second directive is for Microsoft Internet Explorer 4.0b2
+ # which has a broken HTTP/1.1 implementation and does not properly
+ # support keepalive when it is used on 301 or 302 (redirect) responses.
+ #
+ BrowserMatch "Mozilla/2" nokeepalive
+ BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+ #
+ # The following directive disables HTTP/1.1 responses to browsers which
+ # are in violation of the HTTP/1.0 spec by not being able to grok a
+ # basic 1.1 response.
+ #
+ BrowserMatch "RealPlayer 4\.0" force-response-1.0
+ BrowserMatch "Java/1\.0" force-response-1.0
+ BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+# SetHandler server-status
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+# SetHandler server-info
+# Order deny,allow
+# Deny from all
+# Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days. This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging
+# script on phf.apache.org. Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+# Deny from all
+# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled. To enable a particular
+# module for Apache, make sure the necessary packages are installed. Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache. Note that some modules may need additional configuration steps. For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED: openssl-solibs (A series) and/or openssl (N series),
+# mysql (AP series), gmp (L series), mhash (L series),
+# and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED: apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/templates/vserver.d/etc/apache/php.ini b/templates/vserver.d/etc/apache/php.ini
new file mode 100644
index 0000000..e6cddef
--- /dev/null
+++ b/templates/vserver.d/etc/apache/php.ini
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file. It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with. Using this
+; file is warmly recommended for production sites. As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3. Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off [Security, Performance]
+; Global variables are no longer registered for input data (POST, GET, cookies,
+; environment and other server variables). Instead of using $foo, you must use
+; you can use $_REQUEST["foo"] (includes any variable that arrives through the
+; request, namely, POST, GET and cookie variables), or use one of the specific
+; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+; on where the input originates. Also, you can look at the
+; import_request_variables() function.
+; Note that register_globals is going to be depracated (i.e., turned off by
+; default) in the next version of PHP, because it often leads to security bugs.
+; Read http://php.net/manual/en/security.registerglobals.php for further
+; information.
+; - display_errors = Off [Security]
+; With this directive set to off, errors that occur during the execution of
+; scripts will no longer be displayed as a part of the script output, and thus,
+; will no longer be exposed to remote users. With some errors, the error message
+; content may expose information about your script, web server, or database
+; server that may be exploitable for hacking. Production sites should have this
+; directive set to off.
+; - log_errors = On [Security]
+; This directive complements the above one. Any errors that occur during the
+; execution of your script will be logged (typically, to your server's error log,
+; but can be configured in several ways). Along with setting display_errors to off,
+; this setup gives you the ability to fully understand what may have gone wrong,
+; without exposing any sensitive information to remote users.
+; - output_buffering = 4096 [Performance]
+; Set a 4KB output buffer. Enabling output buffering typically results in less
+; writes, and sometimes less packets sent on the wire, which can often lead to
+; better performance. The gain this directive actually yields greatly depends
+; on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off [Performance]
+; Disables registration of the somewhat redundant $argv and $argc global
+; variables.
+; - magic_quotes_gpc = Off [Performance]
+; Input data is no longer escaped with slashes so that it can be sent into
+; SQL databases without further manipulation. Instead, you should use the
+; function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS" [Performance]
+; The environment variables are not hashed into the $HTTP_ENV_VARS[]. To access
+; environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL [Code Cleanliness, Security(?)]
+; By default, PHP surpresses errors of type E_NOTICE. These error messages
+; are emitted for non-critical errors, but that could be a symptom of a bigger
+; problem. Most notably, this will cause error messages about the use
+; of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off [Code cleanliness]
+; It's not possible to decide to force a variable to be passed by reference
+; when calling a function. The PHP 4 style to do this is by making the
+; function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision = 14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit. You can enable output buffering during runtime by calling the output
+; buffering functions. You can also enable output buffering for all files by
+; setting this directive to On. If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function. For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+; directive. Instead, explicitly set the output handler using ob_start().
+; Using this ini directive may cause problems unless you know what script
+; is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+; and you cannot use both "ob_gzhandler" and "zlib.output_compression".
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP
+; outputs chunks that are few handreds bytes each as a result of compression.
+; If you want larger chunk size for better performence, enable output_buffering
+; also.
+; Note: output_handler must be empty if this is set 'On' !!!!
+; Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block. This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block. Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time. This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend. The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration. You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes. In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here. By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note: If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv(). These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below. This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode. Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header). It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30 ; Maximum execution time of each script, in seconds
+max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field. Or each number up to get desired error
+; reporting level
+; E_ALL - All errors and warnings
+; E_ERROR - fatal run-time errors
+; E_WARNING - run-time warnings (non-fatal errors)
+; E_PARSE - compile-time parse errors
+; E_NOTICE - run-time notices (these are warnings which often result
+; from a bug in your code, but it's possible that it was
+; intentional (e.g., using an uninitialized variable and
+; relying on the fact it's automatically initialized to an
+; empty string)
+; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
+; initial startup
+; E_COMPILE_ERROR - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR - user-generated error message
+; E_USER_WARNING - user-generated warning message
+; E_USER_NOTICE - user-generated notice message
+;
+; Examples:
+;
+; - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+; - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+; - Show all errors
+;
+error_reporting = E_ALL
+
+; Print out errors (as a part of the output). For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below). Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed. It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&".
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&".
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC). Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables. You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data. This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on; Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information). If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated. Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header. To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues. The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function. The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers. Left undefined, PHP turns this on by default. You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution. Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting
+; of zero causes PHP to behave as before. Default is zero. You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client. This allows IIS to define the
+; security context that the request runs under. mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS. Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+; extension=modulename.extension
+;
+; For example, on Windows:
+;
+; extension=msql.dll
+;
+; ... or under UNIX:
+;
+; extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information
+; needs to go here. Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default. Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default. Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db = Not yet implemented
+;odbc.default_user = Not yet implemented
+;odbc.default_pw = Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+odbc.max_links = -1
+
+; Handling of LONG fields. Returns number of bytes to variables. 0 means
+; passthru.
+odbc.defaultlrl = 4096
+
+; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect(). If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects. If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password! And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect().
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links. -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings. This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent). -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns. May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1. In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler. In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data. php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled. PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+; to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+; in publically accessible computer.
+; - User may access your site with the same session ID
+; always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs. If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent). -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647. Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch. 0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting(). Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links. -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents. -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file =
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+; portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database =
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files. Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding
+; is used. For the decode settings you can distinguish between motorola and
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel = UCS-2LE
+;exif.encode_jis =
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/templates/vserver.d/etc/apache/vhosts b/templates/vserver.d/etc/apache/vhosts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/vserver.d/etc/apache/vhosts
diff --git a/templates/vserver.d/etc/hosts b/templates/vserver.d/etc/hosts
new file mode 100644
index 0000000..6e33147
--- /dev/null
+++ b/templates/vserver.d/etc/hosts
@@ -0,0 +1,21 @@
+#
+# hosts This file describes a number of hostname-to-address
+# mappings for the TCP/IP subsystem. It is mostly
+# used at boot time, when no name servers are running.
+# On small systems, this file can be used instead of a
+# "named" name server. Just add the names, addresses
+# and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine. It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1 localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1 darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/templates/vserver.d/etc/logrotate.d/apache b/templates/vserver.d/etc/logrotate.d/apache
new file mode 100644
index 0000000..f31fbe2
--- /dev/null
+++ b/templates/vserver.d/etc/logrotate.d/apache
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+ monthly
+ nomail
+ compress
+ create 0664 root root
+ rotate 12
+ postrotate
+ /etc/rc.d/rc.httpd restart > /dev/null
+ endscript
+}
+
diff --git a/templates/vserver.d/etc/profile b/templates/vserver.d/etc/profile
new file mode 100644
index 0000000..563594a
--- /dev/null
+++ b/templates/vserver.d/etc/profile
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+ export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH. Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+ echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+ if [ ! $? = 0 ]; then
+ PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+ fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+ VISUAL=emacs
+# VISUAL=gmacs
+# VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask. A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+ if [ -x $profile_script ]; then
+ . $profile_script
+ fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/templates/vserver.d/etc/rc.d/rc b/templates/vserver.d/etc/rc.d/rc
new file mode 100755
index 0000000..eefbcc5
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ "$1" == "3" ]; then
+ /etc/rc.d/rc.M
+elif [ "$1" == "6" ]; then
+ /etc/rc.d/rc.6
+else
+ echo "Invalid level."
+ exit 1
+fi
+
diff --git a/templates/vserver.d/etc/rc.d/rc.0 b/templates/vserver.d/etc/rc.d/rc.0
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.0
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/templates/vserver.d/etc/rc.d/rc.4 b/templates/vserver.d/etc/rc.d/rc.4
new file mode 100644
index 0000000..b972052
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.4
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/templates/vserver.d/etc/rc.d/rc.6 b/templates/vserver.d/etc/rc.d/rc.6
new file mode 100755
index 0000000..bfec90a
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.6
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off process accounting."
+ /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+ killall5 -15
+ sleep 5
+ killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/templates/vserver.d/etc/rc.d/rc.K b/templates/vserver.d/etc/rc.d/rc.K
new file mode 100755
index 0000000..00a1501
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.K
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K This file is executed by init when it goes into runlevel
+# 1, which is the administrative state. It kills all
+# daemons and then puts the system into single user mode.
+# Note that the file systems are kept mounted.
+#
+# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ echo "Turning off accounting."
+ /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to initialize.
+ sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/templates/vserver.d/etc/rc.d/rc.M b/templates/vserver.d/etc/rc.d/rc.M
new file mode 100755
index 0000000..0cb3343
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.M
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+# /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+ # fall back on this old default:
+# echo "darkstar.example.net" > /etc/HOSTNAME
+# /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ if [ -r /var/run/cardmgr.pid ]; then
+ sleep 5
+ fi
+fi
+
+# Initialize the networking hardware. If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+# . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+ # Don't run hotplug if 'nohotplug' was given at boot.
+ if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
+ . /etc/rc.d/rc.hotplug start
+ fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig"
+ /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+ /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton /var/log/pacct
+ chmod 640 /var/log/pacct
+ echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+ if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+ . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/templates/vserver.d/etc/rc.d/rc.S b/templates/vserver.d/etc/rc.d/rc.S
new file mode 100755
index 0000000..05c75b4
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.S
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S: System initialization script.
+#
+# Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+ if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+ echo "/dev/null" > /proc/sys/kernel/hotplug
+ fi
+fi
+
+# Start devfsd if necessary. On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+ /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+ if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+ /sbin/mount -v sysfs /sys -n -t sysfs
+ fi
+ fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+ if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+ /etc/rc.d/rc.udev
+ fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+ rm -f /fsrwtestfile
+ READWRITE=yes
+else
+ echo "Testing root filesystem status: read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+ FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+ RETVAL=0
+ if [ ! -r /etc/fastboot ]; then
+ echo "Checking root filesystem:"
+ /sbin/fsck $FORCEFSCK -C -a /
+ RETVAL=$?
+ fi
+ # An error code of 2 or higher will require a reboot.
+ if [ $RETVAL -ge 2 ]; then
+ # An error code equal to or greater than 4 means that some errors
+ # could not be corrected. This requires manual attention, so we
+ # offer a chance to try to fix the problem in single-user mode:
+ if [ $RETVAL -ge 4 ]; then
+ echo
+ echo "***********************************************************"
+ echo "*** An error occurred during the root filesystem check. ***"
+ echo "*** You will now be given a chance to log into the ***"
+ echo "*** system in single-user mode to fix the problem. ***"
+ echo "*** ***"
+ echo "*** If you are using the ext2 filesystem, running ***"
+ echo "*** 'e2fsck -v -y <partition>' might help. ***"
+ echo "***********************************************************"
+ echo
+ echo "Once you exit the single-user shell, the system will reboot."
+ echo
+ PS1="(Repair filesystem) \#"; export PS1
+ sulogin
+ else # With an error code of 2 or 3, reboot the machine automatically:
+ echo
+ echo "***********************************"
+ echo "*** The filesystem was changed. ***"
+ echo "*** The system will now reboot. ***"
+ echo "***********************************"
+ echo
+ fi
+ echo "Unmounting file systems."
+ /sbin/umount -a -r
+ /sbin/mount -n -o remount,ro /
+ echo "Rebooting system."
+ sleep 2
+ reboot -f
+ fi
+ # Remount the root filesystem in read-write mode
+ echo "Remounting root device with read-write enabled."
+ /sbin/mount -w -v -n -o remount /
+ if [ $? -gt 0 ] ; then
+ echo
+ echo "Attempt to remount root device as read-write failed! This is going to"
+ echo "cause serious problems."
+ echo
+ echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+ echo "read-write! You can make sure the root filesystem is getting mounted "
+ echo "read-write with the 'rw' flag to Loadlin:"
+ echo
+ echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
+ echo
+ echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+ echo
+ echo "rdev -R /dev/fd0 0"
+ echo
+ echo "You can also get into your system by using a boot disk with a command like this"
+ echo "on the LILO prompt line: (change the root partition name as needed)"
+ echo
+ echo "LILO: mount root=/dev/hda1 rw"
+ echo
+ echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+ echo -n "get into your machine and start looking for the problem. "
+ read junk;
+ fi
+else
+ echo "Testing root filesystem status: read-write filesystem"
+ if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+ ROOTTYPE="umsdos"
+ fi
+ if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+ echo
+ echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+ echo
+ echo "For filesystem checking to work properly, your system must initially mount"
+ echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+ echo "it does this. If you're booting with LILO, add a line:"
+ echo
+ echo " read-only"
+ echo
+ echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+ echo
+ echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+ echo " rdev -R /dev/fd0 1"
+ echo
+ echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+ echo
+ echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+ echo
+ echo -n "Press ENTER to continue. "
+ read junk;
+ fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+ /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+ /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+ if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+ echo "Setting system time from the hardware clock (UTC)."
+ /sbin/hwclock --utc --hctosys
+ else
+ echo "Setting system time from the hardware clock (localtime)."
+ /sbin/hwclock --localtime --hctosys
+ fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+ if [ -x /sbin/isapnp ]; then
+ /sbin/isapnp /etc/isapnp.conf
+ fi
+fi
+
+# This loads any kernel modules that are needed. These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+ . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+ /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or
+# /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Initializing LVM (Logical Volume Manager):"
+ # Check for device-mapper support.
+ if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+ # If device-mapper exists as a module, try to load it.
+ if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+ insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+ fi
+ fi
+ # Scan for new volume groups:
+ /sbin/vgscan 2> /dev/null
+ if [ $? = 0 ]; then
+ # This needs a moment to register.
+ sleep 10
+ # Make volume groups available to the kernel.
+ # This should also make logical volumes available.
+ /sbin/vgchange -ay
+ # Enable swapping again in case any LVs are used for swap. Ignore previous error. :-)
+ /sbin/swapon -a
+ fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+ echo "Checking non-root filesystems:"
+ /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+ /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+ /sbin/umount /initrd 2> /dev/null
+ rmdir /initrd 2> /dev/null
+ blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+ echo "Synchronizing UMSDOS directory structure:"
+ echo " /sbin/umssync -r99 -v- /"
+ /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+ echo "Using /etc/random-seed to initialize /dev/urandom."
+ cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/templates/vserver.d/etc/rc.d/rc.httpd b/templates/vserver.d/etc/rc.d/rc.httpd
new file mode 100644
index 0000000..00b8837
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.httpd
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable: chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+ 'start')
+ /usr/sbin/apachectl start ;;
+ 'stop')
+ /usr/sbin/apachectl stop ;;
+ 'restart')
+ /usr/sbin/apachectl restart ;;
+ *)
+ echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/templates/vserver.d/etc/rc.d/rc.inet2 b/templates/vserver.d/etc/rc.d/rc.inet2
new file mode 100755
index 0000000..db56589
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.inet2
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2 This shell script boots up the entire network system.
+# Note, that when this script is used to also fire
+# up any important remote NFS disks (like the /usr
+# directory), care must be taken to actually
+# have all the needed binaries online _now_ ...
+#
+# Uncomment or comment out sections depending on which
+# services your site requires.
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+ # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+ # since it will need to be running in order to mount them. If portmap
+ # is not running, attempting to mount an NFS partition will cause mount
+ # to hang. Keep this in mind if you plan to mount unlisted partitions...
+ if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+ else
+ # Warn about a possible NFS problem. It's also possible to mount NFS partitions
+ # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+ echo "WARNING: NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+ echo " not executable. If you do not run portmap, NFS partitions will"
+ echo " not mount properly. To start rpc.portmap at boot, change the"
+ echo " permissions on /etc/rc.d/rc.portmap: chmod 755 /etc/rc.d/rc.portmap"
+ sleep 10
+ fi
+ echo "Mounting remote (NFS) file systems: /sbin/mount -a -t nfs"
+ /sbin/mount -a -t nfs # This may be our /usr runtime!
+ # Show the mounted volumes:
+ /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+ . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+ echo "Mounting remote (SMB) file systems: /sbin/mount -a -t smbfs"
+ /sbin/mount -a -t smbfs
+ # Show the mounted volumes:
+ /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux. In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+ /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+ . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+ /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+ echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+ /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+ /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+ . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server. Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows. ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+# echo "Starting network routing daemon: /usr/sbin/routed"
+# /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+# echo "Starting system status server: /usr/sbin/rwhod"
+# /usr/sbin/rwhod
+# fi
+
+# # Fire up the PC-NFS daemon(s). This is a primarily obsolete system, and may
+# # not be very secure. It's not at all needed for normal NFS server support.
+# # You probably should not run this.
+# if [ -x /usr/sbin/rpc.pcnfsd ]; then
+# echo "Starting PC-NFS daemons: /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+# /usr/sbin/rpc.pcnfsd /var/spool/lpd
+# fi
+# if [ -x /usr/sbin/rpc.bwnfsd ]; then
+# /usr/sbin/rpc.bwnfsd /var/spool/lpd
+# fi
+
diff --git a/templates/vserver.d/etc/rc.d/rc.inetd b/templates/vserver.d/etc/rc.d/rc.inetd
new file mode 100644
index 0000000..9fe1419
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.inetd
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+ if [ -x /usr/sbin/inetd ]; then
+ echo "Starting Internet super-server daemon: /usr/sbin/inetd"
+ /usr/sbin/inetd
+ fi
+}
+
+# Stop inetd:
+inetd_stop() {
+ killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+ inetd_stop
+ sleep 1
+ inetd_start
+}
+
+case "$1" in
+'start')
+ inetd_start
+ ;;
+'stop')
+ inetd_stop
+ ;;
+'restart')
+ inetd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver.d/etc/rc.d/rc.ip_forward b/templates/vserver.d/etc/rc.d/rc.ip_forward
new file mode 100644
index 0000000..52bd2fe
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.ip_forward
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward: start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable: chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable: chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Activating IPv4 packet forwarding."
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ fi
+ # When using IPv4 packet forwarding, you will also get the
+ # rp_filter, which automatically rejects incoming packets if the
+ # routing table entry for their source address doesn't match the
+ # network interface they're arriving on. This has security
+ # advantages because it prevents the so-called IP spoofing,
+ # however it can pose problems if you use asymmetric routing
+ # (packets from you to a host take a different path than packets
+ # from that host to you) or if you operate a non-routing host
+ # which has several IP addresses on different interfaces. To
+ # turn rp_filter off, uncomment the lines below:
+ #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+ # echo "Disabling rp_filter."
+ # echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+ #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+ if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+ echo "Disabling IPv4 packet forwarding."
+ echo 0 > /proc/sys/net/ipv4/ip_forward
+ fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+ ip_forward_stop
+ sleep 1
+ ip_forward_start
+}
+
+case "$1" in
+'start')
+ ip_forward_start
+ ;;
+'stop')
+ ip_forward_stop
+ ;;
+'restart')
+ ip_forward_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/templates/vserver.d/etc/rc.d/rc.local b/templates/vserver.d/etc/rc.d/rc.local
new file mode 100755
index 0000000..3cf2076
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.local
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local: Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/templates/vserver.d/etc/rc.d/rc.mysqld b/templates/vserver.d/etc/rc.d/rc.mysqld
new file mode 100644
index 0000000..239e2e6
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.mysqld
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database. To install an initial
+# database, do this as root:
+#
+# su - mysql
+# mysql_install_db
+#
+# Note that step one is becoming the mysql user. It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+ if [ -x /usr/bin/mysqld_safe ]; then
+ # If there is an old PID file (no mysqld running), clean it up:
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+ echo "Cleaning up old /var/run/mysql/mysql.pid."
+ rm -f /var/run/mysql/mysql.pid
+ fi
+ fi
+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+ fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+ # If there is no PID file, ignore this request...
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ killall mysqld
+ # Wait at least one minute for it to exit, as we don't know how big the DB is...
+ for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+ if [ ! -r /var/run/mysql/mysql.pid ]; then
+ break;
+ fi
+ sleep 1
+ done
+ if [ "$second" = "60" ]; then
+ echo "WARNING: Gave up waiting for mysqld to exit!"
+ sleep 15
+ fi
+ fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+ mysqld_stop
+ mysqld_start
+}
+
+case "$1" in
+'start')
+ mysqld_start
+ ;;
+'stop')
+ mysqld_stop
+ ;;
+'restart')
+ mysqld_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver.d/etc/rc.d/rc.postfix b/templates/vserver.d/etc/rc.d/rc.postfix
new file mode 100644
index 0000000..bc32367
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.postfix
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+## 20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+ if [ -x /usr/sbin/postfix ]; then
+ echo -n "Starting postfix MTA: "
+ echo "/usr/sbin/postfix start"
+ /usr/sbin/postfix start 2>/dev/null
+ fi
+}
+
+postfix_stop() {
+ /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+ sh $0 stop
+ sleep 1
+ sh $0 start
+}
+
+postfix_reload() {
+ /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+ 'start')
+ postfix_start
+ ;;
+ 'stop')
+ postfix_stop
+ ;;
+ 'restart')
+ postfix_restart
+ ;;
+ 'reload')
+ postfix_reload
+ ;;
+ *)
+ echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/templates/vserver.d/etc/rc.d/rc.sendmail b/templates/vserver.d/etc/rc.d/rc.sendmail
new file mode 100644
index 0000000..1a31c52
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.sendmail
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+ if [ -x /usr/sbin/sendmail ]; then
+ echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+ /usr/sbin/sendmail -L sm-mta -bd -q25m
+ echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+ /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+ fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+ killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+ sendmail_stop
+ sleep 1
+ sendmail_start
+}
+
+case "$1" in
+'start')
+ sendmail_start
+ ;;
+'stop')
+ sendmail_stop
+ ;;
+'restart')
+ sendmail_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver.d/etc/rc.d/rc.serial b/templates/vserver.d/etc/rc.d/rc.serial
new file mode 100755
index 0000000..5f31c01
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.serial
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial
+# Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver. We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial
+# file with a newer one.
+#
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now). Autosave also doesn't work for the hayes devices.
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+ ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+ SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+ SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+ if grep -q " ttyS$" /proc/devices ; then
+ LOADED="yes"
+ else
+ LOADED="no"
+ fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+ if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+ MODULE=$i/$DRIVER.o
+ fi
+done
+
+if ! test -f /proc/modules ; then
+ MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+ action="start";
+ ;;
+stop)
+ action="stop";
+ ;;
+*)
+ action="start";
+esac
+
+if test $action = stop ; then
+ if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+ `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+ echo -n "Saving state of serial devices... "
+ grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+ ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+ mv /etc/serial.conf /etc/.serial.conf.old
+ mv /etc/.serial.conf.new /etc/serial.conf
+ echo "done."
+ fi
+ if test -n "$MODULE" ; then
+ module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+ if test -z "$module" ; then
+ echo "The $DRIVER_NAME driver is not loaded."
+ rm -f ${RCLOCKFILE}
+ exit 0
+ fi
+ if rmmod $module ; then :; else
+ echo "The $DRIVER_NAME driver could NOT be unloaded."
+ exit 1;
+ fi
+ echo "The $DRIVER_NAME driver has been unloaded."
+ fi
+ rm -f ${RCLOCKFILE}
+ exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then
+ if insmod -f $MODULE $DRIVER_ARG ; then
+ true
+ else
+ echo "Couldn't load $DRIVER_NAME driver."
+ exit 1
+ fi
+fi
+
+if test -f /etc/serial.conf ; then
+ if test -n ${SETSERIAL} ; then
+ grep -v ^# < /etc/serial.conf | while read device args
+ do
+ if [ ! "$device" = "" -a ! "$args" = "" ]; then
+ ${SETSERIAL} -z $device $args
+ fi
+ done
+ fi
+else
+ echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/templates/vserver.d/etc/rc.d/rc.sshd b/templates/vserver.d/etc/rc.d/rc.sshd
new file mode 100755
index 0000000..a3707e3
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.sshd
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+ # Create host keys if needed.
+ if [ ! -r /etc/ssh/ssh_host_key ]; then
+ /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+ /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+ fi
+ if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+ /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+ fi
+ /usr/sbin/sshd
+}
+
+sshd_stop() {
+ killall sshd
+}
+
+sshd_restart() {
+ if [ -r /var/run/sshd.pid ]; then
+ echo "WARNING: killing listener process only. To kill every sshd process, you must"
+ echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to"
+ echo " allow an admin logged in through sshd to use 'rc.sshd restart' without"
+ echo " being cut off. If sshd has been upgraded, new connections will now"
+ echo " use the new version, which should be a safe enough approach."
+ kill `cat /var/run/sshd.pid`
+ else
+ killall sshd
+ fi
+ sleep 1
+ sshd_start
+}
+
+case "$1" in
+'start')
+ sshd_start
+ ;;
+'stop')
+ sshd_stop
+ ;;
+'restart')
+ sshd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/templates/vserver.d/etc/rc.d/rc.syslog b/templates/vserver.d/etc/rc.d/rc.syslog
new file mode 100755
index 0000000..a005fb7
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.syslog
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+ if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+ echo -n "Starting sysklogd daemons: "
+ echo -n "/usr/sbin/syslogd "
+ /usr/sbin/syslogd
+ sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+ echo "/usr/sbin/klogd -c 3 -x"
+ # '-c 3' = display level 'error' or higher messages on console
+ # '-x' = turn off broken EIP translation
+ /usr/sbin/klogd -c 3 -x
+ fi
+}
+
+syslogd_stop() {
+ killall syslogd 2> /dev/null
+ killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+ syslogd_stop
+ sleep 1
+ syslogd_start
+}
+
+case "$1" in
+'start')
+ syslogd_start
+ ;;
+'stop')
+ syslogd_stop
+ ;;
+'restart')
+ syslogd_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/templates/vserver.d/etc/rc.d/rc.sysvinit b/templates/vserver.d/etc/rc.d/rc.sysvinit
new file mode 100755
index 0000000..916e59e
--- /dev/null
+++ b/templates/vserver.d/etc/rc.d/rc.sysvinit
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit This file provides basic compatibility with SystemV style
+# startup scripts. The SystemV style init system places
+# start/stop scripts for each runlevel into directories such as
+# /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+# from /etc/rc.d/rc.M. This makes for a lot more init scripts,
+# and a more complicated execution path to follow through if
+# something goes wrong. For this reason, Slackware has always
+# used the traditional BSD style init script layout.
+#
+# However, many binary packages exist that install SystemV
+# init scripts. With rc.sysvinit in place, most well-written
+# startup scripts will work. This is primarily intended to
+# support commercial software, though, and probably shouldn't
+# be considered bug free.
+#
+# Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+# from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+ case "$1" in
+ *.sh)
+ sh "$@"
+ ;;
+ *)
+ "$@"
+ ;;
+ esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+ runlevel=$RUNLEVEL
+ export runlevel
+ prevlevel=$PREVLEVEL
+ export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+ for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+ if [ -x $script ]; then
+ startup $script stop
+ fi
+ done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+ if [ -x $script ]; then
+ startup $script start
+ fi
+done
+
diff --git a/templates/vserver.d/etc/rssh.conf b/templates/vserver.d/etc/rssh.conf
new file mode 100644
index 0000000..a74acc6
--- /dev/null
+++ b/templates/vserver.d/etc/rssh.conf
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility. "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010: # the path can simply be left out to not chroot
+#user=rudy:077:00010 # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir" # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir" # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir" # both with chroot
+#user=rudy:011:00100: # cvs, with no chroot
+#user=rudy:011:01000: # rdist, with no chroot
+#user=rudy:011:10000: # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot" # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot" # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot' # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"
+#user = "rudy:011:00001:/usr/local/chroot dir" # neither do comments at line end
+
diff --git a/templates/vserver.d/etc/ssh/sshd_config b/templates/vserver.d/etc/ssh/sshd_config
new file mode 100644
index 0000000..a161fec
--- /dev/null
+++ b/templates/vserver.d/etc/ssh/sshd_config
@@ -0,0 +1,103 @@
+# $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file. See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented. Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing,
+# and session processing. If this is enabled, PAM authentication will
+# be allowed through the ChallengeResponseAuthentication mechanism.
+# Depending on your PAM configuration, this may bypass the setting of
+# PasswordAuthentication, PermitEmptyPasswords, and
+# "PermitRootLogin without-password". If you just want the PAM account and
+# session checks to run without PAM authentication, then enable this but set
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem sftp /usr/libexec/sftp-server
diff --git a/templates/vserver.d/var/www/htdocs/missing.html b/templates/vserver.d/var/www/htdocs/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/templates/vserver.d/var/www/htdocs/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/templates/vserver.d/var/www/missing.html b/templates/vserver.d/var/www/missing.html
new file mode 100644
index 0000000..b2eec17
--- /dev/null
+++ b/templates/vserver.d/var/www/missing.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+ <center>
+ <pre>
+ O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+ </pre>
+ </center>
+</body>
+</html>
diff --git a/templates/vserver.s/GPG-KEY b/templates/vserver.s/GPG-KEY
new file mode 100644
index 0000000..fd23e95
--- /dev/null
+++ b/templates/vserver.s/GPG-KEY
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type bits/keyID Date User ID
+pub 1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub 1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/templates/vserver.s/devices.tar.gz b/templates/vserver.s/devices.tar.gz
new file mode 100644
index 0000000..992ba79
--- /dev/null
+++ b/templates/vserver.s/devices.tar.gz
Binary files differ
diff --git a/templates/vserver.s/vserver.sh b/templates/vserver.s/vserver.sh
new file mode 100644
index 0000000..b381092
--- /dev/null
+++ b/templates/vserver.s/vserver.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# vserver template script
+#
+
+DEVICES="/etc/simplepkg/vserver.s/devices.tar.gz"
+GPGKEY="/etc/simplepkg/vserver.s/GPG-KEY"
+
+if [ -z "$2" ]; then
+ echo "usage: `basename $0` <jail-root> <jail-name>"
+ exit 1
+elif [ ! -d "$1/$2" ]; then
+ echo "folder $1/$2 does not exist"
+ exit 1
+fi
+
+echo "creating /etc/vservers/$2..."
+mv $1/$2 $1/$2.old
+vserver $2 build -m skeleton --force &> /dev/null
+rm -rf $1/$2 && mv $1/$2.old $1/$2
+
+echo sysv > /etc/vservers/$2/apps/init/style
+echo 3 > /etc/vservers/$2/apps/init/runlevel.start
+echo 6 > /etc/vservers/$2/apps/init/runlevel.stop
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab
+
+echo "creating devices and dependencies..."
+if [ -f "$DEVICES" ]; then
+ cd $1/$2/
+ tar zxvf $DEVICES
+ chroot $1/$2/ sbin/ldconfig
+else
+ echo error: device template $DEVICES not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+ echo "importing slack gpg pubkey"
+ mkdir $1/$2/root/.gnupg
+ gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+# todo: add rebootmgr
+echo "done; now config your vserver at /etc/vservers/$2"
+echo "then, set all desired iptables rules and other stuff and then start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd""
diff --git a/templates/vserver.template b/templates/vserver.template
new file mode 100644
index 0000000..35432fc
--- /dev/null
+++ b/templates/vserver.template
@@ -0,0 +1,252 @@
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+vim: OPT
+glibc: REC
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+htdig: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+nail: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+#
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+#
+# It is used to automate software installation.
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>:
+# will be extracted. Then, the last line in the extracted segment will be
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed.
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+libsafe
+# contrib
+simplepkg
+ssmtp