commit
bcb80b94f7
9 changed files with 215 additions and 0 deletions
-
1.gitignore
-
4README.md
-
6conf/ldap.conf
-
12conf/nginx.conf
-
52manifest.json
-
75scripts/install
-
13scripts/remove
-
35scripts/upgrade
-
17sources/index.html
@ -0,0 +1 @@ |
|||
*.swp |
|||
@ -0,0 +1,4 @@ |
|||
Roundcube for YunoHost |
|||
---------------------- |
|||
|
|||
http://roundcube.net/ |
|||
@ -0,0 +1,6 @@ |
|||
LDAPBaseDN ou=users,dc=yunohost,dc=org |
|||
LDAPFilter (&(objectClass=mailAccount)(uid=FTPUSER)) |
|||
LDAPHomeDir FTPDIR |
|||
LDAPAuthMethod BIND |
|||
LDAPDefaultHomeDirectory FTPDIR |
|||
|
|||
@ -0,0 +1,12 @@ |
|||
location PATHTOCHANGE { |
|||
alias ALIASTOCHANGE; |
|||
index index.php index.html index.htm; |
|||
location ~ [^/]\.php(/|$) { |
|||
fastcgi_split_path_info ^(.+?\.php)(/.*)$; |
|||
fastcgi_pass unix:/var/run/php5-fpm.sock; |
|||
fastcgi_index index.php; |
|||
include fastcgi_params; |
|||
fastcgi_param REMOTE_USER $remote_user; |
|||
fastcgi_param PATH_INFO $fastcgi_path_info; |
|||
} |
|||
} |
|||
@ -0,0 +1,52 @@ |
|||
{ |
|||
"name": "Custom Webapp + FTP", |
|||
"id": "my_webapp", |
|||
"description": { |
|||
"en": "Empty App with FTP access to the web directory", |
|||
"fr": "App vide avec un accès FTP au répertoire Web" |
|||
}, |
|||
"developer": { |
|||
"name": "kload", |
|||
"email": "kload@kload.fr", |
|||
"url": "http://kload.fr" |
|||
}, |
|||
"multi_instance": "false", |
|||
"arguments": { |
|||
"install" : [ |
|||
{ |
|||
"name": "domain", |
|||
"ask": { |
|||
"en": "Choose a domain for your Webapp", |
|||
"fr": "Choisissez un domaine pour votre Webapp" |
|||
}, |
|||
"example": "domain.org" |
|||
}, |
|||
{ |
|||
"name": "path", |
|||
"ask": { |
|||
"en": "Choose a path for your Webapp", |
|||
"fr": "Choisissez un chemin pour votre Webapp" |
|||
}, |
|||
"example": "/site", |
|||
"default": "/site" |
|||
}, |
|||
{ |
|||
"name": "admin", |
|||
"ask": { |
|||
"en": "Choose the YunoHost user who will be able to upload documents via FTP", |
|||
"fr": "Choisissez l'utilisateur YunoHost qui sera capable d'envoyer des documents via FTP" |
|||
}, |
|||
"example": "johndoe" |
|||
}, |
|||
{ |
|||
"name": "is_public", |
|||
"ask": { |
|||
"en": "Is it a public website ?", |
|||
"fr": "Est-ce un site public ?" |
|||
}, |
|||
"choices": ["Yes", "No"], |
|||
"default": "Yes" |
|||
} |
|||
] |
|||
} |
|||
} |
|||
@ -0,0 +1,75 @@ |
|||
#!/bin/bash |
|||
|
|||
# Retrieve arguments |
|||
domain=$1 |
|||
path=$2 |
|||
user=$3 |
|||
is_public=$4 |
|||
final_path=/var/www/my_webapp |
|||
|
|||
# Check domain/path availability |
|||
sudo yunohost app checkurl $domain$path -a my_webapp |
|||
if [[ ! $? -eq 0 ]]; then |
|||
exit 1 |
|||
fi |
|||
|
|||
# Check user |
|||
ls /home | grep $user |
|||
if [[ ! $? -eq 0 ]]; then |
|||
echo "Wrong user" |
|||
exit 1 |
|||
fi |
|||
sudo yunohost app setting my_webapp ftp_user -v $user |
|||
|
|||
# Check port availability |
|||
sudo yunohost app checkport 21 |
|||
if [[ ! $? -eq 0 ]]; then |
|||
exit 1 |
|||
fi |
|||
|
|||
# Open port in firewall |
|||
sudo yunohost firewall allow TCP 21 > /dev/null 2>&1 |
|||
|
|||
# Install debian dependencies |
|||
sudo apt-get install pure-ftpd-ldap -y -qq |
|||
|
|||
# Change user ID in configurations |
|||
sed -i "s/FTPUSER/$user/g" ../conf/ldap.conf |
|||
sed -i "s/FTPDIR/$final_path/g" ../conf/ldap.conf |
|||
sed -i "s/FTPUSER/$user/g" ../sources/index.html |
|||
sed -i "s/HOST/$domain/g" ../sources/index.html |
|||
|
|||
# Copy files to the right place |
|||
sudo mkdir -p $final_path |
|||
sudo cp ../sources/index.html $final_path/ |
|||
|
|||
# Set permissions |
|||
sudo chmod 775 -R $final_path |
|||
sudo chown -hR $user:www-data $final_path |
|||
|
|||
# Modify Nginx configuration file and copy it to Nginx conf directory |
|||
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf |
|||
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf |
|||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/my_webapp.conf |
|||
|
|||
# Make app public if necessary |
|||
sudo yunohost app setting my_webapp is_public -v "$is_public" |
|||
if [ $is_public = "Yes" ]; |
|||
then |
|||
sudo yunohost app setting my_webapp skipped_uris -v "/" |
|||
fi |
|||
|
|||
# Adapt PureFTPd configuration |
|||
sudo cp ../conf/ldap.conf /etc/pure-ftpd/db/ |
|||
sudo sh -c 'echo "yes" > /etc/pure-ftpd/conf/NoAnonymous' |
|||
sudo sh -c 'echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone' |
|||
sudo sh -c 'echo "no" > /etc/pure-ftpd/conf/UnixAuthentication' |
|||
sudo sh -c 'echo "50000 50100" > /etc/pure-ftpd/conf/PassivePortRange' |
|||
|
|||
# Register service to YunoHost monitoring |
|||
sudo yunohost app service pure-ftpd-ldap --log "/var/log/pure-ftpd/transfer.log" |
|||
|
|||
# Reload Nginx, restart PureFTPd and regenerate SSOwat conf |
|||
sudo service nginx reload |
|||
sudo service pure-ftpd-ldap restart |
|||
sudo yunohost app ssowatconf |
|||
@ -0,0 +1,13 @@ |
|||
#!/bin/bash |
|||
|
|||
domain=$(sudo yunohost app setting my_webapp domain) |
|||
|
|||
sudo service pure-ftpd-ldap stop |
|||
sudo apt-get remove -y -qq pure-ftpd-ldap pure-ftpd-common |
|||
sudo yunohost app service -R pure-ftpd-ldap |
|||
|
|||
sudo rm -rf /var/www/my_webapp |
|||
sudo rm -f /etc/nginx/conf.d/$domain.d/my_webapp.conf |
|||
|
|||
sudo service nginx reload |
|||
sudo yunohost app ssowatconf |
|||
@ -0,0 +1,35 @@ |
|||
#!/bin/bash |
|||
|
|||
# Retrieve arguments |
|||
domain=$(sudo yunohost app setting my_webapp domain) |
|||
path=$(sudo yunohost app setting my_webapp path) |
|||
user=$(sudo yunohost app setting my_webapp ftp_user) |
|||
is_public=$(sudo yunohost app setting my_webapp is_public) |
|||
final_path=/var/www/my_webapp |
|||
|
|||
# Change user ID in configurations |
|||
sed -i "s/FTPUSER/$user/g" ../conf/ldap.conf |
|||
sed -i "s/FTPDIR/$final_path/g" ../conf/ldap.conf |
|||
|
|||
# Modify Nginx configuration file and copy it to Nginx conf directory |
|||
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf |
|||
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf |
|||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/my_webapp.conf |
|||
|
|||
# Make app public if necessary |
|||
if [ $is_public = "Yes" ]; |
|||
then |
|||
sudo yunohost app setting my_webapp skipped_uris -v "/" |
|||
fi |
|||
|
|||
# Adapt PureFTPd configuration |
|||
sudo cp ../conf/ldap.conf /etc/pure-ftpd/db/ |
|||
sudo sh -c 'echo "yes" > /etc/pure-ftpd/conf/NoAnonymous' |
|||
sudo sh -c 'echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone' |
|||
sudo sh -c 'echo "no" > /etc/pure-ftpd/conf/UnixAuthentication' |
|||
sudo sh -c 'echo "50000 50100" > /etc/pure-ftpd/conf/PassivePortRange' |
|||
|
|||
# Reload Nginx, restart PureFTPd and regenerate SSOwat conf |
|||
sudo service nginx reload |
|||
sudo service pure-ftpd-ldap restart |
|||
sudo yunohost app ssowatconf |
|||
@ -0,0 +1,17 @@ |
|||
<!DOCTYPE html> |
|||
<html> |
|||
<body> |
|||
|
|||
<h1>It works !</h1> |
|||
|
|||
<p>Congratulation, you have just installed your custom web app.</p> |
|||
<p>You can access to the directory of this web page by connecting as <strong>FTPUSER</strong> to your server <strong>HOST</strong> via <strong>FTP</strong> on the standard port 21.</p> |
|||
|
|||
<br> |
|||
|
|||
<p>As a reward, here is a random cat picture:</p> |
|||
<p><img src="http://thecatapi.com/api/images/get?format=src&type=gif"></p> |
|||
|
|||
</body> |
|||
</html> |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue