portd exhaustion fix

This commit is contained in:
SkyperTHC 2022-10-19 06:29:18 +01:00
parent cb213b5316
commit e4a62fc9dd
No known key found for this signature in database
GPG Key ID: A9BD386DF9113CD6
5 changed files with 29 additions and 11 deletions

@ -1,4 +1,4 @@
VER := 0.3.3c
VER := 0.3.3d
all:
make -C guest

@ -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
}

@ -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

@ -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
}

@ -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[*]}"