1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rainloop_ynh.git synced 2024-09-03 20:16:18 +02:00

Merge branch 'test'

Conflicts:
	conf/data/configs/application.ini
	scripts/install
	scripts/upgrade
This commit is contained in:
Djip007 2015-10-25 01:13:13 +02:00
commit ffb79c3c0f
11 changed files with 220 additions and 217 deletions

View file

@ -138,7 +138,7 @@ sign_me_auto = "DefaultOff"
enable = On enable = On
; List of enabled plugins ; List of enabled plugins
enabled_list = "ynh-login-mapping,ynh-ldap-addressbooks" enabled_list = "PLUGINSTOENABLE"
[defaults] [defaults]
; Editor mode used by default (Plain, Html, HtmlForced or PlainForced) ; Editor mode used by default (Plain, Html, HtmlForced or PlainForced)

View file

@ -35,7 +35,7 @@
{ {
"name": "is_public", "name": "is_public",
"ask": { "ask": {
"en": "Is it a public application ?", "en": "Is it a public application?",
"fr": "Est-ce une page publique ?" "fr": "Est-ce une page publique ?"
}, },
"choices": ["Yes", "No"], "choices": ["Yes", "No"],
@ -48,6 +48,15 @@
"en": "Choose a strong password for the 'admin' user", "en": "Choose a strong password for the 'admin' user",
"fr": "Choisissez un mot de passe fort pour l'administrateur 'admin'" "fr": "Choisissez un mot de passe fort pour l'administrateur 'admin'"
} }
},
{
"name": "ldap",
"ask": {
"en": "Do you want to add YunoHost users to the recipients suggestions?",
"fr": "Souhaitez-vous ajouter les utilisateurs YunoHost dans les suggestions de destinataires ?"
},
"choices": ["Yes", "No"],
"default": "Yes"
} }
] ]
} }

View file

