Initial commit
This commit is contained in:
commit
96f78957d1
1 changed files with 115 additions and 0 deletions
115
nstart.zsh
Executable file
115
nstart.zsh
Executable file
|
|
@ -0,0 +1,115 @@
|
|||
#!/bin/zsh
|
||||
|
||||
spinner() {
|
||||
local pid=$1
|
||||
local text=$2
|
||||
local -a frames=( '⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏' )
|
||||
local i=1
|
||||
|
||||
while kill -0 "$pid" 2>/dev/null; do
|
||||
printf "\r%s %s" "${frames[$i]}" "$text"
|
||||
(( i = i % $#frames + 1 ))
|
||||
sleep 0.08
|
||||
done
|
||||
}
|
||||
|
||||
print_numbered_list() {
|
||||
local i
|
||||
local -a items=( "${(@P)1}" )
|
||||
for (( i=1; i <= ${#items}; i++ )); do
|
||||
items[$i]="%B[$i]%b$items[$i]"
|
||||
done
|
||||
print -P -C 4 "${items[@]}"
|
||||
}
|
||||
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
|
||||
fi
|
||||
|
||||
connections=( ${(f)"$(nmcli --terse --fields NAME connection show)"} )
|
||||
|
||||
typeset -T DEFAULT_CONNECTIONS_NM default_con
|
||||
if [[ "$default_con" == "" ]]; then
|
||||
#if you can't export zsh array to environment, replace this fallback values
|
||||
default_con=(home wg0 work wifi iPhone)
|
||||
fi
|
||||
|
||||
for (( i=$#default_con; i>=1; i-- )); do
|
||||
local flag=false
|
||||
|
||||
for con in $connections; do
|
||||
if [[ "$default_con[$i]" == "$con" ]]; then
|
||||
flag=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$flag" == "false" ]]; then
|
||||
default_con[$i]=()
|
||||
fi
|
||||
done
|
||||
|
||||
print -n "Found"
|
||||
for (( i=1; i <= $#default_con; i++ )); do
|
||||
print -nP " %B[$i]%b$default_con[$i]"
|
||||
done
|
||||
print " from default connections"
|
||||
|
||||
connection_number=0
|
||||
connection_promt=" Connect to [1]? Otherwise enter connection's number (1-$#default_con)
|
||||
or 'n' for choosing from all connections [1/n]: "
|
||||
read -r "connection_number?${connection_promt}"
|
||||
|
||||
connection_to_run="None"
|
||||
|
||||
if [[ -z "$connection_number" ]]; then
|
||||
connection_to_run=$default_con[1]
|
||||
elif (( connection_number )); then
|
||||
connection_to_run=$default_con[$connection_number]
|
||||
elif [[ "$connection_number" == "n" ]]; then
|
||||
print "Select connections from below:"
|
||||
print_numbered_list connections
|
||||
|
||||
read -r "connection_number_?
|
||||
Enter a number: "
|
||||
connection_to_run=$connections[$connection_number_]
|
||||
else
|
||||
connection_to_run=$connection_number
|
||||
fi
|
||||
|
||||
nmcli c u "$connection_to_run" 1> /dev/null 2>&1 &
|
||||
nmcli_pid=$!
|
||||
|
||||
spinner "$nmcli_pid" "Connecting to '$connection_to_run'..."
|
||||
|
||||
if wait "$nmcli_pid"; then
|
||||
print -P "\r%E%F{green}✔%f Connected to '$connection_to_run'"
|
||||
else
|
||||
print -P "\r%F{red}✘%fFailed to connect to '$connection_to_run'"
|
||||
fi
|
||||
|
||||
|
||||
## Starting xray proxy
|
||||
|
||||
#checking if xray running
|
||||
if pgrep xray 1>/dev/null; then
|
||||
print "Xray is running already. No need in duplication."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
if [[ -n "$XRAY_CONFIG_FILE" ]]; then
|
||||
print "\$XRAY_CONFIG_FILE is defined. Using this."
|
||||
else
|
||||
print "\$XRAY_CONFIG_FILE is not defined. Write path to xray's config file:"
|
||||
read -t 60 XRAY_CONFIG_FILE
|
||||
if [[ ! -n "$XRAY_CONFIG_FILE" ]]; then
|
||||
print -P "Timeout for promting XRAY_CONFIG_FILE.\nScript exiting."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
print -n "Starting quietly xray with config '$XRAY_CONFIG_FILE'..."
|
||||
xray run -c $XRAY_CONFIG_FILE 1>/dev/null 2>/dev/null &
|
||||
print -P "\r%E%B%F{green}✔%f%b xray has started"
|
||||
exit 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue