diff --git a/back/lib/peer_add b/back/lib/peer_add index 861427c..e46d4de 100755 --- a/back/lib/peer_add +++ b/back/lib/peer_add @@ -109,11 +109,9 @@ address="${ipv4}/${IPV4_NET##*/},${ipv6}/${IPV6_NET##*/}" for_server_do() { [[ ${server_hostname:0:1} = \# ]] && return # Ignore comments server_hostname="${1}"; server_ipv4="${2}"; server_ipv6="${3}"; server_pubkey="${4}" - server_endpoint="${5}"; server_admin="${6}"; server_secret="${7}"; server_blocks="${8}" + server_endpoint="${5}"; server_admin="${6}"; server_secret="${7}" server_psk="$(/usr/bin/wg genpsk)" - # Print next line to stdout so it can be captured as the new global server_blocks - printf '%s\n[Peer] # %s.%s\nPublicKey=%s\nPresharedKey=%s\nAllowedIPs=%s\nEndpoint=%s\n' \ - "${server_blocks}" "${server_hostname}" "${TLD}" "${server_pubkey}" "${server_psk}" "${server_ipv4}/32,${server_ipv6}/128" "${server_endpoint}" + server_blocks="${server_blocks}\n[Peer] # ${server_hostname}.${TLD}\nPublicKey=${server_pubkey}\nPresharedKey=${server_psk}\nAllowedIPs=${server_ipv4}/32,${server_ipv6}/128\nEndpoint=${server_endpoint}\n" if [ "${server_hostname}" == "${LOCAL_SERVER}" ]; then # Add new user to local server if "${LIB_DIR}/wg_peer_add" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128"; then @@ -149,9 +147,9 @@ fi # Do the wireguard and tell the user server_blocks='' -{ while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_admin server_secret - do server_blocks="$(for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_admin}" "${server_secret}" "${server_blocks}")" \ - & [ $( jobs | wc -l ) -ge $( nproc ) ] && wait -done <"${SERVERS_FILE}" } && \ -wg_config="[Interface] # ${hostname}.${username}.${TLD}\nPrivateKey=${privkey:?}\nAddress=${address:?}\n${WG_DNS}\n${server_blocks:?}" \ -&& <<<"${wg_config}" "${LIB_DIR}/http_res" 202 +while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_admin server_secret + do for_server_do "${server_hostname}" "${server_ipv4}" "${server_ipv6}" "${server_pubkey}" "${server_endpoint}" "${server_admin}" "${server_secret}" & + [ $( jobs | wc -l ) -ge $( nproc ) ] && wait +done <"${SERVERS_FILE}"; wait +wg_config="[Interface] # ${hostname}.${username}.${TLD}\nPrivateKey=${privkey:?}\nAddress=${address:?}\n${WG_DNS}\n${server_blocks:?}" +<<<"${wg_config}" "${LIB_DIR}/http_res" 202