Merge branch 'master' of /srv/git/myshellconfig

This commit is contained in:
Jakobus Schürz 2021-02-26 20:01:06 +01:00
commit 7fdd1bc3e2
11 changed files with 226 additions and 30 deletions

1
.gitignore vendored
View file

@ -7,7 +7,6 @@ logs
*.swp
*.orig
serverconfig.local.conf
bashrc_local
.local_scripts
.git-token
.last_update_submodules

View file

@ -11,7 +11,6 @@
# set some variables to defaults, if not set in .bashrc
[ -z ${SSHS+x} ] && export SSHS=false
[ -z ${STARTTMUX+x} ] && export STARTTMUX=false
# check if we are a interactive shell
# https://guide.bash.academy/expansions/
@ -204,8 +203,8 @@ EOF
SCRIPTEXIT
# Start tmux if not defined as STARTTMUX in bashrc
logdebug "start tmux ${STARTTMUXDEFAULT} - ${STARTTMUXDEFAULT-$STARTTMUX}"
if ${STARTTMUXDEFAULT-$STARTTMUX} ; then
logdebug "start tmux ${STARTTMUXDEFAULT} - ${STARTTMUXREMOTEDEFAULT} - ${STARTTMUX-$STARTTMUXDEFAULT}"
if ${STARTTMUX-$STARTTMUXDEFAULT} ; then
cat << EOF
"User: $USER - $UID"

View file

