From 14ab660cbf0b545b9ba17980a1b46ca282a5c024 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 24 Aug 2021 17:00:04 +0200 Subject: [PATCH] First commit --- LICENSE | 675 +++++++++++++++++++++++++++++ README.md | 84 ++++ README_fr.md | 66 +++ check_process | 29 ++ conf/app.src | 7 + conf/config.xml.php | 68 +++ conf/nginx.conf | 31 ++ conf/php-fpm.conf | 430 ++++++++++++++++++ doc/.DS_Store | Bin 0 -> 8196 bytes doc/.gitkeep | 0 doc/DISCLAIMER.md | 1 + doc/screenshots/.DS_Store | Bin 0 -> 6148 bytes doc/screenshots/.gitkeep | 0 doc/screenshots/Designer.jpeg | Bin 0 -> 172644 bytes manifest.json | 74 ++++ scripts/_common.sh | 77 ++++ scripts/backup | 78 ++++ scripts/change_url | 105 +++++ scripts/install | 156 +++++++ scripts/remove | 78 ++++ scripts/restore | 113 +++++ scripts/upgrade | 126 ++++++ sources/extra_files/app/.gitignore | 2 + sources/patches/.gitignore | 2 + 24 files changed, 2202 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README_fr.md create mode 100644 check_process create mode 100644 conf/app.src create mode 100644 conf/config.xml.php create mode 100644 conf/nginx.conf create mode 100644 conf/php-fpm.conf create mode 100644 doc/.DS_Store create mode 100644 doc/.gitkeep create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/screenshots/.DS_Store create mode 100644 doc/screenshots/.gitkeep create mode 100644 doc/screenshots/Designer.jpeg create mode 100644 manifest.json create mode 100644 scripts/_common.sh create mode 100755 scripts/backup create mode 100644 scripts/change_url create mode 100755 scripts/install create mode 100755 scripts/remove create mode 100755 scripts/restore create mode 100644 scripts/upgrade create mode 100644 sources/extra_files/app/.gitignore create mode 100644 sources/patches/.gitignore diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..181b4ae --- /dev/null +++ b/LICENSE @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Matomo Copyright (C) 2007-2018 Matomo.org + + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d58287b --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ + +# Packaging your an app, starting from this example + +- Copy this app before working on it, using the ['Use this template'](https://github.com/YunoHost/example_ynh/generate) button on the Github repo. +- Edit the `manifest.json` with app specific info. +- Edit the `install`, `upgrade`, `remove`, `backup`, and `restore` scripts, and any relevant conf files in `conf/`. + - Using the [script helpers documentation.](https://yunohost.org/packaging_apps_helpers) +- Add a `LICENSE` file for the package. +- Edit `doc/DISCLAIMER*.md` +- The `README.md` files are to be automatically generated by https://github.com/YunoHost/apps/tree/master/tools/README-generator + + +--- + + + +# Example app for YunoHost + +[![Integration level](https://dash.yunohost.org/integration/example.svg)](https://dash.yunohost.org/appci/app/example) ![](https://ci-apps.yunohost.org/ci/badges/example.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/example.maintain.svg) +[![Install example with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=example) + +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install example quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* + +## Overview + +Explain in *a few (10~15) words* the purpose of the app or what it actually does (it is meant to give a rough idea to users browsing a catalog of 100+ apps) + +**Shipped version:** 1.0~ynh1 + +**Demo:** https://demo.example.com + + +## Screenshots + + + ![](./doc/screenshots/example.jpg) + + + + +## Disclaimers / important information + +* Any known limitations, constrains or stuff not working, such as (but not limited to): + * requiring a full dedicated domain ? + * architectures not supported ? + * not-working single-sign on or LDAP integration ? + * the app requires an important amount of RAM / disk / .. to install or to work properly + * etc... + +* Other infos that people should be aware of, such as: + * any specific step to perform after installing (such as manually finishing the install, specific admin credentials, ...) + * how to configure / administrate the application if it ain't obvious + * upgrade process / specificities / things to be aware of ? + * security considerations ? + + + +## Documentation and resources + +* Official app website: https://example.com +* Official user documentation: https://yunohost.org/apps +* Official admin documentation: https://yunohost.org/packaging_apps +* Upstream app code repository: https://some.forge.com/example/example +* YunoHost documentation for this app: https://yunohost.org/app_example +* Report a bug: https://github.com/YunoHost-Apps/example_ynh/issues + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/example_ynh/tree/testing). + +To try the testing branch, please proceed like that. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +or +sudo yunohost app upgrade example -u https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..d856bf9 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,66 @@ +# Example app pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/example.svg)](https://dash.yunohost.org/appci/app/example) ![](https://ci-apps.yunohost.org/ci/badges/example.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/example.maintain.svg) +[![Installer example avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=example) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install example quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* + +## Vue d'ensemble + +Expliquez en *quelques* (10~15) mots l'utilité de l'app ou ce qu'elle fait (l'objectif est de donner une idée grossière pour des utilisateurs qui naviguent dans un catalogue de 100+ apps) + +**Version incluse:** 1.0~ynh1 + +**Démo:** https://demo.example.com + + +## Captures d'écran + + + ![](./doc/screenshots/example.jpg) + + + + +## Avertissements / informations importantes + +* Any known limitations, constrains or stuff not working, such as (but not limited to): + * requiring a full dedicated domain ? + * architectures not supported ? + * not-working single-sign on or LDAP integration ? + * the app requires an important amount of RAM / disk / .. to install or to work properly + * etc... + +* Other infos that people should be aware of, such as: + * any specific step to perform after installing (such as manually finishing the install, specific admin credentials, ...) + * how to configure / administrate the application if it ain't obvious + * upgrade process / specificities / things to be aware of ? + * security considerations ? + + + +## Documentations et ressources + +* Site official de l'app : https://example.com +* Documentation officielle utilisateur: https://yunohost.org/apps +* Documentation officielle de l'admin: https://yunohost.org/packaging_apps +* Dépôt de code officiel de l'app: https://some.forge.com/example/example +* Documentation YunoHost pour cette app: https://yunohost.org/app_example +* Signaler un bug: https://github.com/YunoHost-Apps/example_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/example_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +or +sudo yunohost app upgrade example -u https://github.com/YunoHost-Apps/example_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/check_process b/check_process new file mode 100644 index 0000000..a9954a8 --- /dev/null +++ b/check_process @@ -0,0 +1,29 @@ +;; Test complet + ; Manifest + domain="domain.tld" + path="/path" + admin="john" + language="fr" + is_public=1 + password="1Strong-Password" + port="666" + ; Checks + pkg_linter=1 + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + upgrade=1 from_commit=CommitHash + backup_restore=1 + multi_instance=1 + port_already_use=0 + change_url=1 +;;; Options +Email= +Notification=none +;;; Upgrade options + ; commit=CommitHash + name=Name and date of the commit. + manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& diff --git a/conf/app.src b/conf/app.src new file mode 100644 index 0000000..04d30f3 --- /dev/null +++ b/conf/app.src @@ -0,0 +1,7 @@ +SOURCE_URL=https://sitemagic.org/index.php?SMExt=SMDownloads&SMDownloadsFile=SitemagicCMS442.zip +SOURCE_SUM=8d4e64b47e9bdcf037e523ce909392a07fe97620ac9f30772b3b1fc1542cd07a +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=zip +SOURCE_IN_SUBDIR=false +SOURCE_FILENAME= +SOURCE_EXTRACT=true diff --git a/conf/config.xml.php b/conf/config.xml.php new file mode 100644 index 0000000..61f37ca --- /dev/null +++ b/conf/config.xml.php @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..f1d5c49 --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,31 @@ +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { + + # Path to source + alias __FINALPATH__/ ; + + # Force usage of https + if ($scheme = http) { + rewrite ^ https://$server_name$request_uri? permanent; + } + + index index.php; + + # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file + client_max_body_size 50M; + + try_files $uri $uri/ index.php; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; + + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $request_filename; + } + + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; +} diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf new file mode 100644 index 0000000..b4c2372 --- /dev/null +++ b/conf/php-fpm.conf @@ -0,0 +1,430 @@ +; Start a new pool named 'www'. +; the variable $pool can be used in any directive and will be replaced by the +; pool name ('www' here) +[__NAMETOCHANGE__] + +; Per pool prefix +; It only applies on the following directives: +; - 'access.log' +; - 'slowlog' +; - 'listen' (unixsocket) +; - 'chroot' +; - 'chdir' +; - 'php_values' +; - 'php_admin_values' +; When not set, the global prefix (or /usr) applies instead. +; Note: This directive can also be relative to the global prefix. +; Default Value: none +;prefix = /path/to/pools/$pool + +; Unix user/group of processes +; Note: The user is mandatory. If the group is not set, the default user's group +; will be used. +user = __USER__ +group = __USER__ + +; The address on which to accept FastCGI requests. +; Valid syntaxes are: +; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on +; a specific port; +; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on +; a specific port; +; 'port' - to listen on a TCP socket to all addresses +; (IPv6 and IPv4-mapped) on a specific port; +; '/path/to/unix/socket' - to listen on a unix socket. +; Note: This value is mandatory. +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock + +; Set listen(2) backlog. +; Default Value: 511 (-1 on FreeBSD and OpenBSD) +;listen.backlog = 511 + +; Set permissions for unix socket, if one is used. In Linux, read/write +; permissions must be set in order to allow connections from a web server. Many +; BSD-derived systems allow connections regardless of permissions. +; Default Values: user and group are set as the running user +; mode is set to 0660 +listen.owner = www-data +listen.group = www-data +;listen.mode = 0660 +; When POSIX Access Control Lists are supported you can set them using +; these options, value is a comma separated list of user/group names. +; When set, listen.owner and listen.group are ignored +;listen.acl_users = +;listen.acl_groups = + +; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. +; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original +; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address +; must be separated by a comma. If this value is left blank, connections will be +; accepted from any ip address. +; Default Value: any +;listen.allowed_clients = 127.0.0.1 + +; Specify the nice(2) priority to apply to the pool processes (only if set) +; The value can vary from -19 (highest priority) to 20 (lower priority) +; Note: - It will only work if the FPM master process is launched as root +; - The pool processes will inherit the master process priority +; unless it specified otherwise +; Default Value: no set +; process.priority = -19 + +; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user +; or group is differrent than the master process user. It allows to create process +; core dump and ptrace the process for the pool user. +; Default Value: no +; process.dumpable = yes + +; Choose how the process manager will control the number of child processes. +; Possible Values: +; static - a fixed number (pm.max_children) of child processes; +; dynamic - the number of child processes are set dynamically based on the +; following directives. With this process management, there will be +; always at least 1 children. +; pm.max_children - the maximum number of children that can +; be alive at the same time. +; pm.start_servers - the number of children created on startup. +; pm.min_spare_servers - the minimum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is less than this +; number then some children will be created. +; pm.max_spare_servers - the maximum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is greater than this +; number then some children will be killed. +; ondemand - no children are created at startup. Children will be forked when +; new requests will connect. The following parameter are used: +; pm.max_children - the maximum number of children that +; can be alive at the same time. +; pm.process_idle_timeout - The number of seconds after which +; an idle process will be killed. +; Note: This value is mandatory. +pm = dynamic + +; The number of child processes to be created when pm is set to 'static' and the +; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. +; This value sets the limit on the number of simultaneous requests that will be +; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. +; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP +; CGI. The below defaults are based on a server without much resources. Don't +; forget to tweak pm.* to fit your needs. +; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' +; Note: This value is mandatory. +pm.max_children = 5 + +; The number of child processes created on startup. +; Note: Used only when pm is set to 'dynamic' +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 +pm.start_servers = 2 + +; The desired minimum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.min_spare_servers = 1 + +; The desired maximum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.max_spare_servers = 3 + +; The number of seconds after which an idle process will be killed. +; Note: Used only when pm is set to 'ondemand' +; Default Value: 10s +;pm.process_idle_timeout = 10s; + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. For +; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default Value: 0 +;pm.max_requests = 500 + +; The URI to view the FPM status page. If this value is not set, no URI will be +; recognized as a status page. It shows the following informations: +; pool - the name of the pool; +; process manager - static, dynamic or ondemand; +; start time - the date and time FPM has started; +; start since - number of seconds since FPM has started; +; accepted conn - the number of request accepted by the pool; +; listen queue - the number of request in the queue of pending +; connections (see backlog in listen(2)); +; max listen queue - the maximum number of requests in the queue +; of pending connections since FPM has started; +; listen queue len - the size of the socket queue of pending connections; +; idle processes - the number of idle processes; +; active processes - the number of active processes; +; total processes - the number of idle + active processes; +; max active processes - the maximum number of active processes since FPM +; has started; +; max children reached - number of times, the process limit has been reached, +; when pm tries to start more children (works only for +; pm 'dynamic' and 'ondemand'); +; Value are updated in real time. +; Example output: +; pool: www +; process manager: static +; start time: 01/Jul/2011:17:53:49 +0200 +; start since: 62636 +; accepted conn: 190460 +; listen queue: 0 +; max listen queue: 1 +; listen queue len: 42 +; idle processes: 4 +; active processes: 11 +; total processes: 15 +; max active processes: 12 +; max children reached: 0 +; +; By default the status page output is formatted as text/plain. Passing either +; 'html', 'xml' or 'json' in the query string will return the corresponding +; output syntax. Example: +; http://www.foo.bar/status +; http://www.foo.bar/status?json +; http://www.foo.bar/status?html +; http://www.foo.bar/status?xml +; +; By default the status page only outputs short status. Passing 'full' in the +; query string will also return status for each pool process. +; Example: +; http://www.foo.bar/status?full +; http://www.foo.bar/status?json&full +; http://www.foo.bar/status?html&full +; http://www.foo.bar/status?xml&full +; The Full status returns for each process: +; pid - the PID of the process; +; state - the state of the process (Idle, Running, ...); +; start time - the date and time the process has started; +; start since - the number of seconds since the process has started; +; requests - the number of requests the process has served; +; request duration - the duration in µs of the requests; +; request method - the request method (GET, POST, ...); +; request URI - the request URI with the query string; +; content length - the content length of the request (only with POST); +; user - the user (PHP_AUTH_USER) (or '-' if not set); +; script - the main script called (or '-' if not set); +; last request cpu - the %cpu the last request consumed +; it's always 0 if the process is not in Idle state +; because CPU calculation is done when the request +; processing has terminated; +; last request memory - the max amount of memory the last request consumed +; it's always 0 if the process is not in Idle state +; because memory calculation is done when the request +; processing has terminated; +; If the process is in Idle state, then informations are related to the +; last request the process has served. Otherwise informations are related to +; the current request being served. +; Example output: +; ************************ +; pid: 31330 +; state: Running +; start time: 01/Jul/2011:17:53:49 +0200 +; start since: 63087 +; requests: 12808 +; request duration: 1250261 +; request method: GET +; request URI: /test_mem.php?N=10000 +; content length: 0 +; user: - +; script: /home/fat/web/docs/php/test_mem.php +; last request cpu: 0.00 +; last request memory: 0 +; +; Note: There is a real-time FPM status monitoring sample web page available +; It's available in: /usr/share/php/7.0/fpm/status.html +; +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +;pm.status_path = /status + +; The ping URI to call the monitoring page of FPM. If this value is not set, no +; URI will be recognized as a ping page. This could be used to test from outside +; that FPM is alive and responding, or to +; - create a graph of FPM availability (rrd or such); +; - remove a server from a group if it is not responding (load balancing); +; - trigger alerts for the operating team (24/7). +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +;ping.path = /ping + +; This directive may be used to customize the response of a ping request. The +; response is formatted as text/plain with a 200 response code. +; Default Value: pong +;ping.response = pong + +; The access log file +; Default: not set +;access.log = log/$pool.access.log + +; The access log format. +; The following syntax is allowed +; %%: the '%' character +; %C: %CPU used by the request +; it can accept the following format: +; - %{user}C for user CPU only +; - %{system}C for system CPU only +; - %{total}C for user + system CPU (default) +; %d: time taken to serve the request +; it can accept the following format: +; - %{seconds}d (default) +; - %{miliseconds}d +; - %{mili}d +; - %{microseconds}d +; - %{micro}d +; %e: an environment variable (same as $_ENV or $_SERVER) +; it must be associated with embraces to specify the name of the env +; variable. Some exemples: +; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e +; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e +; %f: script filename +; %l: content-length of the request (for POST request only) +; %m: request method +; %M: peak of memory allocated by PHP +; it can accept the following format: +; - %{bytes}M (default) +; - %{kilobytes}M +; - %{kilo}M +; - %{megabytes}M +; - %{mega}M +; %n: pool name +; %o: output header +; it must be associated with embraces to specify the name of the header: +; - %{Content-Type}o +; - %{X-Powered-By}o +; - %{Transfert-Encoding}o +; - .... +; %p: PID of the child that serviced the request +; %P: PID of the parent of the child that serviced the request +; %q: the query string +; %Q: the '?' character if query string exists +; %r: the request URI (without the query string, see %q and %Q) +; %R: remote IP address +; %s: status (response code) +; %t: server time the request was received +; it can accept a strftime(3) format: +; %d/%b/%Y:%H:%M:%S %z (default) +; The strftime(3) format must be encapsuled in a %{}t tag +; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t +; %T: time the log has been written (the request has finished) +; it can accept a strftime(3) format: +; %d/%b/%Y:%H:%M:%S %z (default) +; The strftime(3) format must be encapsuled in a %{}t tag +; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t +; %u: remote user +; +; Default: "%R - %u %t \"%m %r\" %s" +;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" + +; The log file for slow requests +; Default Value: not set +; Note: slowlog is mandatory if request_slowlog_timeout is set +;slowlog = log/$pool.log.slow + +; The timeout for serving a single request after which a PHP backtrace will be +; dumped to the 'slowlog' file. A value of '0s' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +;request_slowlog_timeout = 0 + +; The timeout for serving a single request after which the worker process will +; be killed. This option should be used when the 'max_execution_time' ini option +; does not stop script execution for some reason. A value of '0' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +request_terminate_timeout = 1d + +; Set open file descriptor rlimit. +; Default Value: system defined value +;rlimit_files = 1024 + +; Set max core size rlimit. +; Possible Values: 'unlimited' or an integer greater or equal to 0 +; Default Value: system defined value +;rlimit_core = 0 + +; Chroot to this directory at the start. This value must be defined as an +; absolute path. When this value is not set, chroot is not used. +; Note: you can prefix with '$prefix' to chroot to the pool prefix or one +; of its subdirectories. If the pool prefix is not set, the global prefix +; will be used instead. +; Note: chrooting is a great security feature and should be used whenever +; possible. However, all PHP paths will be relative to the chroot +; (error_log, sessions.save_path, ...). +; Default Value: not set +;chroot = + +; Chdir to this directory at the start. +; Note: relative path can be used. +; Default Value: current directory or / when chroot +chdir = __FINALPATH__ + +; Redirect worker stdout and stderr into main error log. If not set, stdout and +; stderr will be redirected to /dev/null according to FastCGI specs. +; Note: on highloaded environement, this can cause some delay in the page +; process time (several ms). +; Default Value: no +;catch_workers_output = yes + +; Clear environment in FPM workers +; Prevents arbitrary environment variables from reaching FPM worker processes +; by clearing the environment in workers before env vars specified in this +; pool configuration are added. +; Setting to "no" will make all environment variables available to PHP code +; via getenv(), $_ENV and $_SERVER. +; Default Value: yes +;clear_env = no + +; Limits the extensions of the main script FPM will allow to parse. This can +; prevent configuration mistakes on the web server side. You should only limit +; FPM to .php extensions to prevent malicious users to use other extensions to +; execute php code. +; Note: set an empty value to allow all extensions. +; Default Value: .php +;security.limit_extensions = .php .php3 .php4 .php5 .php7 + +; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from +; the current environment. +; Default Value: clean env +;env[HOSTNAME] = $HOSTNAME +;env[PATH] = /usr/local/bin:/usr/bin:/bin +;env[TMP] = /tmp +;env[TMPDIR] = /tmp +;env[TEMP] = /tmp + +; Additional php.ini defines, specific to this pool of workers. These settings +; overwrite the values previously defined in the php.ini. The directives are the +; same as the PHP SAPI: +; php_value/php_flag - you can set classic ini defines which can +; be overwritten from PHP call 'ini_set'. +; php_admin_value/php_admin_flag - these directives won't be overwritten by +; PHP call 'ini_set' +; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. + +; Defining 'extension' will load the corresponding shared extension from +; extension_dir. Defining 'disable_functions' or 'disable_classes' will not +; overwrite previously defined php.ini values, but will append the new value +; instead. + +; Note: path INI options can be relative and will be expanded with the prefix +; (pool, global or /usr) + +; Default Value: nothing is defined by default except the values in php.ini and +; specified at startup with the -d argument +;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com +;php_flag[display_errors] = off +;php_admin_value[error_log] = /var/log/fpm-php.www.log +;php_admin_flag[log_errors] = on +;php_admin_value[memory_limit] = 32M + +; Common values to change to increase file upload limit +php_admin_value[upload_max_filesize] = 50M +php_admin_value[post_max_size] = 50M +; php_admin_flag[mail.add_x_header] = Off + +; Other common parameters +; php_admin_value[max_execution_time] = 600 +; php_admin_value[max_input_time] = 300 +; php_admin_value[memory_limit] = 256M +; php_admin_flag[short_open_tag] = On diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f659def13fedd7fae6d85908db950e8d6788091b GIT binary patch literal 8196 zcmeHMO>7iZ9Dl!Up)+)#(~4#J+=WVuNJ4 zJ(v>XN0ft6@uWecUNkX8QBP>%SBwXhNMZy$c<^9Myl85I7ys|QS)?s%;>8e|m%R6z zdH;`@`R(t`>wn4^Lr1~d!C0IzrcoDYR?~2eChVdwYO!#pf)EtX7-uf?*#z@gu*f@_ zh!}_%h!}_%h!}_%xE>gwJzF%b%)YOz(HJohF>pgNAl?s2>Hv&mO<)^b#j_n66Ef)~0s9dtNO4FBB z8_VO}2fFVudeU~zbNlT__^4UqPk7S@=(I1-i#DGg%6U#<()CBp+FZuT6`V}K_c@Mm zrnwqFm-if}&-3lT_T1rgz-NL|qIstDi0|ctPMK`fGz&hzk5ewY$h#;brK%HGJ2WNI z_=kDkCu~Ti)br|Ztyr~gx`8~{ZP^N?X1HGr)?{k7|!@P?pn4x zK4M$k4eT+S=k;1#)(70oB$rX~)$z5O*`TEhS^J@a9XzaZZHOmz^F8gTMR(HcSt8O> z{u|=AXxb4m-FJy|IZ5~JtLap{Lo>h7?ibhY$@sycDenG#SNk<>SXlO1 z7Pqv9k}4WfThyU^WZe|+7{D;H$bn-F#}J@^Y0ThJJc+09G@ilp zcnL4#6}*Z!@h;BbeSCn=@io4|Ib6gg{Dfce8-7>!84EW9)?0c6g_t8Ouj;8#)hDm5 z>V#Bv<8`m=KxUN?pmtt(Z`_nfm_m8#w6Q5+n4ra>OY3b-WQ~Qk?JZ=hpmm^Z zyKXlU<`R;;ifr3$7-l7{31w}+ldMZg{mR;n6l%^`*=l4~8- zkYKl<8N1Mq{piL)^q?1qk;Vv);3&y;95x=5k}XQf9>-&N98ZvNpT%={0VnYyPLXV1 z!|QkhZ{sxHkpe!8kMJ=*!Ke5PU*S7kS|Ht?1=9VYymX8GdDrpWaq=h$e|~Uu7BTQI z7!Z3uwYaGN?<)WOUphrY#6ZNr|C0e!cJ+64(6g1>RbpgIQh$KDXu@w+p$wrxxQKaK ljuT$_hanv&Lt84uS%qYw_TPU95P!Tz`@bYV8g5ty{sN%ww^slF literal 0 HcmV?d00001 diff --git a/doc/.gitkeep b/doc/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..bc8802a --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1 @@ +The default username and password is "admin". Make sure you change at least the password immediately under Admin > Settings diff --git a/doc/screenshots/.DS_Store b/doc/screenshots/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 z 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ÌqM@RfCjk1y%)jj1Y8ZE!b?BhK| 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 4.2.4" + }, + "multi_instance": true, + "services": [ + "nginx", + "php7.3-fpm" + ], + "arguments": { + "install" : [ + { + "name": "domain", + "type": "domain", + "example": "example.com" + }, + { + "name": "path", + "type": "path", + "example": "/sitemagic", + "default": "/sitemagic" + }, + { + "name": "admin", + "type": "user", + "example": "johndoe" + }, + { + "name": "is_public", + "type": "boolean", + "default": true + }, + { + "name": "language", + "type": "string", + "ask": { + "en": "Choose the application language", + "fr": "Choisissez la langue de l'application" + }, + "choices": ["da", "de", "el", "fr", "en", "sr"], + "default": "fr" + }, + { + "name": "password", + "type": "password", + "help": { + "en": "Use the help field to add an information for the admin about this question.", + "fr": "Utilisez le champ aide pour ajouter une information à l'intention de l'administrateur à propos de cette question." + }, + "example": "Choose a password" + } + ] + } +} diff --git a/scripts/_common.sh b/scripts/_common.sh new file mode 100644 index 0000000..fe87984 --- /dev/null +++ b/scripts/_common.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +YNH_PHP_VERSION="7.3" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= + + +# Send an email to inform the administrator +# +# usage: ynh_send_readme_to_admin app_message [recipients] +# | arg: app_message - The message to send to the administrator. +# | arg: recipients - The recipients of this email. Use spaces to separate multiples recipients. - default: root +# example: "root admin@domain" +# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you +# example: "root admin@domain user1 user2" +ynh_send_readme_to_admin() { + local app_message="${1:-...No specific information...}" + local recipients="${2:-root}" + + # Retrieve the email of users + find_mails () { + local list_mails="$1" + local mail + local recipients=" " + # Read each mail in argument + for mail in $list_mails + do + # Keep root or a real email address as it is + if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@" + then + recipients="$recipients $mail" + else + # But replace an user name without a domain after by its email + if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null) + then + recipients="$recipients $mail" + fi + fi + done + echo "$recipients" + } + recipients=$(find_mails "$recipients") + + local mail_subject="☁️🆈🅽🅷☁️: \`$app\` has important message for you" + + local mail_message="This is an automated message from your beloved YunoHost server. +Specific information for the application $app. +$app_message +--- +Automatic diagnosis data from YunoHost +$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')" + + # Define binary to use for mail command + if [ -e /usr/bin/bsd-mailx ] + then + local mail_bin=/usr/bin/bsd-mailx + else + local mail_bin=/usr/bin/mail.mailutils + fi + + # Send the email to the recipients + echo "$mail_message" | $mail_bin -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" "$recipients" +} diff --git a/scripts/backup b/scripts/backup new file mode 100755 index 0000000..d8e7413 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,78 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_print_info --message="Loading installation settings..." + +app=$YNH_APP_INSTANCE_NAME + +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +domain=$(ynh_app_setting_get --app=$app --key=domain) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) + +#================================================= +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup --src_path="$final_path" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# BACKUP THE PHP-FPM CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" + +#================================================= +# SPECIFIC BACKUP +#================================================= +# BACKUP LOGROTATE +#================================================= + +ynh_backup --src_path="/etc/logrotate.d/$app" + +#================================================= +# BACKUP THE MYSQL DATABASE +#================================================= +ynh_print_info --message="Backing up the MySQL database..." + +ynh_mysql_dump_db --database="$db_name" > db.sql + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url new file mode 100644 index 0000000..ff06606 --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,105 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +old_domain=$YNH_APP_OLD_DOMAIN +old_path=$YNH_APP_OLD_PATH + +new_domain=$YNH_APP_NEW_DOMAIN +new_path=$YNH_APP_NEW_PATH + +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +# Needed for helper "ynh_add_nginx_config" +final_path=$(ynh_app_setting_get --app=$app --key=final_path) + +#================================================= +# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# CHECK WHICH PARTS SHOULD BE CHANGED +#================================================= + +change_domain=0 +if [ "$old_domain" != "$new_domain" ] +then + change_domain=1 +fi + +change_path=0 +if [ "$old_path" != "$new_path" ] +then + change_path=1 +fi + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 + +nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf + +# Change the path in the NGINX config file +if [ $change_path -eq 1 ] +then + # Make a backup of the original NGINX config file if modified + ynh_backup_if_checksum_is_different --file="$nginx_conf_path" + # Set global variables for NGINX helper + domain="$old_domain" + path_url="$new_path" + # Create a dedicated NGINX config + ynh_add_nginx_config +fi + +# Change the domain for NGINX +if [ $change_domain -eq 1 ] +then + # Delete file checksum for the old conf file location + ynh_delete_file_checksum --file="$nginx_conf_path" + mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf + # Store file checksum for the new config file location + ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +fi + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install new file mode 100755 index 0000000..2020239 --- /dev/null +++ b/scripts/install @@ -0,0 +1,156 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= + +domain=$YNH_APP_ARG_DOMAIN +path_url=$YNH_APP_ARG_PATH +admin=$YNH_APP_ARG_ADMIN +is_public=$YNH_APP_ARG_IS_PUBLIC +language=$YNH_APP_ARG_LANGUAGE +password=$YNH_APP_ARG_PASSWORD + +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS +#================================================= +ynh_script_progression --message="Validating installation parameters..." --weight=1 + +final_path=/var/www/$app +test ! -e "$final_path" || ynh_die --message="This path already contains a folder" + +# Register (book) web path +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url + +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= +ynh_script_progression --message="Storing installation settings..." --weight=1 + +ynh_app_setting_set --app=$app --key=domain --value=$domain +ynh_app_setting_set --app=$app --key=path --value=$path_url +ynh_app_setting_set --app=$app --key=admin --value=$admin +ynh_app_setting_set --app=$app --key=language --value=$language + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." --weight=1 + +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# CREATE A MYSQL DATABASE +#================================================= +ynh_script_progression --message="Creating a MySQL database..." --weight=2 + +db_name=$(ynh_sanitize_dbid --db_name=$app) +db_user=$db_name +ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= +ynh_script_progression --message="Setting up source files..." --weight=3 + +ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# Download, check integrity, uncompress and patch the source from app.src +ynh_setup_source --dest_dir="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring NGINX web server..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +#================================================= +# PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring PHP-FPM..." --weight=1 + +# Create a dedicated PHP-FPM config +ynh_add_fpm_config + +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 + +ynh_add_config --template="../conf/config.xml.php" --destination="$final_path/config.xml.php" + +chmod 400 "$final_path/config.xml.php" +chown $app:$app "$final_path/config.xml.php" + +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Configuring permissions..." --weight=2 + +# Make app public if necessary +if [ $is_public -eq 1 ] +then + ynh_permission_update --permission="main" --add="visitors" +fi + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=2 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# SEND A README FOR THE ADMIN +#================================================= +ynh_script_progression --message="Sending a readme for the admin..." --weight=1 + +message="SitemagicCMS was successfully installed :) + +Please open your $app domain: https://$domain$path_url + + +Details for MySQL database : + +Database login: $app +Database name: $app +Database password: $db_pwd + +If you are facing any problem or want to improve this app, please open a new issue here: https://github.com/YunoHost-Apps/SitemagicCMS_ynh/issues" + +ynh_send_readme_to_admin "$message" + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove new file mode 100755 index 0000000..01189db --- /dev/null +++ b/scripts/remove @@ -0,0 +1,78 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name + +#================================================= +# REMOVE THE MYSQL DATABASE +#================================================= +ynh_script_progression --message="Removing the MySQL database..." --weight=1 + +# Remove a database if it exists, along with the associated user +ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name + +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." --weight=1 + +# Remove the app-specific logrotate config +ynh_remove_logrotate + +#================================================= +# REMOVE APP MAIN DIR +#================================================= +ynh_script_progression --message="Removing app main directory..." --weight=1 + +# Remove the app directory securely +ynh_secure_remove --file="$final_path" + +#================================================= +# REMOVE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 + +# Remove the dedicated NGINX config +ynh_remove_nginx_config + +#================================================= +# REMOVE PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=1 + +# Remove the dedicated PHP-FPM config +ynh_remove_fpm_config + +#================================================= +# GENERIC FINALIZATION +#================================================= +# REMOVE DEDICATED USER +#================================================= +ynh_script_progression --message="Removing the dedicated system user..." --weight=1 + +# Delete a system user +ynh_system_user_delete --username=$app + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore new file mode 100755 index 0000000..18daf2b --- /dev/null +++ b/scripts/restore @@ -0,0 +1,113 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + #### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +ynh_script_progression --message="Validating restoration parameters..." --weight=1 + +ynh_webpath_available --domain=$domain --path_url=$path_url \ + || ynh_die --message="Path not available: ${domain}${path_url}" +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " + +#================================================= +# STANDARD RESTORATION STEPS +#================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." --weight=3 + +ynh_restore_file --origin_path="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + +#================================================= +# RESTORE THE PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the PHP-FPM configuration..." --weight=2 + +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" + +#================================================= +# RESTORE THE MYSQL DATABASE +#================================================= +ynh_script_progression --message="Restoring the MySQL database..." --weight=1 + +db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql + +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 + +ynh_systemd_action --service_name=php$phpversion-fpm --action=reload +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100644 index 0000000..73e152f --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,126 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) + +#================================================= +# CHECK VERSION +#================================================= + +upgrade_type=$(ynh_check_app_version_changed) + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# STANDARD UPGRADE STEPS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --time --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 + +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." --time --weight=1 + + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$final_path" --keep="config.xml.php $final_path/data $final_path/files $final_path/templates/*" +fi + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +#================================================= +# PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=2 + +# Create a dedicated PHP-FPM config +ynh_add_fpm_config + +#================================================= +# GENERIC FINALIZATION +#================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 + +# Use logrotate to manage app-specific logfile(s) +ynh_use_logrotate --non-append + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Upgrade of $app completed" --last diff --git a/sources/extra_files/app/.gitignore b/sources/extra_files/app/.gitignore new file mode 100644 index 0000000..783a4ae --- /dev/null +++ b/sources/extra_files/app/.gitignore @@ -0,0 +1,2 @@ +*~ +*.sw[op] diff --git a/sources/patches/.gitignore b/sources/patches/.gitignore new file mode 100644 index 0000000..783a4ae --- /dev/null +++ b/sources/patches/.gitignore @@ -0,0 +1,2 @@ +*~ +*.sw[op]