315ed7ef3160f94e275c8425542d148127685540
[rahunas] / tools / rahunas-weblogin-config-update.in
1 #!/bin/sh
2
3 PATH=/sbin:/bin:/usr/sbin:/usr/bin:@prefix@/sbin:@prefix@/bin
4 INIT=@sysconfdir@/default/rahunas
5 . $INIT
6
7 get_section_name () {
8   file=$1
9   
10   grep "^.*\= {$" $file | sed "s/= {//" |  sed "s/^ *\(.*[^ ]\) *$/\1/"
11 }
12
13 get_config_value () {
14   section=$1
15   key=$2
16   file=$3
17
18   cat $file | sed -e "0,/$section = {/ ! { /}/,/$section = {/ ! s/^/>>/ }" | grep "^>>" | sed -e "s/^>>//g" | grep -w "$key" | cut -d= -f2 | sed "s/^ *\(.*[^ ]\) *$/\1/" | sed 's/"//g'
19 }
20
21 # Main
22 MAIN_CONF_DIR=`get_config_value main conf_dir $RAHUNAS_CONFIG`
23
24 # DB
25 RAHUNAS_DB=@localstatedir@/lib/rahunas/rahunas.db
26 SQLITE3=/usr/bin/sqlite3
27
28 generate_config() {
29   file=$1
30   SETNAME=`get_section_name $file`
31
32   CLIENTS=`get_config_value $SETNAME clients $file`
33   VSERVER_ID=`get_config_value $SETNAME vserver_id $file`
34   RADIUS_HOST=`get_config_value $SETNAME radius_host $file`
35   RADIUS_SECRET=`get_config_value $SETNAME radius_secret $file`
36   RADIUS_ENCRYPT=`get_config_value $SETNAME radius_encrypt $file`
37   RADIUS_AUTH_PORT=`get_config_value $SETNAME radius_auth_port $file`
38   RADIUS_ACCT_PORT=`get_config_value $SETNAME radius_account_port $file`
39   RAHUNAS_HOST="localhost"
40   RAHUNAS_PORT="8123"
41   NAS_IDENTIFIER=`get_config_value $SETNAME nas_identifier $file`
42   NAS_IP_ADDRESS=`get_config_value $SETNAME vserver_ip $file`
43   NAS_LOGIN_HOST=`get_config_value $SETNAME vserver_fqdn $file`
44   NAS_LOGIN_PROTO=`get_config_value $SETNAME nas_login_proto $file`
45   test -z "$NAS_LOGIN_PROTO" && NAS_LOGIN_PROTO="https"
46
47   NAS_LOGIN_PORT=`get_config_value $SETNAME nas_login_port $file`
48   if [ -z "$NAS_LOGIN_PORT" ]; then
49     if [ "$NAS_LOGIN_PROTO" = "https" ]; then
50       NAS_LOGIN_PORT="443"
51     else
52       NAS_LOGIN_PORT="80"
53     fi
54   fi
55   NAS_PORT=`get_config_value $SETNAME nas_port $file`
56   NAS_LOGIN_TITLE=`get_config_value $SETNAME nas_login_title $file`
57   DEFAULT_REDIRECT_URL=`get_config_value $SETNAME nas_default_redirect $file`
58   DEFAULT_LANGUAGE=`get_config_value $SETNAME nas_default_language $file`
59   UAM_TEMPLATE=`get_config_value $SETNAME nas_weblogin_template $file`
60   VIPMAP=`get_config_value $SETNAME vipmap $file`
61   VIPMAP_ATTRIBUTE=`get_config_value $SETNAME vipmap_attribute $file`
62
63   printf "\$config_list['%s'] = array(\n"            "$CLIENTS"
64   printf "\t\"VSERVER_ID\" => \"%s\",\n"             "$VSERVER_ID"
65   printf "\t\"RADIUS_HOST\" => \"%s\",\n"            "$RADIUS_HOST"
66   printf "\t\"RADIUS_SECRET\" => \"%s\",\n"          "$RADIUS_SECRET"
67   printf "\t\"RADIUS_ENCRYPT\" => \"%s\",\n"         "$RADIUS_ENCRYPT"
68   printf "\t\"RADIUS_AUTH_PORT\" => %s,\n"           "$RADIUS_AUTH_PORT"
69   printf "\t\"RADIUS_ACCT_PORT\" => %s,\n"           "$RADIUS_ACCT_PORT"
70   printf "\t\"RAHUNAS_HOST\" => \"%s\",\n"           "$RAHUNAS_HOST"
71   printf "\t\"RAHUNAS_PORT\" => \"%s\",\n"           "$RAHUNAS_PORT"
72   printf "\t\"NAS_IDENTIFIER\" => \"%s\",\n"         "$NAS_IDENTIFIER"
73   printf "\t\"NAS_IP_ADDRESS\" => \"%s\",\n"         "$NAS_IP_ADDRESS"
74   printf "\t\"NAS_LOGIN_HOST\" => \"%s\",\n"         "$NAS_LOGIN_HOST"
75   printf "\t\"NAS_LOGIN_PORT\" => \"%s\",\n"         "$NAS_LOGIN_PORT"
76   printf "\t\"NAS_LOGIN_PROTO\" => \"%s\",\n"        "$NAS_LOGIN_PROTO"
77   printf "\t\"NAS_PORT\" => %s,\n"                   "$NAS_PORT"
78   printf "\t\"NAS_LOGIN_TITLE\" => \"%s\",\n"        "$NAS_LOGIN_TITLE"
79   printf "\t\"DEFAULT_REDIRECT_URL\" => \"%s\",\n"   "$DEFAULT_REDIRECT_URL"
80   printf "\t\"DEFAULT_LANGUAGE\" => \"%s\",\n"       "$DEFAULT_LANGUAGE"
81   printf "\t\"UAM_TEMPLATE\" => \"%s\",\n"           "$UAM_TEMPLATE"
82   printf "\t\"VIPMAP\" => \"%s\",\n"                 "$VIPMAP"
83   printf "\t\"VIPMAP_ATTRIBUTE\" => \"%s\",\n"       "$VIPMAP_ATTRIBUTE"
84   printf ");\n\n"
85 }
86
87 update_db () {
88   file=$1
89
90   SETNAME=`get_section_name $file`
91   VSERVER_ID=`get_config_value $SETNAME vserver_id $file`
92   NAS_IDENTIFIER=`get_config_value $SETNAME nas_identifier $file`
93
94   SQL="REPLACE INTO nas VALUES ('$VSERVER_ID','$NAS_IDENTIFIER')"
95   $SQLITE3 $RAHUNAS_DB "$SQL"
96 }
97
98 clear_nas_db () {
99   SQL="DELETE FROM nas"
100   $SQLITE3 $RAHUNAS_DB "$SQL"
101 }
102
103 destfile="@sysconfdir@/rahunas/config.php"
104 if [ "$1" != "" ]; then
105   destfile="$1"
106 fi
107
108 # Clear old config
109 echo "<?php" > $destfile
110
111 for file in `find $MAIN_CONF_DIR -name '*.conf'`;
112 do
113   generate_config $file 
114 done >> $destfile
115
116 clear_nas_db
117 for file in `find $MAIN_CONF_DIR -name '*.conf'`;
118 do
119   update_db $file
120 done