1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/monica_ynh.git synced 2024-09-03 19:46:23 +02:00

Merge pull request #16 from anmol26s/master

Updated app to working state
This commit is contained in:
Sebastian Gumprich 2018-05-29 11:45:41 +02:00 committed by GitHub
commit 70e4dc5c9a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 409 additions and 580 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

145
LICENSE
View file

@ -1,5 +1,5 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
@ -7,17 +7,15 @@
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
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
our General Public Licenses are 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.
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
@ -26,44 +24,34 @@ 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.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
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.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
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.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
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.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
@ -72,7 +60,7 @@ modification follow.
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@ -549,35 +537,45 @@ 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.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
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
under version 3 of the GNU 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.
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
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
the GNU Affero 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
Program specifies that a certain numbered version of the GNU Affero 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
GNU Affero 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
versions of the GNU Affero 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.
@ -631,44 +629,33 @@ 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}
The software is called Monica and is a personal relationship management system.
Copyright (C) 2017 Regis Freyd
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
it under the terms of the GNU Affero 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.
GNU Affero General Public License for more details.
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
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:
{project} Copyright (C) {year} {fullname}
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".
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
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
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View file

@ -1,28 +1,44 @@
# Unmaintained
This project is unmaintained. If anyone wants to take over, please open an issue!
# Monica app for YunoHost
[![Installer Monica with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=monica)
**Shipped version:** v2.1.1
<p align="center"><img src="37693034-5783b3d6-2c93-11e8-80ea-bd78438dcd51.png"></p>
<h1 align="center">Personal Relationship Manager</h1>
- [Yunohost project](https://yunohost.org)
- [Monica](https://monicahq.com/)
- [Monica source code at Github](https://github.com/monicahq/monica)
Personal Relationship Manager - a new kind of CRM to organize interactions with your friends and family.
## Introduction
## TODO
Monica is an open-source web application to organize the interactions with your loved ones. I call it a PRM, or Personal Relationship Management. Think of it as a [CRM](https://en.wikipedia.org/wiki/Customer_relationship_management) (a popular tool used by sales teams in the corporate world) for your friends or family.
## Install
##### This app will install PHP7.1
```
sudo yunohost app install https://github.com/YunoHost-Apps/monica_ynh
```
**First User Registraion:** Visit the app **domain** after the installtion is complete to register as **first user**. After the first user is registerd the registration will be **locked**. You can open the register for all by chaning the value **APP_DISABLE_SIGNUP** to **false** in **.env**. There is **no admin interface** in the Monica app currently.
## Updae
```
sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/monica_ynh monica
```
#### Change the settigs of the app by changing the values in .env
## What works ?
* [X] Update and remove script
* [X] Upgrade script
* [X] Backup and restore script (**Need testing**)
* [X] Multi-instance (**Need testing**)
* [x] make root domain redirect to index.php
* [ ] LDAP/SSO support
* As for now, the specified admin user with the password `admin` is created in monica
* [ ] Make monica installable into subdirectory (eg. https://example.com/monica/)
* Currently it is only possible to install monica into the root of a domain (eg. https://example.com/)
* This is due to a limitation in monica, not yunohost!
* See [here](https://github.com/monicahq/monica/issues/139) for the current progress.
* [x] make root domain redirect to index.php
## Notes for Upgrading
* Check for changes in .env
## License

View file

@ -6,15 +6,10 @@
;; Test complete
; Manifest
domain="domain.tld" (DOMAIN)
path="/path" (PATH)
path="/" (PATH)
admin="john" (USER)
language="fr"
is_public=1 (PUBLIC|public=1|private=0)
admin_name="john" (USER)
admin_pass="08jtiig45f88r7" (PASSWORD)
admin_email="abc@example.com"
password="pass"
port="666" (PORT)
language="fr"
; Checks
pkg_linter=1
setup_sub_dir=0
@ -26,7 +21,7 @@
backup_restore=1
multi_instance=1
incorrect_path=0
port_already_use=1
port_already_use=0
change_url=0
;;; Levels
Level 1=auto
@ -41,3 +36,6 @@
Level 8=0
Level 9=0
Level 10=0
;;; Options
Email=
Notification=none

View file

@ -1,7 +1,8 @@
# Two choices: local|production.
APP_ENV=production
# Two choices: local|production. Use local if you want to install Monica as a
# development version. Use production otherwise.
APP_ENV=local
# true if you want to show debug information on error. For production, put this
# true if you want to show debug information on errors. For production, put this
# to false.
APP_DEBUG=false
@ -11,56 +12,71 @@ APP_DEBUG=false
# Use `php artisan key:generate` to generate a random key.
APP_KEY=ChangeMeBy32KeyLengthOrGenerated
# The URL of your application.
APP_URL=yunodomainyunopath
# Prevent information leakage by referring to IDs with hashIds instead of
# the actual IDs used in the database.
HASH_SALT=ChangeMeBy20+KeyLength
HASH_LENGTH=18
# Frequency of creation of new log files.
# Possible values: single|daily|syslog|errorlog
APP_LOG=daily
# The URL of your application.
APP_URL=
# Database information
# To keep this information secure, we urge you to change the default password
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
# You can use mysql unix socket if available, it overrides DB_HOST and DB_PORT values.
#DB_UNIX_SOCKET=/var/run/mysqld/mysqld.sock
DB_DATABASE=yunobase
DB_USERNAME=yunouser
DB_PASSWORD=yunopass
DB_PREFIX=
DB_TEST_DATABASE=monica_test
DB_TEST_USERNAME=homestead
DB_TEST_PASSWORD=secret
# Mail credentials used to send emails from the application.
MAIL_DRIVER=smtp
MAIL_DRIVER=mail
MAIL_HOST=127.0.0.1
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS=yunomail
MAIL_FROM_NAME="Monica@Yunohost"
MAIL_FROM_ADDRESS=monica@yunodomain
MAIL_FROM_NAME="Monica"
APP_EMAIL_NEW_USERS_NOTIFICATION=yunomail
# Default timezone for new users. Users can change this setting inside the
# application at their leisure.
# Must be exactly one of the timezones used in this list:
# https://github.com/monicahq/monica/blob/master/resources/views/settings/index.blade.php#L70
APP_DEFAULT_TIMEZONE=America/New_York
APP_DEFAULT_TIMEZONE=US/Eastern
# Default locale used in the application.
APP_DEFAULT_LOCALE=language
# Ability to disable signups on your instance. Can be true or false. Default to false.
APP_DISABLE_SIGNUP=true
# Specific to the hosted version on .com. You probably don't need those.
# Let them empty if you don't need them.
GOOGLE_ANALYTICS_APP_ID=
INTERCOM_APP_ID=
SENTRY_APP_ID=
# Set trusted proxy IP addresses.
# To trust all proxies that connect directly to your server, use a "*".
# To trust one or more specific proxies that connect directly to your server, use a comma separated list of IP addresses.
APP_TRUSTED_PROXIES=
# Frequency of creation of new log files. Logs are written when an error occurs.
# Refer to config/logging.php for the possible values.
LOG_CHANNEL=daily
# Error tracking. Specific to hosted version on .com. You probably don't need
# those.
SENTRY_SUPPORT=false
SENTRY_DSN=
# Send a daily ping to https://version.monicahq.com to check if a new version
# is available. When a new version is detected, you will have a message in the
# UI, as well as the release notes for the new changes. Can be true or false.
# Default to true.
CHECK_VERSION=false
CHECK_VERSION=true
# Have access to paid features available on https://monicahq.com, for free.
# Can be true or false. Default to false.
@ -72,12 +88,43 @@ REQUIRES_SUBSCRIPTION=false
# Leave blank unless you know what you are doing.
STRIPE_KEY=
STRIPE_SECRET=
PAID_PLAN_FRIENDLY_NAME=
PAID_PLAN_ID=
PAID_PLAN_PRICE=
PAID_PLAN_MONTHLY_FRIENDLY_NAME=
PAID_PLAN_MONTHLY_ID=
PAID_PLAN_MONTHLY_PRICE=
PAID_PLAN_ANNUAL_FRIENDLY_NAME=
PAID_PLAN_ANNUAL_ID=
PAID_PLAN_ANNUAL_PRICE=
# Change this only if you know what you are doing
CACHE_DRIVER=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
# Default filesystem to store uploaded files.
# Possible values: public|s3
DEFAULT_FILESYSTEM=public
# AWS keys for S3 when using this storage method
AWS_KEY=
AWS_SECRET=
AWS_REGION=us-east-1
AWS_BUCKET=
AWS_SERVER=
# Allow Two Factor Authentication feature on your instance
2FA_ENABLED=false
# CLIENT ID and SECRET used for the official mobile application
# This is to make sure that only the mobile application that you approve can
# access the route to let your users sign in with their credentials
MOBILE_CLIENT_ID=
MOBILE_CLIENT_SECRET=
# Allow to access general statistics about your instance through a public API
# call
ALLOW_STATISTICS_THROUGH_PUBLIC_API_ACCESS=false
# Indicates that each user in the instance must comply to international policies
# like CASL or GDPR
POLICY_COMPLIANT=true

View file

@ -1,41 +0,0 @@
<?php
use App\Kid;
use App\Event;
use App\Contact;
use App\Reminder;
use Carbon\Carbon;
use Faker\Factory as Faker;
use App\Helpers\RandomHelper;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class CreateUser extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// populate account table
$accountID = DB::table('accounts')->insertGetId([
'api_key' => str_random(30),
]);
// populate user table
$userId = DB::table('users')->insertGetId([
'account_id' => $accountID,
'first_name' => 'yuno_firstname',
'last_name' => 'yuno_lastname',
'email' => 'yuno_email',
'password' => bcrypt('admin'),
'timezone' => 'America/New_York',
'remember_token' => str_random(10),
]);
$faker = Faker::create();
}
}

View file

@ -1,6 +1,6 @@
SOURCE_URL=https://github.com/monicahq/monica/archive/v2.0.1.tar.gz
SOURCE_SUM=ca604063ce0e99576fc813fb7a5f3f34d3dec906d7ce214f3e4ae55f7b48b804
SOURCE_URL=https://github.com/monicahq/monica/archive/v2.1.1.tar.gz
SOURCE_SUM=be470d407c19854f08c1f8ff12829df0d36945a7923d78039abc63650105ac71
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=v2.0.1.tar.gz
SOURCE_FILENAME=v2.1.1.tar.gz

View file

@ -1,5 +1,5 @@
location ^~ YNH_EXAMPLE_PATH {
alias YNH_WWW_PATH;
location ^~ __PATH__ {
alias __FINALPATH__/public/;
try_files $uri $uri/ @monica;
index index.php;
# Force https
@ -8,7 +8,7 @@ location ^~ YNH_EXAMPLE_PATH {
}
location ~ \.php {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_pass unix:/var/run/php7.1-fpm-__NAME__.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;

View file

@ -1,7 +1,7 @@
; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[YNH_WWW_APP]
[__NAMETOCHANGE__]
; Per pool prefix
; It only applies on the following directives:
@ -24,7 +24,7 @@
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm-YNH_WWW_APP.sock
listen = /var/run/php7.1-fpm-__NAMETOCHANGE__.sock
; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
@ -50,8 +50,8 @@ listen.mode = 0600
; 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 = www-data
group = www-data
user = __USER__
group = __USER__
; Choose how the process manager will control the number of child processes.
; Possible Values:
@ -170,7 +170,7 @@ request_slowlog_timeout = 5s
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
slowlog = /var/log/nginx/YNH_WWW_APP.slow.log
slowlog = /var/log/nginx/__NAMETOCHANGE__.slow.log
; Set open file descriptor rlimit.
; Default Value: system defined value
@ -195,7 +195,7 @@ rlimit_core = 0
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
chdir = /var/www/YNH_WWW_ALIAS
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.
@ -238,12 +238,12 @@ catch_workers_output = yes
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
# Common values to change to increase file upload limit
; Common values to change to increase file upload limit
;php_value[upload_max_filesize] = 50M
;php_value[post_max_size] = 50M
;php_value[mail.add_x_header] = Off
# Other common parameters
; Other common parameters
;php_value[max_execution_time] = 600
;php_value[max_input_time] = 300
;php_value[memory_limit] = 256M

View file

@ -1 +0,0 @@
yunohost app install /vagrant/monica_ynh/ --debug -n -a "domain=monica.ynh.local&path=/&admin=basti&is_public=0&language=en"

View file

@ -7,18 +7,19 @@
},
"url": "https://monica.com",
"license": "GPL-3.0",
"version": "2.0",
"version": "2.1.1",
"maintainer": {
"name": "Sebastian Gumprich",
"email": "yunohost@gumpri.ch",
"url": "http://github.com/rndmh3ro/monica_ynh"
},
"requirements": {
"yunohost": ">> 2.7.0"
"yunohost": ">> 2.7.2"
},
"multi_instance": true,
"services": [
"nginx",
"php7.1",
"mysql"
],
"arguments": {
@ -32,17 +33,6 @@
},
"example": "monica.com"
},
{
"name": "path",
"type": "path",
"ask": {
"en": "Currently it's only possible to install Monica on the root of a domain, eg. monica.example.com",
"fr": "Attention: Only install Monica on the domain root, e.g. monica.example.com"
},
"example": "/",
"default": "/",
"choices": ["/"]
},
{
"name": "admin",
"type": "user",
@ -59,7 +49,7 @@
"en": "Is it a public application?",
"fr": "Est-ce une application publique ?"
},
"default": false
"default": true
},
{
"name": "language",
@ -67,7 +57,7 @@
"en": "Choose the application language",
"fr": "Choisissez la langue de l'application"
},
"choices": ["fr", "en"],
"choices": ["cs","de","en","es","fr","he","it","nl","pt","ru","zh"],
"default": "en"
}
]

View file

@ -4,49 +4,16 @@
# YUNOHOST 2.7 FORTHCOMING HELPERS
# =============================================================================
# Create a dedicated nginx config
#
# usage: ynh_add_nginx_config
ynh_add_nginx_config () {
finalnginxconf="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_backup_if_checksum_is_different "$finalnginxconf"
sudo cp ../conf/nginx.conf "$finalnginxconf"
# To avoid a break by set -u, use a void substitution ${var:-}. If the variable is not set, it's simply set with an empty variable.
# Substitute in a nginx config file only if the variable is not empty
if test -n "${path_url:-}"; then
ynh_replace_string "__PATH__" "$path_url" "$finalnginxconf"
fi
if test -n "${domain:-}"; then
ynh_replace_string "__DOMAIN__" "$domain" "$finalnginxconf"
fi
if test -n "${port:-}"; then
ynh_replace_string "__PORT__" "$port" "$finalnginxconf"
fi
if test -n "${app:-}"; then
ynh_replace_string "__NAME__" "$app" "$finalnginxconf"
fi
if test -n "${final_path:-}"; then
ynh_replace_string "__FINALPATH__" "$final_path" "$finalnginxconf"
fi
ynh_store_file_checksum "$finalnginxconf"
sudo systemctl reload nginx
}
# Remove the dedicated nginx config
#
# usage: ynh_remove_nginx_config
ynh_remove_nginx_config () {
ynh_secure_remove "/etc/nginx/conf.d/$domain.d/$app.conf"
sudo systemctl reload nginx
}
# Create a dedicated php-fpm config
#
# usage: ynh_add_fpm_config
ynh_add_fpm_config () {
finalphpconf="/etc/php5/fpm/pool.d/$app.conf"
ynh_add_fpm7.1_config () {
# Configure PHP-FPM 7.1 by default
local fpm_config_dir="/etc/php/7.1/fpm"
local fpm_service="php7.1-fpm"
ynh_app_setting_set $app fpm_config_dir "$fpm_config_dir"
ynh_app_setting_set $app fpm_service "$fpm_service"
finalphpconf="$fpm_config_dir/pool.d/$app.conf"
ynh_backup_if_checksum_is_different "$finalphpconf"
sudo cp ../conf/php-fpm.conf "$finalphpconf"
ynh_replace_string "__NAMETOCHANGE__" "$app" "$finalphpconf"
@ -57,59 +24,27 @@ ynh_add_fpm_config () {
if [ -e "../conf/php-fpm.ini" ]
then
finalphpini="/etc/php5/fpm/conf.d/20-$app.ini"
finalphpini="$fpm_config_dir/conf.d/20-$app.ini"
ynh_backup_if_checksum_is_different "$finalphpini"
sudo cp ../conf/php-fpm.ini "$finalphpini"
sudo chown root: "$finalphpini"
ynh_store_file_checksum "$finalphpini"
fi
sudo systemctl reload php5-fpm
sudo systemctl reload $fpm_service
}
# Remove the dedicated php-fpm config
#
# usage: ynh_remove_fpm_config
ynh_remove_fpm_config () {
ynh_secure_remove "/etc/php5/fpm/pool.d/$app.conf"
ynh_secure_remove "/etc/php5/fpm/conf.d/20-$app.ini" 2>&1
sudo systemctl reload php5-fpm
# usage: ynh_remove_fpm7.1_config
ynh_remove_fpm7.1_config () {
local fpm_config_dir=$(ynh_app_setting_get $app fpm_config_dir)
local fpm_service=$(ynh_app_setting_get $app fpm_service)
ynh_secure_remove "$fpm_config_dir/pool.d/$app.conf"
ynh_secure_remove "$fpm_config_dir/conf.d/20-$app.ini" 2>&1
sudo systemctl reload $fpm_service
}
# Create a dedicated systemd config
#
# usage: ynh_add_systemd_config
ynh_add_systemd_config () {
finalsystemdconf="/etc/systemd/system/$app.service"
ynh_backup_if_checksum_is_different "$finalsystemdconf"
sudo cp ../conf/systemd.service "$finalsystemdconf"
# To avoid a break by set -u, use a void substitution ${var:-}. If the variable is not set, it's simply set with an empty variable.
# Substitute in a nginx config file only if the variable is not empty
if test -n "${final_path:-}"; then
ynh_replace_string "__FINALPATH__" "$final_path" "$finalsystemdconf"
fi
if test -n "${app:-}"; then
ynh_replace_string "__APP__" "$app" "$finalsystemdconf"
fi
ynh_store_file_checksum "$finalsystemdconf"
sudo chown root: "$finalsystemdconf"
sudo systemctl enable $app
sudo systemctl daemon-reload
}
# Remove the dedicated systemd config
#
# usage: ynh_remove_systemd_config
ynh_remove_systemd_config () {
finalsystemdconf="/etc/systemd/system/$app.service"
if [ -e "$finalsystemdconf" ]; then
sudo systemctl stop $app
sudo systemctl disable $app
ynh_secure_remove "$finalsystemdconf"
fi
}
# Execute a command as another user
# usage: exec_as USER COMMAND [ARG ...]
@ -157,100 +92,10 @@ init_composer() {
|| ynh_die "Unable to update monica core dependencies"
}
#
# NodeJS helpers
#
sudo_path () {
sudo env "PATH=$PATH" $@
}
# INFOS
# n (Node version management) utilise la variable PATH pour stocker le path de la version de node à utiliser.
# C'est ainsi qu'il change de version
# En attendant une généralisation de root, il est possible d'utiliser sudo avec le helper temporaire sudo_path
# Il permet d'utiliser sudo en gardant le $PATH modifié
# ynh_install_nodejs installe la version de nodejs demandée en argument, avec n
# ynh_use_nodejs active une version de nodejs dans le script courant
# 3 variables sont mises à disposition, et 2 sont stockées dans la config de l'app
# - nodejs_path: Le chemin absolu de cette version de node
# Utilisé pour des appels directs à node.
# - nodejs_version: Simplement le numéro de version de nodejs pour cette application
# - nodejs_use_version: Un alias pour charger une version de node dans le shell courant.
# Utilisé pour démarrer un service ou un script qui utilise node ou npm
# Dans ce cas, c'est $PATH qui contient le chemin de la version de node. Il doit être propagé sur les autres shell si nécessaire.
n_install_dir="/opt/node_n"
ynh_use_nodejs () {
nodejs_version=$(ynh_app_setting_get $app nodejs_version)
load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH+=\":$n_install_dir/bin\""
nodejs_use_version="n $nodejs_version"
# "Load" a version of node
eval $load_n_path; $nodejs_use_version
eval $load_n_path; sudo env "PATH=$PATH" $nodejs_use_version
# Get the absolute path of this version of node
nodejs_path="$(n bin $nodejs_version)"
# Make an alias for node use
ynh_node_exec="eval $load_n_path; n use $nodejs_version"
sudo_ynh_node_exec="eval $load_n_path; sudo env \"PATH=$PATH\" n use $nodejs_version"
}
ynh_install_nodejs () {
# Use n, https://github.com/tj/n to manage the nodejs versions
local nodejs_version="$1"
local n_install_script="https://git.io/n-install"
# Create $n_install_dir
sudo mkdir -p "$n_install_dir"
# Load n path in PATH
PATH+=":$n_install_dir/bin"
# If n is not previously setup, install it
n --version > /dev/null 2>&1 || \
( echo "Installation of N - Node.js version management" >&2; \
curl -sL $n_install_script | sudo N_PREFIX="$n_install_dir" bash -s -- -y $nodejs_version )
# Install the requested version of nodejs (except for the first installation of n, which installed the requested version of node.)
sudo env "PATH=$PATH" n $nodejs_version
# Use the real installed version. Sometimes slightly different
nodejs_version=$(node --version | cut -c2-)
# Store the ID of this app and the version of node requested for it
echo "$YNH_APP_ID:$nodejs_version" | sudo tee --append "$n_install_dir/ynh_app_version"
# Store nodejs_version into the config of this app
ynh_app_setting_set $app nodejs_version $nodejs_version
ynh_use_nodejs
}
ynh_remove_nodejs () {
ynh_use_nodejs
# Remove the line for this app
sudo sed --in-place "/$YNH_APP_ID:$nodejs_version/d" "$n_install_dir/ynh_app_version"
# If none another app uses this version of nodejs, remove it.
if ! grep --quiet "$nodejs_version" "$n_install_dir/ynh_app_version"
then
n rm $nodejs_version
fi
# If none another app uses n, remove n
if [ ! -s "$n_install_dir/ynh_app_version" ]
then
ynh_secure_remove "$n_install_dir"
sudo sed --in-place "/N_PREFIX/d" /root/.bashrc
fi
}
#
# PHP7 helpers
#
@ -274,4 +119,3 @@ ynh_remove_php7 () {
sudo apt-key del 2048R/11A06851
ynh_remove_app_dependencies php7.1 php7.1-zip php7.1-fpm php7.1-mysql php7.1-xml php7.1-intl php7.1-mbstring php7.1-gd php7.1-curl
}

View file

@ -21,7 +21,7 @@ ynh_abort_if_errors
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
path_url="/"
admin=$YNH_APP_ARG_ADMIN
is_public=$YNH_APP_ARG_IS_PUBLIC
language=$YNH_APP_ARG_LANGUAGE
@ -70,7 +70,7 @@ ynh_app_setting_set $app language $language
#=================================================
ynh_install_php7
ynh_install_nodejs 6.10.3
ynh_install_nodejs 9
#=================================================
# CREATE A MYSQL DATABASE
@ -94,9 +94,6 @@ init_composer $final_path
# NGINX CONFIGURATION
#=================================================
sudo sed -i "s@YNH_EXAMPLE_PATH@$path_url@g" ../conf/nginx.conf
sudo sed -i "s@YNH_WWW_PATH@$final_path\/public\/@g" ../conf/nginx.conf
# Create a dedicated nginx config
ynh_add_nginx_config
@ -107,20 +104,20 @@ ynh_add_nginx_config
# Create a system user
ynh_system_user_create $app
#=================================================
# PHP-FPM 7.1 CONFIGURATION
#=================================================
# Create a dedicated php-fpm7.1 config
ynh_add_fpm7.1_config
#=================================================
# SPECIFIC SETUP
#=================================================
# create a user
first_name=$(ynh_user_get_info $admin 'firstname')
last_name=$(ynh_user_get_info $admin 'lastname')
email=$(ynh_user_get_info $admin 'mail')
sudo sed -i "s/yuno_firstname/$first_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_lastname/$last_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_email/$email/g" ../conf/CreateUser.php
sudo cp ../conf/CreateUser.php $final_path/database/seeds/CreateUser.php
# setup application config
sudo cp ../conf/.env $final_path/.env
cd $final_path && sudo /usr/bin/php7.1 artisan -n key:generate --force
@ -133,25 +130,24 @@ sudo sed -i "s/yunopass/$db_pwd/g" $final_path/.env
sudo sed -i "s/yunobase/$db_name/g" $final_path/.env
sudo sed -i "s/yunomail/$email/g" $final_path/.env
sudo sed -i "s/yunodomain/$domain/g" $final_path/.env
## uses commas because path url contains a slash
sudo sed -i "s,yunopath,${path_url},g" $final_path/.env
sudo sed -i "s/language/$language/g" $final_path/.env
# Install nodejs packages
cd $final_path && sudo_path npm install -g npm@4 pnpm
cd $final_path && sudo_path pnpm install
cd $final_path && sudo_path pnpm install -g bower gulp
cd $final_path && sudo_path bower install -f --allow-root
cd $final_path && sudo_path npm install
cd $final_path && sudo_path npm run production
# setup application config
cd $final_path && sudo /usr/bin/php7.1 artisan -q migrate --force
cd $final_path && sudo /usr/bin/php7.1 artisan -q storage:link
cd $final_path && sudo /usr/bin/php7.1 artisan -q optimize
cd $final_path && sudo /usr/bin/php7.1 artisan -q db:seed --class ActivityTypesTableSeeder --force
cd $final_path && sudo /usr/bin/php7.1 artisan -q db:seed --class CountriesSeederTable --force
cd $final_path && sudo /usr/bin/php7.1 artisan -q db:seed --class CreateUser --force
cd $final_path && sudo /usr/bin/php7.1 artisan -q setup:production --force
# create a cronjob to run the scheduler
echo "* * * * * www-data cd $final_path && /usr/bin/php7.1 $final_path/artisan schedule:run >/dev/null 2>&1" > /tmp/cron$app
echo "* * * * * sudo $app /usr/bin/php7.1 $final_path/artisan schedule:run" > /tmp/cron$app
sudo mv /tmp/cron$app /etc/cron.d/$app
sudo chown root /etc/cron.d/$app
@ -162,7 +158,7 @@ sudo chown root /etc/cron.d/$app
#=================================================
# Set permissions to app files
chown -R www-data: $final_path
chown -R $app: $final_path
#=================================================
# SETUP SSOWAT

View file

@ -16,21 +16,10 @@ source /usr/share/yunohost/helpers
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
port=$(ynh_app_setting_get $app port)
db_name=$(ynh_app_setting_get $app db_name)
#=================================================
# STANDARD REMOVE
#=================================================
# REMOVE SERVICE FROM ADMIN PANEL
#=================================================
if yunohost service status | grep -q $app
then
echo "Remove $app service"
yunohost service remove $app
fi
#=================================================
# REMOVE DEPENDENCIES
#=================================================
@ -59,6 +48,14 @@ ynh_secure_remove "/var/www/$app"
# Remove the dedicated nginx config
ynh_remove_nginx_config
#=================================================
# REMOVE PHP-FPM 7.1 CONFIGURATION
#=================================================
# Remove the dedicated php-fpm7.1 config
ynh_remove_fpm7.1_config
#=================================================
# SPECIFIC REMOVE
#=================================================

View file

@ -27,9 +27,8 @@ path_url=$(ynh_app_setting_get $app path)
admin=$(ynh_app_setting_get $app admin)
is_public=$(ynh_app_setting_get $app is_public)
final_path=$(ynh_app_setting_get $app final_path)
port=$(ynh_app_setting_get $app port)
db_name=$(ynh_app_setting_get $app db_name)
language=$(ynh_app_setting_get $app language)
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
@ -67,9 +66,6 @@ ynh_setup_source "$final_path"
# NGINX CONFIGURATION
#=================================================
sudo sed -i "s@YNH_EXAMPLE_PATH@$path_url@g" ../conf/nginx.conf
sudo sed -i "s@YNH_WWW_PATH@$final_path\/public\/@g" ../conf/nginx.conf
# Create a dedicated nginx config
ynh_add_nginx_config
@ -80,6 +76,7 @@ ynh_add_nginx_config
# Create a system user
ynh_system_user_create $app
#=================================================
# SPECIFIC UPGRADE
#=================================================
@ -89,15 +86,16 @@ ynh_system_user_create $app
# install new dependencies
ynh_install_app_dependencies php7.1 php7.1-zip php7.1-fpm php7.1-mysql php7.1-xml php7.1-intl php7.1-mbstring php7.1-gd php7.1-curl
# create a user
first_name=$(ynh_user_get_info $admin 'firstname')
last_name=$(ynh_user_get_info $admin 'lastname')
email=$(ynh_user_get_info $admin 'mail')
#=================================================
# PHP-FPM 7.1 CONFIGURATION
#=================================================
sudo sed -i "s/yuno_firstname/$first_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_lastname/$last_name/g" ../conf/CreateUser.php
sudo sed -i "s/yuno_email/$email/g" ../conf/CreateUser.php
sudo cp ../conf/CreateUser.php $final_path/database/seeds/CreateUser.php
# Create a dedicated php-fpm7.1 config
ynh_add_fpm7.1_config
# create a user
email=$(ynh_user_get_info $admin 'mail')
# setup application config
sudo cp ../conf/.env $final_path/.env
@ -109,14 +107,12 @@ sudo sed -i "s/yunopass/$db_pwd/g" $final_path/.env
sudo sed -i "s/yunobase/$db_name/g" $final_path/.env
sudo sed -i "s/yunomail/$email/g" $final_path/.env
sudo sed -i "s/yunodomain/$domain/g" $final_path/.env
## uses commas because path url contains a slash
sudo sed -i "s,yunopath,${path_url},g" $final_path/.env
sudo sed -i "s/language/$language/g" $final_path/.env
exec_composer "$final_path" update --quiet --no-dev --prefer-dist
# setup application config
cd $final_path && sudo /usr/bin/php7.1 artisan migrate --force
cd $final_path && sudo /usr/bin/php7.1 artisan optimize
#=================================================
# GENERIC FINALIZATION
@ -125,7 +121,7 @@ cd $final_path && sudo /usr/bin/php7.1 artisan optimize
#=================================================
# Set right permissions for curl installation
chown -R www-data: $final_path
chown -R $app: $final_path
#=================================================
# SETUP SSOWAT