update from ⮡ tarent
authormirabilos <t.glaser@tarent.de>
Thu, 23 Nov 2017 20:33:16 +0000 (21:33 +0100)
committermirabilos <t.glaser@tarent.de>
Thu, 23 Nov 2017 20:33:16 +0000 (21:33 +0100)
24 files changed:
ksh/ansi-colours [new file with mode: 0644]
mksh/ldap_user_info.cgi
mksh/sysadmin/gencert.sh [new file with mode: 0644]
mksh/sysadmin/ipr2hn [new file with mode: 0644]
mksh/sysadmin/mkmissingpoms [new file with mode: 0644]
mksh/sysadmin/staticHostsGen [new file with mode: 0644]
mksh/teckids/intern/fix-slapd-crc [changed mode: 0755->0644]
mksh/teckids/intern/ldif_crc.sh [changed mode: 0755->0644]
mksh/teckids/intern/teckids-ejmaint [changed mode: 0755->0644]
mksh/teckids/intern/teckids-ldapmaint [changed mode: 0755->0644]
mksh/teckids/intern/teckids-mmmaint [changed mode: 0755->0644]
mksh/teckids/intern/teckids-sigmaint [changed mode: 0755->0644]
mksh/teckids/intern/teckids-sshmaint [changed mode: 0755->0644]
mksh/teckids/ssh_wrapper [changed mode: 0755->0644]
mksh/teckids/teckids [changed mode: 0755->0644]
mksh/teckids/www/auth_vote.cgi [changed mode: 0755->0644]
mksh/teckids/www/auth_votes.cgi [changed mode: 0755->0644]
mksh/teckids/www/betreuung_2016_herbst_anmeldung.cgi [changed mode: 0755->0644]
mksh/teckids/www/bwsrlang.cgi [changed mode: 0755->0644]
mksh/teckids/www/schultab.cgi [changed mode: 0755->0644]
mksh/teckids/www/sponsoren-vcard.cgi [changed mode: 0755->0644]
posix/sysadmin/fw-off [new file with mode: 0644]
posix/sysadmin/fw-on [new file with mode: 0644]
posix/sysadmin/whoswaps [new file with mode: 0644]

diff --git a/ksh/ansi-colours b/ksh/ansi-colours
new file mode 100644 (file)
index 0000000..738c4b2
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/mksh
+# $Id: ansi-colours 3961 2014-03-24 08:41:04Z tglase $
+#-
+# Copyright © 2014
+#      mirabilos <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+
+print -n '\033[0m'
+for i in 0 1; do
+       ii=0
+       (( i )) && ii=0\;1
+       is=
+       (( i )) && is='1;'
+       for bg in 4{0,1,2,3,4,5,6,7}; do
+               for fg in 3{0,1,2,3,4,5,6,7}; do
+                       print -n "\033[$i;$fg;${bg}m ${is}$fg;${bg}m"
+               done
+               print '\033[0m'
+       done
+done
+print -n '\033[0m'
index c105c9d..f8a81e1 100644 (file)
@@ -1,26 +1,9 @@
 #!/bin/mksh
-# $Id: ui.cgi 1104 2010-06-18 12:53:21Z tglase $
+# $Id: ui.cgi 5123 2017-01-16 16:10:38Z tglase $
 # root@dev:/var/www/tarentpgp/ui.cgi
-
-# for debugging {{{
-#print Content-type: text/plain
-#print
-#exec 2>&1
-#set -x
-# end debugging }}}
-
-# basic input validation
-if [[ $AUTH_TYPE != Basic || $HTTPS != on || -z $REMOTE_USER || \
-    $REQUEST_METHOD != GET || -n $QUERY_STRING ]]; then
-       print Status: 400 Bad Request
-       print
-       print Sorry, use the script or leave it.
-       exit 1
-fi
-
-### BEGIN imported code {{{
-# $MirOS: src/bin/mksh/dot.mkshrc,v 1.43 2009/05/31 17:17:33 tg Rel $
 #-
+# Copyright (c) 2009, 2010, 2012
+#      mirabilos <t.glaser@tarent.de>
 # Copyright (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009
 #      Thorsten Glaser <tg@mirbsd.org>
 #
@@ -39,6 +22,25 @@ fi
 # damage or existence of a defect, except proven that it results out
 # of said person's immediate fault when using the work as intended.
 
