]> git.pld-linux.org Git - packages/webapps.git/blob - webapps.sh
- make relative symlinks (for vserver / chroot)
[packages/webapps.git] / webapps.sh
1 #!/bin/sh
2
3 webapps=/etc/webapps
4 webservers='apache httpd lighttpd'
5 action="$1"
6 httpd="$2"
7 app="$3"
8
9 webapp_link() {
10         echo "$1" | tr '/' '-'
11 }
12
13 webapp_register() {
14         local link=$(webapp_link $app)
15         ln -sf ../../..$webapps/$app/$httpd.conf /etc/$httpd/webapps.d/$link.conf
16 }
17
18 webapp_unregister() {
19         local link=$(webapp_link $app)
20         rm -f /etc/$httpd/webapps.d/$link.conf
21 }
22
23 webapp_list() {
24         echo "registered webapps${1:+ for $1}":
25         for server in ${1:-$webservers}; do
26                 [ -d /etc/$server/webapps.d ] || continue
27                 echo "$server:"
28                 for conf in /etc/$server/webapps.d/*; do
29                         [ -L $conf ] || continue
30                         app=$(basename $conf .conf)
31                         echo "- $app"
32                 done
33         done
34 }
35
36 webapp_list_apps() {
37         echo "available webapps${1:+ for $1}":
38         for app in /etc/webapps/*; do
39                 [ -d $app ] || continue
40
41                 servers=""
42                 for server in ${1:-$webservers}; do
43                         [ -f $app/$server.conf ] || continue
44                         servers="$servers${servers:+ }$server"
45                 done
46
47                 [ "$servers" ] || continue
48                 echo "- $(basename $app) ($servers)"
49         done
50 }
51
52 usage() {
53         cat >&2 <<EOF
54 Usage: $0 register httpd webapp
55 Usage: $0 register httpd webapp/module
56 Usage: $0 unregister httpd webapp
57 Usage: $0 unregister httpd webapp/module
58 Usage: $0 list [$webservers]
59 Usage: $0 list-apps [$webservers]
60
61 Where httpd is one of the webservers
62 apache 1.x: apache
63 apache 2.x: httpd
64 lighttpd: lighttpd
65
66 webapp modules are supported,
67 "drupal tinymce" module webapp name would be "drupal/tinymce".
68 EOF
69 }
70
71 die() {
72         echo >&2 "$0: $*"
73         exit 1
74 }
75
76 checkconfig() {
77         if [ -z "$httpd" ] || [ -z "$app" ]; then
78                 usage
79                 return 1
80         fi
81
82         # sanity check
83         if [ ! -d "$webapps/$app" ]; then
84                 die "'$app' is not webapp? (Missing directory: $webapps/$app)"
85         fi
86         if [ ! -d "/etc/$httpd/webapps.d" ]; then
87                 die "'$httpd' is not a webserver? (Missing directory: /etc/$httpd/webapps.d)"
88         fi
89 }
90
91 case "$action" in
92 register)
93         checkconfig && webapp_register
94         ;;
95 unregister)
96         checkconfig && webapp_unregister
97         ;;
98 list)
99         webapp_list $2
100         ;;
101 list-apps)
102         webapp_list_apps $2
103         ;;
104 *)
105         usage
106         exit 1
107 esac
This page took 0.052265 seconds and 4 git commands to generate.