slitaz-tools annotate tinyutils/netbox @ rev 378

Netbox: Tiny edits
author Paul Issott <paul@slitaz.org>
date Thu Aug 13 22:00:06 2009 +0000 (2009-08-13)
parents 2f6dffbe0313
children 5c3a91baa7ad
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">
paul@378 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>
pascal@377 552 $(editbutton \$UDHCPC_SCRIPT)
pankso@292 553 </hbox>
pankso@292 554 <hbox>
pankso@292 555 <button>
pankso@292 556 <label>Start</label>
pankso@292 557 <input file icon="forward"></input>
pascal@371 558 <action>sed -i s/`cat /etc/network.conf | grep ^INTERFACE=`/INTERFACE="\$INTERFACE"/ /etc/network.conf</action>
pascal@371 559 <action>sed -i s/DHCP="no"/DHCP="yes"/ /etc/network.conf</action>
pascal@371 560 <action>sed -i s/STATIC="yes"/STATIC="no"/ /etc/network.conf</action>
pascal@371 561 <action>udhcpc \$UDHCPC_OPTS -i \$INTERFACE -p /var/run/udhcpc.\$INTERFACE.pid</action>
pankso@297 562 <action>refresh:INTERFACE_LIST</action>
pankso@292 563 </button>
pankso@292 564 <button>
pankso@292 565 <label>Stop</label>
pankso@292 566 <input file icon="stop"></input>
pascal@371 567 <action>echo -n "Stopping interface : \$INTERFACE... "</action>
pascal@371 568 <action>ifconfig \$INTERFACE down</action>
pankso@292 569 <action>killall -q udhcpc; echo "done"</action>
pankso@297 570 <action>refresh:INTERFACE_LIST</action>
pankso@292 571 </button>
pankso@292 572 </hbox>
pascal@371 573 </frame>
pascal@371 574 EOT
pascal@371 575 }
pankso@194 576
pascal@371 577 #
pankso@292 578 # Static/fixed IP settings.
pascal@371 579 #
pascal@371 580 tab_fixed_ip()
pascal@371 581 {
pascal@371 582 cat <<EOT
pankso@292 583 <frame Ethernet fixed IP>
pankso@292 584 <hbox>
pankso@292 585 <text use-markup="true">
pankso@292 586 <label>"<b>Interface: </b>"</label>
pankso@292 587 </text>
pankso@292 588 <entry>
pascal@371 589 <input>. /etc/network.conf; echo "\$INTERFACE"</input>
pankso@292 590 <variable>INTERFACE</variable>
pankso@292 591 </entry>
pankso@292 592 </hbox>
pankso@292 593 <hbox>
pankso@292 594 <text use-markup="true">
pankso@292 595 <label>"<b>IP: </b>"</label>
pankso@292 596 </text>
pankso@292 597 <entry>
pascal@371 598 <input>. /etc/network.conf; echo "\$IP"</input>
pankso@292 599 <variable>IP</variable>
pankso@292 600 </entry>
pankso@292 601 </hbox>
pankso@292 602 <hbox>
pankso@292 603 <text use-markup="true">
pankso@292 604 <label>"<b>Netmask: </b>"</label>
pankso@292 605 </text>
pankso@292 606 <entry>
pascal@371 607 <input>. /etc/network.conf; echo "\$NETMASK"</input>
pankso@292 608 <variable>NETMASK</variable>
pankso@292 609 </entry>
pankso@292 610 </hbox>
pankso@292 611 <hbox>
pankso@292 612 <text use-markup="true">
pankso@292 613 <label>"<b>Gateway: </b>"</label>
pankso@292 614 </text>
pankso@292 615 <entry>
pascal@371 616 <input>. /etc/network.conf; echo "\$GATEWAY"</input>
pankso@292 617 <variable>GATEWAY</variable>
pankso@292 618 </entry>
pankso@292 619 </hbox>
pankso@292 620 <hbox>
pankso@292 621 <text use-markup="true">
pankso@292 622 <label>"<b>DNS server: </b>"</label>
pankso@292 623 </text>
pankso@292 624 <entry>
pascal@371 625 <input>. /etc/network.conf; echo "\$DNS_SERVER"</input>
pankso@292 626 <variable>DNS_SERVER</variable>
pankso@292 627 </entry>
pascal@371 628 </hbox>
pankso@292 629 <hbox>
pankso@292 630 <button>
pankso@292 631 <label>Start</label>
pankso@292 632 <input file icon="forward"></input>
pankso@292 633 <action>ifconfig lo down</action>
pascal@371 634 <action>ifconfig \$INTERFACE down</action>
pascal@371 635 <action>sed -i s/`cat /etc/network.conf | grep ^INTERFACE=`/INTERFACE="\$INTERFACE"/ /etc/network.conf</action>
pascal@371 636 <action>sed -i s/DHCP="yes"/DHCP="no"/ /etc/network.conf</action>
pascal@371 637 <action>sed -i s/WIFI="yes"/WIFI="no"/ /etc/network.conf</action>
pascal@371 638 <action>sed -i s/STATIC="no"/STATIC="yes"/ /etc/network.conf</action>
pascal@371 639 <action>sed -i s/`cat /etc/network.conf | grep ^IP=`/IP="\$IP"/ /etc/network.conf</action>
pascal@371 640 <action>sed -i s/`cat /etc/network.conf | grep ^NETMASK=`/NETMASK="\$NETMASK"/ /etc/network.conf</action>
pascal@371 641 <action>sed -i s/`cat /etc/network.conf | grep ^GATEWAY=`/GATEWAY="\$GATEWAY"/ /etc/network.conf</action>
pascal@371 642 <action>sed -i s/`cat /etc/network.conf | grep ^DNS_SERVER=`/DNS_SERVER="\$DNS_SERVER"/ /etc/network.conf</action>
pankso@292 643 <action>/etc/init.d/network.sh</action>
pankso@297 644 <action>refresh:INTERFACE_LIST</action>
pankso@292 645 </button>
pankso@292 646 <button>
pankso@292 647 <label>Stop</label>
pankso@292 648 <input file icon="stop"></input>
pascal@371 649 <action>ifconfig \$INTERFACE down</action>
pankso@297 650 <action>refresh:INTERFACE_LIST</action>
pankso@292 651 </button>
pankso@292 652 </hbox>
pascal@371 653 </frame>
pascal@371 654 EOT
pascal@371 655 }
pankso@292 656
pascal@371 657 #
pankso@292 658 # PPPoe settings.
pascal@371 659 #
pascal@371 660 tab_pppoe()
pascal@371 661 {
pascal@371 662 cat <<EOT
pankso@292 663 <frame PPPoE>
pankso@292 664 <hbox>
pankso@292 665 <text use-markup="true">
pankso@292 666 <label>"<b>Name: </b>"</label>
pankso@292 667 </text>
pankso@292 668 <entry>
pascal@371 669 <input>NAME=\$(grep -s ^name /etc/ppp/options); echo "\${NAME#* }"</input>
pankso@292 670 <variable>NAME</variable>
pankso@292 671 </entry>
pankso@292 672 </hbox>
pankso@292 673 <hbox>
pankso@292 674 <text use-markup="true">
pankso@292 675 <label>"<b>Username:</b>"</label>
pankso@292 676 </text>
pankso@292 677 <entry>
pankso@292 678 <variable>USER</variable>
pankso@292 679 </entry>
pankso@292 680 </hbox>
pankso@292 681 <hbox>
pankso@292 682 <text use-markup="true">
pankso@292 683 <label>"<b>Password:</b>"</label>
pankso@292 684 </text>
pankso@292 685 <entry>
pankso@292 686 <variable>PASS</variable>
pankso@292 687 </entry>
pankso@292 688 </hbox>
pankso@292 689 <hbox>
pascal@371 690 $(helpbutton pppd 80x30)
pascal@371 691 $(manbutton 8 pppd)
pascal@374 692 $(webbutton ppp)
pankso@292 693 <button>
pankso@292 694 <input file icon="accessories-text-editor"></input>
pankso@292 695 <label>Tune</label>
pascal@371 696 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 697 <action type="lauch">leafpad /etc/ppp/options</action>
pankso@292 698 </button>
pankso@292 699 <button>
pankso@292 700 <label>Start</label>
pankso@292 701 <input file icon="forward"></input>
pascal@371 702 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/pap-secrets
pascal@371 703 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/pap-secrets</action>
pascal@371 704 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/chap-secrets
pascal@371 705 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/chap-secrets</action>
pascal@371 706 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 707 <action>killall udhcpc</action>
pankso@292 708 <action>sed -i "s/DHCP=\"yes\"/DHCP=\"no\"/" /etc/network.conf</action>
pankso@292 709 <action>sed -i "s/PPPOE=\"no\"/PPPOE=\"yes\"/" /etc/network.conf</action>
pascal@371 710 <action>pppd \$INTERFACE &</action>
pankso@292 711 </button>
pankso@292 712 <button>
pankso@292 713 <label>Stop</label>
pankso@292 714 <input file icon="stop"></input>
pankso@292 715 <action>sed -i "s/PPPOE=\"yes\"/PPPOE=\"no\"/" /etc/network.conf</action>
pankso@292 716 <action>killall pppd</action>
pankso@292 717 </button>
pankso@292 718 </hbox>
pascal@371 719 </frame>
pascal@371 720 EOT
pascal@371 721 }
pankso@292 722
pascal@371 723 #
pankso@292 724 # PPP settings.
pascal@371 725 #
pascal@371 726 tab_ppp()
pascal@371 727 {
pascal@371 728 cat <<EOT
pankso@292 729 <frame PPP>
pankso@292 730 <hbox>
pankso@292 731 <text use-markup="true">
pankso@292 732 <label>"<b>Username: </b>"</label>
pankso@292 733 </text>
pankso@292 734 <entry>
pascal@371 735 <input>USER=\$(grep -s ^ACCOUNT= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${USER#*=}"</input>
pankso@292 736 <variable>USER</variable>
pankso@292 737 </entry>
pankso@292 738 </hbox>
pankso@292 739 <hbox>
pankso@292 740 <text use-markup="true">
pankso@292 741 <label>"<b>Password: </b>"</label>
pankso@292 742 </text>
pankso@292 743 <entry>
pascal@371 744 <input>PASS=\$(grep -s ^PASSWORD= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${PASS#*=}"</input>
pankso@292 745 <variable>PASS</variable>
pankso@292 746 </entry>
pankso@292 747 </hbox>
pankso@292 748 <hbox>
pankso@292 749 <text use-markup="true">
pankso@292 750 <label>"<b>Telephone:</b>"</label>
pankso@292 751 </text>
pankso@292 752 <entry>
pascal@371 753 <input>PHONE=\$(grep -s ^TELEPHONE= /etc/ppp/scripts/ppp-on | cut -f1); echo "\${PHONE#*=}"</input>
pankso@292 754 <variable>PHONE</variable>
pankso@292 755 </entry>
pankso@292 756 </hbox>
pankso@292 757 <hbox>
pascal@371 758 $(helpbutton pppd 80x30)
pascal@371 759 $(manbutton 8 pppd)
pascal@374 760 $(webbutton ppp)
pankso@292 761 <button>
pankso@292 762 <input file icon="accessories-text-editor"></input>
pankso@292 763 <label>Tune</label>
pascal@371 764 <action>[ -n "\$NAME" ] && sed -i "s/^ACCOUNT=.*/ACCOUNT=\$NAME/" /etc/ppp/scripts/ppp-on</action>
pascal@371 765 <action>[ -n "\$PASS" ] && sed -i "s/^PASSWORD=.*/PASSWORD=\$PASS/" /etc/ppp/scripts/ppp-on</action>
pascal@371 766 <action>[ -n "\$PHONE" ] && sed -i "s/^TELEPHONE=.*/TELEPHONE=\$PHONE/" /etc/ppp/scripts/ppp-on</action>
pankso@292 767 <action type="lauch">leafpad /etc/ppp/scripts/ppp-on</action>
pankso@292 768 </button>
pankso@292 769 <button>
pankso@292 770 <label>Start</label>
pankso@292 771 <input file icon="forward"></input>
pascal@371 772 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/pap-secrets
pascal@371 773 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/pap-secrets</action>
pascal@371 774 <action>[ -n "\$USER" ] && grep -qs "^\"\$USER\"" /etc/ppp/chap-secrets
pascal@371 775 && echo "\"\$USER\" * \"\$PASS\"" >> /etc/ppp/chap-secrets</action>
pascal@371 776 <action>[ -n "\$NAME" ] && sed -i "s/^name .*/name \$NAME/" /etc/ppp/options</action>
pankso@292 777 <action>/etc/ppp/scripts/ppp-off</action>
pankso@292 778 <action>/etc/ppp/scripts/ppp-on &</action>
pankso@292 779 </button>
pankso@292 780 <button>
pankso@292 781 <label>Stop</label>
pankso@292 782 <input file icon="stop"></input>
pankso@292 783 <action>/etc/ppp/scripts/ppp-off</action>
pankso@292 784 </button>
pankso@292 785 </hbox>
pascal@371 786 </frame>
pascal@371 787 EOT
pascal@371 788 }
pankso@292 789
pankso@292 790 #
pascal@371 791 # System Wide configuration.
pankso@292 792 #
pascal@371 793 tab_system()
pascal@371 794 {
pascal@371 795 cat <<EOT
pascal@371 796 <frame Configuration files>
pankso@33 797 <hbox>
pankso@33 798 <text use-markup="true">
pankso@34 799 <label>"<b>Hosts :</b>"</label>
pankso@33 800 </text>
pankso@33 801 <entry editable="false">
pankso@33 802 <default>/etc/hosts</default>
pankso@33 803 <variable>HOSTS</variable>
pankso@33 804 </entry>
pascal@377 805 $(editbutton \$HOSTS)
pankso@33 806 </hbox>
pankso@33 807 <hbox>
pankso@33 808 <text use-markup="true">
pankso@34 809 <label>"<b>Host name :</b>"</label>
pankso@33 810 </text>
pankso@33 811 <entry editable="false">
pankso@33 812 <default>/etc/hostname</default>
pankso@33 813 <variable>HOSTNAME</variable>
pankso@33 814 </entry>
pascal@377 815 $(editbutton \$HOSTNAME)
pankso@33 816 </hbox>
pankso@33 817 <hbox>
pankso@33 818 <text use-markup="true">
pankso@34 819 <label>"<b>Network :</b>"</label>
pankso@33 820 </text>
pankso@33 821 <entry editable="false">
pankso@33 822 <default>/etc/network.conf</default>
pankso@33 823 <variable>CONFIG_FILE</variable>
pankso@33 824 </entry>
pascal@377 825 $(editbutton \$CONFIG_FILE)
pankso@33 826 </hbox>
pankso@33 827 <hbox>
pankso@33 828 <button>
pankso@33 829 <label>Restart</label>
pankso@33 830 <input file icon="reload"></input>
pascal@371 831 <action>echo -n "Stopping interface : \$INTERFACE... "</action>
pascal@371 832 <action>ifconfig \$INTERFACE down</action>
pankso@33 833 <action>killall -q udhcpc; echo "done"</action>
pascal@261 834 <action>/etc/init.d/network.sh restart</action>
pankso@33 835 </button>
pankso@33 836 </hbox>
pascal@371 837 </frame>
pascal@371 838 EOT
pascal@371 839 }
pankso@194 840
pascal@371 841 #
pascal@371 842 # ssh/ppp
pascal@371 843 #
pascal@371 844 tab_sshppp()
pascal@371 845 {
pascal@371 846 cat <<EOT
pascal@177 847 <frame Virtual Private Network with PPP/SSH>
pascal@177 848 <hbox>
pascal@177 849 <text use-markup="true">
pascal@177 850 <label>"<b>Peer :</b>"</label>
pascal@177 851 </text>
pascal@177 852 <entry>
pascal@177 853 <variable>DROPBEAR_PEERVPN</variable>
pascal@177 854 <default>user@elsewhere</default>
pascal@177 855 </entry>
pascal@177 856 </hbox>
pascal@177 857 <hbox>
pascal@177 858 <text use-markup="true">
pascal@177 859 <label>"<b>Local IP :</b>"</label>
pascal@177 860 </text>
pascal@177 861 <entry>
pascal@177 862 <variable>DROPBEAR_LOCAL</variable>
pascal@177 863 <default>192.168.254.1</default>
pascal@177 864 </entry>
pascal@177 865 </hbox>
pascal@177 866 <hbox>
pascal@177 867 <text use-markup="true">
pascal@177 868 <label>"<b>Remote IP :</b>"</label>
pascal@177 869 </text>
pascal@177 870 <entry>
pascal@177 871 <variable>DROPBEAR_REMOTE</variable>
pascal@177 872 <default>192.168.254.2</default>
pascal@177 873 </entry>
pascal@177 874 </hbox>
pascal@177 875 <hbox>
pascal@177 876 <text use-markup="true">
pascal@177 877 <label>"<b>Route(s) :</b>"</label>
pascal@177 878 </text>
pascal@177 879 <entry>
pascal@177 880 <variable>DROPBEAR_ROUTE</variable>
pascal@177 881 <default>192.168.10.0/24 192.168.20.0/28</default>
pascal@177 882 </entry>
pascal@177 883 </hbox>
pascal@177 884 <hbox>
pascal@372 885 $(wikibutton http://wiki.slitaz.org/doku.php?id=quickstart:vpn)
pascal@247 886 <button>
pascal@177 887 <input file icon="forward"></input>
pascal@177 888 <label>Connect</label>
pascal@371 889 <action>$0 call vpnssh \$DROPBEAR_PEERVPN \$DROPBEAR_LOCAL \$DROPBEAR_REMOTE "\$DROPBEAR_ROUTE" &</action>
pascal@177 890 </button>
pascal@177 891 <button>
pascal@177 892 <input file icon="stop"></input>
pascal@177 893 <label>Disconnect</label>
pascal@371 894 <action>$0 call killvpnssh</action>
pascal@177 895 </button>
pascal@177 896 <button>
pascal@177 897 <input file icon="go-up"></input>
pascal@177 898 <label>Send key</label>
pascal@372 899 <action>$xterm -geometry 80x10 -title "Send key" -e "$0 call sendsshkey \$DROPBEAR_PEERVPN; echo -e \"----\nENTER to continue...\" && read close"</action>
pascal@177 900 </button>
pascal@177 901 </hbox>
pascal@177 902 </frame>
pascal@371 903 EOT
pascal@371 904 }
pascal@371 905
pascal@371 906 #
pascal@371 907 # PPTP client
pascal@371 908 #
pascal@371 909 #FIXME
pascal@371 910 #cat > /etc/ppp/peers/$TUNNEL <<EOT
pascal@371 911 #pty "pptp $SERVER --nolaunchpppd"
pascal@371 912 #lock
pascal@371 913 #noauth
pascal@371 914 #nobsdcomp
pascal@371 915 #nodeflate
pascal@371 916 #name $DOMAIN\\$USERNAME
pascal@371 917 #remotename $TUNNEL
pascal@371 918 #ipparam $TUNNEL
pascal@371 919 #$(encryption && echo "require-mppe-128")
pascal@371 920 #EOT
pascal@371 921 #pppd call $TUNNEL updetach
pascal@371 922
pascal@371 923 tab_pptp()
pascal@371 924 {
pascal@371 925 [ -f /etc/ppp/options.pptp ] || cat >> /etc/ppp/options.pptp <<EOT
pascal@371 926 lock noauth nobsdcomp nodeflate remotename PPTP
pascal@371 927 EOT
pascal@371 928 [ -f /etc/ppp/pptp-servers ] || cat >> /etc/ppp/pptp-servers <<EOT
pascal@371 929 # PPTP servers list
pascal@371 930 EOT
pascal@371 931 cat <<EOT
pascal@371 932 <frame Virtual Private Network with PPTP>
pascal@371 933 <hbox>
pascal@371 934 <text use-markup="true">
pascal@371 935 <label>"<b>Server:</b>"</label>
pascal@371 936 </text>
pascal@371 937 <combobox>
pascal@371 938 <variable>PPTP_SERVER</variable>
pascal@371 939 EOT
pascal@371 940 grep -v ^\# /etc/ppp/pptp-servers | \
pascal@371 941 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@371 942 cat <<EOT
pascal@371 943 <item>SERVER</item>
pascal@371 944 </combobox>
pascal@377 945 $(editbutton /etc/ppp/pptp-servers)
pascal@371 946 </hbox>
pascal@371 947 <hbox>
pascal@371 948 <text use-markup="true">
pascal@371 949 <label>"<b> User:</b>"</label>
pascal@371 950 </text>
pascal@371 951 <combobox>
pascal@371 952 <variable>PPTP_USER</variable>
pascal@371 953 EOT
pascal@371 954 grep '\\' /etc/ppp/chap-secrets | grep -v ^\# | \
pascal@371 955 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@371 956 cat <<EOT
pascal@371 957 <item>DOMAIN\USERNAME</item>
pascal@371 958 </combobox>
pascal@377 959 $(editbutton /etc/ppp/chap-secrets)
pascal@371 960 </hbox>
pascal@371 961 <hbox>
pascal@371 962 <text use-markup="true">
pascal@371 963 <label>"<b>Password:</b>"</label>
pascal@371 964 </text>
pascal@371 965 <entry>
pascal@371 966 <variable>PPTP_PASS</variable>
pascal@371 967 </entry>
pascal@371 968 </hbox>
pascal@371 969 <hbox>
pascal@371 970 <checkbox>
pascal@371 971 <label>Encryption</label>
pascal@371 972 <variable>PPTP_ENC</variable>
pascal@371 973 <default>true</default>
pascal@371 974 </checkbox>
pascal@371 975 $(helpbutton pptp 80x35)
pascal@371 976 <button>
pascal@371 977 <input file icon="accessories-text-editor"></input>
pascal@371 978 <label>Options</label>
pascal@371 979 <action type="lauch">leafpad /etc/ppp/options.pptp</action>
pascal@371 980 </button>
pascal@374 981 $(webbutton pptpclient)
pascal@371 982 <button>
pascal@371 983 <input file icon="forward"></input>
pascal@371 984 <label>Connect</label>
pascal@371 985 <action>grep -qs ^\$PPTP_USER /etc/ppp/chap-secrets || \
pascal@371 986 echo "\$PPTP_USER PPTP \"$PPTP_PASS\" *" >> /etc/ppp/chap-secrets</action>
pascal@371 987 <action>grep -qs ^\$PPTP_SERVER /etc/ppp/pptp-servers || \
pascal@371 988 echo "\$PPTP_SERVER" >> /etc/ppp/pptp-servers</action>
pascal@371 989 <action>PASS=""; [ -n "\$PPTP_PASS" ] && PASS="password \$PASS"; \
pascal@371 990 ENC=""; [ x\$PPTP_ENC == xtrue ] && ENC="require-mppe-128"; \
pascal@371 991 /usr/sbin/pptp \$PPTP_SERVER file /etc/ppp/options.pptp \$ENC user \$PPTP_USER \$PASS &
pascal@371 992 </action>
pascal@371 993 </button>
pascal@371 994 <button>
pascal@371 995 <input file icon="stop"></input>
pascal@371 996 <label>Disconnect</label>
pascal@371 997 <action>killall pptp</action>
pascal@371 998 </button>
pascal@371 999 </hbox>
pascal@371 1000 </frame>
pascal@371 1001 EOT
pascal@371 1002 }
pascal@371 1003
pascal@374 1004 #
pascal@374 1005 # Cisco EasyVPN
pascal@374 1006 #
pascal@374 1007 tab_easyvpn()
pascal@374 1008 {
pascal@374 1009 cat <<EOT
pascal@374 1010 <frame Cisco EasyVPN>
pascal@374 1011 <hbox>
pascal@374 1012 <text use-markup="true">
pascal@374 1013 <label>"<b>VPNC_OPTIONS</b>"</label>
pascal@374 1014 </text>
pascal@374 1015 <entry editable="false">
pascal@374 1016 EOT
pascal@374 1017 [ -n "$VPNC_OPTIONS" ] && cat << EOT
pascal@374 1018 <default>$tmp</default>
pascal@374 1019 EOT
pascal@374 1020 cat << EOT
pascal@374 1021 <variable>VPNC_OPTS</variable>
pascal@374 1022 </entry>
pascal@374 1023 $(helpbutton vpnc 80x30)
pascal@374 1024 <button>
pascal@374 1025 <input file icon="help"></input>
pascal@374 1026 <label>more</label>
pascal@374 1027 <action>$xterm -geometry 80x40 -title "vpnc help (q to quit)" -e "$(which vpnc) --long-help 2>&1 | less"</action>
pascal@374 1028 </button>
pascal@374 1029 $(editbutton /etc/daemons.conf)
pascal@374 1030 </hbox>
pascal@374 1031 $(configfile /etc/vpnc/default.conf VPNC_CONF)
pascal@374 1032 $(datafile "/etc/vpnc/vpnc-script" VPNC_SCRIPT 'Script:')
pascal@374 1033 <hbox>
pascal@374 1034 $(startstopdaemon vpnc)
pascal@374 1035 </hbox>
pascal@374 1036 </frame>
pascal@374 1037 EOT
pascal@374 1038 }
pascal@374 1039
pascal@375 1040 #
pascal@375 1041 # OpenVPN
pascal@375 1042 #
pascal@375 1043 tab_openvpn()
pascal@375 1044 {
pascal@375 1045 local i
pascal@375 1046 local n
pascal@375 1047 cat <<EOT
pascal@375 1048 <frame OpenVPN>
pascal@375 1049 EOT
pascal@375 1050 n=1
pascal@375 1051 for i in /etc/openvpn/*.conf ; do
pascal@375 1052 [ -f $i ] || continue
pascal@375 1053 configfile $i OPENVPN_CONF$n
pascal@375 1054 n=$(($n + 1))
pascal@375 1055 done
pascal@375 1056 cat <<EOT
pascal@375 1057 <hbox>
pascal@375 1058 $(helpbutton openvpn 80x40)
pascal@375 1059 $(startstopdaemon openvpn)
pascal@375 1060 </hbox>
pascal@375 1061 </frame>
pascal@375 1062 EOT
pascal@375 1063 }
pascal@375 1064
pascal@371 1065 data_vpn()
pascal@371 1066 {
pascal@371 1067 cat <<EOT
pascal@371 1068 $([ -x /usr/sbin/dropbear -o -x /usr/sbin/sshd ] && echo "pppd" ||
pascal@371 1069 echo "#") PPP/SSH tab_sshppp
pascal@371 1070 pptp PPTP tab_pptp
pascal@374 1071 vpnc EasyVPN tab_easyvpn
pascal@375 1072 openvpn OpenVPN tab_openvpn
pascal@371 1073 EOT
pascal@371 1074 }
pascal@371 1075
pascal@371 1076 #
pascal@371 1077 # VPN
pascal@371 1078 #
pascal@371 1079 tab_vpn()
pascal@371 1080 {
pascal@371 1081 use_tab data_vpn
pascal@371 1082 }
pascal@272 1083
pascal@272 1084 sshremote()
pascal@272 1085 {
pascal@272 1086 cat << EOT
pascal@126 1087 <hbox>
pascal@177 1088 <text use-markup="true">
pascal@177 1089 <label>"<b>Remote :</b>"</label>
pascal@177 1090 </text>
pascal@177 1091 <entry>
pascal@272 1092 <variable>$2</variable>
pascal@177 1093 <default>user@elsewhere</default>
pascal@177 1094 </entry>
pascal@177 1095 <button>
pascal@177 1096 <input file icon="utilities-terminal"></input>
pascal@177 1097 <label>Connect</label>
pascal@272 1098 <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 1099 </button>
pascal@177 1100 <button>
pascal@177 1101 <input file icon="go-up"></input>
pascal@177 1102 <label>Send key</label>
pascal@372 1103 <action>$xterm -geometry 80x10 -title "send ssh key" -e "$0 call sendsshkey \$$2; echo -e \"----\nENTER to continue...\" && read close"</action>
pascal@177 1104 </button>
pascal@177 1105 </hbox>
pascal@272 1106 EOT
pascal@272 1107 }
pascal@272 1108
pascal@371 1109 #
pascal@371 1110 # Dropbear client & server
pascal@371 1111 #
pascal@371 1112 tab_dropbear()
pascal@371 1113 {
pascal@371 1114 . /etc/daemons.conf
pascal@371 1115 set -- $DROPBEAR_OPTIONS
pascal@371 1116 while [ -n "$2" ]; do
pascal@371 1117 [ "$1" = "-b" ] && DROPBEAR_BANNER="$2" && break
pascal@371 1118 shift
pascal@371 1119 done
pascal@371 1120
pascal@371 1121 cat <<EOT
pascal@272 1122 <frame Dropbear>
pascal@272 1123 $(helpdaemon dropbear 80x30 DROPBEAR_OPTIONS DROPBEAR_OPTS)
pascal@272 1124 $(datafile /etc/dropbear/banner DROPBEAR_BANNER 'Banner :')
pascal@272 1125 $(sshremote DROPBEAR_PEER 'dbclient -i /etc/dropbear/dropbear_rsa_host_key')
pascal@177 1126 <hbox>
pascal@271 1127 $(startstopdaemon dropbear)
pascal@126 1128 </hbox>
pascal@126 1129 </frame>
pascal@371 1130 EOT
pascal@371 1131 }
pascal@371 1132
pascal@371 1133 #
pascal@371 1134 # OpenSSH client & server
pascal@371 1135 #
pascal@371 1136 tab_openssh()
pascal@371 1137 {
pascal@371 1138 cat <<EOT
pascal@272 1139 <frame OpenSSH>
pascal@272 1140 $(helpdaemon sshd 80x30 OPENSSH_OPTIONS OPENSSH_OPTS 8 nohelp)
pascal@272 1141 $(configfile /etc/ssh/sshd_config OPENSSH_CONF '5 sshd_config')
pascal@272 1142 $(sshremote OPENSSH_PEER 'ssh -i /etc/ssh/ssh_host_rsa_key')
pascal@126 1143 <hbox>
pascal@272 1144 $(startstopdaemon openssh)
pascal@126 1145 </hbox>
pascal@272 1146 </frame>
pascal@371 1147 EOT
pascal@371 1148 }
pascal@371 1149
pascal@371 1150 data_sshd()
pascal@371 1151 {
pascal@371 1152 cat <<EOT
pascal@371 1153 dropbear Dropbear tab_dropbear
pascal@371 1154 sshd OpenSSH tab_openssh
pascal@371 1155 EOT
pascal@371 1156 }
pascal@371 1157
pascal@371 1158 #
pascal@371 1159 # SSH tab
pascal@371 1160 #
pascal@371 1161 tab_sshd()
pascal@371 1162 {
pascal@371 1163 use_tab data_sshd
pascal@371 1164 }
pascal@371 1165
pascal@371 1166 #
pascal@371 1167 # Busybox Inetd
pascal@371 1168 #
pascal@371 1169 tab_inetd()
pascal@371 1170 {
pascal@371 1171 cat <<EOT
pascal@371 1172 <frame Inetd (busybox)>
pascal@272 1173 $(helpdaemon inetd 60x14 INETD_OPTIONS INETD_OPTS)
pascal@271 1174 $(configfile /etc/inetd.conf INETD_CONF)
pascal@126 1175 <hbox>
pascal@371 1176 EOT
pascal@151 1177 for i in $(grep bin /etc/inetd.conf | awk '{ print $6}'); do
pascal@151 1178 i=$(basename $i)
pascal@371 1179 helpbutton $i 60x19 $i
pascal@151 1180 done
pascal@371 1181 cat <<EOT
pascal@271 1182 $(startstopdaemon inetd)
pascal@126 1183 </hbox>
pascal@126 1184 </frame>
pascal@371 1185 EOT
pascal@371 1186 }
pascal@371 1187
pascal@371 1188 #
pascal@371 1189 # ZeroConf
pascal@371 1190 #
pascal@371 1191 tab_zcip()
pascal@371 1192 {
pascal@272 1193 if [ -x /sbin/zcip -a -z "$ZCIP_OPTIONS" ]; then
pascal@272 1194 ZCIP_OPTIONS="eth0 /etc/zcip.script"
pascal@215 1195 cat >> /etc/daemons.conf <<EOT
pascal@215 1196 # ZeroConf options
pascal@272 1197 ZCIP_OPTIONS="$ZCIP_OPTIONS"
pascal@215 1198
pascal@215 1199 EOT
pascal@215 1200 fi
pascal@371 1201 cat <<EOT
pascal@272 1202 <frame Zcip (busybox)>
pascal@272 1203 $(helpdaemon zcip 60x14 ZCIP_OPTIONS ZCIP_OPTS)
pascal@272 1204 $(datafile /etc/zcip.script CZIP_SCRIPT 'Script :')
pascal@215 1205 <hbox>
pascal@271 1206 $(startstopdaemon zcip)
pascal@215 1207 </hbox>
pascal@215 1208 </frame>
pascal@371 1209 EOT
pascal@371 1210 }
pascal@371 1211
pascal@371 1212 #
pascal@371 1213 # Dhcpd ISC
pascal@371 1214 #
pascal@371 1215 tab_isc_dhcpd()
pascal@371 1216 {
pascal@371 1217 cat <<EOT
pascal@272 1218 <frame Dhcpd (ISC)>
pascal@272 1219 $(helpdaemon dhcpd 60x14 DHCPD_OPTIONS DHCPD_OPTS)
pascal@272 1220 $(configfile /etc/dhcpd.conf DHCPD_CONF)
pascal@126 1221 <hbox>
pascal@272 1222 $(startstopdaemon dhcpd dhcp)
pascal@155 1223 </hbox>
pascal@272 1224 </frame>
pascal@371 1225 EOT
pascal@371 1226 }
pascal@371 1227
pascal@371 1228 #
pascal@371 1229 # Dhcpd Busybox
pascal@371 1230 #
pascal@371 1231 tab_udhcpd()
pascal@371 1232 {
pascal@371 1233 cat <<EOT
pascal@272 1234 <frame Udhcpd (busybox)>
pascal@272 1235 $(helpdaemon udhcpd 60x14 UDHCPD_OPTIONS UDHCPD_OPTS)
pascal@271 1236 $(configfile /etc/udhcpd.conf UDHCPD_CONF)
pascal@155 1237 <hbox>
pascal@271 1238 $(startstopdaemon udhcpd)
pascal@126 1239 </hbox>
pascal@126 1240 </frame>
pascal@371 1241 EOT
pascal@371 1242 }
pascal@371 1243
pascal@371 1244 data_dhcpd()
pascal@371 1245 {
pascal@371 1246 cat <<EOT
pascal@371 1247 udhcpd Udhcpd tab_udhcpd
pascal@371 1248 dhcpd Dhcpd tab_isc_dhcpd
pascal@373 1249 dnsmasq DNSmasq tab_dnsmasq
pascal@371 1250 EOT
pascal@371 1251 }
pascal@371 1252
pascal@371 1253 #
pascal@371 1254 # dhcpd tab
pascal@371 1255 #
pascal@371 1256 tab_dhcpd()
pascal@371 1257 {
pascal@371 1258 use_tab data_dhcpd
pascal@371 1259 }
pascal@371 1260
pascal@371 1261 #
pascal@377 1262 # PXE forwarder
pascal@371 1263 #
pascal@377 1264 tab_gpxe()
pascal@371 1265 {
pascal@371 1266 cat <<EOT
pascal@377 1267 <frame PXE forwarder>
pascal@377 1268 <hbox>
pascal@377 1269 <text use-markup="true">
pascal@377 1270 <label>"<b>WEB boot URL(s) :</b>"</label>
pascal@377 1271 </text>
pascal@377 1272 </hbox>
pascal@377 1273 <hbox>
pascal@377 1274 <entry editable="true">
pascal@377 1275 <default>
pascal@377 1276 "$(dd bs=1 skip=5 count=255 if=/usr/share/boot/gpxe.pxe 2> /dev/null | strings)"
pascal@377 1277 </default>
pascal@377 1278 <variable>WEB_PXE</variable>
pascal@377 1279 </entry>
pascal@377 1280 </hbox>
pascal@377 1281 <hbox>
pascal@377 1282 $(wikibutton http://wiki.slitaz.org/doku.php?id=quickstart:pxe)
pascal@377 1283 <button>
pascal@377 1284 <input file icon="go-jump"></input>
pascal@377 1285 <label>Install</label>
pascal@377 1286 <action>
pascal@377 1287 echo -n "\$WEB_PXE" | cat - /dev/zero | \
pascal@377 1288 dd conv=notrunc bs=1 seek=5 count=255 of=/usr/share/boot/gpxe.pxe
pascal@377 1289 </action>
pascal@377 1290 <action>
pascal@377 1291 sed -i "s|tftpd -r .*\$|tftpd -r /usr/share/boot|" /etc/inetd.conf
pascal@377 1292 </action>
pascal@377 1293 <action> sed -i "/^boot_file/d" \$UDHCPD_CONF </action>
pascal@377 1294 <action> echo "boot_file gpxe.pxe" >> \$UDHCPD_CONF </action>
pascal@377 1295 <action> /etc/init.d/inetd restart </action>
pascal@377 1296 <action> /etc/init.d/udhcpd restart </action>
pascal@377 1297 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)inetd \?\\(.*\\)\\"/RUN_DAEMONS=\\"\1\2\\"/" /etc/rcS.conf</action>
pascal@377 1298 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)udhcpd \?\\(.*\\)\\"/RUN_DAEMONS=\\"\1\2\\"/" /etc/rcS.conf</action>
pascal@377 1299 <action>sed -i "s/RUN_DAEMONS=\\"\\(.*\\)\\"/RUN_DAEMONS=\\"udhcpd inetd \1\\"/" /etc/rcS.conf</action>
pascal@377 1300 </button>
pascal@377 1301 </hbox>
pascal@377 1302 </frame>
pascal@377 1303 EOT
pascal@377 1304 }
pascal@377 1305
pascal@377 1306 #
pascal@377 1307 # PXE server
pascal@377 1308 #
pascal@377 1309 tab_pxelinux()
pascal@377 1310 {
pascal@377 1311 cat <<EOT
pascal@377 1312 <frame PXElinux>
pascal@126 1313 <hbox>
pascal@126 1314 <text wrap="true">
pascal@126 1315 <label>
pascal@151 1316 "Launch Dhcpd and Inetd with Tftpd to start the PXE service."
pascal@126 1317 </label>
pascal@126 1318 </text>
pascal@126 1319 </hbox>
pascal@126 1320 <hbox>
pascal@126 1321 <text use-markup="true">
pascal@126 1322 <label>"<b>Configuration :</b>"</label>
pascal@126 1323 </text>
pascal@126 1324 <entry editable="false">
pascal@371 1325 <default>
pascal@371 1326 $(grep bin/tftpd /etc/inetd.conf | awk '{ print $NF }')/pxelinux.cfg/default
pascal@371 1327 </default>
pascal@126 1328 <variable>PXE_CONF</variable>
pascal@126 1329 </entry>
pascal@126 1330 <button>
pascal@126 1331 <input file icon="accessories-text-editor"></input>
pascal@371 1332 <action>dir=\$(dirname \$PXE_CONF); [ -d \$dir ] || mkdir -p \$dir</action>
pascal@371 1333 <action>lzma d /usr/share/boot/pxelinux.0.lzma \$(dirname \$PXE_CONF)/../pxelinux.0</action>
pascal@377 1334 <action>sed -i "/^boot_file/d" \$UDHCPD_CONF</action>
pascal@377 1335 <action>echo "boot_file pxelinux.0" >> \$UDHCPD_CONF</action>
pascal@371 1336 <action>grep -q "^siaddr" \$UDHCPD_CONF || echo "siaddr \$(ifconfig \$INTERFACE | grep inet.ad | cut -d: -f2 | cut -d\ -f1)" >> \$UDHCPD_CONF</action>
pascal@371 1337 <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 1338 <action type="lauch">leafpad \$PXE_CONF</action>
pascal@126 1339 </button>
pascal@126 1340 </hbox>
pascal@169 1341 <hbox>
pascal@372 1342 $(wikibutton http://wiki.slitaz.org/doku.php?id=quickstart:pxe)
pascal@247 1343 <button>
pascal@169 1344 <input file icon="system-file-manager"></input>
pascal@169 1345 <label>Network boot files</label>
pascal@372 1346 <action>$xterm -geometry 100x25 -title "Network boot files (q to quit)" -e "find \$(dirname \$(dirname \$PXE_CONF)) -exec ls -ld {} \; | less"</action>
pascal@169 1347 </button>
pascal@169 1348 </hbox>
pascal@126 1349 </frame>
pascal@371 1350 EOT
pascal@371 1351 }
pascal@371 1352
pascal@377 1353 data_pxe()
pascal@377 1354 {
pascal@377 1355 [ -f /usr/share/boot/pxelinux.0.lzma ] && cat <<EOT
pascal@377 1356 true PXElinux tab_pxelinux
pascal@377 1357 EOT
pascal@377 1358 [ -f /usr/share/boot/gpxe.pxe ] && cat <<EOT
pascal@377 1359 true PXE\ forwarder tab_gpxe
pascal@377 1360 EOT
pascal@377 1361 }
pascal@377 1362
pascal@377 1363 #
pascal@377 1364 # PXE
pascal@377 1365 #
pascal@377 1366 tab_pxe()
pascal@377 1367 {
pascal@377 1368 use_tab data_pxe
pascal@377 1369 }
pascal@377 1370
pascal@371 1371 #
pascal@371 1372 # Busybox dnsd
pascal@371 1373 #
pascal@371 1374 tab_dnsd()
pascal@371 1375 {
pascal@371 1376 cat <<EOT
pascal@371 1377 <frame Dnsd (busybox master dns)>
pascal@371 1378 $(helpdaemon dnsd 80x15 DNSD_OPTIONS DNSD_OPTS)
pascal@371 1379 $(configfile /etc/dnsd.conf DNSD_CONF)
pascal@371 1380 <hbox>
pascal@371 1381 $(startstopdaemon dnsd)
pascal@371 1382 </hbox>
pascal@371 1383 </frame>
pascal@371 1384 EOT
pascal@371 1385 }
pascal@371 1386
pascal@371 1387 #
pascal@371 1388 # ISC Bind
pascal@371 1389 #
pascal@371 1390 tab_named()
pascal@371 1391 {
pascal@371 1392 cat <<EOT
pascal@272 1393 <frame Named (ISC bind)>
pascal@272 1394 $(helpdaemon named 80x10 NAMED_OPTIONS NAMED_OPTS)
pascal@272 1395 $(configfile /etc/bind/named.conf.local NAMED_CONF)
pascal@126 1396 <hbox>
pascal@272 1397 $(startstopdaemon named bind)
pascal@126 1398 </hbox>
pascal@272 1399 </frame>
pascal@371 1400 EOT
pascal@371 1401 }
pascal@371 1402
pascal@373 1403 #
pascal@373 1404 # DNSmasq
pascal@373 1405 #
pascal@373 1406 tab_dnsmasq()
pascal@373 1407 {
pascal@373 1408 cat <<EOT
pascal@373 1409 <frame DNSmasq (DNS/DHCP/TFTP)>
pascal@373 1410 $(helpdaemon dnsmasq 100x34 DNSMASQ_OPTIONS DNSMASQ_OPTS)
pascal@373 1411 $(configfile /etc/dnsmasq.conf DNSMASQ_CONF)
pascal@373 1412 <hbox>
pascal@373 1413 $(startstopdaemon dnsmasq)
pascal@373 1414 </hbox>
pascal@373 1415 </frame>
pascal@373 1416 EOT
pascal@373 1417 }
pascal@373 1418
pascal@371 1419 data_dns()
pascal@371 1420 {
pascal@371 1421 cat <<EOT
pascal@371 1422 dnsd Dnsd tab_dnsd
pascal@371 1423 named Named tab_named
pascal@373 1424 dnsmasq DNSmasq tab_dnsmasq
pascal@371 1425 #TODO sheerdns Sheerdns tab_sheerdns
pascal@371 1426 EOT
pascal@371 1427 }
pascal@371 1428
pascal@371 1429 #
pascal@371 1430 # dns tab
pascal@371 1431 #
pascal@371 1432 tab_dns()
pascal@371 1433 {
pascal@371 1434 use_tab data_dns
pascal@371 1435 }
pascal@371 1436
pascal@371 1437 #
pascal@371 1438 # rsync server
pascal@371 1439 #
pascal@371 1440 tab_rsync()
pascal@371 1441 {
pascal@371 1442 cat <<EOT
pascal@272 1443 <frame Rsync>
pascal@272 1444 $(helpdaemon rsync 80x30 RSYNCD_OPTIONS RSYNCD_OPTS 1)
pascal@272 1445 $(configfile /etc/rsyncd.conf RSYNCD_CONF)
pascal@272 1446 $(datafile /etc/rsyncd.secrets RSYNCD_SECRETS 'Secrets file :')
pascal@126 1447 <hbox>
pascal@272 1448 $(startstopdaemon rsyncd rsync)
pascal@126 1449 </hbox>
pascal@126 1450 </frame>
pascal@371 1451 EOT
pascal@371 1452 }
pascal@371 1453
pascal@371 1454 php_ini()
pascal@371 1455 {
pascal@371 1456 [ -f /etc/php.ini ] && cat <<EOT
pascal@371 1457 <frame PHP>
pascal@271 1458 $(configfile /etc/php.ini PHP_CONF)
pascal@168 1459 </frame>
pascal@371 1460 EOT
pascal@371 1461 }
pascal@371 1462
pascal@371 1463 #
pascal@371 1464 # Apache server
pascal@371 1465 #
pascal@371 1466 tab_apache()
pascal@371 1467 {
pascal@371 1468 cat <<EOT
pascal@371 1469 <frame Apache>
pascal@371 1470 $(php_ini)
pascal@272 1471 $(configfile /etc/apache/httpd.conf HTTPD_CONF)
pascal@272 1472 <hbox>
pascal@272 1473 $(startstopdaemon apache)
pascal@272 1474 </hbox>
pascal@272 1475 </frame>
pascal@371 1476 EOT
pascal@371 1477 }
pascal@371 1478
pascal@371 1479 #
pascal@371 1480 # Lighttpd server
pascal@371 1481 #
pascal@371 1482 tab_lighttpd()
pascal@371 1483 {
pascal@371 1484 cat <<EOT
pascal@371 1485 <frame Lighttpd>
pascal@371 1486 $(php_ini)
pascal@271 1487 $(configfile /etc/lighttpd/lighttpd.conf LIGHTTPD_CONF)
pascal@126 1488 <hbox>
pascal@271 1489 $(startstopdaemon lighttpd)
pascal@126 1490 </hbox>
pascal@126 1491 </frame>
pascal@371 1492 EOT
pascal@371 1493 }
pascal@371 1494
pascal@371 1495 data_http()
pascal@371 1496 {
pascal@371 1497 cat <<EOT
pascal@375 1498 httpd Apache tab_apache
pascal@376 1499 lighttpd Lighttpd tab_lighttpd
pascal@371 1500 EOT
pascal@371 1501 #TODO busybox httpd
pascal@371 1502 }
pascal@371 1503
pascal@371 1504 #
pascal@371 1505 # http tab
pascal@371 1506 #
pascal@371 1507 tab_http()
pascal@371 1508 {
pascal@371 1509 use_tab data_http
pascal@371 1510 }
pascal@371 1511
pascal@371 1512 #
pascal@371 1513 # Samba servers
pascal@371 1514 #
pascal@371 1515 tab_wins()
pascal@371 1516 {
pascal@371 1517 cat <<EOT
pascal@371 1518 <frame Samba: smbd & nmbd>
pascal@271 1519 $(configfile /etc/samba/smb.conf SMBD_CONF)
pascal@137 1520 <hbox>
pascal@137 1521 <button>
pascal@137 1522 <label>Reload</label>
pascal@371 1523 <input file icon="reload"></input>
pascal@137 1524 <action>/etc/init.d/samba reload</action>
pascal@371 1525 </button>
pascal@271 1526 $(startstopdaemon samba)
pascal@137 1527 </hbox>
pascal@137 1528 </frame>
pascal@371 1529 EOT
pascal@371 1530 }
pascal@371 1531
pascal@371 1532 #
pascal@371 1533 # x11vnc
pascal@371 1534 #
pascal@371 1535 tab_vnc()
pascal@371 1536 {
pascal@371 1537 cat <<EOT
pascal@272 1538 <frame x11vnc>
pascal@272 1539 $(helpdaemon x11vnc 80x30 X11VNC_OPTIONS X11VNC_OPTS)
pascal@163 1540 <hbox>
pascal@371 1541 <text use-markup="true">
pascal@371 1542 <label>"<b>New password</b>"</label>
pascal@163 1543 </text>
pascal@163 1544 <entry>
pascal@163 1545 <variable>X11VNC_PASSWD</variable>
pascal@163 1546 </entry>
pascal@163 1547 <button>
pascal@371 1548 <input file icon="reload"></input>
pascal@163 1549 <label>Update</label>
pascal@272 1550 <action>x11vnc -storepasswd \$X11VNC_PASSWD /etc/vnc.secret</action>
pascal@163 1551 </button>
pascal@163 1552 </hbox>
pascal@272 1553 <hbox>
pascal@271 1554 $(startstopdaemon x11vnc)
pascal@271 1555 </hbox>
pascal@271 1556 </frame>
pascal@371 1557 EOT
pascal@371 1558 }
pascal@371 1559
pascal@371 1560 #
pascal@371 1561 # knock server
pascal@371 1562 #
pascal@371 1563 tab_knockd()
pascal@371 1564 {
pascal@371 1565 cat <<EOT
pascal@272 1566 <frame Knockd: trigger backdoors>
pascal@272 1567 $(helpdaemon knockd 80x15 KNOCK_OPTIONS KNOCK_OPTS)
pascal@271 1568 $(configfile /etc/knockd.conf KNOCKD_CONF)
pascal@271 1569 <hbox>
pascal@272 1570 $(startstopdaemon knockd knock)
pascal@271 1571 </hbox>
pascal@271 1572 </frame>
pascal@371 1573 EOT
pascal@371 1574 }
pascal@371 1575
pascal@371 1576 data_servers()
pascal@371 1577 {
pascal@373 1578 local $pxe
pascal@373 1579 pxe="#"
pascal@373 1580 [ -x /usr/bin/tftpd -a -x /usr/sbin/udhcpd ] && pxe="inetd"
pascal@374 1581 [ -x /usr/sbin/dnsmasq ] && pxe="true"
pascal@377 1582 [ -f /usr/share/boot/pxelinux.0.lzma -o /usr/share/boot/gpxe.pxe ] || pxe="#"
pascal@371 1583 cat <<EOT
pascal@371 1584 $([ -x /usr/sbin/dropbear -o -x /usr/sbin/sshd ] && echo "true" ||
pascal@371 1585 echo "#") SSH tab_sshd
pascal@371 1586 inetd Inetd tab_inetd
pascal@371 1587 zcip ZeroConf tab_zcip
pascal@373 1588 $([ -x /usr/sbin/udhcpd -o -x /usr/sbin/dhcpd -o -x /usr/sbin/dnsmasq ] &&
pascal@373 1589 echo "true" ||
pascal@371 1590 echo "#") DHCP tab_dhcpd
pascal@373 1591 $pxe PXE tab_pxe
pascal@373 1592 dnsmasq tftpd tab_dnsmasq
pascal@373 1593 $([ -x /usr/sbin/dnsd -o -x /usr/sbin/named -o -x /usr/sbin/dnsmasq ] &&
pascal@373 1594 echo "true" ||
pascal@371 1595 echo "#") DNS tab_dns
pascal@371 1596 rsync Rsync tab_rsync
pascal@371 1597 $([ -x /usr/sbin/lighttpd -o -x /usr/bin/httpd ] && echo "true" ||
pascal@371 1598 echo "#") HTTP tab_http
pascal@371 1599 smbd WINS tab_wins
pascal@371 1600 x11vnc VNC tab_vnc
pascal@371 1601 knockd Knock tab_knockd
pascal@377 1602 #TODO+callback pppd Pppd tab_pppd
pascal@377 1603 #TODO pptpd PoPToP tab_poptop
pascal@377 1604 #TODO squid *sql openldap
pascal@371 1605 EOT
pascal@371 1606 }
pascal@371 1607
pascal@371 1608 #
pascal@371 1609 # Servers tab
pascal@371 1610 #
pascal@371 1611 tab_servers()
pascal@371 1612 {
pascal@371 1613 use_tab data_servers
pascal@371 1614 }
pascal@371 1615
pascal@371 1616 #
pascal@371 1617 # Firewall tab
pascal@371 1618 #
pascal@371 1619 tab_firewall()
pascal@371 1620 {
pascal@371 1621 cat <<EOT
pascal@371 1622 <frame Iptables>
pascal@271 1623 $(configfile /etc/iptables.conf IPTABLES_CONF)
pascal@163 1624 <hbox>
pascal@371 1625 $(helpbutton iptables 80x30)
pascal@371 1626 $(manbutton 8 iptables)
pascal@374 1627 $(webbutton iptables)
pascal@163 1628 <button>
pascal@271 1629 <label>Load</label>
pascal@371 1630 <input file icon="reload"></input>
pascal@271 1631 <action>cat \$IPTABLES_CONF | /sbin/iptables-restore</action>
pascal@271 1632 </button>
pascal@271 1633 <button>
pascal@271 1634 <label>Save</label>
pascal@371 1635 <input file icon="go-jump"></input>
pascal@271 1636 <action>/sbin/iptables-save > \$IPTABLES_CONF</action>
pascal@163 1637 </button>
pascal@163 1638 </hbox>
pascal@163 1639 </frame>
pascal@371 1640 EOT
pascal@371 1641 }
pascal@371 1642
pascal@371 1643 #
pascal@371 1644 # knock client
pascal@371 1645 #
pascal@371 1646 tab_knock()
pascal@371 1647 {
pascal@371 1648 cat <<EOT
pascal@371 1649 <frame Knock>
pascal@271 1650 <hbox>
pascal@271 1651 <text use-markup="true">
pascal@271 1652 <label>"<b>Options : </b>"</label>
pascal@271 1653 </text>
pascal@271 1654 <entry editable="true">
pascal@271 1655 <variable>KNOCK_OPTS</variable>
pascal@271 1656 <default>myserver.example.com 123:tcp 456:udp 789:tcp</default>
pascal@271 1657 </entry>
pascal@271 1658 </hbox>
pascal@371 1659 <hbox>
pascal@272 1660 $(helpbutton knock 80x12)
pascal@271 1661 <button>
pascal@271 1662 <label>Start</label>
pascal@371 1663 <input file icon="forward"></input>
pascal@272 1664 <action>knock \$KNOCK_OPTS</action>
pascal@271 1665 </button>
pascal@271 1666 </hbox>
pascal@271 1667 </frame>
pascal@371 1668 EOT
pascal@371 1669 }
pascal@371 1670
pascal@371 1671 #
pascal@371 1672 # ether-wake
pascal@371 1673 #
pascal@371 1674 tab_etherwake()
pascal@371 1675 {
pascal@371 1676 cat <<EOT
pascal@271 1677 <frame Ether-wake (busybox)>
pascal@141 1678 <hbox>
pascal@141 1679 <text use-markup="true">
pascal@151 1680 <label>"<b>Machines :</b>"</label>
pascal@151 1681 </text>
pascal@151 1682 <entry editable="false">
pascal@151 1683 <default>/etc/ethers</default>
pascal@151 1684 <variable>ETHERS</variable>
pascal@151 1685 </entry>
pascal@151 1686 <button>
pascal@151 1687 <input file icon="accessories-text-editor"></input>
pascal@372 1688 <action>[ -s \$ETHERS ] || echo "#00:01:02:03:04:05 mystation" >\$ETHERS</action>
pascal@371 1689 <action type="lauch">leafpad \$ETHERS</action>
pascal@151 1690 </button>
pascal@151 1691 </hbox>
pascal@151 1692 <hbox>
pascal@151 1693 <text use-markup="true">
pascal@141 1694 <label>"<b>Options : </b>"</label>
pascal@141 1695 </text>
pascal@271 1696 <entry editable="true">
pascal@141 1697 <variable>ETHERWAKE_OPTS</variable>
pascal@371 1698 </entry>
pascal@371 1699 $(helpbutton ether-wake 80x15)
pascal@371 1700 <button>
pascal@371 1701 <label>Start</label>
pascal@371 1702 <input file icon="forward"></input>
pascal@371 1703 <action>ether-wake \$ETHERWAKE_OPTS</action>
pascal@371 1704 </button>
pascal@371 1705 </hbox>
pascal@375 1706 <frame>
pascal@375 1707 <hbox>
pascal@375 1708 EOT
pascal@375 1709 if which ethtool > /dev/null; then
pascal@375 1710 cat <<EOT
pascal@375 1711 <text use-markup="true">
pascal@375 1712 <label>"<b>Interface:</b>"</label>
pascal@375 1713 </text>
pascal@375 1714 <combobox>
pascal@375 1715 <variable>ETHERWAKE_ETH</variable>
pascal@375 1716 EOT
pascal@375 1717 (cd /sys/class/net ; [ -d eth0 ] && ls -d eth* ) | \
pascal@375 1718 awk '{ printf " <item>%s</item>\n",$1 }'
pascal@375 1719 cat <<EOT
pascal@375 1720 </combobox>
pascal@375 1721 <button>
pascal@375 1722 <label>Enable Wake On LAN</label>
pascal@375 1723 <input file icon="forward"></input>
pascal@375 1724 <action>ethtool -s \$ETHERWAKE_ETH wok g</action>
pascal@375 1725 </button>
pascal@375 1726 EOT
pascal@375 1727 else
pascal@375 1728 cat <<EOT
pascal@375 1729 <vbox>
pascal@375 1730 <text wrap="true" width-chars="58">
pascal@375 1731 <label>
pascal@375 1732 "Ethtool utility can enable Wake-on-lan
paul@378 1733 feature on many Ethernet cards.
pascal@375 1734 "
pascal@375 1735 </label>
pascal@375 1736 </text>
pascal@375 1737 $(installbox ethtool)
pascal@375 1738 </vbox>
pascal@375 1739 EOT
pascal@375 1740 fi
pascal@375 1741 cat <<EOT
pascal@375 1742 </hbox>
pascal@375 1743 </frame>
pascal@371 1744 </frame>
pascal@371 1745 EOT
pascal@371 1746 }
pankso@33 1747
pascal@371 1748 data_main()
pascal@371 1749 {
pascal@371 1750 cat <<EOT
pascal@371 1751 #program tab name function
pascal@371 1752 ifconfig Connections tab_connections
pascal@371 1753 udhcpc DHCP tab_udhcpc
pascal@371 1754 ifconfig Static\ IP tab_fixed_ip
pascal@371 1755 pppoe PPPoE tab_pppoe
pascal@371 1756 pppd PPP tab_ppp
pascal@371 1757 true System\ wide tab_system
pascal@371 1758 true VPN tab_vpn
pascal@371 1759 true Servers tab_servers
pascal@371 1760 iptables Firewall tab_firewall
pascal@371 1761 knock Knock tab_knock
pascal@371 1762 ether-wake Etherwake tab_etherwake
pascal@371 1763 EOT
pascal@371 1764 }
pascal@371 1765
pascal@371 1766 tab_main()
pascal@371 1767 {
pascal@371 1768 use_tab data_main
pascal@371 1769 }
pascal@371 1770
pascal@371 1771 ######################################################
pascal@371 1772 #
pascal@371 1773 # Netbox GUI
pascal@371 1774 #
pascal@371 1775 ######################################################
pascal@371 1776
pascal@371 1777 # English/French help dialog.
pascal@371 1778 export HELP='
pascal@371 1779 <window title="Network status" icon-name="network-wire">
pascal@371 1780 <vbox>
pascal@371 1781 <text use-markup="true">
pascal@371 1782 <label>
pascal@371 1783 "
pascal@371 1784 <b>SliTaz - Netbox</b>"
pascal@371 1785 </label>
pascal@371 1786 </text>
pascal@371 1787 <frame English>
pascal@371 1788 <text wrap="true" width-chars="58">
pascal@371 1789 <label>
pascal@371 1790 "Netbox lets you manage network connections by getting a dynamic IP by
pascal@371 1791 DHCP or a static IP and setup servers. Netbox can start or stop
pascal@371 1792 networking, configure network interfaces or directly edit files."
pascal@371 1793 </label>
pascal@371 1794 </text>
pascal@371 1795 </frame>
pascal@371 1796 <frame Francais>
pascal@371 1797 <text wrap="true" width-chars="58">
pascal@371 1798 <label>
pascal@371 1799 "Netbox vous permet de gerer les connexions reseau avec une IP
pascal@371 1800 statique ou en obtenant une IP dynamique par DHCP, et de parametrer
pascal@371 1801 les serveurs. Netbox peut demarrer ou arreter le reseau, configurer
pascal@371 1802 les interfaces reseau ou editer directement les fichiers."
pascal@371 1803 </label>
pascal@371 1804 </text>
pascal@371 1805 </frame>
pascal@371 1806 </vbox>
pascal@371 1807 </window>
pascal@371 1808 '
pascal@371 1809
pascal@371 1810 # Interface status with ifconfig without arguments to show all
pascal@371 1811 # active connections.
pascal@371 1812 #
pascal@371 1813 export IFCONFIG="
pascal@371 1814 <window title=\"Network status\" icon-name=\"network-wire\">
pascal@371 1815 <vbox>
pascal@371 1816 $(tab_status)
pascal@371 1817 <hbox>
pascal@371 1818 <button>
pascal@371 1819 <input file icon=\"gtk-close\"></input>
pascal@371 1820 <action type=\"closewindow\">IFCONFIG</action>
pascal@371 1821 </button>
pascal@371 1822 </hbox>
pascal@371 1823 </vbox>
pascal@371 1824 </window>"
pascal@371 1825
pascal@371 1826 # The main dialog with notebook, start/stop buttons and all options.
pascal@371 1827 # Note that /etc/network.conf is seded when an interface is activated.
pascal@371 1828 #
pascal@371 1829 head='
pascal@371 1830 <window title="SliTaz Netbox Manager" icon-name="network-wired">
pascal@371 1831 <vbox>
pascal@371 1832
pascal@371 1833 <hbox>
pascal@371 1834 <text use-markup="true">
pascal@371 1835 <label>"<b>Network/Server Manager</b>"</label>
pascal@371 1836 </text>
pascal@371 1837 <pixmap>
pascal@371 1838 <input file>/usr/share/pixmaps/netbox.png</input>
pascal@371 1839 </pixmap>
pascal@371 1840 </hbox>
pascal@371 1841 '
pascal@371 1842 bottom='
pankso@297 1843 <hbox>
pankso@297 1844 <button>
pankso@297 1845 <label>Wireless manager</label>
pankso@297 1846 <input file icon="network-wireless"></input>
pankso@297 1847 <action>wifibox &</action>
pankso@297 1848 </button>
pankso@297 1849 <button>
pankso@297 1850 <label>Refresh list</label>
pankso@297 1851 <input file icon="reload"></input>
pankso@297 1852 <action>refresh:INTERFACE_LIST</action>
pankso@297 1853 </button>
pankso@297 1854 <button>
pankso@297 1855 <label>Full status</label>
pankso@297 1856 <input file icon="dialog-information"></input>
pankso@297 1857 <action type="launch">IFCONFIG</action>
pankso@297 1858 </button>
pankso@297 1859 <button help>
pankso@297 1860 <label>Help</label>
pankso@297 1861 <action type="launch">HELP</action>
pankso@297 1862 </button>
pankso@297 1863 <button>
pankso@297 1864 <label>Quit</label>
pankso@297 1865 <input file icon="exit"></input>
pankso@297 1866 <action type="exit">Exit</action>
pankso@297 1867 </button>
pankso@297 1868 </hbox>
pankso@194 1869
pankso@297 1870 </vbox>
pankso@38 1871 </window>
pankso@33 1872 '
pascal@371 1873
pascal@371 1874 NET_BOX="${head}$(tab_main)${bottom}"
pascal@126 1875
pascal@126 1876 export NET_BOX
pascal@126 1877
pascal@371 1878 # TODO: Modules(Network kernel modules)
pankso@33 1879
pankso@33 1880 # Only root can configure network.
pankso@33 1881 check_root
pankso@297 1882
pascal@177 1883 # Configure and connect if button Connect was pressed.
pascal@177 1884 if ! grep -qs ^name /etc/ppp/options ; then
pascal@177 1885 # Generate /etc/ppp/options
pascal@177 1886 cat > /etc/ppp/options << _EOT_
pascal@177 1887 plugin rp-pppoe.so
pascal@177 1888 name provider-ID
pascal@177 1889 noipdefault
pascal@177 1890 defaultroute
pascal@177 1891 mtu 1492
pascal@177 1892 mru 1492
pascal@177 1893 lock
pascal@177 1894 _EOT_
pascal@177 1895 # Generate /etc/ppp/pap-secrets
pascal@177 1896 cat > /etc/ppp/pap-secrets << _EOT_
pascal@177 1897 # Secrets for authentication using PAP
pascal@177 1898 # client server secret IP addresses
pascal@177 1899 _EOT_
pascal@177 1900 # Generate /etc/ppp/chap-secrets
pascal@177 1901 cat > /etc/ppp/chap-secrets << _EOT_
pascal@177 1902 # Secrets for authentication using CHAP
pascal@177 1903 # client server secret IP addresses
pascal@177 1904 _EOT_
pascal@177 1905 fi
pascal@259 1906 gtkdialog --center --program=NET_BOX | grep -a 'EXIT="restart"' && continue
pankso@33 1907 exit 0
pascal@259 1908 done