mirror of
https://github.com/YunoHost-Apps/shaarli_ynh.git
synced 2024-09-03 20:26:10 +02:00
Add support for multi instances and config at install
This commit is contained in:
parent
c91c1b6fd9
commit
329c1f774b
9 changed files with 176 additions and 31 deletions
60
conf/config.json.php
Normal file
60
conf/config.json.php
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?php /*
|
||||
{
|
||||
"resource": {
|
||||
"data_dir": "data",
|
||||
"config": "data\/config.php",
|
||||
"datastore": "data\/datastore.php",
|
||||
"ban_file": "data\/ipbans.php",
|
||||
"updates": "data\/updates.txt",
|
||||
"log": "data\/log.txt",
|
||||
"update_check": "data\/lastupdatecheck.txt",
|
||||
"raintpl_tpl": "tpl\/",
|
||||
"raintpl_tmp": "tmp\/",
|
||||
"thumbnails_cache": "cache",
|
||||
"page_cache": "pagecache"
|
||||
},
|
||||
"security": {
|
||||
"ban_after": 4,
|
||||
"ban_duration": 1800,
|
||||
"session_protection_disabled": false,
|
||||
"open_shaarli": false
|
||||
},
|
||||
"general": {
|
||||
"header_link": "?",
|
||||
"links_per_page": 20,
|
||||
"enabled_plugins": [
|
||||
"qrcode"
|
||||
],
|
||||
"timezone": "YNH_TIMEZONE",
|
||||
"title": "YNH_TITLE"
|
||||
},
|
||||
"updates": {
|
||||
"check_updates": true,
|
||||
"check_updates_branch": "stable",
|
||||
"check_updates_interval": 86400
|
||||
},
|
||||
"feed": {
|
||||
"rss_permalinks": true,
|
||||
"show_atom": false
|
||||
},
|
||||
"privacy": {
|
||||
"default_private_links": YNH_PRIVATE_LINK_BY_DEFAULT,
|
||||
"hide_public_links": false,
|
||||
"hide_timestamps": false
|
||||
},
|
||||
"thumbnail": {
|
||||
"enable_thumbnails": true,
|
||||
"enable_localcache": true
|
||||
},
|
||||
"redirector": {
|
||||
"url": "",
|
||||
"encode_url": true
|
||||
},
|
||||
"plugins": [],
|
||||
"credentials": {
|
||||
"login": "YNH_ADMIN",
|
||||
"salt": "YNH_SALT",
|
||||
"hash": "YNH_HASH"
|
||||
}
|
||||
}
|
||||
*/ ?>
|
1
conf/datastore.php
Normal file
1
conf/datastore.php
Normal file
|
@ -0,0 +1 @@
|
|||
<?php /* tVPJbtswEL3nKyYq0F5sSbYcLzSKAnEPDdDATeygSS8BJY0t1hSpkJRTJ/C/dyg5LRqkly6EDuRoljfz3nDWZ4+CxVPOJuzR0isQeTAVrDe17IQFTjiJAd1H9IBFwbmRgoErECo0VisuO1AKJUouhXUdsDXZuyvu70p3c+54yi1CjlJkQtcWMqlVkzJhQW1kc5uwoHCusiyK1sIVdRpmuoxsWy46lI3uxUZ4916PBTnazIjKCa2aDDHZPqOkMASnn5Aew7IQFujb6drAShjroKpTwgKp1puSm00ISw2YCwfaeJjoEErs+Agoa/Jvo6ReCxUeHZGzRG4UFPreV6qpuUO1DmRa2Vq6Zj5SqA28vqu1m35AWUW5zuoSleMec2sH3rqm2jldgl7Ri7BWfI1U6YYA+Ozeg/oqayXczg+40sZhDlsigFK1YUjoBSHk8gkNVEZ/xYx4SHewQGLBCVSw4PXW529IZUFlxJY79JTHrSUzSAYSwZyNWfCe7ktRYkB0kT4GNPnGnaQyZEE/7o26cb/bHwKRQpZBEsbNaXhKvIBKfCDCb92uaqok9GP8034QwtVyFkz3TX7H17aJJlHoCpUl5jIEq1funpsmgOJtQUM4yIeAnIu+mq0P/6gBefsn0tp73T/fhPjZJiQE95x4QBqUA+vq1SoMQ+jCJ5owpiQSKvCrvidxC4IwWEztgQGFLqp8TPRuPEgGaX80SYZZPBkOJq/Sy9G1vS70UnzM7mbVRVrOq1ORmLv+w8PF1eykOD0bfVn25sm38dvfrMSQxrIo6BzD2ZsSOByoboWpldzBzfwKMq6oFwzBy80/fqwAqVu/IJPeX8vk5J/KhDpvuWioeFkew8HZZfqSPP43M/v9dw== */ ?>
|
7
conf/gen_hash.php
Normal file
7
conf/gen_hash.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
|
||||
echo sha1($argv[1].$argv[2].$argv[3]);
|
||||
|
||||
?>
|
||||
|
10
conf/ipbans.php
Normal file
10
conf/ipbans.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
$GLOBALS['IPBANS']=array (
|
||||
'FAILURES' =>
|
||||
array (
|
||||
),
|
||||
'BANS' =>
|
||||
array (
|
||||
),
|
||||
);
|
||||
?>
|
1
conf/lastupdatecheck.txt
Normal file
1
conf/lastupdatecheck.txt
Normal file
|
@ -0,0 +1 @@
|
|||
0.7.0 */
|
0
conf/log.txt
Normal file
0
conf/log.txt
Normal file
1
conf/updates.txt
Normal file
1
conf/updates.txt
Normal file
|
@ -0,0 +1 @@
|
|||
updateMethodMergeDeprecatedConfigFile;updateMethodRenameDashTags;updateMethodConfigToJson;updateMethodEscapeUnescapedConfig;updateMethodDatastoreIds
|
|
@ -2,6 +2,9 @@
|
|||
"name": "Shaarli",
|
||||
"id": "shaarli",
|
||||
"packaging_format": 1,
|
||||
"requirements": {
|
||||
"yunohost": ">> 2.3.15"
|
||||
},
|
||||
"description": {
|
||||
"en": "The personal, minimalist, super-fast, no-database delicious clone",
|
||||
"fr": "Clone de delicious, rapide, simple et sans base de données."
|
||||
|
@ -11,7 +14,7 @@
|
|||
},
|
||||
"url": "https://github.com/shaarli/Shaarli",
|
||||
"version": "0.8.3",
|
||||
"multi_instance": "false",
|
||||
"multi_instance": "true",
|
||||
"arguments": {
|
||||
"install" : [
|
||||
{
|
||||
|
@ -34,7 +37,7 @@
|
|||
"default": "/shaarli"
|
||||
},
|
||||
{
|
||||
"name": "public",
|
||||
"name": "is_public",
|
||||
"ask": {
|
||||
"en": "Is it a public Shaarli site ?",
|
||||
"fr": "Est-ce un site Shaarli public ?"
|
||||
|
@ -68,6 +71,14 @@
|
|||
"fr": "Administrateur"
|
||||
},
|
||||
"example": "test"
|
||||
},
|
||||
{
|
||||
"name": "password",
|
||||
"type": "password",
|
||||
"ask": {
|
||||
"en": "Define password for Shaarli user",
|
||||
"fr": "Définissez le mot de passe de l'utilisateur Shaarli"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
112
scripts/install
112
scripts/install
|
@ -1,12 +1,38 @@
|
|||
#!/bin/bash
|
||||
|
||||
# causes the shell to exit if any subcommand or pipeline returns a non-zero status
|
||||
set -e
|
||||
|
||||
# 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
|
||||
|
||||
# Retrieve arguments
|
||||
domain=$1
|
||||
path=$2
|
||||
is_public=$3
|
||||
title=$4
|
||||
privatelinkbydefault=$5
|
||||
admin=$6
|
||||
domain=$YNH_APP_ARG_DOMAIN
|
||||
path=$YNH_APP_ARG_PATH
|
||||
admin=$YNH_APP_ARG_ADMIN
|
||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||
title=$YNH_APP_ARG_TITLE
|
||||
privatelinkbydefault=$YNH_APP_ARG_PRIVATELINKBYDEFAULT
|
||||
password=$YNH_APP_ARG_PASSWORD
|
||||
|
||||
# <TODO: cleaning>
|
||||
## Retrieve arguments
|
||||
#domain=$1
|
||||
#path=$2
|
||||
#is_public=$3
|
||||
#title=$4
|
||||
#privatelinkbydefault=$5
|
||||
#admin=$6
|
||||
# </TODO>
|
||||
|
||||
# Load common variables and helpers
|
||||
source ./_common.sh
|
||||
|
@ -17,10 +43,10 @@ if [[ ! $? -eq 0 ]]; then
|
|||
echo "Error : the chosen admin user does not exist"
|
||||
exit 1
|
||||
fi
|
||||
sudo yunohost app setting shaarli admin -v $admin
|
||||
sudo yunohost app setting $app admin -v $admin
|
||||
|
||||
# Check domain/path availability
|
||||
sudo yunohost app checkurl $domain$path -a shaarli
|
||||
sudo yunohost app checkurl $domain$path -a $app
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
@ -29,53 +55,81 @@ fi
|
|||
sudo apt-get install php5-cli -y -qq
|
||||
|
||||
# Copy files to the right place
|
||||
app_home_path=/home/yunohost.app/shaarli
|
||||
final_path=/var/www/shaarli
|
||||
app_home_path=/home/yunohost.app/$app
|
||||
final_path=/var/www/$app
|
||||
|
||||
sudo mkdir -p $final_path
|
||||
# Download and extract in /var/www
|
||||
extract_shaarli
|
||||
|
||||
sudo mkdir -p $app_home_path/data
|
||||
sudo mkdir -p $app_home_path/cache
|
||||
sudo mkdir -p $app_home_path/pagecache
|
||||
sudo mkdir -p $app_home_path/tmp
|
||||
sudo mkdir -p $app_home_path/conf
|
||||
sudo chown -R www-data: $app_home_path
|
||||
# <TODO: cleaning>
|
||||
#sudo mkdir -p $app_home_path/data
|
||||
#sudo mkdir -p $app_home_path/cache
|
||||
#sudo mkdir -p $app_home_path/pagecache
|
||||
#sudo mkdir -p $app_home_path/tmp
|
||||
#sudo mkdir -p $app_home_path/conf
|
||||
#sudo chown -R www-data: $app_home_path
|
||||
# </TODO>
|
||||
|
||||
# generate the salt
|
||||
salt=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p')
|
||||
|
||||
# generate the hash with the password
|
||||
password_hash=$(php ../conf/gen_hash.php $password $admin $salt)
|
||||
|
||||
# set the proper value for substitution
|
||||
if [ $privatelinkbydefault = "No" ]; then
|
||||
privatelinkbydefault_php=false
|
||||
else
|
||||
privatelinkbydefault_php=true
|
||||
fi
|
||||
|
||||
sudo sed -i "s@YNH_SALT@$salt@g" ../conf/init_config.php
|
||||
sudo sed -i "s@YNH_TIMEZONE@$(cat /etc/timezone)@g" ../conf/init_config.php
|
||||
sudo sed -i "s@YNH_TITLE@$title@g" ../conf/init_config.php
|
||||
sudo sed -i "s@YNH_PRIVATE_LINK_BY_DEFAULT@$privatelinkbydefault_php@g" ../conf/init_config.php
|
||||
sudo sed -i "s@YNH_ADMIN@$admin@g" ../conf/init_config.php
|
||||
# Prepare the configuration file
|
||||
sudo sed -i "s@YNH_SALT@$salt@g" ../conf/config.json.php
|
||||
sudo sed -i "s@YNH_ADMIN@$admin@g" ../conf/config.json.php
|
||||
sudo sed -i "s@YNH_HASH@$password_hash@g" ../conf/config.json.php
|
||||
sudo sed -i "s@YNH_TIMEZONE@$(cat /etc/timezone)@g" ../conf/config.json.php
|
||||
sudo sed -i "s@YNH_TITLE@$title@g" ../conf/config.json.php
|
||||
sudo sed -i "s@YNH_PRIVATE_LINK_BY_DEFAULT@$privatelinkbydefault_php@g" ../conf/config.json.php
|
||||
|
||||
sudo cp ../conf/options.php $app_home_path/data/options.php
|
||||
sudo cp ../conf/init_config.php $app_home_path/data/config.php
|
||||
sudo php ../conf/init_config_user.php $(sudo yunohost user list --json | python ../conf/user_list.py)
|
||||
# <TODO: cleaning>
|
||||
#sudo sed -i "s@YNH_SALT@$salt@g" ../conf/init_config.php
|
||||
#sudo sed -i "s@YNH_TIMEZONE@$(cat /etc/timezone)@g" ../conf/init_config.php
|
||||
#sudo sed -i "s@YNH_TITLE@$title@g" ../conf/init_config.php
|
||||
#sudo sed -i "s@YNH_PRIVATE_LINK_BY_DEFAULT@$privatelinkbydefault_php@g" ../conf/init_config.php
|
||||
#sudo sed -i "s@YNH_ADMIN@$admin@g" ../conf/init_config.php
|
||||
#
|
||||
#sudo cp ../conf/options.php $app_home_path/data/options.php
|
||||
#sudo cp ../conf/init_config.php $app_home_path/data/config.php
|
||||
#sudo php ../conf/init_config_user.php $(sudo yunohost user list --json | python ../conf/user_list.py)
|
||||
# </TODO>
|
||||
|
||||
# Populate the data directory of the shaarli instance
|
||||
sudo cp ../conf/config.json.php $final_path/data
|
||||
sudo cp ../conf/datastore.php $final_path/data
|
||||
sudo cp ../conf/ipbans.php $final_path/data
|
||||
sudo cp ../conf/lastupdatecheck.txt $final_path/data
|
||||
sudo cp ../conf/log.txt $final_path/data
|
||||
sudo cp ../conf/updates.txt $final_path/data
|
||||
|
||||
sudo find $final_path -type f | xargs sudo chmod 644
|
||||
sudo find $final_path -type d | xargs sudo chmod 755
|
||||
#sudo chown -R root: $final_path
|
||||
|
||||
sudo find $app_home_path -type f | xargs sudo chmod 600
|
||||
sudo find $app_home_path -type d | xargs sudo chmod 700
|
||||
sudo chown -R www-data: $app_home_path
|
||||
# <TODO: cleaning>
|
||||
#sudo find $app_home_path -type f | xargs sudo chmod 600
|
||||
#sudo find $app_home_path -type d | xargs sudo chmod 700
|
||||
#sudo chown -R www-data: $app_home_path
|
||||
# </TODO>
|
||||
|
||||
# Modify Nginx configuration file and copy it to Nginx conf directory
|
||||
sudo sed -i "s@YNH_WWW_PATH@$path@g" ../conf/nginx.conf
|
||||
sudo sed -i "s@YNH_ALIAS@$final_path@g" ../conf/nginx.conf
|
||||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/shaarli.conf
|
||||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
|
||||
|
||||
# Reload Nginx and regenerate SSOwat conf
|
||||
if [ $is_public = "Yes" ]; then
|
||||
sudo yunohost app setting shaarli unprotected_uris -v "/"
|
||||
sudo yunohost app setting $app unprotected_uris -v "/"
|
||||
fi
|
||||
sudo service nginx reload
|
||||
sudo yunohost app ssowatconf
|
||||
|
|
Loading…
Add table
Reference in a new issue