@ -1,132 +1,132 @@
#!/bin/bash #!/bin/bash
set -e
app=rainloop app=rainloop
# Retrieve arguments # Retrieve arguments
domain=$1 domain=$1
path=$2 path=$2
is_public=$3 is_public=$3
password=$4 password=$4
ldap=$5
# Removal of trailing / # Removal of trailing /
if [ $path = "/" ] if [ $path = "/" ]
then then
#sitename="root" echo "Installation on the root of the domain"
echo "Installation on the root of the domain" else
else path=${path%/}
# sitename == path without any "/" fi
#sitename=$(echo $path | cut -d '/' -f 2)
# Removal of trailing /
# path can be null but not really an issue for the remaining commands
path=${path%/}
fi
# Check domain/path availability # Check domain/path availability
sudo yunohost app checkurl $domain$path -a rainloop sudo yunohost app checkurl $domain$path -a rainloop
if [[ ! $? -eq 0 ]]; then if [[ ! $? -eq 0 ]]; then
exit 1 exit 1
fi fi
# Generate random password # Generate random password, use 'rainloop' as database name and user and intialize databse
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p') db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p')
db_user=$app
sudo yunohost app initdb $db_user -p $db_pwd
sudo yunohost app setting $app mysqlpwd -v $db_pwd
# Use 'rainloop' as database name and user # Create the final path and copy sources
db_user=$app final_path=/var/www/$app
rainloop_path=${final_path}/app
# Initialize database and store mysql password for upgrade sudo rm -rf $final_path
sudo yunohost app initdb $db_user -p $db_pwd sudo mkdir -p $final_path
sudo yunohost app setting rainloop mysqlpwd -v $db_pwd sudo mkdir -p $rainloop_path
#mysql -u $db_user -p$db_pwd $db_user < ../sources/plugins/automatic_addressbook/SQL/mysql.initial.sql # Use of latest community edition
sudo unzip -q ../sources/rainloop-community.zip -d $rainloop_path/
# Copy files to the right place # Install plugins
final_path=/var/www/$app sudo mkdir -p $rainloop_path/data/_data_/_default_/plugins
rainloop_path=${final_path}/app sudo cp -rf ../sources/plugins/ynh-login-mapping $rainloop_path/data/_data_/_default_/plugins/.
#rainloop_path=${final_path} sudo cp -rf ../sources/plugins/ynh-ldap-suggestions $rainloop_path/data/_data_/_default_/plugins/.
sudo rm -rf $final_path
sudo mkdir -p $final_path
sudo mkdir -p $rainloop_path
# Use of latest community edition
sudo unzip ../sources/rainloop-community.zip -d $rainloop_path/
# Autoconfig # Autoconfig
sudo mkdir -p $rainloop_path/data/_data_/_default_/configs/ sudo mkdir -p $rainloop_path/data/_data_/_default_/configs/
application_file=$rainloop_path/data/_data_/_default_/configs/application.ini application_file=$rainloop_path/data/_data_/_default_/configs/application.ini
if [ $(echo $LANG | cut -c1-2) == "fr" ]
then # Set lang
lang=fr if [ $(echo $LANG | cut -c1-2) == "fr" ]
else then
lang=en lang=fr
fi else
sudo cp ../conf/data/configs/application.ini $application_file lang=en
sudo sed -i "s@domain.tld@$domain@g" $application_file fi
sudo sed -i "s@MYSQLUSER@$db_user@g" $application_file
sudo sed -i "s@MYSQLPASSWORD@$db_pwd@g" $application_file # Set plugins
sudo sed -i "s@LANGTOCHANGE@$lang@g" $application_file plugins="ynh-login-mapping"
if [ "$ldap" = "Yes" ];
then
plugins="$plugins,ynh-ldap-suggestions"
fi
sudo yunohost app setting $app plugins -v $plugins
sudo cp ../conf/data/configs/application.ini $application_file
sudo sed -i "s@domain.tld@$domain@g" $application_file
sudo sed -i "s@MYSQLUSER@$db_user@g" $application_file
sudo sed -i "s@MYSQLPASSWORD@$db_pwd@g" $application_file
sudo sed -i "s@LANGTOCHANGE@$lang@g" $application_file
sudo sed -i "s@PLUGINSTOENABLE@$plugins@g" $application_file
# Set admin password # Set admin password
sudo php ../conf/config.php --index="$rainloop_path/index.php" --password="$password" sudo php ../conf/config.php --index="$rainloop_path/index.php" --password="$password"
# Add default domain configs by looping through all the domains already added # Add default domain configs by looping through all the domains already added
sudo mkdir -p $rainloop_path/data/_data_/_default_/domains/ sudo mkdir -p $rainloop_path/data/_data_/_default_/domains/
# get list of ldap domains # get list of ldap domains
alldomains=`ldapsearch -LLL -x -b ou=domains,dc=yunohost,dc=org -s one "objectclass=top" virtualdomain | grep -v "dn:" | sed "s/virtualdomain://" ` alldomains=`ldapsearch -LLL -x -b ou=domains,dc=yunohost,dc=org -s one "objectclass=top" virtualdomain | grep -v "dn:" | sed "s/virtualdomain://" `
for alldomain in $alldomains ; do for alldomain in $alldomains ; do
sudo cp ../conf/data/domains/domain.tld.ini $rainloop_path/data/_data_/_default_/domains/$alldomain.ini sudo cp ../conf/data/domains/domain.tld.ini $rainloop_path/data/_data_/_default_/domains/$alldomain.ini
sudo sed -i "s@domain.tld@$alldomain@g" $rainloop_path/data/_data_/_default_/domains/$alldomain.ini sudo sed -i "s@domain.tld@$alldomain@g" $rainloop_path/data/_data_/_default_/domains/$alldomain.ini
done done
sudo cp ../conf/data/domains/disabled $rainloop_path/data/_data_/_default_/domains/disabled sudo cp ../conf/data/domains/disabled $rainloop_path/data/_data_/_default_/domains/disabled
# now install ynh plugins:
sudo mkdir -p $rainloop_path/data/_data_/_default_/plugins
sudo cp -rf ../sources/plugins/ynh-login-mapping $rainloop_path/data/_data_/_default_/plugins/.
sudo cp -rf ../sources/plugins/ynh-ldap-addressbooks $rainloop_path/data/_data_/_default_/plugins/.
# Hooks for domains are not implemented yet, so new domains will not be added automatically # Hooks for domains are not implemented yet, so new domains will not be added automatically
# install SSO and auto version # install SSO and auto version - at the moment the index is the SSO and rainloop is installed in /app
if [ $final_path == $rainloop_path ] if [ $final_path == $rainloop_path ]
then then
# use modified version of master index.php that implement sso # use modified version of master index.php that implement sso
sudo cp ../sources/sso/index.php $final_path/index.php sudo cp ../sources/sso/index.php $final_path/index.php
else else
# use only sso on master # use only sso on master
sudo cp ../sources/sso/sso.php $final_path/index.php sudo cp ../sources/sso/sso.php $final_path/index.php
sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php
fi fi
sudo sed -i "s@domain.tld@$domain@g" $final_path/index.php sudo sed -i "s@domain.tld@$domain@g" $final_path/index.php
sudo sed -i "s@PATHTOCHANGE@$path@g" $final_path/index.php sudo sed -i "s@PATHTOCHANGE@$path@g" $final_path/index.php
# Set permissions to rainloop directory # Set permissions to rainloop directory
sudo chown -R www-data:www-data $final_path sudo chown -R www-data:www-data $final_path
# Install Nginx configuration file # Install Nginx configuration file
nginx_conf_file=/etc/nginx/conf.d/$domain.d/$app.conf nginx_conf_file=/etc/nginx/conf.d/$domain.d/$app.conf
sudo cp ../conf/nginx.conf $nginx_conf_file sudo cp ../conf/nginx.conf $nginx_conf_file
sudo sed -i "s@PATHTOCHANGE@$path@g" $nginx_conf_file sudo sed -i "s@PATHTOCHANGE@$path@g" $nginx_conf_file
sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" $nginx_conf_file sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" $nginx_conf_file
sudo sed -i "s@NAMETOCHANGE@$app@g" $nginx_conf_file sudo sed -i "s@NAMETOCHANGE@$app@g" $nginx_conf_file
sudo chown root: $nginx_conf_file sudo chown root: $nginx_conf_file
sudo chmod 644 $nginx_conf_file sudo chmod 644 $nginx_conf_file
finalphpconf=/etc/php5/fpm/pool.d/$app.conf finalphpconf=/etc/php5/fpm/pool.d/$app.conf
sudo cp ../conf/php-fpm.conf $finalphpconf sudo cp ../conf/php-fpm.conf $finalphpconf
sudo sed -i "s@NAMETOCHANGE@$app@g" $finalphpconf sudo sed -i "s@NAMETOCHANGE@$app@g" $finalphpconf
sudo chown root: $finalphpconf sudo chown root: $finalphpconf
sudo chmod 644 $finalphpconf sudo chmod 644 $finalphpconf
# Make app public if necessary # Make app public if necessary
sudo yunohost app setting $app is_public -v "$is_public" sudo yunohost app setting $app is_public -v "$is_public"
if [ "$is_public" = "Yes" ]; if [ "$is_public" = "Yes" ];
then then
sudo yunohost app setting $app skipped_uris -v "/" sudo yunohost app setting $app skipped_uris -v "/"
fi fi
# Reload Nginx and regenerate SSOwat conf # Reload Nginx and regenerate SSOwat conf
sudo service php5-fpm reload sudo service php5-fpm reload
sudo service nginx reload sudo service nginx reload
sudo yunohost app ssowatconf sudo yunohost app ssowatconf

