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