@ -45,35 +45,37 @@ while [ $# -gt 0 ]; do
shift
;;
-r|--force-repo-update)
dosubmodupdate="true"
dorepomodupdate="true"
shift
;;
-s|--force-submodules-update)
dosubmodupdate="true"
shift
;;
--)
shift
break
;;
*)
echo "1: $1"
PRE=""
echo bla
shift
;;
esac
done
# If TAG is set, checkout is always headless.
[ -z "${MSC_GIT_TAG:+x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export PRE=""; }
# If MSC_GIT_TAG is set, checkout is always headless.
logwarn "git PRE: ${PRE}"
[ -z "${MSC_GIT_TAG:+x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export PRE=""; echo "DEBUG"; }
logwarn "git PRE: ${PRE}"
# Output
#echo -n " remote: ${MSC_GIT_REMOTE_NAME}, branch: ${MSC_GIT_BRANCH}: "
# Check for updates in submodules only if last check was INTERVALL hours in the past
#if [ $(cat ${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules 2>/dev/null || echo 0 ) \
[ -z "${MSC_GIT_UPD_SUBMOD_STATFILE+x}" ] && export MSC_GIT_UPD_SUBMOD_STATFILE="${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules"
[ -z "${MSC_GIT_UPD_REPO_STATFILE+x}" ] && export MSC_GIT_UPD_REPO_STATFILE="${MSC_BASE%/}${MSC_BASE:+/}.last_update_repo"
if [ $(stat --printf %Y ${MSC_GIT_UPD_SUBMOD_STATFILE} 2>/dev/null || echo 0 ) \
-lt $(date --date="${MSC_GIT_SUBMODULES_UPDATE_INTERVALL-${MSC_GIT_SUBMODULES_UPDATE_INTERVALL_DEFAULT}} hours ago" "+%s") \
-a ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true"
fi
[ -z "${MSC_GIT_UPD_SUBMOD_STATFILE+x}" ] && export MSC_GIT_UPD_SUBMOD_STATFILE="${MSC_BASE%/}${MSC_BASE:+/}.last_update_submodules"
if [ $(stat --printf %Y ${MSC_GIT_UPD_REPO_STATFILE} 2>/dev/null || echo 0 ) \
-lt $(date --date="${MSC_GIT_REPO_UPDATE_INTERVALL-${MSC_GIT_REPO_UPDATE_INTERVALL_DEFAULT}} hours ago" "+%s") \
@ -81,6 +83,12 @@ if [ $(stat --printf %Y ${MSC_GIT_UPD_REPO_STATFILE} 2>/dev/null || echo 0 ) \
[ -z "${dorepoupdate+x}" ] && dorepoupdate="true"
fi
if [ $(stat --printf %Y ${MSC_GIT_UPD_SUBMOD_STATFILE} 2>/dev/null || echo 0 ) \
-lt $(date --date="${MSC_GIT_SUBMODULES_UPDATE_INTERVALL-${MSC_GIT_SUBMODULES_UPDATE_INTERVALL_DEFAULT}} hours ago" "+%s") \
-a ${MSC_GIT_SUBMODULES_UPDATE-${MSC_GIT_SUBMODULES_UPDATE_DEFAULT-true}} ]; then
[ -z "${dosubmodupdate+x}" ] && dosubmodupdate="true"
fi
#echo $SGIT fetch ${MSC_GIT_REMOTE_NAME} -p 1>&2
if $dorepoupdate; then
loginfo "fetch repo${dosubmodupdate:+ and submodules}"
@ -94,7 +102,7 @@ if $dorepoupdate; then
cat << EOF >> "${MSC_LOGFILE}"
no changes in local repo
$SGIT checkout repo ${PRE}${PRE:+/}${MSC_GIT_BRANCH}
EOF
EOF
$SGIT checkout ${PRE}${PRE:+/}${MSC_GIT_BRANCH} 1>>"${MSC_LOGFILE}" 2>>"${MSC_LOGFILE}"|| { gitupdateend; exit 2; }
$SGIT merge FETCH_HEAD 1>>"${MSC_LOGFILE}" 2>>"${MSC_LOGFILE}"|| { gitupdateend; exit 3; }
touch $MSC_GIT_UPD_REPO_STATFILE

130
bin/trashmail Executable file
View file

@ -0,0 +1,130 @@
#!/bin/bash
# creates trash email for registration for online-services
# email is hashed from domain of service + login-username from linux-system
# or only unhashed service-domain
# this created email-address is added to LDAP target email als dcMailAlias
# also added to pass passwordmanager of user
[ -e ${MSC_BASE}/defaults.conf ] && . ${MSC_BASE}/defaults.conf
LDAP_HOST=${LDAP_HOST_DEFAULT}
BIND_DN=${LDAP_ADMIN_BIND_DN}
PASS_ID=${PASS_ID_LDAP_ADMIN}
OWN_DOMAIN=${TRASHMAIL_OWN_DOMAIN_DEFAULT}
TARGET_MAIL=${TRASHMAIL_TARGET_MAIL_DEFAULT}
HASHED_DEFAULT=${TRASHMAIL_HASHED_DEFAULT}
set -- $(getopt -u -o fh --long force,hashed,not-hashed -- "$@" )
while : ; do
case $1 in
-n|--not-hashed)
HASHED=false
shift
;;
-h|--hashed)
HASHED=true
shift
;;
-f|--force)
FORCE=true
shift
;;
--)
shift
break
;;
*)
wrong argument $1
shift
continue
;;
esac
done
URL=$1
case $URL in
http*)
DEST_DOMAIN=$(echo $URL|awk -F/ '{print $3}')
;;
[a-zA-Z]*)
DEST_DOMAIN=${URL,,}
;;
*)
logwarn "$URL is no regular url"
exit 1
;;
esac
echo "Create a trashmail-address for ${DEST_DOMAIN}" >&2
if ${HASHED:-$HASHED_DEFAULT}; then
TRASHUSER="$(echo ${DEST_DOMAIN}${USER}|md5sum -|awk '{print $1}')"
else
TRASHUSER=${DEST_DOMAIN}
fi
TRASHMAIL=${TRASHUSER}@${OWN_DOMAIN}
echo $TRASHMAIL
PASS_ENTRY="${PASS_PREFIX%/}${PASS_PREFIX:+/}${DEST_DOMAIN}/${TRASHMAIL}"
set -x
cat << EOF |ldapmodify -Z -H ldap://${LDAP_HOST} -D ${BIND_DN} -x -w $(pass ${PASS_ID}|head -n 1)
dn: dcSubMailAddress=${TARGET_MAIL},ou=mailaccounts,dc=schuerz,dc=at
changetype: modify
add: dcMailAlternateAddress
dcMailAlternateAddress: ${TRASHMAIL}
EOF
if [ $? -gt 0 ]; then
echo pass find ${PASS_ENTRY}
pass find ${TRASHMAIL}
pass find ${TRASHMAIL}|grep -v "Search Terms"
case $? in
1)
# returncode 1 from grep means, no line selected. so no entry exists, create new one
echo "TEST1"
CREATE=true
;;
0)
echo FORCE: ${FORCE-false}
if ${FORCE-false} ; then
CREATE=true
else
echo "Current password for ${PASS_ENTRY} is $(pass ${PASS_ENTRY} |head -n1)."
read -p "Overwrite? [Y|n]: "
echo ""
case $REPLY in
y|Y)
CREATE=true
;;
*)
CREATE=false
;;
esac
fi
;;
*)
echo "Something went wrong"
exit 2
;;
esac
else
CREATE=true
fi
if ${CREATE-false}; then
cat << EOF |pass insert -m ${PASS_ENTRY}
$(pwgen -y 50 1)
email: ${TRASHMAIL}
login: ${TRASHUSER}
url: ${URL}
comment: trashemail autogenerated, delete, when delete account there
EOF
fi
set +x
#pass git commit "${PASS_ENTRY}"
pass -c ${PASS_ENTRY}

View file

@ -13,3 +13,12 @@ export MSC_LOGLEVEL_DEFAULT="INFO"
export MSC_FILELOGLEVEL_DEFAULT="DEBUG"
export LOGLEVEL_DEFAULT="${MSC_LOGLEVEL_DEFAULT}"
export FILELOGLEVEL_DEFAULT="${MSC_FILELOGLEVEL_DEFAULT}"
export STARTTMUXDEFAULT=false
export STARTTMUXREMOTEDEFAULT=true
export LDAP_HOST_DEFAULT=ldap.schuerz.at
export LDAP_ADMIN_BIND_DN=cn=admin,dc=schuerz,dc=at
export PASS_ID_LDAP_ADMIN="LDAP/binddn-admin"
export TRASHMAIL_OWN_DOMAIN_DEFAULT=schuerz.at
export TRASHMAIL_TARGET_MAIL_DEFAULT=wertstoffe@xundeenergie.at
export TRASHMAIL_HASHED_DEFAULT=true

24
defaults.conf.sample Normal file
View file

@ -0,0 +1,24 @@
### GIT ####
export MSC_GIT_REPO_UPDATE_DEFAULT=true
export MSC_GIT_REPO_UPDATE_INTERVALL_DEFAULT=48 #intervall in hours
export MSC_GIT_SUBMODULES_UPDATE_DEFAULT=true
export MSC_GIT_SUBMODULES_UPDATE_INTERVALL_DEFAULT=196 #intervall in hours
export MSC_GIT_SUBMODULES_SERVER_DEFAULT="git://github.com/"
export MSC_GIT_CHECKOUTSCRIPT_OPTIONS_DEFAULT="-h"
export MSC_GIT_TIMEOUT_DEFAULT=5s
export MSC_GIT_CHECKOUT_TIMEOUT_DEFAULT=20s
### LOGGING ###
# Possible loglevel-values: ERROR, WARN, INFO, DEBUG, TRACE
export MSC_LOGLEVEL_DEFAULT="INFO"
export MSC_FILELOGLEVEL_DEFAULT="DEBUG"
export LOGLEVEL_DEFAULT="${MSC_LOGLEVEL_DEFAULT}"
export FILELOGLEVEL_DEFAULT="${MSC_FILELOGLEVEL_DEFAULT}"
export STARTTMUXDEFAULT=false
export STARTTMUXREMOTEDEFAULT=true
export LDAP_HOST_DEFAULT=ldap.example.com
export LDAP_ADMIN_BIND_DN=cn=admin,dc=example,dc=com
export PASS_ID_LDAP_ADMIN="LDAP/binddn-admin"
export TRASHMAIL_OWN_DOMAIN_DEFAULT=example.com
export TRASHMAIL_TARGET_MAIL_DEFAULT=user@example.com
export TRASHMAIL_HASHED_DEFAULT=true

View file

@ -335,10 +335,13 @@ sshmyshellconfig() {
echo
echo cleanup from old config
rm -rf ~/server-config && echo rm -rf ~/server-config
echo git clone
echo mkdir -p ~/.local
mkdir -p ~/.local
#echo git clone
echo git clone --recurse-submodules $MSC_GIT_REMOTE \${HOME}/${MSC_SUBPATH}
git clone --recurse-submodules $MSC_GIT_REMOTE \${HOME}/${MSC_SUBPATH}
date "+%s" > \${HOME}/${MSC_SUBPATH}/.last_update_submodules
date "+%s" > \${HOME}/${MSC_SUBPATH}/.last_update_repo
# date "+%s" > \${HOME}/${MSC_SUBPATH}/.last_update_repo
EOF
EXIT
@ -828,7 +831,7 @@ token(){
# token -r|-f|--reload-token <identity> will remove token from agent and add it again (if plugged off and plugged in again
# startagent -t $@
loadagent $@
loginfo "$(ssh-add -s $PKCS11_MODULE)"
loginfo "$(ssh-add -s $PKCS11_MODULE || { ssh-add -e $PKCS11-MODULE; ssh-add -s $PKCS11_MODULE; } )"
loginfo "$(ssh-add -l)"

View file

@ -79,7 +79,7 @@ if ! $SSHS; then
[ -z "${MSC_GIT_REMOTE_NAME+x}" ] && export MSC_GIT_REMOTE_NAME=origin
[ -z "${MSC_GIT_BRANCH+x}" ] && export MSC_GIT_BRANCH=master
# If TAG is set, checkout is always headless.
[ -z "${MSC_GIT_TAG:+x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export MSC_GIT_CHECKOUTSCRIPT_OPTIONS="-h"; }
[ -z "${MSC_GIT_TAG:-x}" ] || { export MSC_GIT_BRANCH=${MSC_GIT_TAG}; export MSC_GIT_CHECKOUTSCRIPT_OPTIONS="-h"; }
#GIT_SSH_PATH="/srv/repos"

View file

@ -21,6 +21,14 @@ esac
# Load default values, functions, aliases for myshellconfig
if ! $SSHS; then
######################################################################################
# ls is not in color on all systems
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
#######################################################################################
# User specific aliases and function
echo "notmpconf"
if [ -e ${MSC_BASE}/functions.sh ]; then
. ${MSC_BASE}/functions.sh
else
@ -29,13 +37,6 @@ if ! $SSHS; then
######################################################################################
# ls is not in color on all systems
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
#######################################################################################
# User specific aliases and function
if [ -d "${MSC_BASE}/bin" ] ; then
@ -80,15 +81,38 @@ if ! $SSHS; then
#cd ${HOME}
# Start tmux if not defined as STARTTMUX in bashrc
if test ! $TMUX && test $SSH_TTY && test $TERM != screen && test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
STARTTMUXDEFAULT=true
logwarn -n "attach tmux?"
logwarn "TMUX: $TMUX"
logwarn "SSH_TTY: $SSH_TTY"
logwarn "TERM: $TERM"
logwarn "tmux@${USER}: $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? )"
if test $SSH_TTY; then
logwarn "i am remote"
if test ! $TMUX && test $TERM != screen; then
logwarn "no screen"
# if test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
if tmux has-session -t User || tmux has-session -t "${USER}"; then
logwarn "tmux@${USER} is running"
STARTTMUXDEFAULT=${STARTTMUXREMOTEDEFAULT}
fi
fi
fi
# if test ! $TMUX && test $SSH_TTY && test $TERM != screen && test $(systemctl status tmux@${USER}.service 1>/dev/null 2>&1; echo $? ) -eq 0; then
# : # STARTTMUXDEFAULT=${STARTTMUXREMOTEDEFAULT}
# logwarn "TEST1"
# else
# logwarn "TEST2"
# STARTTMUXDEFAULT=${STARTTMUXREMOTEDEFAULT}
# fi
logwarn "${STARTTMUXDEFAULT}"
unset -f pathmunge
else
# run with temporary config
echo "tmpconf"
case $TERM in
*screen*)
loginfo BASHRC: $BASHRC -> source it

@ -1 +1 @@
Subproject commit 7c59902f64dcd7ea356e891274b21144d1ea5948
Subproject commit 1b1b8098419daacb92ca401ad6ee0ca6894a40ca

@ -1 +1 @@
Subproject commit 6def2f0a8278410e6a908c491fd428b870d6516e
Subproject commit c01977d027de854c6a85ed5c57915a7e8848f4b9