View file

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
set -e
app=rainloop app=rainloop
db_user=$app db_user=$app

View file

@ -1,72 +1,66 @@
#!/bin/bash #!/bin/bash
set -e
app=rainloop app=rainloop
# Retrieve arguments # Retrieve arguments
domain=$(sudo yunohost app setting $app domain) domain=$(sudo yunohost app setting $app domain)
path=$(sudo yunohost app setting $app path) path=$(sudo yunohost app setting $app path)
is_public=$(sudo yunohost app setting $app is_public) is_public=$(sudo yunohost app setting $app is_public)
dp_pwd=$(sudo yunohost app setting $app mysqlpwd) dp_pwd=$(sudo yunohost app setting $app mysqlpwd)
db_user=$app db_user=$app
plugins=$(sudo yunohost app setting $app plugins)
# no update for db now... # no update for db now...
#root_pwd=$(sudo cat /etc/yunohost/mysql)
#mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;"
#sudo yunohost app initdb $db_user -p $db_pwd
# Copy files to the right place # Create the final path and copy sources
final_path=/var/www/$app final_path=/var/www/$app
rainloop_path=${final_path}/app rainloop_path=${final_path}/app
#rainloop_path=${final_path}
# no delete... we keep old install, the new is in a new path # the old version is not deleted... the new version is in a new path
#sudo rm -rf $final_path
#sudo mkdir -p $final_path
#sudo mkdir -p $rainloop_path
# Use of latest community edition # Use of latest community edition
sudo unzip ../sources/rainloop-community.zip -d $rainloop_path/ sudo unzip -q ../sources/rainloop-community.zip -d $rainloop_path/
# update patch to auto load version. # Update patch to auto load version
sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php
# update ynh plugins: # Update ynh plugins:
sudo mkdir -p $rainloop_path/data/_data_/_default_/plugins sudo mkdir -p $rainloop_path/data/_data_/_default_/plugins
sudo cp -rf ../sources/plugins/ynh-login-mapping $rainloop_path/data/_data_/_default_/plugins/. sudo cp -rf ../sources/plugins/ynh-login-mapping $rainloop_path/data/_data_/_default_/plugins/.
sudo cp -rf ../sources/plugins/ynh-ldap-addressbooks $rainloop_path/data/_data_/_default_/plugins/. sudo cp -rf ../sources/plugins/ynh-ldap-suggestions $rainloop_path/data/_data_/_default_/plugins/.
# update SSO and auto version # update SSO and auto version
if [ $final_path == $rainloop_path ] if [ $final_path == $rainloop_path ]
then then
# use modified version of master index.php that implement sso # use modified version of master index.php that implement sso
sudo cp ../sources/sso/index.php $final_path/index.php sudo cp ../sources/sso/index.php $final_path/index.php
else else
# use only sso on master # use only sso on master
sudo cp ../sources/sso/sso.php $final_path/index.php sudo cp ../sources/sso/sso.php $final_path/index.php
sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php sudo cp ../sources/patch/index_auto_version.php $rainloop_path/index.php
fi fi
sudo sed -i "s@domain.tld@$domain@g" $final_path/index.php sudo sed -i "s@domain.tld@$domain@g" $final_path/index.php
sudo sed -i "s@PATHTOCHANGE@$path@g" $final_path/index.php sudo sed -i "s@PATHTOCHANGE@$path@g" $final_path/index.php
# Set permissions to rainloop directory # Set permissions to rainloop directory
sudo chown -R www-data:www-data $final_path sudo chown -R www-data:www-data $final_path
# Update Nginx configuration file # Update Nginx configuration file
nginx_conf_file=/etc/nginx/conf.d/$domain.d/$app.conf nginx_conf_file=/etc/nginx/conf.d/$domain.d/$app.conf
sudo cp ../conf/nginx.conf $nginx_conf_file sudo cp ../conf/nginx.conf $nginx_conf_file
sudo sed -i "s@PATHTOCHANGE@$path@g" $nginx_conf_file sudo sed -i "s@PATHTOCHANGE@$path@g" $nginx_conf_file
sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" $nginx_conf_file sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" $nginx_conf_file
sudo sed -i "s@NAMETOCHANGE@$app@g" $nginx_conf_file sudo sed -i "s@NAMETOCHANGE@$app@g" $nginx_conf_file
sudo chown root: $nginx_conf_file sudo chown root: $nginx_conf_file
sudo chmod 644 $nginx_conf_file sudo chmod 644 $nginx_conf_file
finalphpconf=/etc/php5/fpm/pool.d/$app.conf finalphpconf=/etc/php5/fpm/pool.d/$app.conf
sudo cp ../conf/php-fpm.conf $finalphpconf sudo cp ../conf/php-fpm.conf $finalphpconf
sudo sed -i "s@NAMETOCHANGE@$app@g" $finalphpconf sudo sed -i "s@NAMETOCHANGE@$app@g" $finalphpconf
sudo chown root: $finalphpconf sudo chown root: $finalphpconf
sudo chmod 644 $finalphpconf sudo chmod 644 $finalphpconf
# Reload Nginx and regenerate SSOwat conf # Reload Nginx and regenerate SSOwat conf
sudo service php5-fpm reload sudo service php5-fpm reload
sudo service nginx reload sudo service nginx reload
sudo yunohost app ssowatconf sudo yunohost app ssowatconf

