diff --git a/blink/blinkd.service b/blink/blinkd.service index 966b2b1d..c93b5142 100644 --- a/blink/blinkd.service +++ b/blink/blinkd.service @@ -1,5 +1,4 @@ [Unit] -Description=blinkd ConditionHost=!wheatley.molgen.mpg.de ConditionHost=!cerberus.molgen.mpg.de ConditionHost=!welcome.molgen.mpg.de diff --git a/checktrust/getty-checktrust.service b/checktrust/getty-checktrust.service index 2d301e30..9ddd4334 100644 --- a/checktrust/getty-checktrust.service +++ b/checktrust/getty-checktrust.service @@ -1,11 +1,13 @@ [Unit] -Description=Check Mariux64 trust for getty -Before=getty@.service - -[Install] -WantedBy=getty@.service +Wants=getty-pre.target +Before=getty-pre.target +After=network-online.target +Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/libexec/getty-checktrust RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/clusterd/clusterd.service b/clusterd/clusterd.service index c5566ef4..99125dff 100644 --- a/clusterd/clusterd.service +++ b/clusterd/clusterd.service @@ -1,7 +1,3 @@ -[Unit] -Requires=network.target -After=network.target - [Service] ExecStart=/usr/sbin/clusterd --daemon Restart=always diff --git a/crashkernel/crashkernel.service b/crashkernel/crashkernel.service index 2a2cf4cc..28b17e1b 100644 --- a/crashkernel/crashkernel.service +++ b/crashkernel/crashkernel.service @@ -1,5 +1,4 @@ [Unit] -Description=load crashkernel if enabled Wants=startup-crashmemory.service After=startup-crashmemory.service ConditionPathExists=/node/startup-crashmemory/available diff --git a/install.sh b/install.sh index d58444cf..650a91dd 100755 --- a/install.sh +++ b/install.sh @@ -125,7 +125,6 @@ install_data misc_systemd_units/enable_overcommit_memory.service "$DESTDIR$syste install_data misc_systemd_units/startup-tags.service "$DESTDIR$systemdunitdir/startup-tags.service" install_data misc_systemd_units/unbound.service "$DESTDIR$systemdunitdir/unbound.service" install_exec misc_systemd_units/unbound-startup "$DESTDIR$usr_sbindir/unbound-startup" -install_data misc_systemd_units/xaruba.service "$DESTDIR$systemdunitdir/xaruba.service" install_exec mkmotd/mkmotd.pl "$DESTDIR$usr_sbindir/mkmotd.pl" install_data mkmotd/motd.service "$DESTDIR$systemdunitdir/motd.service" install_exec mxgrub/mxgrub "$DESTDIR$usr_sbindir/mxgrub" @@ -146,13 +145,12 @@ install_exec pkgadmin/pkgadmin "$DESTDIR$usr_sbindir/p install_cron pkgadmin/crond-pkgadmin-update "$DESTDIR$crond_dir/pkgadmin-update" install_exec mxraid/mxraid "$DESTDIR$usr_sbindir/mxraid" install_exec mxraid/mxraid_assemble "$DESTDIR$usr_sbindir/mxraid_assemble" -install_data mxraid/mxraid.startup.service "$DESTDIR$systemdunitdir/mxraid.startup.service" +install_data mxraid/mxraid.service "$DESTDIR$systemdunitdir/mxraid.service" install_data mxraid/mxraid.shutdown.service "$DESTDIR$systemdunitdir/mxraid.shutdown.service" install_exec mxraid/mdcheck.safe "$DESTDIR$usr_bindir/mdcheck.safe" install_cron mxraid/crond-mdcheck "$DESTDIR$crond_dir/mdcheck" install_exec kvm_monitor/kvm_monitor.pl "$DESTDIR$udev_helperdir/kvm_monitor.pl" install_data kvm_monitor/51-raritan-kvm.rules "$DESTDIR$udev_rulesdir/51-raritan-kvm.rules" -install_data misc_systemd_units/udev-settled.target "$DESTDIR$systemdunitdir/udev-settled.target" install_exec mxmirror/mxmirror "$DESTDIR$usr_sbindir/mxmirror" install_data misc_systemd_units/named.service "$DESTDIR$systemdunitdir/named.service" install_data misc_systemd_units/baucamhttpd.service "$DESTDIR$systemdunitdir/baucamhttpd.service" @@ -243,8 +241,6 @@ install_data misc_etc_files/udev/rules.d/10-ioschedulers.rules \ install_data slowio/slowio.slice "$DESTDIR$systemdunitdir/slowio.slice" install_exec slowio/slowio-mem-control "$DESTDIR$sysconfdir/systemd/system-generators/slowio-mem-control" install_exec slowio/slowio "$DESTDIR$usr_sbindir/slowio" -install_data misc_systemd_units/fix-lpp.service "$DESTDIR$systemdunitdir/fix-lpp.service" -install_data misc_systemd_units/fix-uring.service "$DESTDIR$systemdunitdir/fix-uring.service" install_exec misc_etc_files/mxq/gpu-policy "$DESTDIR$sysconfdir/mxq/gpu-policy" install_data misc_etc_files/os-release "$DESTDIR$sysconfdir/os-release" install_exec forensics/forensics "$DESTDIR$usr_sbindir/forensics" @@ -265,6 +261,18 @@ install_data misc_etc_files/request-key.d/id_resolver.conf \ "$DESTDIR$sysconfdir/request-key.d/id_resolver.conf" install_symlink /etc/local/access.conf "$DESTDIR$sysconfdir/security/access.conf" install_data misc_etc_files/cups/client.conf "$DESTDIR$sysconfdir/cups/client.conf" +install_data misc_systemd_units/ip6.service "$DESTDIR$systemdunitdir/ip6.service" +install_data mxrouter/mxrouter.service "$DESTDIR$systemdunitdir/mxrouter.service" +install_data misc_systemd_units/wait-network-online.service \ + "$DESTDIR$systemdunitdir/wait-network-online.service" +install_data misc_etc_files/modprobe.d/disable-i915.conf "$DESTDIR$sysconfdir/modprobe.d/disable-i915.conf" +install_data misc_systemd_units/i915.service "$DESTDIR$systemdunitdir/i915.service" +install_exec mxstartup/mxservicectl "$DESTDIR$usr_sbindir/mxservicectl" +install_exec mxstartup/mxstartup2mxconfig "$DESTDIR$usr_sbindir/mxstartup2mxconfig" +install_exec mxstartup/mxstartupctl "$DESTDIR$usr_sbindir/mxstartupctl" +install_exec mxstartup/mxvipctl "$DESTDIR$usr_sbindir/mxvipctl" +install_data mxstartup/mxstartup.service "$DESTDIR$systemdunitdir/mxstartup.service" +install_data misc_systemd_units/lightdm.service "$DESTDIR$systemdunitdir/lightdm.service" postinstall exit diff --git a/logrotate/logrotate.service b/logrotate/logrotate.service index b1c8a7c9..60b41876 100644 --- a/logrotate/logrotate.service +++ b/logrotate/logrotate.service @@ -1,5 +1,4 @@ [Unit] -Description=Rotate log files Documentation=man:logrotate(8) man:logrotate.conf(5) RequiresMountsFor=/var/log ConditionACPower=true diff --git a/logrotate/logrotate.timer b/logrotate/logrotate.timer index ea379318..af88397d 100644 --- a/logrotate/logrotate.timer +++ b/logrotate/logrotate.timer @@ -1,5 +1,4 @@ [Unit] -Description=Daily rotation of log files Documentation=man:logrotate(8) man:logrotate.conf(5) [Timer] diff --git a/misc_etc_files/modprobe.d/disable-i915.conf b/misc_etc_files/modprobe.d/disable-i915.conf new file mode 100644 index 00000000..288e8336 --- /dev/null +++ b/misc_etc_files/modprobe.d/disable-i915.conf @@ -0,0 +1,11 @@ +# Disable autoloading of i915 driver so that the console output is +# not destroyed during boot for systems with the monitor on an nvidia card. +# Loading the i915 driver seems to disable the console output to the +# nvida card, possibly switching it to the intel card. +# +# When the console is free, we probe the driver manually, so we can use its other +# functionalities like audio. +# +# For yet unknown reasons, `blacklist i915` does not work so use `install i915 /bin/true` for now. + +install i915 /bin/true diff --git a/misc_etc_files/sysctl.conf b/misc_etc_files/sysctl.conf index 242ef180..0f4c7a67 100644 --- a/misc_etc_files/sysctl.conf +++ b/misc_etc_files/sysctl.conf @@ -45,3 +45,9 @@ kernel.shmall = 34359738368 # user request: Allow CPU event access by users without CAP_SYS_ADMIN kernel.perf_event_paranoid = -1 + +# allow inet free binds (bind to any ip address) so that services which bind to +# specific ip addresses (e.g. $MX_IPADDR) don't need to wait for network setup + +net.ipv4.ip_nonlocal_bind = 1 +net.ipv6.ip_nonlocal_bind = 1 diff --git a/misc_systemd_units/admin-sshd.service b/misc_systemd_units/admin-sshd.service index 70d1e8ee..450c7c90 100644 --- a/misc_systemd_units/admin-sshd.service +++ b/misc_systemd_units/admin-sshd.service @@ -1,7 +1,4 @@ [Unit] -Description=Admin sshd -After=network.target - ConditionHost=|bka.molgen.mpg.de [Service] diff --git a/misc_systemd_units/automount.service b/misc_systemd_units/automount.service index e9d1c4f7..de33886c 100644 --- a/misc_systemd_units/automount.service +++ b/misc_systemd_units/automount.service @@ -1,16 +1,17 @@ [Unit] -Description=Automounter -Requires=basic.target -After=basic.target +DefaultDependencies=no +Requires=sysinit.target +After=sysinit.target +Before=basic.target +After=network.target [Service] Type=forking -ExecStartPre=/usr/sbin/make-automaps ExecStart=/usr/sbin/automount -v PIDFile=/run/autofs-running ExecReload=/bin/kill -HUP $MAINPID Restart=always [Install] -WantedBy=multi-user.target +WantedBy=basic.target diff --git a/misc_systemd_units/baucamhttpd.service b/misc_systemd_units/baucamhttpd.service index bed423e5..3bab0f55 100644 --- a/misc_systemd_units/baucamhttpd.service +++ b/misc_systemd_units/baucamhttpd.service @@ -1,6 +1,3 @@ -[Unit] -Description=mxstartup baucamhttpd - [Service] User=zmuser ExecStartPre=/project/baucam/allowhosts.pl diff --git a/misc_systemd_units/enable_overcommit_memory.service b/misc_systemd_units/enable_overcommit_memory.service index 46b86b73..6b6e94ce 100644 --- a/misc_systemd_units/enable_overcommit_memory.service +++ b/misc_systemd_units/enable_overcommit_memory.service @@ -1,6 +1,4 @@ [Unit] -Wants=startup-tags.service -After=startup-tags.service ConditionPathExists=|/node/tags/desktop ConditionHost=|beebee-ate.molgen.mpg.de ConditionHost=|icebear.molgen.mpg.de diff --git a/misc_systemd_units/eturnal.service b/misc_systemd_units/eturnal.service index e30df3d3..a5b1755d 100644 --- a/misc_systemd_units/eturnal.service +++ b/misc_systemd_units/eturnal.service @@ -1,5 +1,4 @@ [Unit] -Description=eturnal STUN/TURN server Wants=epmd.service After=epmd.service network.target Documentation=https://eturnal.net/documentation/ diff --git a/misc_systemd_units/fix-lpp.service b/misc_systemd_units/fix-lpp.service deleted file mode 100644 index 17632170..00000000 --- a/misc_systemd_units/fix-lpp.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -ConditionPathExists=/lib/modules/%v/fix-lpp.ko - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=modprobe fix-lpp -ExecStop=rmmod fix-lpp - -[Install] -WantedBy=basic.target diff --git a/misc_systemd_units/fix-uring.service b/misc_systemd_units/fix-uring.service deleted file mode 100644 index 1de7b37b..00000000 --- a/misc_systemd_units/fix-uring.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -ConditionPathExists=/lib/modules/%v/fix-uring.ko - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=modprobe fix-uring -ExecStop=rmmod fix-uring - -[Install] -WantedBy=basic.target diff --git a/misc_systemd_units/getcams.service b/misc_systemd_units/getcams.service index b944f0d6..7d1f20ea 100644 --- a/misc_systemd_units/getcams.service +++ b/misc_systemd_units/getcams.service @@ -1,6 +1,3 @@ -[Unit] -Description=mxstartup baucamhttpd - [Service] User=zmuser WorkingDirectory=/project/baucam diff --git a/misc_systemd_units/i915.service b/misc_systemd_units/i915.service new file mode 100644 index 00000000..419a2e08 --- /dev/null +++ b/misc_systemd_units/i915.service @@ -0,0 +1,10 @@ +[Unit] +After=getty-pre.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=modprobe -C /dev/null i915 + +[Install] +WantedBy=multi-user.target diff --git a/misc_systemd_units/ip6.service b/misc_systemd_units/ip6.service new file mode 100644 index 00000000..728636a0 --- /dev/null +++ b/misc_systemd_units/ip6.service @@ -0,0 +1,15 @@ +[Unit] +DefaultDependencies=no +Wants=startup-tags.service +After=startup-tags.service +ConditionPathExists=/node/tags/ip6 + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/bash -c "echo 0 >/proc/sys/net/ipv6/conf/all/disable_ipv6" +ExecStop=/usr/bin/bash -c "echo 1 >/proc/sys/net/ipv6/conf/all/disable_ipv6" + +[Install] +WantedBy=network.target + diff --git a/misc_systemd_units/lightdm.service b/misc_systemd_units/lightdm.service new file mode 100644 index 00000000..aabd4427 --- /dev/null +++ b/misc_systemd_units/lightdm.service @@ -0,0 +1,11 @@ +[Unit] +After=systemd-user-sessions.service + +[Service] +ExecStart=/usr/bin/lightdm +Restart=always +BusName=org.freedesktop.DisplayManager +UMask=007 + +[Install] +Alias=display-manager.service diff --git a/misc_systemd_units/mxvlan.service b/misc_systemd_units/mxvlan.service index 2d28d49d..735d6f53 100644 --- a/misc_systemd_units/mxvlan.service +++ b/misc_systemd_units/mxvlan.service @@ -1,7 +1,6 @@ [Unit] -Description=MX VLAN Setup -Wants=network.service -After=network.service +DefaultDependencies=no +After=sysinit.target Before=network.target [Service] @@ -12,5 +11,5 @@ ExecStop=/usr/sbin/mxvlanctl stop ExecReload=/usr/sbin/mxvlanctl restart [Install] -WantedBy=network.target +WantedBy=multi-user.target diff --git a/misc_systemd_units/named.service b/misc_systemd_units/named.service index edc7a81f..f43ee4c0 100644 --- a/misc_systemd_units/named.service +++ b/misc_systemd_units/named.service @@ -1,7 +1,4 @@ [Unit] -After=network.service gateway.service mxmount.service automount.service - -Before=mxstartup-mxvip.service ConditionHost=wtf.molgen.mpg.de [Service] @@ -11,5 +8,5 @@ ExecStart=/package/dns/2014-12-03/sbin/named -4 -c /package/dns/2014-12-03/etc/n ExecStopPost=-/sbin/ip addr del 141.14.16.1/20 dev net03 [Install] -WantedBy=network.target +WantedBy=multi-user.target diff --git a/misc_systemd_units/network.service b/misc_systemd_units/network.service index 09e2cf7f..6eba6542 100644 --- a/misc_systemd_units/network.service +++ b/misc_systemd_units/network.service @@ -1,6 +1,8 @@ [Unit] -Description=Network Connectivity DefaultDependencies=no +After=sysinit.target +Before=network.target +Wants=network.target [Service] EnvironmentFile=/etc/local/mxhost.conf @@ -13,4 +15,4 @@ ExecStart=/sbin/ip route add default via 141.14.16.128 ExecStop=/sbin/ip addr del ${MX_IPADDR}/20 dev ${MX_NETDEV} [Install] -WantedBy=network.target +WantedBy=multi-user.target diff --git a/misc_systemd_units/nfsd.service b/misc_systemd_units/nfsd.service index 91fa8ca4..6cfab997 100644 --- a/misc_systemd_units/nfsd.service +++ b/misc_systemd_units/nfsd.service @@ -1,9 +1,10 @@ [Unit] -Description=NFS Daemon +DefaultDependencies=no ConditionPathExists=/etc/exports -Requires=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount -After=local-fs.target proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount unbound.service mxmount.service -Wants=unbound.service +Requires=proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount +After=proc-fs-nfsd.mount var-lib-nfs-rpc_pipefs.mount +After=sysinit.target +Conflicts=shutdown.target [Service] ExecStartPre=/bin/mkdir -p /var/lib/nfs/v4recovery diff --git a/misc_systemd_units/pacbio-sshd.service b/misc_systemd_units/pacbio-sshd.service index 69d82c69..08c0eccd 100644 --- a/misc_systemd_units/pacbio-sshd.service +++ b/misc_systemd_units/pacbio-sshd.service @@ -1,5 +1,4 @@ [Unit] -Description=vlan.pacbio auf smrtlink sshd After=network.target ConditionHost=smrtlink.molgen.mpg.de diff --git a/misc_systemd_units/sshd.service b/misc_systemd_units/sshd.service index 375efde7..be8c5872 100644 --- a/misc_systemd_units/sshd.service +++ b/misc_systemd_units/sshd.service @@ -1,7 +1,3 @@ -[Unit] -Description=OpenSSH Secure Shell Service -After=syslog.target network.target - [Service] EnvironmentFile=/etc/local/mxhost.conf ExecStart=/usr/sbin/sshd -D -o "ListenAddress ${MX_IPADDR}" diff --git a/misc_systemd_units/startup-tags.service b/misc_systemd_units/startup-tags.service index fc2b4de8..fd0ce9b6 100644 --- a/misc_systemd_units/startup-tags.service +++ b/misc_systemd_units/startup-tags.service @@ -1,7 +1,12 @@ [Unit] +DefaultDependencies=no +After=systemd-remount-fs.service +Before=sysinit.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/hostconfig --populate-node +[Install] +WantedBy=sysinit.target diff --git a/misc_systemd_units/udev-settled.target b/misc_systemd_units/udev-settled.target deleted file mode 100644 index 1f0ce5d9..00000000 --- a/misc_systemd_units/udev-settled.target +++ /dev/null @@ -1,17 +0,0 @@ -# Our services assume local devices are available -# Request and wait for systemd-udev-settle.service before basic.target -# -# Order behind network.service, because our network.service currently -# has DefaultDependencies=no. Other services are behind basic.target -# per DefaultDependencies=yes. - -[Unit] -Description=udev Settled -DefaultDependencies=no -Wants=systemd-udev-settle.service -After=systemd-udev-settle.service -Before=basic.target -Before=network.service - -[Install] -WantedBy=basic.target diff --git a/misc_systemd_units/unbound.service b/misc_systemd_units/unbound.service index b03d7132..f962954e 100644 --- a/misc_systemd_units/unbound.service +++ b/misc_systemd_units/unbound.service @@ -1,5 +1,7 @@ [Unit] -After=network.service gateway.service +DefaultDependencies=no +After=sysinit.target +Before=network.target [Service] Type=forking @@ -8,5 +10,5 @@ ExecStart=/usr/sbin/unbound PIDFile=/var/unbound/unbound.pid [Install] -WantedBy=network.target +WantedBy=multi-user.target diff --git a/misc_systemd_units/wait-network-online.service b/misc_systemd_units/wait-network-online.service new file mode 100644 index 00000000..425e7a29 --- /dev/null +++ b/misc_systemd_units/wait-network-online.service @@ -0,0 +1,14 @@ +[Unit] +DefaultDependencies=no +After=sysinit.target network.target +Before=network-online.target + +[Service] +Type=oneshot +RemainAfterExit=true +TimeoutStartSec=15 +StandardOutput=null +ExecStart=bash -c 'while ! ping -c 1 -w 1 rick.molgen.mpg.de; do sleep 1 ; done' + +[Install] +WantedBy=network-online.target diff --git a/misc_systemd_units/xaruba.service b/misc_systemd_units/xaruba.service deleted file mode 100644 index 67c456e7..00000000 --- a/misc_systemd_units/xaruba.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -After=network.service gateway.service mxmount.service -Before=network.target - -ConditionHost=macheteinfach.molgen.mpg.de - -[Service] -Type=oneshot -RemainAfterExit=true -ExecStart=/usr/sbin/ip-nat start 141.14.27.49 443 172.19.109.10 4343 20 net04 -ExecStop=/usr/sbin/ip-nat stop 141.14.27.49 443 172.19.109.10 4343 20 net04 - -[Install] -WantedBy=network.target diff --git a/mkmotd/motd.service b/mkmotd/motd.service index 67d6e448..51b997d1 100644 --- a/mkmotd/motd.service +++ b/mkmotd/motd.service @@ -1,7 +1,3 @@ -[Unit] -Description=Make motd -After=startup-tags.service - [Service] Type=oneshot ExecStart=/usr/sbin/mkmotd.pl diff --git a/mxmount/mxmount.service b/mxmount/mxmount.service index c5d64aea..b32ba9da 100644 --- a/mxmount/mxmount.service +++ b/mxmount/mxmount.service @@ -1,7 +1,9 @@ [Unit] -Description=MX mount local data filessystems -After=mxraid.startup.service +DefaultDependencies=no ConditionPathExists=/etc/mxmounts +Before=local-fs.target +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service [Service] Type=oneshot diff --git a/mxnetctl/mxnetctl b/mxnetctl/mxnetctl index 24dbece4..8f0bc151 100755 --- a/mxnetctl/mxnetctl +++ b/mxnetctl/mxnetctl @@ -4,8 +4,6 @@ use warnings; use Getopt::Long; -# options - our ($opt_quiet,$opt_noop,$opt_ignore_hw); use constant OPTIONS => ( 'quiet' => \$opt_quiet, @@ -17,7 +15,6 @@ sub USAGE { usage: $0 start [options] stop [options] # (ignored) - upgrade # switch from eth to net options: --quiet : do not log actions @@ -25,7 +22,7 @@ options: __EOF__ } - + sub scandir { my ($dirname)=@_; opendir my $dir,$dirname or die "$dirname: $!\n"; @@ -59,27 +56,23 @@ sub get_hw_address { # 'eth1' -> '00:1b:21:79:76:67' return slurpfile_chomp($path); } - our %HW_TO_DEV; # ( '00:1b:21:79:76:67' => 'net02' , ... ) our %DEV_TO_HW; # ('net02'=>'00:1b:21:79:76:67', ... ) our $CHANGES; - sub register_stable { my ($hw,$dev)=@_; # force one-to-one mapping, even if file is erroneus - + exists $DEV_TO_HW{$dev} and delete $HW_TO_DEV{$DEV_TO_HW{$dev}}; exists $HW_TO_DEV{$dev} and delete $DEV_TO_HW{$HW_TO_DEV{$hw}}; - $HW_TO_DEV{$hw}=$dev; $DEV_TO_HW{$dev}=$hw; $CHANGES++; } - sub read_mxnet { %HW_TO_DEV=(); %DEV_TO_HW=(); @@ -103,12 +96,6 @@ sub write_mxnet { print $mxnet $DEV_TO_HW{$dev},' ',$dev."\n"; } print $mxnet "\n"; - -# open my $out,'>',"/etc/local/mxnet-udev.rules" or die "/etc/local/mxnet-udev.rules: $!\n"; -# print $out "# generated ".scalar(localtime)." by $0\n\n"; -# for my $dev (sort keys %DEV_TO_HW) { -# print $out qq'SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="$DEV_TO_HW{$dev}", NAME="$dev"\n'; -# } } } @@ -120,7 +107,6 @@ sub get_unused_name { } } - sub rename_if { my ($src,$dst)=@_; warn "rename $src to $dst\n" unless $opt_quiet; @@ -135,7 +121,6 @@ sub rename_if { } } - sub preferred_device_name { my ($dev,$hw)=@_; @@ -153,21 +138,19 @@ sub preferred_device_name { return $new_dev; } - - our $TMP_NUM=0; sub out_of_the_way { my ($dev)=@_; # only 'netXX' or 'ethX' - never 'tmpXX' - + -e "/sys/class/net/$dev/device" or return; - + my $i = $dev=~/(\d+)/; rename_if($dev,sprintf('tmpnet%02d',$TMP_NUM++)); } sub start { read_mxnet(); - + # 1: rename configured ethX and netXX devices to configured netXX - move away conflicting devices for my $dev (grep /^(eth|net)(\d+)/,network_hardware_devices()) { @@ -187,68 +170,21 @@ sub start { rename_if($dev,$new_dev); } - #if ($CHANGES || ! -e "/etc/local/mxnet-udev.rules") { if ($CHANGES) { write_mxnet(); } } - - -sub upgrade { - umask 022; - - -d '/etc/local' or mkdir '/etc/local' or die "/etc/local: $!\n"; - - read_mxnet(); - for my $dev (grep /^(eth|net)(\d+)/,network_hardware_devices()) { - my $hw=get_hw_address($dev); - my $new_dev=preferred_device_name($dev,$hw); - } - write_mxnet(); - - unlink "/etc/udev/rules.d/70-persistent-net.rules"; - - my $data=slurpfile('/etc/systemd/system/network.service'); - unless ($data=~/mxnetctl/) { - $data=~s#^ExecStart#ExecStart=/usr/sbin/mxnetctl start\nExecStart#m; - $data=~s/eth(\d+)/sprintf 'net%02d',$1/eg; - open my $out,'>','/etc/systemd/system/network.service' or die "/etc/systemd/system/network.service: $!\n"; - print $out $data; - close $out; - } - - warn "updated /etc/local/mxnet , /etc/systemd/system/network.service , /etc/udev/rules.d/70-persistent-net.rules - reboot to activate\n"; -} - - - - - - - GetOptions(OPTIONS) or die USAGE; @ARGV>=1 or die USAGE; my ($cmd)=@ARGV; - if ($cmd eq 'start') { start(); } elsif ($cmd eq 'stop') { ; -} elsif ($cmd eq 'upgrade') { - upgrade(); - ; } else { die USAGE; } - - - - - - - - diff --git a/mxproxmox/proxmox-backup.service b/mxproxmox/proxmox-backup.service index f842f4f2..26dd8714 100644 --- a/mxproxmox/proxmox-backup.service +++ b/mxproxmox/proxmox-backup.service @@ -1,6 +1,3 @@ -[Unit] -Description=Proxmox Backup - [Service] Slice=slowio.slice ExecStart=/usr/sbin/slowio PHASE2 /usr/bin/mxproxmox local-backups diff --git a/mxproxmox/proxmox-backup.timer b/mxproxmox/proxmox-backup.timer index 83ff55c5..aa108d8e 100644 --- a/mxproxmox/proxmox-backup.timer +++ b/mxproxmox/proxmox-backup.timer @@ -1,6 +1,4 @@ [Unit] -Description=Daily trigger of promox-backup.service - ConditionHost=!deathofrats.molgen.mpg.de [Timer] diff --git a/mxraid/README b/mxraid/README deleted file mode 100644 index 54d74d31..00000000 --- a/mxraid/README +++ /dev/null @@ -1,37 +0,0 @@ ---- aus einer mail -To: Peter Marquardt -From: Thomas Kreitler -Subject: mdadm.conf, kleiner ist besser :) -Date: Tue, 26 Sep 2017 17:03:10 +0200 ---- - -Hi, - -mit etwas probieren hab' ich die wohl 'minimalste' mdadm-config gefunden. - - -Vorher: --=-=-=-=-=-= schnipp =-=-=-=-=-=- -# /etc/local/mdadm/M0000.conf: -# config file for 'M0000', to be processed with: -# mdadm -A /dev/md0 -c /etc/local/mdadm/M0000.conf - -DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi - -ARRAY /dev/md0 name=deadbird.molgen.mpg.de:M0000 metadata=1.2 level=raid6 num-devices=8 - -devices=/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf,/dev/sdg,/dev/sdh,/dev/sdi --=-=-=-=-=-= schnipp =-=-=-=-=-=- - - -Nacher: --=-=-=-=-=-= schnipp =-=-=-=-=-=- -ARRAY /dev/md0 devices=/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf,/dev/sdg,/dev/sdh,/dev/sdi --=-=-=-=-=-= schnipp =-=-=-=-=-=- - -leider geht kein: - - cat some.conf | mdadm -c- - - - diff --git a/mxraid/mxraid.service b/mxraid/mxraid.service new file mode 100644 index 00000000..6858263e --- /dev/null +++ b/mxraid/mxraid.service @@ -0,0 +1,16 @@ +[Unit] +DefaultDependencies=no +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service +Before=mxmount.service +Conflicts=shutdown.target +Before=shutdown.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/sbin/mxraid start +ExecStop=/usr/sbin/mxraid stop + +[Install] +WantedBy=local-fs.target diff --git a/mxraid/mxraid.shutdown.service b/mxraid/mxraid.shutdown.service index 218a8418..05871c5d 100644 --- a/mxraid/mxraid.shutdown.service +++ b/mxraid/mxraid.shutdown.service @@ -1,5 +1,4 @@ [Unit] -Description=MX disassemble local software raids After=lazy-umount-nfs.service DefaultDependencies=false diff --git a/mxraid/mxraid.startup.service b/mxraid/mxraid.startup.service deleted file mode 100644 index 6e799b9c..00000000 --- a/mxraid/mxraid.startup.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=MX assemble local software raids -# ConditionPathExists=/etc/mdadmconf_db - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/sbin/mxraid start - -[Install] -WantedBy=local-fs.target diff --git a/mxraid/run_mxmount_after_raid.patch b/mxraid/run_mxmount_after_raid.patch deleted file mode 100644 index dc8e428e..00000000 --- a/mxraid/run_mxmount_after_raid.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- devel_mxmount/mxmount.service.old 2016-08-23 13:23:14.000000000 +0200 -+++ devel_mxmount/mxmount.service 2017-09-20 14:21:41.876330617 +0200 -@@ -1,5 +1,6 @@ - [Unit] - Description=MX mount local data filessystems -+After=mxraid.startup.service - ConditionPathExists=/etc/mxmounts - - [Service] diff --git a/mxraid/test_install.sh b/mxraid/test_install.sh deleted file mode 100755 index 6c5d1f46..00000000 --- a/mxraid/test_install.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh - -# Script to *test* installation of mxraid related parts on a host. -# This is *not* the regular install script. - -function die() { echo $1; exit; } - -[ "$UID" != "0" ] && die 'must be root' - -cp -v mxraid /usr/sbin -cp -v mxraid_assemble /usr/sbin - -# systemd units -cp -v mxraid.startup.service /etc/systemd/system -cp -v mxraid.shutdown.service /etc/systemd/system - -# phase 1, keep mxmounts ability to assemble, because mxraid is still declawed -# # 'fix' mxmount -# sed -i -e '/mdadm --assemble/ s/system/# system/' /usr/bin/mxmount - -# adjust mxmount unit, this will be done 'correctly' in mxmount after testing - -if ! grep -q mxraid.startup.service /etc/systemd/system/mxmount.service ; then - CWD=`pwd` - ( - cd /etc/systemd/system - cat $CWD/run_mxmount_after_raid.patch | patch -p1 --verbose - ) -fi - -# this must be done manually after the real install -systemctl enable mxraid.startup.service -systemctl enable mxraid.shutdown.service diff --git a/mxrouter/mxrouter.service b/mxrouter/mxrouter.service new file mode 100644 index 00000000..fd20b932 --- /dev/null +++ b/mxrouter/mxrouter.service @@ -0,0 +1,13 @@ +[Unit] +ConditionPathIsDirectory=/etc/local/mxrouter + +[Service] +Type=oneshot +RemainAfterExit=yes +StandardOutput=syslog +ExecStart=/usr/sbin/mxrouterctl start +ExecStop=/usr/sbin/mxrouterctl stop + +[Install] +WantedBy=multi-user.target + diff --git a/mxshadow/mxshadow.service b/mxshadow/mxshadow.service index f72505e3..239dfec2 100644 --- a/mxshadow/mxshadow.service +++ b/mxshadow/mxshadow.service @@ -1,6 +1,4 @@ [Unit] -Requires=network.target -After=network.target ConditionHost=wtf.molgen.mpg.de [Service] diff --git a/mxstartup/mxservicectl b/mxstartup/mxservicectl new file mode 100755 index 00000000..1808f652 --- /dev/null +++ b/mxstartup/mxservicectl @@ -0,0 +1,150 @@ +#!/bin/bash + +CMD_IP="/sbin/ip" +CMD_MXS2MXSRV="/usr/sbin/mxstartup2mxconfig" + +RUNDIR="/run/mariux" + +# expands *-pattern in pathnames to null if no matching files are found.. +shopt -s nullglob + +# exit on any error +set -e + +function mxsrv_start_one() { + local cfg=$1 + local -i i mip mfwd + + echo "starting ${cfg} .." + + . ${cfg} + + test "$MX_SRV_USER" = "-" && MX_SRV_USER="root" + + case "${MX_SRV_SCRIPT}" in + *.service) + systemctl start "${MX_SRV_SCRIPT}" || true + ;; + *) + su - ${MX_SRV_USER} -c "${MX_SRV_SCRIPT} start" & + ;; + esac + + mv ${cfg}{,.r} + + unset -v MX_SRV_USER MX_SRV_SCRIPT +} + +function mxsrv_stop_one() { + local cfg=$1 + local -i i mip mfwd + + echo "stopping ${cfg} .." + + . ${cfg} + + test "$MX_SRV_USER" = "-" && MX_SRV_USER="root" + + case "${MX_SRV_SCRIPT}" in + *.service) + systemctl stop "${MX_SRV_SCRIPT}" || true + ;; + *) + su - ${MX_SRV_USER} -c "${MX_SRV_SCRIPT} stop" & + ;; + esac + + rm ${cfg} + + unset -v MX_SRV_USER MX_SRV_SCRIPT +} + +function mxsrv_start() { + local cfg + local pattern=$1 + + : ${pattern:=*} + + for cfg in ${RUNDIR}/mxservice.${pattern}.cfg ; do + if [ -e ${cfg}.r ] ; then + echo >&2 "skipping $cfg: already running.." + continue + fi + + if [ ! -r ${cfg} ] ; then + echo >&2 "skipping $cfg: can't read file" + continue + fi + + if [ ! -O ${cfg} ] ; then + echo >&2 "skipping $cfg: possible hack attempt?" + continue + fi + + mxsrv_start_one ${cfg} + + done +} + +function mxsrv_stop() { + local cfg + local pattern=$1 + + : ${pattern:=*} + + for cfg in ${RUNDIR}/mxservice.${pattern}.cfg.r ; do + if [ ! -r ${cfg} ] ; then + echo >&2 "skipping $cfg: can't read file" + continue + fi + + if [ ! -O ${cfg} ] ; then + echo >&2 "skipping $cfg: possible hack attempt?" + continue + fi + + mxsrv_stop_one ${cfg} + + done +} + + +function create_run_dir_if_not_exists() { + if [ ! -d ${RUNDIR} ] ; then + mkdir -m 0700 ${RUNDIR} + fi + + if [ ! -O ${RUNDIR} ] ; then + echo >&2 "${RUNDIR}: wrong owner: possible hack attempt? exiting.." + exit 1 + fi +} + +function create_mxservice() { + ${CMD_MXS2MXSRV} ${RUNDIR} >/dev/null +} + + +############################################################################## + +create_run_dir_if_not_exists + +case "${1}" in + start) + create_mxservice + mxsrv_start $2 + ;; + stop) + mxsrv_stop $2 + ;; + restart) + mxsrv_stop $2 + create_mxservice + mxsrv_start $2 + ;; + *) + echo >&2 "$0 start|stop" + ;; +esac + + diff --git a/mxstartup/mxstartup.service b/mxstartup/mxstartup.service new file mode 100644 index 00000000..0376fe25 --- /dev/null +++ b/mxstartup/mxstartup.service @@ -0,0 +1,13 @@ +[Unit] +After=network-online.target +Wants=network-online.target + +[Service] +Type=oneshot +ExecStart=/usr/sbin/mxstartupctl start +ExecStop=/usr/sbin/mxstartupctl stop +RemainAfterExit=yes +StandardOutput=syslog + +[Install] +WantedBy=multi-user.target diff --git a/mxstartup/mxstartup2mxconfig b/mxstartup/mxstartup2mxconfig new file mode 100755 index 00000000..e61749ef --- /dev/null +++ b/mxstartup/mxstartup2mxconfig @@ -0,0 +1,277 @@ +#! /usr/local/system/perl/bin/perl + +use Sys::Hostname; +use Data::Dumper; +use Socket; + +######################################## + +my $configfile = "/etc/mxstartups"; +my $rundir = "/run/mariux"; + +######################################## + +my $fullhostname = hostname; +my ($hostname) = $fullhostname =~ /^(.*?)\./; + +my $packed_ip; + +# wait till hostname is resolvable.. +while(!($packed_ip=gethostbyname($fullhostname))) { + sleep 1; +} + +my $hostip = inet_ntoa($packed_ip); + +if(defined $ARGV[0]) { + $rundir = $ARGV[0]; +} + +unless(-d $rundir and -w $rundir) { + print STDERR "can't write to directory $rundir\n"; + exit 1; +} + +@lines = read_file($configfile); + +my ($host, $user, $script, $ip); + +LINE: foreach(@lines) { + unless(($name, $host, $user, $script, $ip) = /^(\S+) (\S+) (\S+) (\S+)\s*(.*?)$/) { + print "format error: '$_'\n"; + next; + } + + my @hosts = split /[;,]/,$host; + + @hosts = expand_hosts(@hosts); + + my $match=undef; + foreach my $host (@hosts) { + if($host eq $hostname or $host eq $fullhostname or $hostname =~ /^$host$/ or $fullhostname =~ /^$host$/) { + $match=$host; + } + } + + next LINE unless(defined $match); + + save_config_mxservice($name, $user, $script); + + my @ips = split /\s*[,; ]\s*/,$ip; + my $pip = parse_ips(@ips); + print_ips_cfg($pip); + +} + + + +sub read_file { + my $file = shift; + open F, "$file" or die "can't open $file: $!\n"; + + my @lines=(); + my $line=""; + my $cont=0; + + while() { + chomp; + next if(/^\s*#/ or /^\s*$/); + + $cont=0; + + s/#.*$//; # remove comments.. + + $_ = $line . $_; + + if(s/\\\s*$//) { + # line continous in next line.. + $cont=1; + } + + $line = $_; + + unless($cont) { + $line =~ s/\s+/ /g; + push @lines, $line; + $line=""; + } + } + return @lines; +} + +sub eth_to_net_if_not_exists { + my $dev = shift; + my $net; + my $num; + + $dev !~ /^eth/ and return $dev; + + -d "/sys/class/net/${dev}" and return $dev; + + ($num) = $dev =~ /^eth(\d+)$/; + $net = sprintf "net%02d", $num; + + -d "/sys/class/net/${net}" and return $net; + + return $dev; +} + +sub parse_ips { + local $_; + + my $H = {}; + my $default_device = 'eth0'; + + foreach(@_) { + my $device = $default_device; + my %ports = (); + my $ip = "-"; + my $_todest = undef; + my $addressprefix; + + if(/\{(\S+)\}(\S+)/) { # extract device "{device}ip[d:t][..]" + $device = $1; + $_=$2; + } + + while((/(\S+)\[(\d+):(\d+)\]/)) { # extract ports + $ports{$3}=$2; + $_=$1; + } + + if($_ =~ /(\S+)\:(\S+)/) { + $_todest = $2; + $_ = $1; + } + + if (/(\S+)\/(\S+)/) { + $_=$1; + $addressprefix=$2; + } else { + $addressprefix=20; + } + + if("$_" eq "-") { + $_ = $fullhostname; + } + + unless (defined $_todest) { + $_todest=$_; + } + + +# printf "ip = $_\n"; +# printf "todest = $_todest\n"; + + if (! ($tmphostname = gethostbyname($_)) ) { + printf STDERR "mxvip::$name *ERROR* Can't resolve '$_'. Skipping.\n"; + next; + } + $ip = inet_ntoa($tmphostname); + + if (! ($tmphostname = gethostbyname($_todest)) ) { + printf STDERR "mxvip::$name *ERROR* Can't resolve '$_'. Skipping.\n"; + next; + } + $_todest = inet_ntoa($tmphostname); + + $device = eth_to_net_if_not_exists($device); + + $H->{$ip} = { device => $device, addressprefix => $addressprefix, ports => {%ports}, todest => $_todest }; + } + + return $H; +} + + + +############################################################################## + +sub save_config_mxservice { + my ($service, $user, $script) = @_; + + my $config = "$rundir/mxservice.$name.cfg"; + + printf "mxservice::$name creating service-config: $config\n"; + + open SCRIPT, ">", "$config" or die "can't open $config: $!"; + print SCRIPT qq(MX_SRV_USER="$user"\n); + print SCRIPT qq(MX_SRV_SCRIPT="$script"\n); + close SCRIPT or die "can't close $script: $!"; +} + +############################################################################## + +sub print_ips_cfg { + my $H = shift; + + my %up = (); + + my $i=0; + my $r=0; + + my $script = "$rundir/mxvip.$name.cfg"; + + printf "mxvip::$name creating start script: $script\n"; + + open SCRIPT, ">", "$script" or die "can't open $script: $!"; + + foreach my $ip (keys %$H) { + if("$ip" ne "$hostip") { + + my $broadcast=join('.',unpack('C*',pack('N',unpack('N',pack('C*',split '\.',$ip)) | (1<<(32-$H->{$ip}->{addressprefix}))-1 ))); + + print SCRIPT qq(# ip $i\n); + print SCRIPT qq(MX_IP_ADDRESS[$i]="$ip"\n); + print SCRIPT qq(MX_IP_ADDRESSPREFIX[$i]="$H->{$ip}->{addressprefix}"\n); + print SCRIPT qq(MX_IP_BROADCAST[$i]="$broadcast"\n); + print SCRIPT qq(MX_IP_DEVICE[$i]="$H->{$ip}->{device}"\n); + $i++; + + $up{$H->{$ip}->{device}}=1; + } + + my $j=$i-1; + foreach my $port (keys %{$H->{$ip}->{ports}}) { + print SCRIPT qq(# forward $i :: $r\n); + print SCRIPT qq(MX_FWD_IP[$r]="$j"\n); + print SCRIPT qq(MX_FWD_SRC_IP[$r]="$ip"\n); + print SCRIPT qq(MX_FWD_SRC_PORT[$r]="$H->{$ip}->{ports}->{$port}"\n); + print SCRIPT qq(MX_FWD_DST_IP[$r]="$H->{$ip}->{todest}"\n); + print SCRIPT qq(MX_FWD_DST_PORT[$r]="$port"\n); + $r++; + } + } + + close SCRIPT or die "can't close $script: $!"; +} + +############################################################################## + +sub hostconfig_list { + my $tag = shift; + $_=`/usr/sbin/hostconfig --list $tag 2>/dev/null`; + return ( split ); +} + + +sub expand_hosts { + my @oh = @_; + my @hosts = (); + + + foreach my $host (@oh) { + if($host =~ /^\@(\S+)/) { + push @hosts, hostconfig_list($1); + } + elsif ($host =~ /^(\/\S+)/) { + next unless(-r $1); + push @hosts, expand_hosts(read_file($1)); + } else { + push @hosts, $host; + } + } + return @hosts; +} + +__DATA__ diff --git a/mxstartup/mxstartupctl b/mxstartup/mxstartupctl new file mode 100755 index 00000000..8dbaf94b --- /dev/null +++ b/mxstartup/mxstartupctl @@ -0,0 +1,30 @@ +#!/bin/bash + +remoteuser=molgen + + +case "${1}" in + start) + while ! id ${remoteuser} >/dev/null 2>&1 ; do + echo >&2 "WARNING: Waiting for NIS (failed to resolve remote user ${remoteuser})" + sleep 1 + done + mxvipctl start $2 + mxservicectl start $2 + ;; + stop) + mxservicectl stop $2 + mxvipctl stop $2 + ;; + restart) + mxservicectl stop $2 + mxvipctl stop $2 + mxvipctl start $2 + mxservicectl start $2 + ;; + *) + echo >&2 "$0 start|stop|restart " + ;; +esac + + diff --git a/mxstartup/mxvipctl b/mxstartup/mxvipctl new file mode 100755 index 00000000..0939c0a6 --- /dev/null +++ b/mxstartup/mxvipctl @@ -0,0 +1,217 @@ +#!/bin/bash + +CMD_IP="/sbin/ip" +CMD_IPTABLES="/usr/sbin/iptables" +CMD_MXS2MXVIP="/usr/sbin/mxstartup2mxconfig" + +RUNDIR="/run/mariux" + +# expands *-pattern in pathnames to null if no matching files are found.. +shopt -s nullglob + +function mxvip_start_one() { + local vip=$1 + local -i i mip mfwd + + echo "starting ${vip} .." + + . ${vip} + + mip=${#MX_IP_ADDRESS[*]} + mfwd=${#MX_FWD_IP[*]} + +# echo "ip addresses found: ${mip}" + + #MX_FWD_DST_IP=([0]="141.14.30.222" [1]="141.14.20.135" [2]="141.14.27.44" [3]="141.14.27.44") + #MX_FWD_DST_PORT=([0]="8080" [1]="9191" [2]="9090" [3]="6789") + #MX_FWD_IP=([0]="-1" [1]="0" [2]="1" [3]="1") + #MX_FWD_SRC_IP=([0]="141.14.30.222" [1]="141.14.20.135" [2]="141.14.27.44" [3]="141.14.27.44") + #MX_FWD_SRC_PORT=([0]="80" [1]="91" [2]="90" [3]="80") + #MX_IP_ADDRESS=([0]="141.14.20.135" [1]="141.14.27.44") + #MX_IP_ADDRESSPREFIX=([0]="20" [1]="20") + #MX_IP_BROADCAST=([0]="141.14.31.255" [1]="141.14.31.255") + #MX_IP_DEVICE=([0]="eth0" [1]="eth0") + + i=0 + while [ ${i} -lt ${mip} ] ; do +# echo " $i -> ${MX_IP_ADDRESS[$i]}" + + echo "adding ip ${MX_IP_ADDRESS[$i]}/${MX_IP_ADDRESSPREFIX[$i]} broadcast ${MX_IP_BROADCAST[$i]} to ${MX_IP_DEVICE[$i]}" + + ${CMD_IP} addr add ${MX_IP_ADDRESS[$i]}/${MX_IP_ADDRESSPREFIX[$i]} broadcast ${MX_IP_BROADCAST[$i]} dev ${MX_IP_DEVICE[$i]} + ${CMD_IP} link set up dev ${MX_IP_DEVICE[$i]} + + i=i+1 + done + +# echo "fwds found: ${mfwd}" + + i=0 + while [ ${i} -lt ${mfwd} ] ; do + echo "adding forward ${MX_FWD_SRC_IP[$i]}:${MX_FWD_SRC_PORT[$i]} <-> ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]}" + + ${CMD_IPTABLES} -t nat -A PREROUTING -p tcp -j DNAT -d ${MX_FWD_SRC_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-destination ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]} + ${CMD_IPTABLES} -t nat -A OUTPUT -p tcp -j DNAT -d ${MX_FWD_SRC_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-destination ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]} + ${CMD_IPTABLES} -t nat -A POSTROUTING -p tcp -j SNAT --dst ${MX_FWD_DST_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-source ${MX_FWD_SRC_IP[$i]} + + i=i+1 + done + + unset ${!MX_IP_*} + unset ${!MX_FWD_*} + + mv ${vip}{,.r} +} + +function mxvip_stop_one() { + local vip=$1 + local -i i mip mfwd + + echo "stopping ${vip} .." + + . ${vip} + + mip=${#MX_IP_ADDRESS[*]} + mfwd=${#MX_FWD_IP[*]} + +# echo "ip addresses found: ${mip}" + + #MX_FWD_DST_IP=([0]="141.14.30.222" [1]="141.14.20.135" [2]="141.14.27.44" [3]="141.14.27.44") + #MX_FWD_DST_PORT=([0]="8080" [1]="9191" [2]="9090" [3]="6789") + #MX_FWD_IP=([0]="-1" [1]="0" [2]="1" [3]="1") + #MX_FWD_SRC_IP=([0]="141.14.30.222" [1]="141.14.20.135" [2]="141.14.27.44" [3]="141.14.27.44") + #MX_FWD_SRC_PORT=([0]="80" [1]="91" [2]="90" [3]="80") + #MX_IP_ADDRESS=([0]="141.14.20.135" [1]="141.14.27.44") + #MX_IP_ADDRESSPREFIX=([0]="20" [1]="20") + #MX_IP_BROADCAST=([0]="141.14.31.255" [1]="141.14.31.255") + #MX_IP_DEVICE=([0]="eth0" [1]="eth0") + +# echo "fwds found: ${mfwd}" + + i=0 + while [ ${i} -lt ${mfwd} ] ; do + echo "removing forward ${MX_FWD_SRC_IP[$i]}:${MX_FWD_SRC_PORT[$i]} <-> ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]}" + + ${CMD_IPTABLES} -t nat -D PREROUTING -p tcp -j DNAT -d ${MX_FWD_SRC_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-destination ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]} + ${CMD_IPTABLES} -t nat -D OUTPUT -p tcp -j DNAT -d ${MX_FWD_SRC_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-destination ${MX_FWD_DST_IP[$i]}:${MX_FWD_DST_PORT[$i]} + ${CMD_IPTABLES} -t nat -D POSTROUTING -p tcp -j SNAT --dst ${MX_FWD_DST_IP[$i]} --dport ${MX_FWD_SRC_PORT[$i]} --to-source ${MX_FWD_SRC_IP[$i]} + + i=i+1 + done + + i=0 + while [ ${i} -lt ${mip} ] ; do +# echo " $i -> ${MX_IP_ADDRESS[$i]}" + + dev=${MX_IP_DEVICE[$i]} + + if [ ! -d "/sys/class/net/${dev}" -a "${dev:0:3}" = "eth" ] ; then + net=$(printf "net%02d" "${dev:3}") + if [ -d "/sys/class/net/${net}" ] ; then + MX_IP_DEVICE[$i]=$net + fi + fi + + echo "removing ip ${MX_IP_ADDRESS[$i]}/${MX_IP_ADDRESSPREFIX[$i]} broadcast ${MX_IP_BROADCAST[$i]} to ${MX_IP_DEVICE[$i]}" + + ${CMD_IP} addr del ${MX_IP_ADDRESS[$i]}/${MX_IP_ADDRESSPREFIX[$i]} broadcast ${MX_IP_BROADCAST[$i]} dev ${MX_IP_DEVICE[$i]} +# echo "${CMD_IP} link set up dev ${MX_IP_DEVICE[$i]}" + + i=i+1 + done + + unset ${!MX_IP_*} + unset ${!MX_FWD_*} + + rm ${vip} +} + +function mxvip_start() { + local vip + local pattern=$1 + + : ${pattern:=*} + + for vip in ${RUNDIR}/mxvip.${pattern}.cfg ; do + if [ -e ${vip}.r ] ; then + echo >&2 "skipping $vip: already running.." + continue + fi + + if [ ! -r ${vip} ] ; then + echo >&2 "skipping $vip: can't read file" + continue + fi + + if [ ! -O ${vip} ] ; then + echo >&2 "skipping $vip: possible hack attempt?" + continue + fi + + mxvip_start_one ${vip} + + done +} + +function mxvip_stop() { + local vip + local pattern=$1 + + : ${pattern:=*} + + for vip in ${RUNDIR}/mxvip.${pattern}.cfg.r ; do + if [ ! -r ${vip} ] ; then + echo >&2 "skipping $vip: can't read file" + continue + fi + + if [ ! -O ${vip} ] ; then + echo >&2 "skipping $vip: possible hack attempt?" + continue + fi + + mxvip_stop_one ${vip} + + done +} + + +function create_run_dir_if_not_exists() { + if [ ! -d ${RUNDIR} ] ; then + mkdir -m 0700 ${RUNDIR} + fi + + if [ ! -O ${RUNDIR} ] ; then + echo >&2 "${RUNDIR}: wrong owner: possible hack attempt? exiting.." + exit 1 + fi +} + +function create_mxvip() { + ${CMD_MXS2MXVIP} ${RUNDIR} >/dev/null +} + + +############################################################################## + +create_run_dir_if_not_exists + +case "${1}" in + start) + create_mxvip + mxvip_start $2 + ;; + stop) + mxvip_stop $2 + ;; + restart) + mxvip_stop $2 + create_mxvip + mxvip_start $2 + ;; + *) + echo >&2 "$0 start|stop" + ;; +esac + + diff --git a/netlog/netlog.service b/netlog/netlog.service index 56b70616..bdcf0748 100644 --- a/netlog/netlog.service +++ b/netlog/netlog.service @@ -1,6 +1,6 @@ [Unit] -Requires=network.target -After=network.target +Wants=network-online.target +After=network-online.target [Service] ExecStart=/usr/sbin/netlog --daemon /var/log/messages /var/log/mail.log diff --git a/nvidiactl/nvidia.service b/nvidiactl/nvidia.service index 3b7a8fd8..25ce4a98 100644 --- a/nvidiactl/nvidia.service +++ b/nvidiactl/nvidia.service @@ -1,6 +1,6 @@ [Unit] -Description=NVIDIA Kernel Driver -Before=gdm.service +Before=display-manager.service +After=getty-pre.target [Service] Type=oneshot diff --git a/serial-log/serial-log@.service b/serial-log/serial-log@.service index 917907c7..c8feee89 100644 --- a/serial-log/serial-log@.service +++ b/serial-log/serial-log@.service @@ -1,6 +1,3 @@ -[Unit] -Description=TTY logger - [Service] ExecStart=/usr/libexec/serial-log %I Type=simple