network: fix issues found by shellcheck
This commit is contained in:
		
							parent
							
								
									d332a43f6a
								
							
						
					
					
						commit
						bb220ce2eb
					
				| @ -1,8 +1,8 @@ | ||||
| #!/bin/sh | ||||
| if [ x$2 = xup ]; then | ||||
| 	INET=$(/sbin/ip addr show dev $1 | /bin/grep inet) | ||||
| if [ "x$2" = xup ]; then | ||||
| 	INET=$(/sbin/ip addr show dev "$1" | /bin/grep inet) | ||||
| 	qubesdb-write /qubes-netvm-external-ip "$INET" | ||||
| fi | ||||
| if [ x$2 = xdown ]; then | ||||
| if [ "x$2" = xdown ]; then | ||||
| 	qubesdb-write /qubes-netvm-external-ip "" | ||||
| fi | ||||
|  | ||||
| @ -14,7 +14,9 @@ COMMIT | ||||
| __EOF__ | ||||
| else | ||||
|     # Remove rules | ||||
|     # shellcheck disable=SC2086 | ||||
|     iptables -D $RULE_FILTER | ||||
|     # shellcheck disable=SC2086 | ||||
|     iptables -t nat -D $RULE_NAT | ||||
|     exit 0 | ||||
| fi | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| NM_CONFIG_DIR=/etc/NetworkManager/system-connections | ||||
| if [ -d $NM_CONFIG_DIR -a ! -h $NM_CONFIG_DIR ]; then | ||||
| if [ -d $NM_CONFIG_DIR ] && [ ! -h $NM_CONFIG_DIR ]; then | ||||
|     mkdir -p /rw/config/NM-system-connections | ||||
|     mv $NM_CONFIG_DIR/* /rw/config/NM-system-connections/ 2> /dev/null || true | ||||
|     rmdir $NM_CONFIG_DIR | ||||
|  | ||||
| @ -1,19 +1,19 @@ | ||||
| #!/bin/sh | ||||
| FILE=/etc/NetworkManager/NetworkManager.conf | ||||
| VIFMAC=mac:fe:ff:ff:ff:ff:ff | ||||
| if ! grep -q ^plugins.*keyfile $FILE ; then | ||||
| if ! grep -q '^plugins.*keyfile' $FILE ; then | ||||
| 	sed -i 's/^plugins.*$/&,keyfile/' $FILE | ||||
| fi | ||||
| if grep -q ^plugins.*ifcfg-rh $FILE ; then | ||||
| if grep -q '^plugins.*ifcfg-rh' $FILE ; then | ||||
| 	sed -i 's/^plugins=\(.*\)ifcfg-rh,\(.*\)$/plugins=\1\2/' $FILE | ||||
| fi | ||||
| if ! grep -q '^\[keyfile\]$' $FILE ; then | ||||
| 	echo '[keyfile]' >> $FILE | ||||
| fi | ||||
| if ! grep -q ^unmanaged-devices $FILE ; then | ||||
| if ! grep -q '^unmanaged-devices' $FILE ; then | ||||
| 	sed -i 's/^\[keyfile\]$/\[keyfile\]\x0aunmanaged-devices='$VIFMAC/ $FILE | ||||
| fi | ||||
| if ! grep -q ^unmanaged-devices.*$VIFMAC $FILE ; then | ||||
| if ! grep -q "^unmanaged-devices.*$VIFMAC" $FILE ; then | ||||
| 	sed -i 's/^unmanaged-devices.*$/&,'$VIFMAC/ $FILE | ||||
| fi | ||||
| exit 0 | ||||
|  | ||||
| @ -35,8 +35,9 @@ start() { | ||||
| 
 | ||||
|     echo -n $"${CMD}: Applying firewall rules: " | ||||
| 
 | ||||
|     $CMD-restore $IPTABLES_DATA | ||||
|     if [ $? -eq 0 ]; then | ||||
|     "$CMD-restore" "$IPTABLES_DATA" | ||||
|     ret="$?" | ||||
|     if [ "$ret" -eq 0 ]; then | ||||
|         echo OK | ||||
|     else | ||||
|         echo FAIL; return 1 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # Source Qubes library. | ||||
| # shellcheck source=init/functions | ||||
| . /usr/lib/qubes/init/functions | ||||
| 
 | ||||
| /usr/lib/qubes/qubes-setup-dnat-to-ns | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| addrule() | ||||
| { | ||||
|         if [ $FIRSTONE = yes ] ; then | ||||
|         if [ "$FIRSTONE" = yes ] ; then | ||||
|                 FIRSTONE=no | ||||
|                 RULE1="-A PR-QBS -d $NS1 -p udp --dport 53 -j DNAT --to $1 | ||||
| -A PR-QBS -d $NS1 -p tcp --dport 53 -j DNAT --to $1" | ||||
| @ -10,17 +10,18 @@ addrule() | ||||
|         else | ||||
|                 RULE2="-A PR-QBS -d $NS2 -p udp --dport 53 -j DNAT --to $1 | ||||
| -A PR-QBS -d $NS2 -p tcp --dport 53 -j DNAT --to $1" | ||||
|                 NS=$NS2 | ||||
|         fi | ||||
| } | ||||
| export PATH=$PATH:/sbin:/bin | ||||
| # shellcheck disable=SC1091 | ||||
| . /var/run/qubes/qubes-ns | ||||
| if [ "X"$NS1 = "X" ] ; then exit ; fi | ||||
| if [ "X$NS1" = "X" ] ; then exit ; fi | ||||
| iptables -t nat -F PR-QBS | ||||
| FIRSTONE=yes | ||||
| grep ^nameserver /etc/resolv.conf | grep -v ":.*:" | head -2 | | ||||
|         ( | ||||
|         while read x y z ; do | ||||
|         # shellcheck disable=SC2034 | ||||
|         while read -r x y z ; do | ||||
|                 addrule "$y" | ||||
|         done | ||||
|         (echo "*nat"; echo "$RULE1"; echo "$RULE2"; echo COMMIT) | iptables-restore -n | ||||
|  | ||||
| @ -1,27 +1,28 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # Source Qubes library. | ||||
| # shellcheck disable=SC1091 | ||||
| . /usr/lib/qubes/init/functions | ||||
| 
 | ||||
| have_qubesdb || exit 0 | ||||
| 
 | ||||
| ip=`/usr/bin/qubesdb-read /qubes-ip 2> /dev/null` | ||||
| if [ x$ip != x ]; then | ||||
|     netmask=`/usr/bin/qubesdb-read /qubes-netmask` | ||||
|     gateway=`/usr/bin/qubesdb-read /qubes-gateway` | ||||
|     primary_dns=`/usr/bin/qubesdb-read /qubes-primary-dns 2>/dev/null || echo $gateway` | ||||
|     secondary_dns=`/usr/bin/qubesdb-read /qubes-secondary-dns` | ||||
|     /sbin/ethtool -K $INTERFACE sg off | ||||
|     /sbin/ethtool -K $INTERFACE tx off | ||||
| ip=$(/usr/bin/qubesdb-read /qubes-ip 2> /dev/null) | ||||
| if [ "x$ip" != x ]; then | ||||
|     #netmask=$(/usr/bin/qubesdb-read /qubes-netmask) | ||||
|     gateway=$(/usr/bin/qubesdb-read /qubes-gateway) | ||||
|     primary_dns=$(/usr/bin/qubesdb-read /qubes-primary-dns 2>/dev/null || echo "$gateway") | ||||
|     secondary_dns=$(/usr/bin/qubesdb-read /qubes-secondary-dns) | ||||
|     /sbin/ethtool -K "$INTERFACE" sg off | ||||
|     /sbin/ethtool -K "$INTERFACE" tx off | ||||
|     # If NetworkManager is enabled, let it configure the network | ||||
|     if qsvc network-manager ; then | ||||
|         nm_config=/etc/NetworkManager/system-connections/qubes-uplink-$INTERFACE | ||||
|         cat > $nm_config <<__EOF__ | ||||
|         cat > "$nm_config" <<__EOF__ | ||||
| [802-3-ethernet] | ||||
| duplex=full | ||||
| 
 | ||||
| [ethernet] | ||||
| mac-address=`ip l show dev $INTERFACE |grep link|awk '{print $2}'` | ||||
| mac-address=$(ip l show dev "$INTERFACE" |grep link|awk '{print $2}') | ||||
| 
 | ||||
| [connection] | ||||
| id=VM uplink $INTERFACE | ||||
| @ -36,23 +37,23 @@ method=manual | ||||
| may-fail=false | ||||
| __EOF__ | ||||
|         if ! qsvc disable-dns-server ; then | ||||
|             echo "dns=$primary_dns;$secondary_dns" >> $nm_config | ||||
|             echo "dns=$primary_dns;$secondary_dns" >> "$nm_config" | ||||
|         fi | ||||
|         if ! qsvc disable-default-route ; then | ||||
|             echo "addresses1=$ip;32;$gateway" >> $nm_config | ||||
|             echo "addresses1=$ip;32;$gateway" >> "$nm_config" | ||||
|         else | ||||
|             echo "addresses1=$ip;32" >> $nm_config | ||||
|             echo "addresses1=$ip;32" >> "$nm_config" | ||||
|         fi | ||||
|         chmod 600 $nm_config | ||||
|         chmod 600 "$nm_config" | ||||
|         # reload connection | ||||
|         nmcli connection load $nm_config || : | ||||
|         nmcli connection load "$nm_config" || : | ||||
|     else | ||||
|         # No NetworkManager enabled, configure the network manually | ||||
|         /sbin/ifconfig $INTERFACE $ip netmask 255.255.255.255 | ||||
|         /sbin/ifconfig $INTERFACE up | ||||
|         /sbin/route add -host $gateway dev $INTERFACE | ||||
|         /sbin/ifconfig "$INTERFACE" "$ip" netmask 255.255.255.255 | ||||
|         /sbin/ifconfig "$INTERFACE" up | ||||
|         /sbin/route add -host "$gateway" dev "$INTERFACE" | ||||
|         if ! qsvc disable-default-route ; then | ||||
|             /sbin/route add default gw $gateway | ||||
|             /sbin/route add default gw "$gateway" | ||||
|         fi | ||||
|         if ! is_protected_file /etc/resolv.conf ; then | ||||
|             echo > /etc/resolv.conf | ||||
| @ -65,8 +66,8 @@ __EOF__ | ||||
|     network=$(qubesdb-read /qubes-netvm-network 2>/dev/null) | ||||
|     if [ "x$network" != "x" ] && ! qsvc disable-dns-server ; then | ||||
|         gateway=$(qubesdb-read /qubes-netvm-gateway) | ||||
|         netmask=$(qubesdb-read /qubes-netvm-netmask) | ||||
|         primary_dns=$(qubesdb-read /qubes-netvm-primary-dns 2>/dev/null || echo $gateway) | ||||
|         #netmask=$(qubesdb-read /qubes-netvm-netmask) | ||||
|         primary_dns=$(qubesdb-read /qubes-netvm-primary-dns 2>/dev/null || echo "$gateway") | ||||
|         secondary_dns=$(qubesdb-read /qubes-netvm-secondary-dns) | ||||
|         echo "NS1=$primary_dns" > /var/run/qubes/qubes-ns | ||||
|         echo "NS2=$secondary_dns" >> /var/run/qubes/qubes-ns | ||||
|  | ||||
| @ -1,8 +1,9 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| type nm-applet > /dev/null 2>&1 || exit 0 | ||||
| command -v nm-applet > /dev/null 2>&1 || exit 0 | ||||
| 
 | ||||
| # Source Qubes library. | ||||
| # shellcheck source=init/functions | ||||
| . /usr/lib/qubes/init/functions | ||||
| 
 | ||||
| # Hide nm-applet when network-manager is disabled | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
| # | ||||
| 
 | ||||
| # Source Qubes library. | ||||
| # shellcheck source=init/functions | ||||
| . /usr/lib/qubes/init/functions | ||||
| 
 | ||||
| BEGIN_MARKER="### QUBES BEGIN ###" | ||||
| @ -37,24 +38,25 @@ update_conf() { | ||||
|     local CONF_OPTIONS="$2" | ||||
| 
 | ||||
|     # Ensure that Qubes conf markers are present in the file | ||||
|     if ! grep -q "$BEGIN_MARKER" $CONF_PATH; then | ||||
|         if grep -q "$END_MARKER" $CONF_PATH; then | ||||
|     if ! grep -q "$BEGIN_MARKER" "$CONF_PATH"; then | ||||
|         if grep -q "$END_MARKER" "$CONF_PATH"; then | ||||
|             echo "ERROR: found QUBES END marker but not QUBES BEGIN in ${CONF_PATH}" >&2 | ||||
|             echo "Fix the file by either removing both of them, or adding missing back and retry" >&2 | ||||
|             exit 1 | ||||
|         fi | ||||
|         cp $CONF_PATH ${CONF_PATH}.qubes-orig | ||||
|         echo "$BEGIN_MARKER" >> $CONF_PATH | ||||
|         echo "$END_MARKER" >> $CONF_PATH | ||||
|     elif ! grep -q "$END_MARKER" $CONF_PATH; then | ||||
|         cp "$CONF_PATH" "${CONF_PATH}.qubes-orig" | ||||
|         echo "$BEGIN_MARKER" >> "$CONF_PATH" | ||||
|         echo "$END_MARKER" >> "$CONF_PATH" | ||||
|     elif ! grep -q "$END_MARKER" "$CONF_PATH"; then | ||||
|         echo "ERROR: found QUBES BEGIN marker but not QUBES END in ${CONF_PATH}" >&2 | ||||
|         echo "Fix the file by either removing both of them, or adding missing back and retry" >&2 | ||||
|         exit 1 | ||||
|     fi | ||||
| 
 | ||||
|     # Prepare config block | ||||
|     local tmpfile=`mktemp` | ||||
|     cat > ${tmpfile} <<EOF | ||||
|     local tmpfile | ||||
|     tmpfile=$(mktemp) | ||||
|     cat > "${tmpfile}" <<EOF | ||||
| # This part of configuration, until QUBES END, is automatically generated by | ||||
| # $0. All changes here will be overriden. | ||||
| # If you want to override any option set here, set it again to desired value, | ||||
| @ -67,8 +69,8 @@ EOF | ||||
|         /^$END_MARKER$/b | ||||
|         /^$BEGIN_MARKER$/!d | ||||
|         r ${tmpfile} | ||||
|         }" ${CONF_PATH} | ||||
|     rm -f ${tmpfile} | ||||
|         }" "${CONF_PATH}" | ||||
|     rm -f "${tmpfile}" | ||||
| } | ||||
| 
 | ||||
| ### helper functions end | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #!/bin/bash | ||||
| # shellcheck disable=SC2154 | ||||
| #set -x | ||||
| 
 | ||||
| undetectable_netvm_ips= | ||||
|  | ||||
| @ -21,46 +21,51 @@ | ||||
| #============================================================================ | ||||
| 
 | ||||
| dir=$(dirname "$0") | ||||
| # shellcheck disable=SC1091,SC1090 | ||||
| . "$dir/vif-common.sh" | ||||
| 
 | ||||
| #main_ip=$(dom0_ip) | ||||
| lockfile=/var/run/xen-hotplug/vif-lock | ||||
| 
 | ||||
| # shellcheck disable=SC2154 | ||||
| if [ "${ip}" ]; then | ||||
|     # IPs as seen by this VM | ||||
|     netvm_ip="$ip" | ||||
|     netvm_gw_ip=`qubesdb-read /qubes-netvm-gateway` | ||||
|     netvm_dns1_ip=`qubesdb-read /qubes-netvm-primary-dns` | ||||
|     netvm_dns2_ip=`qubesdb-read /qubes-netvm-secondary-dns` | ||||
|     netvm_gw_ip=$(qubesdb-read /qubes-netvm-gateway) | ||||
|     netvm_dns1_ip=$(qubesdb-read /qubes-netvm-primary-dns) | ||||
|     netvm_dns2_ip=$(qubesdb-read /qubes-netvm-secondary-dns) | ||||
| 
 | ||||
|     back_ip="$netvm_gw_ip" | ||||
| 
 | ||||
|     # IPs as seen by the VM - if other than $netvm_ip | ||||
|     appvm_gw_ip="`qubesdb-read /mapped-ip/$ip/visible-gateway 2>/dev/null || :`" | ||||
|     appvm_ip="`qubesdb-read /mapped-ip/$ip/visible-ip 2>/dev/null || :`" | ||||
|     appvm_gw_ip="$(qubesdb-read "/mapped-ip/$ip/visible-gateway" 2>/dev/null || :)" | ||||
|     appvm_ip="$(qubesdb-read "/mapped-ip/$ip/visible-ip" 2>/dev/null || :)" | ||||
| fi | ||||
| 
 | ||||
| # Apply NAT if IP visible from the VM is different than the "real" one | ||||
| # See vif-qubes-nat.sh for details | ||||
| if [ -n "$appvm_ip" -a -n "$appvm_gw_ip" -a "$appvm_ip" != "$netvm_ip" ]; then | ||||
| if [ -n "$appvm_ip" ] && [ -n "$appvm_gw_ip" ] && [ "$appvm_ip" != "$netvm_ip" ]; then | ||||
|     # shellcheck disable=SC2154 | ||||
|     if test "$command" == online; then | ||||
|         echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp | ||||
|         # shellcheck disable=SC2154 | ||||
|         echo 1 >"/proc/sys/net/ipv4/conf/${vif}/proxy_arp" | ||||
|     fi | ||||
| 
 | ||||
|     # shellcheck source=network/vif-qubes-nat.sh | ||||
|     . "$dir/vif-qubes-nat.sh" | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| # shellcheck disable=SC2154 | ||||
| case "$command" in | ||||
| 	online) | ||||
| 		ifconfig ${vif} up | ||||
| 		echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp | ||||
| 		ifconfig "${vif}" up | ||||
| 		echo 1 >"/proc/sys/net/ipv4/conf/${vif}/proxy_arp" | ||||
| 		ipcmd='add' | ||||
| 		iptables_cmd='-I PREROUTING 1' | ||||
| 		cmdprefix='' | ||||
| 		;; | ||||
| 	offline) | ||||
| 		do_without_error ifdown ${vif} | ||||
| 		do_without_error ifdown "${vif}" | ||||
| 		ipcmd='del' | ||||
| 		iptables_cmd='-D PREROUTING' | ||||
| 		cmdprefix='do_without_error' | ||||
| @ -71,23 +76,23 @@ domid=${vif/vif/} | ||||
| domid=${domid/.*/} | ||||
| # metric must be possitive, but prefer later interface | ||||
| #  32752 is max XID aka domid | ||||
| metric=$[ 32752 - $domid ] | ||||
| metric=$(( 32752 - domid )) | ||||
| 
 | ||||
