diff --git a/.gitignore b/.gitignore index 9aa67e1..1232c91 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ logs *.swp *.orig serverconfig.local.conf -bashrc_local .local_scripts .git-token .last_update_submodules diff --git a/bashrc_add b/bashrc_add index 70e2c4b..6e5c37e 100755 --- a/bashrc_add +++ b/bashrc_add @@ -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" diff --git a/bin/git-myshellconfig-checkout b/bin/git-myshellconfig-checkout index bbd22fb..c1e8bc9 100755 --- a/bin/git-myshellconfig-checkout +++ b/bin/git-myshellconfig-checkout @@ -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 diff --git a/bin/trashmail b/bin/trashmail new file mode 100755 index 0000000..5048060 --- /dev/null +++ b/bin/trashmail @@ -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} diff --git a/defaults.conf b/defaults.conf index 9f514cf..86b29b5 100644 --- a/defaults.conf +++ b/defaults.conf @@ -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 diff --git a/defaults.conf.sample b/defaults.conf.sample new file mode 100644 index 0000000..16ef84d --- /dev/null +++ b/defaults.conf.sample @@ -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 diff --git a/functions.sh b/functions.sh index dc34122..82ea30e 100755 --- a/functions.sh +++ b/functions.sh @@ -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 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)" diff --git a/myshell_git_sync b/myshell_git_sync index 2694e95..d349aaf 100644 --- a/myshell_git_sync +++ b/myshell_git_sync @@ -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" diff --git a/myshell_load_defaults b/myshell_load_defaults index cf93e44..10b2c57 100644 --- a/myshell_load_defaults +++ b/myshell_load_defaults @@ -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 diff --git a/tmux/plugins/tmux-themepack b/tmux/plugins/tmux-themepack index 7c59902..1b1b809 160000 --- a/tmux/plugins/tmux-themepack +++ b/tmux/plugins/tmux-themepack @@ -1 +1 @@ -Subproject commit 7c59902f64dcd7ea356e891274b21144d1ea5948 +Subproject commit 1b1b8098419daacb92ca401ad6ee0ca6894a40ca diff --git a/vim/pack/plugins/start/vim-airline b/vim/pack/plugins/start/vim-airline index 6def2f0..c01977d 160000 --- a/vim/pack/plugins/start/vim-airline +++ b/vim/pack/plugins/start/vim-airline @@ -1 +1 @@ -Subproject commit 6def2f0a8278410e6a908c491fd428b870d6516e +Subproject commit c01977d027de854c6a85ed5c57915a7e8848f4b9