mirror of
https://github.com/YunoHost-Apps/moodle_ynh.git
synced 2024-09-03 19:46:23 +02:00
commit
5c551f5e80
17 changed files with 534 additions and 1643 deletions
91
README.md
91
README.md
|
@ -1,48 +1,69 @@
|
|||
# Moodle app for YunoHost
|
||||
[![Install Moodle with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=Moodle)<br><br>
|
||||
|
||||
Version: **3.8.1**
|
||||
Moodle - the world's open source learning platform
|
||||
[![Integration level](https://dash.yunohost.org/integration/moodle.svg)](https://dash.yunohost.org/appci/app/moodle)
|
||||
[![Install moodle with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=moodle)
|
||||
|
||||
Moodle <https://moodle.org> is a learning platform designed to provide
|
||||
educators, administrators and learners with a single robust, secure and
|
||||
integrated system to create personalised learning environments.
|
||||
*[Lire ce readme en français.](./README_fr.md)*
|
||||
|
||||
Moodle is widely used around the world by universities, schools, companies and
|
||||
all manner of organisations and individuals.
|
||||
> *This package allow you to install moodle quickly and simply on a YunoHost server.
|
||||
If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.*
|
||||
|
||||
## Overview
|
||||
Moodle https://moodle.org is a learning platform designed to provide educators, administrators and learners with a single robust, secure and integrated system to create personalised learning environments.
|
||||
|
||||
### Installing guide
|
||||
Moodle is widely used around the world by universities, schools, companies and all manner of organisations and individuals.
|
||||
|
||||
App can be installed by YunoHost **admin web-interface** or by **running following command**:
|
||||
**Shipped version:** 3.8.2
|
||||
|
||||
$ sudo yunohost app install https://github.com/YunoHost-Apps/moodle_ynh
|
||||
|
||||
After install :
|
||||
|
||||
1. Login in moodle exemple : https://domain.tld/moodle
|
||||
2. Create admin account
|
||||
## Screenshots
|
||||
|
||||
|
||||
### Upgrade this package:
|
||||
![](https://upload.wikimedia.org/wikipedia/commons/3/36/Moodle_2.0_on_Firefox_4.0.png)
|
||||
|
||||
$ sudo yunohost app upgrade moodle -u https://github.com/YunoHost-Apps/moodle_ynh
|
||||
|
||||
After upgrade :
|
||||
|
||||
1. If you have custom plugins or themes need to move your plugins
|
||||
2. Moodle is saved in /var/www/moodle.backup
|
||||
3. Moove your plugins / themes exemple "cp -a moodle.backup/mod/hvp moodle/mod/hvp"
|
||||
4. After moving your plugins and themes make "rm -r moodle.backup"
|
||||
5. Login in moodle for complete upgrade
|
||||
|
||||
More informations : https://docs.moodle.org/26/en/Upgrading
|
||||
## Demo
|
||||
|
||||
* [Official demo](https://sandbox.moodledemo.net/)
|
||||
|
||||
## Configuration
|
||||
|
||||
## To-do
|
||||
- [X] Install script
|
||||
- [X] Remove script
|
||||
- [x] Upgrade script
|
||||
- [X] Backup and Restore scripts(need testing)
|
||||
- [ ] LDAP integration
|
||||
How to configure this app: by an admin panel.
|
||||
|
||||
## Documentation
|
||||
|
||||
* Official documentation: https://docs.moodle.org/38/en/Main_page
|
||||
|
||||
## YunoHost specific features
|
||||
|
||||
#### Multi-users support
|
||||
|
||||
Are LDAP and HTTP auth supported? *Yes*
|
||||
Can the app be used by multiple users? *Yes*
|
||||
|
||||
#### Supported architectures
|
||||
|
||||
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/moodle%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/moodle/)
|
||||
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/moodle%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/moodle/)
|
||||
|
||||
**More information on the documentation page:**
|
||||
https://yunohost.org/packaging_apps
|
||||
|
||||
## Links
|
||||
|
||||
* Report a bug: https://github.com/YunoHost-Apps/moodle_ynh/issues
|
||||
* App website: https://moodle.org/
|
||||
* Upstream app repository: http://git.moodle.org/ - https://github.com/moodle/moodle
|
||||
* YunoHost website: https://yunohost.org/
|
||||
|
||||
---
|
||||
|
||||
Developers info
|
||||
----------------
|
||||
|
||||
**Only if you want to use a testing branch for coding, instead of merging directly into master.**
|
||||
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/moodle_ynh/tree/testing).
|
||||
|
||||
To try the testing branch, please proceed like that.
|
||||
```
|
||||
sudo yunohost app install https://github.com/YunoHost-Apps/moodle_ynh/tree/testing --debug
|
||||
or
|
||||
sudo yunohost app upgrade moodle -u https://github.com/YunoHost-Apps/moodle_ynh/tree/testing --debug
|
||||
```
|
||||
|
|
11
conf/app.src
11
conf/app.src
|
@ -1,7 +1,6 @@
|
|||
SOURCE_URL=https://download.moodle.org/stable38/moodle-3.8.1.tgz
|
||||
SOURCE_SUM=bec050a92f682cee03cb70abfc350b7741522898dd21f5b5847f5c2ddfdd785ad404f6f06ed17b31bfa031aebe42bd35e3a205de686bd8627e92b9a919addb4c
|
||||
SOURCE_SUM_PRG=sha512sum
|
||||
SOURCE_FORMAT=tar.gz
|
||||
SOURCE_URL=https://download.moodle.org/stable38/moodle-3.8.2.zip
|
||||
SOURCE_SUM=19504ee7fefd5797e0336bd993bb7c18b3f00ea02f3a35206e361c2defc4ea9b
|
||||
SOURCE_SUM_PRG=sha256sum
|
||||
SOURCE_FORMAT=zip
|
||||
SOURCE_IN_SUBDIR=true
|
||||
SOURCE_EXTRACT=true
|
||||
SOURCE_FILENAME=moodle.tgz
|
||||
SOURCE_FILENAME=
|
884
conf/config.php
884
conf/config.php
|
@ -1,884 +0,0 @@
|
|||
<?php
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// Moodle configuration file //
|
||||
// //
|
||||
// This file should be renamed "config.php" in the top-level directory //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// NOTICE OF COPYRIGHT //
|
||||
// //
|
||||
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
|
||||
// http://moodle.org //
|
||||
// //
|
||||
// Copyright (C) 1999 onwards Martin Dougiamas http://moodle.com //
|
||||
// //
|
||||
// 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: //
|
||||
// //
|
||||
// http://www.gnu.org/copyleft/gpl.html //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
unset($CFG); // Ignore this line
|
||||
global $CFG; // This is necessary here for PHPUnit execution
|
||||
$CFG = new stdClass();
|
||||
//=========================================================================
|
||||
// 1. DATABASE SETUP
|
||||
//=========================================================================
|
||||
// First, you need to configure the database where all Moodle data //
|
||||
// will be stored. This database must already have been created //
|
||||
// and a username/password created to access it. //
|
||||
$CFG->dbtype = 'pgsql'; // 'pgsql', 'mariadb', 'mysqli', 'mssql', 'sqlsrv' or 'oci'
|
||||
$CFG->dblibrary = 'native'; // 'native' only at the moment
|
||||
$CFG->dbhost = 'localhost'; // eg 'localhost' or 'db.isp.com' or IP
|
||||
$CFG->dbname = 'YNH_DB_USER'; // database name, eg moodle
|
||||
$CFG->dbuser = 'YNH_APP'; // your database username
|
||||
$CFG->dbpass = 'YNH_DB_PWD'; // your database password
|
||||
$CFG->prefix = 'mdl_'; // prefix to use for all table names
|
||||
$CFG->dboptions = array(
|
||||
'dbpersist' => false, // should persistent database connections be
|
||||
// used? set to 'false' for the most stable
|
||||
// setting, 'true' can improve performance
|
||||
// sometimes
|
||||
'dbsocket' => false, // should connection via UNIX socket be used?
|
||||
// if you set it to 'true' or custom path
|
||||
// here set dbhost to 'localhost',
|
||||
// (please note mysql is always using socket
|
||||
// if dbhost is 'localhost' - if you need
|
||||
// local port connection use '127.0.0.1')
|
||||
'dbport' => '', // the TCP port number to use when connecting
|
||||
// to the server. keep empty string for the
|
||||
// default port
|
||||
'dbhandlesoptions' => false,// On PostgreSQL poolers like pgbouncer don't
|
||||
// support advanced options on connection.
|
||||
// If you set those in the database then
|
||||
// the advanced settings will not be sent.
|
||||
// 'dbcollation' => 'utf8mb4_unicode_ci', // MySQL has partial and full UTF-8
|
||||
// support. If you wish to use partial UTF-8
|
||||
// (three bytes) then set this option to
|
||||
// 'utf8_unicode_ci', otherwise this option
|
||||
// can be removed for MySQL (by default it will
|
||||
// use 'utf8mb4_unicode_ci'. This option should
|
||||
// be removed for all other databases.
|
||||
// 'fetchbuffersize' => 100000, // On PostgreSQL, this option sets a limit
|
||||
// on the number of rows that are fetched into
|
||||
// memory when doing a large recordset query
|
||||
// (e.g. search indexing). Default is 100000.
|
||||
// Uncomment and set to a value to change it,
|
||||
// or zero to turn off the limit. You need to
|
||||
// set to zero if you are using pg_bouncer in
|
||||
// 'transaction' mode (it is fine in 'session'
|
||||
// mode).
|
||||
);
|
||||
//=========================================================================
|
||||
// 2. WEB SITE LOCATION
|
||||
//=========================================================================
|
||||
// Now you need to tell Moodle where it is located. Specify the full
|
||||
// web address to where moodle has been installed. If your web site
|
||||
// is accessible via multiple URLs then choose the most natural one
|
||||
// that your students would use. Do not include a trailing slash
|
||||
//
|
||||
// If you need both intranet and Internet access please read
|
||||
// http://docs.moodle.org/en/masquerading
|
||||
$CFG->wwwroot = 'https://YNH_DOMAINYNH_WWW_PATH';
|
||||
//=========================================================================
|
||||
// 3. DATA FILES LOCATION
|
||||
//=========================================================================
|
||||
// Now you need a place where Moodle can save uploaded files. This
|
||||
// directory should be readable AND WRITEABLE by the web server user
|
||||
// (usually 'nobody' or 'apache'), but it should not be accessible
|
||||
// directly via the web.
|
||||
//
|
||||
// - On hosting systems you might need to make sure that your "group" has
|
||||
// no permissions at all, but that "others" have full permissions.
|
||||
//
|
||||
// - On Windows systems you might specify something like 'c:\moodledata'
|
||||
$CFG->dataroot = 'YNH_VAR_ROOT';
|
||||
//=========================================================================
|
||||
// 4. DATA FILES PERMISSIONS
|
||||
//=========================================================================
|
||||
// The following parameter sets the permissions of new directories
|
||||
// created by Moodle within the data directory. The format is in
|
||||
// octal format (as used by the Unix utility chmod, for example).
|
||||
// The default is usually OK, but you may want to change it to 0750
|
||||
// if you are concerned about world-access to the files (you will need
|
||||
// to make sure the web server process (eg Apache) can access the files.
|
||||
// NOTE: the prefixed 0 is important, and don't use quotes.
|
||||
$CFG->directorypermissions = 02777;
|
||||
//=========================================================================
|
||||
// 5. DIRECTORY LOCATION (most people can just ignore this setting)
|
||||
//=========================================================================
|
||||
// A very few webhosts use /admin as a special URL for you to access a
|
||||
// control panel or something. Unfortunately this conflicts with the
|
||||
// standard location for the Moodle admin pages. You can work around this
|
||||
// by renaming the admin directory in your installation, and putting that
|
||||
// new name here. eg "moodleadmin". This should fix all admin links in Moodle.
|
||||
// After any change you need to visit your new admin directory
|
||||
// and purge all caches.
|
||||
$CFG->admin = 'admin';
|
||||
//=========================================================================
|
||||
// 6. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations)
|
||||
//=========================================================================
|
||||
//
|
||||
// These are additional tweaks for which no GUI exists in Moodle yet.
|
||||
//
|
||||
// Starting in PHP 5.3 administrators should specify default timezone
|
||||
// in PHP.ini, you can also specify it here if needed.
|
||||
// See details at: http://php.net/manual/en/function.date-default-timezone-set.php
|
||||
// List of time zones at: http://php.net/manual/en/timezones.php
|
||||
// date_default_timezone_set('Australia/Perth');
|
||||
//
|
||||
// Change the key pair lifetime for Moodle Networking
|
||||
// The default is 28 days. You would only want to change this if the key
|
||||
// was not getting regenerated for any reason. You would probably want
|
||||
// make it much longer. Note that you'll need to delete and manually update
|
||||
// any existing key.
|
||||
// $CFG->mnetkeylifetime = 28;
|
||||
//
|
||||
// Not recommended: Set the following to true to allow the use
|
||||
// off non-Moodle standard characters in usernames.
|
||||
// $CFG->extendedusernamechars = true;
|
||||
//
|
||||
// Allow user passwords to be included in backup files. Very dangerous
|
||||
// setting as far as it publishes password hashes that can be unencrypted
|
||||
// if the backup file is publicy available. Use it only if you can guarantee
|
||||
// that all your backup files remain only privacy available and are never
|
||||
// shared out from your site/institution!
|
||||
// $CFG->includeuserpasswordsinbackup = true;
|
||||
//
|
||||
// Completely disable user creation when restoring a course, bypassing any
|
||||
// permissions granted via roles and capabilities. Enabling this setting
|
||||
// results in the restore process stopping when a user attempts to restore a
|
||||
// course requiring users to be created.
|
||||
// $CFG->disableusercreationonrestore = true;
|
||||
//
|
||||
// Keep the temporary directories used by backup and restore without being
|
||||
// deleted at the end of the process. Use it if you want to debug / view
|
||||
// all the information stored there after the process has ended. Note that
|
||||
// those directories may be deleted (after some ttl) both by cron and / or
|
||||
// by new backup / restore invocations.
|
||||
// $CFG->keeptempdirectoriesonbackup = true;
|
||||
//
|
||||
// Modify the restore process in order to force the "user checks" to assume
|
||||
// that the backup originated from a different site, so detection of matching
|
||||
// users is performed with different (more "relaxed") rules. Note that this is
|
||||
// only useful if the backup file has been created using Moodle < 1.9.4 and the
|
||||
// site has been rebuilt from scratch using backup files (not the best way btw).
|
||||
// If you obtain user conflicts on restore, rather than enabling this setting
|
||||
// permanently, try restoring the backup on a different site, back it up again
|
||||
// and then restore on the target server.
|
||||
// $CFG->forcedifferentsitecheckingusersonrestore = true;
|
||||
//
|
||||
// Force the backup system to continue to create backups in the legacy zip
|
||||
// format instead of the new tgz format. Does not affect restore, which
|
||||
// auto-detects the underlying file format.
|
||||
// $CFG->usezipbackups = true;
|
||||
//
|
||||
// Prevent stats processing and hide the GUI
|
||||
// $CFG->disablestatsprocessing = true;
|
||||
//
|
||||
// Setting this to true will enable admins to edit any post at any time
|
||||
// $CFG->admineditalways = true;
|
||||
//
|
||||
// These variables define DEFAULT block variables for new courses
|
||||
// If this one is set it overrides all others and is the only one used.
|
||||
// $CFG->defaultblocks_override = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';
|
||||
//
|
||||
// These variables define the specific settings for defined course formats.
|
||||
// They override any settings defined in the formats own config file.
|
||||
// $CFG->defaultblocks_site = 'site_main_menu,course_list:course_summary,calendar_month';
|
||||
// $CFG->defaultblocks_social = 'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,course_list';
|
||||
// $CFG->defaultblocks_topics = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';
|
||||
// $CFG->defaultblocks_weeks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';
|
||||
//
|
||||
// These blocks are used when no other default setting is found.
|
||||
// $CFG->defaultblocks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity';
|
||||
//
|
||||
// You can specify a different class to be created for the $PAGE global, and to
|
||||
// compute which blocks appear on each page. However, I cannot think of any good
|
||||
// reason why you would need to change that. It just felt wrong to hard-code the
|
||||
// the class name. You are strongly advised not to use these to settings unless
|
||||
// you are absolutely sure you know what you are doing.
|
||||
// $CFG->moodlepageclass = 'moodle_page';
|
||||
// $CFG->moodlepageclassfile = "$CFG->dirroot/local/myplugin/mypageclass.php";
|
||||
// $CFG->blockmanagerclass = 'block_manager';
|
||||
// $CFG->blockmanagerclassfile = "$CFG->dirroot/local/myplugin/myblockamanagerclass.php";
|
||||
//
|
||||
// Seconds for files to remain in caches. Decrease this if you are worried
|
||||
// about students being served outdated versions of uploaded files.
|
||||
// $CFG->filelifetime = 60*60*6;
|
||||
//
|
||||
// Some web servers can offload the file serving from PHP process,
|
||||
// comment out one the following options to enable it in Moodle:
|
||||
// $CFG->xsendfile = 'X-Sendfile'; // Apache {@see https://tn123.org/mod_xsendfile/}
|
||||
// $CFG->xsendfile = 'X-LIGHTTPD-send-file'; // Lighttpd {@see http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file}
|
||||
// $CFG->xsendfile = 'X-Accel-Redirect'; // Nginx {@see http://wiki.nginx.org/XSendfile}
|
||||
// If your X-Sendfile implementation (usually Nginx) uses directory aliases specify them
|
||||
// in the following array setting:
|
||||
// $CFG->xsendfilealiases = array(
|
||||
// '/dataroot/' => $CFG->dataroot,
|
||||
// '/cachedir/' => '/var/www/moodle/cache', // for custom $CFG->cachedir locations
|
||||
// '/localcachedir/' => '/var/local/cache', // for custom $CFG->localcachedir locations
|
||||
// '/tempdir/' => '/var/www/moodle/temp', // for custom $CFG->tempdir locations
|
||||
// '/filedir' => '/var/www/moodle/filedir', // for custom $CFG->filedir locations
|
||||
// );
|
||||
//
|
||||
// YUI caching may be sometimes improved by slasharguments:
|
||||
// $CFG->yuislasharguments = 1;
|
||||
// Some servers may need a special rewrite rule to work around internal path length limitations:
|
||||
// RewriteRule (^.*/theme/yui_combo\.php)(/.*) $1?file=$2
|
||||
//
|
||||
//
|
||||
// Following settings may be used to select session driver, uncomment only one of the handlers.
|
||||
// Database session handler (not compatible with MyISAM):
|
||||
// $CFG->session_handler_class = '\core\session\database';
|
||||
// $CFG->session_database_acquire_lock_timeout = 120;
|
||||
//
|
||||
// File session handler (file system locking required):
|
||||
// $CFG->session_handler_class = '\core\session\file';
|
||||
// $CFG->session_file_save_path = $CFG->dataroot.'/sessions';
|
||||
//
|
||||
// Memcached session handler (requires memcached server and extension):
|
||||
// $CFG->session_handler_class = '\core\session\memcached';
|
||||
// $CFG->session_memcached_save_path = '127.0.0.1:11211';
|
||||
// $CFG->session_memcached_prefix = 'memc.sess.key.';
|
||||
// $CFG->session_memcached_acquire_lock_timeout = 120;
|
||||
// $CFG->session_memcached_lock_expire = 7200; // Ignored if PECL memcached is below version 2.2.0
|
||||
// $CFG->session_memcached_lock_retry_sleep = 150; // Spin-lock retry sleeptime (msec). Only effective
|
||||
// // for tuning php-memcached 3.0.x (PHP 7)
|
||||
//
|
||||
// Redis session handler (requires redis server and redis extension):
|
||||
// $CFG->session_handler_class = '\core\session\redis';
|
||||
// $CFG->session_redis_host = '127.0.0.1';
|
||||
// $CFG->session_redis_port = 6379; // Optional.
|
||||
// $CFG->session_redis_database = 0; // Optional, default is db 0.
|
||||
// $CFG->session_redis_auth = ''; // Optional, default is don't set one.
|
||||
// $CFG->session_redis_prefix = ''; // Optional, default is don't set one.
|
||||
// $CFG->session_redis_acquire_lock_timeout = 120;
|
||||
// $CFG->session_redis_lock_expire = 7200;
|
||||
// Use the igbinary serializer instead of the php default one. Note that phpredis must be compiled with
|
||||
// igbinary support to make the setting to work. Also, if you change the serializer you have to flush the database!
|
||||
// $CFG->session_redis_serializer_use_igbinary = false; // Optional, default is PHP builtin serializer.
|
||||
//
|
||||
// Memcache session handler (requires memcached server and memcache extension):
|
||||
// $CFG->session_handler_class = '\core\session\memcache';
|
||||
// $CFG->session_memcache_save_path = '127.0.0.1:11211';
|
||||
// $CFG->session_memcache_acquire_lock_timeout = 120;
|
||||
// ** NOTE: Memcache extension has less features than memcached and may be
|
||||
// less reliable. Use memcached where possible or if you encounter
|
||||
// session problems. **
|
||||
//
|
||||
// Please be aware that when selecting either Memcached or Memcache for sessions that it is advised to use a dedicated
|
||||
// memcache server. The memcache and memcached extensions do not provide isolated environments for individual uses.
|
||||
// Using the same server for other purposes (MUC for example) can lead to sessions being prematurely removed should
|
||||
// the other uses of the server purge the cache.
|
||||
//
|
||||
// Following setting allows you to alter how frequently is timemodified updated in sessions table.
|
||||
// $CFG->session_update_timemodified_frequency = 20; // In seconds.
|
||||
//
|
||||
// If this setting is set to true, then Moodle will track the IP of the
|
||||
// current user to make sure it hasn't changed during a session. This
|
||||
// will prevent the possibility of sessions being hijacked via XSS, but it
|
||||
// may break things for users coming using proxies that change all the time,
|
||||
// like AOL.
|
||||
// $CFG->tracksessionip = true;
|
||||
//
|
||||
// The following lines are for handling email bounces.
|
||||
// $CFG->handlebounces = true;
|
||||
// $CFG->minbounces = 10;
|
||||
// $CFG->bounceratio = .20;
|
||||
// The next lines are needed both for bounce handling and any other email to module processing.
|
||||
// mailprefix must be EXACTLY four characters.
|
||||
// Uncomment and customise this block for Postfix
|
||||
// $CFG->mailprefix = 'mdl+'; // + is the separator for Exim and Postfix.
|
||||
// $CFG->mailprefix = 'mdl-'; // - is the separator for qmail
|
||||
// $CFG->maildomain = 'youremaildomain.com';
|
||||
//
|
||||
// Enable when setting up advanced reverse proxy load balancing configurations,
|
||||
// it may be also necessary to enable this when using port forwarding.
|
||||
// $CFG->reverseproxy = true;
|
||||
//
|
||||
// Enable when using external SSL appliance for performance reasons.
|
||||
// Please note that site may be accessible via http: or https:, but not both!
|
||||
// $CFG->sslproxy = true;
|
||||
//
|
||||
// This setting will cause the userdate() function not to fix %d in
|
||||
// date strings, and just let them show with a zero prefix.
|
||||
// $CFG->nofixday = true;
|
||||
//
|
||||
// This setting will make some graphs (eg user logs) use lines instead of bars
|
||||
// $CFG->preferlinegraphs = true;
|
||||
//
|
||||
// This setting allows you to specify a class to rewrite outgoing urls
|
||||
// enabling 'clean urls' in conjunction with an apache / nginx handler.
|
||||
// The handler must implement \core\output\url_rewriter.
|
||||
// $CFG->urlrewriteclass = '\local_cleanurls\url_rewriter';
|
||||
//
|
||||
// Enabling this will allow custom scripts to replace existing moodle scripts.
|
||||
// For example: if $CFG->customscripts/course/view.php exists then
|
||||
// it will be used instead of $CFG->wwwroot/course/view.php
|
||||
// At present this will only work for files that include config.php and are called
|
||||
// as part of the url (index.php is implied).
|
||||
// Some examples are:
|
||||
// http://my.moodle.site/course/view.php
|
||||
// http://my.moodle.site/index.php
|
||||
// http://my.moodle.site/admin (index.php implied)
|
||||
// Custom scripts should not include config.php
|
||||
// Warning: Replacing standard moodle scripts may pose security risks and/or may not
|
||||
// be compatible with upgrades. Use this option only if you are aware of the risks
|
||||
// involved.
|
||||
// Specify the full directory path to the custom scripts
|
||||
// $CFG->customscripts = '/home/example/customscripts';
|
||||
//
|
||||
// Performance profiling
|
||||
//
|
||||
// If you set Debug to "Yes" in the Configuration->Variables page some
|
||||
// performance profiling data will show up on your footer (in default theme).
|
||||
// With these settings you get more granular control over the capture
|
||||
// and printout of the data
|
||||
//
|
||||
// Capture performance profiling data
|
||||
// define('MDL_PERF' , true);
|
||||
//
|
||||
// Capture additional data from DB
|
||||
// define('MDL_PERFDB' , true);
|
||||
//
|
||||
// Print to log (for passive profiling of production servers)
|
||||
// define('MDL_PERFTOLOG' , true);
|
||||
//
|
||||
// Print to footer (works with the default theme)
|
||||
// define('MDL_PERFTOFOOT', true);
|
||||
//
|
||||
// Enable earlier profiling that causes more code to be covered
|
||||
// on every request (db connections, config load, other inits...).
|
||||
// Requires extra configuration to be defined in config.php like:
|
||||
// profilingincluded, profilingexcluded, profilingautofrec,
|
||||
// profilingallowme, profilingallowall, profilinglifetime
|
||||
// $CFG->earlyprofilingenabled = true;
|
||||
//
|
||||
// Force displayed usernames
|
||||
// A little hack to anonymise user names for all students. If you set these
|
||||
// then all non-teachers will always see these for every person.
|
||||
// $CFG->forcefirstname = 'Bruce';
|
||||
// $CFG->forcelastname = 'Simpson';
|
||||
//
|
||||
// The following setting will turn on username logging into Apache log. For full details regarding setting
|
||||
// up of this function please refer to the install section of the document.
|
||||
// $CFG->apacheloguser = 0; // Turn this feature off. Default value.
|
||||
// $CFG->apacheloguser = 1; // Log user id.
|
||||
// $CFG->apacheloguser = 2; // Log full name in cleaned format. ie, Darth Vader will be displayed as darth_vader.
|
||||
// $CFG->apacheloguser = 3; // Log username.
|
||||
// To get the values logged in Apache's log, add to your httpd.conf
|
||||
// the following statements. In the General part put:
|
||||
// LogFormat "%h %l %{MOODLEUSER}n %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" moodleformat
|
||||
// And in the part specific to your Moodle install / virtualhost:
|
||||
// CustomLog "/your/path/to/log" moodleformat
|
||||
//
|
||||
// Alternatively for other webservers such as nginx, you can instead have the username sent via a http header
|
||||
// 'X-MOODLEUSER' which can be saved in the logfile and then stripped out before being sent to the browser:
|
||||
// $CFG->headerloguser = 0; // Turn this feature off. Default value.
|
||||
// $CFG->headerloguser = 1; // Log user id.
|
||||
// $CFG->headerloguser = 2; // Log full name in cleaned format. ie, Darth Vader will be displayed as darth_vader.
|
||||
// $CFG->headerloguser = 3; // Log username.
|
||||
//
|
||||
// CAUTION: Use of this option will expose usernames in the Apache / nginx log,
|
||||
// If you are going to publish your log, or the output of your web stats analyzer
|
||||
// this will weaken the security of your website.
|
||||
//
|
||||
// Email database connection errors to someone. If Moodle cannot connect to the
|
||||
// database, then email this address with a notice.
|
||||
//
|
||||
// $CFG->emailconnectionerrorsto = 'your@emailaddress.com';
|
||||
//
|
||||
// Set the priority of themes from highest to lowest. This is useful (for
|
||||
// example) in sites where the user theme should override all other theme
|
||||
// settings for accessibility reasons. You can also disable types of themes
|
||||
// (other than site) by removing them from the array. The default setting is:
|
||||
//
|
||||
// $CFG->themeorder = array('course', 'category', 'session', 'user', 'cohort', 'site');
|
||||
//
|
||||
// NOTE: course, category, session, user, cohort themes still require the
|
||||
// respective settings to be enabled
|
||||
//
|
||||
// It is possible to add extra themes directory stored outside of $CFG->dirroot.
|
||||
// This local directory does not have to be accessible from internet.
|
||||
//
|
||||
// $CFG->themedir = '/location/of/extra/themes';
|
||||
//
|
||||
// It is possible to specify different cache and temp directories, use local fast filesystem
|
||||
// for normal web servers. Server clusters MUST use shared filesystem for cachedir!
|
||||
// Localcachedir is intended for server clusters, it does not have to be shared by cluster nodes.
|
||||
// The directories must not be accessible via web.
|
||||
//
|
||||
// $CFG->tempdir = '/var/www/moodle/temp'; // Directory MUST BE SHARED by all cluster nodes.
|
||||
// $CFG->cachedir = '/var/www/moodle/cache'; // Directory MUST BE SHARED by all cluster nodes, locking required.
|
||||
// $CFG->localcachedir = '/var/local/cache'; // Intended for local node caching.
|
||||
//
|
||||
// It is possible to specify a different backup temp directory, use local fast filesystem
|
||||
// for normal web servers. Server clusters MUST use shared filesystem for backuptempdir!
|
||||
// The directory must not be accessible via web.
|
||||
//
|
||||
// $CFG->backuptempdir = '/var/www/moodle/backuptemp'; // Directory MUST BE SHARED by all cluster nodes.
|
||||
//
|
||||
// Some filesystems such as NFS may not support file locking operations.
|
||||
// Locking resolves race conditions and is strongly recommended for production servers.
|
||||
// $CFG->preventfilelocking = false;
|
||||
//
|
||||
// Site default language can be set via standard administration interface. If you
|
||||
// want to have initial error messages for eventual database connection problems
|
||||
// localized too, you have to set your language code here.
|
||||
//
|
||||
// $CFG->lang = 'yourlangcode'; // for example 'cs'
|
||||
//
|
||||
// When Moodle is about to perform an intensive operation it raises PHP's memory
|
||||
// limit. The following setting should be used on large sites to set the raised
|
||||
// memory limit to something higher.
|
||||
// The value for the settings should be a valid PHP memory value. e.g. 512M, 1G
|
||||
//
|
||||
// $CFG->extramemorylimit = '1024M';
|
||||
//
|
||||
// Moodle 2.4 introduced a new cache API.
|
||||
// The cache API stores a configuration file within the Moodle data directory and
|
||||
// uses that rather than the database in order to function in a stand-alone manner.
|
||||
// Using altcacheconfigpath you can change the location where this config file is
|
||||
// looked for.
|
||||
// It can either be a directory in which to store the file, or the full path to the
|
||||
// file if you want to take full control. Either way it must be writable by the
|
||||
// webserver.
|
||||
//
|
||||
// $CFG->altcacheconfigpath = '/var/www/shared/moodle.cache.config.php
|
||||
//
|
||||
// Use the following flag to completely disable the Available update notifications
|
||||
// feature and hide it from the server administration UI.
|
||||
//
|
||||
// $CFG->disableupdatenotifications = true;
|
||||
//
|
||||
// Use the following flag to completely disable the installation of plugins
|
||||
// (new plugins, available updates and missing dependencies) and related
|
||||
// features (such as cancelling the plugin installation or upgrade) via the
|
||||
// server administration web interface.
|
||||
//
|
||||
// $CFG->disableupdateautodeploy = true;
|
||||
//
|
||||
// Use the following flag to disable the warning on the system notifications page
|
||||
// about present development libraries. This flag will not disable the warning within
|
||||
// the security overview report. Use this flag only if you really have prohibited web
|
||||
// access to the development libraries in your webserver configuration.
|
||||
//
|
||||
// $CFG->disabledevlibdirscheck = true;
|
||||
//
|
||||
// Use the following flag to disable modifications to scheduled tasks
|
||||
// whilst still showing the state of tasks.
|
||||
//
|
||||
// $CFG->preventscheduledtaskchanges = true;
|
||||
//
|
||||
// As of version 2.4 Moodle serves icons as SVG images if the users browser appears
|
||||
// to support SVG.
|
||||
// For those wanting to control the serving of SVG images the following setting can
|
||||
// be defined in your config.php.
|
||||
// If it is not defined then the default (browser detection) will occur.
|
||||
//
|
||||
// To ensure they are always used when available:
|
||||
// $CFG->svgicons = true;
|
||||
//
|
||||
// To ensure they are never used even when available:
|
||||
// $CFG->svgicons = false;
|
||||
//
|
||||
// Some administration options allow setting the path to executable files. This can
|
||||
// potentially cause a security risk. Set this option to true to disable editing
|
||||
// those config settings via the web. They will need to be set explicitly in the
|
||||
// config.php file
|
||||
// $CFG->preventexecpath = true;
|
||||
//
|
||||
// Use the following flag to set userid for noreply user. If not set then moodle will
|
||||
// create dummy user and use -ve value as user id.
|
||||
// $CFG->noreplyuserid = -10;
|
||||
//
|
||||
// As of version 2.6 Moodle supports admin to set support user. If not set, all mails
|
||||
// will be sent to supportemail.
|
||||
// $CFG->supportuserid = -20;
|
||||
//
|
||||
// Moodle 2.7 introduces a locking api for critical tasks (e.g. cron).
|
||||
// The default locking system to use is DB locking for Postgres, and file locking for
|
||||
// MySQL, Oracle and SQLServer. If $CFG->preventfilelocking is set, then the default
|
||||
// will always be DB locking. It can be manually set to one of the lock
|
||||
// factory classes listed below, or one of your own custom classes implementing the
|
||||
// \core\lock\lock_factory interface.
|
||||
//
|
||||
// $CFG->lock_factory = "auto";
|
||||
//
|
||||
// The list of available lock factories is:
|
||||
//
|
||||
// "\\core\\lock\\file_lock_factory" - File locking
|
||||
// Uses lock files stored by default in the dataroot. Whether this
|
||||
// works on clusters depends on the file system used for the dataroot.
|
||||
//
|
||||
// "\\core\\lock\\db_record_lock_factory" - DB locking based on table rows.
|
||||
//
|
||||
// "\\core\\lock\\postgres_lock_factory" - DB locking based on postgres advisory locks.
|
||||
//
|
||||
// Settings used by the lock factories
|
||||
//
|
||||
// Location for lock files used by the File locking factory. This must exist
|
||||
// on a shared file system that supports locking.
|
||||
// $CFG->lock_file_root = $CFG->dataroot . '/lock';
|
||||
//
|
||||
// Moodle 2.9 allows administrators to customise the list of supported file types.
|
||||
// To add a new filetype or override the definition of an existing one, set the
|
||||
// customfiletypes variable like this:
|
||||
//
|
||||
// $CFG->customfiletypes = array(
|
||||
// (object)array(
|
||||
// 'extension' => 'frog',
|
||||
// 'icon' => 'archive',
|
||||
// 'type' => 'application/frog',
|
||||
// 'customdescription' => 'Amphibian-related file archive'
|
||||
// )
|
||||
// );
|
||||
//
|
||||
// The extension, icon, and type fields are required. The icon field can refer to
|
||||
// any icon inside the pix/f folder. You can also set the customdescription field
|
||||
// (shown above) and (for advanced use) the groups, string, and defaulticon fields.
|
||||
//
|
||||
// Upgrade key
|
||||
//
|
||||
// If the upgrade key is defined here, then the value must be provided every time
|
||||
// the site is being upgraded though the web interface, regardless of whether the
|
||||
// administrator is logged in or not. This prevents anonymous access to the upgrade
|
||||
// screens where the real authentication and authorization mechanisms can not be
|
||||
// relied on.
|
||||
//
|
||||
// It is strongly recommended to use a value different from your real account
|
||||
// password.
|
||||
//
|
||||
// $CFG->upgradekey = 'put_some_password-like_value_here';
|
||||
//
|
||||
//=========================================================================
|
||||
// 7. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!!
|
||||
//=========================================================================
|
||||
//
|
||||
// Force a debugging mode regardless the settings in the site administration
|
||||
// @error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS!
|
||||
// @ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS!
|
||||
// $CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS!
|
||||
// $CFG->debugdisplay = 1; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// You can specify a comma separated list of user ids that that always see
|
||||
// debug messages, this overrides the debug flag in $CFG->debug and $CFG->debugdisplay
|
||||
// for these users only.
|
||||
// $CFG->debugusers = '2';
|
||||
//
|
||||
// Prevent theme caching
|
||||
// $CFG->themedesignermode = true; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Enable verbose debug information during fetching of email messages from IMAP server.
|
||||
// $CFG->debugimap = true;
|
||||
//
|
||||
// Prevent JS caching
|
||||
// $CFG->cachejs = false; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Restrict which YUI logging statements are shown in the browser console.
|
||||
// For details see the upstream documentation:
|
||||
// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logInclude
|
||||
// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logExclude
|
||||
// $CFG->yuiloginclude = array(
|
||||
// 'moodle-core-dock-loader' => true,
|
||||
// 'moodle-course-categoryexpander' => true,
|
||||
// );
|
||||
// $CFG->yuilogexclude = array(
|
||||
// 'moodle-core-dock' => true,
|
||||
// 'moodle-core-notification' => true,
|
||||
// );
|
||||
//
|
||||
// Set the minimum log level for YUI logging statements.
|
||||
// For details see the upstream documentation:
|
||||
// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logLevel
|
||||
// $CFG->yuiloglevel = 'debug';
|
||||
//
|
||||
// Prevent core_string_manager application caching
|
||||
// $CFG->langstringcache = false; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// When working with production data on test servers, no emails or other messages
|
||||
// should ever be send to real users
|
||||
// $CFG->noemailever = true; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Divert all outgoing emails to this address to test and debug emailing features
|
||||
// $CFG->divertallemailsto = 'root@localhost.local'; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Except for certain email addresses you want to let through for testing. Accepts
|
||||
// a comma separated list of regexes.
|
||||
// $CFG->divertallemailsexcept = 'tester@dev.com, fred(\+.*)?@example.com'; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Uncomment if you want to allow empty comments when modifying install.xml files.
|
||||
// $CFG->xmldbdisablecommentchecking = true; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Since 2.0 sql queries are not shown during upgrade by default.
|
||||
// Please note that this setting may produce very long upgrade page on large sites.
|
||||
// $CFG->upgradeshowsql = true; // NOT FOR PRODUCTION SERVERS!
|
||||
//
|
||||
// Add SQL queries to the output of cron, just before their execution
|
||||
// $CFG->showcronsql = true;
|
||||
//
|
||||
// Force developer level debug and add debug info to the output of cron
|
||||
// $CFG->showcrondebugging = true;
|
||||
//
|
||||
//=========================================================================
|
||||
// 8. FORCED SETTINGS
|
||||
//=========================================================================
|
||||
// It is possible to specify normal admin settings here, the point is that
|
||||
// they can not be changed through the standard admin settings pages any more.
|
||||
//
|
||||
// Core settings are specified directly via assignment to $CFG variable.
|
||||
// Example:
|
||||
// $CFG->somecoresetting = 'value';
|
||||
//
|
||||
// Plugin settings have to be put into a special array.
|
||||
// Example:
|
||||
// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'secondsetting' => 'othervalue'),
|
||||
// 'otherplugin' => array('mysetting' => 'myvalue', 'thesetting' => 'thevalue'));
|
||||
// Module default settings with advanced/locked checkboxes can be set too. To do this, add
|
||||
// an extra config with '_adv' or '_locked' as a suffix and set the value to true or false.
|
||||
// Example:
|
||||
// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'settingname_locked' => true, 'settingname_adv' => true));
|
||||
//
|
||||
//=========================================================================
|
||||
// 9. PHPUNIT SUPPORT
|
||||
//=========================================================================
|
||||
// $CFG->phpunit_prefix = 'phpu_';
|
||||
// $CFG->phpunit_dataroot = '/home/example/phpu_moodledata';
|
||||
// $CFG->phpunit_directorypermissions = 02777; // optional
|
||||
// $CFG->phpunit_profilingenabled = true; // optional to profile PHPUnit runs.
|
||||
//
|
||||
//
|
||||
//=========================================================================
|
||||
// 10. SECRET PASSWORD SALT
|
||||
//=========================================================================
|
||||
// A site-wide password salt is no longer used in new installations.
|
||||
// If upgrading from 2.6 or older, keep all existing salts in config.php file.
|
||||
//
|
||||
// $CFG->passwordsaltmain = 'a_very_long_random_string_of_characters#@6&*1';
|
||||
//
|
||||
// You may also have some alternative salts to allow migration from previously
|
||||
// used salts.
|
||||
//
|
||||
// $CFG->passwordsaltalt1 = '';
|
||||
// $CFG->passwordsaltalt2 = '';
|
||||
// $CFG->passwordsaltalt3 = '';
|
||||
// ....
|
||||
// $CFG->passwordsaltalt19 = '';
|
||||
// $CFG->passwordsaltalt20 = '';
|
||||
//
|
||||
//
|
||||
//=========================================================================
|
||||
// 11. BEHAT SUPPORT
|
||||
//=========================================================================
|
||||
// Behat test site needs a unique www root, data directory and database prefix:
|
||||
//
|
||||
// $CFG->behat_wwwroot = 'http://127.0.0.1/moodle';
|
||||
// $CFG->behat_prefix = 'bht_';
|
||||
// $CFG->behat_dataroot = '/home/example/bht_moodledata';
|
||||
//
|
||||
// You can override default Moodle configuration for Behat and add your own
|
||||
// params; here you can add more profiles, use different Mink drivers than Selenium...
|
||||
// These params would be merged with the default Moodle behat.yml, giving priority
|
||||
// to the ones specified here. The array format is YAML, following the Behat
|
||||
// params hierarchy. More info: http://docs.behat.org/guides/7.config.html
|
||||
// Example:
|
||||
// $CFG->behat_config = array(
|
||||
// 'Mac-Firefox' => array(
|
||||
// 'suites' => array (
|
||||
// 'default' => array(
|
||||
// 'filters' => array(
|
||||
// 'tags' => '~@_file_upload'
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// 'extensions' => array(
|
||||
// 'Behat\MinkExtension' => array(
|
||||
// 'selenium2' => array(
|
||||
// 'browser' => 'firefox',
|
||||
// 'capabilities' => array(
|
||||
// 'platform' => 'OS X 10.6',
|
||||
// 'version' => 20
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// ),
|
||||
// 'Mac-Safari' => array(
|
||||
// 'extensions' => array(
|
||||
// 'Behat\MinkExtension' => array(
|
||||
// 'selenium2' => array(
|
||||
// 'browser' => 'safari',
|
||||
// 'capabilities' => array(
|
||||
// 'platform' => 'OS X 10.8',
|
||||
// 'version' => 6
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// )
|
||||
// );
|
||||
// You can also use the following config to override default Moodle configuration for Behat.
|
||||
// This config is limited to default suite and will be supported in later versions.
|
||||
// It will have precedence over $CFG->behat_config.
|
||||
// $CFG->behat_profiles = array(
|
||||
// 'phantomjs' => array(
|
||||
// 'browser' => 'phantomjs',
|
||||
// 'tags' => '~@_file_upload&&~@_alert&&~@_bug_phantomjs',
|
||||
// 'wd_host' => 'http://127.0.0.1:4443/wd/hub',
|
||||
// 'capabilities' => array(
|
||||
// 'platform' => 'Linux',
|
||||
// 'version' => 2.1
|
||||
// )
|
||||
// ),
|
||||
// );
|
||||
//
|
||||
// You can force the browser session (not user's sessions) to restart after N seconds. This could
|
||||
// be useful if you are using a cloud-based service with time restrictions in the browser side.
|
||||
// Setting this value the browser session that Behat is using will be restarted. Set the time in
|
||||
// seconds. Is not recommended to use this setting if you don't explicitly need it.
|
||||
// Example:
|
||||
// $CFG->behat_restart_browser_after = 7200; // Restarts the browser session after 2 hours
|
||||
//
|
||||
// All this page's extra Moodle settings are compared against a white list of allowed settings
|
||||
// (the basic and behat_* ones) to avoid problems with production environments. This setting can be
|
||||
// used to expand the default white list with an array of extra settings.
|
||||
// Example:
|
||||
// $CFG->behat_extraallowedsettings = array('somecoresetting', ...);
|
||||
//
|
||||
// You should explicitly allow the usage of the deprecated behat steps, otherwise an exception will
|
||||
// be thrown when using them. The setting is disabled by default.
|
||||
// Example:
|
||||
// $CFG->behat_usedeprecated = true;
|
||||
//
|
||||
// Including feature files from directories outside the dirroot is possible if required. The setting
|
||||
// requires that the running user has executable permissions on all parent directories in the paths.
|
||||
// Example:
|
||||
// $CFG->behat_additionalfeatures = array('/home/developer/code/wipfeatures');
|
||||
//
|
||||
// You can make behat save several dumps when a scenario fails. The dumps currently saved are:
|
||||
// * a dump of the DOM in it's state at the time of failure; and
|
||||
// * a screenshot (JavaScript is required for the screenshot functionality, so not all browsers support this option)
|
||||
// Example:
|
||||
// $CFG->behat_faildump_path = '/my/path/to/save/failure/dumps';
|
||||
//
|
||||
// You can specify db, selenium wd_host etc. for behat parallel run by setting following variable.
|
||||
// Example:
|
||||
// $CFG->behat_parallel_run = array (
|
||||
// array (
|
||||
// 'dbtype' => 'mysqli',
|
||||
// 'dblibrary' => 'native',
|
||||
// 'dbhost' => 'localhost',
|
||||
// 'dbname' => 'moodletest',
|
||||
// 'dbuser' => 'moodle',
|
||||
// 'dbpass' => 'moodle',
|
||||
// 'behat_prefix' => 'mdl_',
|
||||
// 'wd_host' => 'http://127.0.0.1:4444/wd/hub',
|
||||
// 'behat_wwwroot' => 'http://127.0.0.1/moodle',
|
||||
// 'behat_dataroot' => '/home/example/bht_moodledata'
|
||||
// ),
|
||||
// );
|
||||
//
|
||||
// To change name of behat parallel run site, define BEHAT_PARALLEL_SITE_NAME and parallel run sites will be suffixed
|
||||
// with this value
|
||||
// Example:
|
||||
// define('BEHAT_PARALLEL_SITE_NAME', 'behatparallelsite');
|
||||
//
|
||||
// Command line output for parallel behat install is limited to 80 chars, if you are installing more then 4 sites and
|
||||
// want to expand output to more then 80 chars, then define BEHAT_MAX_CMD_LINE_OUTPUT
|
||||
// Example:
|
||||
// define('BEHAT_MAX_CMD_LINE_OUTPUT', 120);
|
||||
//
|
||||
// Behat feature files will be distributed randomly between the processes by default. If you have timing file or want
|
||||
// to create timing file then define BEHAT_FEATURE_TIMING_FILE with path to timing file. It will be updated for each
|
||||
// run with latest time taken to execute feature.
|
||||
// Example:
|
||||
// define('BEHAT_FEATURE_TIMING_FILE', '/PATH_TO_TIMING_FILE/timing.json');
|
||||
//
|
||||
// If you don't have timing file and want some stable distribution of features, then you can use step counts to
|
||||
// distribute the features. You can generate step file by executing php admin/tool/behat/cli/util.php --updatesteps
|
||||
// this will update step file which is defined by BEHAT_FEATURE_STEP_FILE.
|
||||
// Example:
|
||||
// define('BEHAT_FEATURE_STEP_FILE', '/PATH_TO_FEATURE_STEP_COUNT_FILE/stepcount.json');
|
||||
//
|
||||
// Feature distribution for each process is displayed as histogram. you can disable it by setting
|
||||
// BEHAT_DISABLE_HISTOGRAM
|
||||
// Example:
|
||||
// define('BEHAT_DISABLE_HISTOGRAM', true);
|
||||
//
|
||||
//=========================================================================
|
||||
// 12. DEVELOPER DATA GENERATOR
|
||||
//=========================================================================
|
||||
//
|
||||
// The developer data generator tool is intended to be used only in development or testing sites and
|
||||
// it's usage in production environments is not recommended; if it is used to create JMeter test plans
|
||||
// is even less recommended as JMeter needs to log in as site course users. JMeter needs to know the
|
||||
// users passwords but would be dangerous to have a default password as everybody would know it, which would
|
||||
// be specially dangerouse if somebody uses this tool in a production site, so in order to prevent unintended
|
||||
// uses of the tool and undesired accesses as well, is compulsory to set a password for the users
|
||||
// generated by this tool, but only in case you want to generate a JMeter test. The value should be a string.
|
||||
// Example:
|
||||
// $CFG->tool_generator_users_password = 'examplepassword';
|
||||
//
|
||||
//=========================================================================
|
||||
// 13. SYSTEM PATHS (You need to set following, depending on your system)
|
||||
//=========================================================================
|
||||
// Ghostscript path.
|
||||
// On most Linux installs, this can be left as '/usr/bin/gs'.
|
||||
// On Windows it will be something like 'c:\gs\bin\gswin32c.exe' (make sure
|
||||
// there are no spaces in the path - if necessary copy the files 'gswin32c.exe'
|
||||
// and 'gsdll32.dll' to a new folder without a space in the path)
|
||||
// $CFG->pathtogs = '/usr/bin/gs';
|
||||
//
|
||||
// Path to du.
|
||||
// Probably something like /usr/bin/du. If you enter this, pages that display
|
||||
// directory contents will run much faster for directories with a lot of files.
|
||||
// $CFG->pathtodu = '';
|
||||
//
|
||||
// Path to aspell.
|
||||
// To use spell-checking within the editor, you MUST have aspell 0.50 or later
|
||||
// installed on your server, and you must specify the correct path to access the
|
||||
// aspell binary. On Unix/Linux systems, this path is usually /usr/bin/aspell,
|
||||
// but it might be something else.
|
||||
// $CFG->aspellpath = '';
|
||||
//
|
||||
// Path to dot.
|
||||
// Probably something like /usr/bin/dot. To be able to generate graphics from
|
||||
// DOT files, you must have installed the dot executable and point to it here.
|
||||
// Note that, for now, this only used by the profiling features
|
||||
// (Development->Profiling) built into Moodle.
|
||||
// $CFG->pathtodot = '';
|
||||
//
|
||||
// Path to unoconv.
|
||||
// Probably something like /usr/bin/unoconv. Used as a fallback to convert between document formats.
|
||||
// Unoconv is used convert between file formats supported by LibreOffice.
|
||||
// Use a recent version of unoconv ( >= 0.7 ), older versions have trouble running from a webserver.
|
||||
// $CFG->pathtounoconv = '';
|
||||
//
|
||||
//=========================================================================
|
||||
// 14. ALTERNATIVE FILE SYSTEM SETTINGS
|
||||
//=========================================================================
|
||||
//
|
||||
// Alternative file system.
|
||||
// Since 3.3 it is possible to override file_storage and file_system API and use alternative storage systems (e.g. S3,
|
||||
// Rackspace Cloud Files, Google Cloud Storage, Azure Storage, etc.).
|
||||
// To set the alternative file storage system in config.php you can use the following setting, providing the
|
||||
// alternative system class name that will be auto-loaded by file_storage API.
|
||||
//
|
||||
// $CFG->alternative_file_system_class = '\\local_myfilestorage\\file_system';
|
||||
//
|
||||
//=========================================================================
|
||||
// ALL DONE! To continue installation, visit your main page with a browser
|
||||
//=========================================================================
|
||||
require_once(__DIR__ . '/lib/setup.php'); // Do not edit
|
||||
// There is no php closing tag in this file,
|
||||
// it is intentional because it prevents trailing whitespace problems!
|
|
@ -1 +1 @@
|
|||
* * * * * /usr/bin/php YNH_DOMAIN/admin/cli/cron.php >/dev/null
|
||||
*/15 * * * * /usr/bin/php__YNH_PHP_VERSION__ __FINAL_PATH__/admin/cli/cron.php >/dev/null
|
||||
|
|
|
@ -1,29 +1,23 @@
|
|||
location __PATH__ {
|
||||
#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;
|
||||
}
|
||||
|
||||
# Example PHP configuration (remove if not used)
|
||||
index index.php;
|
||||
|
||||
# Common parameter to increase upload size limit in conjuction with dedicated php-fpm file
|
||||
# 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/php5-fpm-__NAME__.sock;
|
||||
|
||||
# If you don't use a dedicated fpm config for your app,
|
||||
# use a general fpm pool.
|
||||
# This is to be used INSTEAD of line above
|
||||
# Don't forget to adjust scripts install/upgrade/remove/backup accordingly
|
||||
#
|
||||
#fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||
fastcgi_pass unix:/var/run/php/php__YNH_PHP_VERSION__-fpm-__NAME__.sock;
|
||||
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
|
@ -31,7 +25,6 @@ location __PATH__ {
|
|||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
# PHP configuration end
|
||||
|
||||
# Include SSOWAT user panel.
|
||||
include conf.d/yunohost_panel.conf.inc;
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
; Start a new pool named 'www'.
|
||||
; the variable $pool can we used in any directive and will be replaced by the
|
||||
; 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'
|
||||
|
@ -24,17 +25,19 @@ 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 address on
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses 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/php5-fpm-__NAMETOCHANGE__.sock
|
||||
listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock
|
||||
|
||||
; Set listen(2) backlog. A value of '-1' means unlimited.
|
||||
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
|
||||
;listen.backlog = 128
|
||||
; 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
|
||||
|
@ -44,8 +47,13 @@ listen = /var/run/php5-fpm-__NAMETOCHANGE__.sock
|
|||
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 ipv4 addresses of FastCGI clients which are allowed to connect.
|
||||
; 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
|
||||
|
@ -59,7 +67,13 @@ listen.group = www-data
|
|||
; - The pool processes will inherit the master process priority
|
||||
; unless it specified otherwise
|
||||
; Default Value: no set
|
||||
; priority = -19
|
||||
; 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:
|
||||
|
@ -96,7 +110,7 @@ pm = dynamic
|
|||
; 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 = 10
|
||||
pm.max_children = 5
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
|
@ -122,7 +136,7 @@ pm.max_spare_servers = 3
|
|||
; 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
|
||||
;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:
|
||||
|
@ -215,7 +229,7 @@ pm.max_requests = 500
|
|||
; last request memory: 0
|
||||
;
|
||||
; Note: There is a real-time FPM status monitoring sample web page available
|
||||
; It's available in: ${prefix}/share/fpm/status.html
|
||||
; 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
|
||||
|
@ -275,7 +289,7 @@ pm.max_requests = 500
|
|||
; - %{megabytes}M
|
||||
; - %{mega}M
|
||||
; %n: pool name
|
||||
; %o: ouput header
|
||||
; %o: output header
|
||||
; it must be associated with embraces to specify the name of the header:
|
||||
; - %{Content-Type}o
|
||||
; - %{X-Powered-By}o
|
||||
|
@ -291,9 +305,13 @@ pm.max_requests = 500
|
|||
; %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 %{<strftime_format>}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 %{<strftime_format>}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"
|
||||
|
@ -302,13 +320,13 @@ pm.max_requests = 500
|
|||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
slowlog = /var/log/nginx/__NAMETOCHANGE__.slow.log
|
||||
;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 = 5s
|
||||
;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
|
||||
|
@ -347,15 +365,24 @@ chdir = __FINALPATH__
|
|||
; Note: on highloaded environement, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
catch_workers_output = yes
|
||||
;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
|
||||
; exectute php code.
|
||||
; execute php code.
|
||||
; Note: set an empty value to allow all extensions.
|
||||
; Default Value: .php
|
||||
;security.limit_extensions = .php .php3 .php4 .php5
|
||||
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
|
@ -390,3 +417,14 @@ catch_workers_output = yes
|
|||
;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
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
; Common values to change to increase file upload limit
|
||||
; upload_max_filesize = 50M
|
||||
; post_max_size = 50M
|
||||
; mail.add_x_header = Off
|
||||
|
||||
; Other common parameters
|
||||
; max_execution_time = 600
|
||||
; max_input_time = 300
|
||||
; memory_limit = 256M
|
||||
; short_open_tag = On
|
|
@ -6,21 +6,19 @@
|
|||
"en": "Moodle package for YunoHost application.",
|
||||
"fr": "Moodle de package d’application pour YunoHost."
|
||||
},
|
||||
"version": "3.8.1",
|
||||
"version": "3.8.2",
|
||||
"url": "https://moodle.org/",
|
||||
"license": "GPL-3.0",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"maintainer": {
|
||||
"name": "Anmol Sharma",
|
||||
"email": "anmol@datamol.org"
|
||||
},
|
||||
"requirements": {
|
||||
"yunohost": ">= 3.0"
|
||||
"yunohost": ">= 3.5"
|
||||
},
|
||||
"multi_instance": true,
|
||||
"services": [
|
||||
"nginx",
|
||||
"php7.1-fpm",
|
||||
"psql"
|
||||
"nginx"
|
||||
],
|
||||
"arguments": {
|
||||
"install" : [
|
||||
|
@ -43,6 +41,23 @@
|
|||
"example": "/moodle",
|
||||
"default": "/moodle"
|
||||
},
|
||||
{
|
||||
"name": "admin",
|
||||
"type": "user",
|
||||
"ask": {
|
||||
"en": "Choose the Moodle administrator (must be an existing YunoHost user)",
|
||||
"fr": "Administrateur du site (doit être un utilisateur YunoHost existant)"
|
||||
},
|
||||
"example": "johndoe"
|
||||
},
|
||||
{
|
||||
"name": "password",
|
||||
"type": "password",
|
||||
"ask": {
|
||||
"en": "Choose a password for the administrator",
|
||||
"fr": "Choisissez un mot de passe pour l'administrateur"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "is_public",
|
||||
"type": "boolean",
|
||||
|
|
|
@ -1,72 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ============= FUTURE YUNOHOST HELPER =============
|
||||
# Delete a file checksum from the app settings
|
||||
#
|
||||
# $app should be defined when calling this helper
|
||||
#
|
||||
# usage: ynh_remove_file_checksum file
|
||||
# | arg: file - The file for which the checksum will be deleted
|
||||
ynh_delete_file_checksum () {
|
||||
local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_'
|
||||
ynh_app_setting_delete $app $checksum_setting_name
|
||||
}
|
||||
#=================================================
|
||||
# COMMON VARIABLES
|
||||
#=================================================
|
||||
|
||||
extra_pkg_dependencies="php7.1-zip php7.1-mysql php7.1-xml php7.1-intl php7.1-mbstring php7.1-gd php7.1-curl php7.1-soap php7.1-pgsql php7.1-xmlrpc"
|
||||
# dependencies used by the app
|
||||
YNH_PHP_VERSION="7.3"
|
||||
extra_pkg_dependencies="php$YNH_PHP_VERSION-common php$YNH_PHP_VERSION-mbstring php$YNH_PHP_VERSION-curl php$YNH_PHP_VERSION-xmlrpc php$YNH_PHP_VERSION-soap php$YNH_PHP_VERSION-zip php$YNH_PHP_VERSION-gd php$YNH_PHP_VERSION-xml php$YNH_PHP_VERSION-intl php$YNH_PHP_VERSION-json php$YNH_PHP_VERSION-pgsql php$YNH_PHP_VERSION-ldap"
|
||||
pkg_dependencies="postgresql"
|
||||
|
||||
# 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}"
|
||||
#=================================================
|
||||
# EXPERIMENTAL HELPERS
|
||||
#=================================================
|
||||
|
||||
# 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")
|
||||
# Execute a command as another user
|
||||
# usage: exec_as USER COMMAND [ARG ...]
|
||||
exec_as() {
|
||||
local USER=$1
|
||||
shift 1
|
||||
|
||||
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"
|
||||
}
|
||||
if [[ $USER = $(whoami) ]]; then
|
||||
eval "$@"
|
||||
else
|
||||
sudo -u "$USER" "$@"
|
||||
fi
|
||||
}
|
|
@ -6,65 +6,73 @@
|
|||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
source _common.sh
|
||||
source psql.sh
|
||||
source ../settings/scripts/_common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source ../settings/scripts/ynh_add_extra_apt_repos
|
||||
source ../settings/scripts/ynh_install_php
|
||||
|
||||
#=================================================
|
||||
# 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..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||
domain=$(ynh_app_setting_get "$app" domain)
|
||||
db_name=$(ynh_app_setting_get "$app" psql_db)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
data_path=$(ynh_app_setting_get --app=$app --key=data_path)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||
|
||||
#=================================================
|
||||
# STANDARD BACKUP STEPS
|
||||
#=================================================
|
||||
# BACKUP THE APP MAIN DIR
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up the main app directory..."
|
||||
|
||||
ynh_backup "$final_path"
|
||||
# BACKUP APP home directory
|
||||
ynh_backup "/home/yunohost.app/$app"
|
||||
ynh_backup --src_path="$final_path"
|
||||
|
||||
ynh_backup --src_path="$data_path"
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up nginx web server configuration..."
|
||||
|
||||
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up php-fpm configuration..."
|
||||
|
||||
ynh_backup "/etc/php5/fpm/pool.d/$app.conf"
|
||||
ynh_backup "/etc/php5/fpm/conf.d/20-$app.ini"
|
||||
ynh_backup --src_path="/etc/php/$YNH_PHP_VERSION/fpm/pool.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE PSQL DATABASE
|
||||
# BACKUP THE MYSQL DATABASE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up the PostgreSQL database..."
|
||||
|
||||
ynh_psql_dump_db "$db_name" > db.sql
|
||||
ynh_backup "db.sql"
|
||||
ynh_psql_dump_db --database="$db_name" > db.sql
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC BACKUP
|
||||
#=================================================
|
||||
# BACKUP THE CRON FILE
|
||||
# BACKUP A CRON FILE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up the cron file..."
|
||||
|
||||
ynh_backup --src_path="/etc/cron.d/$app"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_backup "/etc/cron.d/$app"
|
||||
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last
|
||||
|
|
187
scripts/install
187
scripts/install
|
@ -7,19 +7,14 @@
|
|||
#=================================================
|
||||
|
||||
source _common.sh
|
||||
source psql.sh
|
||||
source ynh_install_php
|
||||
source ynh_add_extra_apt_repos
|
||||
source /usr/share/yunohost/helpers
|
||||
source ynh_add_extra_apt_repos
|
||||
source ynh_install_php
|
||||
|
||||
#=================================================
|
||||
# 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
|
||||
|
||||
|
@ -29,177 +24,163 @@ ynh_abort_if_errors
|
|||
|
||||
domain=$YNH_APP_ARG_DOMAIN
|
||||
path_url=$YNH_APP_ARG_PATH
|
||||
admin=$YNH_APP_ARG_ADMIN
|
||||
password=$YNH_APP_ARG_PASSWORD
|
||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||
|
||||
# This is a multi-instance app, meaning it can be installed several times independently
|
||||
# The id of the app as stated in the manifest is available as $YNH_APP_ID
|
||||
# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...)
|
||||
# The app instance name is available as $YNH_APP_INSTANCE_NAME
|
||||
# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample
|
||||
# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2
|
||||
# - ynhexample__{N} for the subsequent installations, with N=3,4, ...
|
||||
# The app instance name is probably what you are interested the most, since this is
|
||||
# guaranteed to be unique. This is a good unique identifier to define installation path,
|
||||
# db names, ...
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Validating installation parameters..."
|
||||
|
||||
final_path=/var/www/$app
|
||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
||||
data_path=/home/yunohost.app/$app
|
||||
test ! -e "$data_path" || ynh_die --message="This path already contains a folder"
|
||||
|
||||
# Normalize the url path syntax
|
||||
path_url=$(ynh_normalize_url_path "$path_url")
|
||||
|
||||
# Check web path availability
|
||||
ynh_webpath_available "$domain" "$path_url"
|
||||
# Register (book) web path
|
||||
ynh_webpath_register "$app" "$domain" "$path_url"
|
||||
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
||||
|
||||
#=================================================
|
||||
# STORE SETTINGS FROM MANIFEST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Storing installation settings..."
|
||||
|
||||
ynh_app_setting_set "$app" domain "$domain"
|
||||
ynh_app_setting_set "$app" path "$path_url"
|
||||
ynh_app_setting_set "$app" is_public "$is_public"
|
||||
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=password --value=$password
|
||||
ynh_app_setting_set --app=$app --key=is_public --value=$is_public
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Installing dependencies..." --weight=60
|
||||
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
ynh_install_php --phpversion="$YNH_PHP_VERSION" --package="$extra_pkg_dependencies"
|
||||
|
||||
#=================================================
|
||||
# INSTALL PHP7.3 AND DEPENDENCIES (EXP HELPER)
|
||||
# CREATE POSTGRESQL DATABASE
|
||||
#=================================================
|
||||
ynh_print_info --message="Installing php7.1..."
|
||||
ynh_script_progression --message="Creating a PostgreSQL database..." --weight=4
|
||||
|
||||
ynh_install_php --phpversion="7.1" --package="$extra_pkg_dependencies"
|
||||
ynh_install_app_dependencies postgresql
|
||||
|
||||
#=================================================
|
||||
# Create postgresql database
|
||||
#=================================================
|
||||
|
||||
db_name=$app
|
||||
db_pwd=$(ynh_string_random 30)
|
||||
ynh_app_setting_set "$app" psql_db "$db_name"
|
||||
ynh_app_setting_set "$app" psqlpwd "$db_pwd"
|
||||
ynh_psql_test_if_first_run
|
||||
ynh_psql_create_user "$app" "$db_pwd"
|
||||
ynh_psql_execute_as_root \
|
||||
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
|
||||
|
||||
db_name=$(ynh_sanitize_dbid --db_name=$app)
|
||||
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name
|
||||
|
||||
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
||||
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Setting up source files..." --weight=6
|
||||
|
||||
ynh_app_setting_set "$app" final_path "$final_path"
|
||||
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 "$final_path"
|
||||
cp ../conf/config.php "$final_path"/.
|
||||
ynh_setup_source --dest_dir="$final_path"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configuring nginx web server..." --weight=2
|
||||
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
ynh_add_nginx_config YNH_PHP_VERSION
|
||||
|
||||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configuring system user..." --weight=2
|
||||
|
||||
# Create a system user
|
||||
ynh_system_user_create "$app"
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
|
||||
#=================================================
|
||||
# PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
### `ynh_add_fpm_config` is used to set up a PHP config.
|
||||
### You can remove it if your app doesn't use PHP.
|
||||
### `ynh_add_fpm_config` will use the files conf/php-fpm.conf and conf/php-fpm.ini
|
||||
### If you're not using these lines:
|
||||
### - You can remove these files in conf/.
|
||||
### - Remove the section "BACKUP THE PHP-FPM CONFIGURATION" in the backup script
|
||||
### - Remove also the section "REMOVE PHP-FPM CONFIGURATION" in the remove script
|
||||
### - As well as the section "RESTORE THE PHP-FPM CONFIGURATION" in the restore script
|
||||
### With the reload at the end of the script.
|
||||
### - And the section "PHP-FPM CONFIGURATION" in the upgrade script
|
||||
ynh_script_progression --message="Configuring php-fpm..." --weight=1
|
||||
|
||||
# Create a dedicated php-fpm config
|
||||
ynh_add_fpm_config --phpversion="7.1"
|
||||
ynh_add_fpm_config --phpversion="$YNH_PHP_VERSION"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC SETUP
|
||||
#=================================================
|
||||
# SETUP config file
|
||||
# SECURE FILES AND DIRECTORIES
|
||||
#=================================================
|
||||
var_root=/home/yunohost.app/$app
|
||||
ynh_replace_string "YNH_DB_USER" "$app" "$final_path/config.php"
|
||||
ynh_replace_string "YNH_APP" "$db_name" "$final_path/config.php"
|
||||
ynh_replace_string "YNH_DB_PWD" "$db_pwd" "$final_path/config.php"
|
||||
ynh_replace_string "YNH_DOMAIN" "$domain" "$final_path/config.php"
|
||||
if [ "$path_url" = "/" ]
|
||||
then
|
||||
ynh_replace_string "YNH_WWW_PATH" "" "$final_path/config.php"
|
||||
else
|
||||
ynh_replace_string "YNH_WWW_PATH" "$path_url" "$final_path/config.php"
|
||||
fi
|
||||
ynh_replace_string "YNH_VAR_ROOT" "$var_root" "$final_path/config.php"
|
||||
|
||||
ynh_app_setting_set --app=$app --key=data_path --value=$data_path
|
||||
mkdir -p $data_path
|
||||
chown -R "$app": "$data_path"
|
||||
chown -R "$app": "$final_path"
|
||||
|
||||
#=================================================
|
||||
# SETUP APPLICATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configuring the application..." --weight=190
|
||||
|
||||
email=$(ynh_user_get_info $admin mail)
|
||||
|
||||
exec_as "$app" php$YNH_PHP_VERSION "$final_path/admin/cli/install.php" --wwwroot="https://$domain${path_url%/}" --dataroot=$data_path --dbtype='pgsql' --dbname=$db_name --dbuser=$db_name --dbpass=$db_pwd --adminuser=$admin --adminpass=$password --adminemail=$email --fullname="YunoHost" --shortname="YNH" --non-interactive --agree-license
|
||||
|
||||
# Calculate and store the config file checksum into the app settings
|
||||
ynh_store_file_checksum "$final_path/config.php"
|
||||
|
||||
# Create the home directory
|
||||
mkdir -p "$var_root"
|
||||
chown -R "$app": "$var_root"
|
||||
chmod -R 700 "$var_root"
|
||||
|
||||
#=================================================
|
||||
# SETUP APPLICATION WITH CURL
|
||||
# ACTIVATE LDAP SUPPORT
|
||||
#=================================================
|
||||
|
||||
# Set right permissions for curl install
|
||||
chown -R "$app": "$final_path"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config SET value='ldap,email' WHERE name='auth';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='ldap://127.0.0.1/' WHERE plugin='auth_ldap' AND name='host_url';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='uid' WHERE plugin='auth_ldap' AND name='user_attribute';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='ou=users,dc=yunohost,dc=org' WHERE plugin='auth_ldap' AND name='contexts';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='givenName' WHERE plugin='auth_ldap' AND name='field_map_firstname';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='sn' WHERE plugin='auth_ldap' AND name='field_map_lastname';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='mail' WHERE plugin='auth_ldap' AND name='field_map_email';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='onlogin' WHERE plugin='auth_ldap' AND (name='field_updatelocal_firstname' OR name='field_updatelocal_lastname' OR name='field_updatelocal_email');"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='locked' WHERE plugin='auth_ldap' AND (name='field_lock_firstname' OR name='field_lock_lastname' OR name='field_lock_email');"
|
||||
|
||||
# Reload Nginx
|
||||
systemctl reload nginx
|
||||
exec_as "$app" php$YNH_PHP_VERSION "$final_path/admin/cli/purge_caches.php"
|
||||
|
||||
#=================================================
|
||||
# ADD CRON JOB
|
||||
#=================================================
|
||||
|
||||
# Set up poller
|
||||
sudo cp "../conf/cron" "/etc/cron.d/$app"
|
||||
ynh_replace_string "__FINAL_PATH__" "$final_path" "/etc/cron.d/$app"
|
||||
ynh_replace_string "__YNH_PHP_VERSION__" "$YNH_PHP_VERSION" "/etc/cron.d/$app"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# SECURE FILES AND DIRECTORIES
|
||||
#=================================================
|
||||
|
||||
# Set permissions to app files
|
||||
chown root: "$final_path"/config.php
|
||||
|
||||
|
||||
# Set up poller
|
||||
sudo cp ../conf/cron /etc/cron.d/"$app"
|
||||
ynh_replace_string "YNH_DOMAIN" "$final_path" "/etc/cron.d/$app"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
#=================================================
|
||||
|
||||
if [ "$is_public" -eq 0 ]
|
||||
then # Remove the public access
|
||||
ynh_app_setting_delete "$app" skipped_uris
|
||||
fi
|
||||
# Make app public if necessary
|
||||
if [ "$is_public" -eq 1 ]
|
||||
then
|
||||
# unprotected_uris allows SSO credentials to be passed anyway.
|
||||
ynh_app_setting_set "$app" unprotected_uris "/"
|
||||
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||
fi
|
||||
|
||||
yunohost app ssowatconf
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading nginx web server..." --weight=1
|
||||
|
||||
systemctl reload nginx
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Installation of $app completed" --last
|
||||
|
|
160
scripts/psql.sh
160
scripts/psql.sh
|
@ -1,160 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#=================================================
|
||||
#
|
||||
# POSTGRES HELPERS
|
||||
#
|
||||
# Point of contact : Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>
|
||||
#=================================================
|
||||
|
||||
# Create a master password and set up global settings
|
||||
# Please always call this script in install and restore scripts
|
||||
#
|
||||
# usage: ynh_psql_test_if_first_run
|
||||
|
||||
ynh_psql_test_if_first_run() {
|
||||
if [ -f /etc/yunohost/psql ];
|
||||
then
|
||||
echo "PostgreSQL is already installed, no need to create master password"
|
||||
else
|
||||
pgsql=$(ynh_string_random)
|
||||
pg_hba=""
|
||||
echo "$pgsql" >> /etc/yunohost/psql
|
||||
|
||||
if [ -e /etc/postgresql/9.4/ ]
|
||||
then
|
||||
pg_hba=/etc/postgresql/9.4/main/pg_hba.conf
|
||||
elif [ -e /etc/postgresql/9.6/ ]
|
||||
then
|
||||
pg_hba=/etc/postgresql/9.6/main/pg_hba.conf
|
||||
else
|
||||
ynh_die "postgresql shoud be 9.4 or 9.6"
|
||||
fi
|
||||
|
||||
systemctl start postgresql
|
||||
sudo --login --user=postgres psql -c"ALTER user postgres WITH PASSWORD '$pgsql'" postgres
|
||||
|
||||
# force all user to connect to local database using passwords
|
||||
# https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html#EXAMPLE-PG-HBA.CONF
|
||||
# Note: we can't use peer since YunoHost create users with nologin
|
||||
# See: https://github.com/YunoHost/yunohost/blob/unstable/data/helpers.d/user
|
||||
sed -i '/local\s*all\s*all\s*peer/i \
|
||||
local all all password' "$pg_hba"
|
||||
systemctl enable postgresql
|
||||
systemctl reload postgresql
|
||||
fi
|
||||
}
|
||||
|
||||
# Open a connection as a user
|
||||
#
|
||||
# example: ynh_psql_connect_as 'user' 'pass' <<< "UPDATE ...;"
|
||||
# example: ynh_psql_connect_as 'user' 'pass' < /path/to/file.sql
|
||||
#
|
||||
# usage: ynh_psql_connect_as user pwd [db]
|
||||
# | arg: user - the user name to connect as
|
||||
# | arg: pwd - the user password
|
||||
# | arg: db - the database to connect to
|
||||
ynh_psql_connect_as() {
|
||||
user="$1"
|
||||
pwd="$2"
|
||||
db="$3"
|
||||
sudo --login --user=postgres PGUSER="$user" PGPASSWORD="$pwd" psql "$db"
|
||||
}
|
||||
|
||||
# # Execute a command as root user
|
||||
#
|
||||
# usage: ynh_psql_execute_as_root sql [db]
|
||||
# | arg: sql - the SQL command to execute
|
||||
# | arg: db - the database to connect to
|
||||
ynh_psql_execute_as_root () {
|
||||
sql="$1"
|
||||
sudo --login --user=postgres psql <<< "$sql"
|
||||
}
|
||||
|
||||
# Execute a command from a file as root user
|
||||
#
|
||||
# usage: ynh_psql_execute_file_as_root file [db]
|
||||
# | arg: file - the file containing SQL commands
|
||||
# | arg: db - the database to connect to
|
||||
ynh_psql_execute_file_as_root() {
|
||||
file="$1"
|
||||
db="$2"
|
||||
sudo --login --user=postgres psql "$db" < "$file"
|
||||
}
|
||||
|
||||
# Create a database, an user and its password. Then store the password in the app's config
|
||||
#
|
||||
# After executing this helper, the password of the created database will be available in $db_pwd
|
||||
# It will also be stored as "psqlpwd" into the app settings.
|
||||
#
|
||||
# usage: ynh_psql_setup_db user name [pwd]
|
||||
# | arg: user - Owner of the database
|
||||
# | arg: name - Name of the database
|
||||
# | arg: pwd - Password of the database. If not given, a password will be generated
|
||||
ynh_psql_setup_db () {
|
||||
db_user="$1"
|
||||
db_name="$2"
|
||||
new_db_pwd=$(ynh_string_random) # Generate a random password
|
||||
# If $3 is not given, use new_db_pwd instead for db_pwd.
|
||||
db_pwd="${3:-$new_db_pwd}"
|
||||
ynh_psql_create_db "$db_name" "$db_user" "$db_pwd" # Create the database
|
||||
ynh_app_setting_set "$app" psqlpwd "$db_pwd" # Store the password in the app's config
|
||||
}
|
||||
|
||||
# Create a database and grant privilegies to a user
|
||||
#
|
||||
# usage: ynh_psql_create_db db [user [pwd]]
|
||||
# | arg: db - the database name to create
|
||||
# | arg: user - the user to grant privilegies
|
||||
# | arg: pwd - the user password
|
||||
ynh_psql_create_db() {
|
||||
db="$1"
|
||||
user="$2"
|
||||
pwd="$3"
|
||||
ynh_psql_create_user "$user" "$pwd"
|
||||
sudo --login --user=postgres createdb --owner="$user" "$db"
|
||||
}
|
||||
|
||||
# Drop a database
|
||||
#
|
||||
# usage: ynh_psql_drop_db db
|
||||
# | arg: db - the database name to drop
|
||||
# | arg: user - the user to drop
|
||||
ynh_psql_remove_db() {
|
||||
db="$1"
|
||||
user="$2"
|
||||
sudo --login --user=postgres dropdb "$db"
|
||||
ynh_psql_drop_user "$user"
|
||||
}
|
||||
|
||||
# Dump a database
|
||||
#
|
||||
# example: ynh_psql_dump_db 'roundcube' > ./dump.sql
|
||||
#
|
||||
# usage: ynh_psql_dump_db db
|
||||
# | arg: db - the database name to dump
|
||||
# | ret: the psqldump output
|
||||
ynh_psql_dump_db() {
|
||||
db="$1"
|
||||
sudo --login --user=postgres pg_dump "$db"
|
||||
}
|
||||
|
||||
|
||||
# Create a user
|
||||
#
|
||||
# usage: ynh_psql_create_user user pwd [host]
|
||||
# | arg: user - the user name to create
|
||||
ynh_psql_create_user() {
|
||||
user="$1"
|
||||
pwd="$2"
|
||||
sudo --login --user=postgres psql -c"CREATE USER $user WITH PASSWORD '$pwd'" postgres
|
||||
}
|
||||
|
||||
# Drop a user
|
||||
#
|
||||
# usage: ynh_psql_drop_user user
|
||||
# | arg: user - the user name to drop
|
||||
ynh_psql_drop_user() {
|
||||
user="$1"
|
||||
sudo --login --user=postgres dropuser "$user"
|
||||
}
|
|
@ -7,72 +7,52 @@
|
|||
#=================================================
|
||||
|
||||
source _common.sh
|
||||
source psql.sh
|
||||
source ynh_install_php
|
||||
source /usr/share/yunohost/helpers
|
||||
source ynh_add_extra_apt_repos
|
||||
source ynh_install_php
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_print_info "Loading installation settings..."
|
||||
ynh_script_progression --message="Loading installation settings..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get "$app" domain)
|
||||
db_name=$(ynh_app_setting_get "$app" psql_db)
|
||||
db_user=$db_name
|
||||
final_path=$(ynh_app_setting_get "$app" final_path)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
data_path=$(ynh_app_setting_get --app=$app --key=data_path)
|
||||
|
||||
#=================================================
|
||||
# STANDARD REMOVE
|
||||
#=================================================
|
||||
# REMOVE SERVICE FROM ADMIN PANEL
|
||||
#=================================================
|
||||
|
||||
# Remove a service from the admin panel, added by `yunohost service add`
|
||||
if yunohost service status "$app" >/dev/null 2>&1
|
||||
then
|
||||
ynh_print_info "Removing $app service"
|
||||
yunohost service remove "$app"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# STOP AND REMOVE SERVICE
|
||||
#=================================================
|
||||
ynh_print_info "Stopping and removing the systemd service"
|
||||
|
||||
# Remove the dedicated systemd config
|
||||
ynh_remove_systemd_config
|
||||
|
||||
#=================================================
|
||||
# REMOVE THE POSTGRESQL DATABASE
|
||||
#=================================================
|
||||
ynh_print_info "Removing the PostgreSQL database"
|
||||
ynh_script_progression --message="Removing the PostgresSQL database..."
|
||||
|
||||
# Remove a database if it exists, along with the associated user
|
||||
ynh_psql_remove_db "$db_name" "$db_name"
|
||||
ynh_psql_remove_db --db_user=$db_name --db_name=$db_name
|
||||
|
||||
#=================================================
|
||||
# REMOVE DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_print_info "Removing dependencies"
|
||||
ynh_script_progression --message="Removing dependencies..."
|
||||
|
||||
# Remove metapackage and its dependencies
|
||||
ynh_remove_app_dependencies
|
||||
ynh_remove_php
|
||||
|
||||
#=================================================
|
||||
# REMOVE APP MAIN DIR
|
||||
#=================================================
|
||||
ynh_print_info "Removing app main directory"
|
||||
ynh_script_progression --message="Removing app main directory..."
|
||||
|
||||
# Remove the app directory securely
|
||||
ynh_secure_remove "$final_path"
|
||||
ynh_secure_remove --file="$final_path"
|
||||
|
||||
#=================================================
|
||||
# REMOVE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_print_info "Removing nginx web server configuration"
|
||||
ynh_script_progression --message="Removing nginx web server configuration..."
|
||||
|
||||
# Remove the dedicated nginx config
|
||||
ynh_remove_nginx_config
|
||||
|
@ -80,18 +60,11 @@ ynh_remove_nginx_config
|
|||
#=================================================
|
||||
# REMOVE PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_print_info "Removing php-fpm configuration"
|
||||
ynh_script_progression --message="Removing php-fpm configuration..." --weight=20
|
||||
|
||||
# Remove the dedicated php-fpm config
|
||||
ynh_remove_fpm_config
|
||||
|
||||
#=================================================
|
||||
# REMOVE LOGROTATE CONFIGURATION
|
||||
#=================================================
|
||||
ynh_print_info "Removing logrotate configuration"
|
||||
|
||||
# Remove the app-specific logrotate config
|
||||
ynh_remove_logrotate
|
||||
ynh_remove_php "$YNH_PHP_VERSION"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC REMOVE
|
||||
|
@ -100,27 +73,23 @@ ynh_remove_logrotate
|
|||
#=================================================
|
||||
|
||||
# Remove a cron file
|
||||
ynh_secure_remove "/etc/cron.d/$app"
|
||||
ynh_secure_remove --file="/etc/cron.d/$app"
|
||||
|
||||
# Remove a directory securely
|
||||
ynh_secure_remove "/etc/$app/"
|
||||
ynh_secure_remove "/home/yunohost.app/$app"
|
||||
|
||||
# Remove the log files
|
||||
ynh_secure_remove "/var/log/$app/"
|
||||
ynh_secure_remove --file="$data_path"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# REMOVE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_print_info "Removing the dedicated system user"
|
||||
ynh_script_progression --message="Removing the dedicated system user..."
|
||||
|
||||
# Delete a system user
|
||||
ynh_system_user_delete "$app"
|
||||
ynh_system_user_delete --username=$app
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_print_info "Removal of $app completed"
|
||||
ynh_script_progression --message="Removal of $app completed" --last
|
||||
|
|
|
@ -5,41 +5,43 @@
|
|||
#=================================================
|
||||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
source _common.sh
|
||||
source psql.sh
|
||||
|
||||
source ../settings/scripts/_common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source ../settings/scripts/ynh_add_extra_apt_repos
|
||||
source ../settings/scripts/ynh_install_php
|
||||
|
||||
#=================================================
|
||||
# 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 settings..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
path_url=$(ynh_app_setting_get $app path)
|
||||
final_path=$(ynh_app_setting_get $app final_path)
|
||||
db_name=$(ynh_app_setting_get $app psql_db)
|
||||
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
||||
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)
|
||||
data_path=$(ynh_app_setting_get --app=$app --key=data_path)
|
||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE RESTORED
|
||||
#=================================================
|
||||
ynh_script_progression --message="Validating restoration parameters..."
|
||||
|
||||
ynh_webpath_available $domain $path_url \
|
||||
|| ynh_die "Path not available: ${domain}${path_url}"
|
||||
ynh_webpath_available --domain=$domain --path_url=$path_url \
|
||||
|| ynh_die --message="Path not available: ${domain}${path_url}"
|
||||
test ! -d $final_path \
|
||||
|| ynh_die "There is already a directory: $final_path "
|
||||
|| ynh_die --message="There is already a directory: $final_path "
|
||||
test ! -d $data_path \
|
||||
|| ynh_die --message="There is already a directory: $data_path "
|
||||
|
||||
#=================================================
|
||||
# STANDARD RESTORATION STEPS
|
||||
|
@ -47,30 +49,24 @@ test ! -d $final_path \
|
|||
# RESTORE THE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE APP MAIN DIR
|
||||
#=================================================
|
||||
var_root=/home/yunohost.app/$app
|
||||
ynh_restore_file "$final_path"
|
||||
ynh_restore_file "$var_root"
|
||||
ynh_script_progression --message="Restoring the app main directory..."
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE psql DATABASE
|
||||
#=================================================
|
||||
ynh_psql_test_if_first_run
|
||||
ynh_psql_create_user $app $db_pwd
|
||||
ynh_psql_execute_as_root \
|
||||
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
|
||||
ynh_psql_execute_file_as_root ./db.sql "$db_name"
|
||||
ynh_restore_file --origin_path="$final_path"
|
||||
|
||||
ynh_restore_file --origin_path="$data_path"
|
||||
|
||||
#=================================================
|
||||
# RECREATE THE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Recreating the dedicated system user..."
|
||||
|
||||
# Create the dedicated user (if not existing)
|
||||
ynh_system_user_create $app
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
#=================================================
|
||||
# RESTORE USER RIGHTS
|
||||
|
@ -78,38 +74,52 @@ ynh_system_user_create $app
|
|||
|
||||
# Restore permissions on app files
|
||||
chown -R $app: $final_path
|
||||
chown -R root: $final_path/config.php
|
||||
mkdir -p $var_root
|
||||
chown -R $app: $var_root
|
||||
chmod -R 700 $var_root
|
||||
chown -R $app: $data_path
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
|
||||
ynh_restore_file "/etc/php5/fpm/pool.d/$app.conf"
|
||||
ynh_restore_file "/etc/php5/fpm/conf.d/20-$app.ini"
|
||||
ynh_restore_file --origin_path="/etc/php/$YNH_PHP_VERSION/fpm/pool.d/$app.conf"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC RESTORATION
|
||||
#=================================================
|
||||
# REINSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reinstalling dependencies..." --weight=60
|
||||
|
||||
# Define and install dependencies
|
||||
ynh_install_app_dependencies php-zip php-mysql php-xml php-intl php-mbstring php-gd php-curl php-soap php-pgsql php-xmlrpc postgresql
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
ynh_install_php --phpversion="$YNH_PHP_VERSION" --package="$extra_pkg_dependencies"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE MYSQL DATABASE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the PostgreSQL database..."--weight=47
|
||||
|
||||
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$db_pwd
|
||||
ynh_psql_connect_as --user=$db_name --password=$db_pwd --database=$db_name < ./db.sql
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE CRON FILE
|
||||
#=================================================
|
||||
|
||||
ynh_restore_file "/etc/cron.d/$app"
|
||||
ynh_restore_file --origin_path="/etc/cron.d/$app"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# RELOAD NGINX AND PHP-FPM
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading nginx web server and php-fpm..."
|
||||
|
||||
systemctl reload php5-fpm
|
||||
systemctl reload nginx
|
||||
ynh_systemd_action --service_name=php$YNH_PHP_VERSION-fpm --action=reload
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_script_progression --message="Restoration completed for $app" --last
|
||||
|
|
152
scripts/upgrade
152
scripts/upgrade
|
@ -6,53 +6,46 @@
|
|||
# IMPORT GENERIC HELPERS
|
||||
#=================================================
|
||||
|
||||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
source ynh_add_extra_apt_repos
|
||||
source ynh_install_php
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_print_info "Loading installation settings..."
|
||||
ynh_script_progression --message="Loading installation settings..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get $app domain)
|
||||
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)
|
||||
#language=$(ynh_app_setting_get $app language)
|
||||
db_name=$(ynh_app_setting_get $app db_name)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
data_path=$(ynh_app_setting_get --app=$app --key=data_path)
|
||||
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||
|
||||
#=================================================
|
||||
# CHECK VERSION
|
||||
#=================================================
|
||||
|
||||
upgrade_type=$(ynh_check_app_version_changed)
|
||||
|
||||
#=================================================
|
||||
# ENSURE DOWNWARD COMPATIBILITY
|
||||
#=================================================
|
||||
ynh_print_info "Ensuring downward compatibility..."
|
||||
ynh_script_progression --message="Ensuring downward compatibility..."
|
||||
|
||||
# Fix is_public as a boolean value
|
||||
if [ "$is_public" = "Yes" ]; then
|
||||
ynh_app_setting_set $app is_public 1
|
||||
is_public=1
|
||||
elif [ "$is_public" = "No" ]; then
|
||||
ynh_app_setting_set $app is_public 0
|
||||
is_public=0
|
||||
fi
|
||||
|
||||
# If db_name doesn't exist, create it
|
||||
if [ -z $db_name ]; then
|
||||
db_name=$(ynh_sanitize_dbid $app)
|
||||
ynh_app_setting_set $app db_name $db_name
|
||||
fi
|
||||
|
||||
# If final_path doesn't exist, create it
|
||||
if [ -z $final_path ]; then
|
||||
final_path=/var/www/$app
|
||||
ynh_app_setting_set $app final_path $final_path
|
||||
# If the admin is not defined, We can't upgrade this app
|
||||
if [ -z $admin ]; then
|
||||
ynh_die --message="This app can't be upgraded from a very old version of the package. Please remove and reinstall Moodle_ynh"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
ynh_print_info "Backing up the app before upgrading (may take a while)..."
|
||||
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=30
|
||||
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
|
@ -63,83 +56,64 @@ ynh_clean_setup () {
|
|||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
cp -a $final_path $final_path.backup
|
||||
|
||||
#=================================================
|
||||
# CHECK THE PATH
|
||||
#=================================================
|
||||
|
||||
# Normalize the URL path syntax
|
||||
path_url=$(ynh_normalize_url_path $path_url)
|
||||
|
||||
#=================================================
|
||||
# STANDARD UPGRADE STEPS
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
ynh_print_info "Upgrading source files..."
|
||||
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source "$final_path"
|
||||
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||
then
|
||||
ynh_script_progression --message="Upgrading source files..." --weight=6
|
||||
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source --dest_dir="$final_path"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_print_info "Upgrading nginx web server configuration..."
|
||||
ynh_script_progression --message="Upgrading nginx web server configuration..."
|
||||
|
||||
# Create a dedicated nginx config
|
||||
ynh_add_nginx_config
|
||||
ynh_add_nginx_config YNH_PHP_VERSION
|
||||
|
||||
#=================================================
|
||||
# UPGRADE DEPENDENCIES
|
||||
#=================================================
|
||||
#ynh_print_info "Upgrading dependencies..."
|
||||
ynh_script_progression --message="Upgrading dependencies..." --weight=30
|
||||
|
||||
#ynh_install_app_dependencies $pkg_dependencies
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
ynh_install_php --phpversion="$YNH_PHP_VERSION" --package="$extra_pkg_dependencies"
|
||||
|
||||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_print_info "Making sure dedicated system user exists..."
|
||||
ynh_script_progression --message="Making sure dedicated system user exists..."
|
||||
|
||||
# Create a dedicated user (if not existing)
|
||||
ynh_system_user_create $app
|
||||
ynh_system_user_create --username=$app
|
||||
|
||||
#=================================================
|
||||
# PHP-FPM CONFIGURATION
|
||||
#=================================================
|
||||
ynh_print_info "Upgrading php-fpm configuration..."
|
||||
ynh_script_progression --message="Upgrading php-fpm configuration..."
|
||||
|
||||
# Create a dedicated php-fpm config
|
||||
ynh_add_fpm_config
|
||||
ynh_add_fpm_config --phpversion="$YNH_PHP_VERSION"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC UPGRADE
|
||||
#=================================================
|
||||
# ...
|
||||
# STORE THE CONFIG FILE CHECKSUM
|
||||
#=================================================
|
||||
|
||||
### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
||||
### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it.
|
||||
ynh_backup_if_checksum_is_different "$final_path/config.php"
|
||||
ynh_backup_if_checksum_is_different --file="$final_path/config.php"
|
||||
|
||||
exec_as "$app" php$YNH_PHP_VERSION "$final_path/admin/cli/upgrade.php" --non-interactive
|
||||
|
||||
# Recalculate and store the checksum of the file for the next upgrade.
|
||||
ynh_store_file_checksum "$final_path/config.php"
|
||||
|
||||
#=================================================
|
||||
# SETUP LOGROTATE
|
||||
#=================================================
|
||||
ynh_print_info "Upgrading logrotate configuration..."
|
||||
|
||||
# Use logrotate to manage app-specific logfile(s)
|
||||
ynh_use_logrotate --non-append
|
||||
|
||||
#=================================================
|
||||
# SETUP SYSTEMD
|
||||
#=================================================
|
||||
#ynh_print_info "Upgrading systemd configuration..."
|
||||
|
||||
# Create a dedicated systemd config
|
||||
#ynh_add_systemd_config
|
||||
ynh_store_file_checksum --file="$final_path/config.php"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
|
@ -148,29 +122,55 @@ ynh_use_logrotate --non-append
|
|||
#=================================================
|
||||
|
||||
# Set permissions on app files
|
||||
chown root: $final_path/config.php
|
||||
chown -R "$app": "$data_path"
|
||||
chown -R "$app": "$final_path"
|
||||
|
||||
#=================================================
|
||||
# ADD CRON JOB
|
||||
#=================================================
|
||||
|
||||
# Set up poller
|
||||
sudo cp "../conf/cron" "/etc/cron.d/$app"
|
||||
ynh_replace_string "__FINAL_PATH__" "$final_path" "/etc/cron.d/$app"
|
||||
ynh_replace_string "__YNH_PHP_VERSION__" "$YNH_PHP_VERSION" "/etc/cron.d/$app"
|
||||
|
||||
#=================================================
|
||||
# ACTIVATE LDAP SUPPORT
|
||||
#=================================================
|
||||
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config SET value='ldap,email' WHERE name='auth';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='ldap://127.0.0.1/' WHERE plugin='auth_ldap' AND name='host_url';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='uid' WHERE plugin='auth_ldap' AND name='user_attribute';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='ou=users,dc=yunohost,dc=org' WHERE plugin='auth_ldap' AND name='contexts';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='givenName' WHERE plugin='auth_ldap' AND name='field_map_firstname';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='sn' WHERE plugin='auth_ldap' AND name='field_map_lastname';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='mail' WHERE plugin='auth_ldap' AND name='field_map_email';"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='onlogin' WHERE plugin='auth_ldap' AND (name='field_updatelocal_firstname' OR name='field_updatelocal_lastname' OR name='field_updatelocal_email');"
|
||||
ynh_psql_execute_as_root --database=$db_name --sql="UPDATE public.mdl_config_plugins SET value='locked' WHERE plugin='auth_ldap' AND (name='field_lock_firstname' OR name='field_lock_lastname' OR name='field_lock_email');"
|
||||
|
||||
exec_as "$app" php$YNH_PHP_VERSION "$final_path/admin/cli/purge_caches.php"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
#=================================================
|
||||
ynh_print_info "Upgrading SSOwat configuration..."
|
||||
ynh_script_progression --message="Upgrading SSOwat configuration..."
|
||||
|
||||
# Make app public if necessary
|
||||
if [ $is_public -eq 1 ]
|
||||
then
|
||||
# unprotected_uris allows SSO credentials to be passed anyway
|
||||
ynh_app_setting_set $app unprotected_uris "/"
|
||||
ynh_app_setting_set --app=$app --key=unprotected_uris --value="/"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_print_info "Reloading nginx web server..."
|
||||
ynh_script_progression --message="Reloading nginx web server..."
|
||||
|
||||
systemctl reload nginx
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
||||
ynh_print_info "Upgrade of $app completed"
|
||||
ynh_script_progression --message="Upgrade of $app completed" --last
|
||||
|
|
|
@ -1,88 +1,74 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Pin a repository.
|
||||
# Add dependencies to install with ynh_install_app_dependencies
|
||||
#
|
||||
# usage: ynh_pin_repo --package=packages --pin=pin_filter [--priority=priority_value] [--name=name] [--append]
|
||||
# | arg: -p, --package - Packages concerned by the pin. Or all, *.
|
||||
# | arg: -i, --pin - Filter for the pin.
|
||||
# | arg: -p, --priority - Priority for the pin
|
||||
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||
# | arg: -a, --append - Do not overwrite existing files.
|
||||
# [internal]
|
||||
#
|
||||
# See https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html for information about pinning.
|
||||
#
|
||||
ynh_pin_repo () {
|
||||
# usage: ynh_add_app_dependencies --package=phpversion [--replace]
|
||||
# | arg: -p, --package - Packages to add as dependencies for the app.
|
||||
# | arg: -r, --replace - Replace dependencies instead of adding to existing ones.
|
||||
ynh_add_app_dependencies () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=pirna
|
||||
declare -Ar args_array=( [p]=package= [i]=pin= [r]=priority= [n]=name= [a]=append )
|
||||
local legacy_args=pr
|
||||
declare -Ar args_array=( [p]=package= [r]=replace)
|
||||
local package
|
||||
local pin
|
||||
local priority
|
||||
local name
|
||||
local append
|
||||
local replace
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
package="${package:-*}"
|
||||
priority=${priority:-50}
|
||||
name="${name:-$app}"
|
||||
append=${append:-0}
|
||||
replace=${replace:-0}
|
||||
|
||||
if [ $append -eq 1 ]
|
||||
local current_dependencies=""
|
||||
if [ $replace -eq 0 ]
|
||||
then
|
||||
append="tee -a"
|
||||
else
|
||||
append="tee"
|
||||
local dep_app=${app//_/-} # Replace all '_' by '-'
|
||||
if ynh_package_is_installed --package="${dep_app}-ynh-deps"
|
||||
then
|
||||
current_dependencies="$(dpkg-query --show --showformat='${Depends}' ${dep_app}-ynh-deps) "
|
||||
fi
|
||||
|
||||
current_dependencies=${current_dependencies// | /|}
|
||||
fi
|
||||
|
||||
mkdir -p "/etc/apt/preferences.d"
|
||||
echo "Package: $package
|
||||
Pin: $pin
|
||||
Pin-Priority: $priority" \
|
||||
| $append "/etc/apt/preferences.d/$name"
|
||||
ynh_install_app_dependencies "${current_dependencies}${package}"
|
||||
}
|
||||
|
||||
# Add a repository.
|
||||
# Install packages from an extra repository properly.
|
||||
#
|
||||
# usage: ynh_add_repo --uri=uri --suite=suite --component=component [--name=name] [--append]
|
||||
# | arg: -u, --uri - Uri of the repository.
|
||||
# | arg: -s, --suite - Suite of the repository.
|
||||
# | arg: -c, --component - Component of the repository.
|
||||
# usage: ynh_install_extra_app_dependencies --repo="repo" --package="dep1 dep2" [--key=key_url] [--name=name]
|
||||
# | arg: -r, --repo - Complete url of the extra repository.
|
||||
# | arg: -p, --package - The packages to install from this extra repository
|
||||
# | arg: -k, --key - url to get the public key.
|
||||
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||
# | arg: -a, --append - Do not overwrite existing files.
|
||||
#
|
||||
# Example for a repo like deb http://forge.yunohost.org/debian/ stretch stable
|
||||
# uri suite component
|
||||
# ynh_add_repo --uri=http://forge.yunohost.org/debian/ --suite=stretch --component=stable
|
||||
#
|
||||
ynh_add_repo () {
|
||||
ynh_install_extra_app_dependencies () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=uscna
|
||||
declare -Ar args_array=( [u]=uri= [s]=suite= [c]=component= [n]=name= [a]=append )
|
||||
local uri
|
||||
local suite
|
||||
local component
|
||||
local legacy_args=rpkn
|
||||
declare -Ar args_array=( [r]=repo= [p]=package= [k]=key= [n]=name= )
|
||||
local repo
|
||||
local package
|
||||
local key
|
||||
local name
|
||||
local append
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
name="${name:-$app}"
|
||||
append=${append:-0}
|
||||
key=${key:-0}
|
||||
|
||||
if [ $append -eq 1 ]
|
||||
# Set a key only if asked
|
||||
if [ -n "$key" ]
|
||||
then
|
||||
append="tee -a"
|
||||
else
|
||||
append="tee"
|
||||
key="--key=$key"
|
||||
fi
|
||||
# Add an extra repository for those packages
|
||||
ynh_install_extra_repo --repo="$repo" $key --priority=995 --name=$name
|
||||
|
||||
mkdir -p "/etc/apt/sources.list.d"
|
||||
# Add the new repo in sources.list.d
|
||||
echo "deb $uri $suite $component" \
|
||||
| $append "/etc/apt/sources.list.d/$name.list"
|
||||
# Install requested dependencies from this extra repository.
|
||||
ynh_add_app_dependencies --package="$package"
|
||||
|
||||
# Remove this extra repository after packages are installed
|
||||
ynh_remove_extra_repo --name=$app
|
||||
}
|
||||
|
||||
# Add an extra repository correctly, pin it and get the key.
|
||||
#
|
||||
# [internal]
|
||||
#
|
||||
# usage: ynh_install_extra_repo --repo="repo" [--key=key_url] [--priority=priority_value] [--name=name] [--append]
|
||||
# | arg: -r, --repo - Complete url of the extra repository.
|
||||
# | arg: -k, --key - url to get the public key.
|
||||
|
@ -154,6 +140,8 @@ ynh_install_extra_repo () {
|
|||
|
||||
# Remove an extra repository and the assiociated configuration.
|
||||
#
|
||||
# [internal]
|
||||
#
|
||||
# usage: ynh_remove_extra_repo [--name=name]
|
||||
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||
ynh_remove_extra_repo () {
|
||||
|
@ -174,121 +162,88 @@ ynh_remove_extra_repo () {
|
|||
ynh_package_update
|
||||
}
|
||||
|
||||
# Install packages from an extra repository properly.
|
||||
# Add a repository.
|
||||
#
|
||||
# usage: ynh_install_extra_app_dependencies --repo="repo" --package="dep1 dep2" [--key=key_url] [--name=name]
|
||||
# | arg: -r, --repo - Complete url of the extra repository.
|
||||
# | arg: -p, --package - The packages to install from this extra repository
|
||||
# | arg: -k, --key - url to get the public key.
|
||||
# [internal]
|
||||
#
|
||||
# usage: ynh_add_repo --uri=uri --suite=suite --component=component [--name=name] [--append]
|
||||
# | arg: -u, --uri - Uri of the repository.
|
||||
# | arg: -s, --suite - Suite of the repository.
|
||||
# | arg: -c, --component - Component of the repository.
|
||||
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||
ynh_install_extra_app_dependencies () {
|
||||
# | arg: -a, --append - Do not overwrite existing files.
|
||||
#
|
||||
# Example for a repo like deb http://forge.yunohost.org/debian/ stretch stable
|
||||
# uri suite component
|
||||
# ynh_add_repo --uri=http://forge.yunohost.org/debian/ --suite=stretch --component=stable
|
||||
#
|
||||
ynh_add_repo () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=rpkn
|
||||
declare -Ar args_array=( [r]=repo= [p]=package= [k]=key= [n]=name= )
|
||||
local repo
|
||||
local package
|
||||
local key
|
||||
local legacy_args=uscna
|
||||
declare -Ar args_array=( [u]=uri= [s]=suite= [c]=component= [n]=name= [a]=append )
|
||||
local uri
|
||||
local suite
|
||||
local component
|
||||
local name
|
||||
local append
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
name="${name:-$app}"
|
||||
key=${key:-0}
|
||||
append=${append:-0}
|
||||
|
||||
# Set a key only if asked
|
||||
if [ -n "$key" ]
|
||||
if [ $append -eq 1 ]
|
||||
then
|
||||
key="--key=$key"
|
||||
append="tee -a"
|
||||
else
|
||||
append="tee"
|
||||
fi
|
||||
# Add an extra repository for those packages
|
||||
ynh_install_extra_repo --repo="$repo" $key --priority=995 --name=$name
|
||||
|
||||
# Install requested dependencies from this extra repository.
|
||||
ynh_add_app_dependencies --package="$package"
|
||||
|
||||
# Remove this extra repository after packages are installed
|
||||
ynh_remove_extra_repo --name=$app
|
||||
mkdir -p "/etc/apt/sources.list.d"
|
||||
# Add the new repo in sources.list.d
|
||||
echo "deb $uri $suite $component" \
|
||||
| $append "/etc/apt/sources.list.d/$name.list"
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
||||
# patched version of ynh_install_app_dependencies to be used with ynh_add_app_dependencies
|
||||
|
||||
# Define and install dependencies with a equivs control file
|
||||
# This helper can/should only be called once per app
|
||||
# Pin a repository.
|
||||
#
|
||||
# usage: ynh_install_app_dependencies dep [dep [...]]
|
||||
# | arg: dep - the package name to install in dependence
|
||||
# You can give a choice between some package with this syntax : "dep1|dep2"
|
||||
# Example : ynh_install_app_dependencies dep1 dep2 "dep3|dep4|dep5"
|
||||
# This mean in the dependence tree : dep1 & dep2 & (dep3 | dep4 | dep5)
|
||||
# [internal]
|
||||
#
|
||||
# Requires YunoHost version 2.6.4 or higher.
|
||||
ynh_install_app_dependencies () {
|
||||
local dependencies=$@
|
||||
dependencies="$(echo "$dependencies" | sed 's/\([^\<=\>]\)\ \([^(]\)/\1, \2/g')"
|
||||
dependencies=${dependencies//|/ | }
|
||||
local manifest_path="../manifest.json"
|
||||
if [ ! -e "$manifest_path" ]; then
|
||||
manifest_path="../settings/manifest.json" # Into the restore script, the manifest is not at the same place
|
||||
fi
|
||||
|
||||
local version=$(grep '\"version\": ' "$manifest_path" | cut -d '"' -f 4) # Retrieve the version number in the manifest file.
|
||||
if [ ${#version} -eq 0 ]; then
|
||||
version="1.0"
|
||||
fi
|
||||
local dep_app=${app//_/-} # Replace all '_' by '-'
|
||||
|
||||
# Handle specific versions
|
||||
if [[ "$dependencies" =~ [\<=\>] ]]
|
||||
then
|
||||
# Replace version specifications by relationships syntax
|
||||
# https://www.debian.org/doc/debian-policy/ch-relationships.html
|
||||
# Sed clarification
|
||||
# [^(\<=\>] ignore if it begins by ( or < = >. To not apply twice.
|
||||
# [\<=\>] matches < = or >
|
||||
# \+ matches one or more occurence of the previous characters, for >= or >>.
|
||||
# [^,]\+ matches all characters except ','
|
||||
# Ex: package>=1.0 will be replaced by package (>= 1.0)
|
||||
dependencies="$(echo "$dependencies" | sed 's/\([^(\<=\>]\)\([\<=\>]\+\)\([^,]\+\)/\1 (\2 \3)/g')"
|
||||
fi
|
||||
|
||||
cat > /tmp/${dep_app}-ynh-deps.control << EOF # Make a control file for equivs-build
|
||||
Section: misc
|
||||
Priority: optional
|
||||
Package: ${dep_app}-ynh-deps
|
||||
Version: ${version}
|
||||
Depends: ${dependencies}
|
||||
Architecture: all
|
||||
Description: Fake package for $app (YunoHost app) dependencies
|
||||
This meta-package is only responsible of installing its dependencies.
|
||||
EOF
|
||||
ynh_package_install_from_equivs /tmp/${dep_app}-ynh-deps.control \
|
||||
|| ynh_die --message="Unable to install dependencies" # Install the fake package and its dependencies
|
||||
rm /tmp/${dep_app}-ynh-deps.control
|
||||
ynh_app_setting_set --app=$app --key=apt_dependencies --value="$dependencies"
|
||||
}
|
||||
|
||||
ynh_add_app_dependencies () {
|
||||
# usage: ynh_pin_repo --package=packages --pin=pin_filter [--priority=priority_value] [--name=name] [--append]
|
||||
# | arg: -p, --package - Packages concerned by the pin. Or all, *.
|
||||
# | arg: -i, --pin - Filter for the pin.
|
||||
# | arg: -p, --priority - Priority for the pin
|
||||
# | arg: -n, --name - Name for the files for this repo, $app as default value.
|
||||
# | arg: -a, --append - Do not overwrite existing files.
|
||||
#
|
||||
# See https://manpages.debian.org/stretch/apt/apt_preferences.5.en.html for information about pinning.
|
||||
#
|
||||
ynh_pin_repo () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=pr
|
||||
declare -Ar args_array=( [p]=package= [r]=replace)
|
||||
local legacy_args=pirna
|
||||
declare -Ar args_array=( [p]=package= [i]=pin= [r]=priority= [n]=name= [a]=append )
|
||||
local package
|
||||
local replace
|
||||
local pin
|
||||
local priority
|
||||
local name
|
||||
local append
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
replace=${replace:-0}
|
||||
package="${package:-*}"
|
||||
priority=${priority:-50}
|
||||
name="${name:-$app}"
|
||||
append=${append:-0}
|
||||
|
||||
local current_dependencies=""
|
||||
if [ $replace -eq 0 ]
|
||||
if [ $append -eq 1 ]
|
||||
then
|
||||
local dep_app=${app//_/-} # Replace all '_' by '-'
|
||||
if ynh_package_is_installed --package="${dep_app}-ynh-deps"
|
||||
then
|
||||
current_dependencies="$(dpkg-query --show --showformat='${Depends}' ${dep_app}-ynh-deps) "
|
||||
fi
|
||||
|
||||
current_dependencies=${current_dependencies// | /|}
|
||||
append="tee -a"
|
||||
else
|
||||
append="tee"
|
||||
fi
|
||||
|
||||
ynh_install_app_dependencies "${current_dependencies}${package}"
|
||||
}
|
||||
mkdir -p "/etc/apt/preferences.d"
|
||||
echo "Package: $package
|
||||
Pin: $pin
|
||||
Pin-Priority: $priority
|
||||
" \
|
||||
| $append "/etc/apt/preferences.d/$name"
|
||||
}
|
|
@ -33,12 +33,13 @@ ynh_install_php () {
|
|||
# Install php-fpm first, otherwise php will install apache as a dependency.
|
||||
ynh_add_app_dependencies --package="php${phpversion}-fpm"
|
||||
ynh_add_app_dependencies --package="php$phpversion php${phpversion}-common $package"
|
||||
|
||||
|
||||
# Set php7.0 back as the default version for php-cli.
|
||||
update-alternatives --set php /usr/bin/php7.0
|
||||
|
||||
# Remove this extra repository after packages are installed
|
||||
ynh_remove_extra_repo --name=extra_php_version
|
||||
# Pin this extra repository after packages are installed to prevent sury of doing shit
|
||||
ynh_pin_repo --package="*" --pin="origin \"packages.sury.org\"" --priority=200 --name=extra_php_version
|
||||
ynh_pin_repo --package="php7.0*" --pin="origin \"packages.sury.org\"" --priority=600 --name=extra_php_version --append
|
||||
|
||||
# Advertise service in admin panel
|
||||
yunohost service add php${phpversion}-fpm --log "/var/log/php${phpversion}-fpm.log"
|
||||
|
@ -74,4 +75,4 @@ ynh_remove_php () {
|
|||
then
|
||||
ynh_secure_remove /etc/php/ynh_app_version
|
||||
fi
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue