@@ -67,5 +67,14 @@ Usage: /etc/init.d/frps {start|stop|restart|status|config|version}
|
||||
kcp_bind_port --> kcpBindPort
|
||||
etc..
|
||||
```
|
||||
|
||||
### [1.0.3] - 2024-06-16
|
||||
|
||||
#### Amendment
|
||||
* Amend function name to frps
|
||||
|
||||
#### Changed
|
||||
* Change curl common to get server ip from wget common
|
||||
|
||||
|
||||
|
||||
|
||||
66
generate-certs.sh
Normal file
66
generate-certs.sh
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 创建证书存放目录
|
||||
mkdir -p /etc/pki/tls/frp/ca
|
||||
mkdir -p /etc/pki/tls/frp/frps
|
||||
mkdir -p /etc/pki/tls/frp/frpc
|
||||
|
||||
# 创建 OpenSSL 配置文件
|
||||
cat > /etc/pki/tls/frp/my-openssl.cnf << EOF
|
||||
[ ca ]
|
||||
default_ca = CA_default
|
||||
[ CA_default ]
|
||||
x509_extensions = usr_cert
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
default_md = sha256
|
||||
default_keyfile = privkey.pem
|
||||
distinguished_name = req_distinguished_name
|
||||
attributes = req_attributes
|
||||
x509_extensions = v3_ca
|
||||
string_mask = utf8only
|
||||
[ req_distinguished_name ]
|
||||
[ req_attributes ]
|
||||
[ usr_cert ]
|
||||
basicConstraints = CA:FALSE
|
||||
nsComment = "OpenSSL Generated Certificate"
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid,issuer
|
||||
[ v3_ca ]
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid:always,issuer
|
||||
basicConstraints = CA:true
|
||||
EOF
|
||||
|
||||
# 生成默认 CA
|
||||
echo "====> Generating CA key and certificate"
|
||||
openssl genrsa -out /etc/pki/tls/frp/ca/ca.key 2048
|
||||
openssl req -x509 -new -nodes -key /etc/pki/tls/frp/ca/ca.key -subj "/CN=example.ca.com" -days 5000 -out /etc/pki/tls/frp/ca/ca.crt
|
||||
|
||||
# 生成服务器证书
|
||||
echo "====> Generating server key and certificate"
|
||||
openssl genrsa -out /etc/pki/tls/frp/frps/server.key 2048
|
||||
openssl req -new -sha256 -key /etc/pki/tls/frp/frps/server.key \
|
||||
-subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=server.com" \
|
||||
-reqexts SAN \
|
||||
-config <(cat /etc/pki/tls/frp/my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost,IP:${defIP}")) \
|
||||
-out /etc/pki/tls/frp/frps/server.csr
|
||||
openssl x509 -req -days 365 -sha256 \
|
||||
-in /etc/pki/tls/frp/frps/server.csr -CA /etc/pki/tls/frp/ca/ca.crt -CAkey /etc/pki/tls/frp/ca/ca.key -CAcreateserial \
|
||||
-extfile <(printf "subjectAltName=DNS:localhost,IP:${defIP}") \
|
||||
-out /etc/pki/tls/frp/frps/server.crt
|
||||
|
||||
# 生成客户端证书
|
||||
echo "====> Generating client key and certificate"
|
||||
openssl genrsa -out /etc/pki/tls/frp/frpc/client.key 2048
|
||||
openssl req -new -sha256 -key /etc/pki/tls/frp/frpc/client.key \
|
||||
-subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=client.com" \
|
||||
-reqexts SAN \
|
||||
-config <(cat /etc/pki/tls/frp/my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost"))\
|
||||
-out /etc/pki/tls/frp/frpc/client.csr
|
||||
openssl x509 -req -days 365 -sha256 \
|
||||
-in /etc/pki/tls/frp/frpc/client.csr -CA /etc/pki/tls/frp/ca/ca.crt -CAkey /etc/pki/tls/frp/ca/ca.key -CAcreateserial \
|
||||
-extfile <(printf "subjectAltName=DNS:localhost") \
|
||||
-out /etc/pki/tls/frp/frpc/client.crt
|
||||
|
||||
echo "Certificate generation completed."
|
||||
@@ -15,7 +15,7 @@ export github_latest_version_api="https://api.github.com/repos/fatedier/frp/rele
|
||||
|
||||
# Program information
|
||||
program_name="frps"
|
||||
version="1.0.2"
|
||||
version="1.0.3"
|
||||
str_program_dir="/usr/local/${program_name}"
|
||||
program_init="/etc/init.d/${program_name}"
|
||||
program_config_file="frps.toml"
|
||||
@@ -25,7 +25,7 @@ str_install_shell="https://raw.githubusercontent.com/Mvscode/frps-onekey/master/
|
||||
# Function to check for shell updates
|
||||
shell_update() {
|
||||
# Clear the terminal
|
||||
fun_clangcn "clear"
|
||||
fun_frps "clear"
|
||||
|
||||
# Echo a message to indicate that we're checking for shell updates
|
||||
echo "Checking for shell updates..."
|
||||
@@ -55,7 +55,7 @@ shell_update() {
|
||||
echo -e " [${COLOR_GREEN}OK${COLOR_END}]"
|
||||
echo
|
||||
# Echo a message to instruct the user to re-run the script
|
||||
echo -e "${COLOR_GREEN}Please re-run${COLOR_END} ${COLOR_PINK}$0 ${clang_action}${COLOR_END}"
|
||||
echo -e "${COLOR_GREEN}Please re-run${COLOR_END} ${COLOR_PINK}$0 ${frps_action}${COLOR_END}"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
@@ -63,7 +63,7 @@ shell_update() {
|
||||
fi
|
||||
fi
|
||||
}
|
||||
fun_clangcn(){
|
||||
fun_frps(){
|
||||
local clear_flag=""
|
||||
clear_flag=$1
|
||||
if [[ ${clear_flag} == "clear" ]]; then
|
||||
@@ -89,7 +89,7 @@ fun_set_text_color(){
|
||||
# Check if user is root
|
||||
rootness(){
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
fun_clangcn
|
||||
fun_frps
|
||||
echo "Error:This script must be run as root!" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -385,19 +385,19 @@ fun_input_subdomain_host(){
|
||||
[ -z "${input_subdomain_host}" ] && input_subdomain_host="${def_subdomain_host}"
|
||||
}
|
||||
|
||||
pre_install_clang(){
|
||||
fun_clangcn
|
||||
pre_install_frps(){
|
||||
fun_frps
|
||||
echo -e "Check your server setting, please wait..."
|
||||
disable_selinux
|
||||
if [ -s ${str_program_dir}/${program_name} ] && [ -s ${program_init} ]; then
|
||||
echo "${program_name} is installed!"
|
||||
else
|
||||
clear
|
||||
fun_clangcn
|
||||
fun_frps
|
||||
fun_getServer
|
||||
fun_getVer
|
||||
echo -e "Loading You Server IP, please wait..."
|
||||
defIP=$(wget -qO- ip.clang.cn | sed -r 's/\r//')
|
||||
defIP=$(curl -s https://api.ipify.org)
|
||||
echo -e "You Server IP:${COLOR_GREEN}${defIP}${COLOR_END}"
|
||||
echo -e "————————————————————————————————————————————"
|
||||
echo -e " ${COLOR_RED}Please input your server setting:${COLOR_END}"
|
||||
@@ -559,11 +559,11 @@ pre_install_clang(){
|
||||
echo "Press any key to start...or Press Ctrl+c to cancel"
|
||||
|
||||
char=`get_char`
|
||||
install_program_server_clang
|
||||
install_program_server_frps
|
||||
fi
|
||||
}
|
||||
# ====== install server ======
|
||||
install_program_server_clang(){
|
||||
install_program_server_frps(){
|
||||
[ ! -d ${str_program_dir} ] && mkdir -p ${str_program_dir}
|
||||
cd ${str_program_dir}
|
||||
echo "${program_name} install path:$PWD"
|
||||
@@ -870,7 +870,7 @@ fi
|
||||
echo " done"
|
||||
[ -s ${program_init} ] && ln -s ${program_init} /usr/bin/${program_name}
|
||||
${program_init} start
|
||||
fun_clangcn
|
||||
fun_frps
|
||||
#install successfully
|
||||
echo ""
|
||||
echo "Congratulations, ${program_name} install completed!"
|
||||
@@ -902,7 +902,7 @@ fi
|
||||
exit 0
|
||||
}
|
||||
############################### configure ##################################
|
||||
configure_program_server_clang(){
|
||||
configure_program_server_frps(){
|
||||
if [ -s ${str_program_dir}/${program_config_file} ]; then
|
||||
vi ${str_program_dir}/${program_config_file}
|
||||
else
|
||||
@@ -911,8 +911,8 @@ configure_program_server_clang(){
|
||||
fi
|
||||
}
|
||||
############################### uninstall ##################################
|
||||
uninstall_program_server_clang(){
|
||||
fun_clangcn
|
||||
uninstall_program_server_frps(){
|
||||
fun_frps
|
||||
if [ -s ${program_init} ] || [ -s ${str_program_dir}/${program_name} ] ; then
|
||||
echo "============== Uninstall ${program_name} =============="
|
||||
str_uninstall="n"
|
||||
@@ -945,7 +945,7 @@ uninstall_program_server_clang(){
|
||||
exit 0
|
||||
}
|
||||
############################### update ##################################
|
||||
update_config_clang(){
|
||||
update_config_frps(){
|
||||
if [ ! -r "${str_program_dir}/${program_config_file}" ]; then
|
||||
echo "config file ${str_program_dir}/${program_config_file} not found."
|
||||
else
|
||||
@@ -1043,12 +1043,12 @@ update_config_clang(){
|
||||
fi
|
||||
fi
|
||||
}
|
||||
update_program_server_clang() {
|
||||
fun_clangcn "clear"
|
||||
update_program_server_frps() {
|
||||
fun_frps "clear"
|
||||
|
||||
if [ -s "$program_init" ] || [ -s "$str_program_dir/$program_name" ]; then
|
||||
echo "============== Update $program_name =============="
|
||||
update_config_clang
|
||||
update_config_frps
|
||||
checkos
|
||||
check_centosversion
|
||||
check_os_bit
|
||||
@@ -1120,26 +1120,26 @@ shell_update
|
||||
# Initialization
|
||||
action=$1
|
||||
if [ -z "$action" ]; then
|
||||
fun_clangcn
|
||||
fun_frps
|
||||
echo "Arguments error! [$action ]"
|
||||
echo "Usage: $(basename "$0") {install|uninstall|update|config}"
|
||||
RET_VAL=1
|
||||
else
|
||||
case "$action" in
|
||||
install)
|
||||
pre_install_clang 2>&1 | tee /root/${program_name}-install.log
|
||||
pre_install_frps 2>&1 | tee /root/${program_name}-install.log
|
||||
;;
|
||||
config)
|
||||
configure_program_server_clang
|
||||
configure_program_server_frps
|
||||
;;
|
||||
uninstall)
|
||||
uninstall_program_server_clang 2>&1 | tee /root/${program_name}-uninstall.log
|
||||
uninstall_program_server_frps 2>&1 | tee /root/${program_name}-uninstall.log
|
||||
;;
|
||||
update)
|
||||
update_program_server_clang 2>&1 | tee /root/${program_name}-update.log
|
||||
update_program_server_frps 2>&1 | tee /root/${program_name}-update.log
|
||||
;;
|
||||
*)
|
||||
fun_clangcn
|
||||
fun_frps
|
||||
echo "Arguments error! [$action ]"
|
||||
echo "Usage: $(basename "$0") {install|uninstall|update|config}"
|
||||
RET_VAL=1
|
||||
|
||||
Reference in New Issue
Block a user