alterator-net-eth-4.5/ 0000755 0000000 0000000 00000000000 11176307120 0014715 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/Makefile 0000644 0000000 0000000 00000000461 11176307120 0016356 0 ustar 00root root 0000000 0000000 NAME=net-eth INSTALL=/usr/bin/install all: clean: clean-po install: install-module install-data include /usr/share/alterator/build/module.mak install-data: install -d $(datadir)/install2 install -d $(libexecdir)/alterator/hooks/net-eth.d install -d $(libexecdir)/alterator/hooks/net-eth-precommit.d alterator-net-eth-4.5/applications/ 0000755 0000000 0000000 00000000000 11176307120 0017403 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/applications/net-eth.desktop 0000644 0000000 0000000 00000000413 11176307120 0022340 0 ustar 00root root 0000000 0000000 [Desktop Entry] Type=Application Categories=X-Alterator-Network Icon=net-eth Terminal=false Name=Ethernet interfaces X-Alterator-URI=/net-eth X-Alterator-Weight=30 X-Alterator-Help=net-eth Name[ru]=Ethernet-интерфейсы Name[uk]=Ethernet-інтерфейси alterator-net-eth-4.5/backend3/ 0000755 0000000 0000000 00000000000 11176307120 0016367 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/backend3/net-eth 0000755 0000000 0000000 00000024624 11176307120 0017671 0 ustar 00root root 0000000 0000000 #!/bin/sh cachedir="/var/cache/alterator/net-eth" precommit_hooks_dir=/usr/lib/alterator/hooks/net-eth-precommit.d postcommit_hooks_dir=/usr/lib/alterator/hooks/net-eth.d rdelim='[[:space:]]\+' wdelim=' ' alterator_api_version=1 . alterator-sh-functions . alterator-net-functions . alterator-hw-functions . shell-config ### is_defined() { set|grep -qs "^$(quote_sed_regexp "$1")=" } real_iface() { if netdev_is_bridge "$1";then netdev_list_brif "$1"|head -n1 else echo "$1" fi } ### cache init_cache() { local ifacedir="/etc/net/ifaces/$1" if [ ! -d "$cachedir/$1" ] ;then [ -d "$ifacedir" ] && cp -a "$ifacedir" "$cachedir" mkdir -p -- "$cachedir/$1" fi [ ! -f /etc/iftab -o -f "$cachedir/iftab" ] || cp /etc/iftab "$cachedir/iftab" [ ! -f /etc/sysconfig/network -o -f "$cachedir/network" ] || cp /etc/sysconfig/network "$cachedir/network" } clear_cache() { rm -rf "$cachedir" mkdir "$cachedir" } commit_hostname() { [ -f "$cachedir/network" ] || return ! cmp -s /etc/sysconfig/network "$cachedir/network" || return local old_value="$(shell_config_get /etc/sysconfig/network HOSTNAME)" local new_value="$(shell_config_get "$cachedir/network" HOSTNAME)" mv -f "$cachedir/network" /etc/sysconfig/network hostname "$new_value" run-parts /etc/hooks/hostname.d "$old_value" "$new_value" } commit_cache() { #little run-parts: check configuration before apply it set_locale local answer= for f in "$precommit_hooks_dir"/*; do [ -f "$f" -a -x "$f" ] || continue [ "${f%.rpm*}" = "$f" -a "${f%\~}" = "$f" ] || continue if ! answer="$("$f")";then [ -n "$answer" ] || answer="$f failed" write_error "$answer" return 1 fi done [ -f "$cachedir/iftab" ] && mv -f "$cachedir/iftab" /etc/iftab commit_hostname find $cachedir -maxdepth 1 -mindepth 1 -type d| while read iface; do [ -n "$iface" ] || exit local ifname="${iface##*/}" [ -n "$DURING_INSTALL" ] || iface_down "$ifname" local old_ip="$(read_iface_addr "/etc/net/ifaces/$ifname")" local new_ip="$(read_iface_addr "$iface")" local old_configuration="$(read_configuration "/etc/net/ifaces/$ifname")" local new_configuration="$(read_configuration "$iface")" #update configs rm -rf -- "/etc/net/ifaces/$ifname" mv -f -- "$cachedir/$ifname" "/etc/net/ifaces/$ifname" #add config for bridge members if netdev_is_bridge "$ifname";then local real_fname="$(real_iface "$ifname")" rm -rf -- "/etc/net/ifaces/$real_fname" mkdir -p -- "/etc/net/ifaces/$real_fname" printf 'TYPE=eth' >"/etc/net/ifaces/$real_fname/options" fi #try to restart [ -n "$DURING_INSTALL" ] && netdev_is_up "$ifname" || iface_up "$ifname" if [ "$old_ip" != "$new_ip" -o "$old_configuration" != "$new_configuration" ];then export old_ip new_ip old_configuration new_configuration run-parts "$postcommit_hooks_dir" "$ifname" fi done clear_cache /sbin/update_chrooted conf >&2 || : } ### hostname read_hostname() { local netconfig="/etc/sysconfig/network" [ -f "$cachedir/network" ] && netconfig="$cachedir/network" local value="$(shell_config_get "$netconfig" HOSTNAME)" [ -n "$value" ] || value="localhost.localdomain" echo "$value" } write_hostname() { local netconfig="$cachedir/network" shell_config_set "$netconfig" HOSTNAME "$1" shell_config_del "$netconfig" DOMAINNAME } ### computer name read_computer_name() { local value="$(read_hostname)" echo "${value%%.*}" } read_computer_domain() { local value="$(read_hostname)" local domain="${value#*.}" [ "$value" != "$domain" ] || domain="localdomain" echo "$domain" } write_computer_name() { write_hostname "$1.$(read_computer_domain)" } ### interface work list_mask() { for i in `seq 32 -1 0`; do write_enum_item "$i" "/$i ($(maskname "$i"))" done } list_hw_binding() { write_enum_item "missing" "`_ "missing"`" write_enum_item "mac" "`_ "by MAC address"`" write_enum_item "businfo" "`_ "by bus location"`" } list_controlled() { write_enum_item "etcnet" "Etcnet" [ ! -f "/usr/sbin/NetworkManager" ] || write_enum_item "NetworkManager" "NetworkManager" write_enum_item "nothing" "`_ "not under control"`" } list_configuration() { write_enum_item "dhcp" "`_ "Use DHCP"`" write_enum_item "ipv4ll" "`_ "Use Zeroconf"`" write_enum_item "static" "`_ "Manually"`" } read_hw_binding() { local name="$(real_iface "$1")";shift local config= if [ -f "$cachedir/iftab" ];then config="$cachedir/iftab" else config="/etc/iftab" fi local line="$(grep "^[[:space:]]*$name[[:space:]]" "$config")" if [ -z "$line" ]; then echo "missing" else if echo "$line" | fgrep -qsw mac; then echo "mac" elif echo "$line" | fgrep -qsw businfo; then echo "businfo" else echo "missing" fi fi } read_info() { local name="$(real_iface "$1")";shift [ -n "$name" ] || return 0 local info="`_ "Network adaptor:"`" info="$info $(netdev_read_info "$name")" if ! netdev_is_wireless "$name"; then if netdev_is_plugged "$name";then info="$info `_ "plugged"`" else info="$info `_ "unplugged"`" fi fi echo "$info" } read_controlled() { local nm_controlled="$(read_iface_option "$1" NM_CONTROLLED)" local disabled="$(read_iface_option "$1" DISABLED)" if [ $(write_bool "$nm_controlled") = "#t" ];then echo 'NetworkManager' elif [ $(write_bool "$disabled") = "#f" ];then echo 'etcnet' else echo "nothing" fi } read_configuration() { local disabled="$(read_iface_option "$1" DISABLED)" local bootproto="$(read_iface_option "$1" BOOTPROTO)" if [ "$bootproto" = "static" ];then echo 'static' elif [ "$bootproto" = "ipv4ll" ];then echo 'ipv4ll' else #dhcp by default echo 'dhcp' fi } read_iface() { local name="$1"; shift local ifacedir= if [ -d "$cachedir/$name" ];then ifacedir="$cachedir/$name" else ifacedir="/etc/net/ifaces/$name" fi #collect general information write_string_param adaptor "$(read_info "$name")" write_string_param hw_binding "$(read_hw_binding "$name")" write_string_param configuration "$(read_configuration "$ifacedir")" write_string_param controlled "$(read_controlled "$ifacedir")" write_bool_param wireless "$(netdev_is_wireless "$name" && echo "yes" || echo "no")" write_string_param dns "$(read_iface_dns "$ifacedir")" write_string_param search "$(read_iface_search "$ifacedir")" local addr="$(read_iface_addr "$ifacedir")" local ip= mask= if [ -n "$addr" ]; then ip="${addr%%/*}" mask="${addr#$ip}"; mask="${mask#/}" fi write_string_param ip "$ip" write_string_param mask "${mask:-24}" write_string_param default "$(read_iface_default_gw "$ifacedir")" } write_controlled() { local ifacedir="$1";shift local controlled="$1";shift case "$controlled" in NetworkManager) write_iface_option "$ifacedir" DISABLED yes write_iface_option "$ifacedir" NM_CONTROLLED yes ;; etcnet) write_iface_option "$ifacedir" DISABLED no write_iface_option "$ifacedir" NM_CONTROLLED no ;; nothing) write_iface_option "$ifacedir" DISABLED yes write_iface_option "$ifacedir" NM_CONTROLLED no ;; esac } write_configuration() { local ifacedir="$1";shift local configuration="$1";shift case "$configuration" in static) write_iface_option "$ifacedir" BOOTPROTO static ;; dhcp) write_iface_option "$ifacedir" BOOTPROTO dhcp ;; ipv4ll) write_iface_option "$ifacedir" BOOTPROTO ipv4ll ;; esac } write_hw_binding() { local name="$(real_iface "$1")";shift local value="$1";shift local config="$cachedir/iftab" local mac="$(netdev_read_mac "$name")" local businfo="$(netdev_read_businfo "$name")" if [ -s "$config" ]; then sed -r \ -e "/^$name[[:space:]]/ d" \ -i "$config" [ -z "$mac" ] || [ "$mac" = "00:00:00:00:00:00" ] || sed -r \ -e "/[[:space:]]mac[[:space:]]+$mac([[:space:]]|\$)/ d" \ -i "$config" [ -z "$businfo" ] || sed -r \ -e "/[[:space:]]businfo[[:space:]]+$businfo([[:space:]]|\$)/ d" \ -i "$config" fi case "$value" in none) ;; mac) [ -z "$mac" ] || [ "$mac" = "00:00:00:00:00:00" ] || printf "%s\tmac %s\n" "$name" "$mac" >>"$config" ;; businfo) [ -z "$businfo" ] || printf "%s\tbusinfo %s\n" "$name" "$businfo" >>"$config" ;; esac } write_iface() { local name="$1" && shift local ifacedir="$cachedir/$name" if netdev_is_bridge "$name";then write_iface_option "$ifacedir" TYPE bri write_iface_option "$ifacedir" HOST "$(real_iface "$name")" else write_iface_option "$ifacedir" TYPE eth fi [ -n "$in_mask" ] && [ -n "$in_ip" ] && write_iface_addr "$ifacedir" "$in_ip/$in_mask" is_defined "in_default" && write_iface_default_gw "$ifacedir" "$in_default" [ -n "$in_controlled" ] && write_controlled "$ifacedir" "$in_controlled" [ -n "$in_configuration" ] && write_configuration "$ifacedir" "$in_configuration" [ -n "$in_hw_binding" ] && write_hw_binding "$name" "$in_hw_binding" is_defined "in_dns" && write_iface_dns "$ifacedir" "$in_dns" is_defined "in_search" && write_iface_search "$ifacedir" "$in_search" } #initial actions iface_up lo clear_cache on_message() { case "$in_action" in type) write_type_item computer_name system-computer-name write_type_item ip ipv4-address write_type_item default ipv4-address write_type_item search hostname-list write_type_item dns ipv4-address-list ;; list) case "${in__objects##*/}" in avail_masks) list_mask ;; avail_hw_bindings) list_hw_binding ;; avail_configurations) list_configuration ;; avail_controlled) list_controlled ;; *) list_eth|write_enum ;; esac ;; read) local name="${in_name}" [ -n "$name" ] || name="$(list_eth|head -n1)" [ -n "$name" ] && read_iface "$name" write_string_param name "$name" write_string_param computer_name "$(read_computer_name)" write_string_param computer_domain "$(read_computer_domain)" ;; write) local name="${in_name}" [ -n "$name" ] || name="$(list_eth|head -n1)" init_cache "$name" [ -n "$name" ] && write_iface "$name" [ -n "$in_computer_name" ] && write_computer_name "$in_computer_name" [ -n "$in_hostname" ] && write_hostname "$in_hostname" if [ -n "$in_commit" ]; then commit_cache || return elif [ -n "$in_reset" ]; then clear_cache || return fi ;; esac } message_loop alterator-net-eth-4.5/ui/ 0000755 0000000 0000000 00000000000 11176307120 0015332 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/ui/net-eth/ 0000755 0000000 0000000 00000000000 11176307120 0016676 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/ui/net-eth/advanced/ 0000755 0000000 0000000 00000000000 11176307120 0020443 5 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/ui/net-eth/advanced/ajax.scm 0000644 0000000 0000000 00000002172 11176307120 0022074 0 ustar 00root root 0000000 0000000 (define-module (ui net-eth advanced ajax) :use-module (alterator ajax) :use-module (alterator woo) :export (init)) (define (ui-read name) (catch/message (lambda() (let ((cmd (woo-read-first "/net-eth" 'name name))) (form-update-enum "controlled" (woo-list "/net-eth/avail_controlled")) (form-update-enum "hw_binding" (woo-list "/net-eth/avail_hw_bindings")) (form-update-value "iface" name) (form-update-visibility "wireless" (woo-get-option cmd 'wireless)) (form-update-value-list '("name" "controlled" "hw_binding") cmd))))) (define (ui-exit) (form-replace (format #f "/net-eth?iface=~A" (form-value "name")))) (define (ui-write) (catch/message (lambda() (woo-write "/net-eth" 'name (form-value "name") 'hw_binding (form-value "hw_binding") 'controlled (form-value "controlled")) (ui-exit)))) (define (ui-wireless) (form-replace (format #f "/net-wifi?iface=~A" (form-value "name")))) (define (init) (ui-read (form-value "iface")) (form-bind "ok" "click" ui-write) (form-bind "cancel" "click" ui-exit) (form-bind "wireless" "click" ui-wireless)) alterator-net-eth-4.5/ui/net-eth/advanced/index.html 0000644 0000000 0000000 00000002221 11176307120 0022435 0 ustar 00root root 0000000 0000000
alterator-net-eth-4.5/ui/net-eth/advanced/index.scm 0000644 0000000 0000000 00000003110 11176307120 0022251 0 ustar 00root root 0000000 0000000 (document:surround "/std/frame") (define *name* (global 'name)) (define (wireless-interface) (form-popup "/net-wifi/" 'interface *name*)) ;;; Functions (define (ui-read) (catch/message (lambda() (let ((cmd (woo-read-first "/net-eth" 'name *name*))) (form-update-enum "controlled" (woo-list "/net-eth/avail_controlled")) (form-update-enum "hw_binding" (woo-list "/net-eth/avail_hw_bindings")) (form-update-value "name" *name*) (form-update-visibility "wireless" (woo-get-option cmd 'wireless)) (form-update-value-list '("controlled" "hw_binding") cmd))))) (define (ui-exit) (document:end)) (define (ui-write) (catch/message (lambda() (woo-write "/net-eth" 'name *name* 'hw_binding (form-value "hw_binding") 'controlled (form-value "controlled")) (ui-exit)))) ;;; UI width 600 height 300 (gridbox columns "0;100" margin "10" ;; (label text (_ "Interface:") align "right") (label name "name") ;; (label text (_ "Network subsystem:") align "right" name "controlled") (combobox name "controlled") ;; (label text (_ "Hardware binding:") align "right") (combobox name "hw_binding") ;; (spacer) (button text (_ "Wireless settings...") name "wireless" align "left" visibility #f) ;; (label colspan 2) ;; (spacer) (hbox align "left" (button (_ "OK") name "ok") (button (_ "Cancel") name "cancel"))) ;; (document:root (when loaded (ui-read) (form-bind "wireless" "click" wireless-interface) (form-bind "ok" "click" ui-write) (form-bind "cancel" "click" ui-exit))) alterator-net-eth-4.5/ui/net-eth/ajax.scm 0000644 0000000 0000000 00000003052 11176307120 0020325 0 ustar 00root root 0000000 0000000 (define-module (ui net-eth ajax) :use-module (alterator ajax) :use-module (alterator woo) :export (init)) (define (update-configuration configuration) (form-update-activity '("ip" "mask" "default") (string=? configuration "static"))) (define (read-interface name) (let ((cmd (woo-read-first "/net-eth" 'name name 'language (form-value "language")))) (form-update-value-list '("name") cmd) (form-update-value-list '("computer_name" "dns" "search") cmd) (form-update-value-list '("adaptor" "ip" "mask" "default" "configuration") cmd) (update-configuration (woo-get-option cmd 'configuration)))) (define (write-interface name) (apply woo-write "/net-eth" 'name name (form-value-list '("language" "computer_name" "dns" "search" "ip" "mask" "default" "configuration")))) (define (update-interface) (or (catch/message (lambda() (let ((name (form-value "name"))) (write-interface (form-value "prev_name")) (read-interface name) (form-update-value "prev_name" name)))) (form-update-value "name" (form-value "prev_name")))) (define (advanced-interface) (form-replace (format #f "/net-eth/advanced?iface=~A" (form-value "name")))) (define (init) (read-interface (or (form-value "iface") "")) (form-update-value "prev_name" (form-value "name")) (form-bind "name" "change" update-interface) (form-bind "configuration" "change" (lambda() (update-configuration (form-value "configuration")))) (form-bind "advanced" "click" advanced-interface)) alterator-net-eth-4.5/ui/net-eth/index.html 0000644 0000000 0000000 00000005333 11176307120 0020677 0 ustar 00root root 0000000 0000000 alterator-net-eth-4.5/ui/net-eth/index.scm 0000644 0000000 0000000 00000007252 11176307120 0020517 0 ustar 00root root 0000000 0000000 (document:surround "/std/frame") ;;; Functions (define (update-configuration configuration) (form-update-activity '("ip" "mask" "default") (string=? configuration "static"))) (define (read-interface name) (let ((cmd (woo-read-first "/net-eth" 'name name))) (form-update-value-list '("name") cmd) (form-update-value-list '("computer_name" "dns" "search") cmd) (form-update-value-list '("adaptor" "ip" "mask" "default" "configuration") cmd) (update-configuration (woo-get-option cmd 'configuration)))) (define (write-interface name) (apply woo-write "/net-eth" 'name name (form-value-list '("computer_name" "dns" "search" "ip" "mask" "default" "configuration")))) (define (commit-interface) (catch/message (lambda() (write-interface (or (form-value "name") "")) (woo-write "/net-eth" 'commit #t)))) (define (reset-interface) (catch/message (lambda() (woo-write "/net-eth" 'reset #t) (form-update-enum "mask" (woo-list "/net-eth/avail_masks")) (form-update-enum "configuration" (woo-list "/net-eth/avail_configurations")) (form-update-enum "name" (woo-list "/net-eth/avail_ifaces")) (read-interface "") (form-update-value "prev_name" (form-value "name"))))) (define (update-interface) (or (catch/message (lambda() (let ((name (form-value "name"))) (write-interface (form-value "prev_name")) (read-interface name) (form-update-value "prev_name" name)))) (form-update-value "name" (form-value "prev_name")))) (define (advanced-interface) (form-popup "/net-eth/advanced" 'name (form-value "name"))) ;;; UI width 400 height 200 (edit name "prev_name" text "" visibility #f) (gridbox columns "0;100" margin 20 (gridbox colspan 2 columns "0;40;60" ;; (label text (_ "Computer name:") nameref "computer_name" align "right") (edit name "computer_name") (spacer) ) (separator colspan 2) (label colspan 2 text (bold (_ "Interfaces"))) (listbox name "name") (gridbox columns "0;100" ;; (textbox colspan 2 name "adaptor" max-height 60 alterability #f) ;; (label text (_ "Configuration:") align "right" nameref "configuration") (combobox name "configuration") ;; (label text (_ "IP address:") align "right" nameref "ip") (edit name "ip") ;; (label text (_ "Netmask:") align "right" nameref "mask") (combobox name "mask") ;; (label text (_ "Default gateway:") align "right" nameref "default") (edit name "default") ;; (label text (_ "DNS servers:") nameref "dns" align "right") (edit name "dns") ;; (label text (_ "Search domains:") nameref "search" align "right") (edit name "search") ;; (spacer) (label text (small (_ "(multiple values should be space separated)"))) ;; (label colspan 2) ;; (spacer) (button text (_ "Advanced...") name "advanced" align "right") ;; (or (global 'frame:next) (label colspan 2))) ;; (or (global 'frame:next) (hbox align "left" colspan 2 (button (_ "Apply") name "apply") (button (_ "Reset") name "reset")))) ;;;;;;;;;;;;;;;;;; (document:root (when loaded (reset-interface) (form-bind "name" "change" update-interface) (form-bind "configuration" "change" (lambda() (update-configuration (form-value "configuration")))) (form-bind "advanced" "click" advanced-interface) (or (global 'frame:next) (begin (form-bind "apply" "click" commit-interface) (form-bind "reset" "click" reset-interface))))) (frame:on-back (lambda() (or (commit-interface) 'cancel))) (frame:on-next (lambda() (or (commit-interface) 'cancel)))