1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/webmin_ynh.git synced 2024-09-03 20:36:08 +02:00

Made app compatible with yunohost 3

This commit is contained in:
anmol 2018-10-29 02:37:01 +05:30
parent 1503a5d125
commit 932e99a459
6 changed files with 219 additions and 36 deletions

39
check_process Normal file
View file

@ -0,0 +1,39 @@
# See here for more information
# https://github.com/YunoHost/package_check#syntax-check_process-file
# Move this file from check_process.default to check_process when you have filled it.
;; Test complet
; Manifest
domain="domain.tld" (DOMAIN)
path="/path" (PATH)
admin="john" (USER)
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=0
setup_public=0
upgrade=1
backup_restore=0
multi_instance=0
incorrect_path=1
port_already_use=1
change_url=0
;;; Levels
Level 1=auto
Level 2=auto
Level 3=auto
# Level 4: If the app supports LDAP and SSOwat, turn level 4 to '1' and add a link to an issue or a part of your code to show it.
# If the app does not use LDAP nor SSOwat, and can't use them, turn level 4 to 'na' and explain as well.
Level 4=0
Level 5=auto
Level 6=auto
Level 7=auto
Level 8=0
Level 9=0
Level 10=0
;;; Options
Email=
Notification=none

View file

@ -1,6 +1,6 @@
location PATHTOCHANGE/ { location __PATH__ {
proxy_pass https://127.0.0.1:10000/; proxy_pass https://127.0.0.1:__PORT__/;
proxy_redirect off; proxy_redirect off;
#Proxy Settings #Proxy Settings

View file

@ -5,16 +5,25 @@
"en": "Webmin", "en": "Webmin",
"fr": "Webmin" "fr": "Webmin"
}, },
"developer": { "version": "1.890",
"name": "", "url": "http://www.webmin.com",
"email": "", "license": "free",
"url": "http://www.webmin.com" "maintainer": {
"name": "Anmol Sharma",
"email": "anmol@datamol.org"
},
"requirements": {
"yunohost": ">= 3.0.0"
}, },
"multi_instance": "false", "multi_instance": "false",
"services": [
"nginx"
],
"arguments": { "arguments": {
"install" : [ "install" : [
{ {
"name": "domain", "name": "domain",
"type": "domain",
"ask": { "ask": {
"en": "Choose a domain for Webmin" "en": "Choose a domain for Webmin"
}, },
@ -22,6 +31,7 @@
}, },
{ {
"name": "path", "name": "path",
"type": "path",
"ask": { "ask": {
"en": "Choose a path for Webmin" "en": "Choose a path for Webmin"
}, },
@ -30,11 +40,12 @@
}, },
{ {
"name": "admin", "name": "admin",
"type": "user",
"ask": { "ask": {
"en": "Choose the Webmin administrator (must be an existing YunoHost user)" "en": "Choose the Webmin administrator (must be an existing YunoHost user)"
}, },
"example": "homer" "example": "johndoe"
} }
] ]
} }
} }

13
scripts/_common.sh Normal file
View file

@ -0,0 +1,13 @@
#!/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
}

View file

@ -1,26 +1,101 @@
#!/bin/bash #!/bin/bash
# Retrieve arguments #=================================================
domain=$1 # GENERIC START
path=$2 #=================================================
user=$3 # IMPORT GENERIC HELPERS
#=================================================
# Remove trailing "/" for next commands source _common.sh
path=${path%/} source /usr/share/yunohost/helpers
# Check user parameter #=================================================
sudo yunohost user list --json | grep -q "\"username\": \"$user\"" # MANAGE SCRIPT FAILURE
if [[ ! $? -eq 0 ]]; then #=================================================
echo "Wrong user"
exit 1 ynh_clean_setup () {
fi ### Remove this function if there's nothing to clean before calling the remove script.
sudo yunohost app setting webmin admin_user -v $user true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
admin=$YNH_APP_ARG_ADMIN
### If it's 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 interests you 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
# 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
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path_url
ynh_app_setting_set $app admin $admin
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN A PORT
#=================================================
### Use these lines if you have to open a port for the application
### `ynh_find_port` will find the first available port starting from the given port.
### If you're not using these lines:
### - Remove the section "CLOSE A PORT" in the remove script
# Find a free port
port=$(ynh_find_port 10000)
# Open this port
yunohost firewall allow --no-upnp TCP $port 2>&1
ynh_app_setting_set $app port $port
#=================================================
# INSTALL DEPENDENCIES
#=================================================
### `ynh_install_app_dependencies` allows you to add any "apt" dependencies to the package.
### Those deb packages will be installed as dependencies of this package.
### If you're not using this helper:
### - Remove the section "REMOVE DEPENDENCIES" in the remove script
### - As well as the section "REINSTALL DEPENDENCIES" in the restore script
### - And the section "UPGRADE DEPENDENCIES" in the upgrade script
ynh_install_app_dependencies perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
#=================================================
# NGINX CONFIGURATION
#=================================================
### `ynh_add_nginx_config` will use the file conf/nginx.conf
# Create a dedicated nginx config
ynh_add_nginx_config
# Check domain/path availability
sudo yunohost app checkurl $domain$path -a webmin
if [[ ! $? -eq 0 ]]; then
exit 1
fi
sudo sh -c "echo 'deb http://download.webmin.com/download/repository sarge contrib' > /etc/apt/sources.list.d/webmin.list" sudo sh -c "echo 'deb http://download.webmin.com/download/repository sarge contrib' > /etc/apt/sources.list.d/webmin.list"
sudo sh -c "echo 'deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib' >> /etc/apt/sources.list.d/webmin.list" sudo sh -c "echo 'deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib' >> /etc/apt/sources.list.d/webmin.list"
@ -32,14 +107,18 @@ sudo rm jcameron-key.asc
sudo apt-get update sudo apt-get update
sudo apt-get install -y webmin sudo apt-get install -y webmin
#=================================================
# SETUP SSOWAT
#=================================================
# Restrict access to admin only
yunohost app addaccess --users=$admin $app
#=================================================
# RELOAD NGINX AND START WEBMIN
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf #=================================================
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/webmin.conf systemctl enable webmin
systemctl start webmin
# Reload Nginx and regenerate SSOwat conf
sudo service nginx reload sudo service nginx reload
sudo yunohost app ssowatconf

View file

@ -1,10 +1,51 @@
#!/bin/bash #!/bin/bash
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
port=$(ynh_app_setting_get $app port)
#=================================================
# REMOVE DEPENDENCIES
#=================================================
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
# Remove the dedicated nginx config
ynh_remove_nginx_config
#=================================================
# CLOSE A PORT
#=================================================
if yunohost firewall list | grep -q "\- $port$"
then
echo "Close port $port" >&2
yunohost firewall disallow TCP $port 2>&1
fi
adminuser=$(sudo yunohost app setting webmin admin_user) adminuser=$(sudo yunohost app setting webmin admin_user)
sudo delgroup $adminuser root
sudo apt-get remove --purge webmin sudo apt-get remove --purge webmin
sudo rm -r /etc/apt/sources.list.d/webmin.list sudo rm -r /etc/apt/sources.list.d/webmin.list
sudo rm -f /etc/nginx/conf.d/$domain.d/webmin.conf sudo rm -f /etc/nginx/conf.d/$domain.d/webmin.conf
sudo service nginx reload