Initial commit
This commit is contained in:
commit
2801142206
|
@ -0,0 +1,339 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General
|
||||||
|
Public License instead of this License.
|
|
@ -0,0 +1,58 @@
|
||||||
|
Adds a panel to quick-install certain CMSs in AlternC. This module provides support for WordPress and Drupal.
|
||||||
|
|
||||||
|
Support for other CMSs may be added by other AlternC plugins. See "Extending" for more information.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
## Pre-requisites
|
||||||
|
|
||||||
|
For [WordPress][1]: Install [WP-CLI](https://wp-cli.org/ "WP-CLI home page")
|
||||||
|
|
||||||
|
For [Drupal][2]: Install [Drush](https://github.com/drush-ops/drush/ "Drush on GitHub")
|
||||||
|
|
||||||
|
## Manual Install
|
||||||
|
|
||||||
|
`
|
||||||
|
make install
|
||||||
|
`
|
||||||
|
|
||||||
|
If AlternC is installed in another directory, use something like: `
|
||||||
|
ALTERNC_BASE_PATH=/your/path/alternc make install
|
||||||
|
`
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
Once installed, add the Drush or WP-CLI paths to /etc/alternc/locals.sh. These need to be accessible within the basedir restrictions of the AlternC panel.
|
||||||
|
|
||||||
|
Example: `
|
||||||
|
ALTERNC_DRUSH_BIN=/usr/local/bin/drush
|
||||||
|
ALTERNC_WPCLI_BIN=/usr/local/bin/wp
|
||||||
|
`
|
||||||
|
|
||||||
|
If they are not configured, the links for installation will be disabled. If no CMSs are configured, the quick links menu item will not be displayed.
|
||||||
|
|
||||||
|
# Extending
|
||||||
|
|
||||||
|
A number of hooks are available to modify the install form and run the actual install. Drupal and WordPress are implemented as examples that could done in another module easily.
|
||||||
|
|
||||||
|
# Roadmap
|
||||||
|
|
||||||
|
This module is basically at a 'proof of concept' point. For a first proper release, the following should probably be added:
|
||||||
|
|
||||||
|
* make sure form content and variables are properly escaped when passed between scripts
|
||||||
|
* user interface / form cleanup
|
||||||
|
* hide form elements based on choices
|
||||||
|
* sub-domain list changing based on chosen domain
|
||||||
|
* hide un-necessary detail
|
||||||
|
* fix localization in messages
|
||||||
|
* tests
|
||||||
|
|
||||||
|
Nice to haves:
|
||||||
|
|
||||||
|
* threaded install script so user feedback doesn't have to wait X minutes until the shell scripts finish
|
||||||
|
|
||||||
|
# Copyright & License
|
||||||
|
|
||||||
|
2018 Kienan Stewart <kienan@koumbit.org>
|
||||||
|
|
||||||
|
Licensed under the GNU General Public License version 2.0 or later. See LICENSE for the full license text.
|
|
@ -0,0 +1,3 @@
|
||||||
|
#menu-oci span img {
|
||||||
|
display: block;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
The Debian Package alternc-oneclickinstallers
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Comments regarding the Package
|
||||||
|
|
||||||
|
-- Kienan Stewart <kienan.stewart@burntworld.ca> Sat, 27 Jan 2018 09:48:31 -0500
|
|
@ -0,0 +1,6 @@
|
||||||
|
alternc-oneclickinstallers for Debian
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
<possible notes regarding this package - if none, delete this file>
|
||||||
|
|
||||||
|
-- Kienan Stewart <kienan.stewart@burntworld.ca> Sat, 27 Jan 2018 09:48:31 -0500
|
|
@ -0,0 +1,10 @@
|
||||||
|
alternc-oneclickinstallers for Debian
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
<this file describes information about the source package, see Debian policy
|
||||||
|
manual section 4.14. You WILL either need to modify or delete this file>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Kienan Stewart <kienan.stewart@burntworld.ca> Sat, 27 Jan 2018 09:48:31 -0500
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
README.source
|
||||||
|
README
|
||||||
|
README.Debian
|
|
@ -0,0 +1,4 @@
|
||||||
|
#
|
||||||
|
# Regular cron jobs for the alternc-oneclickinstallers package
|
||||||
|
#
|
||||||
|
0 4 * * * root [ -x /usr/bin/alternc-oneclickinstallers_maintenance ] && /usr/bin/alternc-oneclickinstallers_maintenance
|
|
@ -0,0 +1,20 @@
|
||||||
|
Document: alternc-oneclickinstallers
|
||||||
|
Title: Debian alternc-oneclickinstallers Manual
|
||||||
|
Author: <insert document author here>
|
||||||
|
Abstract: This manual describes what alternc-oneclickinstallers is
|
||||||
|
and how it can be used to
|
||||||
|
manage online manuals on Debian systems.
|
||||||
|
Section: unknown
|
||||||
|
|
||||||
|
Format: debiandoc-sgml
|
||||||
|
Files: /usr/share/doc/alternc-oneclickinstallers/alternc-oneclickinstallers.sgml.gz
|
||||||
|
|
||||||
|
Format: postscript
|
||||||
|
Files: /usr/share/doc/alternc-oneclickinstallers/alternc-oneclickinstallers.ps.gz
|
||||||
|
|
||||||
|
Format: text
|
||||||
|
Files: /usr/share/doc/alternc-oneclickinstallers/alternc-oneclickinstallers.text.gz
|
||||||
|
|
||||||
|
Format: HTML
|
||||||
|
Index: /usr/share/doc/alternc-oneclickinstallers/html/index.html
|
||||||
|
Files: /usr/share/doc/alternc-oneclickinstallers/html/*.html
|
|
@ -0,0 +1 @@
|
||||||
|
src/ /usr/share/alternc/panel/
|
|
@ -0,0 +1,5 @@
|
||||||
|
alternc-oneclickinstallers (1.0.0) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Initial Release.
|
||||||
|
|
||||||
|
-- Kienan Stewart <kienan.stewart@burntworld.ca> Sat, 27 Jan 2018 09:48:31 -0500
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,15 @@
|
||||||
|
Source: alternc-oneclickinstallers
|
||||||
|
Section: web
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Kienan Stewart <kienan.stewart@burntworld.ca>
|
||||||
|
Build-Depends: debhelper (>= 10)
|
||||||
|
Standards-Version: 4.1.2
|
||||||
|
Homepage:
|
||||||
|
#Vcs-Git: https://anonscm.debian.org/git/collab-maint/alternc-oneclickinstallers.git
|
||||||
|
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/alternc-oneclickinstallers.git
|
||||||
|
|
||||||
|
Package: alternc-oneclickinstallers
|
||||||
|
Architecture: any
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
|
Description: <insert up to 60 chars description>
|
||||||
|
<insert long description, indented with spaces>
|
|
@ -0,0 +1,41 @@
|
||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: alternc-oneclickinstallers
|
||||||
|
Source: <url://example.com>
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2018 Kienan Stewart <kienan@koumbit.org>
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 2018 Kienan Stewart <kienan.stewart@burntworld.ca>
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
Files: images/drupal.png
|
||||||
|
Copyright: 2001 - 2013 Drupal Original Authors
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
Files: images/wordpress.png
|
||||||
|
Copyright: 2011 - 2018 WordPress contributors
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
License: GPL-2.0+
|
||||||
|
This package 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 package 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, see <https://www.gnu.org/licenses/>
|
||||||
|
.
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||||
|
|
||||||
|
# Please also look if there are files or directories which have a
|
||||||
|
# different copyright/license attached and list them here.
|
||||||
|
# Please avoid picking licenses with terms that are more restrictive than the
|
||||||
|
# packaged work, as it may make Debian's contributions unacceptable upstream.
|
|
@ -0,0 +1,56 @@
|
||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" (C) Copyright 2018 Kienan Stewart <kienan.stewart@burntworld.ca>,
|
||||||
|
.\"
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.TH Alternc-oneclickinstallers SECTION "January 27 2018"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
alternc-oneclickinstallers \- program to do something
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B alternc-oneclickinstallers
|
||||||
|
.RI [ options ] " files" ...
|
||||||
|
.br
|
||||||
|
.B bar
|
||||||
|
.RI [ options ] " files" ...
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents briefly the
|
||||||
|
.B alternc-oneclickinstallers
|
||||||
|
and
|
||||||
|
.B bar
|
||||||
|
commands.
|
||||||
|
.PP
|
||||||
|
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||||
|
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||||
|
.\" respectively.
|
||||||
|
\fBalternc-oneclickinstallers\fP is a program that...
|
||||||
|
.SH OPTIONS
|
||||||
|
These programs follow the usual GNU command line syntax, with long
|
||||||
|
options starting with two dashes (`-').
|
||||||
|
A summary of options is included below.
|
||||||
|
For a complete description, see the Info files.
|
||||||
|
.TP
|
||||||
|
.B \-h, \-\-help
|
||||||
|
Show summary of options.
|
||||||
|
.TP
|
||||||
|
.B \-v, \-\-version
|
||||||
|
Show version of program.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bar (1),
|
||||||
|
.BR baz (1).
|
||||||
|
.br
|
||||||
|
The programs are documented fully by
|
||||||
|
.IR "The Rise and Fall of a Fooish Bar" ,
|
||||||
|
available via the Info system.
|
|
@ -0,0 +1,154 @@
|
||||||
|
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
|
||||||
|
|
||||||
|
<!-- Process this file with docbook-to-man to generate an nroff manual
|
||||||
|
page: `docbook-to-man manpage.sgml > manpage.1'. You may view
|
||||||
|
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
|
||||||
|
less'. A typical entry in a Makefile or Makefile.am is:
|
||||||
|
|
||||||
|
manpage.1: manpage.sgml
|
||||||
|
docbook-to-man $< > $@
|
||||||
|
|
||||||
|
|
||||||
|
The docbook-to-man binary is found in the docbook-to-man package.
|
||||||
|
Please remember that if you create the nroff version in one of the
|
||||||
|
debian/rules file targets (such as build), you will need to include
|
||||||
|
docbook-to-man in your Build-Depends control field.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
|
||||||
|
<!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
|
||||||
|
<!ENTITY dhsurname "<surname>SURNAME</surname>">
|
||||||
|
<!-- Please adjust the date whenever revising the manpage. -->
|
||||||
|
<!ENTITY dhdate "<date>January 27 2018</date>">
|
||||||
|
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
|
||||||
|
allowed: see man(7), man(1). -->
|
||||||
|
<!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
|
||||||
|
<!ENTITY dhemail "<email>kienan.stewart@burntworld.ca</email>">
|
||||||
|
<!ENTITY dhusername "Kienan Stewart">
|
||||||
|
<!ENTITY dhucpackage "<refentrytitle>Alternc-oneclickinstallers</refentrytitle>">
|
||||||
|
<!ENTITY dhpackage "alternc-oneclickinstallers">
|
||||||
|
|
||||||
|
<!ENTITY debian "<productname>Debian</productname>">
|
||||||
|
<!ENTITY gnu "<acronym>GNU</acronym>">
|
||||||
|
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<refentry>
|
||||||
|
<refentryinfo>
|
||||||
|
<address>
|
||||||
|
&dhemail;
|
||||||
|
</address>
|
||||||
|
<author>
|
||||||
|
&dhfirstname;
|
||||||
|
&dhsurname;
|
||||||
|
</author>
|
||||||
|
<copyright>
|
||||||
|
<year>2003</year>
|
||||||
|
<holder>&dhusername;</holder>
|
||||||
|
</copyright>
|
||||||
|
&dhdate;
|
||||||
|
</refentryinfo>
|
||||||
|
<refmeta>
|
||||||
|
&dhucpackage;
|
||||||
|
|
||||||
|
&dhsection;
|
||||||
|
</refmeta>
|
||||||
|
<refnamediv>
|
||||||
|
<refname>&dhpackage;</refname>
|
||||||
|
|
||||||
|
<refpurpose>program to do something</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
|
||||||
|
<arg><option>-e <replaceable>this</replaceable></option></arg>
|
||||||
|
|
||||||
|
<arg><option>--example <replaceable>that</replaceable></option></arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
<refsect1>
|
||||||
|
<title>DESCRIPTION</title>
|
||||||
|
|
||||||
|
<para>This manual page documents briefly the
|
||||||
|
<command>&dhpackage;</command> and <command>bar</command>
|
||||||
|
commands.</para>
|
||||||
|
|
||||||
|
<para>This manual page was written for the &debian; distribution
|
||||||
|
because the original program does not have a manual page.
|
||||||
|
Instead, it has documentation in the &gnu;
|
||||||
|
<application>Info</application> format; see below.</para>
|
||||||
|
|
||||||
|
<para><command>&dhpackage;</command> is a program that...</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>OPTIONS</title>
|
||||||
|
|
||||||
|
<para>These programs follow the usual &gnu; command line syntax,
|
||||||
|
with long options starting with two dashes (`-'). A summary of
|
||||||
|
options is included below. For a complete description, see the
|
||||||
|
<application>Info</application> files.</para>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-h</option>
|
||||||
|
<option>--help</option>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show summary of options.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-v</option>
|
||||||
|
<option>--version</option>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show version of program.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>SEE ALSO</title>
|
||||||
|
|
||||||
|
<para>bar (1), baz (1).</para>
|
||||||
|
|
||||||
|
<para>The programs are documented fully by <citetitle>The Rise and
|
||||||
|
Fall of a Fooish Bar</citetitle> available via the
|
||||||
|
<application>Info</application> system.</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>AUTHOR</title>
|
||||||
|
|
||||||
|
<para>This manual page was written by &dhusername; &dhemail; for
|
||||||
|
the &debian; system (and may be used by others). Permission is
|
||||||
|
granted to copy, distribute and/or modify this document under
|
||||||
|
the terms of the &gnu; General Public License, Version 2 any
|
||||||
|
later version published by the Free Software Foundation.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
On Debian systems, the complete text of the GNU General Public
|
||||||
|
License can be found in /usr/share/common-licenses/GPL.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
||||||
|
|
||||||
|
<!-- Keep this comment at the end of the file
|
||||||
|
Local variables:
|
||||||
|
mode: sgml
|
||||||
|
sgml-omittag:t
|
||||||
|
sgml-shorttag:t
|
||||||
|
sgml-minimize-attributes:nil
|
||||||
|
sgml-always-quote-attributes:t
|
||||||
|
sgml-indent-step:2
|
||||||
|
sgml-indent-data:t
|
||||||
|
sgml-parent-document:nil
|
||||||
|
sgml-default-dtd-file:nil
|
||||||
|
sgml-exposed-tags:nil
|
||||||
|
sgml-local-catalogs:nil
|
||||||
|
sgml-local-ecat-files:nil
|
||||||
|
End:
|
||||||
|
-->
|
|
@ -0,0 +1,291 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
`xsltproc -''-nonet \
|
||||||
|
-''-param man.charmap.use.subset "0" \
|
||||||
|
-''-param make.year.ranges "1" \
|
||||||
|
-''-param make.single.year.ranges "1" \
|
||||||
|
/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl \
|
||||||
|
manpage.xml'
|
||||||
|
|
||||||
|
A manual page <package>.<section> will be generated. You may view the
|
||||||
|
manual page with: nroff -man <package>.<section> | less'. A typical entry
|
||||||
|
in a Makefile or Makefile.am is:
|
||||||
|
|
||||||
|
DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl
|
||||||
|
XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
|
||||||
|
|
||||||
|
manpage.1: manpage.xml
|
||||||
|
$(XP) $(DB2MAN) $<
|
||||||
|
|
||||||
|
The xsltproc binary is found in the xsltproc package. The XSL files are in
|
||||||
|
docbook-xsl. A description of the parameters you can use can be found in the
|
||||||
|
docbook-xsl-doc-* packages. Please remember that if you create the nroff
|
||||||
|
version in one of the debian/rules file targets (such as build), you will need
|
||||||
|
to include xsltproc and docbook-xsl in your Build-Depends control field.
|
||||||
|
Alternatively use the xmlto command/package. That will also automatically
|
||||||
|
pull in xsltproc and docbook-xsl.
|
||||||
|
|
||||||
|
Notes for using docbook2x: docbook2x-man does not automatically create the
|
||||||
|
AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
|
||||||
|
<refsect1> ... </refsect1>.
|
||||||
|
|
||||||
|
To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
|
||||||
|
read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
|
||||||
|
found in the docbook-xsl-doc-html package.
|
||||||
|
|
||||||
|
Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
|
||||||
|
|
||||||
|
General documentation about man-pages and man-page-formatting:
|
||||||
|
man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
|
||||||
|
<!ENTITY dhfirstname "FIRSTNAME">
|
||||||
|
<!ENTITY dhsurname "SURNAME">
|
||||||
|
<!-- dhusername could also be set to "&dhfirstname; &dhsurname;". -->
|
||||||
|
<!ENTITY dhusername "Kienan Stewart">
|
||||||
|
<!ENTITY dhemail "kienan.stewart@burntworld.ca">
|
||||||
|
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
|
||||||
|
allowed: see man(7), man(1) and
|
||||||
|
http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
|
||||||
|
<!ENTITY dhsection "SECTION">
|
||||||
|
<!-- TITLE should be something like "User commands" or similar (see
|
||||||
|
http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
|
||||||
|
<!ENTITY dhtitle "alternc-oneclickinstallers User Manual">
|
||||||
|
<!ENTITY dhucpackage "Alternc-oneclickinstallers">
|
||||||
|
<!ENTITY dhpackage "alternc-oneclickinstallers">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<refentry>
|
||||||
|
<refentryinfo>
|
||||||
|
<title>&dhtitle;</title>
|
||||||
|
<productname>&dhpackage;</productname>
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>&dhfirstname;</firstname>
|
||||||
|
<surname>&dhsurname;</surname>
|
||||||
|
<contrib>Wrote this manpage for the Debian system.</contrib>
|
||||||
|
<address>
|
||||||
|
<email>&dhemail;</email>
|
||||||
|
</address>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
<copyright>
|
||||||
|
<year>2007</year>
|
||||||
|
<holder>&dhusername;</holder>
|
||||||
|
</copyright>
|
||||||
|
<legalnotice>
|
||||||
|
<para>This manual page was written for the Debian system
|
||||||
|
(and may be used by others).</para>
|
||||||
|
<para>Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU General Public License,
|
||||||
|
Version 2 or (at your option) any later version published by
|
||||||
|
the Free Software Foundation.</para>
|
||||||
|
<para>On Debian systems, the complete text of the GNU General Public
|
||||||
|
License can be found in
|
||||||
|
<filename>/usr/share/common-licenses/GPL</filename>.</para>
|
||||||
|
</legalnotice>
|
||||||
|
</refentryinfo>
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>&dhucpackage;</refentrytitle>
|
||||||
|
<manvolnum>&dhsection;</manvolnum>
|
||||||
|
</refmeta>
|
||||||
|
<refnamediv>
|
||||||
|
<refname>&dhpackage;</refname>
|
||||||
|
<refpurpose>program to do something</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
<!-- These are several examples, how syntaxes could look -->
|
||||||
|
<arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
|
||||||
|
<arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-e</option></arg>
|
||||||
|
<arg choice="plain"><option>--example</option></arg>
|
||||||
|
</group>
|
||||||
|
<replaceable class="option">this</replaceable>
|
||||||
|
</arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-e</option></arg>
|
||||||
|
<arg choice="plain"><option>--example</option></arg>
|
||||||
|
</group>
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><replaceable>this</replaceable></arg>
|
||||||
|
<arg choice="plain"><replaceable>that</replaceable></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
<!-- Normally the help and version options make the programs stop
|
||||||
|
right after outputting the requested information. -->
|
||||||
|
<group choice="opt">
|
||||||
|
<arg choice="plain">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-h</option></arg>
|
||||||
|
<arg choice="plain"><option>--help</option></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
<arg choice="plain">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-v</option></arg>
|
||||||
|
<arg choice="plain"><option>--version</option></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
</group>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
<refsect1 id="description">
|
||||||
|
<title>DESCRIPTION</title>
|
||||||
|
<para>This manual page documents briefly the
|
||||||
|
<command>&dhpackage;</command> and <command>bar</command>
|
||||||
|
commands.</para>
|
||||||
|
<para>This manual page was written for the Debian distribution
|
||||||
|
because the original program does not have a manual page.
|
||||||
|
Instead, it has documentation in the GNU <citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> format; see below.</para>
|
||||||
|
<para><command>&dhpackage;</command> is a program that...</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="options">
|
||||||
|
<title>OPTIONS</title>
|
||||||
|
<para>The program follows the usual GNU command line syntax,
|
||||||
|
with long options starting with two dashes (`-'). A summary of
|
||||||
|
options is included below. For a complete description, see the
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> files.</para>
|
||||||
|
<variablelist>
|
||||||
|
<!-- Use the variablelist.term.separator and the
|
||||||
|
variablelist.term.break.after parameters to
|
||||||
|
control the term elements. -->
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-e <replaceable>this</replaceable></option></term>
|
||||||
|
<term><option>--example=<replaceable>that</replaceable></option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Does this and that.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-h</option></term>
|
||||||
|
<term><option>--help</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show summary of options.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-v</option></term>
|
||||||
|
<term><option>--version</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show version of program.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="files">
|
||||||
|
<title>FILES</title>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><filename>/etc/foo.conf</filename></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The system-wide configuration file to control the
|
||||||
|
behaviour of <application>&dhpackage;</application>. See
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry> for further details.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><filename>${HOME}/.foo.conf</filename></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The per-user configuration file to control the
|
||||||
|
behaviour of <application>&dhpackage;</application>. See
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry> for further details.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="environment">
|
||||||
|
<title>ENVIRONMENT</title>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><envar>FOO_CONF</envar></term>
|
||||||
|
<listitem>
|
||||||
|
<para>If used, the defined file is used as configuration
|
||||||
|
file (see also <xref linkend="files"/>).</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="diagnostics">
|
||||||
|
<title>DIAGNOSTICS</title>
|
||||||
|
<para>The following diagnostics may be issued
|
||||||
|
on <filename class="devicefile">stderr</filename>:</para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errortext>Bad configuration file. Exiting.</errortext></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The configuration file seems to contain a broken configuration
|
||||||
|
line. Use the <option>--verbose</option> option, to get more info.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
<para><command>&dhpackage;</command> provides some return codes, that can
|
||||||
|
be used in scripts:</para>
|
||||||
|
<segmentedlist>
|
||||||
|
<segtitle>Code</segtitle>
|
||||||
|
<segtitle>Diagnostic</segtitle>
|
||||||
|
<seglistitem>
|
||||||
|
<seg><errorcode>0</errorcode></seg>
|
||||||
|
<seg>Program exited successfully.</seg>
|
||||||
|
</seglistitem>
|
||||||
|
<seglistitem>
|
||||||
|
<seg><errorcode>1</errorcode></seg>
|
||||||
|
<seg>The configuration file seems to be broken.</seg>
|
||||||
|
</seglistitem>
|
||||||
|
</segmentedlist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="bugs">
|
||||||
|
<!-- Or use this section to tell about upstream BTS. -->
|
||||||
|
<title>BUGS</title>
|
||||||
|
<para>The program is currently limited to only work
|
||||||
|
with the <package>foobar</package> library.</para>
|
||||||
|
<para>The upstreams <acronym>BTS</acronym> can be found
|
||||||
|
at <ulink url="http://bugzilla.foo.tld"/>.</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="see_also">
|
||||||
|
<title>SEE ALSO</title>
|
||||||
|
<!-- In alpabetical order. -->
|
||||||
|
<para><citerefentry>
|
||||||
|
<refentrytitle>bar</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry>, <citerefentry>
|
||||||
|
<refentrytitle>baz</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry>, <citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry></para>
|
||||||
|
<para>The programs are documented fully by <citetitle>The Rise and
|
||||||
|
Fall of a Fooish Bar</citetitle> available via the <citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> system.</para>
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
?package(alternc-oneclickinstallers):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
|
||||||
|
title="alternc-oneclickinstallers" command="/usr/bin/alternc-oneclickinstallers"
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# postinst script for alternc-oneclickinstallers
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <postinst> `configure' <most-recently-configured-version>
|
||||||
|
# * <old-postinst> `abort-upgrade' <new version>
|
||||||
|
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||||
|
# <new-version>
|
||||||
|
# * <postinst> `abort-remove'
|
||||||
|
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||||
|
# <failed-install-package> <version> `removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
# for details, see https://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
configure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "postinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# postrm script for alternc-oneclickinstallers
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <postrm> `remove'
|
||||||
|
# * <postrm> `purge'
|
||||||
|
# * <old-postrm> `upgrade' <new-version>
|
||||||
|
# * <new-postrm> `failed-upgrade' <old-version>
|
||||||
|
# * <new-postrm> `abort-install'
|
||||||
|
# * <new-postrm> `abort-install' <old-version>
|
||||||
|
# * <new-postrm> `abort-upgrade' <old-version>
|
||||||
|
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||||
|
# <overwriter-version>
|
||||||
|
# for details, see https://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "postrm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# preinst script for alternc-oneclickinstallers
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <new-preinst> `install'
|
||||||
|
# * <new-preinst> `install' <old-version>
|
||||||
|
# * <new-preinst> `upgrade' <old-version>
|
||||||
|
# * <old-preinst> `abort-upgrade' <new-version>
|
||||||
|
# for details, see https://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
install|upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
abort-upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "preinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# prerm script for alternc-oneclickinstallers
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <prerm> `remove'
|
||||||
|
# * <old-prerm> `upgrade' <new-version>
|
||||||
|
# * <new-prerm> `failed-upgrade' <old-version>
|
||||||
|
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||||
|
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||||
|
# <package-being-installed> <version> `removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
# for details, see https://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
remove|upgrade|deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
failed-upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "prerm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/make -f
|
||||||
|
# See debhelper(7) (uncomment to enable)
|
||||||
|
# output every command that modifies files on the build system.
|
||||||
|
#export DH_VERBOSE = 1
|
||||||
|
|
||||||
|
|
||||||
|
# see FEATURE AREAS in dpkg-buildflags(1)
|
||||||
|
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||||
|
|
||||||
|
# see ENVIRONMENT in dpkg-buildflags(1)
|
||||||
|
# package maintainers to append CFLAGS
|
||||||
|
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
|
||||||
|
# package maintainers to append LDFLAGS
|
||||||
|
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
|
||||||
|
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
|
||||||
|
# dh_make generated override targets
|
||||||
|
# This is example for Cmake (See https://bugs.debian.org/641051 )
|
||||||
|
#override_dh_auto_configure:
|
||||||
|
# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
3.0 (native)
|
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 785 B |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 958 B |
|
@ -0,0 +1,139 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License (GPL)
|
||||||
|
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.
|
||||||
|
|
||||||
|
To read the license please visit http://www.gnu.org/copyleft/gpl.html
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Form for the quick installation of Drupal
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once("../class/config.php");
|
||||||
|
include_once("head.php");
|
||||||
|
|
||||||
|
$oci = new m_oci();
|
||||||
|
$dom = new m_dom();
|
||||||
|
$sql = new m_mysql();
|
||||||
|
$quota = new m_quota();
|
||||||
|
|
||||||
|
$fields = array(
|
||||||
|
'application' => array('post', 'string', ''),
|
||||||
|
);
|
||||||
|
getFields($fields);
|
||||||
|
|
||||||
|
|
||||||
|
$fields = $oci->oci_form_fields($application);
|
||||||
|
getFields($fields);
|
||||||
|
$all_vars = get_defined_vars();
|
||||||
|
$oci_vars = array();
|
||||||
|
foreach ($all_vars as $name => $value) {
|
||||||
|
if (in_array($name, array_keys($fields))) {
|
||||||
|
$oci_vars[$name] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$application) {
|
||||||
|
__('No application chosen.');
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$oci->app_is_installable($application)) {
|
||||||
|
__('Application not supported: '); print(ehe($application));
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @TODO validations
|
||||||
|
$errors = $oci->oci_form_validate($oci_vars);
|
||||||
|
if (!empty($errors)) {
|
||||||
|
print('<div class="validation-wrapper">');
|
||||||
|
print('<h3>' . _('Validation Errors') . '</h3>');
|
||||||
|
print('<div class="validation-error-summary">' . count($errors) . ' ' . _('validation errors in form') . '</div>');
|
||||||
|
foreach ($errors as $delta => $error) {
|
||||||
|
printf('<div class="validation-error-wrapper"><span class="validation-error-module">%s</span> : <span class="validation-error-message">%s</span>', $error['module'], $error['message']);
|
||||||
|
if (isset($error['data'])) {
|
||||||
|
print('<dl class="validation-error-data">');
|
||||||
|
foreach ($error['data'] as $name => $value) {
|
||||||
|
printf('<dt>%s</dt>', $name);
|
||||||
|
printf('<dd>%s</dd>', htmlentities(print_r($value, TRUE)));
|
||||||
|
}
|
||||||
|
print('</dl>');
|
||||||
|
}
|
||||||
|
print('</div>');
|
||||||
|
}
|
||||||
|
print('</div>');
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<h3><?php __("Confirm installation of ${application}"); ?></h3>
|
||||||
|
<?php
|
||||||
|
if (isset($fatal) && $fatal) {
|
||||||
|
include_once("foot.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<form method="post" action="oci_doinstall.php" id="oci-install-<?php print($application); ?>"
|
||||||
|
name="oci-install-<?php print($application); ?>" autocomplete="off">
|
||||||
|
<?php csrf_get(); ?>
|
||||||
|
<h4><?php __('Summary'); ?></h4>
|
||||||
|
<ul class="oci-install-summary">
|
||||||
|
<?php if ($oci_vars['domain'] == '*new*'): ?>
|
||||||
|
<li>The domain <?php echo $oci_vars['new_domain_name']; ?> will be created</li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ($oci_vars['sub_domain'] == '*new*'): ?>
|
||||||
|
<li>A new sub-domain <?php echo $oci_vars['new_sub_domain_name']; ?> of type
|
||||||
|
<?php echo $oci_vars['new_sub_domain_type']; ?> at the directory
|
||||||
|
<?php echo $oci_vars['new_sub_domain_path']; ?> will be created.</li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ($oci_vars['db_name'] == '*new*'): ?>
|
||||||
|
<li>A new database named <?php echo $oci_vars['new_db_name']; ?> will be created.</li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php
|
||||||
|
$d = ($oci_vars['domain'] == '*new*') ? $oci_vars['new_domain_name'] : $oci_vars['domain'] ;
|
||||||
|
$s = ($oci_vars['sub_domain'] == '*new*') ? $oci_vars['new_sub_domain_name'] : explode(';', $oci_vars['sub_domain'])[1];
|
||||||
|
?>
|
||||||
|
<li><?php echo $oci_vars['application']; ?> will be installed at <?php printf('%s.%s', $s, $d); ?>.</li>
|
||||||
|
<?php // @TODO: Get application specific summary information ?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4><?php __('Submitted details'); ?></h4>
|
||||||
|
<?php
|
||||||
|
print('<dl>');
|
||||||
|
foreach($oci_vars as $name => $value) {
|
||||||
|
print("<dt>$name</dt>");
|
||||||
|
if (isset($value)) {
|
||||||
|
$a = htmlentities($value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$a = "<strong>***" . __('undefined') . '</strong>***';
|
||||||
|
}
|
||||||
|
print("<dd>$a</dd>");
|
||||||
|
}
|
||||||
|
print('</dl>');
|
||||||
|
?>
|
||||||
|
<h4><?php __('Confirmation'); ?></h4>
|
||||||
|
<?php foreach ($oci_vars as $name => $value) {
|
||||||
|
printf('<input type="hidden" name="%s" value="%s"/>', $name, $value);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<input type="button" class="inb cancel" name="cancel" value="<?php __('Cancel'); ?>"/>
|
||||||
|
<input type="submit" class="inb ok" name="submit" value="<?php __('Install'); ?>"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<?php include_once("foot.php"); ?>
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License (GPL)
|
||||||
|
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.
|
||||||
|
|
||||||
|
To read the license please visit http://www.gnu.org/copyleft/gpl.html
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Form for the quick installation of Drupal
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once("../class/config.php");
|
||||||
|
include_once("head.php");
|
||||||
|
|
||||||
|
$oci = new m_oci();
|
||||||
|
$dom = new m_dom();
|
||||||
|
$sql = new m_mysql();
|
||||||
|
$quota = new m_quota();
|
||||||
|
|
||||||
|
$fields = array(
|
||||||
|
'application' => array('post', 'string', ''),
|
||||||
|
);
|
||||||
|
getFields($fields);
|
||||||
|
|
||||||
|
|
||||||
|
$fields = $oci->oci_form_fields($application);
|
||||||
|
getFields($fields);
|
||||||
|
$all_vars = get_defined_vars();
|
||||||
|
$oci_vars = array();
|
||||||
|
foreach ($all_vars as $name => $value) {
|
||||||
|
if (in_array($name, array_keys($fields))) {
|
||||||
|
$oci_vars[$name] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$application) {
|
||||||
|
__('No application chosen.');
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$oci->app_is_installable($application)) {
|
||||||
|
__('Application not supported: '); print(ehe($application));
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$r = $oci->install($application, $oci_vars);
|
||||||
|
printf('<div class="oci-installation-results"><pre>%s</pre></div>', print_r($r, TRUE));
|
||||||
|
include_once('foot.php');
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License (GPL)
|
||||||
|
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.
|
||||||
|
|
||||||
|
To read the license please visit http://www.gnu.org/copyleft/gpl.html
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Form for the quick installation of an application.
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once("../class/config.php");
|
||||||
|
include_once("head.php");
|
||||||
|
|
||||||
|
$oci = new m_oci();
|
||||||
|
|
||||||
|
$fields = array(
|
||||||
|
'app' => array('get', 'string', ''),
|
||||||
|
);
|
||||||
|
getFields($fields);
|
||||||
|
|
||||||
|
if (!$app) {
|
||||||
|
__('No application chosen.');
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$oci->app_is_installable($app)) {
|
||||||
|
__('Application not supported: '); print(ehe($app));
|
||||||
|
include_once('foot.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields = $oci->oci_form_fields($app);
|
||||||
|
getFields($fields);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<h3><?php __("Install ${app}"); ?></h3>
|
||||||
|
<?php
|
||||||
|
if (isset($fatal) && $fatal) {
|
||||||
|
include_once("foot.php");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
print($oci->oci_form($app));
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php include_once("foot.php"); ?>
|
|
@ -0,0 +1,752 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License (GPL)
|
||||||
|
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.
|
||||||
|
|
||||||
|
To read the license please visit http://www.gnu.org/copyleft/gpl.html
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
class m_oci {
|
||||||
|
|
||||||
|
function hook_menu() {
|
||||||
|
global $hooks, $L_ALTERNC_WPCLI_BIN, $L_ALTERNC_DRUSH_BIN;
|
||||||
|
$menu = array(
|
||||||
|
'title' => _('Quick Install'),
|
||||||
|
'ico' => 'images/ocilogo.png',
|
||||||
|
'link' => 'toggle',
|
||||||
|
'pos' => 11,
|
||||||
|
'links' => array(),
|
||||||
|
);
|
||||||
|
// @TODO invoke a hook to get supported applications
|
||||||
|
// need: id (eg. wordpress), weight (to order), ico, and
|
||||||
|
// optionally - a different action path.
|
||||||
|
// @TODO required binaries for installation: eg, wp-cli, drush
|
||||||
|
if ($this->app_is_installable('wordpress')) {
|
||||||
|
$menu['links'][] = array(
|
||||||
|
'txt' => _('WordPress'),
|
||||||
|
'url' => 'oci_install.php?app=wordpress',
|
||||||
|
'ico' => 'images/wordpress.png',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($this->app_is_installable('drupal')) {
|
||||||
|
$menu['links'][] = array(
|
||||||
|
'txt' => _('Drupal'),
|
||||||
|
'url' => 'oci_install.php?app=drupal',
|
||||||
|
'ico' => 'images/drupal.png',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($menu['links']) {
|
||||||
|
return $menu;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if requirements are met to install an application.
|
||||||
|
*
|
||||||
|
* @param $app string
|
||||||
|
* The string identifier of the application (eg. drupal, wordpress).
|
||||||
|
*/
|
||||||
|
function app_is_installable($app) {
|
||||||
|
global $hooks;
|
||||||
|
$vals = $hooks->invoke('hook_oci_is_installable', array($app));
|
||||||
|
foreach ($vals as $class => $rval) {
|
||||||
|
if ($rval) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_oci_is_installable().
|
||||||
|
*/
|
||||||
|
function hook_oci_is_installable($app) {
|
||||||
|
global $L_ALTERNC_DRUSH_BIN, $L_ALTERNC_WP_BIN;
|
||||||
|
switch ($app) {
|
||||||
|
case 'drupal':
|
||||||
|
if ($L_ALTERNC_DRUSH_BIN) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'wordpress':
|
||||||
|
if ($L_ALTERNC_WP_BIN) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets which fields should be loaded for the one click install form.
|
||||||
|
*
|
||||||
|
* @param $app string
|
||||||
|
*
|
||||||
|
* @returns array
|
||||||
|
* Array of fields indexed by parameter name. Each value is an array
|
||||||
|
* of ["fetch_type", "data_type", "default"].
|
||||||
|
* fetch_type may be "get" or "post".
|
||||||
|
*/
|
||||||
|
function oci_form_fields($app) {
|
||||||
|
global $hooks;
|
||||||
|
$fields = array(
|
||||||
|
'application' => array('post', 'string', ''), // Used in confirmation.
|
||||||
|
|
||||||
|
'domain' => array('post', 'string', ''),
|
||||||
|
'new_domain_name' => array('post', 'string', ''),
|
||||||
|
|
||||||
|
'sub_domain' => array('post', 'string', ''),
|
||||||
|
'new_sub_domain_name' => array('post', 'string'),
|
||||||
|
'new_sub_domain_path' => array('post', 'string', ''),
|
||||||
|
'new_sub_domain_type' => array('post', 'string', 'vhost'),
|
||||||
|
|
||||||
|
'db_name' => array('post', 'string', ''),
|
||||||
|
'new_db_name' => array('post', 'string', ''),
|
||||||
|
'db_prefix' => array('post', 'string', ''),
|
||||||
|
);
|
||||||
|
$vals = $hooks->invoke('hook_oci_form_fields', array($app));
|
||||||
|
foreach ($vals as $v) {
|
||||||
|
$fields = $fields + $v;
|
||||||
|
}
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_oci_form_fields().
|
||||||
|
*/
|
||||||
|
function hook_oci_form_fields($app) {
|
||||||
|
global $mem;
|
||||||
|
if ($app == 'drupal') {
|
||||||
|
$fields = array(
|
||||||
|
'drupal_install_source' => array('post', 'string', ''),
|
||||||
|
'drupal_makefile' => array('post', 'string', ''),
|
||||||
|
'drupal_core_version' => array('post', 'string', ''),
|
||||||
|
'drupal_title' => array('post', 'string', ''),
|
||||||
|
'drupal_admin_name' => array('post', 'string', 'admin'),
|
||||||
|
// @TODO use user e-mail as a default
|
||||||
|
'drupal_admin_mail' => array('post', 'string', ''),
|
||||||
|
'drupal_site_name' => array('post', 'string', ''),
|
||||||
|
'drupal_site_mail' => array('post', 'string', ''),
|
||||||
|
);
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
if ($app == 'wordpress') {
|
||||||
|
$fields = array(
|
||||||
|
'wordpress_title' => array('post', 'string', ''),
|
||||||
|
'wordpress_admin_mail' => array('post', 'string', ''),
|
||||||
|
'wordpress_admin_name' => array('post', 'string', 'admin'),
|
||||||
|
'wordpress_locale' => array('post', 'string', ''),
|
||||||
|
);
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to get the action script path.
|
||||||
|
*
|
||||||
|
* @returns string
|
||||||
|
* String containing the name of the php script which should be
|
||||||
|
* invoked to run the installation.
|
||||||
|
*/
|
||||||
|
function get_app_action($app) {
|
||||||
|
return 'oci_doinstall_' . $app . '.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of subdomain types which can be used for
|
||||||
|
* installing applications into.
|
||||||
|
*
|
||||||
|
* @returns array
|
||||||
|
* Array of vhost types (strings).
|
||||||
|
*/
|
||||||
|
function allowed_subdomain_types() {
|
||||||
|
// Maybe just there the type has target DIRECTORY.
|
||||||
|
global $dom;
|
||||||
|
$dtypes = $dom->domains_type_lst();
|
||||||
|
$types = array();
|
||||||
|
foreach ($dtypes as $name => $record) {
|
||||||
|
if ($record['target'] == 'DIRECTORY') {
|
||||||
|
$types[] = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $types;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides the a base form for installation of applications.
|
||||||
|
*
|
||||||
|
* @param $app string
|
||||||
|
* The string identifier of the application (eg. drupal, wordpress).
|
||||||
|
*/
|
||||||
|
function oci_form($app) {
|
||||||
|
global $hooks, $quota, $dom, $mysql;
|
||||||
|
$form = "<form method=\"post\" action=\"oci_confirm.php\" id=\"oci-install-$app\" name=\"oci-install-$app\" autocomplete=\"off\">";
|
||||||
|
ob_start();
|
||||||
|
csrf_get();
|
||||||
|
$csrf = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
$form .= $csrf;
|
||||||
|
$form .= '<h4>' . _('common options') . '</h4>';
|
||||||
|
$form .= '<input type="hidden" name="application" value="' . $app . '"/>';
|
||||||
|
|
||||||
|
// Domain
|
||||||
|
$new_domain_possible = $quota->cancreate('dom');
|
||||||
|
$current_domains = $dom->enum_domains();
|
||||||
|
if ($new_domain_possible) {
|
||||||
|
$current_domains[] = '*new*';
|
||||||
|
}
|
||||||
|
if ($current_domains) {
|
||||||
|
$form .= '<div id="domain-wrapper">';
|
||||||
|
// @TODO on select change which sub-domains are listed.
|
||||||
|
$form .= '<label for="domain">' . _('Choose domain to create the site in ') . '</label>';
|
||||||
|
$form .= '<select name="domain" id="domain">';
|
||||||
|
foreach ($current_domains as $d) {
|
||||||
|
$form .= "<option value=\"$d\">$d</option>";
|
||||||
|
}
|
||||||
|
$form .= '</select></div>';
|
||||||
|
}
|
||||||
|
if ($new_domain_possible) {
|
||||||
|
$form .= '<label for="new-domain-name">' . _('Choose new domain name') . '</label>';
|
||||||
|
$form .= '<input type="text" name="new_domain_name" id="new-domain-name"/>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Choose a sub-domain or new
|
||||||
|
$allowed_subdomain_types = $this->allowed_subdomain_types();
|
||||||
|
$form .= '<div id="sub-domain-wrapper">';
|
||||||
|
$form .= '<label for="sub_domain">' . _('Choose an existing sub-domain or select "<strong>*new*</strong>" to create a new sub-domain') . '</label>';
|
||||||
|
$form .= '<select name="sub_domain" id="sub_domain">';
|
||||||
|
foreach ($current_domains as $domain) {
|
||||||
|
if ($current_domains == '*new*') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$dom->lock();
|
||||||
|
$d = $dom->get_domain_all($domain);
|
||||||
|
$dom->unlock();
|
||||||
|
if (!$d) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
foreach ($d['sub'] as $delta => $sub_data) {
|
||||||
|
if (!in_array($sub_data['type'], $allowed_subdomain_types)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$form .= "<option value=\"$domain;${sub_data['name']}\">";
|
||||||
|
$form .= "${sub_data['name']} (${sub_data['type']} in $domain)</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$form .= '<option value="*new*">' . _('*new*') . '</div>';
|
||||||
|
$form .= '</select></div>';
|
||||||
|
|
||||||
|
// new sub_domain name ; new sub_domain type ; new sub_domain path
|
||||||
|
$form .= '<div id="new-sub-domain-name-wrapper">';
|
||||||
|
$form .= '<label for="new-sub-domain-name">' . _('Choose new sub-domain name (eg. www)') . '</label>';
|
||||||
|
$form .= '<input type="text" name="new_sub_domain_name" id="new-sub-domain-name"/>';
|
||||||
|
$form .= '</div>';
|
||||||
|
|
||||||
|
$form .= '<div id="new-sub-domain-type-wrapper">';
|
||||||
|
$form .= '<label for="new-sub-domain-type">' . _('Choose a type for the new sub-domain') . '</label>';
|
||||||
|
$form .= '<select name="sub_domain_type" id="new-sub-domain-type">';
|
||||||
|
foreach ($this->allowed_subdomain_types() as $t) {
|
||||||
|
$form .= "<option value=\"$t\">$t</option>";
|
||||||
|
}
|
||||||
|
$form .= '</select></div>';
|
||||||
|
|
||||||
|
$form .= '<div id="new-sub-domain-path-wrapper">';
|
||||||
|
$form .= '<label for="new-sub-domain-path">' . _('Choose a path for the new sub-domain') . '</label>';
|
||||||
|
$form .= '<input type="text" name="new_sub_domain_path" id="new-sub-domain-path"/>';
|
||||||
|
$form .= '</div>';
|
||||||
|
|
||||||
|
// Database
|
||||||
|
$new_db_possible = $quota->cancreate('mysql');
|
||||||
|
|
||||||
|
$dbs = $mysql->get_dblist();
|
||||||
|
$form .= '<div id="database-wrapper">';
|
||||||
|
$form .= '<label for="db_name">' . _('Choose a database to use') . '</label>';
|
||||||
|
$form .= '<select name="db_name" id="db_name">';
|
||||||
|
foreach ($dbs as $d) {
|
||||||
|
$form .= '<option value="' . $d['db'] . '">' . $d['db'] . '</option>';
|
||||||
|
}
|
||||||
|
if ($new_db_possible) {
|
||||||
|
$form .= '<option value ="*new*">' . _('*new*') . '</option>';
|
||||||
|
}
|
||||||
|
$form .= '</select>';
|
||||||
|
$form .= '</div>';
|
||||||
|
$form .= '<div id="new-db-name-wrapper">';
|
||||||
|
$form .= '<label for="new-db-name">' . _('Choose name for new database') . '</label>';
|
||||||
|
$form .= '<input type="text" name="new_db_name" id="new-db-name"/>';
|
||||||
|
$form .= '</div>';
|
||||||
|
|
||||||
|
$form .= '<div id="db-prefix-wrapper">';
|
||||||
|
$form .= '<label for="db-prefix">' . _('Choose a database prefix (optional)') . '</label>';
|
||||||
|
$form .= '<input type="text" name="db_prefix" id="db-prefix"/>';
|
||||||
|
$form .= '</div>';
|
||||||
|
|
||||||
|
// Invoke hook to get app-specific form fields.
|
||||||
|
$extra = '';
|
||||||
|
$vals = $hooks->invoke('hook_oic_form', array($app));
|
||||||
|
foreach ($vals as $v) {
|
||||||
|
if ($v) {
|
||||||
|
$extra .= $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($extra) {
|
||||||
|
$form .= '<div class="app-' . $app . '" id="app-wrapper">';
|
||||||
|
$form .= '<h4>' . $app . ' ' . _('installation options') . '</h3>';
|
||||||
|
$form .= $extra;
|
||||||
|
$form .= '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submit
|
||||||
|
// @TODO option to disable confirmation screen?
|
||||||
|
$form .= '<input type="submit" class="inb" name="submit" value="' . _('Continue') . '"/>';
|
||||||
|
$form .= "</form>";
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_oic_form.
|
||||||
|
*/
|
||||||
|
function hook_oic_form($app) {
|
||||||
|
$f = '';
|
||||||
|
switch ($app) {
|
||||||
|
case 'drupal':
|
||||||
|
// These fields should be defined in hook_oic_form_fields
|
||||||
|
// Choose the install source
|
||||||
|
$f .= '<div id="drupal-install-source-wrapper">';
|
||||||
|
$f .= '<label for="drupal-install-source">' . _('Choose installation source') . '</label>';
|
||||||
|
$f .= '<select name="drupal_install_source" id="drupal-install-source">';
|
||||||
|
$f .= '<option value="drupal-core">' . _('Core Version') . '</option>';
|
||||||
|
$f .= '<option value="makefile">' . _('Makefile') . '</option>';
|
||||||
|
$f .= '</select></div>';
|
||||||
|
// Core Version
|
||||||
|
$f .= '<div id="drupal-core-version-wrapper">';
|
||||||
|
$f .= '<label for="drupal-core-version">' . _('Choose Drupal Core Version') . '</label>';
|
||||||
|
$f .= '<select name="drupal_core_version" id="drupal-core-version">';
|
||||||
|
$f .= '<option value="8">Drupal 8</option>';
|
||||||
|
$f .= '<option value="7">Drupal 7</option>';
|
||||||
|
$f .= '</select></div>';
|
||||||
|
// Makefile
|
||||||
|
$f .= '<div id="drupal-makefile-wrapper">';
|
||||||
|
$f .= '<label for="drupal-makefile">' . _('Makefile location (eg. an URL)') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_makefile" id="drupal-makefile"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// Site Title
|
||||||
|
$f .= '<div id="drupal-title-wrapper">';
|
||||||
|
$f .= '<label for="drupal-title">' . _('Site Title') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_title" id="drupal-title">';
|
||||||
|
$f .= '</div>';
|
||||||
|
// Drupal Admin Name
|
||||||
|
$f .= '<div id="drupal-admin-name-wrapper">';
|
||||||
|
$f .= '<label for="drupal-admin-name">' . _('Admin username') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_admin_name" id="drupal-admin-name"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// Drupal Admin Mail
|
||||||
|
$f .= '<div id="drupal-admin-maik-wrapper">';
|
||||||
|
$f .= '<label for="drupal-admin-mail">' . _('Admin e-mail') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_admin_mail" id="drupal-admin-mail"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// Drupal Site Mail
|
||||||
|
$f .= '<div id="drupal-site-mail-wrapper">';
|
||||||
|
$f .= '<label for="drupal-site-mail">' . _('Site e-mail (used when sending e-mail)') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_site_mail" id="drupal-site-mail"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// Drupal Site Name
|
||||||
|
$f .= '<div id="drupal-site-name-wrapper">';
|
||||||
|
$f .= '<label for="drupal-site-name">' . _('Short site name') . '</label>';
|
||||||
|
$f .= '<input type="text" name="drupal_site_name" id="drupal-site-name"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
break;
|
||||||
|
case 'wordpress':
|
||||||
|
// Site Title
|
||||||
|
$f .= '<div id="wordpress-title-wrapper">';
|
||||||
|
$f .= '<label for="wordpress-title">' . _('Site Title') . '</label>';
|
||||||
|
$f .= '<input type="text" name="wordpress_title" id="wordpress-title">';
|
||||||
|
$f .= '</div>';
|
||||||
|
// wordpress Admin Name
|
||||||
|
$f .= '<div id="wordpress-admin-name-wrapper">';
|
||||||
|
$f .= '<label for="wordpress-admin-name">' . _('Admin username') . '</label>';
|
||||||
|
$f .= '<input type="text" name="wordpress_admin_name" id="wordpress-admin-name"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// wordpress Admin Mail
|
||||||
|
$f .= '<div id="wordpress-admin-maik-wrapper">';
|
||||||
|
$f .= '<label for="wordpress-admin-mail">' . _('Admin e-mail') . '</label>';
|
||||||
|
$f .= '<input type="text" name="wordpress_admin_mail" id="wordpress-admin-mail"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
// wordpress locale
|
||||||
|
$f .= '<div id="wordpress-locale">';
|
||||||
|
$f .= '<label for="wordpress-locale">' . _('Locale (eg. en_CA, fr_CA, or en_US)') . '</label>';
|
||||||
|
$f .= '<input type="text" name="wordpress_locale" id="wordpress-locale"/>';
|
||||||
|
$f .= '</div>';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return $f;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform validation of the form data.
|
||||||
|
*
|
||||||
|
* @param array $vars
|
||||||
|
* Array of name/value for the submitted data as received in oci_confirm.php
|
||||||
|
*
|
||||||
|
* @returns array
|
||||||
|
* Array of errors eg. array(0 => array('module' => 'm_oci', 'message' => '...'), ...)
|
||||||
|
*/
|
||||||
|
function oci_form_validate($vars) {
|
||||||
|
global $hooks, $dom, $db;
|
||||||
|
$errors = array();
|
||||||
|
if ($vars['domain'] == '*new*') {
|
||||||
|
if (!$vars['new_domain_name']) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_domain_name must not be empty when trying to create new domain'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Repeat validation done in m_dom::add_domain
|
||||||
|
if (checkfqdn(strtolower($vars['new_domain_name']))) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_domain_name is syntaxically incorrect'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$db->query("SELECT domain FROM forbidden_domains WHERE domain= ? ;", array($domain));
|
||||||
|
if ($db->num_rows()) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_domain_name is forbidden on this server'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($domain == $L_FQDN || $domain == "www.$L_FQDN") {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_domain_name is the server\'s domain. You cannot host it on your account'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$db->query("SELECT compte FROM domaines WHERE domaine= ?;", array($domain));
|
||||||
|
if ($db->num_rows()) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('The domain already exists'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$db->query("SELECT compte FROM `sub_domaines` WHERE sub != \"\" AND concat( sub, \".\", domaine )= ? OR domaine= ?;", array($domain, $domain));
|
||||||
|
if ($db->num_rows()) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('The domain already exists'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// There are so many more... whois, dns, quota
|
||||||
|
}
|
||||||
|
|
||||||
|
$sub = '';
|
||||||
|
if ($vars['sub_domain'] == '*new*') {
|
||||||
|
if (!$vars['new_sub_domain_name']) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_sub_domain_name must not be empty'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (!$vars['new_sub_domain_path']) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_sub_domain_path must not be empty'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (!$vars['new_sub_domain_type']) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_sub_domain_type must not be empty'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Make sure the sub-domain is in the current domain
|
||||||
|
list($d, $s) = explode(';', $vars['sub_domain']);
|
||||||
|
if (trim($d) != $vars['domain']) {
|
||||||
|
$errors[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('sub-domain does not belong to selected domain'),
|
||||||
|
'data' => array(
|
||||||
|
'sub_domain' => $vars['sub_domain'],
|
||||||
|
'domain' => $vars['domain'],
|
||||||
|
'd' => $d,
|
||||||
|
's' => $s,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($vars['db_name'] == '*new*') {
|
||||||
|
if (!preg_match("#^[0-9a-z]*$#", $vars['new_db_name'])) {
|
||||||
|
$error[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_database_name can only contain letters and numbers'),
|
||||||
|
);
|
||||||
|
$msg->raise("ERROR", "mysql", _("Database name can contain only letters and numbers"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$len=variable_get("sql_max_database_length", 64);
|
||||||
|
if (strlen($vars['db_name']) > $len) {
|
||||||
|
$error[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_database_name cannot exceed character length') . ': ' . $len,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$db->query("SELECT * FROM db WHERE db= ? ;", array($dbname));
|
||||||
|
if ($db->num_rows()) {
|
||||||
|
$error[] = array(
|
||||||
|
'module' => 'm_oci',
|
||||||
|
'message' => _('new_database_name already exists'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$vals = $hooks->invoke('hook_oci_form_validate', array($vars));
|
||||||
|
foreach ($vals as $v) {
|
||||||
|
if ($v && is_array($v) && !is_empty($v)) {
|
||||||
|
$errors = $errors + $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_oci_form_validate.
|
||||||
|
*/
|
||||||
|
function hook_oci_form_validate($vars) {
|
||||||
|
$errors = array();
|
||||||
|
// @TODO Drupal
|
||||||
|
// @TODO Wordpress
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Installs an application.
|
||||||
|
*/
|
||||||
|
function install($app, $vars) {
|
||||||
|
global $hooks, $dom, $mysql, $msg, $mem, $db, $cuid, $L_ALTERNC_HTML;
|
||||||
|
$r = '';
|
||||||
|
|
||||||
|
// Add new domain if necessary.
|
||||||
|
if ($vars['domain'] == '*new*') {
|
||||||
|
$dom->lock();
|
||||||
|
// @TODO don't force dns to on enabled.
|
||||||
|
if (!$dom->add_domain($vars['new_domain_name'], 1)) {
|
||||||
|
$msg->raise('ERROR', '....');
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
$vars['domain'] = $vars['new_domain_name'];
|
||||||
|
unset($vars['new_domain_name']);
|
||||||
|
}
|
||||||
|
$dom->unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new sub-domain if necessary.
|
||||||
|
if ($vars['sub_domain'] == '*new*') {
|
||||||
|
// @TODO special case: handle new_sub_domain_name was a default domain graceully.
|
||||||
|
$dom->lock();
|
||||||
|
if (!$dom->set_sub_domain($vars['domain'], $vars['new_sub_domain_name'],
|
||||||
|
$vars['new_sub_domain_type'], $vars['new_sub_domain_path'])) {
|
||||||
|
$msg->raise('ERROR', '......');
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
$vars['sub_domain'] = $vars['new_sub_domain_name'];
|
||||||
|
unset($vars['new_sub_domain_name']);
|
||||||
|
unset($vars['new_sub_domain_path']);
|
||||||
|
unset($vars['new_sub_domain_type']);
|
||||||
|
}
|
||||||
|
$dom->unlock();
|
||||||
|
} else {
|
||||||
|
list($d, $s) = explode(';', $vars['sub_domain']);
|
||||||
|
if ($d != $vars['domain']) {
|
||||||
|
$msg->raise('ERROR', 'm_oci', 'sub_domai %s doesn\'t belong to domain %s',
|
||||||
|
array($vars['sub_domain'], $vars['domain']));
|
||||||
|
}
|
||||||
|
$vars['sub_domain'] = $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add database if necessary.
|
||||||
|
if ($vars['db_name'] == '*new*') {
|
||||||
|
$login = $mem->user['login'];
|
||||||
|
if(!$mysql->add_db("${login}_${vars['new_db_name']}")) {
|
||||||
|
$msg->raise('ERROR', '....');
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
$vars['db_name'] = "${login}_${vars['new_db_name']}";
|
||||||
|
unset($vars['new_db_name']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill out variables to pass on to the install hooks.
|
||||||
|
$db->query("SELECT dbu.name,dbu.password, dbs.host FROM dbusers dbu, db_servers dbs, membres m WHERE dbu.uid= ? and enable='ACTIVATED' and dbs.id=m.db_server_id and m.uid= ? and dbu.name = ?;", array($cuid, $cuid, $vars['db_name']));
|
||||||
|
if (!$db->num_rows()) {
|
||||||
|
$msg->raise('ERROR', 'm_oci', _('Unable to get database information for user "%s", db "%s"'), array($cuid, $vars['db_name']));
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
$db->next_record();
|
||||||
|
$vars['db_user'] = $db->Record['name'];
|
||||||
|
$vars['db_pass'] = $db->Record['password'];
|
||||||
|
$vars['db_host'] = $db->Record['host'];
|
||||||
|
$vars['db_port'] = '3306'; // Seems to be hardcoded in AlternC
|
||||||
|
|
||||||
|
$dom->lock();
|
||||||
|
$domain_info = $dom->get_domain_all($vars['domain']);
|
||||||
|
$dom->unlock();
|
||||||
|
$vars['url'] = ($vars['sub_domain']) ? $vars['sub_domain'] . '.' : '';
|
||||||
|
$vars['url'] .= $vars['domain'];
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Domain info: %s', print_r($domain_info, TRUE));
|
||||||
|
foreach ($domain_info['sub'] as $delta => $sub_info) {
|
||||||
|
if($sub_info['name'] != $vars['sub_domain']) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$vars['path'] = $sub_info['dest'];
|
||||||
|
}
|
||||||
|
$login = $mem->user['login'];
|
||||||
|
$vars['path'] = $L_ALTERNC_HTML . '/' . substr($login, 0, 1) . '/' . $login . $vars['path'];
|
||||||
|
|
||||||
|
// db_user,pass,host,port,name ; url,path
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Invoking hook_oci_install for app %s with args %s',
|
||||||
|
array($app, print_r($vars, TRUE)));
|
||||||
|
$vals = $hooks->invoke('hook_oci_install', array($app, $vars));
|
||||||
|
foreach ($vals as $v) {
|
||||||
|
$r .= $v;
|
||||||
|
}
|
||||||
|
$vals = $hooks->invoke('hook_oci_post_install', array($app, $hook_vars));
|
||||||
|
foreach ($vals as $v) {
|
||||||
|
$r .= $v;
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_oci_install.
|
||||||
|
*/
|
||||||
|
function hook_oci_install($app, $vars) {
|
||||||
|
if ($app == 'drupal') {
|
||||||
|
$r .= $this->_install_drupal($app, $vars);
|
||||||
|
} elseif ($app == 'wordpress') {
|
||||||
|
$r .= $this->_install_wordpress($app, $vars);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Install drupal
|
||||||
|
*/
|
||||||
|
private function _install_drupal($app, $vars) {
|
||||||
|
global $L_ALTERNC_DRUSH_BIN, $msg;
|
||||||
|
$si_args = array(
|
||||||
|
'--site-mail' => $vars['drupal_site_mail'],
|
||||||
|
'--site-name' => $vars['drupal_title'],
|
||||||
|
'--sites-subdir' => $vars['drupal_site_name'],
|
||||||
|
'--root' => $vars['path'],
|
||||||
|
'--account-mail' => $vars['drupal_admin_mail'],
|
||||||
|
'--account-name' => $vars['drupal_admin_name'],
|
||||||
|
'--db-prefix' => $vars['db_prefix'],
|
||||||
|
'--db-url' => "mysql://${vars['db_user']}:${vars['db_pass']}@${vars['db_host']}:${vars['db_port']}/${vars['db_name']}",
|
||||||
|
);
|
||||||
|
$r = '';
|
||||||
|
if ($vars['drupal_makefile']) {
|
||||||
|
$cmd = sprintf("$_ALTERNC_DRUSH_BIN make --concurrency=5 %s %s",
|
||||||
|
$vars['drupal_makefile'],
|
||||||
|
$vars['path']);
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Running command: %s', array($cmd));
|
||||||
|
$r .= shell_exec($cmd . ' 2>&1');
|
||||||
|
}
|
||||||
|
if ($vars['drupal_core_version']) {
|
||||||
|
$version = 'drupal-' . $vars['drupal_core_version'];
|
||||||
|
$cmd = sprintf("$L_ALTERNC_DRUSH_BIN dl %s %s %s --yes",
|
||||||
|
escapeshellarg($version),
|
||||||
|
'--destination=' . escapeshellarg($vars['path']),
|
||||||
|
'--drupal-project-rename="."'
|
||||||
|
);
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Running command: %s', array($cmd));
|
||||||
|
$r .= shell_exec($cmd . ' 2>&1');
|
||||||
|
}
|
||||||
|
|
||||||
|
$si_arg = '';
|
||||||
|
foreach ($si_args as $name => $value) {
|
||||||
|
if (!$value) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$si_arg .= "$name=" . escapeshellarg($value) . ' ';
|
||||||
|
}
|
||||||
|
$si_arg .= ' --yes'; // . ' ' . escapeshellarg($vars['drupal_site_name']);
|
||||||
|
$msg->raise('INFO', 'm_oci', _('Starting Drupal installation with arguments: %s'), array($si_arg));
|
||||||
|
// @FIXME This seems to use an insane about of memory and gets OOM killed.
|
||||||
|
$r .= shell_exec("$L_ALTERNC_DRUSH_BIN si $si_arg 2>&1");
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Install wordpress
|
||||||
|
*/
|
||||||
|
private function _install_wordpress($app, $vars) {
|
||||||
|
global $L_ALTERNC_WP_BIN, $msg;
|
||||||
|
$dl = array(
|
||||||
|
'--path' => $vars['path'],
|
||||||
|
'--locale' => $vars['wordpress_locale'],
|
||||||
|
);
|
||||||
|
$dl_arg = '';
|
||||||
|
foreach ($dl as $n => $v) {
|
||||||
|
if ($v) {
|
||||||
|
$dl_arg .= " $n=" . escapeshellarg($v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Running command: %s',
|
||||||
|
array("$L_ALTERNC_WP_BIN core download $dl_arg"));
|
||||||
|
$r = shell_exec("$L_ALTERNC_WP_BIN core download $dl_arg 2>&1");
|
||||||
|
$cfg = array(
|
||||||
|
'--path' => $vars['path'],
|
||||||
|
'--dbname' => $vars['db_name'],
|
||||||
|
'--dbuser' => $vars['db_user'],
|
||||||
|
'--dbhost' => $vars['db_host'],
|
||||||
|
'--dbpass' => $vars['db_pass'],
|
||||||
|
'--locale' => $vars['wordpress_locale'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$cfg_arg = '';
|
||||||
|
foreach ($cfg as $n => $v) {
|
||||||
|
if (!$v) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$cfg_arg .= ' ' . "$n=" . escapeshellarg($v);
|
||||||
|
}
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Running command: %s',
|
||||||
|
array("$L_ALTERNC_WP_BIN config create $cfg_arg"));
|
||||||
|
$r .= shell_exec("$L_ALTERNC_WP_BIN config create $cfg_arg 2>&1");
|
||||||
|
|
||||||
|
$inst = array(
|
||||||
|
'--path' => $vars['path'],
|
||||||
|
'--url' => $vars['url'],
|
||||||
|
'--title' => $vars['wordpress_title'],
|
||||||
|
'--admin_email' => $vars['wordpress_admin_mail'],
|
||||||
|
'--admin_name' => $vars['wordpress_admin_name'],
|
||||||
|
);
|
||||||
|
$inst_arg = '';
|
||||||
|
foreach ($inst as $n => $v) {
|
||||||
|
if (!$v) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$inst_arg .= ' ' . "$n=" . escapeshellarg($v);
|
||||||
|
}
|
||||||
|
$msg->raise('INFO', 'm_oci', 'Running command: %s',
|
||||||
|
array("$L_ALTERNC_WP_BIN core install $inst_arg"));
|
||||||
|
$r .= shell_exec("$L_ALTERNC_WP_BIN core install $inst_arg 2>&1");
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue