diff --git a/Makefile b/Makefile index 8806e3c..aa58ef0 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VER := 0.3.3c +VER := 0.3.3d all: make -C guest diff --git a/encfsd/encfsd.sh b/encfsd/encfsd.sh index 9893fe5..fc636c8 100755 --- a/encfsd/encfsd.sh +++ b/encfsd/encfsd.sh @@ -25,21 +25,25 @@ do_exit_err() xmkdir() { + [[ -z $1 ]] && return 255 [[ -d "$1" ]] && return mkdir "$1" } # [name] [secdir] [rawdir] +# Return 1 when already mounted. encfs_mkdir() { local name local secdir + local rawdir name="$1" secdir="$2" + rawdir="$3" [[ -d "${secdir}" ]] && mountpoint "${secdir}" >/dev/null && { echo "[encfs-${name}] Already mounted." - [[ ! -e "${secdir}/${MARK_FN}" ]] && return 0 + [[ ! -e "${secdir}/${MARK_FN}" ]] && return 1 ERR "[encfs-${name}] Mounted but markfile exist showing not encrypted." return 255 } @@ -72,8 +76,6 @@ encfs_mount() opts="$5" info="$6" - # is_tracked "${l}" && return 0 # Already mounted. Success. - [[ ! -e "${secdir}/${MARK_FN}" ]] && { echo "THIS-IS-NOT-ENCRYPTED *** DO NOT USE *** " >"${secdir}/${MARK_FN}" || { BAD 0 "Could not create Markfile"; return 255; } } # local cpid @@ -123,6 +125,12 @@ load_limits() [[ -f "/config/db/db-${lid}/limits.conf" ]] && eval "$(grep ^SF_ "/config/db/db-${lid}/limits.conf")" } +# [name] [reqid] +mount_done() +{ + redis-cli -h sf-redis RPUSH "encfs-${1}-${2}" "OK" >/dev/null +} + redis_loop_forever() { local secdir @@ -153,8 +161,11 @@ redis_loop_forever() secdir="/encfs/sec/user-${name}" rawdir="/encfs/raw/user/user-${name}" - encfs_mkdir "${name}" "${secdir}" "${rawdir}" || return + encfs_mkdir "${name}" "${secdir}" "${rawdir}" + [[ $? -eq 1 ]] && mount_done "${name}" "${reqid}" + [[ $? -ne 0 ]] && continue + # HERE: Not yet mounted. # Set XFS limits load_limits "${name}" [[ -n $SF_USER_FS_INODE_MAX ]] || [[ -n $SF_USER_FS_BYTES_MAX ]] && { @@ -183,8 +194,7 @@ redis_loop_forever() } # Success. Tell the guest that EncFS is ready (newly mounted or was mounted) - # prints "1" to stdout. - redis-cli -h sf-redis RPUSH "encfs-${name}-${reqid}" "OK" >/dev/null + mount_done "${name}" "${reqid}" done } diff --git a/encfsd/portd.sh b/encfsd/portd.sh index eab29d0..586e182 100755 --- a/encfsd/portd.sh +++ b/encfsd/portd.sh @@ -201,6 +201,7 @@ remport_provider() lid="$1" provider="$2" + [[ "${provider,,}" != "cryptostorm" ]] && return shift 2 [[ ${#@} -lt 1 ]] && return @@ -214,6 +215,10 @@ remport_provider() # DELIPPORTS+=($@) docker exec "sf-${provider,,}" /sf/bin/rportfw.sh delipports "$@" + # Might have encountered an error in cmd_fillstock() and remove the provider. + # Add provider back. This will trigger a re-fill eventuallly. + redr SADD portd:providers "${provider}" >/dev/null + # Delete from assgned-$provider list the specifuc IPPORT local ipport local members diff --git a/host/fs-root/bin/segfaultsh b/host/fs-root/bin/segfaultsh index 12e7038..4f53641 100755 --- a/host/fs-root/bin/segfaultsh +++ b/host/fs-root/bin/segfaultsh @@ -288,10 +288,14 @@ print_goodbye() [[ -z $IS_PTY ]] && return # Restricted shell (-r) wont let us redirect stderr - use a bash-exec trick - n="$(bash -c "docker exec \"lg-${LID}\" pgrep . 2>/dev/null|wc -l")" + # n="$(bash -c "docker exec \"lg-${LID}\" pgrep . 2>/dev/null|wc -l")" + + n=$(IFS=$'\n' n=($(docker top "lg-${LID}" -o pid )); echo "${#n[@]}") + [[ ! $n -gt 1 ]] && n=1 + ((n--)) + DEBUGF "Processes running: $n" if [[ "$n" -gt 2 ]]; then - # echo -e "Number of processes running: ${CDY}$((n-2))${CN}" # Display the running processes str="process is" [[ "$n" -gt 3 ]] && str="processes are" @@ -371,7 +375,6 @@ mk_hostname() SF_HOSTNAME="${english[$m]}" SF_HOSTNAME+="${english[$n]}" - DEBUGF "SF_HOSTNAME=$SF_HOSTNAME, SF_NUM=${SF_NUM}, NUM=$NUM" unset NUM unset english } diff --git a/sfbin/rportfw.sh b/sfbin/rportfw.sh index 30c7c0e..79a3ee0 100755 --- a/sfbin/rportfw.sh +++ b/sfbin/rportfw.sh @@ -170,7 +170,7 @@ cmd_moreports() [[ $members_num -ge $req_num ]] && break done - # Could be a temporary failure of curl (200) or fatal (255) + # Could be a temporary failure of curl (200) or fatal (255, out of ports) [[ $members_num -le 0 ]] && return "$err" echo "${members[*]}"