diff options
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 :) @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. @@ -0,0 +1,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. + @@ -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 Binary files differnew file mode 100644 index 0000000..2779fbe --- /dev/null +++ b/doc/simplepkg.dvi 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> <br> <br> <br> <br> <br> <br> +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> +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> +e então digite + +<pre> +swaret --update +swaret --install simplepkg +</pre> + +<br> <br> +<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> <br> <br> <br> <br> <br> <br> <br> <br> +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> <br> +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> +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> +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> +<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> +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> +<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> +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> +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> +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> +<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> +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> +<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 Binary files differnew file mode 100644 index 0000000..9895ebb --- /dev/null +++ b/doc/simplepkg.pdf 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 @@ -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 @@ -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 @@ -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 = "&" + +; 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ço que você requisitou não pô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ço que você requisitou não pô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 Binary files differnew file mode 100644 index 0000000..992ba79 --- /dev/null +++ b/templates/vserver-legacy.s/devices.tar.gz 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 = "&" + +; 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ço que você requisitou não pô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ço que você requisitou não pô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 Binary files differnew file mode 100644 index 0000000..992ba79 --- /dev/null +++ b/templates/vserver.s/devices.tar.gz 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 |