+# for debugging {{{
+#print Content-type: text/plain
+#print
+#exec 2>&1
+#set -x
+# end debugging }}}
+
+# basic input validation
+if [[ $AUTH_TYPE != Basic || $HTTPS != on || -z $REMOTE_USER || \
+    $REQUEST_METHOD != GET || -n $QUERY_STRING ]]; then
+       print Status: 400 Bad Request
+       print
+       print Sorry, use the script or leave it.
+       exit 1
+fi
+
+### BEGIN imported code {{{
+# From MirOS: src/bin/mksh/dot.mkshrc,v 1.43 2009/05/31 17:17:33 tg Rel $
+
 allu=QWERTYUIOPASDFGHJKLZXCVBNM
 alll=qwertyuiopasdfghjklzxcvbnm
 alln=0123456789
@@ -85,8 +87,8 @@ v_givenName=
 v_mailPrimaryAddress=
 v_o=
 v_sn=
-env LDAPTLS_CACERT=/etc/ssl/certs/ucs.tarent.de.cer \
-    ldapsearch -x -LLL -ZZ -H ldap://ugs.tarent.de -b dc=tarent,dc=de \
+env LDAPTLS_CACERT=/etc/ssl/certs/dc.lan.tarent.de.cer \
+    ldapsearch -x -LLL -ZZ -H ldap://dc1.lan.tarent.de -b dc=tarent,dc=de \
     uid="$REMOTE_USER" givenName mailPrimaryAddress o sn | \
     tr '\n' '\ 1' | sed 's/\ 1 //g' | tr '\ 1' '\n' |&
 while read -p key value; do
diff --git a/mksh/sysadmin/gencert.sh b/mksh/sysadmin/gencert.sh
new file mode 100644 (file)
index 0000000..63dcc91
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/mksh
+# $Id: gencert.sh 1505 2010-10-11 12:26:46Z tglase $
+# $MirOS: src/etc/rc,v 1.111 2010/07/11 17:35:09 tg Exp $
+#-
+# Copyright © 2010
+#      mirabilos <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+
+seckeyname=/etc/ssl/private/default.key
+pubkeyname=/etc/ssl/default.cer
+chain_name=/etc/ssl/deflt-ca.cer
+
+keyperms=640
+keyusers=root:ssl-cert
+#keyperms=600
+#keyusers=0:0
+
+# XXX 6000-8000 is recommended... choose less to be nice to old boxen
+bitsize=4096
+
+if [[ ! -s $seckeyname ]]; then
+       print -n "openssl: generating new host RSA key... "
+       rm -f $seckeyname $pubkeyname $chain_name
+       if openssl genrsa -out $seckeyname $bitsize; then
+               chown $keyusers $seckeyname
+               chmod $keyperms $seckeyname
+               print done.
+       else
+               print failed.
+       fi
+fi
+if [[ ! -s $pubkeyname || ! -s $chain_name ]]; then
+       print -n "openssl: generating new host X.509v3 certificate... "
+       rm -f $pubkeyname $chain_name
+       openssl req -batch -new -subj "/CN=$(hostname)/" \
+           -key $seckeyname \
+           -x509 -out $pubkeyname
+       chmod 644 $pubkeyname
+       cp $pubkeyname $chain_name
+       print done
+fi
diff --git a/mksh/sysadmin/ipr2hn b/mksh/sysadmin/ipr2hn
new file mode 100644 (file)
index 0000000..ffe2fe1
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/mksh
+# $Id: ipr2hn 2651 2012-01-09 13:52:46Z tglase $
+#-
+# Copyright © 2012
+#      mirabilos <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+#-
+# Example: ipr2hn 192.168.0.1/24 10.0.0.0/8 >hostnames.txt 2>errs.txt
+
+tab='  '
+
+function iptohex {
+       local i h a save_IFS
+       typeset -Uui n
+
+       save_IFS=$IFS; IFS=.; set -A a -- $1; IFS=$save_IFS
+       h=0x
+       for i in 0 1 2 3; do
+               (( n = 0x100 + 10#${a[i]} ))
+               (( n < 0x100 || n > 0x1FF )) && return 1
+               h=$h${n#16#1}
+       done
+       print $h
+}
+
+function range2ips {
+       local -Uui16 -Z11 basis i maske
+
+       i=$(iptohex ${1%/*})
+       j=${1#*/}
+       if (( j < 0 || j > 32 )); then
+               print -u2 Wrong mask: $1
+               return 1
+       fi
+       if (( j == 32 )); then
+               maske=0xFFFFFFFF
+       else
+               (( maske = ~((1 << (32 - j)) - 1) ))
+       fi
+       (( basis = i & maske ))
+       (( i = basis ))
+       while (( (i & maske) == basis )); do
+               print $((#i & 255)).$((#(i >> 8) & 255)).$((#(i >> 16) & 255)).$((#i >> 24)).in-addr.arpa.
+               let i++
+       done
+}
+
+for range in "$@"; do
+       if [[ $range != +([0-9]).+([0-9]).+([0-9]).+([0-9])/+([0-9]) ]]; then
+               print -u2 Invalid range: $range
+               continue
+       fi
+       range2ips $range || continue
+done | while read ptr; do
+       mirhost -t ptr $ptr 2>/dev/null |&
+       found=0
+       while IFS= read -pr line; do
+               [[ $line = "${ptr%.}${tab}PTR$tab"* ]] || continue
+               print ${line##*$tab}
+               found=1
+       done
+       (( found )) || print -u2 Not found: $ptr
+done
diff --git a/mksh/sysadmin/mkmissingpoms b/mksh/sysadmin/mkmissingpoms
new file mode 100644 (file)
index 0000000..7bbc2c6
--- /dev/null
@@ -0,0 +1,85 @@
+#!/bin/mksh
+# $Id: mkmissingpoms 4271 2015-01-07 14:13:00Z tglase $
+#-
+# Copyright © 2015
+#      Thorsten “mirabilos” Glaser <t.glaser@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+
+unset LANG LANGUAGE LC_ADDRESS LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+    LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+    LC_TELEPHONE LC_TIME
+export LC_ALL=C
+
+verbose=0
+while getopts 'v' ch; do
+       case $ch {
+       (v) verbose=1 ;;
+       (+v) verbose=0 ;;
+       (*) print -ru2 "usage: mksh mkmissingpoms [-v]"; exit 1 ;;
+       }
+done
+shift $((OPTIND - 1))
+
+function xml_encode {
+       REPLY=${1//'&'/'&amp;'}
+       REPLY=${REPLY//'<'/'&lt;'}
+}
+
+cd /var/www/maven_repo
+
+find * \( -name \*.zip -o -name \*.jar -o -name \*.tar.\* -o \
+    -name \*.tgz -o -name \*.tbz -o -name \*.tbz2 -o -name \*.txz \) \
+    -printf '%h\0' | sort -zu |&
+while IFS= read -d '' -p -r pathname; do
+       # fn 3rdparty/javax/servlet/servlet-api/2.4/servlet-api-2.4.pom
+       # pn 3rdparty/javax/servlet/servlet-api/2.4
+       if [[ $pathname != */*/*/* ]]; then
+               print -ru2 "W: ignoring too-short $pathname"
+               continue
+       fi
+
+       version=${pathname##*/}
+       artifactId=${pathname%/*}
+       groupId=${artifactId%/*}
+       artifactId=${artifactId##*/}
+       groupId=${groupId#*/}
+       groupId=${groupId//'/'/.}
+
+       [[ -s $pathname/$artifactId-$version.pom ]] && continue
+
+       found=0
+       for x in "$pathname/$artifactId-$version".*; do
+               [[ -e $x ]] || continue
+               if [[ $x = *.@(zip|jar|tar.*|t[gbx]z|tbz2) ]]; then
+                       found=1
+                       break
+               fi
+       done
+       if (( !found )); then
+               (( verbose )) && \
+                   print -ru2 "W: ignoring no-file-found-in $pathname"
+               continue
+       fi
+
+       print -nr -- "<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>${|xml_encode "$groupId";}</groupId>
+  <artifactId>${|xml_encode "$artifactId";}</artifactId>
+  <version>${|xml_encode "$version";}</version>
+</project>" >"$pathname/$artifactId-$version.pom"
+       print -r "created $pathname/$artifactId-$version.pom"
+done
diff --git a/mksh/sysadmin/staticHostsGen b/mksh/sysadmin/staticHostsGen
new file mode 100644 (file)
index 0000000..58ec611
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/mksh
+# $Id: staticHostsGen 2679 2012-01-17 15:08:35Z agocke $
+#-
+# Copyright © 2010
+#      Benjamin Kix <b.kix@tarent.de>
+# Copyright © 2010, 2011
+#      mirabilos <t.glaser@tarent.de>
+# Copyright © 2012
+#      gecko2 <a.gockel@tarent.de>
+#
+# Provided that these terms and disclaimer and all copyright notices
+# are retained or reproduced in an accompanying document, permission
+# is granted to deal in this work without restriction, including un‐
+# limited rights to use, publicly perform, distribute, sell, modify,
+# merge, give away, or sublicence.
+#
+# This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
+# the utmost extent permitted by applicable law, neither express nor
+# implied; without malicious intent or gross negligence. In no event
+# may a licensor, author or contributor be held liable for indirect,
+# direct, other damage, loss, or other issues arising in any way out
+# of dealing in the work, even if advised of the possibility of such
+# damage or existence of a defect, except proven that it results out
+# of said person’s immediate fault when using the work as intended.
+#-
+# Syntax: ./staticHostsGen [-]
+#      -: output to stdout instead of /etc/hosts
+
+DNS="dnsbonn"
+DNIP="172.26.0.64"
+HN="backup-bonn.lan.tarent.de"
+HIP="172.26.0.152"
+ZONES="{,lan.}tarent.de"
+
+# check if dns is alive and responding with sense
+if [[ $(mirhost $HN $DNIP) != \
+    "$HN       A       $HIP" ]]; then
+       print -u2 "DNS on $DNS ($DNIP) is dead."
+       exit 1
+fi
+
+if ! T=$(mktemp -d /tmp/staticHostsGen.XXXXXXXXXX); then
+       print -u2 Cannot create temporary directory.
+       exit 2
+fi
+
+cd "$T"
+
+# read out DNS, write into files
+for i in $ZONES; do
+       mirhost -l $i $DNIP
+done | while read lhs type rhs; do
+       # skip all except A (IPv4 address) and AAAA (IPv6 address) records
+       [[ $type = @(A|AAAA) ]] || continue
+       # skip illegal (in /etc/hosts) wildcard records
+       [[ $lhs = *\** ]] && continue
+       # note for later
+       print -r -- ${lhs%.} >>$rhs
+done
+
+# check if we wrote anything at all
+for i in *; do
+       [[ -e $i && -s $i ]] && break
+       print -u2 DNS does not give answers.
+       cd /
+       rm -rf "$T"
+       exit 3
+done
+
+# create new hosts file
+(
+       # append read-out IPv4 entries, sorted numerically
+       for i in *.*.*.*; do
+               [[ -e $i && -s $i ]] || continue
+               print -r -- $i $(sort <$i)
+       done | sort -t. -nk1,1 -k2,2 -k3,3 -k4,4
+       # append read-out non-IPv4 entries, sorted ASCIIbetically ☹
+       for i in *; do
+               [[ $i = *.*.*.* ]] && continue
+               [[ -e $i && -s $i ]] || continue
+               print -r -- $i $(sort <$i)
+       done
+) | if [[ $1 = - ]]; then
+       cat
+else
+       cat /etc/hosts.template - >/etc/hosts
+fi
+cd /
+rm -rf "$T"
+exit 0
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/posix/sysadmin/fw-off b/posix/sysadmin/fw-off
new file mode 100644 (file)
index 0000000..e35a967
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+# $Id: Users/ᚦᚢᚱᛋᛏᛅᛁᚾ/misc/fw-off 2766 2012-02-23 08:14:30Z tglase $
+#-
+# Flush all ipfwadm^Wipchains^Wiptables^Wnetfilter rules.
+
+set -e
+printf '%s' 'Stopping firewall and allowing everyone...'
+iptables -F
+iptables -X
+iptables -t nat -F
+iptables -t nat -X
+iptables -t mangle -F
+iptables -t mangle -X
+iptables -P INPUT ACCEPT
+iptables -P FORWARD ACCEPT
+iptables -P OUTPUT ACCEPT
+echo " done"
diff --git a/posix/sysadmin/fw-on b/posix/sysadmin/fw-on
new file mode 100644 (file)
index 0000000..8965dd0
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+# $Id: Users/ᚦᚢᚱᛋᛏᛅᛁᚾ/misc/fw-on 2766 2012-02-23 08:14:30Z tglase $
+#-
+# Flush all ipfwadm^Wipchains^Wiptables^Wnetfilter rules.
+# Then block all on tcp/80 and all-but-ultimate-marmelade on tcp/443.
+# Use this for Evolvis major upgrades on AurISP machines, etc.
+
+set -e
+cd "$(dirname "$0")"
+./fw-off
+printf '%s' 'Disabling everyone but tarent...'
+iptables -A INPUT -p tcp -m tcp --dport 80 -j REJECT
+iptables -A INPUT -p tcp -m tcp --dport 443 -s 94.198.62.204/32 -j ACCEPT
+iptables -A INPUT -p tcp -m tcp --dport 443 -j REJECT
+echo " done"
diff --git a/posix/sysadmin/whoswaps b/posix/sysadmin/whoswaps
new file mode 100644 (file)
index 0000000..ff49e58
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $Id: whoswaps 4266 2014-12-29 11:28:16Z tglase $
+#-
+# Quelle: http://sven.stormbind.net/blog/posts/ocol_who_is_sitting_in_my_swap_space/
+
+awk 'BEGIN{printf "%-7s %-16s %s (KB)\n", "PID","COMM","VMSWAP"} {
+if($1 == "Name:"){n=$2}
+if($1 == "Pid:"){p=$2}
+if($1 == "VmSwap:" && $2 != "0"){printf "%-7s %-16s %s\n", p,n,$2 | "sort -nrk3"}
+}' /proc/*/status