View file

@ -1,5 +1,5 @@
<?php <?php
class YnhLdapAddressbooks implements \RainLoop\Providers\Suggestions\ISuggestions { class YnhLdapSuggestions implements \RainLoop\Providers\Suggestions\ISuggestions {
/** /**
* *
@ -49,7 +49,7 @@ class YnhLdapAddressbooks implements \RainLoop\Providers\Suggestions\ISuggestion
$aResult = array (); $aResult = array ();
$oCon = @\ldap_connect (); $oCon = @\ldap_connect ();
if (! $oCon) { if (! $oCon) {
$this->oLogger->Write ( 'YnhLdapAddressbooks: Could not connect to LDAP server', \MailSo\Log\Enumerations\Type::ERROR ); $this->oLogger->Write ( 'YnhLdapSuggestions: Could not connect to LDAP server', \MailSo\Log\Enumerations\Type::ERROR );
return $aResult; return $aResult;
} }
@ -62,7 +62,7 @@ class YnhLdapAddressbooks implements \RainLoop\Providers\Suggestions\ISuggestion
// return $aResult; // return $aResult;
} }
$this->oLogger->Write ( 'YnhLdapAddressbooks: connected to LDAP', \MailSo\Log\Enumerations\Type::INFO, 'LDAP' ); $this->oLogger->Write ( 'YnhLdapSuggestions: connected to LDAP', \MailSo\Log\Enumerations\Type::INFO, 'LDAP' );
$sSearchDn = 'dc=yunohost,dc=org'; $sSearchDn = 'dc=yunohost,dc=org';
@ -78,12 +78,12 @@ class YnhLdapAddressbooks implements \RainLoop\Providers\Suggestions\ISuggestion
'displayName' 'displayName'
); );
$this->oLogger->Write ( 'YnhLdapAddressbooks: ldap_search : ' . $sSearchDn . ' / ' . $sFilter, \MailSo\Log\Enumerations\Type::INFO, 'LDAP' ); $this->oLogger->Write ( 'YnhLdapSuggestions: ldap_search : ' . $sSearchDn . ' / ' . $sFilter, \MailSo\Log\Enumerations\Type::INFO, 'LDAP' );
$oS = @\ldap_search ( $oCon, $sSearchDn, $sFilter, $aItems, 0, $iLimit, $iLimit ); $oS = @\ldap_search ( $oCon, $sSearchDn, $sFilter, $aItems, 0, $iLimit, $iLimit );
if ($oS) { if ($oS) {
$aEntries = @\ldap_get_entries ( $oCon, $oS ); $aEntries = @\ldap_get_entries ( $oCon, $oS );
$this->oLogger->Write ( 'YnhLdapAddressbooks: ldap_search => ' . var_export ( $aEntries ), \MailSo\Log\Enumerations\Type::INFO, 'LDAP' ); $this->oLogger->Write ( 'YnhLdapSuggestions: ldap_search => ' . var_export ( $aEntries ), \MailSo\Log\Enumerations\Type::INFO, 'LDAP' );
if (is_array ( $aEntries )) { if (is_array ( $aEntries )) {
if (isset ( $aEntries ['count'] )) { if (isset ( $aEntries ['count'] )) {

View file

@ -1,5 +1,5 @@
<?php <?php
class YnhLdapAddressbooksPlugin extends \RainLoop\Plugins\AbstractPlugin { class YnhLdapSuggestionsPlugin extends \RainLoop\Plugins\AbstractPlugin {
public function Init() { public function Init() {
$this->addHook ( 'main.fabrica', 'MainFabrica' ); $this->addHook ( 'main.fabrica', 'MainFabrica' );
} }
@ -23,13 +23,13 @@ class YnhLdapAddressbooksPlugin extends \RainLoop\Plugins\AbstractPlugin {
*/ */
public function MainFabrica($sName, &$mResult) { public function MainFabrica($sName, &$mResult) {
if ($sName === 'suggestions') { if ($sName === 'suggestions') {
include_once __DIR__ . '/YnhLdapAddressbooks.php'; include_once __DIR__ . '/YnhLdapSuggestions.php';
if (! \is_array ( $mResult )) { if (! \is_array ( $mResult )) {
$mResult = array (); $mResult = array ();
} }
$oProvider = new YnhLdapAddressbooks (); $oProvider = new YnhLdapSuggestions ();
$mResult [] = $oProvider; $mResult [] = $oProvider;
} }
} }