tazpanel annotate lib/libtazpanel @ rev 232

libtazpanel: Add some functions in settings.cgi to libtazpanel.
author Christopher Rogers <slaxemulator@gmail.com>
date Fri Feb 24 15:17:28 2012 -0500 (2012-02-24)
parents dbb91ac456b7
children c049e0780a99
rev   line source
pankso@15 1 #!/bin/sh
pankso@15 2 #
pankso@15 3 # Common functions for TazPanel CGI and cmdline interface
pankso@15 4 #
pankso@15 5
pascal@81 6 # Get parameters with GET, POST and FILE functions
pascal@81 7 . /usr/bin/httpd_helper.sh
pascal@81 8
pankso@109 9 # I18n
pankso@40 10 . /usr/bin/gettext.sh
pankso@40 11 TEXTDOMAIN='tazpanel'
pankso@40 12 export TEXTDOMAIN
pankso@40 13
pankso@15 14 # We need a config file first
pankso@15 15 get_config() {
pankso@15 16 CONFIG="/etc/slitaz/tazpanel.conf"
pankso@116 17 [ -f data/tazpanel.conf ] && CONFIG="data/tazpanel.conf"
pankso@110 18 [ -f "$CONFIG" ] && . $CONFIG
pankso@110 19 [ ! -f "$PANEL/lib/libtazpanel" ] && \
pankso@15 20 echo "No config file or libtazpanel found: $CONFIG" && \
pankso@15 21 exit 1
pankso@15 22 }
pankso@15 23
pankso@74 24 # Syntax highlighting for config file and SHell scripts
pankso@76 25 # HTML entities: -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g'
pankso@74 26 syntax_highlighter() {
pankso@74 27 case $1 in
pankso@74 28 conf)
pascal@176 29 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
slaxemulator@177 30 -e s"#^\#\([^']*\)#<span class='conf-comment'>\0</span>#"g \
pankso@74 31 -e s"#^[A-Z]\([^']*\)=#<span class='conf-var'>\0</span>#"g \
pankso@74 32 -e s"#^[a-z]\([^']*\)#<span class='conf-var'>\0</span>#"g \
pankso@74 33 -e s"#\"\([^']*\)\"#<span class='conf-val'>\0</span>#"g ;;
pankso@75 34 sh)
pascal@176 35 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
pascal@176 36 -e s"#^\#\([^']*\)#<span class='sh-comment'>\0</span>#"g \
pascal@91 37 -e s"#\"\([^']*\)\"#<span class='sh-val'>\0</span>#"g ;;
pascal@91 38 diff)
pankso@94 39 sed -e 's|&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|>|\&gt;|g' \
pascal@171 40 -e s"#^-\(.*\).#<span class='diff-rm'>\0</span>#"g \
pascal@171 41 -e s"#^+\(.*\).#<span class='diff-add'>\0</span>#"g \
pascal@171 42 -e s"#@@\(.*\)@@#<span class='diff-at'>@@\1@@</span>#"g ;;
pankso@120 43 activity)
pankso@120 44 sed s"#^\([^']*:\)#<span class='activity-log''>\0</span>#"g ;;
pankso@74 45 esac
pankso@53 46 }
pankso@53 47
pascal@99 48 # Remove status and ESC char from tazpkg/tazlito commands output
pascal@99 49 filter_taztools_msgs() {
pascal@168 50 sed -e s'/\[^Gm]*.//g' \
pascal@167 51 -e ':a;s/^\(.\{1,68\}\)\(\[ [A-Za-z]* \]\)/\1 \2/;ta' \
pascal@167 52 -e 's#\[ OK \]#[ <span class="diff-add">OK</span> ]#' \
pascal@167 53 -e 's#\[ Failed \]#[ <span class="diff-rm">Failed</span> ]#'
pascal@99 54 }
pascal@99 55
pankso@51 56 # LOG activities
pankso@51 57 log() {
pankso@96 58 date=$(date "+%Y-%m-%d %H:%M")
pascal@99 59 filter_taztools_msgs | \
pankso@94 60 sed s"#[^']*#$date : \0#" >> $LOG_FILE
pankso@51 61 }
pankso@51 62
pankso@161 63 ok_status() {
pankso@161 64 echo "[<span class='diff-add'> OK </span>]"
pankso@161 65 }
pankso@161 66
pankso@40 67 # Network interface status
pankso@40 68 interface_status() {
pankso@40 69 if ifconfig | grep -A 1 $i | grep -q inet; then
pankso@40 70 ip=`ifconfig | grep -A 1 $i | grep inet | \
pankso@40 71 awk '{ print $2 }' | cut -d ":" -f 2`
pankso@40 72 echo "<td>connected</td><td>$ip</td>"
pascal@136 73 echo "<td><a href='/network.cgi?scan=$ip'>"
pankso@148 74 echo "<img src='$IMAGES/recharge.png' /></a></td>"
pankso@40 75 else
pascal@136 76 echo "<td>----</td><td>----</td><td></td>"
pankso@40 77 fi
pankso@40 78 }
pankso@40 79
pankso@40 80 # Catch network interface (used in summary and network main page)
pankso@40 81 list_network_interfaces() {
pankso@40 82 table_start
pankso@40 83 cat << EOT
pankso@40 84 <tr id="thead">
pankso@40 85 <td>`gettext "Interface"`</td>
pankso@40 86 <td>`gettext "Name"`</td>
pankso@40 87 <td>`gettext "Status"`</td>
pankso@40 88 <td>`gettext "IP Address"`</td>
pankso@148 89 <td>`gettext "Scan ports"`</td>
pankso@40 90 </tr>
pankso@40 91 EOT
pankso@40 92 for i in `ls /sys/class/net`
pankso@40 93 do
pankso@40 94 case $i in
pankso@40 95 eth*)
pankso@41 96 echo "<tr><td><a href='/network.cgi?eth'>
pankso@41 97 <img src='$IMAGES/ethernet.png' />$i</a></td>
pankso@148 98 <td>Ethernet</td> $(interface_status)</tr>" ;;
pankso@40 99 wlan*|ath*|ra*)
pankso@41 100 echo "<tr><td><a href='/network.cgi?wifi'>
pankso@41 101 <img src='$IMAGES/wireless.png' />$i</a></td>
pankso@148 102 <td>Wireless</td> $(interface_status)</tr>" ;;
pankso@40 103 lo)
pankso@40 104 echo "<tr><td><img src='$IMAGES/loopback.png' />$i</td>
pankso@148 105 <td>Loopback</td> $(interface_status)</tr>" ;;
pankso@40 106 *)
pankso@40 107 continue ;;
pankso@40 108 esac
pankso@40 109 done
pankso@40 110 table_end
pankso@40 111 }
pankso@40 112
slaxemulator@232 113 # Get the list of panel styles
slaxemulator@232 114 list_styles() {
slaxemulator@232 115 for style in $PANEL/styles/*
slaxemulator@232 116 do
slaxemulator@232 117 style=$(basename $style)
slaxemulator@232 118 echo "<option value='$style'>$style</option>"
slaxemulator@232 119 done
slaxemulator@232 120 }
slaxemulator@232 121
slaxemulator@232 122 # Get the list of system locales
slaxemulator@232 123 list_locales() {
slaxemulator@232 124 for locale in $(find /usr/share/i18n/locales -type f -name "[a-z][a-z]_[A-Z][A-Z]")
slaxemulator@232 125 do
slaxemulator@232 126 echo "<option value='$locale'>$locale</option>"
slaxemulator@232 127 done
slaxemulator@232 128 }
slaxemulator@232 129
slaxemulator@232 130 # Get the list of console keymaps
slaxemulator@232 131 list_keymaps() {
slaxemulator@232 132 for keymap in /usr/share/kmap/*.kmap
slaxemulator@232 133 do
slaxemulator@232 134 basename $keymap .kmap | sed "s|.*|<option value='&'>&</option>|"
slaxemulator@232 135 done
slaxemulator@232 136 }
slaxemulator@232 137
pankso@15 138 #
pankso@15 139 # xHTML 5 (header and footer skel are from the style)
pankso@15 140 #
pankso@15 141
pankso@44 142 loading_msg() {
pankso@44 143 cat << EOT
pankso@44 144 <script type="text/javascript">
pankso@44 145 document.write('<div id="loading"><img src="/styles/default/images/loader.gif" />$LOADING_MSG</div>');
pankso@44 146 </script>
pankso@44 147 EOT
pankso@44 148 }
pankso@44 149
pankso@15 150 xhtml_header() {
pankso@32 151 cat ${PANEL}$HEADER | sed s/'- %TITLE%'/"$TITLE"/
pankso@67 152 if [ $DEBUG == "1" ]; then
pascal@81 153 local i
pascal@81 154 local j
pascal@81 155 local x
pascal@81 156 args=""
pascal@81 157 for x in GET POST COOKIE ; do
pascal@81 158 for i in $($x) ; do
pascal@81 159 if [ $($x $i count) -gt 1 ]; then
pascal@81 160 for j in $(seq 1 $($x $i count)); do
pascal@81 161 args="$args $x($i,$j)='$($x $i $j)'"
pascal@81 162 done
pascal@81 163 else
pascal@81 164 args="$args $x($i)='$($x $i)'"
pascal@81 165 fi
pascal@81 166 done
pascal@81 167 done
pascal@81 168 for i in $(FILE); do
pascal@81 169 for j in name size type tmpname ; do
pascal@81 170 args="$args FILE($i,$j)=$(FILE $i $j)"
pascal@81 171 done
pascal@81 172 done
pankso@70 173 cat << EOT
pankso@70 174 <pre class='debug'>
pascal@81 175 QUERY_STRING="$QUERY_STRING"$args
pankso@70 176 </pre>
pankso@70 177 EOT
pankso@67 178 fi
pankso@15 179 }
pankso@15 180
pankso@15 181 xhtml_footer() {
pankso@32 182 cat ${PANEL}$FOOTER
pankso@15 183 }
pankso@15 184
pankso@15 185 table_start() {
pankso@15 186 cat << EOT
pankso@15 187 <table>
pankso@15 188 <tbody>
pankso@15 189 EOT
pankso@15 190 }
pankso@15 191
pankso@15 192 table_end () {
pankso@15 193 cat << EOT
pankso@15 194 </tbody>
pankso@15 195 </table>
pankso@15 196 EOT
pankso@45 197
pankso@15 198 }
pankso@153 199
pankso@153 200 df_thead() {
pankso@153 201 cat << EOT
pankso@153 202 <thead>
pankso@153 203 <tr>
pankso@190 204 <td>$(gettext "Disk")</td>
pankso@153 205 <td>$(gettext "Size")</td>
pankso@153 206 <td>$(gettext "Available")</td>
pankso@153 207 <td>$(gettext "Used")</td>
pankso@153 208 <td>$(gettext "Mount point")</td>
pankso@153 209 </tr>
pankso@153 210 </thead>
pankso@153 211 EOT
pankso@153 212 }