| if [ "${ip}" ] ; then | ||||
| 	# If we've been given a list of IP addresses, then add routes from dom0 to | ||||
| 	# the guest using those addresses. | ||||
| 	for addr in ${ip} ; do | ||||
| 		${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} metric $metric | ||||
| 		${cmdprefix} ip route "${ipcmd}" "${addr}" dev "${vif}" metric "$metric" | ||||
| 	done | ||||
| 	echo -e "*raw\n$iptables_cmd -i ${vif} ! -s ${ip} -j DROP\nCOMMIT" | \ | ||||
| 		${cmdprefix} flock $lockfile iptables-restore --noflush | ||||
| 	${cmdprefix} ip addr ${ipcmd} ${back_ip}/32 dev ${vif} | ||||
| 	${cmdprefix} ip addr "${ipcmd}" "${back_ip}/32" dev "${vif}" | ||||
| fi | ||||
| 
 | ||||
| log debug "Successful vif-route-qubes $command for $vif." | ||||
| if [ "$command" = "online" ] | ||||
| then | ||||
|   # disable tx checksumming offload, apparently it doesn't work with our ancient qemu in stubdom | ||||
|   do_without_error ethtool -K $vif tx off | ||||
|   do_without_error ethtool -K "$vif" tx off | ||||
|   success | ||||
| fi | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki