slitaz-tools annotate tinyutils/netbox @ rev 375

netbox: add openvpn & ethtool status
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Aug 13 14:13:04 2009 +0200 (2009-08-13)
parents f42ec52d7e54
children afcfdf317aa1
rev   line source
pankso@33 1 #!/bin/sh
pankso@194 2 #
paul@317 3 # Gtkdialog box to manage network connections and servers.
pankso@292 4 # Please use tab to indent.
pankso@33 5 #
pankso@292 6 # (c) - SliTaz GNU/Linux 2009.
pankso@292 7 #
pascal@371 8 VERSION=20090812
pankso@33 9
pankso@33 10 # Check if user is root.
pankso@33 11 check_root()
pankso@33 12 {
pankso@33 13 if test $(id -u) != 0 ; then
pankso@33 14 echo -e "
pankso@194 15 You must be root to run `basename $0`. Please type 'su' and
pankso@33 16 root password to become super-user.\n"
pankso@33 17 exit 0
pankso@33 18 fi
pankso@33 19 }
pankso@33 20
pascal@371 21 #
pankso@297 22 # Functions called by the connection tab to list interfaces.
pascal@371 23 #
pascal@371 24 ############################################################
pascal@371 25
pankso@297 26 interface_status()
pankso@297 27 {
pankso@297 28 if ifconfig | grep -A 1 $i | grep -q inet; then
pankso@297 29 ip=`ifconfig | grep -A 1 $i | grep inet | awk '{ print $2 }' | cut -d ":" -f 2`
pankso@297 30 echo "connected ($ip)"
pankso@297 31 else
pankso@297 32 echo "-"
pankso@297 33 fi
pankso@297 34 }
pankso@297 35 # First column is for icon name.
pankso@297 36 detect_interfaces()
pankso@297 37 {
pankso@297 38 for i in `ls /sys/class/net`
pankso@297 39 do
pankso@297 40 case $i in
pankso@297 41 eth*)
pankso@297 42 echo "network-wired | $i | Ethernet | `interface_status`" ;;
pankso@297 43 wlan*|ath*|ra*)
pankso@297 44 echo "network-wireless | $i | Wireless | `interface_status`" ;;
pankso@297 45 lo)
pankso@297 46 echo "gtk-network | $i | Loopback | `interface_status`" ;;
pankso@297 47 *)
pankso@297 48 continue ;;
pankso@297 49 esac
pankso@297 50
pankso@297 51 done
pankso@297 52 }
pankso@297 53
pankso@297 54 # When users double click on a connection.
pankso@297 55 interfaces_List_actions()
pankso@297 56 {
pankso@297 57 echo "$INTERFACE_LIST"
pankso@297 58 }
pankso@297 59
paul@317 60 # Netbox can be called with args.
pankso@297 61 case "$1" in
pankso@297 62 detect_interfaces|interfaces_List_actions)
pankso@297 63 $1
pankso@297 64 exit 0 ;;
pankso@297 65 *)
pankso@297 66 continue ;;
pankso@297 67 esac
pankso@297 68
pascal@371 69 #
pankso@297 70 # GUI functions
pascal@371 71 #
pascal@371 72 ############################################################
pascal@371 73
pascal@372 74 xterm="xterm -fa MiscFixed -fs 11 -bg gray93 -fg black"
pascal@271 75 helpbutton()
pascal@271 76 {
pascal@271 77 local label;
pascal@271 78 label="<label>$3</label>"
pascal@271 79 [ -n "$3" ] || label=""
pascal@271 80 cat << EOT
pankso@292 81 <button>
pankso@292 82 <input file icon="help"></input>$label
pascal@375 83 <action>$xterm -geometry $2 -title "$1 help (q to quit)" -e "( echo ; $(which $1) --help 2>&1 ) | less"</action>
pankso@292 84 </button>
pascal@271 85 EOT
pascal@271 86 }
pascal@271 87
pascal@272 88 editbutton()
pascal@271 89 {
pascal@271 90 cat << EOT
pankso@292 91 <button>
pankso@292 92 <input file icon="accessories-text-editor"></input>
pankso@292 93 <action type="lauch">leafpad $1</action>
pankso@292 94 </button>
pascal@271 95 EOT
pascal@271 96 }
pascal@271 97
pascal@271 98 manbutton()
pascal@271 99 {
pascal@271 100 cat << EOT
pankso@292 101 <button>
pankso@292 102 <input file icon="browser"></input>
pankso@292 103 <label>man</label>
pascal@372 104 <action>$xterm -geometry 80x24 -title "$2 man (q to quit)" -e ". /etc/profile; man $1 $2"</action>
pankso@292 105 </button>
pascal@271 106 EOT
pascal@271 107 }
pascal@271 108
pascal@272 109 helpdaemon()
pascal@271 110 {
pascal@271 111 cat << EOT
pankso@292 112 <hbox>
pankso@292 113 <text use-markup="true">
pankso@292 114 <label>"<b>$3</b>"</label>
pankso@292 115 </text>
pankso@292 116 <entry editable="false">
pascal@272 117 EOT
pascal@272 118 eval tmp=\$$3
pascal@272 119 [ -n "$tmp" ] && cat << EOT
pankso@292 120 <default>$tmp</default>
pascal@272 121 EOT
pascal@272 122 cat << EOT
pankso@292 123 <variable>$4</variable>
pankso@292 124 </entry>
pascal@272 125 EOT
pascal@272 126 [ -n "$6" ] || cat << EOT
pascal@272 127 $(helpbutton $1 $2)
pascal@272 128 EOT
pascal@272 129 [ -n "$5" ] && cat << EOT
pascal@272 130 $(manbutton $5 $1)
pascal@272 131 EOT
pascal@272 132 cat << EOT
pascal@272 133 $(editbutton /etc/daemons.conf)
pankso@292 134 </hbox>
pascal@272 135 EOT
pascal@272 136 }
pascal@272 137
pascal@272 138 datafile()
pascal@272 139 {
pascal@272 140 cat << EOT
pankso@292 141 <hbox>
pankso@292 142 <text use-markup="true">
pankso@292 143 <label>"<b>$3</b>"</label>
pankso@292 144 </text>
pankso@292 145 <entry editable="false">
pascal@272 146 EOT
pascal@272 147 [ -n "$1" ] && cat << EOT
pankso@292 148 <default>$1</default>
pascal@272 149 EOT
pascal@272 150 cat << EOT
pankso@292 151 <variable>$2</variable>
pankso@292 152 </entry>
pascal@272 153 EOT
pascal@272 154 [ -n "$4" ] && cat << EOT
pascal@272 155 $(manbutton $4)
pascal@272 156 EOT
pascal@272 157 cat << EOT
pascal@272 158 $(editbutton \$$2)
pankso@292 159 </hbox>
pascal@272 160 EOT
pascal@272 161 }
pascal@272 162
pascal@272 163 configfile()
pascal@272 164 {
pankso@297 165 datafile "$1" $2 'Configuration:' "$3"
pascal@272 166 }
pascal@272 167
pascal@372 168 BROWSER=''
pascal@372 169 for i in firefox opera dillo midori netsurf links ; do
pascal@373 170 which $i > /dev/null && BROWSER="$i" && break
pascal@372 171 done
pascal@372 172 case "$BROWSER" in
pascal@372 173 links) BROWSER="links -g ";;
pascal@372 174 esac
pascal@372 175
pascal@272 176 webbutton()
pascal@272 177 {
pascal@372 178 [ -f "/var/lib/tazpkg/installed/$1/receipt" ] &&
pascal@372 179 [ -n "$BROWSER" ] && cat << EOT
pankso@292 180 <button>
pankso@292 181 <input file icon="browser"></input>
pankso@292 182 <label>web</label>
pascal@372 183 <action>. /var/lib/tazpkg/installed/$1/receipt ; $BROWSER \$WEB_SITE &</action>
pankso@292 184 </button>
pascal@271 185 EOT
pascal@271 186 }
pascal@271 187
pascal@372 188 wikibutton()
pascal@372 189 {
pascal@372 190 [ -n "$BROWSER" ] && cat <<EOT
pascal@372 191 <button>
pascal@372 192 <input file icon="browser"></input>
pascal@372 193 <label>Wiki</label>
pascal@372 194 <action>$BROWSER $1 &</action>
pascal@372 195 </button>
pascal@372 196 EOT
pascal@372 197 }
pascal@372 198
pascal@271 199 startstopdaemon()
pascal@271 200 {
pascal@272 201 local pkg
pascal@272 202 pkg=$1
pascal@272 203 [ -n "$2" ] && pkg=$2
pascal@272 204 webbutton $pkg
pascal@271 205 cat << EOT
pankso@292 206 <button>
pankso@292 207 <label>Start</label>
pankso@292 208 <input file icon="forward"></input>
pankso@292 209 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)$1 \?\\(.*\\)\\"/RUN_DAEMONS=\\"\1\2\\"/" /etc/rcS.conf</action>
pankso@292 210 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)\\"/RUN_DAEMONS=\\"$1 \1\\"/" /etc/rcS.conf</action>
pankso@292 211 <action>/etc/init.d/$1 start</action>
pankso@292 212 </button>
pankso@292 213 <button>
pankso@292 214 <label>Stop</label>
pankso@292 215 <input file icon="stop"></input>
pankso@292 216 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)$1 \?\\(.*\\)\\"/RUN_DAEMONS=\\"\1\2\\"/" /etc/rcS.conf</action>
pankso@292 217 <action>/etc/init.d/$1 stop</action>
pankso@292 218 </button>
pascal@271 219 EOT
pascal@271 220 }
pascal@271 221
pascal@272 222 installbox()
pascal@272 223 {
pascal@272 224 cat << EOT
pankso@292 225 <hbox>
pankso@292 226 <text wrap="true" use-markup="true">
pankso@292 227 <label>"<i>The package <b>$1</b> is not yet installed</i>"</label>
pankso@292 228 </text>
pankso@292 229 <button>
pankso@292 230 <input file icon="go-jump"></input>
pankso@292 231 <label>Install</label>
pascal@372 232 <action>$xterm -geometry 80x17 -title "$1 install" -e "yes y | tazpkg get-install $1 ; echo -e \"----\n\nENTER to continue...\" && read close"</action>
pankso@292 233 <action type="exit">restart</action>
pankso@292 234 </button>
pankso@292 235 </hbox>
pascal@272 236 EOT
pascal@272 237 }
pascal@272 238
pascal@177 239 set_ipup()
pascal@177 240 {
pascal@177 241 [ -f /etc/ppp/ip-up ] && return
pascal@177 242 cat > /etc/ppp/ip-up <<EOT
pascal@177 243 #!/bin/sh
pascal@177 244 exec $0 call ipup \$@
pascal@177 245 EOT
pascal@177 246 chmod +x /etc/ppp/ip-up
pascal@177 247 }
pascal@177 248
pascal@259 249 while true; do
pascal@259 250
pascal@225 251 # Detect WIFI_INTERFACE and update /etc/network.conf
pascal@224 252 . /etc/network.conf
pascal@256 253 if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
pascal@256 254 WIFI_INTERFACE=$(for i in /sys/class/net/*/wireless; do \
pascal@256 255 [ -d $i ] && echo $(basename $(dirname $i)) || echo wlan0; \
pascal@256 256 break; done)
pascal@224 257 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
pascal@224 258 fi
pascal@224 259
pascal@371 260 #
pascal@371 261 # Netbox internal calls
pascal@371 262 #
pascal@371 263 #########################################################
pascal@371 264
pascal@177 265 if [ "$1" = "call" ]; then
pascal@177 266 ppp="pppd local lock notty"
pascal@177 267 pppup=""
pascal@177 268 sub=$2
pascal@177 269 shift 2
pascal@177 270 case "$sub" in
pascal@177 271 sendsshkey)
pascal@177 272 check_root
pascal@372 273 ( dropbearkey -y -f /etc/dropbear/dropbear_rsa_host_key ;
pascal@372 274 cat /etc/ssh/ssh_host_rsa_key.pub ) 2> /dev/null | \
pascal@372 275 grep ^ssh | ssh $1 "mkdir .ssh 2> /dev/null ; \
pascal@372 276 while read key; do for i in authorized_keys authorized_keys2; do \
pascal@372 277 grep -q \$key .ssh/\$i || echo \$key >> .ssh/\$i ; done ; done ; \
pascal@372 278 chmod 700 .ssh ; chmod 600 .ssh/authorized_keys*"
pascal@177 279 exit 0;;
pascal@271 280 # OpenSSH VPN:
pascal@271 281 # PermitTunnel=point-to-point (or yes, ethernet, no)
pascal@271 282 # Tunnel="4" => tun4
pascal@271 283 # Local Client:
pascal@271 284 # # ssh -f -w 0:1 $REMOTE true => local tun0 [, remote tun1]
pascal@271 285 # # ifconfig $TUN $IP1 $IP2 netmask 255.255.255.252
pascal@271 286 # # route add $REMOTE_NETWORK $IP2
pascal@271 287 # Remote Server:
pascal@271 288 # # ifconfig $TUN $IP2 $IP1 netmask 255.255.255.252
pascal@271 289 # # route add $LOCAL_NETWORK $IP1
pascal@177 290 vpnssh) check_root
pascal@177 291 set_ipup
pascal@177 292 ps ww | grep -q "$ppp $2:$3" && exit 1
pascal@177 293 pipe="/tmp/ssh$$"
pascal@177 294 mkfifo $pipe
pascal@177 295 [ -n "$4" ] && pppup="ipparam 'addroutes,$(echo $4 | sed 's/ /,/g')'"
pascal@177 296 cat $pipe | dbclient -i /etc/dropbear/dropbear_rsa_host_key \
pascal@177 297 $1 "$ppp" | $ppp $2:$3 $pppup > $pipe
pascal@177 298 rm -f $pipe
pascal@177 299 exit 0;;
pascal@177 300 killvpnssh)
pascal@177 301 check_root
pascal@177 302 kill $(ps x | grep dbclient | grep "$ppp" | awk '{ print $1 }')
pascal@177 303 exit 0;;
pascal@177 304 ipup)
pascal@177 305 # Arg Name Example
pascal@177 306 # $1 Interface name ppp0
pascal@177 307 # $2 The tty ttyS1
pascal@177 308 # $3 The link speed 38400
pascal@177 309 # $4 Local IP number 12.34.56.78
pascal@177 310 # $5 Peer IP number 12.34.56.99
pascal@177 311 # $6 Optional ``ipparam'' value foo
pascal@177 312 iface=$1
pascal@177 313 # skip tty if present
pascal@177 314 case "$2" in [0-9]*);; *) shift; esac
pascal@177 315 peer=$4
pascal@177 316 IFS=","; set -- $(eval echo $5); unset IFS
pascal@177 317 set -- $1
pascal@177 318 if [ "$1" = "addroutes" ]; then
pascal@177 319 while [ -n "$2" ]; do
pascal@177 320 eval $(ipcalc -n $2)
pascal@177 321 eval $(ipcalc -m $2)
pascal@177 322 route add -net $NETWORK netmask $NETMASK \
pascal@177 323 gw $peer $iface
pascal@177 324 shift
pascal@177 325 done
pascal@177 326 fi
pascal@177 327 exit 0;;
pascal@177 328 esac
pascal@177 329 echo "call $sub unsupported."
pascal@177 330 exit 1
pascal@177 331 fi
pascal@177 332
pascal@371 333 #
pascal@371 334 # Tab display engine
pascal@371 335 #
pascal@371 336 ######################################################
pascal@371 337
pascal@371 338 use_tab()
pascal@371 339 {
pascal@371 340 local tmp=''
pascal@371 341 case "$2" in
pascal@371 342 header|body)
pascal@371 343 $1 | while read exe name call; do
pascal@371 344 case "$exe" in
pascal@371 345 \#*) continue;;
pascal@371 346 esac
pascal@371 347 which $exe > /dev/null || continue
pascal@371 348 if [ "$2" == "header" ]; then
pascal@371 349 echo -n "$tmp$name"
pascal@371 350 tmp='|'
pascal@371 351 else
pascal@371 352 $call
pascal@371 353 fi
pascal@371 354 done
pascal@371 355 ;;
pascal@371 356 *)
pascal@371 357 tmp=$(use_tab $1 header)
pascal@371 358 echo "$tmp" | grep -q \| && cat <<EOT
pascal@371 359 <notebook labels="$tmp">
pascal@371 360 EOT
pascal@371 361 [ -n "$tmp" ] && cat <<EOT
pascal@371 362 $(use_tab $1 body)
pascal@371 363 EOT
pascal@371 364 echo "$tmp" | grep -q \| && cat <<EOT
pascal@371 365 </notebook>
pascal@371 366 EOT
pascal@371 367 ;;
pascal@371 368 esac
pascal@371 369 }
pascal@371 370
pascal@371 371 #
pascal@371 372 # Status wire interfaces
pascal@371 373 #
pascal@371 374 tab_status_iface()
pascal@371 375 {
pascal@375 376 local eth
pascal@375 377 eth="$( (cd /sys/class/net ; [ -d eth0 ] && ls -d eth* ) )"
pascal@375 378 which ethtool > /dev/null || eth=''
pascal@375 379 if [ -n "$eth" ]; then
pascal@375 380 cat <<EOT
pascal@375 381 <notebook labels="Ifconfig|$(echo $eth | sed 's/ /|/g')">
pascal@375 382 EOT
pascal@375 383 fi
pascal@371 384 cat <<EOT
pascal@371 385 <frame Ifconfig>
pascal@371 386 <text wrap="false" width-chars="58">
pascal@371 387 <input>ifconfig</input>
pankso@292 388 </text>
pascal@371 389 </frame>
pascal@371 390 EOT
pascal@375 391 if [ -n "$eth" ]; then
pascal@375 392 local i
pascal@375 393 for i in $eth ; do
pascal@375 394 cat <<EOT
pascal@375 395 <frame $i>
pascal@375 396 <text wrap="false" width-chars="58">
pascal@375 397 <input>ethtool $i</input>
pascal@375 398 </text>
pascal@375 399 </frame>
pascal@375 400 EOT
pascal@375 401 done
pascal@375 402 cat <<EOT
pascal@375 403 </notebook>
pascal@375 404 EOT
pascal@375 405 fi
pascal@371 406 }
pascal@371 407
pascal@371 408 #
pascal@371 409 # Status wifi interfaces
pascal@371 410 #
pascal@371 411 tab_status_wifi_iface()
pascal@371 412 {
pascal@371 413 cat <<EOT
pascal@371 414 <frame Iwconfig>
pascal@371 415 <text wrap="false" width-chars="58">
pascal@371 416 <input>iwconfig</input>
pascal@371 417 </text>
pascal@371 418 </frame>
pascal@371 419 EOT
pascal@371 420 }
pascal@371 421
pascal@371 422 #
pascal@371 423 # Status wifi network
pascal@371 424 #
pascal@371 425 tab_status_wifi_net()
pascal@371 426 {
pascal@371 427 cat <<EOT
pascal@371 428 <frame Wireless networks>
pascal@371 429 <text wrap="false" width-chars="58">
pascal@371 430 <input>iwlist scan</input>
pascal@371 431 </text>
pascal@371 432 </frame>
pascal@371 433 EOT
pascal@371 434 }
pascal@371 435
pascal@371 436 #
pascal@371 437 # Status routing
pascal@371 438 #
pascal@371 439 tab_status_route()
pascal@371 440 {
pascal@371 441 cat <<EOT
pascal@371 442 <frame Routing>
pascal@371 443 <frame Nameservers>
pascal@371 444 <text wrap="false" width-chars="58">
pascal@371 445 <input>cat /etc/resolv.conf</input>
pankso@292 446 </text>
pankso@292 447 </frame>
pascal@371 448 <frame Routing table>
pascal@371 449 <text wrap="false" width-chars="58">
pascal@371 450 <input>route</input>
pankso@292 451 </text>
pankso@292 452 </frame>
pascal@371 453 <frame Arp table>
pascal@371 454 <text wrap="false" width-chars="58">
pascal@371 455 <input>arp</input>
pascal@371 456 </text>
pascal@371 457 </frame>
pascal@371 458 </frame>
pascal@371 459 EOT
pascal@371 460 }
pankso@194 461
pankso@33 462 #
pascal@371 463 # Status servers
pascal@371 464 #
pascal@371 465 tab_status_servers()
pascal@371 466 {
pascal@372 467 local servers
pascal@372 468 servers="dropbear sshd inetd dhcpd dnsd named rsync httpd mbd vnc pppd knock"
pascal@371 469 cat <<EOT
pascal@371 470 <frame Servers>
pascal@371 471 <text wrap="false" width-chars="58">
pascal@372 472 <input>for i in $servers; do ps ww | grep \$i | grep -v grep | fold -s; done</input>
pascal@371 473 </text>
pascal@371 474 </frame>
pascal@371 475 EOT
pascal@371 476 }
pankso@33 477
pascal@371 478 data_status()
pascal@371 479 {
pascal@371 480 cat <<EOT
pascal@371 481 ifconfig Network\ interfaces tab_status_iface
pascal@371 482 iwconfig Wireless\ interfaces tab_status_wifi_iface
pascal@371 483 iwlist Wireless\ networks tab_status_wifi_net
pascal@371 484 route Routing tab_status_route
pascal@371 485 ps Servers tab_status_servers
pascal@371 486 EOT
pascal@371 487 }
pascal@371 488
pankso@33 489 #
pascal@371 490 # Status
pascal@371 491 #
pascal@371 492 tab_status()
pascal@371 493 {
pascal@371 494 use_tab data_status
pascal@371 495 }
pankso@194 496
pascal@371 497 #
pankso@297 498 # Interfaces list from detect_interfaces()
pascal@371 499 #
pascal@371 500 tab_connections()
pascal@371 501 {
pascal@371 502 cat <<EOT
pankso@297 503 <vbox>
pankso@297 504 <tree>
pankso@297 505 <width>520</width><height>120</height>
pankso@297 506 <variable>INTERFACE_LIST</variable>
pankso@297 507 <label>Interface|Type|Status</label>
pascal@371 508 <input icon_column="0">$0 detect_interfaces</input>
pankso@297 509 <action>refresh:INTERFACE_LIST</action>
pankso@297 510 </tree>
pascal@371 511 </vbox>
pascal@371 512 EOT
pascal@371 513 }
pankso@297 514
pascal@371 515 #
pankso@297 516 # DHCP
pascal@371 517 #
pascal@371 518 tab_udhcpc()
pascal@371 519 {
pascal@371 520 cat <<EOT
pankso@292 521 <frame Udhcpc (busybox)>
pankso@292 522 <text width-chars="58">
pascal@371 523 <label> "Ethernet (cable) default connection." </label>
pankso@292 524 </text>
pankso@292 525 <hbox>
pankso@292 526 <text use-markup="true">
pankso@292 527 <label>"<b>Interface:</b>"</label>
pankso@292 528 </text>
pankso@292 529 <entry>
pascal@371 530 <input>. /etc/network.conf; echo "\$INTERFACE"</input>
pankso@292 531 <variable>INTERFACE</variable>
pankso@292 532 </entry>
pankso@292 533 </hbox>
pankso@292 534 <hbox>
pankso@292 535 <text use-markup="true">
pankso@292 536 <label>"<b>Options: </b>"</label>
pankso@292 537 </text>
pankso@292 538 <entry>
pankso@292 539 <default>-b</default>
pankso@292 540 <variable>UDHCPC_OPTS</variable>
pankso@292 541 </entry>
pascal@372 542 $(helpbutton udhcpc 80x30)
pankso@292 543 </hbox>
pankso@292 544 <hbox>
pankso@292 545 <text use-markup="true">
pankso@292 546 <label>"<b>Script: </b>"</label>
pankso@292 547 </text>
pankso@292 548 <entry editable="false">
pankso@292 549 <default>/usr/share/udhcpc/default.script</default>
pankso@292 550 <variable>UDHCPC_SCRIPT</variable>
pankso@292 551 </entry>
pankso@292 552 <button>
pankso@292 553 <input file icon="accessories-text-editor"></input>
pascal@371 554 <action type="lauch">leafpad \$UDHCPC_SCRIPT</action>
pankso@292 555 </button>
pankso@292 556 </hbox>
pankso@292 557 <hbox>
pankso@292 558 <button>
pankso@292 559 <label>Start</label>
pankso@292 560 <input file icon="forward"></input>
pascal@371 561 <action>sed -i s/`cat /etc/network.conf | grep ^INTERFACE=`/INTERFACE="\$INTERFACE"/ /etc/network.conf</action>
pascal@371 562 <action>sed -i s/DHCP="no"/DHCP="yes"/ /etc/network.conf</action>
pascal@371 563 <action>sed -i s/STATIC="yes"/STATIC="no"/ /etc/network.conf</action>
pascal@371 564 <action>udhcpc \$UDHCPC_OPTS -i \$INTERFACE -p /var/run/udhcpc.\$INTERFACE.pid</action>
pankso@297 565 <action>refresh:INTERFACE_LIST</action>
pankso@292 566 </button>
pankso@292 567 <button>
pankso@292 568 <label>Stop</label>
pankso@292 569 <input file icon="stop"></input>
pascal@371 570 <action>echo -n "Stopping interface : \$INTERFACE... "</action>
pascal@371 571 <action>ifconfig \$INTERFACE down</action>
pankso@292 572 <action>killall -q udhcpc; echo "done"</action>
pankso@297 573 <action>refresh:INTERFACE_LIST</action>
pankso@292 574 </button>
pankso@292 575 </hbox>
pascal@371 576 </frame>
pascal@371 577 EOT
pascal@371 578 }
pankso@194 579
pascal@371 580 #
pankso@292 581 # Static/fixed IP settings.
pascal@371 582 #
pascal@371 583 tab_fixed_ip()
pascal@371 584 {
pascal@371 585 cat <<EOT
pankso@292 586 <frame Ethernet fixed IP>
pankso@292 587 <hbox>
pankso@292 588 <text use-markup="true">
pankso@292 589 <label>"<b>Interface: </b>"</label>
pankso@292 590 </text>
pankso@292 591 <entry>
pascal@371 592 <input>. /etc/network.conf; echo "\$INTERFACE"</input>
pankso@292 593 <variable>INTERFACE</variable>
pankso@292 594 </entry>
pankso@292 595 </hbox>
pankso@292 596 <hbox>
pankso@292 597 <text use-markup="true">
pankso@292 598 <label>"<b>IP: </b>"</label>
pankso@292 599 </text>
pankso@292 600 <entry>
pascal@371 601 <input>. /etc/network.conf; echo "\$IP"</input>
pankso@292 602 <variable>IP</variable>
pankso@292 603 </entry>
pankso@292 604 </hbox>
pankso@292 605 <hbox>
pankso@292 606 <text use-markup="true">
pankso@292 607 <label>"<b>Netmask: </b>"</label>
pankso@292 608 </text>
pankso@292 609 <entry>
pascal@371 610 <input>. /etc/network.conf; echo "\$NETMASK"</input>
pankso@292 611 <variable>NETMASK</variable>
pankso@292 612 </entry>
pankso@292 613 </hbox>
pankso@292 614 <hbox>
pankso@292 615 <text use-markup="true">
pankso@292 616 <label>"<b>Gateway: </b>"</label>
pankso@292 617 </text>
pankso@292 618 <entry>
pascal@371 619 <input>. /etc/network.conf; echo "\$GATEWAY"</input>
pankso@292 620 <variable>GATEWAY</variable>
pankso@292 621 </entry>
pankso@292 622 </hbox>
pankso@292 623 <hbox>
pankso@292 624 <text use-markup="true">
pankso@292 625 <label>"<b>DNS server: </b>"</label>
pankso@292 626 </text>
pankso@292 627 <entry>
pascal@371 628 <input>. /etc/network.conf; echo "\$DNS_SERVER"</input>
pankso@292 629 <variable>DNS_SERVER</variable>
pankso@292 630 </entry>
pascal@371 631 </hbox>
pankso@292 632 <hbox>
pankso@292 633 <button>
pankso@292 634 <label>Start</label>
pankso@292 635 <input file icon="forward"></input>
pankso@292 636 <action>ifconfig lo down</action>
pascal@371 637 <action>ifconfig \$INTERFACE down</action>
pascal@371 638 <action>sed -i s/`cat /etc/network.conf | grep ^INTERFACE=`/INTERFACE="\$INTERFACE"/ /etc/network.conf</action>
pascal@371 639 <action>sed -i s/DHCP="yes"/DHCP="no"/ /etc/network.conf</action>
pascal@371 640 <action>sed -i s/WIFI="yes"/WIFI="no"/ /etc/network.conf</action>
pascal@371 641 <action>sed -i s/STATIC="no"/STATIC="yes"/ /etc/network.conf</action>
pascal@371 642 <action>sed -i s/`cat /etc/network.conf | grep ^IP=`/IP="\$IP"/ /etc/network.conf</action>
pascal@371 643 <action>sed -i s/`cat /etc/network.conf | grep ^NETMASK=`/NETMASK="\$NETMASK"/ /etc/network.conf</action>
pascal@371 644 <action>sed -i s/`cat /etc/network.conf | grep ^GATEWAY=`/GATEWAY="\$GATEWAY"/ /etc/network.conf</action>
pascal@371 645 <action>sed -i s/`cat /etc/network.conf | grep ^DNS_SERVER=`/DNS_SERVER="\$DNS_SERVER"/ /etc/network.conf</action>
pankso@292 646 <action>/etc/init.d/network.sh</action>
pankso@297 647 <action>refresh:INTERFACE_LIST</action>
pankso@292 648 </button>
pankso@292 649 <button>
pankso@292 650 <label>Stop</label>
pankso@292 651 <input file icon="stop"></input>
pascal@371 652 <action>ifconfig \$INTERFACE down</action>
pankso@297 653 <action>refresh:INTERFACE_LIST</action>
pankso@292 654 </button>
pankso@292 655 </hbox>
pascal@371 656 </frame>
pascal@371 657 EOT
pascal@371 658 }
pankso@292 659
pascal@371 660 #
pankso@292 661 # PPPoe settings.
pascal@371 662 #
pascal@371 663 tab_pppoe()
pascal@371 664 {
pascal@371 665 cat <<EOT
pankso@292 666 <frame PPPoE>
pankso@292 667 <hbox>
pankso@292 668 <text use-markup="true">
pankso@292 669 <label>"<b>Name: </b>"</label>
pankso@292 670 </text>
pankso@292 671 <entry>
pascal@371 672 <input>NAME=\$(grep -s ^name /etc/ppp/options); echo "\${NAME#* }"</input>
pankso@292 673 <variable>NAME</variable>
pankso@292 674 </entry>
pankso@292 675 </hbox>
pankso@292 676 <hbox>
pankso@292 677 <text use-markup="true">
pankso@292 678 <label>"<b>Username:</b>"</label>
pankso@292 679 </text>
pankso@292 680 <entry>
pankso@292 681 <variable>USER</variable>
pankso@292 682 </entry>
pankso@292 683 </hbox>
pankso@292 684 <hbox>
pankso@292 685 <text use-markup="true">
pankso@292 686 <label>"<b>Password:</b>"</label>
pankso@292 687 </text>
pankso@292 688 <entry>
pankso@292 689 <variable>PASS</variable>
pankso@292 690 </entry>
pankso@292 691 </hbox>
pankso@292 692 <hbox>
pascal@371 693 $(helpbutton pppd 80x30)
pascal@371 694 $(manbutton 8 pppd)
pascal@374 695 $(webbutton ppp)
pankso@292 696 <button>
pankso@292 697 <input file icon="accessories-text-editor"></input>
pankso@292 698 <label>Tune</label>
pascal@371 699 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 700 <action type="lauch">leafpad /etc/ppp/options</action>
pankso@292 701 </button>
pankso@292 702 <button>
pankso@292 703 <label>Start</label>
pankso@292 704 <input file icon="forward"></input>
pascal@371 705 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/pap-secrets
pascal@371 706 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/pap-secrets</action>
pascal@371 707 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/chap-secrets
pascal@371 708 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/chap-secrets</action>
pascal@371 709 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 710 <action>killall udhcpc</action>
pankso@292 711 <action>sed -i "s/DHCP=\"yes\"/DHCP=\"no\"/" /etc/network.conf</action>
pankso@292 712 <action>sed -i "s/PPPOE=\"no\"/PPPOE=\"yes\"/" /etc/network.conf</action>
pascal@371 713 <action>pppd \$INTERFACE &</action>
pankso@292 714 </button>
pankso@292 715 <button>
pankso@292 716 <label>Stop</label>
pankso@292 717 <input file icon="stop"></input>
pankso@292 718 <action>sed -i "s/PPPOE=\"yes\"/PPPOE=\"no\"/" /etc/network.conf</action>
pankso@292 719 <action>killall pppd</action>
pankso@292 720 </button>
pankso@292 721 </hbox>
pascal@371 722 </frame>
pascal@371 723 EOT
pascal@371 724 }
pankso@292 725
pascal@371 726 #
pankso@292 727 # PPP settings.
pascal@371 728 #
pascal@371 729 tab_ppp()
pascal@371 730 {
pascal@371 731 cat <<EOT
pankso@292 732 <frame PPP>
pankso@292 733 <hbox>
pankso@292 734 <text use-markup="true">
pankso@292 735 <label>"<b>Username: </b>"</label>
pankso@292 736 </text>
pankso@292 737 <entry>
pascal@371 738 <input>USER=\$(grep -s ^ACCOUNT= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${USER#*=}"</input>
pankso@292 739 <variable>USER</variable>
pankso@292 740 </entry>
pankso@292 741 </hbox>
pankso@292 742 <hbox>
pankso@292 743 <text use-markup="true">
pankso@292 744 <label>"<b>Password: </b>"</label>
pankso@292 745 </text>
pankso@292 746 <entry>
pascal@371 747 <input>PASS=\$(grep -s ^PASSWORD= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${PASS#*=}"</input>
pankso@292 748 <variable>PASS</variable>
pankso@292 749 </entry>
pankso@292 750 </hbox>
pankso@292 751 <hbox>
pankso@292 752 <text use-markup="true">
pankso@292 753 <label>"<b>Telephone:</b>"</label>
pankso@292 754 </text>
pankso@292 755 <entry>
pascal@371 756 <input>PHONE=\$(grep -s ^TELEPHONE= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${PHONE#*=}"</input>
pankso@292 757 <variable>PHONE</variable>
pankso@292 758 </entry>
pankso@292 759 </hbox>
pankso@292 760 <hbox>
pascal@371 761 $(helpbutton pppd 80x30)
pascal@371 762 $(manbutton 8 pppd)
pascal@374 763 $(webbutton ppp)
pankso@292 764 <button>
pankso@292 765 <input file icon="accessories-text-editor"></input>
pankso@292 766 <label>Tune</label>
pascal@371 767 <action>[ -n "\$NAME" ] && sed -i "s/^ACCOUNT=.*/ACCOUNT=\$NAME/" /etc/ppp/scripts/ppp-on</action>
pascal@371 768 <action>[ -n "\$PASS" ] && sed -i "s/^PASSWORD=.*/PASSWORD=\$PASS/" /etc/ppp/scripts/ppp-on</action>
pascal@371 769 <action>[ -n "\$PHONE" ] && sed -i "s/^TELEPHONE=.*/TELEPHONE=\$PHONE/" /etc/ppp/scripts/ppp-on</action>
pankso@292 770 <action type="lauch">leafpad /etc/ppp/scripts/ppp-on</action>
pankso@292 771 </button>
pankso@292 772 <button>
pankso@292 773 <label>Start</label>
pankso@292 774 <input file icon="forward"></input>
pascal@371 775 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/pap-secrets
pascal@371 776 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/pap-secrets</action>
pascal@371 777 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/chap-secrets
pascal@371 778 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/chap-secrets</action>
pascal@371 779 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 780 <action>/etc/ppp/scripts/ppp-off</action>
pankso@292 781 <action>/etc/ppp/scripts/ppp-on &</action>
pankso@292 782 </button>
pankso@292 783 <button>
pankso@292 784 <label>Stop</label>
pankso@292 785 <input file icon="stop"></input>
pankso@292 786 <action>/etc/ppp/scripts/ppp-off</action>
pankso@292 787 </button>
pankso@292 788 </hbox>
pascal@371 789 </frame>
pascal@371 790 EOT
pascal@371 791 }
pankso@292 792
pankso@292 793 #
pascal@371 794 # System Wide configuration.
pankso@292 795 #
pascal@371 796 tab_system()
pascal@371 797 {
pascal@371 798 cat <<EOT
pascal@371 799 <frame Configuration files>
pankso@33 800 <hbox>
pankso@33 801 <text use-markup="true">
pankso@34 802 <label>"<b>Hosts :</b>"</label>
pankso@33 803 </text>
pankso@33 804 <entry editable="false">
pankso@33 805 <default>/etc/hosts</default>
pankso@33 806 <variable>HOSTS</variable>
pankso@33 807 </entry>
pankso@33 808 <button>
pankso@33 809 <input file icon="accessories-text-editor"></input>
pascal@371 810 <action type="lauch">leafpad \$HOSTS</action>
pankso@33 811 </button>
pankso@33 812 </hbox>
pankso@33 813 <hbox>
pankso@33 814 <text use-markup="true">
pankso@34 815 <label>"<b>Host name :</b>"</label>
pankso@33 816 </text>
pankso@33 817 <entry editable="false">
pankso@33 818 <default>/etc/hostname</default>
pankso@33 819 <variable>HOSTNAME</variable>
pankso@33 820 </entry>
pankso@33 821 <button>
pankso@33 822 <input file icon="accessories-text-editor"></input>
pascal@371 823 <action type="lauch">leafpad \$HOSTNAME</action>
pankso@33 824 </button>
pankso@33 825 </hbox>
pankso@33 826 <hbox>
pankso@33 827 <text use-markup="true">
pankso@34 828 <label>"<b>Network :</b>"</label>
pankso@33 829 </text>
pankso@33 830 <entry editable="false">
pankso@33 831 <default>/etc/network.conf</default>
pankso@33 832 <variable>CONFIG_FILE</variable>
pankso@33 833 </entry>
pankso@33 834 <button>
pankso@33 835 <input file icon="accessories-text-editor"></input>
pascal@371 836 <action type="lauch">leafpad \$CONFIG_FILE</action>
pankso@33 837 </button>
pankso@33 838 </hbox>
pankso@33 839 <hbox>
pankso@33 840 <button>
pankso@33 841 <label>Restart</label>
pankso@33 842 <input file icon="reload"></input>
pascal@371 843 <action>echo -n "Stopping interface : \$INTERFACE... "</action>
pascal@371 844 <action>ifconfig \$INTERFACE down</action>
pankso@33 845 <action>killall -q udhcpc; echo "done"</action>
pascal@261 846 <action>/etc/init.d/network.sh restart</action>
pankso@33 847 </button>
pankso@33 848 </hbox>
pascal@371 849 </frame>
pascal@371 850 EOT
pascal@371 851 }
pankso@194 852
pascal@371 853 #
pascal@371 854 # ssh/ppp
pascal@371 855 #
pascal@371 856 tab_sshppp()
pascal@371 857 {
pascal@371 858 cat <<EOT
pascal@177 859 <frame Virtual Private Network with PPP/SSH>
pascal@177 860 <hbox>
pascal@177 861 <text use-markup="true">
pascal@177 862 <label>"<b>Peer :</b>"</label>
pascal@177 863 </text>
pascal@177 864 <entry>
pascal@177 865 <variable>DROPBEAR_PEERVPN</variable>
pascal@177 866 <default>user@elsewhere</default>
pascal@177 867 </entry>
pascal@177 868 </hbox>
pascal@177 869 <hbox>
pascal@177 870 <text use-markup="true">
pascal@177 871 <label>"<b>Local IP :</b>"</label>
pascal@177 872 </text>
pascal@177 873 <entry>
pascal@177 874 <variable>DROPBEAR_LOCAL</variable>
pascal@177 875 <default>192.168.254.1</default>
pascal@177 876 </entry>
pascal@177 877 </hbox>
pascal@177 878 <hbox>
pascal@177 879 <text use-markup="true">
pascal@177 880 <label>"<b>Remote IP :</b>"</label>
pascal@177 881 </text>
pascal@177 882 <entry>
pascal@177 883 <variable>DROPBEAR_REMOTE</variable>
pascal@177 884 <default>192.168.254.2</default>
pascal@177 885 </entry>
pascal@177 886 </hbox>
pascal@177 887 <hbox>
pascal@177 888 <text use-markup="true">
pascal@177 889 <label>"<b>Route(s) :</b>"</label>
pascal@177 890 </text>
pascal@177 891 <entry>
pascal@177 892 <variable>DROPBEAR_ROUTE</variable>
pascal@177 893 <default>192.168.10.0/24 192.168.20.0/28</default>
pascal@177 894 </entry>
pascal@177 895 </hbox>
pascal@177 896 <hbox>
pascal@372 897 $(wikibutton http://wiki.slitaz.org/doku.php?id=quickstart:vpn)
pascal@247 898 <button>
pascal@177 899 <input file icon="forward"></input>
pascal@177 900 <label>Connect</label>
pascal@371 901 <action>$0 call vpnssh \$DROPBEAR_PEERVPN \$DROPBEAR_LOCAL \$DROPBEAR_REMOTE "\$DROPBEAR_ROUTE" &</action>
pascal@177 902 </button>
pascal@177 903 <button>
pascal@177 904 <input file icon="stop"></input>
pascal@177 905 <label>Disconnect</label>
pascal@371 906 <action>$0 call killvpnssh</action>
pascal@177 907 </button>
pascal@177 908 <button>
pascal@177 909 <input file icon="go-up"></input>
pascal@177 910 <label>Send key</label>
pascal@372 911 <action>$xterm -geometry 80x10 -title "Send key" -e "$0 call sendsshkey \$DROPBEAR_PEERVPN; echo -e \"----\nENTER to continue...\" && read close"</action>
pascal@177 912 </button>
pascal@177 913 </hbox>
pascal@177 914 </frame>
pascal@371 915 EOT
pascal@371 916 }
pascal@371 917
pascal@371 918 #
pascal@371 919 # PPTP client
pascal@371 920 #
pascal@371 921 #FIXME
pascal@371 922 #cat > /etc/ppp/peers/$TUNNEL <<EOT
pascal@371 923 #pty "pptp $SERVER --nolaunchpppd"
pascal@371 924 #lock
pascal@371 925 #noauth
pascal@371 926 #nobsdcomp
pascal@371 927 #nodeflate
pascal@371 928 #name $DOMAIN\\$USERNAME
pascal@371 929 #remotename $TUNNEL
pascal@371 930 #ipparam $TUNNEL
pascal@371 931 #$(encryption && echo "require-mppe-128")
pascal@371 932 #EOT
pascal@371 933 #pppd call $TUNNEL updetach
pascal@371 934
pascal@371 935 tab_pptp()
pascal@371 936 {
pascal@371 937 [ -f /etc/ppp/options.pptp ] || cat >> /etc/ppp/options.pptp <<EOT
pascal@371 938 lock noauth nobsdcomp nodeflate remotename PPTP
pascal@371 939 EOT
pascal@371 940 [ -f /etc/ppp/pptp-servers ] || cat >> /etc/ppp/pptp-servers <<EOT
pascal@371 941 # PPTP servers list
pascal@371 942 EOT
pascal@371 943 cat <<EOT
pascal@371 944 <frame Virtual Private Network with PPTP>
pascal@371 945 <hbox>
pascal@371 946 <text use-markup="true">
pascal@371 947 <label>"<b>Server:</b>"</label>
pascal@371 948 </text>
pascal@371 949 <combobox>
pascal@371 950 <variable>PPTP_SERVER</variable>
pascal@371 951 EOT
pascal@371 952 grep -v ^\# /etc/ppp/pptp-servers | \
pascal@371 953 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@371 954 cat <<EOT
pascal@371 955 <item>SERVER</item>
pascal@371 956 </combobox>
pascal@371 957 <button>
pascal@371 958 <input file icon="accessories-text-editor"></input>
pascal@371 959 <action type="lauch">leafpad /etc/ppp/pptp-servers</action>
pascal@371 960 </button>
pascal@371 961 </hbox>
pascal@371 962 <hbox>
pascal@371 963 <text use-markup="true">
pascal@371 964 <label>"<b> User:</b>"</label>
pascal@371 965 </text>
pascal@371 966 <combobox>
pascal@371 967 <variable>PPTP_USER</variable>
pascal@371 968 EOT
pascal@371 969 grep '\\' /etc/ppp/chap-secrets | grep -v ^\# | \
pascal@371 970 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@371 971 cat <<EOT
pascal@371 972 <item>DOMAIN\USERNAME</item>
pascal@371 973 </combobox>
pascal@371 974 <button>
pascal@371 975 <input file icon="accessories-text-editor"></input>
pascal@371 976 <action type="lauch">leafpad /etc/ppp/chap-secrets</action>
pascal@371 977 </button>
pascal@371 978 </hbox>
pascal@371 979 <hbox>
pascal@371 980 <text use-markup="true">
pascal@371 981 <label>"<b>Password:</b>"</label>
pascal@371 982 </text>
pascal@371 983 <entry>
pascal@371 984 <variable>PPTP_PASS</variable>
pascal@371 985 </entry>
pascal@371 986 </hbox>
pascal@371 987 <hbox>
pascal@371 988 <checkbox>
pascal@371 989 <label>Encryption</label>
pascal@371 990 <variable>PPTP_ENC</variable>
pascal@371 991 <default>true</default>
pascal@371 992 </checkbox>
pascal@371 993 $(helpbutton pptp 80x35)
pascal@371 994 <button>
pascal@371 995 <input file icon="accessories-text-editor"></input>
pascal@371 996 <label>Options</label>
pascal@371 997 <action type="lauch">leafpad /etc/ppp/options.pptp</action>
pascal@371 998 </button>
pascal@374 999 $(webbutton pptpclient)
pascal@371 1000 <button>
pascal@371 1001 <input file icon="forward"></input>
pascal@371 1002 <label>Connect</label>
pascal@371 1003 <action>grep -qs ^\$PPTP_USER /etc/ppp/chap-secrets || \
pascal@371 1004 echo "\$PPTP_USER PPTP \"$PPTP_PASS\" *" >> /etc/ppp/chap-secrets</action>
pascal@371 1005 <action>grep -qs ^\$PPTP_SERVER /etc/ppp/pptp-servers || \
pascal@371 1006 echo "\$PPTP_SERVER" >> /etc/ppp/pptp-servers</action>
pascal@371 1007 <action>PASS=""; [ -n "\$PPTP_PASS" ] && PASS="password \$PASS"; \
pascal@371 1008 ENC=""; [ x\$PPTP_ENC == xtrue ] && ENC="require-mppe-128"; \
pascal@371 1009 /usr/sbin/pptp \$PPTP_SERVER file /etc/ppp/options.pptp \$ENC user \$PPTP_USER \$PASS &
pascal@371 1010 </action>
pascal@371 1011 </button>
pascal@371 1012 <button>
pascal@371 1013 <input file icon="stop"></input>
pascal@371 1014 <label>Disconnect</label>
pascal@371 1015 <action>killall pptp</action>
pascal@371 1016 </button>
pascal@371 1017 </hbox>
pascal@371 1018 </frame>
pascal@371 1019 EOT
pascal@371 1020 }
pascal@371 1021
pascal@374 1022 #
pascal@374 1023 # Cisco EasyVPN
pascal@374 1024 #
pascal@374 1025 tab_easyvpn()
pascal@374 1026 {
pascal@374 1027 cat <<EOT
pascal@374 1028 <frame Cisco EasyVPN>
pascal@374 1029 <hbox>
pascal@374 1030 <text use-markup="true">
pascal@374 1031 <label>"<b>VPNC_OPTIONS</b>"</label>
pascal@374 1032 </text>
pascal@374 1033 <entry editable="false">
pascal@374 1034 EOT
pascal@374 1035 [ -n "$VPNC_OPTIONS" ] && cat << EOT
pascal@374 1036 <default>$tmp</default>
pascal@374 1037 EOT
pascal@374 1038 cat << EOT
pascal@374 1039 <variable>VPNC_OPTS</variable>
pascal@374 1040 </entry>
pascal@374 1041 $(helpbutton vpnc 80x30)
pascal@374 1042 <button>
pascal@374 1043 <input file icon="help"></input>
pascal@374 1044 <label>more</label>
pascal@374 1045 <action>$xterm -geometry 80x40 -title "vpnc help (q to quit)" -e "$(which vpnc) --long-help 2>&1 | less"</action>
pascal@374 1046 </button>
pascal@374 1047 $(editbutton /etc/daemons.conf)
pascal@374 1048 </hbox>
pascal@374 1049 $(configfile /etc/vpnc/default.conf VPNC_CONF)
pascal@374 1050 $(datafile "/etc/vpnc/vpnc-script" VPNC_SCRIPT 'Script:')
pascal@374 1051 <hbox>
pascal@374 1052 $(startstopdaemon vpnc)
pascal@374 1053 </hbox>
pascal@374 1054 </frame>
pascal@374 1055 EOT
pascal@374 1056 }
pascal@374 1057
pascal@375 1058 #
pascal@375 1059 # OpenVPN
pascal@375 1060 #
pascal@375 1061 tab_openvpn()
pascal@375 1062 {
pascal@375 1063 local i
pascal@375 1064 local n
pascal@375 1065 cat <<EOT
pascal@375 1066 <frame OpenVPN>
pascal@375 1067 EOT
pascal@375 1068 n=1
pascal@375 1069 for i in /etc/openvpn/*.conf ; do
pascal@375 1070 [ -f $i ] || continue
pascal@375 1071 configfile $i OPENVPN_CONF$n
pascal@375 1072 n=$(($n + 1))
pascal@375 1073 done
pascal@375 1074 cat <<EOT
pascal@375 1075 <hbox>
pascal@375 1076 $(helpbutton openvpn 80x40)
pascal@375 1077 $(startstopdaemon openvpn)
pascal@375 1078 </hbox>
pascal@375 1079 </frame>
pascal@375 1080 EOT
pascal@375 1081 }
pascal@375 1082
pascal@371 1083 data_vpn()
pascal@371 1084 {
pascal@371 1085 cat <<EOT
pascal@371 1086 $([ -x /usr/sbin/dropbear -o -x /usr/sbin/sshd ] && echo "pppd" ||
pascal@371 1087 echo "#") PPP/SSH tab_sshppp
pascal@371 1088 pptp PPTP tab_pptp
pascal@374 1089 vpnc EasyVPN tab_easyvpn
pascal@375 1090 openvpn OpenVPN tab_openvpn
pascal@371 1091 EOT
pascal@371 1092 }
pascal@371 1093
pascal@371 1094 #
pascal@371 1095 # VPN
pascal@371 1096 #
pascal@371 1097 tab_vpn()
pascal@371 1098 {
pascal@371 1099 use_tab data_vpn
pascal@371 1100 }
pascal@272 1101
pascal@272 1102 sshremote()
pascal@272 1103 {
pascal@272 1104 cat << EOT
pascal@126 1105 <hbox>
pascal@177 1106 <text use-markup="true">
pascal@177 1107 <label>"<b>Remote :</b>"</label>
pascal@177 1108 </text>
pascal@177 1109 <entry>
pascal@272 1110 <variable>$2</variable>
pascal@177 1111 <default>user@elsewhere</default>
pascal@177 1112 </entry>
pascal@177 1113 <button>
pascal@177 1114 <input file icon="utilities-terminal"></input>
pascal@177 1115 <label>Connect</label>
pascal@272 1116 <action>xterm -fa MiscFixed -fs 11 -bg black -fg white -geometry 80x25 -title "$1" -e "$1 \$$2 ; echo -e \"----\nENTER to continue...\" && read close" &</action>
pascal@177 1117 </button>
pascal@177 1118 <button>
pascal@177 1119 <input file icon="go-up"></input>
pascal@177 1120 <label>Send key</label>
pascal@372 1121 <action>$xterm -geometry 80x10 -title "send ssh key" -e "$0 call sendsshkey \$$2; echo -e \"----\nENTER to continue...\" && read close"</action>
pascal@177 1122 </button>
pascal@177 1123 </hbox>
pascal@272 1124 EOT
pascal@272 1125 }
pascal@272 1126
pascal@371 1127 #
pascal@371 1128 # Dropbear client & server
pascal@371 1129 #
pascal@371 1130 tab_dropbear()
pascal@371 1131 {
pascal@371 1132 . /etc/daemons.conf
pascal@371 1133 set -- $DROPBEAR_OPTIONS
pascal@371 1134 while [ -n "$2" ]; do
pascal@371 1135 [ "$1" = "-b" ] && DROPBEAR_BANNER="$2" && break
pascal@371 1136 shift
pascal@371 1137 done
pascal@371 1138
pascal@371 1139 cat <<EOT
pascal@272 1140 <frame Dropbear>
pascal@272 1141 $(helpdaemon dropbear 80x30 DROPBEAR_OPTIONS DROPBEAR_OPTS)
pascal@272 1142 $(datafile /etc/dropbear/banner DROPBEAR_BANNER 'Banner :')
pascal@272 1143 $(sshremote DROPBEAR_PEER 'dbclient -i /etc/dropbear/dropbear_rsa_host_key')
pascal@177 1144 <hbox>
pascal@271 1145 $(startstopdaemon dropbear)
pascal@126 1146 </hbox>
pascal@126 1147 </frame>
pascal@371 1148 EOT
pascal@371 1149 }
pascal@371 1150
pascal@371 1151 #
pascal@371 1152 # OpenSSH client & server
pascal@371 1153 #
pascal@371 1154 tab_openssh()
pascal@371 1155 {
pascal@371 1156 cat <<EOT
pascal@272 1157 <frame OpenSSH>
pascal@272 1158 $(helpdaemon sshd 80x30 OPENSSH_OPTIONS OPENSSH_OPTS 8 nohelp)
pascal@272 1159 $(configfile /etc/ssh/sshd_config OPENSSH_CONF '5 sshd_config')
pascal@272 1160 $(sshremote OPENSSH_PEER 'ssh -i /etc/ssh/ssh_host_rsa_key')
pascal@126 1161 <hbox>
pascal@272 1162 $(startstopdaemon openssh)
pascal@126 1163 </hbox>
pascal@272 1164 </frame>
pascal@371 1165 EOT
pascal@371 1166 }
pascal@371 1167
pascal@371 1168 data_sshd()
pascal@371 1169 {
pascal@371 1170 cat <<EOT
pascal@371 1171 dropbear Dropbear tab_dropbear
pascal@371 1172 sshd OpenSSH tab_openssh
pascal@371 1173 EOT
pascal@371 1174 }
pascal@371 1175
pascal@371 1176 #
pascal@371 1177 # SSH tab
pascal@371 1178 #
pascal@371 1179 tab_sshd()
pascal@371 1180 {
pascal@371 1181 use_tab data_sshd
pascal@371 1182 }
pascal@371 1183
pascal@371 1184 #
pascal@371 1185 # Busybox Inetd
pascal@371 1186 #
pascal@371 1187 tab_inetd()
pascal@371 1188 {
pascal@371 1189 cat <<EOT
pascal@371 1190 <frame Inetd (busybox)>
pascal@272 1191 $(helpdaemon inetd 60x14 INETD_OPTIONS INETD_OPTS)
pascal@271 1192 $(configfile /etc/inetd.conf INETD_CONF)
pascal@126 1193 <hbox>
pascal@371 1194 EOT
pascal@151 1195 for i in $(grep bin /etc/inetd.conf | awk '{ print $6}'); do
pascal@151 1196 i=$(basename $i)
pascal@371 1197 helpbutton $i 60x19 $i
pascal@151 1198 done
pascal@371 1199 cat <<EOT
pascal@271 1200 $(startstopdaemon inetd)
pascal@126 1201 </hbox>
pascal@126 1202 </frame>
pascal@371 1203 EOT
pascal@371 1204 }
pascal@371 1205
pascal@371 1206 #
pascal@371 1207 # ZeroConf
pascal@371 1208 #
pascal@371 1209 tab_zcip()
pascal@371 1210 {
pascal@272 1211 if [ -x /sbin/zcip -a -z "$ZCIP_OPTIONS" ]; then
pascal@272 1212 ZCIP_OPTIONS="eth0 /etc/zcip.script"
pascal@215 1213 cat >> /etc/daemons.conf <<EOT
pascal@215 1214 # ZeroConf options
pascal@272 1215 ZCIP_OPTIONS="$ZCIP_OPTIONS"
pascal@215 1216
pascal@215 1217 EOT
pascal@215 1218 fi
pascal@371 1219 cat <<EOT
pascal@272 1220 <frame Zcip (busybox)>
pascal@272 1221 $(helpdaemon zcip 60x14 ZCIP_OPTIONS ZCIP_OPTS)
pascal@272 1222 $(datafile /etc/zcip.script CZIP_SCRIPT 'Script :')
pascal@215 1223 <hbox>
pascal@271 1224 $(startstopdaemon zcip)
pascal@215 1225 </hbox>
pascal@215 1226 </frame>
pascal@371 1227 EOT
pascal@371 1228 }
pascal@371 1229
pascal@371 1230 #
pascal@371 1231 # Dhcpd ISC
pascal@371 1232 #
pascal@371 1233 tab_isc_dhcpd()
pascal@371 1234 {
pascal@371 1235 cat <<EOT
pascal@272 1236 <frame Dhcpd (ISC)>
pascal@272 1237 $(helpdaemon dhcpd 60x14 DHCPD_OPTIONS DHCPD_OPTS)
pascal@272 1238 $(configfile /etc/dhcpd.conf DHCPD_CONF)
pascal@126 1239 <hbox>
pascal@272 1240 $(startstopdaemon dhcpd dhcp)
pascal@155 1241 </hbox>
pascal@272 1242 </frame>
pascal@371 1243 EOT
pascal@371 1244 }
pascal@371 1245
pascal@371 1246 #
pascal@371 1247 # Dhcpd Busybox
pascal@371 1248 #
pascal@371 1249 tab_udhcpd()
pascal@371 1250 {
pascal@371 1251 cat <<EOT
pascal@272 1252 <frame Udhcpd (busybox)>
pascal@272 1253 $(helpdaemon udhcpd 60x14 UDHCPD_OPTIONS UDHCPD_OPTS)
pascal@271 1254 $(configfile /etc/udhcpd.conf UDHCPD_CONF)
pascal@155 1255 <hbox>
pascal@271 1256 $(startstopdaemon udhcpd)
pascal@126 1257 </hbox>
pascal@126 1258 </frame>
pascal@371 1259 EOT
pascal@371 1260 }
pascal@371 1261
pascal@371 1262 data_dhcpd()
pascal@371 1263 {
pascal@371 1264 cat <<EOT
pascal@371 1265 udhcpd Udhcpd tab_udhcpd
pascal@371 1266 dhcpd Dhcpd tab_isc_dhcpd
pascal@373 1267 dnsmasq DNSmasq tab_dnsmasq
pascal@371 1268 EOT
pascal@371 1269 }
pascal@371 1270
pascal@371 1271 #
pascal@371 1272 # dhcpd tab
pascal@371 1273 #
pascal@371 1274 tab_dhcpd()
pascal@371 1275 {
pascal@371 1276 use_tab data_dhcpd
pascal@371 1277 }
pascal@371 1278
pascal@371 1279 #
pascal@371 1280 # PXE
pascal@371 1281 #
pascal@371 1282 tab_pxe()
pascal@371 1283 {
pascal@371 1284 cat <<EOT
pascal@371 1285 <frame Pxelinux>
pascal@126 1286 <hbox>
pascal@126 1287 <text wrap="true">
pascal@126 1288 <label>
pascal@151 1289 "Launch Dhcpd and Inetd with Tftpd to start the PXE service."
pascal@126 1290 </label>
pascal@126 1291 </text>
pascal@126 1292 </hbox>
pascal@126 1293 <hbox>
pascal@126 1294 <text use-markup="true">
pascal@126 1295 <label>"<b>Configuration :</b>"</label>
pascal@126 1296 </text>
pascal@126 1297 <entry editable="false">
pascal@371 1298 <default>
pascal@371 1299 $(grep bin/tftpd /etc/inetd.conf | awk '{ print $NF }')/pxelinux.cfg/default
pascal@371 1300 </default>
pascal@126 1301 <variable>PXE_CONF</variable>
pascal@126 1302 </entry>
pascal@126 1303 <button>
pascal@126 1304 <input file icon="accessories-text-editor"></input>
pascal@371 1305 <action>dir=\$(dirname \$PXE_CONF); [ -d \$dir ] || mkdir -p \$dir</action>
pascal@371 1306 <action>lzma d /usr/share/boot/pxelinux.0.lzma \$(dirname \$PXE_CONF)/../pxelinux.0</action>
pascal@371 1307 <action>grep -q "^boot_file" \$UDHCPD_CONF || echo "boot_file pxelinux.0" >> \$UDHCPD_CONF</action>
pascal@371 1308 <action>grep -q "^siaddr" \$UDHCPD_CONF || echo "siaddr \$(ifconfig \$INTERFACE | grep inet.ad | cut -d: -f2 | cut -d\ -f1)" >> \$UDHCPD_CONF</action>
pascal@371 1309 <action>[ -f \$PXE_CONF ] || echo -e "label linux\n\tkernel bzImage\n\tappend initrd=rootfs.gz rw root=/dev/null vga=normal" > \$PXE_CONF</action>
pascal@371 1310 <action type="lauch">leafpad \$PXE_CONF</action>
pascal@126 1311 </button>
pascal@126 1312 </hbox>
pascal@169 1313 <hbox>
pascal@372 1314 $(wikibutton http://wiki.slitaz.org/doku.php?id=quickstart:pxe)
pascal@247 1315 <button>
pascal@169 1316 <input file icon="system-file-manager"></input>
pascal@169 1317 <label>Network boot files</label>
pascal@372 1318 <action>$xterm -geometry 100x25 -title "Network boot files (q to quit)" -e "find \$(dirname \$(dirname \$PXE_CONF)) -exec ls -ld {} \; | less"</action>
pascal@169 1319 </button>
pascal@169 1320 </hbox>
pascal@126 1321 </frame>
pascal@371 1322 EOT
pascal@371 1323 }
pascal@371 1324
pascal@371 1325 #
pascal@371 1326 # Busybox dnsd
pascal@371 1327 #
pascal@371 1328 tab_dnsd()
pascal@371 1329 {
pascal@371 1330 cat <<EOT
pascal@371 1331 <frame Dnsd (busybox master dns)>
pascal@371 1332 $(helpdaemon dnsd 80x15 DNSD_OPTIONS DNSD_OPTS)
pascal@371 1333 $(configfile /etc/dnsd.conf DNSD_CONF)
pascal@371 1334 <hbox>
pascal@371 1335 $(startstopdaemon dnsd)
pascal@371 1336 </hbox>
pascal@371 1337 </frame>
pascal@371 1338 EOT
pascal@371 1339 }
pascal@371 1340
pascal@371 1341 #
pascal@371 1342 # ISC Bind
pascal@371 1343 #
pascal@371 1344 tab_named()
pascal@371 1345 {
pascal@371 1346 cat <<EOT
pascal@272 1347 <frame Named (ISC bind)>
pascal@272 1348 $(helpdaemon named 80x10 NAMED_OPTIONS NAMED_OPTS)
pascal@272 1349 $(configfile /etc/bind/named.conf.local NAMED_CONF)
pascal@126 1350 <hbox>
pascal@272 1351 $(startstopdaemon named bind)
pascal@126 1352 </hbox>
pascal@272 1353 </frame>
pascal@371 1354 EOT
pascal@371 1355 }
pascal@371 1356
pascal@373 1357 #
pascal@373 1358 # DNSmasq
pascal@373 1359 #
pascal@373 1360 tab_dnsmasq()
pascal@373 1361 {
pascal@373 1362 cat <<EOT
pascal@373 1363 <frame DNSmasq (DNS/DHCP/TFTP)>
pascal@373 1364 $(helpdaemon dnsmasq 100x34 DNSMASQ_OPTIONS DNSMASQ_OPTS)
pascal@373 1365 $(configfile /etc/dnsmasq.conf DNSMASQ_CONF)
pascal@373 1366 <hbox>
pascal@373 1367 $(startstopdaemon dnsmasq)
pascal@373 1368 </hbox>
pascal@373 1369 </frame>
pascal@373 1370 EOT
pascal@373 1371 }
pascal@373 1372
pascal@371 1373 data_dns()
pascal@371 1374 {
pascal@371 1375 cat <<EOT
pascal@371 1376 dnsd Dnsd tab_dnsd
pascal@371 1377 named Named tab_named
pascal@373 1378 dnsmasq DNSmasq tab_dnsmasq
pascal@371 1379 #TODO sheerdns Sheerdns tab_sheerdns
pascal@371 1380 EOT
pascal@371 1381 }
pascal@371 1382
pascal@371 1383 #
pascal@371 1384 # dns tab
pascal@371 1385 #
pascal@371 1386 tab_dns()
pascal@371 1387 {
pascal@371 1388 use_tab data_dns
pascal@371 1389 }
pascal@371 1390
pascal@371 1391 #
pascal@371 1392 # rsync server
pascal@371 1393 #
pascal@371 1394 tab_rsync()
pascal@371 1395 {
pascal@371 1396 cat <<EOT
pascal@272 1397 <frame Rsync>
pascal@272 1398 $(helpdaemon rsync 80x30 RSYNCD_OPTIONS RSYNCD_OPTS 1)
pascal@272 1399 $(configfile /etc/rsyncd.conf RSYNCD_CONF)
pascal@272 1400 $(datafile /etc/rsyncd.secrets RSYNCD_SECRETS 'Secrets file :')
pascal@126 1401 <hbox>
pascal@272 1402 $(startstopdaemon rsyncd rsync)
pascal@126 1403 </hbox>
pascal@126 1404 </frame>
pascal@371 1405 EOT
pascal@371 1406 }
pascal@371 1407
pascal@371 1408 php_ini()
pascal@371 1409 {
pascal@371 1410 [ -f /etc/php.ini ] && cat <<EOT
pascal@371 1411 <frame PHP>
pascal@271 1412 $(configfile /etc/php.ini PHP_CONF)
pascal@168 1413 </frame>
pascal@371 1414 EOT
pascal@371 1415 }
pascal@371 1416
pascal@371 1417 #
pascal@371 1418 # Apache server
pascal@371 1419 #
pascal@371 1420 tab_apache()
pascal@371 1421 {
pascal@371 1422 cat <<EOT
pascal@371 1423 <frame Apache>
pascal@371 1424 $(php_ini)
pascal@272 1425 $(configfile /etc/apache/httpd.conf HTTPD_CONF)
pascal@272 1426 <hbox>
pascal@272 1427 $(startstopdaemon apache)
pascal@272 1428 </hbox>
pascal@272 1429 </frame>
pascal@371 1430 EOT
pascal@371 1431 }
pascal@371 1432
pascal@371 1433 #
pascal@371 1434 # Lighttpd server
pascal@371 1435 #
pascal@371 1436 tab_lighttpd()
pascal@371 1437 {
pascal@371 1438 cat <<EOT
pascal@371 1439 <frame Lighttpd>
pascal@371 1440 $(php_ini)
pascal@271 1441 $(configfile /etc/lighttpd/lighttpd.conf LIGHTTPD_CONF)
pascal@126 1442 <hbox>
pascal@271 1443 $(startstopdaemon lighttpd)
pascal@126 1444 </hbox>
pascal@126 1445 </frame>
pascal@371 1446 EOT
pascal@371 1447 }
pascal@371 1448
pascal@371 1449 data_http()
pascal@371 1450 {
pascal@371 1451 cat <<EOT
pascal@375 1452 httpd Apache tab_apache
pascal@371 1453 lighttpd Named tab_lighttpd
pascal@371 1454 EOT
pascal@371 1455 #TODO busybox httpd
pascal@371 1456 }
pascal@371 1457
pascal@371 1458 #
pascal@371 1459 # http tab
pascal@371 1460 #
pascal@371 1461 tab_http()
pascal@371 1462 {
pascal@371 1463 use_tab data_http
pascal@371 1464 }
pascal@371 1465
pascal@371 1466 #
pascal@371 1467 # Samba servers
pascal@371 1468 #
pascal@371 1469 tab_wins()
pascal@371 1470 {
pascal@371 1471 cat <<EOT
pascal@371 1472 <frame Samba: smbd & nmbd>
pascal@271 1473 $(configfile /etc/samba/smb.conf SMBD_CONF)
pascal@137 1474 <hbox>
pascal@137 1475 <button>
pascal@137 1476 <label>Reload</label>
pascal@371 1477 <input file icon="reload"></input>
pascal@137 1478 <action>/etc/init.d/samba reload</action>
pascal@371 1479 </button>
pascal@271 1480 $(startstopdaemon samba)
pascal@137 1481 </hbox>
pascal@137 1482 </frame>
pascal@371 1483 EOT
pascal@371 1484 }
pascal@371 1485
pascal@371 1486 #
pascal@371 1487 # x11vnc
pascal@371 1488 #
pascal@371 1489 tab_vnc()
pascal@371 1490 {
pascal@371 1491 cat <<EOT
pascal@272 1492 <frame x11vnc>
pascal@272 1493 $(helpdaemon x11vnc 80x30 X11VNC_OPTIONS X11VNC_OPTS)
pascal@163 1494 <hbox>
pascal@371 1495 <text use-markup="true">
pascal@371 1496 <label>"<b>New password</b>"</label>
pascal@163 1497 </text>
pascal@163 1498 <entry>
pascal@163 1499 <variable>X11VNC_PASSWD</variable>
pascal@163 1500 </entry>
pascal@163 1501 <button>
pascal@371 1502 <input file icon="reload"></input>
pascal@163 1503 <label>Update</label>
pascal@272 1504 <action>x11vnc -storepasswd \$X11VNC_PASSWD /etc/vnc.secret</action>
pascal@163 1505 </button>
pascal@163 1506 </hbox>
pascal@272 1507 <hbox>
pascal@271 1508 $(startstopdaemon x11vnc)
pascal@271 1509 </hbox>
pascal@271 1510 </frame>
pascal@371 1511 EOT
pascal@371 1512 }
pascal@371 1513
pascal@371 1514 #
pascal@371 1515 # knock server
pascal@371 1516 #
pascal@371 1517 tab_knockd()
pascal@371 1518 {
pascal@371 1519 cat <<EOT
pascal@272 1520 <frame Knockd: trigger backdoors>
pascal@272 1521 $(helpdaemon knockd 80x15 KNOCK_OPTIONS KNOCK_OPTS)
pascal@271 1522 $(configfile /etc/knockd.conf KNOCKD_CONF)
pascal@271 1523 <hbox>
pascal@272 1524 $(startstopdaemon knockd knock)
pascal@271 1525 </hbox>
pascal@271 1526 </frame>
pascal@371 1527 EOT
pascal@371 1528 }
pascal@371 1529
pascal@371 1530 data_servers()
pascal@371 1531 {
pascal@373 1532 local $pxe
pascal@373 1533 pxe="#"
pascal@373 1534 [ -x /usr/bin/tftpd -a -x /usr/sbin/udhcpd ] && pxe="inetd"
pascal@374 1535 [ -x /usr/sbin/dnsmasq ] && pxe="true"
pascal@373 1536 [ -f /usr/share/boot/pxelinux.0.lzma ] || pxe="#"
pascal@371 1537 cat <<EOT
pascal@371 1538 $([ -x /usr/sbin/dropbear -o -x /usr/sbin/sshd ] && echo "true" ||
pascal@371 1539 echo "#") SSH tab_sshd
pascal@371 1540 inetd Inetd tab_inetd
pascal@371 1541 zcip ZeroConf tab_zcip
pascal@373 1542 $([ -x /usr/sbin/udhcpd -o -x /usr/sbin/dhcpd -o -x /usr/sbin/dnsmasq ] &&
pascal@373 1543 echo "true" ||
pascal@371 1544 echo "#") DHCP tab_dhcpd
pascal@373 1545 $pxe PXE tab_pxe
pascal@373 1546 dnsmasq tftpd tab_dnsmasq
pascal@373 1547 $([ -x /usr/sbin/dnsd -o -x /usr/sbin/named -o -x /usr/sbin/dnsmasq ] &&
pascal@373 1548 echo "true" ||
pascal@371 1549 echo "#") DNS tab_dns
pascal@371 1550 rsync Rsync tab_rsync
pascal@371 1551 $([ -x /usr/sbin/lighttpd -o -x /usr/bin/httpd ] && echo "true" ||
pascal@371 1552 echo "#") HTTP tab_http
pascal@371 1553 smbd WINS tab_wins
pascal@371 1554 x11vnc VNC tab_vnc
pascal@371 1555 knockd Knock tab_knockd
pascal@371 1556 EOT
pascal@371 1557 }
pascal@371 1558
pascal@371 1559 #
pascal@371 1560 # Servers tab
pascal@371 1561 #
pascal@371 1562 tab_servers()
pascal@371 1563 {
pascal@371 1564 use_tab data_servers
pascal@371 1565 }
pascal@371 1566
pascal@371 1567 #
pascal@371 1568 # Firewall tab
pascal@371 1569 #
pascal@371 1570 tab_firewall()
pascal@371 1571 {
pascal@371 1572 cat <<EOT
pascal@371 1573 <frame Iptables>
pascal@271 1574 $(configfile /etc/iptables.conf IPTABLES_CONF)
pascal@163 1575 <hbox>
pascal@371 1576 $(helpbutton iptables 80x30)
pascal@371 1577 $(manbutton 8 iptables)
pascal@374 1578 $(webbutton iptables)
pascal@163 1579 <button>
pascal@271 1580 <label>Load</label>
pascal@371 1581 <input file icon="reload"></input>
pascal@271 1582 <action>cat \$IPTABLES_CONF | /sbin/iptables-restore</action>
pascal@271 1583 </button>
pascal@271 1584 <button>
pascal@271 1585 <label>Save</label>
pascal@371 1586 <input file icon="go-jump"></input>
pascal@271 1587 <action>/sbin/iptables-save > \$IPTABLES_CONF</action>
pascal@163 1588 </button>
pascal@163 1589 </hbox>
pascal@163 1590 </frame>
pascal@371 1591 EOT
pascal@371 1592 }
pascal@371 1593
pascal@371 1594 #
pascal@371 1595 # knock client
pascal@371 1596 #
pascal@371 1597 tab_knock()
pascal@371 1598 {
pascal@371 1599 cat <<EOT
pascal@371 1600 <frame Knock>
pascal@271 1601 <hbox>
pascal@271 1602 <text use-markup="true">
pascal@271 1603 <label>"<b>Options : </b>"</label>
pascal@271 1604 </text>
pascal@271 1605 <entry editable="true">
pascal@271 1606 <variable>KNOCK_OPTS</variable>
pascal@271 1607 <default>myserver.example.com 123:tcp 456:udp 789:tcp</default>
pascal@271 1608 </entry>
pascal@271 1609 </hbox>
pascal@371 1610 <hbox>
pascal@272 1611 $(helpbutton knock 80x12)
pascal@271 1612 <button>
pascal@271 1613 <label>Start</label>
pascal@371 1614 <input file icon="forward"></input>
pascal@272 1615 <action>knock \$KNOCK_OPTS</action>
pascal@271 1616 </button>
pascal@271 1617 </hbox>
pascal@271 1618 </frame>
pascal@371 1619 EOT
pascal@371 1620 }
pascal@371 1621
pascal@371 1622 #
pascal@371 1623 # ether-wake
pascal@371 1624 #
pascal@371 1625 tab_etherwake()
pascal@371 1626 {
pascal@371 1627 cat <<EOT
pascal@271 1628 <frame Ether-wake (busybox)>
pascal@141 1629 <hbox>
pascal@141 1630 <text use-markup="true">
pascal@151 1631 <label>"<b>Machines :</b>"</label>
pascal@151 1632 </text>
pascal@151 1633 <entry editable="false">
pascal@151 1634 <default>/etc/ethers</default>
pascal@151 1635 <variable>ETHERS</variable>
pascal@151 1636 </entry>
pascal@151 1637 <button>
pascal@151 1638 <input file icon="accessories-text-editor"></input>
pascal@372 1639 <action>[ -s \$ETHERS ] || echo "#00:01:02:03:04:05 mystation" >\$ETHERS</action>
pascal@371 1640 <action type="lauch">leafpad \$ETHERS</action>
pascal@151 1641 </button>
pascal@151 1642 </hbox>
pascal@151 1643 <hbox>
pascal@151 1644 <text use-markup="true">
pascal@141 1645 <label>"<b>Options : </b>"</label>
pascal@141 1646 </text>
pascal@271 1647 <entry editable="true">
pascal@141 1648 <variable>ETHERWAKE_OPTS</variable>
pascal@371 1649 </entry>
pascal@371 1650 $(helpbutton ether-wake 80x15)
pascal@371 1651 <button>
pascal@371 1652 <label>Start</label>
pascal@371 1653 <input file icon="forward"></input>
pascal@371 1654 <action>ether-wake \$ETHERWAKE_OPTS</action>
pascal@371 1655 </button>
pascal@371 1656 </hbox>
pascal@375 1657 <frame>
pascal@375 1658 <hbox>
pascal@375 1659 EOT
pascal@375 1660 if which ethtool > /dev/null; then
pascal@375 1661 cat <<EOT
pascal@375 1662 <text use-markup="true">
pascal@375 1663 <label>"<b>Interface:</b>"</label>
pascal@375 1664 </text>
pascal@375 1665 <combobox>
pascal@375 1666 <variable>ETHERWAKE_ETH</variable>
pascal@375 1667 EOT
pascal@375 1668 (cd /sys/class/net ; [ -d eth0 ] && ls -d eth* ) | \
pascal@375 1669 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@375 1670 cat <<EOT
pascal@375 1671 </combobox>
pascal@375 1672 <button>
pascal@375 1673 <label>Enable Wake On LAN</label>
pascal@375 1674 <input file icon="forward"></input>
pascal@375 1675 <action>ethtool -s \$ETHERWAKE_ETH wok g</action>
pascal@375 1676 </button>
pascal@375 1677 EOT
pascal@375 1678 else
pascal@375 1679 cat <<EOT
pascal@375 1680 <vbox>
pascal@375 1681 <text wrap="true" width-chars="58">
pascal@375 1682 <label>
pascal@375 1683 "Ethtool utility can enable Wake-on-lan
pascal@375 1684 feature on many Ethernet card.
pascal@375 1685 "
pascal@375 1686 </label>
pascal@375 1687 </text>
pascal@375 1688 $(installbox ethtool)
pascal@375 1689 </vbox>
pascal@375 1690 EOT
pascal@375 1691 fi
pascal@375 1692 cat <<EOT
pascal@375 1693 </hbox>
pascal@375 1694 </frame>
pascal@371 1695 </frame>
pascal@371 1696 EOT
pascal@371 1697 }
pankso@33 1698
pascal@371 1699 data_main()
pascal@371 1700 {
pascal@371 1701 cat <<EOT
pascal@371 1702 #program tab name function
pascal@371 1703 ifconfig Connections tab_connections
pascal@371 1704 udhcpc DHCP tab_udhcpc
pascal@371 1705 ifconfig Static\ IP tab_fixed_ip
pascal@371 1706 pppoe PPPoE tab_pppoe
pascal@371 1707 pppd PPP tab_ppp
pascal@371 1708 true System\ wide tab_system
pascal@371 1709 true VPN tab_vpn
pascal@371 1710 true Servers tab_servers
pascal@371 1711 iptables Firewall tab_firewall
pascal@371 1712 knock Knock tab_knock
pascal@371 1713 ether-wake Etherwake tab_etherwake
pascal@371 1714 EOT
pascal@371 1715 }
pascal@371 1716
pascal@371 1717 tab_main()
pascal@371 1718 {
pascal@371 1719 use_tab data_main
pascal@371 1720 }
pascal@371 1721
pascal@371 1722 ######################################################
pascal@371 1723 #
pascal@371 1724 # Netbox GUI
pascal@371 1725 #
pascal@371 1726 ######################################################
pascal@371 1727
pascal@371 1728 # English/French help dialog.
pascal@371 1729 export HELP='
pascal@371 1730 <window title="Network status" icon-name="network-wire">
pascal@371 1731 <vbox>
pascal@371 1732 <text use-markup="true">
pascal@371 1733 <label>
pascal@371 1734 "
pascal@371 1735 <b>SliTaz - Netbox</b>"
pascal@371 1736 </label>
pascal@371 1737 </text>
pascal@371 1738 <frame English>
pascal@371 1739 <text wrap="true" width-chars="58">
pascal@371 1740 <label>
pascal@371 1741 "Netbox lets you manage network connections by getting a dynamic IP by
pascal@371 1742 DHCP or a static IP and setup servers. Netbox can start or stop
pascal@371 1743 networking, configure network interfaces or directly edit files."
pascal@371 1744 </label>
pascal@371 1745 </text>
pascal@371 1746 </frame>
pascal@371 1747 <frame Francais>
pascal@371 1748 <text wrap="true" width-chars="58">
pascal@371 1749 <label>
pascal@371 1750 "Netbox vous permet de gerer les connexions reseau avec une IP
pascal@371 1751 statique ou en obtenant une IP dynamique par DHCP, et de parametrer
pascal@371 1752 les serveurs. Netbox peut demarrer ou arreter le reseau, configurer
pascal@371 1753 les interfaces reseau ou editer directement les fichiers."
pascal@371 1754 </label>
pascal@371 1755 </text>
pascal@371 1756 </frame>
pascal@371 1757 </vbox>
pascal@371 1758 </window>
pascal@371 1759 '
pascal@371 1760
pascal@371 1761 # Interface status with ifconfig without arguments to show all
pascal@371 1762 # active connections.
pascal@371 1763 #
pascal@371 1764 export IFCONFIG="
pascal@371 1765 <window title=\"Network status\" icon-name=\"network-wire\">
pascal@371 1766 <vbox>
pascal@371 1767 $(tab_status)
pascal@371 1768 <hbox>
pascal@371 1769 <button>
pascal@371 1770 <input file icon=\"gtk-close\"></input>
pascal@371 1771 <action type=\"closewindow\">IFCONFIG</action>
pascal@371 1772 </button>
pascal@371 1773 </hbox>
pascal@371 1774 </vbox>
pascal@371 1775 </window>"
pascal@371 1776
pascal@371 1777 # The main dialog with notebook, start/stop buttons and all options.
pascal@371 1778 # Note that /etc/network.conf is seded when an interface is activated.
pascal@371 1779 #
pascal@371 1780 head='
pascal@371 1781 <window title="SliTaz Netbox Manager" icon-name="network-wired">
pascal@371 1782 <vbox>
pascal@371 1783
pascal@371 1784 <hbox>
pascal@371 1785 <text use-markup="true">
pascal@371 1786 <label>"<b>Network/Server Manager</b>"</label>
pascal@371 1787 </text>
pascal@371 1788 <pixmap>
pascal@371 1789 <input file>/usr/share/pixmaps/netbox.png</input>
pascal@371 1790 </pixmap>
pascal@371 1791 </hbox>
pascal@371 1792 '
pascal@371 1793 bottom='
pankso@297 1794 <hbox>
pankso@297 1795 <button>
pankso@297 1796 <label>Wireless manager</label>
pankso@297 1797 <input file icon="network-wireless"></input>
pankso@297 1798 <action>wifibox &</action>
pankso@297 1799 </button>
pankso@297 1800 <button>
pankso@297 1801 <label>Refresh list</label>
pankso@297 1802 <input file icon="reload"></input>
pankso@297 1803 <action>refresh:INTERFACE_LIST</action>
pankso@297 1804 </button>
pankso@297 1805 <button>
pankso@297 1806 <label>Full status</label>
pankso@297 1807 <input file icon="dialog-information"></input>
pankso@297 1808 <action type="launch">IFCONFIG</action>
pankso@297 1809 </button>
pankso@297 1810 <button help>
pankso@297 1811 <label>Help</label>
pankso@297 1812 <action type="launch">HELP</action>
pankso@297 1813 </button>
pankso@297 1814 <button>
pankso@297 1815 <label>Quit</label>
pankso@297 1816 <input file icon="exit"></input>
pankso@297 1817 <action type="exit">Exit</action>
pankso@297 1818 </button>
pankso@297 1819 </hbox>
pankso@194 1820
pankso@297 1821 </vbox>
pankso@38 1822 </window>
pankso@33 1823 '
pascal@371 1824
pascal@371 1825 NET_BOX="${head}$(tab_main)${bottom}"
pascal@126 1826
pascal@126 1827 export NET_BOX
pascal@126 1828
pascal@371 1829 # TODO: Modules(Network kernel modules)
pankso@33 1830
pankso@33 1831 # Only root can configure network.
pankso@33 1832 check_root
pankso@297 1833
pascal@177 1834 # Configure and connect if button Connect was pressed.
pascal@177 1835 if ! grep -qs ^name /etc/ppp/options ; then
pascal@177 1836 # Generate /etc/ppp/options
pascal@177 1837 cat > /etc/ppp/options << _EOT_
pascal@177 1838 plugin rp-pppoe.so
pascal@177 1839 name provider-ID
pascal@177 1840 noipdefault
pascal@177 1841 defaultroute
pascal@177 1842 mtu 1492
pascal@177 1843 mru 1492
pascal@177 1844 lock
pascal@177 1845 _EOT_
pascal@177 1846 # Generate /etc/ppp/pap-secrets
pascal@177 1847 cat > /etc/ppp/pap-secrets << _EOT_
pascal@177 1848 # Secrets for authentication using PAP
pascal@177 1849 # client server secret IP addresses
pascal@177 1850 _EOT_
pascal@177 1851 # Generate /etc/ppp/chap-secrets
pascal@177 1852 cat > /etc/ppp/chap-secrets << _EOT_
pascal@177 1853 # Secrets for authentication using CHAP
pascal@177 1854 # client server secret IP addresses
pascal@177 1855 _EOT_
pascal@177 1856 fi
pascal@259 1857 gtkdialog --center --program=NET_BOX | grep -a 'EXIT="restart"' && continue
pankso@33 1858 exit 0
pascal@259 1859 done