Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-13 22:03:09 +00:00

AI inspired fixes

This commit is contained in:
bol-van
2026-01-16 13:52:46 +03:00
parent 372c6748ca
commit 14359afb93
10 changed files with 56 additions and 33 deletions

View File

@@ -240,7 +240,7 @@ mdig_vars()
# $1 - ip version 4/6 # $1 - ip version 4/6
# $2 - hostname # $2 - hostname
hostvar=$(echo $2 | sed -e 's/[\./?&#@%*$^:~=!()+-]/_/g') hostvar=$(echo $2 | sed -e 's/[\./?&#@%*$^:~=!()+-]/_/g' | tr 'A-Z' 'a-z')
cachevar=DNSCACHE_${hostvar}_$1 cachevar=DNSCACHE_${hostvar}_$1
countvar=${cachevar}_COUNT countvar=${cachevar}_COUNT
eval count=\$${countvar} eval count=\$${countvar}
@@ -297,7 +297,7 @@ mdig_resolve_all()
mdig_vars "$1" "$sdom" mdig_vars "$1" "$sdom"
if [ -n "$count" ]; then if [ -n "$count" ]; then
n=0 n=0
while [ "$n" -le $count ]; do while [ "$n" -lt $count ]; do
eval ip__=\$${cachevar}_$n eval ip__=\$${cachevar}_$n
if [ -n "$ips__" ]; then if [ -n "$ips__" ]; then
ips__="$ips__ $ip__" ips__="$ips__ $ip__"
@@ -406,10 +406,10 @@ zp_already_running()
{ {
case "$UNAME" in case "$UNAME" in
CYGWIN) CYGWIN)
win_process_exists $PKTWSD || win_process_exists winws || win_process_exists goodbyedpi win_process_exists $PKTWSD || win_process_exists winws || win_process_exists winws2 || win_process_exists goodbyedpi
;; ;;
*) *)
process_exists $PKTWSD || process_exists tpws || process_exists nfqws process_exists $PKTWSD || process_exists tpws || process_exists nfqws || process_exists nfqws2
esac esac
} }
check_already() check_already()
@@ -633,11 +633,11 @@ curl_with_dig()
# $2 - domain name # $2 - domain name
# $3 - port # $3 - port
# $4+ - curl params # $4+ - curl params
local dom=$2 port=$3 local dom="$2" port=$3
local sdom suri ip local sdom suri ip
split_by_separator "$dom" / sdom suri split_by_separator "$dom" / sdom suri
mdig_resolve $1 ip $sdom mdig_resolve $1 ip "$sdom"
shift ; shift ; shift shift ; shift ; shift
if [ -n "$ip" ]; then if [ -n "$ip" ]; then
curl_with_subst_ip "$sdom" "$port" "$ip" "$@" curl_with_subst_ip "$sdom" "$port" "$ip" "$@"
@@ -652,12 +652,12 @@ curl_probe()
# $3 - port # $3 - port
# $4 - subst ip # $4 - subst ip
# $5+ - curl params # $5+ - curl params
local ipv=$1 dom=$2 port=$3 subst=$4 local ipv=$1 dom="$2" port=$3 subst=$4
shift; shift; shift; shift shift; shift; shift; shift
if [ -n "$subst" ]; then if [ -n "$subst" ]; then
curl_with_subst_ip $dom $port $subst "$@" curl_with_subst_ip "$dom" $port $subst "$@"
else else
curl_with_dig $ipv $dom $port "$@" curl_with_dig $ipv "$dom" $port "$@"
fi fi
} }
curl_test_http() curl_test_http()
@@ -668,7 +668,7 @@ curl_test_http()
# $4 - "detail" - detail info # $4 - "detail" - detail info
local code loc hdrt="${HDRTEMP}_${!:-$$}.txt" dom="$(tolower "$2")" local code loc hdrt="${HDRTEMP}_${!:-$$}.txt" dom="$(tolower "$2")"
curl_probe $1 $2 $HTTP_PORT "$3" -SsD "$hdrt" -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT "http://$2" -o /dev/null 2>&1 || { curl_probe $1 "$2" $HTTP_PORT "$3" -SsD "$hdrt" -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT "http://$2" -o /dev/null 2>&1 || {
code=$? code=$?
rm -f "$hdrt" rm -f "$hdrt"
return $code return $code
@@ -680,6 +680,7 @@ curl_test_http()
code=$(hdrfile_http_code "$hdrt") code=$(hdrfile_http_code "$hdrt")
[ "$code" = 301 -o "$code" = 302 -o "$code" = 307 -o "$code" = 308 ] && { [ "$code" = 301 -o "$code" = 302 -o "$code" = 307 -o "$code" = 308 ] && {
loc=$(hdrfile_location "$hdrt") loc=$(hdrfile_location "$hdrt")
split_by_separator "$dom" / dom
tolower "$loc" | grep -qE "^https?://.*$dom(/|$)" || tolower "$loc" | grep -qE "^https?://.*$dom(/|$)" ||
tolower "$loc" | grep -vqE '^https?://' || { tolower "$loc" | grep -vqE '^https?://' || {
echo suspicious redirection $code to : $loc echo suspicious redirection $code to : $loc
@@ -703,7 +704,7 @@ curl_test_https_tls12()
# $3 - subst ip # $3 - subst ip
# do not use tls 1.3 to make sure server certificate is not encrypted # do not use tls 1.3 to make sure server certificate is not encrypted
curl_probe $1 $2 $HTTPS_PORT "$3" $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.2 $TLSMAX12 "https://$2" -o /dev/null 2>&1 curl_probe $1 "$2" $HTTPS_PORT "$3" $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.2 $TLSMAX12 "https://$2" -o /dev/null 2>&1
} }
curl_test_https_tls13() curl_test_https_tls13()
{ {
@@ -712,7 +713,7 @@ curl_test_https_tls13()
# $3 - subst ip # $3 - subst ip
# force TLS1.3 mode # force TLS1.3 mode
curl_probe $1 $2 $HTTPS_PORT "$3" $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.3 $TLSMAX13 "https://$2" -o /dev/null 2>&1 curl_probe $1 "$2" $HTTPS_PORT "$3" $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME $CURL_OPT --tlsv1.3 $TLSMAX13 "https://$2" -o /dev/null 2>&1
} }
curl_test_http3() curl_test_http3()
@@ -721,7 +722,7 @@ curl_test_http3()
# $2 - domain name # $2 - domain name
# force QUIC only mode without tcp # force QUIC only mode without tcp
curl_with_dig $1 $2 $QUIC_PORT $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME_QUIC --http3-only $CURL_OPT "https://$2" -o /dev/null 2>&1 curl_with_dig $1 "$2" $QUIC_PORT $HTTPS_HEAD -Ss -A "$USER_AGENT" --max-time $CURL_MAX_TIME_QUIC --http3-only $CURL_OPT "https://$2" -o /dev/null 2>&1
} }
ipt_aux_scheme() ipt_aux_scheme()
@@ -990,7 +991,7 @@ curl_test()
if [ "$PARALLEL" = 1 ]; then if [ "$PARALLEL" = 1 ]; then
rm -f "${PARALLEL_OUT}"* rm -f "${PARALLEL_OUT}"*
for n in $(seq -s ' ' 1 $REPEATS); do for n in $(seq -s ' ' 1 $REPEATS); do
$1 "$IPV" $2 $3 "$4" >"${PARALLEL_OUT}_$n" & $1 "$IPV" "$2" $3 "$4" >"${PARALLEL_OUT}_$n" &
pids="${pids:+$pids }$!" pids="${pids:+$pids }$!"
done done
n=1 n=1
@@ -1009,7 +1010,7 @@ curl_test()
while [ $n -lt $REPEATS ]; do while [ $n -lt $REPEATS ]; do
n=$(($n+1)) n=$(($n+1))
[ $REPEATS -gt 1 ] && printf "[attempt $n] " [ $REPEATS -gt 1 ] && printf "[attempt $n] "
if $1 "$IPV" $2 $3 "$4" ; then if $1 "$IPV" "$2" $3 "$4" ; then
[ $REPEATS -gt 1 ] && echo 'AVAILABLE' [ $REPEATS -gt 1 ] && echo 'AVAILABLE'
else else
code=$? code=$?
@@ -1034,7 +1035,7 @@ ws_curl_test()
# $2 - test function # $2 - test function
# $3 - domain # $3 - domain
# $4,$5,$6, ... - ws params # $4,$5,$6, ... - ws params
local code ws_start=$1 testf=$2 dom=$3 local code ws_start=$1 testf=$2 dom="$3"
[ "$SIMULATE" = 1 ] && { [ "$SIMULATE" = 1 ] && {
n=$(random 0 99) n=$(random 0 99)
@@ -1050,7 +1051,7 @@ ws_curl_test()
shift shift
shift shift
$ws_start "$@" $ws_start "$@"
curl_test $testf $dom curl_test $testf "$dom"
code=$? code=$?
ws_kill ws_kill
return $code return $code
@@ -1060,11 +1061,11 @@ pktws_curl_test()
# $1 - test function # $1 - test function
# $2 - domain # $2 - domain
# $3,$4,$5, ... - nfqws/dvtws params # $3,$4,$5, ... - nfqws/dvtws params
local testf=$1 dom=$2 strategy code local testf=$1 dom="$2" strategy code
shift; shift; shift; shift;
echo - $testf ipv$IPV $dom : $PKTWSD ${WF:+$WF }${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }$@${PKTWS_EXTRA_POST:+ $PKTWS_EXTRA_POST}${PKTWS_EXTRA_POST_1:+ "$PKTWS_EXTRA_POST_1"}${PKTWS_EXTRA_POST_2:+ "$PKTWS_EXTRA_POST_2"}${PKTWS_EXTRA_POST_3:+ "$PKTWS_EXTRA_POST_3"}${PKTWS_EXTRA_POST_4:+ "$PKTWS_EXTRA_POST_4"}${PKTWS_EXTRA_POST_5:+ "$PKTWS_EXTRA_POST_5"}${PKTWS_EXTRA_POST_6:+ "$PKTWS_EXTRA_POST_6"}${PKTWS_EXTRA_POST_7:+ "$PKTWS_EXTRA_POST_7"}${PKTWS_EXTRA_POST_8:+ "$PKTWS_EXTRA_POST_8"}${PKTWS_EXTRA_POST_9:+ "$PKTWS_EXTRA_POST_9"} echo - $testf ipv$IPV $dom : $PKTWSD ${WF:+$WF }${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }$@${PKTWS_EXTRA_POST:+ $PKTWS_EXTRA_POST}${PKTWS_EXTRA_POST_1:+ "$PKTWS_EXTRA_POST_1"}${PKTWS_EXTRA_POST_2:+ "$PKTWS_EXTRA_POST_2"}${PKTWS_EXTRA_POST_3:+ "$PKTWS_EXTRA_POST_3"}${PKTWS_EXTRA_POST_4:+ "$PKTWS_EXTRA_POST_4"}${PKTWS_EXTRA_POST_5:+ "$PKTWS_EXTRA_POST_5"}${PKTWS_EXTRA_POST_6:+ "$PKTWS_EXTRA_POST_6"}${PKTWS_EXTRA_POST_7:+ "$PKTWS_EXTRA_POST_7"}${PKTWS_EXTRA_POST_8:+ "$PKTWS_EXTRA_POST_8"}${PKTWS_EXTRA_POST_9:+ "$PKTWS_EXTRA_POST_9"}
ws_curl_test pktws_start $testf $dom ${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }"$@"${PKTWS_EXTRA_POST:+ $PKTWS_EXTRA_POST}${PKTWS_EXTRA_POST_1:+ "$PKTWS_EXTRA_POST_1"}${PKTWS_EXTRA_POST_2:+ "$PKTWS_EXTRA_POST_2"}${PKTWS_EXTRA_POST_3:+ "$PKTWS_EXTRA_POST_3"}${PKTWS_EXTRA_POST_4:+ "$PKTWS_EXTRA_POST_4"}${PKTWS_EXTRA_POST_5:+ "$PKTWS_EXTRA_POST_5"}${PKTWS_EXTRA_POST_6:+ "$PKTWS_EXTRA_POST_6"}${PKTWS_EXTRA_POST_7:+ "$PKTWS_EXTRA_POST_7"}${PKTWS_EXTRA_POST_8:+ "$PKTWS_EXTRA_POST_8"}${PKTWS_EXTRA_POST_9:+ "$PKTWS_EXTRA_POST_9"} ws_curl_test pktws_start $testf "$dom" ${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }"$@"${PKTWS_EXTRA_POST:+ $PKTWS_EXTRA_POST}${PKTWS_EXTRA_POST_1:+ "$PKTWS_EXTRA_POST_1"}${PKTWS_EXTRA_POST_2:+ "$PKTWS_EXTRA_POST_2"}${PKTWS_EXTRA_POST_3:+ "$PKTWS_EXTRA_POST_3"}${PKTWS_EXTRA_POST_4:+ "$PKTWS_EXTRA_POST_4"}${PKTWS_EXTRA_POST_5:+ "$PKTWS_EXTRA_POST_5"}${PKTWS_EXTRA_POST_6:+ "$PKTWS_EXTRA_POST_6"}${PKTWS_EXTRA_POST_7:+ "$PKTWS_EXTRA_POST_7"}${PKTWS_EXTRA_POST_8:+ "$PKTWS_EXTRA_POST_8"}${PKTWS_EXTRA_POST_9:+ "$PKTWS_EXTRA_POST_9"}
code=$? code=$?
[ "$code" = 0 ] && { [ "$code" = 0 ] && {
@@ -1086,11 +1087,11 @@ xxxws_curl_test_update()
# $2 - test function # $2 - test function
# $3 - domain # $3 - domain
# $4,$5,$6, ... - nfqws2/dvtws2 params # $4,$5,$6, ... - nfqws2/dvtws2 params
local code xxxf=$1 testf=$2 dom=$3 local code xxxf=$1 testf=$2 dom="$3"
shift shift
shift shift
shift shift
$xxxf $testf $dom "$@" $xxxf $testf "$dom" "$@"
code=$? code=$?
[ $code = 0 ] && strategy="${strategy:-$@}" [ $code = 0 ] && strategy="${strategy:-$@}"
return $code return $code

View File

@@ -95,7 +95,7 @@ end_with_newline()
} }
trim() trim()
{ {
awk '{gsub(/^ +| +$/,"")}1' awk '{gsub(/^[ \t]+|[ \t]+$/,"")}1'
} }
split_by_separator() split_by_separator()
{ {
@@ -119,7 +119,7 @@ dir_is_not_empty()
# $1 - directory # $1 - directory
local n local n
[ -d "$1" ] || return 1 [ -d "$1" ] || return 1
n=$(ls "$1" | wc -c | xargs) n=$(ls -A "$1" | wc -c | xargs)
[ "$n" != 0 ] [ "$n" != 0 ]
} }
@@ -343,7 +343,7 @@ setup_md5()
{ {
[ -n "$MD5" ] && return [ -n "$MD5" ] && return
MD5=md5sum MD5=md5sum
exists $MD5 || MD5=md5 exists $MD5 || MD5="md5 -q"
} }
md5f() md5f()
@@ -394,9 +394,9 @@ shell_name()
process_exists() process_exists()
{ {
if exists pgrep; then if exists pgrep; then
pgrep ^$1$ >/dev/null pgrep "^$1$" >/dev/null
elif exists pidof; then elif exists pidof; then
pidof $1 >/dev/null pidof "$1" >/dev/null
else else
return 1 return 1
fi fi

View File

@@ -37,7 +37,7 @@ ask_list()
local M_DEFAULT local M_DEFAULT
eval M_DEFAULT="\$$1" eval M_DEFAULT="\$$1"
local M_ALL=$M_DEFAULT local M_ALL=$M_DEFAULT
local M="" m M_OLD local M="" m
[ -n "$3" ] && { find_str_in_list "$M_DEFAULT" "$2" || M_DEFAULT="$3" ;} [ -n "$3" ] && { find_str_in_list "$M_DEFAULT" "$2" || M_DEFAULT="$3" ;}

View File

@@ -256,7 +256,7 @@ check_system()
get_free_space_mb() get_free_space_mb()
{ {
df -m $PWD | awk '/[0-9]%/{print $(NF-2)}' df -m "$1" | awk '/[0-9]%/{print $(NF-2)}'
} }
get_ram_kb() get_ram_kb()
{ {
@@ -779,7 +779,9 @@ select_fwtype()
echo WARNING ! if you need large lists it may be necessary to fall back to iptables+ipset firewall echo WARNING ! if you need large lists it may be necessary to fall back to iptables+ipset firewall
} }
echo select firewall type : echo select firewall type :
ask_list FWTYPE "iptables nftables" "$FWTYPE" && write_config_var FWTYPE ask_list FWTYPE "iptables nftables" "$FWTYPE"
# always write config var to prevent auto discovery every time
write_config_var FWTYPE
} }
dry_run_nfqws_() dry_run_nfqws_()

View File

@@ -77,8 +77,7 @@ nft_rule_exists()
nft_add_rule ruletest "$2" nft_add_rule ruletest "$2"
rule=$(nft list chain inet $ZAPRET_NFT_TABLE ruletest | sed -n '3s/\t//gp') rule=$(nft list chain inet $ZAPRET_NFT_TABLE ruletest | sed -n '3s/\t//gp')
nft_flush_chain ruletest nft_flush_chain ruletest
local yes=$(nft list chain inet $ZAPRET_NFT_TABLE $1 | sed -n "s/^[\t]*$rule\$/1/p") nft list chain inet $ZAPRET_NFT_TABLE $1 | trim | grep -qxF "$rule"
[ -n "$yes" ]
} }
nft_del_all_chains_from_table() nft_del_all_chains_from_table()

View File

@@ -3149,6 +3149,10 @@ function rawsend_dissect_segmented(desync, dis, mss, options)
Sends dissect `dis` with automatic TCP segmentation based on MSS, applying `options.fooling` and `options.ipid`. Sends dissect `dis` with automatic TCP segmentation based on MSS, applying `options.fooling` and `options.ipid`.
The `ipid` is applied to each fragment. Segmentation is not possible for UDP and is not performed. The `ipid` is applied to each fragment. Segmentation is not possible for UDP and is not performed.
- if dis is nil, desync.dis is used.
- if mss is nil, desync.tcp_mss is used.
- if options is nil, options are created from desync.arg
### rawsend_payload_segmented ### rawsend_payload_segmented
``` ```

View File

@@ -3328,6 +3328,10 @@ function rawsend_dissect_segmented(desync, dis, mss, options)
Отправить диссект dis с автоматической tcp сегментацией на базе mss с применением `options.fooling` и `options.ipid`. Отправить диссект dis с автоматической tcp сегментацией на базе mss с применением `options.fooling` и `options.ipid`.
ipid применяется к каждому фрагменту. Для udp сегментация невозможна и не выполняется. ipid применяется к каждому фрагменту. Для udp сегментация невозможна и не выполняется.
- Если dis отсутствует, берется desync.dis.
- Если mss отсутствует, берется desync.tcp_mss.
- Если options отсутствуют, они создаются на базе desync.arg.
### rawsend_payload_segmented ### rawsend_payload_segmented
``` ```

13
files/fake/sip.bin Normal file
View File

@@ -0,0 +1,13 @@
REGISTER sip:192.168.1.1 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.2:42931;rport;branch=z9hG4bKPj3fd2e8713ffcd90c43f6ce69f6c98461
Max-Forwards: 50
From: <sip:703@192.168.1.1>;tag=ca565d7bd4e24a6d80c631d395ee117e
To: <sip:703@192.168.1.1>
Call-ID: dfec38302b8cea3d83c1452527c895c1
CSeq: 26139 REGISTER
User-Agent: MicroSIP/3.21.5
Contact: <sip:703@192.168.1.2:42931;ob>
Expires: 300
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Content-Length: 0

View File

@@ -288,7 +288,7 @@ ask_config_tmpdir()
echo /tmp in openwrt is tmpfs. on low RAM systems there may be not enough RAM to store downloaded files echo /tmp in openwrt is tmpfs. on low RAM systems there may be not enough RAM to store downloaded files
echo default tmpfs has size of 50% RAM echo default tmpfs has size of 50% RAM
echo "RAM : $(get_ram_mb) Mb" echo "RAM : $(get_ram_mb) Mb"
echo "DISK : $(get_free_space_mb) Mb" echo "DISK : $(get_free_space_mb "$EXEDIR/tmp") Mb"
echo select temp file location echo select temp file location
[ -z "$TMPDIR" ] && TMPDIR=/tmp [ -z "$TMPDIR" ] && TMPDIR=/tmp
ask_list TMPDIR "/tmp $EXEDIR/tmp" && { ask_list TMPDIR "/tmp $EXEDIR/tmp" && {

View File

@@ -2027,7 +2027,7 @@ bool make_writeable_dir()
char testfile[PATH_MAX]; char testfile[PATH_MAX];
snprintf(testfile,sizeof(testfile),"%s/test_XXXXXX",wrdir); snprintf(testfile,sizeof(testfile),"%s/test_XXXXXX",wrdir);
int fd = mkstemp(testfile); int fd = mkstemp(testfile);
if (fd>0) if (fd>=0)
{ {
close(fd); close(fd);
unlink(testfile); unlink(testfile);