diff --git a/.gitignore b/.gitignore index 6010015..510d82d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ /*.iml /.idea/ /out/ -/*.sh /fortest/ diff --git a/README.md b/README.md index d426e18..df3b402 100644 --- a/README.md +++ b/README.md @@ -2,54 +2,41 @@ FinalSpeed是高速双边加速软件,可加速所有基于tcp协议的网络服务,在高丢包和高延迟环境下,仍可达到90%的物理带宽利用率,即使高峰时段也能轻松跑满带宽. ### 安装教程 -[客户端安装说明](http://www.d1sm.net/thread-7-1-1.html) +[客户端安装说明](https://www.91yun.org/archives/615)
-[服务端安装说明](http://www.d1sm.net/thread-8-1-1.html) +[服务端安装说明](http://www.91yun.org/archives/2775) -### 使用帮助 -``` -需要管理员权限 -java -jar finalspeed.jar -b 运行CLI版 -java -jar finalspeed.jar 运行GUI版 -``` +### 说明 + + +finalspeed作者开始卖收费版了,所以停止了免费版的更新,并且删除了所有代码。不过还好我fork了一份。。作为Openvz的救星,还是有不少人对finalspeed有需求的。所以我就做了这个一键安装包。 + +这个一键安装包完全重写了作者原来的安装代码,启动,停止代码。并加入了服务,可以使用 service finalspeed star | stop 来控制,加入了开机启动启动。总之,你需要做的就是真正的一键。一键安装包安装的服务器端版本为1.2.需要1.0的自行到github下载。欢迎大家测试,有问题及时留言给我。 + +github地址:https://github.com/91yun/finalspeed + +github里也有服务器端和客户端的文件。大家有需求可以自行去下载。 -CLI版本需要手动配置, 且配置文件与finalspeed必须处在同一目录下. -clien_config.json + +### 一键安装代码: ``` -{ - // 下载速度,单位是 B,字节。这里换算起来就是 11MB。请把这里改成本机的下载速度 - "download_speed": 11200698, - // 协议:tcp 或 udp。注意:服务端如果是 OpenVZ 架构的话,则只支持 udp。 - "protocal": "udp", - // 服务器地址 - "server_address": "1.2.3.4", - // 一般不需要更改,保持默认即可。 - "server_port": 150, - // 不需要更改,保持默认即可。 - "socks5_port": 1083, - // 上传速度,单位是 B,字节。 - "upload_speed": 357469 -} +wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/finalspeed/master/install_fs.sh && bash install_fs.sh ``` -port_map.json +###一键卸载代码 ``` -{ - "map_list": [ - { - // 要加速的服务器端口 - "dst_port": 12345, - // 本地端口 - "listen_port": 1099, - // 备注信息 - "name": "ss" - }, - { - "dst_port": 23456, - "listen_port": 2200, - "name": "ssh" - } - ] -} +wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/finalspeed/master/install_fs.sh && bash install_fs.sh uninstall ``` +### finalspeed操作命令 + +启动: /etc/init.d/finalspeed start + +停止命令:/etc/init.d/finalspeed stop + +状态命令(查看日志):/etc/init.d/finalspeed status + +### finalspeed安装路径 + +安装路径: /fs/ + +日志路径:/fs/server.log -论坛 http://www.d1sm.net/forum-44-1.html diff --git a/finalspeed b/finalspeed new file mode 100644 index 0000000..dbae5ae --- /dev/null +++ b/finalspeed @@ -0,0 +1,93 @@ +#!/bin/bash +# chkconfig: 2345 90 10 +# description: start or stop the finalspeed server +# +### BEGIN INIT INFO +# Provides: finalspeed +# Required-Start: $network $syslog $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Start or stop the finalspeed server +### END INIT INFO + +# Author: 91yun + +name=finalspeed +BIN=/fs/fs.sh +conf=/fs/fs.conf +logname=/fs/server.log + +start(){ + ulimit -s 65535 + ulimit -n 65535 + tram=$( free -m | awk '/Mem/ {print $2}' ) + if [ "$tram" -le 128 ]; then + nohup java -Xmx64M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -le 256 ]; then + nohup java -Xmx128M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -le 512 ]; then + nohup java -Xmx256M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -gt 512 ]; then + nohup java -Xmx512M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + fi + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + tail $logname + echo "$name start success" + else + tail $logname + echo "$name start failed" + fi +} + +stop(){ + pid=`ps -ef | grep fs.jar | grep -v grep | awk '{print $2}'` + if [[ ! -z $pid ]]; then + ps -ef | grep fs.jar | grep -v grep | awk '{print $2}' | xargs kill -s 9 + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + echo "$name stop success" + else + echo "$name stop failed" + fi + else + echo "$name is not running" + RETVAL=1 + fi +} + +status(){ + pid=`ps -ef | grep fs.jar | grep -v grep | awk '{print $2}'` + if [[ -z $pid ]]; then + echo "$name is not running" + RETVAL=1 + else + echo "$name is running with PID $pid" + tail $logname + RETVAL=0 + fi +} + +case "$1" in +'start') + stop + start + ;; +'stop') + stop + ;; +'status') + status + ;; +'restart') + stop + start + RETVAL=$? + ;; +*) + echo "Usage: $0 { start | stop | restart | status }" + RETVAL=1 + ;; +esac +exit $RETVAL \ No newline at end of file diff --git a/finalspeed-debian b/finalspeed-debian new file mode 100644 index 0000000..980d212 --- /dev/null +++ b/finalspeed-debian @@ -0,0 +1,91 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: finalspeed +# Required-Start: $network $syslog $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the finalspeed server +# Description: Start or stop the finalspeed server +### END INIT INFO + +# Author: 91yun + +name=finalspeed +BIN=/fs/fs.sh +conf=/fs/fs.conf +logname=/fs/server.log + +start(){ + ulimit -s 65535 + ulimit -n 65535 + tram=$( free -m | awk '/Mem/ {print $2}' ) + if [ "$tram" -le 128 ]; then + nohup java -Xmx64M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -le 256 ]; then + nohup java -Xmx128M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -le 512 ]; then + nohup java -Xmx256M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + elif [ "$tram" -gt 512 ]; then + nohup java -Xmx512M -XX:MaxGCPauseMillis=30 -jar /fs/fs.jar > $logname 2>&1 & + fi + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + tail $logname + echo "$name start success" + else + tail $logname + echo "$name start failed" + fi +} + +stop(){ + pid=`ps -ef | grep fs.jar | grep -v grep | awk '{print $2}'` + if [[ ! -z $pid ]]; then + ps -ef | grep fs.jar | grep -v grep | awk '{print $2}' | xargs kill -s 9 + RETVAL=$? + if [ "$RETVAL" = "0" ]; then + echo "$name stop success" + else + echo "$name stop failed" + fi + else + echo "$name is not running" + RETVAL=1 + fi +} + +status(){ + pid=`ps -ef | grep fs.jar | grep -v grep | awk '{print $2}'` + if [[ -z $pid ]]; then + echo "$name is not running" + RETVAL=1 + else + echo "$name is running with PID $pid" + tail $logname + RETVAL=0 + fi +} + +case "$1" in +'start') + stop + start + ;; +'stop') + stop + ;; +'status') + status + ;; +'restart') + stop + start + RETVAL=$? + ;; +*) + echo "Usage: $0 { start | stop | restart | status }" + RETVAL=1 + ;; +esac +exit $RETVAL \ No newline at end of file diff --git a/finalspeed_client.zip b/finalspeed_client.zip new file mode 100644 index 0000000..09fb467 Binary files /dev/null and b/finalspeed_client.zip differ diff --git a/finalspeed_install1.0.exe b/finalspeed_install1.0.exe new file mode 100644 index 0000000..c69578a Binary files /dev/null and b/finalspeed_install1.0.exe differ diff --git a/finalspeed_install1.12.exe b/finalspeed_install1.12.exe new file mode 100644 index 0000000..9c40dba Binary files /dev/null and b/finalspeed_install1.12.exe differ diff --git a/fs1.0_server.zip b/fs1.0_server.zip new file mode 100644 index 0000000..6d7539b Binary files /dev/null and b/fs1.0_server.zip differ diff --git a/fs1.0_server/fs.jar b/fs1.0_server/fs.jar new file mode 100644 index 0000000..88f1f31 Binary files /dev/null and b/fs1.0_server/fs.jar differ diff --git a/fs1.2_server.zip b/fs1.2_server.zip new file mode 100644 index 0000000..1731e62 Binary files /dev/null and b/fs1.2_server.zip differ diff --git a/fs1.2_server/fs.jar b/fs1.2_server/fs.jar new file mode 100644 index 0000000..393fe68 Binary files /dev/null and b/fs1.2_server/fs.jar differ diff --git a/install_fs.sh b/install_fs.sh new file mode 100644 index 0000000..a3c20ca --- /dev/null +++ b/install_fs.sh @@ -0,0 +1,116 @@ +#! /bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + +#安装地址勿做修改 +install_path=/fs/ + + +# Make sure only root can run our script +function rootness(){ + if [[ $EUID -ne 0 ]]; then + echo "Error:This script must be run as root!" 1>&2 + exit 1 + fi +} + + +function checkenv(){ + if [[ $OS = "centos" ]]; then + yum install epel-release -y + yum -y install libpcap + yum -y install iptables + yum install -y java + else + apt-get update + apt-get -y install libpcap-dev + apt-get -y install iptables + apt-get install -y openjdk-7-jre + fi +} + + + +function checkos(){ + if [ -f /etc/redhat-release ];then + OS='centos' + elif [ ! -z "`cat /etc/issue | grep bian`" ];then + OS='debian' + elif [ ! -z "`cat /etc/issue | grep Ubuntu`" ];then + OS='ubuntu' + else + echo "Not support OS, Please reinstall OS and retry!" + exit 1 + fi +} + + +# Install finalspeed +function install_finalspeed(){ + rootness + checkos + checkenv + mkdir -p $install_path + echo '' > ${install_path}"server.log" + wget --no-check-certificate https://raw.githubusercontent.com/91yun/finalspeed/master/fs1.2_server/fs.jar -O ${install_path}"fs.jar" + if [ "$OS" == 'centos' ]; then + if ! wget --no-check-certificate https://raw.githubusercontent.com/91yun/finalspeed/master/finalspeed -O /etc/init.d/finalspeed; then + echo "Failed to download finalspeed chkconfig file!" + exit 1 + fi + chmod +x /etc/init.d/finalspeed + chkconfig --add finalspeed + chkconfig finalspeed on + else + if ! wget --no-check-certificate https://raw.githubusercontent.com/91yun/finalspeed/master/finalspeed-debian -O /etc/init.d/finalspeed; then + echo "Failed to download finalspeed chkconfig file!" + exit 1 + fi + chmod +x /etc/init.d/finalspeed + update-rc.d -f finalspeed defaults + fi + /etc/init.d/finalspeed start +} + +# Uninstall finalspeed +function uninstall_finalspeed(){ + printf "Are you sure uninstall finalspeed? (y/n) " + printf "\n" + read -p "(Default: n):" answer + if [ -z $answer ]; then + answer="n" + fi + if [ "$answer" = "y" ]; then + /etc/init.d/finalspeed stop + checkos + if [ "$OS" == 'centos' ]; then + chkconfig --del finalspeed + else + update-rc.d -f finalspeed remove + fi + rm -f /etc/init.d/finalspeed + rm -rf $install_path + echo "finalspeed uninstall success!" + else + echo "uninstall cancelled, Nothing to do" + fi +} + +# Initialization step +action=$1 +[ -z $1 ] && action=install +case "$action" in +install) + install_finalspeed + ;; +uninstall) + uninstall_finalspeed + ;; +*) + echo "Arguments error! [${action} ]" + echo "Usage: `basename $0` {install|uninstall}" + ;; +esac + + +