From d717ddd0d4e6e954f7d7f64b7797f28e8806152f Mon Sep 17 00:00:00 2001
From: 陈炜 <5856420@qq.com>
Date: 星期二, 26 一月 2021 08:42:38 +0800
Subject: [PATCH] 部分测试文件

---
 Coding/192.168.31.254/sshd_config                                   |  138 +++
 markdown/售药.md                                                      |    0 
 Coding/Python/1.py                                                  |    2 
 Coding/verysync-installer/etc/linux-systemv/verysync                |  152 ++++
 Coding/verysync-installer/etc/linux-systemd/.DS_Store               |    0 
 Coding/verysync-installer/go-inst.sh                                |  484 +++++++++++++
 Coding/verysync-installer/start-stop-daemon/amd64                   |    0 
 Coding/Python/c9-python-getting-started                             |    1 
 Coding/61.129.251.135/haproxy.cfg                                   |  161 ++++
 Coding/192.168.31.254/haproxy.cfg                                   |  142 ++++
 bmw-server.xml                                                      |  160 ++++
 Coding/verysync-installer/etc/.DS_Store                             |    0 
 Coding/verysync-installer/start-stop-daemon/i386                    |    0 
 Coding/verysync-installer/etc/linux-init.d/verysync                 |  112 +++
 markdown/SY2209iBP6EXBASY(0551)-14.022.71.007 2020.11.18.md         |    0 
 Coding/verysync-installer/start-stop-daemon/arm                     |    0 
 Coding/Python/第三批                                                   |    0 
 bmw-login.xml                                                       |  299 ++++++++
 Coding/verysync-installer/etc/linux-systemd/system/verysync.service |   18 
 Coding/192.168.31.254/iptables                                      |   18 
 Coding/.vscode/launch.json                                          |   15 
 Coding/verysync-installer/start-stop-daemon/arm64                   |    0 
 login.jsp                                                           |  299 ++++++++
 ConnectionStrings.config                                            |    9 
 Coding/verysync-installer/go-install.sh                             |   51 +
 25 files changed, 2,061 insertions(+), 0 deletions(-)

diff --git a/Coding/.vscode/launch.json b/Coding/.vscode/launch.json
new file mode 100644
index 0000000..b80908c
--- /dev/null
+++ b/Coding/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+    // 浣跨敤 IntelliSense 浜嗚В鐩稿叧灞炴�с�� 
+    // 鎮仠浠ユ煡鐪嬬幇鏈夊睘鎬х殑鎻忚堪銆�
+    // 娆蹭簡瑙f洿澶氫俊鎭紝璇疯闂�: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Python: 褰撳墠鏂囦欢",
+            "type": "python",
+            "request": "launch",
+            "program": "${file}",
+            "console": "integratedTerminal"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/Coding/192.168.31.254/haproxy.cfg b/Coding/192.168.31.254/haproxy.cfg
new file mode 100644
index 0000000..4b98d00
--- /dev/null
+++ b/Coding/192.168.31.254/haproxy.cfg
@@ -0,0 +1,142 @@
+#---------------------------------------------------------------------
+# Example configuration for a possible web application.  See the
+# full configuration options online.
+#
+#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
+#
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+# Global settings
+#---------------------------------------------------------------------
+global
+    # to have these messages end up in /var/log/haproxy.log you will
+    # need to:
+    #
+    # 1) configure syslog to accept network log events.  This is done
+    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
+    #    /etc/sysconfig/syslog
+    #
+    # 2) configure local2 events to go to the /var/log/haproxy.log
+    #   file. A line like the following can be added to
+    #   /etc/sysconfig/syslog
+    #
+    #    local2.*                       /var/log/haproxy.log
+    #
+    log         127.0.0.1 local2
+
+    chroot      /var/lib/haproxy
+    pidfile     /var/run/haproxy.pid
+    maxconn     100000
+    user        haproxy
+    group       haproxy
+    daemon
+
+    # turn on stats unix socket
+    stats socket /var/lib/haproxy/stats
+
+#---------------------------------------------------------------------
+# common defaults that all the 'listen' and 'backend' sections will
+# use if not designated in their block
+#---------------------------------------------------------------------
+defaults
+    mode                    http
+    log                     global
+    option                  httplog
+    option                  dontlognull
+    option http-server-close
+    option forwardfor
+#   option forwardfor       except 127.0.0.0/8
+    option                  redispatch
+    retries                 3
+    timeout http-request    10s
+    timeout queue           1m
+    timeout connect         3s
+    timeout client          1m
+    timeout server          1m
+    timeout http-keep-alive 10s
+    timeout check           10s
+    maxconn                 3000
+	
+listen admin_stats
+    bind 		*:8088
+    mode 		http
+    option 		httplog
+    maxconn		10
+    stats enable
+    stats refresh 30s
+    stats uri /stats
+    stats realm Haproxy Manager
+    stats auth admin:philips888_
+    stats hide-version
+       
+    
+listen mps_8888
+    bind                *:8888
+    mode                http
+    maxconn             1000
+    balance source
+  server 211 10.1.1.211:8888 weight 1 maxconn 3000 check inter 5000
+#  server 02 10.1.1.212:8888 weight 1 maxconn 3000 check inter 5000
+#  server 03 10.1.1.213:8888 weight 1 maxconn 3000 check inter 5000
+#  server 04 10.1.1.214:8888 weight 1 maxconn 3000 check inter 5000
+
+  
+listen comm_3099
+    bind                *:3099
+	mode                tcp
+	option              tcplog
+	maxconn             50000
+	balance leastconn
+  server 211 10.1.1.211:3099 weight 2 maxconn 15000 check inter 10000
+#  server 02 10.1.1.212:3099 weight 2 maxconn 15000 check inter 10000
+#  server 03 10.1.1.213:3099 weight 2 maxconn 15000 check inter 10000
+#  server 04 10.1.1.214:3099 weight 2 maxconn 15000 check inter 10000
+
+listen ftp21 
+    bind                *:21
+    mode                tcp
+    option              tcplog
+    maxconn             40960
+    balance leastconn
+  server 211 10.1.1.211 weight 3 maxconn 3000 check port 21 inter 3000s
+#  server 212 10.1.1.212 weight 3 maxconn 3000 check port 21 inter 3000s
+#  server 213 10.1.1.213 weight 3 maxconn 3000 check port 21 inter 3000s
+#  server 214 10.1.1.214 weight 3 maxconn 3000 check port 21 inter 3000s
+
+listen ftp50000-52000 :50000-52000
+    mode                tcp
+    option              tcplog
+    maxconn             3000
+   server 211 10.1.1.211
+#   server 212 10.1.1.212
+#   server 213 10.1.1.213
+#   server 214 10.1.1.214
+
+#---------------------------------------------------------------------
+# main frontend which proxys to the backends
+#---------------------------------------------------------------------
+#frontend  main *:5000
+#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
+#    acl url_static       path_end       -i .jpg .gif .png .css .js
+
+#    use_backend static          if url_static
+#    default_backend             app
+
+#---------------------------------------------------------------------
+# static backend for serving up images, stylesheets and such
+#---------------------------------------------------------------------
+#backend static
+#    balance     roundrobin
+#    server      static 127.0.0.1:4331 check
+
+#---------------------------------------------------------------------
+# round robin balancing between the various backends
+#---------------------------------------------------------------------
+#backend app
+#    balance     roundrobin
+#    server  app1 127.0.0.1:5001 check
+#    server  app2 127.0.0.1:5002 check
+#    server  app3 127.0.0.1:5003 check
+#    server  app4 127.0.0.1:5004 check
+
diff --git a/Coding/192.168.31.254/iptables b/Coding/192.168.31.254/iptables
new file mode 100644
index 0000000..6588c56
--- /dev/null
+++ b/Coding/192.168.31.254/iptables
@@ -0,0 +1,18 @@
+# Firewall configuration written by system-config-firewall
+# Manual customization of this file is not recommended.
+*filter
+:INPUT ACCEPT [0:0]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A INPUT -p tcp -m tcp --dport 50000:52000 -j ACCEPT 
+-A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT 
+-A INPUT -p tcp -m tcp --dport 3099 -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 8088 -j ACCEPT  
+-A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
+-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+-A INPUT -p icmp -j ACCEPT
+-A INPUT -i lo -j ACCEPT
+-A INPUT -m state --state NEW -m tcp -p tcp --dport 2000 -j ACCEPT
+-A INPUT -j REJECT --reject-with icmp-host-prohibited
+-A FORWARD -j REJECT --reject-with icmp-host-prohibited
+COMMIT
\ No newline at end of file
diff --git a/Coding/192.168.31.254/sshd_config b/Coding/192.168.31.254/sshd_config
new file mode 100644
index 0000000..f6af8ba
--- /dev/null
+++ b/Coding/192.168.31.254/sshd_config
@@ -0,0 +1,138 @@
+#	$OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
+
+# This is the sshd server system-wide configuration file.  See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented.  Uncommented options change a
+# default value.
+
+Port 2000
+#AddressFamily any
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# Disable legacy (protocol version 1) support in the server for new
+# installations. In future the default will change to require explicit
+# activation of protocol 1
+Protocol 2
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 1024
+
+# Logging
+# obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+SyslogFacility AUTHPRIV
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+#PermitRootLogin yes
+#StrictModes yes
+#MaxAuthTries 6
+#MaxSessions 10
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile	.ssh/authorized_keys
+#AuthorizedKeysCommand none
+#AuthorizedKeysCommandRunAs nobody
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+PasswordAuthentication yes
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+ChallengeResponseAuthentication no
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+#KerberosUseKuserok yes
+
+# GSSAPI options
+#GSSAPIAuthentication no
+GSSAPIAuthentication yes
+#GSSAPICleanupCredentials yes
+GSSAPICleanupCredentials yes
+#GSSAPIStrictAcceptorCheck yes
+#GSSAPIKeyExchange no
+
+# Set this to 'yes' to enable PAM authentication, account processing, 
+# and session processing. If this is enabled, PAM authentication will 
+# be allowed through the ChallengeResponseAuthentication and
+# PasswordAuthentication.  Depending on your PAM configuration,
+# PAM authentication via ChallengeResponseAuthentication may bypass
+# the setting of "PermitRootLogin without-password".
+# If you just want the PAM account and session checks to run without
+# PAM authentication, then enable this but set PasswordAuthentication
+# and ChallengeResponseAuthentication to 'no'.
+#UsePAM no
+UsePAM yes
+
+# Accept locale-related environment variables
+AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
+AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
+AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
+AcceptEnv XMODIFIERS
+
+#AllowAgentForwarding yes
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+X11Forwarding yes
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression delayed
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#ShowPatchLevel no
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10:30:100
+#PermitTunnel no
+#ChrootDirectory none
+
+# no default banner path
+#Banner none
+
+# override default of no subsystems
+Subsystem	sftp	/usr/libexec/openssh/sftp-server
+
+# Example of overriding settings on a per-user basis
+#Match User anoncvs
+#	X11Forwarding no
+#	AllowTcpForwarding no
+#	ForceCommand cvs server
diff --git a/Coding/61.129.251.135/haproxy.cfg b/Coding/61.129.251.135/haproxy.cfg
new file mode 100644
index 0000000..8911e7f
--- /dev/null
+++ b/Coding/61.129.251.135/haproxy.cfg
@@ -0,0 +1,161 @@
+#---------------------------------------------------------------------
+# Example configuration for a possible web application.  See the
+# full configuration options online.
+#
+#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
+#
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+# Global settings
+#---------------------------------------------------------------------
+global
+    # to have these messages end up in /var/log/haproxy.log you will
+    # need to:
+    #
+    # 1) configure syslog to accept network log events.  This is done
+    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
+    #    /etc/sysconfig/syslog
+    #
+    # 2) configure local2 events to go to the /var/log/haproxy.log
+    #   file. A line like the following can be added to
+    #   /etc/sysconfig/syslog
+    #
+    #    local2.*                       /var/log/haproxy.log
+    #
+    log         127.0.0.1 local2
+
+    chroot      /var/lib/haproxy
+    pidfile     /var/run/haproxy.pid
+    maxconn     100000
+    user        haproxy
+    group       haproxy
+    daemon
+
+    # turn on stats unix socket
+    stats socket /var/lib/haproxy/stats
+
+#---------------------------------------------------------------------
+# common defaults that all the 'listen' and 'backend' sections will
+# use if not designated in their block
+#---------------------------------------------------------------------
+defaults
+    mode                    http
+    log                     global
+    option                  httplog
+    option                  dontlognull
+    option http-server-close
+#   option forwardfor       except 127.0.0.0/8
+    option                  redispatch
+    retries                 3
+    timeout http-request    10s
+    timeout queue           1m
+    timeout connect         3s
+    timeout client          1m
+    timeout server          1m
+    timeout http-keep-alive 10s
+    timeout check           10s
+    maxconn                 3000
+	
+listen admin_stats      
+    bind                *:8088
+    mode 		http
+    option 		httplog
+    maxconn		10
+    stats enable
+    stats refresh 30s
+    stats uri /stats
+    stats realm Haproxy Manager
+    stats auth admin:philips888_
+    stats hide-version
+       
+    
+listen mps_8888
+    bind                *:8888
+    mode                http
+    maxconn             1000
+    balance source
+# server 132 61.129.251.132:8888 redir http://61.129.251.132:8888 weight 1 maxconn 3000 check inter 5000
+# server 133 61.129.251.133:8888 redir http://61.129.251.133:8888 weight 1 maxconn 3000 check inter 5000
+  server 144 61.129.251.144:8888 weight 1 maxconn 3000 check inter 5000
+# server 132 61.129.251.132:8888 weight 1 maxconn 3000 check inter 5000
+# server 188 61.129.251.188:8888 weight 1 maxconn 3000 check inter 5000
+
+
+#listen mps_8080
+#    bind                61.129.251.135:8080
+#    mode                http
+#    maxconn             1000
+#    balance source
+#  server 132 61.129.251.132:8888 weight 1 maxconn 3000 check inter 5000
+#  server 133 61.129.251.133:8888 weight 1 maxconn 3000 check inter 5000
+#  server 144 61.129.251.144:8888 weight 1 maxconn 3000 check inter 5000
+#  server 145 61.129.251.145:8888 weight 1 maxconn 3000 check inter 5000
+#  server 253 61.129.251.188:8888 weight 1 maxconn 3000 check inter 5000
+  
+listen comm_3099
+    bind                *:3099
+	mode                tcp
+	option              tcplog
+	maxconn             50000
+	balance leastconn
+# server 132 61.129.251.132:3099 weight 2 maxconn 15000 check inter 10000
+# server 133 61.129.251.133:3099 weight 2 maxconn 15000 check inter 10000
+  server 144 61.129.251.144:3099 weight 2 maxconn 15000 check inter 10000
+  server 132 61.129.251.132:3099 weight 2 maxconn 15000 check inter 10000
+# server 188 61.129.251.188:3099 weight 2 maxconn 15000 check inter 10000
+
+listen ftp21 
+    bind                *:21
+    mode                tcp
+    option              tcplog
+    maxconn             40960
+    balance leastconn
+# server 132 61.129.251.132 weight 3 maxconn 3000 check port 21 inter 3000s
+# server 133 61.129.251.133 weight 3 maxconn 3000 check port 21 inter 3000s
+  server 144 61.129.251.144 weight 3 maxconn 3000 check port 21 inter 3000s
+  server 132 61.129.251.132 weight 3 maxconn 3000 check port 21 inter 3000s
+# server 188 61.129.251.188 weight 3 maxconn 3000 check port 21 inter 3000s
+# server 148 192.168.100.148 weight 3 maxconn 3000 check port 21 inter 3000s
+# server 188 192.168.100.188 weight 3 maxconn 3000 check port 21 inter 3000s
+
+listen ftp52   
+    bind                *:50000-52000
+    mode                tcp
+    option              tcplog
+    maxconn             3000
+#  server 132 61.129.251.132
+#  server 133 61.129.251.133
+   server 144 61.129.251.144
+   server 132 61.129.251.132
+#  server 188 61.129.251.188
+#  server 148 192.168.100.148
+#  server 188 192.168.100.188
+
+#---------------------------------------------------------------------
+# main frontend which proxys to the backends
+#---------------------------------------------------------------------
+#frontend  main *:5000
+#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
+#    acl url_static       path_end       -i .jpg .gif .png .css .js
+
+#    use_backend static          if url_static
+#    default_backend             app
+
+#---------------------------------------------------------------------
+# static backend for serving up images, stylesheets and such
+#---------------------------------------------------------------------
+#backend static
+#    balance     roundrobin
+#    server      static 127.0.0.1:4331 check
+
+#---------------------------------------------------------------------
+# round robin balancing between the various backends
+#---------------------------------------------------------------------
+#backend app
+#    balance     roundrobin
+#    server  app1 127.0.0.1:5001 check
+#    server  app2 127.0.0.1:5002 check
+#    server  app3 127.0.0.1:5003 check
+#    server  app4 127.0.0.1:5004 check
+
diff --git a/Coding/Python/1.py b/Coding/Python/1.py
new file mode 100644
index 0000000..ed2f386
--- /dev/null
+++ b/Coding/Python/1.py
@@ -0,0 +1,2 @@
+name = input ('Please enter your name:')
+print (name)
\ No newline at end of file
diff --git a/Coding/Python/c9-python-getting-started b/Coding/Python/c9-python-getting-started
new file mode 160000
index 0000000..f7d585a
--- /dev/null
+++ b/Coding/Python/c9-python-getting-started
@@ -0,0 +1 @@
+Subproject commit f7d585aa0b2873e706ed4b5a5a7a497016665f02
diff --git "a/Coding/Python/\347\254\254\344\270\211\346\211\271" "b/Coding/Python/\347\254\254\344\270\211\346\211\271"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/Coding/Python/\347\254\254\344\270\211\346\211\271"
diff --git a/Coding/verysync-installer/etc/.DS_Store b/Coding/verysync-installer/etc/.DS_Store
new file mode 100644
index 0000000..61adfff
--- /dev/null
+++ b/Coding/verysync-installer/etc/.DS_Store
Binary files differ
diff --git a/Coding/verysync-installer/etc/linux-init.d/verysync b/Coding/verysync-installer/etc/linux-init.d/verysync
new file mode 100644
index 0000000..8b62329
--- /dev/null
+++ b/Coding/verysync-installer/etc/linux-init.d/verysync
@@ -0,0 +1,112 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          verysync
+# Required-Start:    $network $local_fs $remote_fs
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: verysync services
+# Description:       verysync services
+### END INIT INFO
+
+
+DESC=verysync
+NAME=verysync
+DAEMON=/usr/bin/verysync/verysync
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+PATH="/usr/bin/verysync:$PATH"
+
+VSHOME="$HOME/.config/verysync"
+USER="root"
+DAEMON_OPTS="-gui-address :8886"
+
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+start_daemon ()
+{
+    if [[ -n "${VSHOME}" && -d "$VSHOME" ]]; then
+        chown -R ${USER}:${USER} "${VSHOME}"
+    fi
+    #su - ${USER} -s "/bin/sh" -c "umask 000; PATH=${PATH} ${VERYSYNC} $VERYSYNC_OPTIONS"
+    start-stop-daemon -b -o -c ${USER} -S -u ${USER} -k 002 -x env HOME="${VSHOME}" ${DAEMON} -- ${DAEMON_OPTS}
+}
+
+stop_daemon ()
+{
+    #kill `cat ${PID_FILE}`
+    #wait_for_status 1 60 || kill -9 `cat ${PID_FILE}`
+    #rm -f ${PID_FILE}
+    start-stop-daemon -o -c ${USER} -K -u ${USER} -x ${DAEMON}
+    wait_for_status 1 20 || start-stop-daemon -K -s 9 -q -x ${DAEMON}
+}
+
+daemon_status ()
+{
+    # if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
+    #     return
+    # fi
+    # rm -f ${PID_FILE}
+    # return 1
+    start-stop-daemon -K -q -t -u ${USER} -x ${DAEMON}
+    [ $? -eq 0 ] || return 1
+}
+
+# wait_for_status ()
+# {
+#     counter=$2
+#     while [ ${counter} -gt 0 ]; do
+#         daemon_status
+#         [ $? -eq $1 ] && return
+#         let counter=counter-1
+#         sleep 1
+#     done
+#     return 1
+# }
+wait_for_status ()
+{
+    counter=$2
+    while [ ${counter} -gt 0 ]; do
+        daemon_status
+        [ $? -eq $1 ] && return
+        let counter=counter-1
+        sleep 1
+    done
+    return 1
+}
+
+case $1 in
+    start)
+        if daemon_status; then
+            echo ${NAME} is already running
+        else
+            echo Starting ${NAME} ...
+            start_daemon
+        fi
+        ;;
+    stop)
+        if daemon_status; then
+            echo Stopping ${NAME} ...
+            stop_daemon
+        else
+            echo ${NAME} is not running
+        fi
+        ;;
+    status)
+        if daemon_status; then
+            echo ${NAME} is running
+            exit 0
+        else
+            echo ${NAME} is not running
+            exit 1
+        fi
+        ;;
+    log)
+        exit 1
+        ;;
+    *)
+        exit 1
+        ;;
+esac
diff --git a/Coding/verysync-installer/etc/linux-systemd/.DS_Store b/Coding/verysync-installer/etc/linux-systemd/.DS_Store
new file mode 100644
index 0000000..c7f175f
--- /dev/null
+++ b/Coding/verysync-installer/etc/linux-systemd/.DS_Store
Binary files differ
diff --git a/Coding/verysync-installer/etc/linux-systemd/system/verysync.service b/Coding/verysync-installer/etc/linux-systemd/system/verysync.service
new file mode 100644
index 0000000..cf153e7
--- /dev/null
+++ b/Coding/verysync-installer/etc/linux-systemd/system/verysync.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Verysync - Verysync File Synchronization for %I
+After=network.target
+
+[Service]
+# User=verysync
+# Group=verysync
+User=root
+Group=root
+Type=simple
+ExecStart=/usr/bin/verysync/verysync -gui-address :8886 -no-browser  __VSHOME_HOLDER__
+Restart=on-failure
+SuccessExitStatus=3 4
+RestartForceExitStatus=3 4
+LimitNOFILE=200000
+
+[Install]
+WantedBy=multi-user.target
diff --git a/Coding/verysync-installer/etc/linux-systemv/verysync b/Coding/verysync-installer/etc/linux-systemv/verysync
new file mode 100644
index 0000000..2abc4fb
--- /dev/null
+++ b/Coding/verysync-installer/etc/linux-systemv/verysync
@@ -0,0 +1,152 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          verysync
+# Required-Start:    $network $local_fs $remote_fs
+# Required-Stop:     $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Verysync services
+# Description:       Verysync services
+### END INIT INFO
+
+
+DESC=verysync
+NAME=verysync
+DAEMON=/usr/bin/verysync/verysync
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+VSHOME=""
+DAEMON_OPTS="-gui-address :8886 -no-browser -logflags=0"
+
+[ -n "$VSHOME" ] && DAEMON_OPTS="$DAEMON_OPTS -home $VSHOME"
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+    mkdir -p /var/log/verysync
+    # Return
+    #   0 if daemon has been started
+    #   1 if daemon was already running
+    #   2 if daemon could not be started
+    #   3 if configuration file not ready for daemon
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+        || return 1
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background -m -- $DAEMON_OPTS \
+        || return 2
+    # Add code here, if necessary, that waits for the process to be ready
+    # to handle requests from services started subsequently which depend
+    # on this one.  As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+    # Return
+    #   0 if daemon has been stopped
+    #   1 if daemon was already stopped
+    #   2 if daemon could not be stopped
+    #   other if a failure occurred
+    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
+    RETVAL="$?"
+    [ "$RETVAL" = 2 ] && return 2
+    # Wait for children to finish too if this is a daemon that forks
+    # and if the daemon is only ever run from this initscript.
+    # If the above conditions are not satisfied then add some other code
+    # that waits for the process to drop all resources that could be
+    # needed by services started subsequently.  A last resort is to
+    # sleep for some time.
+    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+    [ "$?" = 2 ] && return 2
+    # Many daemons don't delete their pidfiles when they exit.
+    rm -f $PIDFILE
+    return "$RETVAL"
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+    #
+    # If the daemon can reload its configuration without
+    # restarting (for example, when it is sent a SIGHUP),
+    # then implement that here.
+    #
+    start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
+    return 0
+}
+
+case "$1" in
+  start)
+    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+    do_start
+    case "$?" in
+        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+    esac
+  ;;
+  stop)
+    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+    do_stop
+    case "$?" in
+        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+    esac
+    ;;
+  status)
+       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+       ;;
+  reload|force-reload)
+    #
+    # If do_reload() is not implemented then leave this commented out
+    # and leave 'force-reload' as an alias for 'restart'.
+    #
+    log_daemon_msg "Reloading $DESC" "$NAME"
+    do_reload
+    log_end_msg $?
+    ;;
+  restart|force-reload)
+    #
+    # If the "reload" option is implemented then remove the
+    # 'force-reload' alias
+    #
+    log_daemon_msg "Restarting $DESC" "$NAME"
+    do_stop
+    case "$?" in
+      0|1)
+        do_start
+        case "$?" in
+            0) log_end_msg 0 ;;
+            1) log_end_msg 1 ;; # Old process is still running
+            *) log_end_msg 1 ;; # Failed to start
+        esac
+        ;;
+      *)
+        # Failed to stop
+        log_end_msg 1
+        ;;
+    esac
+    ;;
+  *)
+    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+    echo "Usage: $SCRIPTNAME {start|stop|status|reload|restart|force-reload}" >&2
+    exit 3
+    ;;
+esac
diff --git a/Coding/verysync-installer/go-inst.sh b/Coding/verysync-installer/go-inst.sh
new file mode 100644
index 0000000..35ebe91
--- /dev/null
+++ b/Coding/verysync-installer/go-inst.sh
@@ -0,0 +1,484 @@
+#!/bin/bash
+
+# This file is accessible as https://install.direct/go.sh
+
+# If not specify, default meaning of return value:
+# 0: Success
+# 1: System error
+# 2: Application error
+# 3: Network error
+
+CUR_VER=""
+NEW_VER=""
+ARCH=""
+VDIS="amd64"
+ZIPFILE="/tmp/verysync/verysync.zip"
+VERYSYNC_RUNNING=0
+
+CMD_INSTALL=""
+CMD_UPDATE=""
+SOFTWARE_UPDATED=0
+
+SYSTEMCTL_CMD=$(command -v systemctl 2>/dev/null)
+SERVICE_CMD=$(command -v service 2>/dev/null)
+
+CHECK=""
+FORCE=""
+HELP=""
+VSHOME=""
+
+#######color code########
+RED="31m"      # Error message
+GREEN="32m"    # Success message
+YELLOW="33m"   # Warning message
+BLUE="36m"     # Info message
+
+
+#########################
+while [[ $# > 0 ]];do
+    key="$1"
+    case $key in
+        -p|--proxy)
+        PROXY="-x ${2}"
+        shift # past argument
+        ;;
+        -h|--help)
+        HELP="1"
+        ;;
+        -f|--force)
+        FORCE="1"
+        ;;
+        -c|--check)
+        CHECK="1"
+        ;;
+        --remove)
+        REMOVE="1"
+        ;;
+        --version)
+        VERSION="$2"
+        shift
+        ;;
+        -l|--local)
+        LOCAL="$2"
+        LOCAL_INSTALL="1"
+        shift
+        ;;
+        -d|--home)
+        VSHOME="$2"
+        shift
+        ;;
+        *)
+                # unknown option
+        ;;
+    esac
+    shift # past argument or value
+done
+
+###############################
+colorEcho(){
+    COLOR=$1
+    echo -e "\033[${COLOR}${@:2}\033[0m"
+}
+
+sysArch(){
+    ARCH=$(uname -m)
+    if [[ "$ARCH" == "i686" ]] || [[ "$ARCH" == "i386" ]]; then
+        VDIS="386"
+    elif [[ "$ARCH" == "x86_64" ]]; then
+        VDIS="amd64"
+    elif [[ "$ARCH" == *"armv7"* ]] || [[ "$ARCH" == "armv6l" ]]; then
+        VDIS="arm"
+    elif [[ "$ARCH" == *"armv8"* ]] || [[ "$ARCH" == "aarch64" ]]; then
+        VDIS="arm64"
+    elif [[ "$ARCH" == *"mips64le"* ]]; then
+        VDIS="mips64le"
+    elif [[ "$ARCH" == *"mips64"* ]]; then
+        VDIS="mips64"
+    elif [[ "$ARCH" == *"mipsle"* ]]; then
+        VDIS="mipsle"
+    elif [[ "$ARCH" == *"mips"* ]]; then
+        VDIS="mips"
+    elif [[ "$ARCH" == *"s390x"* ]]; then
+        VDIS="s390x"
+    fi
+    return 0
+}
+
+downloadVerysync(){
+    rm -rf /tmp/verysync
+    mkdir -p /tmp/verysync
+    colorEcho ${BLUE} "Downloading verysync."
+    #DOWNLOAD_LINK="https://github.com/verysync/releases/releases/download/${NEW_VER}/verysync-linux-${VDIS}-${NEW_VER}.tar.gz"
+    DOWNLOAD_LINK="http://releases-cdn.verysync.com/releases/${NEW_VER}/verysync-linux-${VDIS}-${NEW_VER}.tar.gz"
+    curl ${PROXY} -L -H "Cache-Control: no-cache" -o ${ZIPFILE} ${DOWNLOAD_LINK}
+    if [ $? != 0 ];then
+        colorEcho ${RED} "Failed to download! Please check your network or try again."
+        return 3
+    fi
+    return 0
+}
+
+installSoftware(){
+    COMPONENT=$1
+    if [[ -n `command -v $COMPONENT` ]]; then
+        return 0
+    fi
+
+    getPMT
+    if [[ $? -eq 1 ]]; then
+        colorEcho ${RED} "The system package manager tool isn't APT or YUM, please install ${COMPONENT} manually."
+        return 1
+    fi
+    if [[ $SOFTWARE_UPDATED -eq 0 ]]; then
+        colorEcho ${BLUE} "Updating software repo"
+        $CMD_UPDATE
+        SOFTWARE_UPDATED=1
+    fi
+
+    colorEcho ${BLUE} "Installing ${COMPONENT}"
+    $CMD_INSTALL $COMPONENT
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${RED} "Failed to install ${COMPONENT}. Please install it manually."
+        return 1
+    fi
+    return 0
+}
+
+# return 1: not apt, yum, or zypper
+getPMT(){
+    if [[ -n `command -v apt-get` ]];then
+        CMD_INSTALL="apt-get -y -qq install"
+        CMD_UPDATE="apt-get -qq update"
+    elif [[ -n `command -v yum` ]]; then
+        CMD_INSTALL="yum -y -q install"
+        CMD_UPDATE="yum -q makecache"
+    elif [[ -n `command -v zypper` ]]; then
+        CMD_INSTALL="zypper -y install"
+        CMD_UPDATE="zypper ref"
+    else
+        return 1
+    fi
+    return 0
+}
+
+
+extract(){
+    colorEcho ${BLUE}"Extracting verysync package to /tmp/verysync."
+    mkdir -p /tmp/verysync
+    tar xzf $1 -C "/tmp/verysync/"
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${RED} "Failed to extract verysync."
+        return 2
+    fi
+    return 0
+}
+
+
+# 1: new verysync. 0: no. 2: not installed. 3: check failed. 4: don't check.
+getVersion(){
+    if [[ -n "$VERSION" ]]; then
+        NEW_VER="$VERSION"
+        return 4
+    else
+        VER=`/usr/bin/verysync/verysync -version 2>/dev/null`
+        RETVAL="$?"
+        CUR_VER=`echo $VER | head -n 1 | cut -d " " -f2`
+        #TAG_URL="https://api.github.com/repos/verysync/releases/releases/latest"
+        TAG_URL="https://upgrades.verysync.cn/meta.json"
+        NEW_VER=`curl ${PROXY} -k ${TAG_URL} --connect-timeout 10| grep 'tag_name' | cut -d\" -f4 | head -n 1`
+        if [[ $? -ne 0 ]] || [[ $NEW_VER == "" ]]; then
+            colorEcho ${RED} "Failed to fetch release information. Please check your network or try again."
+            return 3
+        elif [[ $RETVAL -ne 0 ]];then
+            return 2
+        elif [[ "$NEW_VER" != "$CUR_VER" ]];then
+            return 1
+        fi
+        return 0
+    fi
+}
+
+stopVerysync(){
+    colorEcho ${BLUE} "Shutting down verysync service."
+    if [[ -n "${SYSTEMCTL_CMD}" ]] || [[ -f "/lib/systemd/system/verysync.service" ]] || [[ -f "/etc/systemd/system/verysync.service" ]]; then
+        ${SYSTEMCTL_CMD} stop verysync
+    elif [[ -n "${SERVICE_CMD}" ]] || [[ -f "/etc/init.d/verysync" ]]; then
+        ${SERVICE_CMD} verysync stop
+    fi
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${YELLOW} "Failed to shutdown verysync service."
+        return 2
+    fi
+    return 0
+}
+
+startVerysync(){
+    if [ -n "${SYSTEMCTL_CMD}" ] && [ -f "/lib/systemd/system/verysync.service" ]; then
+        ${SYSTEMCTL_CMD} start verysync
+    elif [ -n "${SYSTEMCTL_CMD}" ] && [ -f "/etc/systemd/system/verysync.service" ]; then
+        ${SYSTEMCTL_CMD} start verysync
+    elif [ -n "${SERVICE_CMD}" ] && [ -f "/etc/init.d/verysync" ]; then
+        ${SERVICE_CMD} verysync start
+    fi
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${YELLOW} "Failed to start verysync service."
+        return 2
+    fi
+    return 0
+}
+
+copyFile() {
+    NAME=$1
+    ERROR=`cp "/tmp/verysync/verysync-linux-${VDIS}-${NEW_VER}/${NAME}" "/usr/bin/verysync/${NAME}" 2>&1`
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${YELLOW} "${ERROR}"
+        return 1
+    fi
+    return 0
+}
+
+makeExecutable() {
+    chmod +x "/usr/bin/verysync/$1"
+}
+
+installVerysync(){
+    # Install verysync binary to /usr/bin/verysync
+    if [[ -f /usr/bin/verysnc ]]; then
+        rm -rf /usr/bin/verysync
+    fi
+    mkdir -p /usr/bin/verysync
+    copyFile verysync
+    if [[ $? -ne 0 ]]; then
+        colorEcho ${RED} "Failed to copy verysync binary and resources."
+        return 1
+    fi
+    makeExecutable verysync
+
+    # Install verysync server config to /etc/verysync
+    # if [[ ! -f "/etc/verysync/config.json" ]]; then
+    #     mkdir -p /etc/verysync
+    #     mkdir -p /var/log/verysync
+    #     cp "/tmp/verysync/verysync-${NEW_VER}-linux-${VDIS}/vpoint_vmess_freedom.json" "/etc/verysync/config.json"
+    #     if [[ $? -ne 0 ]]; then
+    #         colorEcho ${YELLOW} "Failed to create verysync configuration file. Please create it manually."
+    #         return 1
+    #     fi
+    #     let PORT=$RANDOM+10000
+    #     UUID=$(cat /proc/sys/kernel/random/uuid)
+    #
+    #     sed -i "s/10086/${PORT}/g" "/etc/verysync/config.json"
+    #     sed -i "s/23ad6b10-8d1a-40f7-8ad0-e3e35cd38297/${UUID}/g" "/etc/verysync/config.json"
+    #
+    #     colorEcho ${BLUE} "PORT:${PORT}"
+    #     colorEcho ${BLUE} "UUID:${UUID}"
+    # fi
+    # return 0
+}
+
+
+installInitScript(){
+    if [[ -n "${SYSTEMCTL_CMD}" ]];then
+        if [[ ! -f "/etc/systemd/system/verysync.service" ]]; then
+            if [[ ! -f "/lib/systemd/system/verysync.service" ]]; then
+                #cp "/tmp/verysync/verysync-linux-${VDIS}-${NEW_VER}/etc/linux-systemd/system/verysync.service" "/etc/systemd/system/"
+                cp "etc/linux-systemd/system/verysync.service" "/etc/systemd/system/"
+                if [[ -n "$VSHOME" ]]; then
+                    sed -i "s#__VSHOME_HOLDER__#-home \"$VSHOME\"#" /etc/systemd/system/verysync.service
+                else
+                    sed -i "s/__VSHOME_HOLDER__//" /etc/systemd/system/verysync.service
+                fi
+                systemctl enable verysync.service
+                systemctl start verysync.service
+            fi
+        fi
+        return
+    elif [[ -n "${SERVICE_CMD}" ]] && [[ ! -f "/etc/init.d/verysync" ]]; then
+        # installSoftware "daemon"
+        # installSoftware "daemon" || return $?
+        # cp "/tmp/verysync/verysync-linux-${VDIS}-${NEW_VER}/etc/linux-systemv/verysync" "/etc/init.d/verysync"
+
+        # if [[ $? -ne 0 ]]; then
+        # fi
+
+        if [[ -n `command -v chkconfig` ]]; then
+            #Centos
+            if [[ ! -f "start-stop-daemon/$VDIS" ]]; then
+                installSoftware "daemon" || return $?
+            else
+                cp "start-stop-daemon/$VDIS" /usr/bin/verysync/start-stop-daemon
+                chmod +x /usr/bin/verysync/start-stop-daemon
+            fi
+
+            cp "etc/linux-init.d/verysync" "/etc/init.d/verysync"
+            chmod +x "/etc/init.d/verysync"
+
+            if [[ -n "$VSHOME" ]]; then
+                sed -i "s#^VSHOME=#VSHOME=\"$VSHOME\"#" /etc/systemd/system/verysync.service
+            fi
+
+
+            chkconfig --add verysync
+            service verysync start
+        elif [[ -n `command -v update-rc.d` ]]; then
+            #Debian/Centos
+            installSoftware "daemon" || return $?
+
+            cp "etc/linux-systemv/verysync" "/etc/init.d/verysync"
+            chmod +x "/etc/init.d/verysync"
+
+            if [[ -n "$VSHOME" ]]; then
+                sed -i "s#^VSHOME=#VSHOME=\"$VSHOME\"#" /etc/systemd/system/verysync.service
+            fi
+
+            update-rc.d verysync defaults
+        fi
+    fi
+    return
+}
+
+Help(){
+    echo "./go-installer.sh [-h] [-c] [--remove] [-p proxy] [-f] [--version vx.y.z] [-l file] [-d index location]"
+    echo "  -h, --help            Show help"
+    echo "  -p, --proxy           To download through a proxy server, use -p socks5://127.0.0.1:1080 or -p http://127.0.0.1:3128 etc"
+    echo "  -f, --force           Force install"
+    echo "      --version         Install a particular version, use --version v3.15"
+    echo "  -l, --local           Install from a local file"
+    echo "      --remove          Remove installed verysync"
+    echo "  -c, --check           Check for update"
+    echo "  -d  --home            Verysync index data location, default ~/.config/verysync"
+    return 0
+}
+
+remove(){
+    if [[ -n "${SYSTEMCTL_CMD}" ]] && [[ -f "/etc/systemd/system/verysync.service" ]];then
+        if pgrep "verysync" > /dev/null ; then
+            stopVerysync
+        fi
+        systemctl disable verysync.service
+        rm -rf "/usr/bin/verysync" "/etc/systemd/system/verysync.service"
+        if [[ $? -ne 0 ]]; then
+            colorEcho ${RED} "Failed to remove verysync."
+            return 0
+        else
+            colorEcho ${GREEN} "Removed verysync successfully."
+            colorEcho ${BLUE} "If necessary, please remove configuration file and log file manually."
+            return 0
+        fi
+    elif [[ -n "${SYSTEMCTL_CMD}" ]] && [[ -f "/lib/systemd/system/verysync.service" ]];then
+        if pgrep "verysync" > /dev/null ; then
+            stopVerysync
+        fi
+        systemctl disable verysync.service
+        rm -rf "/usr/bin/verysync/verysync" "/lib/systemd/system/verysync.service"
+        if [[ $? -ne 0 ]]; then
+            colorEcho ${RED} "Failed to remove verysync."
+            return 0
+        else
+            colorEcho ${GREEN} "Removed verysync successfully."
+            colorEcho ${BLUE} "If necessary, please remove configuration file and log file manually."
+            return 0
+        fi
+    elif [[ -n "${SERVICE_CMD}" ]] && [[ -f "/etc/init.d/verysync" ]]; then
+        if pgrep "verysync" > /dev/null ; then
+            stopVerysync
+        fi
+        rm -rf "/usr/bin/verysync" "/etc/init.d/verysync"
+        if [[ $? -ne 0 ]]; then
+            colorEcho ${RED} "Failed to remove verysync."
+            return 0
+        else
+            colorEcho ${GREEN} "Removed verysync successfully."
+            colorEcho ${BLUE} "If necessary, please remove configuration file and log file manually."
+            return 0
+        fi
+    else
+        colorEcho ${YELLOW} "verysync not found."
+        return 0
+    fi
+}
+
+checkUpdate(){
+    echo "Checking for update."
+    VERSION=""
+    getVersion
+    RETVAL="$?"
+    if [[ $RETVAL -eq 1 ]]; then
+        colorEcho ${BLUE} "Found new version ${NEW_VER} for verysync.(Current version:$CUR_VER)"
+    elif [[ $RETVAL -eq 0 ]]; then
+        colorEcho ${BLUE} "No new version. Current version is ${NEW_VER}."
+    elif [[ $RETVAL -eq 2 ]]; then
+        colorEcho ${YELLOW} "No verysync installed."
+        colorEcho ${BLUE} "The newest version for verysync is ${NEW_VER}."
+    fi
+    return 0
+}
+
+main(){
+    #helping information
+    [[ "$HELP" == "1" ]] && Help && return
+    [[ "$CHECK" == "1" ]] && checkUpdate && return
+    [[ "$REMOVE" == "1" ]] && remove && return
+
+    [[ -n "$VSHOME" && -f "$VSHOME" ]] && colorEcho {$RED} "$VSHOME is not directory path" && return
+
+    if [[  -n "$VSHOME" && ! -d "$VSHOME" ]]; then
+        mkdir -p "$VSHOME"
+        if [[ $? -ne 0 ]]; then
+            colorEcho {$RED}  "create $VSHOME fails"
+            return 1
+        fi
+    fi
+
+
+
+    sysArch
+    # extract local file
+    if [[ $LOCAL_INSTALL -eq 1 ]]; then
+        echo "Installing verysync via local file"
+        installSoftware unzip || return $?
+        rm -rf /tmp/verysync
+        extract $LOCAL || return $?
+        FILEVDIS=`ls /tmp/verysync |grep "verysync-linux-${VDIS}-v" |cut -d "-" -f3`
+        SYSTEM=`ls /tmp/verysync |grep "verysync-linux-${VDIS}-v" |cut -d "-" -f2`
+        if [[ ${SYSTEM} != "linux" ]]; then
+            colorEcho ${RED} "The local verysync can not be installed in linux."
+            return 1
+        elif [[ ${FILEVDIS} != ${VDIS} ]]; then
+            colorEcho ${RED} "The local verysync can not be installed in ${ARCH} system."
+            return 1
+        else
+            NEW_VER=`ls /tmp/verysync |grep "verysync-linux-${VDIS}-v" |cut -d "-" -f4,5`
+        fi
+    else
+        # download via network and extract
+        installSoftware "curl" || return $?
+        getVersion
+        RETVAL="$?"
+        if [[ $RETVAL == 0 ]] && [[ "$FORCE" != "1" ]]; then
+            colorEcho ${BLUE} "Latest version ${NEW_VER} is already installed."
+            return
+        elif [[ $RETVAL == 3 ]]; then
+            return 3
+        else
+            colorEcho ${BLUE} "Installing verysync ${NEW_VER} on ${ARCH}"
+            downloadVerysync || return $?
+            installSoftware unzip || return $?
+            extract ${ZIPFILE} || return $?
+        fi
+    fi
+    if pgrep "verysync" > /dev/null ; then
+        VERYSYNC_RUNNING=1
+        stopVerysync
+    fi
+    installVerysync || return $?
+    installInitScript || return $?
+    if [[ ${VERYSYNC_RUNNING} -eq 1 ]];then
+        colorEcho ${BLUE} "Restarting verysync service."
+        startVerysync
+    fi
+    colorEcho ${GREEN} "Verysync ${NEW_VER} is installed."
+    rm -rf /tmp/verysync
+    return 0
+}
+
+main
diff --git a/Coding/verysync-installer/go-install.sh b/Coding/verysync-installer/go-install.sh
new file mode 100644
index 0000000..d4c74b7
--- /dev/null
+++ b/Coding/verysync-installer/go-install.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+VERSION=1.0
+TARFILE=verysync-linux-installer-${VERSION}.tar
+TARURL=http://www.verysync.com/shell/verysync-linux-installer/$TARFILE
+
+CURL=`command -v curl  2>/dev/null`
+WGET=`command -v wget  2>/dev/null`
+
+#######color code########
+RED="31m"      # Error message
+GREEN="32m"    # Success message
+YELLOW="33m"   # Warning message
+BLUE="36m"     # Info message
+
+colorEcho(){
+    COLOR=$1
+    echo -e "\033[${COLOR}${@:2}\033[0m"
+}
+
+if [[ "$CURL" == "" && "$WGET" == "" ]]; then
+	colorEcho ${RED} "Did not find the wget or curl command"
+	exit 1;
+fi
+
+
+if [[ "$CURL" == "" ]]; then
+	CURL="$WGET -k -O-"
+else
+	CURL="$CURL --connect-timeout 10 -k"
+fi
+
+
+colorEcho $GREEN "Downloading from $TARURL"
+$CURL $TARURL > $TARFILE
+if [[ $? -ne 0 ]]; then
+    colorEcho ${RED} "Failed to fetch $TARURL Please check your network or try again."
+    exit 3
+fi
+
+colorEcho $GREEN "Extracting installer"
+
+mkdir -p verysync-installer
+cd verysync-installer && tar xf "../$TARFILE"
+if [[ $? -ne 0 ]]; then
+	colorEcho ${RED} "Failed to extract verysync-installer."
+	exit 4
+fi
+
+colorEcho $GREEN "Processing ..."
+./go-inst.sh $@
+
diff --git a/Coding/verysync-installer/start-stop-daemon/amd64 b/Coding/verysync-installer/start-stop-daemon/amd64
new file mode 100644
index 0000000..0935ab8
--- /dev/null
+++ b/Coding/verysync-installer/start-stop-daemon/amd64
Binary files differ
diff --git a/Coding/verysync-installer/start-stop-daemon/arm b/Coding/verysync-installer/start-stop-daemon/arm
new file mode 100644
index 0000000..1f51163
--- /dev/null
+++ b/Coding/verysync-installer/start-stop-daemon/arm
Binary files differ
diff --git a/Coding/verysync-installer/start-stop-daemon/arm64 b/Coding/verysync-installer/start-stop-daemon/arm64
new file mode 100644
index 0000000..9de8d43
--- /dev/null
+++ b/Coding/verysync-installer/start-stop-daemon/arm64
Binary files differ
diff --git a/Coding/verysync-installer/start-stop-daemon/i386 b/Coding/verysync-installer/start-stop-daemon/i386
new file mode 100644
index 0000000..22d5d68
--- /dev/null
+++ b/Coding/verysync-installer/start-stop-daemon/i386
Binary files differ
diff --git a/ConnectionStrings.config b/ConnectionStrings.config
new file mode 100644
index 0000000..f0cd6c0
--- /dev/null
+++ b/ConnectionStrings.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<connectionStrings>
+	<remove name="sqlserver" />
+	<remove name="mysql" />
+	<remove name="oracle" />
+ 	<add name="sqlserver" connectionString="Server=S908406;User Id=user;Pwd=Whir_ezEIP5_shxyxx201709122601;DataBase=Whir_ezEIP5_shxyxx201709122601; Persist Security Info=True;" providerName="System.Data.SqlClient"/>
+	<add name="mysql" connectionString="server=192.168.1.201;database=whir_ezeip_dev;user id=netuser;password=netuser2008;Allow User Variables=true;CharSet=utf8;" providerName="MySql" />
+	<add name="oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.201)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=ezeip;Password=123456;" providerName="Oracle" />
+</connectionStrings>
\ No newline at end of file
diff --git a/bmw-login.xml b/bmw-login.xml
new file mode 100644
index 0000000..7aafee1
--- /dev/null
+++ b/bmw-login.xml
@@ -0,0 +1,299 @@
+<%@page import="org.apache.struts2.components.Include"%>
+<%@ page language="java" pageEncoding="UTF-8"%>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<%
+	if(session.getAttribute("userId") != null){
+		out.print("<script>window.location='index.jsp';</script>");
+	}
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<%
+	response.setHeader("Pragma","No-cache");
+	response.setHeader("Cache-Control","no-cache");
+	response.setDateHeader("Expires", -10);
+%>
+	<link rel="icon" href="image/favicon.ico" type="image/x-icon" /> 
+	<link rel="shortcut icon" href="image/favicon.ico" type="image/x-icon" /> 
+	<title><s:property value="%{getText('login.title')}"/></title>
+	<meta http-equiv="X-UA-Compatible" content="IE=11; IE=10; IE=9; IE=EDGE" /> 
+	<meta http-equiv="keywords" content='<s:property value="%{getText(\'login.keywords\')}"/>' />
+	<meta http-equiv="description" content='<s:property value="%{getText(\'login.description')}"/>' />
+	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" type="text/css" href="css/pepperGrinder/easyui.css" />
+	<link rel="stylesheet" type="text/css" href="css/color.css" />
+	<link rel="stylesheet" type="text/css" href="css/icon.css" />
+	<script type="text/javascript" src="js/jquery.min.js"></script>
+	<script type="text/javascript" src="js/jquery.easyui.min.js"></script>
+	<script type="text/javascript" src="js/locale/easyui-lang-zh_CN.js"></script>
+	<style> body { font-family:Verdana, Arial, Helvetica, sans-serif; } </style>
+	<script type="text/javascript" src="js/common.js" ></script>
+	<script type="text/javascript" src="js/jquery.md5.js"></script>
+	
+	<style type="text/css">
+	.body-style{
+		-moz-user-select: none; /*火狐*/
+		-webkit-user-select: none; /*webkit浏览器*/
+		-ms-user-select: none; /*IE10*/
+		-khtml-user-select: none; /*早期浏览器*/
+		user-select: none;
+	}
+	.bg {	
+	    filter: url(blur.svg#blur);
+	    -webkit-filter: blur(3px);
+	       -moz-filter: blur(3px);
+	        -ms-filter: blur(3px);    
+	            filter: blur(3px);
+	    
+	    filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3, MakeShadow=false); /* IE6~IE9 */
+	}
+	.title{
+		text-shadow:#000 5px 5px 5px;
+	}
+	.apanel-style{
+	    padding: 16px;
+	    background: #F7F7F7;
+	    opacity:0.8;
+	    width:300px;
+	    border-radius:10px;
+	    text-align:center;
+	    margin:0 auto;  
+		text-align:center; 
+	}
+	.panel-style{
+	    padding: 16px;
+	    background: #F7F7F7;
+	    opacity:0.8;
+	    width:300px;
+	    height:250px;
+	    border-radius:10px;
+	    text-align:center;
+	    margin:0 auto;  
+		text-align:center; 
+	}
+	.form-style{
+	    font: 95% Microsoft YaHei;
+	    max-width: 300px;
+	    margin: 0 auto;
+	    padding: 16px;
+	   
+	}
+	
+	</style>
+	
+	<script type="text/javascript">
+	$(function() {
+		var url = window.location.href;
+		
+		if(url.indexOf("mmp.lingyue-digital.com")<=0){
+			$("#text1Div").animate({ top: '12%', opacity: 0.9 }, 300, function(){ $("#text2Div").animate({ top: '26%', opacity: 0.9 }, 300, function(){
+		    		$("#registerDiv").hide();
+			$("#loginDiv").hide();
+			$("#redirectDiv").animate({ top: '42%', opacity: 1 }, 300);
+		    	}); });
+			
+			return;
+		}
+
+		setInterval("ChangeBackground()",10000);
+	    
+		$.ajax({
+		    type: "post",
+		    url: 'validateCdkeysAjax',
+		    success: function (data) {
+		    	$("#text1Div").animate({ top: '12%', opacity: 0.9 }, 300, function(){ $("#text2Div").animate({ top: '26%', opacity: 0.9 }, 300, function(){
+		    		if(data.flag == "1"){
+		    			$("#type").val("1");
+		    			$("#registerDiv").hide();
+						$("#loginDiv").animate({ top: '42%', opacity: 1 }, 300);
+					}else{
+						$("#type").val("2");
+						$("#loginDiv").hide();
+						$("#registerDiv").animate({ top: '42%', opacity: 1 }, 300);
+					}
+		    	}); });
+		    }
+		});
+		
+		if ("undefined" == typeof(document.body.style.maxHeight)) {
+			var info = '<s:property value="%{getText('login.browseSupportInfo')}"/>';
+			$("#browseSupportInfo").html(info);
+		} 
+		
+		$("#account").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#account").textbox('setValue', $(this).val());
+			}
+		});
+		
+		$("#passwordTb").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#passwordTb").textbox('setValue', $(this).val());
+			}
+		});
+		
+		$("#cdkey").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#cdkey").textbox('setValue', $(this).val());
+			}
+		});
+	});
+	
+	$(document).keydown(function(event){
+		var mykeyCode = event.which;
+		if (/msie/.test(navigator.userAgent.toLowerCase())){
+			mykeyCode = event.keyCode;
+		}
+		switch(mykeyCode) {
+			case 13:
+				if($("#type").val() == "1"){
+					login();
+				}
+				if($("#type").val() == "2"){
+					register();
+				}
+		}
+	}); 
+	
+	function login(){
+		var account = $("#account").textbox("getValue");
+		var password = $("#passwordTb").textbox("getValue");
+		var cdkey = $("#cdkey").textbox("getValue");
+
+		if($.trim(account) == ""){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.accountHint\')}"/>');
+			$('#account').next().find('input').focus();
+			return;
+		}
+		
+		if($.trim(password) == ''){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.passwordHint\')}"/>');
+			$('#password').next().find('input').focus();
+			return;
+		}
+		
+		if($.trim(cdkey) == ''){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.cdkeyHint\')}"/>');
+			$('#cdkey').next().find('input').focus();
+			return;
+		}
+		
+		$("#loginBtn").linkbutton('disable');
+		$("#loginBtn").linkbutton({text: '登录中。。。'});
+		console.log(password)
+		$("#password").val($.md5(password));
+		$("#loginForm").submit();
+	}
+	
+	function register(){
+		var code = $("#code").textbox("getValue");
+
+		if($.trim(code) == ""){
+			$('#registerMessageDiv').html('<s:property value="%{getText(\'login.codeHint\')}"/>');
+			$('#code').next().find('input').focus();
+			return;
+		}
+		
+		$("#registerBtn").linkbutton('disable');
+		$("#registerBtn").linkbutton({text: '注册中。。。'});
+
+		$("#registerForm").submit();
+	}
+	
+	function changeCdkey(){
+		$("#cdkeyImg").attr("src","<%="image.jsp"%>?rnd=" + Math.random());
+	}
+	
+	var backImage = new Array("image/bg.jpg", "image/bg1.jpg", "image/bg2.jpg");
+	var backImageIndex = 0;
+	function ChangeBackground(){
+	$("#backgroundImage").fadeTo(2000, 0.1, function(){
+
+			if( ++backImageIndex >= backImage.length) {
+				backImageIndex=0;
+			}
+			$("#backgroundImage").attr('src',backImage[backImageIndex]).fadeTo(2000, 1);
+		});
+	}
+	
+	function gotoNewWeb(){
+		window.location.href = 'https://mmp.lingyue-digital.com/'
+	}
+	</script>
+	
+</head>
+
+<body style="margin:0;padding:0;overflow:hidden;background:#aaaaaa;" class="body-style">
+	<input type="hidden" id="type" />
+	<div id="backgroundImage" style="background-image:url(image/bg.jpg);background-size:cover;background-repeat:no-repeat;background-position:center;width:100%;position:absolute;z-index:-9999;left:0; right:0; top:0; bottom:0;margin:auto;height:100%;" class="bg"></div>
+	<div id="bmLogo" style="border:background-repeat:no-repeat;position:absolute;z-index:1;right:10px;top:10px;"><img src="image/bm_logo.png" style="height:200px;" /></div>
+	<div id="text1Div" class="title" style="position:absolute;;text-align:center;margin:0 auto;width:100%;top:10%;opacity:0;">
+		<h1 style="color: #ffffff;font-size: 55px;font-weight: blod;line-height: 60px;letter-spacing: 10px;font-family:Microsoft YaHei;">BMW多媒体推送平台</h1>
+	</div>
+	<div id="text2Div" class="title" style="position:absolute;text-align:center;margin:0 auto;width:100%;top:24%;opacity:0;">
+		<p style="color: #ffffff;font-size: 25px;font-weight: bold;margin-top: 20px;line-height: 2;">BMW Multi-Media Post System</p>
+	</div>
+	<div id="registerDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style panel-style" style="height:100px">
+			<s:form id="registerForm" action="register" theme="simple">
+			  	<div id="registerMessageDiv" style="height:25px;margin-bottom:5px;margin-left:2px;color:red;">
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="code" name="cdkeyBean.code" class="easyui-textbox" style="width:100%;height:170px;padding:11px" data-options="multiline:true,prompt:'<s:property value="%{getText(\'login.registerPlaceholder\')}"/>'" />
+		        </div>
+		        <div>
+		            <a id="registerBtn" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="register()">
+		                <span style="font-size:14px;"><s:property value="%{getText('login.register')}"/></span>
+		            </a>
+		        </div>
+		    </s:form>
+		</div>
+	</div>
+	<div id="loginDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style panel-style">
+			<s:form id="loginForm" action="login" theme="simple">
+				<div id="messageDiv" style="height:25px;margin-bottom:5px;margin-left:2px;color:red;">
+			  		${userBean.errorMsg}
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="account" name="userBean.account" class="easyui-textbox" style="width:100%;height:40px;padding:11px" data-options="prompt:'<s:property value="%{getText(\'login.accountPlaceholder\')}"/>',iconCls:'icon-man',iconWidth:38" />
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="passwordTb" class="easyui-textbox" type="password" style="width:100%;height:40px;padding:12px" autocomplete="off" data-options="prompt:'<s:property value="%{getText(\'login.passwordPlaceholder\')}"/>',iconCls:'icon-lock',iconWidth:38" />
+		        	<input id="password" name="userBean.password" type="hidden" />
+			</div>
+		        <div style="margin-bottom:15px">
+		        	<table width="100%" cellpadding="0" cellspacing="0" border="0">
+						<tr>
+						<td width="50%"><input id="cdkey" name="userBean.cdkey" class="easyui-textbox" style="width:100%;height:40px;padding:12px" data-options="prompt:'<s:property value="%{getText(\'login.cdkeyPlaceholder\')}"/>'" /></td>
+						<td width="30%"><img id="cdkeyImg" onclick="changeCdkey()" style="vertical-align:middle;margin-left:10px;cursor:pointer;" src="<%="image.jsp"%>" /></td>
+						</tr>
+					</table>
+		        </div>
+		        <div>
+		            <a id="loginBtn" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="login()">
+		                <span style="font-size:14px;"><s:property value="%{getText(\'login.login\')}"/></span>
+		            </a>
+		        </div>
+			</s:form>
+		</div>
+	</div>
+	<div id="redirectDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style apanel-style">
+			<div>
+				<a class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="gotoNewWeb()">
+					<span style="font-size:14px;">网址已变更,点击跳转</span>
+				</a>
+			</div>
+		</div>
+	</div>
+	<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" style="position: fixed; left: -1000px; height: -1000px;">
+        <defs>
+	        <filter id="blur">
+	            <feGaussianBlur stdDeviation="10" />
+	        </filter>
+    	</defs>
+    </svg>
+</body>
+</html>
\ No newline at end of file
diff --git a/bmw-server.xml b/bmw-server.xml
new file mode 100644
index 0000000..2c6b4cf
--- /dev/null
+++ b/bmw-server.xml
@@ -0,0 +1,160 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- Note:  A "Server" is not itself a "Container", so you may not
+     define subcomponents such as "Valves" at this level.
+     Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
+  <!-- Security listener. Documentation at /docs/config/listeners.html
+  <Listener className="org.apache.catalina.security.SecurityListener" />
+  -->
+  <!--APR library loader. Documentation at /docs/apr.html -->
+  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+  <Listener className="org.apache.catalina.core.JasperListener" />
+  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+  <!-- Global JNDI resources
+       Documentation at /docs/jndi-resources-howto.html
+  -->
+  <GlobalNamingResources>
+    <!-- Editable user database that can also be used by
+         UserDatabaseRealm to authenticate users
+    -->
+    <Resource name="UserDatabase" auth="Container"
+              type="org.apache.catalina.UserDatabase"
+              description="User database that can be updated and saved"
+              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+              pathname="conf/tomcat-users.xml" />
+  </GlobalNamingResources>
+
+  <!-- A "Service" is a collection of one or more "Connectors" that share
+       a single "Container" Note:  A "Service" is not itself a "Container",
+       so you may not define subcomponents such as "Valves" at this level.
+       Documentation at /docs/config/service.html
+   -->
+  <Service name="Catalina">
+
+    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
+    <!--
+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
+        maxThreads="150" minSpareThreads="4"/>
+    -->
+
+
+    <!-- A "Connector" represents an endpoint by which requests are received
+         and responses are returned. Documentation at :
+         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
+         Java AJP  Connector: /docs/config/ajp.html
+         APR (HTTP/AJP) Connector: /docs/apr.html
+         Define a non-SSL HTTP/1.1 Connector on port 8888
+    -->
+	
+    <Connector port="8888" protocol="HTTP/1.1"
+               connectionTimeout="5000"
+               server="seeyoo"
+               redirectPort="8888" URIEncoding="UTF-8" />
+	
+    <!-- A "Connector" using the shared thread pool-->
+    <!--
+    <Connector executor="tomcatThreadPool"
+               port="8888" protocol="HTTP/1.1"
+               connectionTimeout="8000"
+               redirectPort="8888" />
+    -->
+    <!-- Define a SSL HTTP/1.1 Connector on port 8443
+         This connector uses the BIO implementation that requires the JSSE
+         style configuration. When using the APR/native implementation, the
+         OpenSSL style configuration is required as described in the APR/native
+         documentation 
+		 
+		 protocol="org.apache.coyote.http11.Http11NioProtocol" 
+		 org.apache.coyote.http11.Http11Protocol
+		 ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,
+    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
+    TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"
+    -->
+    
+    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
+               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
+               clientAuth="false" sslProtocol="TLS" 
+			   keystoreFile="digital.pfx" keystoreType="PKCS12" keystorePass="bmwmmp"
+			   connectionTimeout="5000" server="seeyoo"	URIEncoding="UTF-8"		
+ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,
+    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
+    TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"			   
+			   />
+    
+
+    <!-- Define an AJP 1.3 Connector on port 8889 
+    <Connector port="8889" protocol="AJP/1.3" redirectPort="8443" />
+    -->
+
+    <!-- An Engine represents the entry point (within Catalina) that processes
+         every request.  The Engine implementation for Tomcat stand alone
+         analyzes the HTTP headers included with the request, and passes them
+         on to the appropriate Host (virtual host).
+         Documentation at /docs/config/engine.html -->
+
+    <!-- You should set jvmRoute to support load-balancing via AJP ie :
+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
+    -->
+    <Engine name="Catalina" defaultHost="mmp.lingyue-digital.com">
+
+      <!--For clustering, please take a look at documentation at:
+          /docs/cluster-howto.html  (simple how to)
+          /docs/config/cluster.html (reference documentation) -->
+      <!--
+      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
+      -->
+
+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+           via a brute-force attack -->
+      <Realm className="org.apache.catalina.realm.LockOutRealm">
+        <!-- This Realm uses the UserDatabase configured in the global JNDI
+             resources under the key "UserDatabase".  Any edits
+             that are performed against this UserDatabase are immediately
+             available for use by the Realm.  -->
+        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+               resourceName="UserDatabase"/>
+      </Realm>
+
+      <Host name="mmp.lingyue-digital.com"  appBase="webapps"
+            unpackWARs="true" autoDeploy="true">
+
+        <!-- SingleSignOn valve, share authentication between web applications
+             Documentation at: /docs/config/valve.html -->
+        <!--
+        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+        -->
+		<Context docBase="D:\DS\Tomcat\webapps\mps" path="" reloadable="false" />
+        <!-- Access log processes all example.
+             Documentation at: /docs/config/valve.html
+             Note: The pattern used is equivalent to using pattern="common" -->
+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
+               prefix="localhost_access_log." suffix=".txt"
+               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
+
+      </Host>
+    </Engine>
+  </Service>
+</Server>
diff --git a/login.jsp b/login.jsp
new file mode 100644
index 0000000..cd339f6
--- /dev/null
+++ b/login.jsp
@@ -0,0 +1,299 @@
+锘�<%@page import="org.apache.struts2.components.Include"%>
+<%@ page language="java" pageEncoding="UTF-8"%>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<%
+	if(session.getAttribute("userId") != null){
+		out.print("<script>window.location='index.jsp';</script>");
+	}
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<%
+	response.setHeader("Pragma","No-cache");
+	response.setHeader("Cache-Control","no-cache");
+	response.setDateHeader("Expires", -10);
+%>
+	<link rel="icon" href="image/favicon.ico" type="image/x-icon" /> 
+	<link rel="shortcut icon" href="image/favicon.ico" type="image/x-icon" /> 
+	<title><s:property value="%{getText('login.title')}"/></title>
+	<meta http-equiv="X-UA-Compatible" content="IE=11; IE=10; IE=9; IE=EDGE" /> 
+	<meta http-equiv="keywords" content='<s:property value="%{getText(\'login.keywords\')}"/>' />
+	<meta http-equiv="description" content='<s:property value="%{getText(\'login.description')}"/>' />
+	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" type="text/css" href="css/pepperGrinder/easyui.css" />
+	<link rel="stylesheet" type="text/css" href="css/color.css" />
+	<link rel="stylesheet" type="text/css" href="css/icon.css" />
+	<script type="text/javascript" src="js/jquery.min.js"></script>
+	<script type="text/javascript" src="js/jquery.easyui.min.js"></script>
+	<script type="text/javascript" src="js/locale/easyui-lang-zh_CN.js"></script>
+	<style> body { font-family:Verdana, Arial, Helvetica, sans-serif; } </style>
+	<script type="text/javascript" src="js/common.js" ></script>
+	<script type="text/javascript" src="js/jquery.md5.js"></script>
+	
+	<style type="text/css">
+	.body-style{
+		-moz-user-select: none; /*鐏嫄*/
+		-webkit-user-select: none; /*webkit娴忚鍣�*/
+		-ms-user-select: none; /*IE10*/
+		-khtml-user-select: none; /*鏃╂湡娴忚鍣�*/
+		user-select: none;
+	}
+	.bg {	
+	    filter: url(blur.svg#blur);
+	    -webkit-filter: blur(3px);
+	       -moz-filter: blur(3px);
+	        -ms-filter: blur(3px);    
+	            filter: blur(3px);
+	    
+	    filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=3, MakeShadow=false); /* IE6~IE9 */
+	}
+	.title{
+		text-shadow:#000 5px 5px 5px;
+	}
+	.apanel-style{
+	    padding: 16px;
+	    background: #F7F7F7;
+	    opacity:0.8;
+	    width:300px;
+	    border-radius:10px;
+	    text-align:center;
+	    margin:0 auto;  
+		text-align:center; 
+	}
+	.panel-style{
+	    padding: 16px;
+	    background: #F7F7F7;
+	    opacity:0.8;
+	    width:300px;
+	    height:250px;
+	    border-radius:10px;
+	    text-align:center;
+	    margin:0 auto;  
+		text-align:center; 
+	}
+	.form-style{
+	    font: 95% Microsoft YaHei;
+	    max-width: 300px;
+	    margin: 0 auto;
+	    padding: 16px;
+	   
+	}
+	
+	</style>
+	
+	<script type="text/javascript">
+	$(function() {
+		var url = window.location.href;
+		
+		<!--if(url.indexOf("mmp.lingyue-digital.com")<=0){
+			$("#text1Div").animate({ top: '12%', opacity: 0.9 }, 300, function(){ $("#text2Div").animate({ top: '26%', opacity: 0.9 }, 300, function(){
+		    		$("#registerDiv").hide();
+			$("#loginDiv").hide();
+			$("#redirectDiv").animate({ top: '42%', opacity: 1 }, 300);
+		    	}); });
+			
+			return;
+		}-->
+
+		setInterval("ChangeBackground()",10000);
+	    
+		$.ajax({
+		    type: "post",
+		    url: 'validateCdkeysAjax',
+		    success: function (data) {
+		    	$("#text1Div").animate({ top: '12%', opacity: 0.9 }, 300, function(){ $("#text2Div").animate({ top: '26%', opacity: 0.9 }, 300, function(){
+		    		if(data.flag == "1"){
+		    			$("#type").val("1");
+		    			$("#registerDiv").hide();
+						$("#loginDiv").animate({ top: '42%', opacity: 1 }, 300);
+					}else{
+						$("#type").val("2");
+						$("#loginDiv").hide();
+						$("#registerDiv").animate({ top: '42%', opacity: 1 }, 300);
+					}
+		    	}); });
+		    }
+		});
+		
+		if ("undefined" == typeof(document.body.style.maxHeight)) {
+			var info = '<s:property value="%{getText('login.browseSupportInfo')}"/>';
+			$("#browseSupportInfo").html(info);
+		} 
+		
+		$("#account").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#account").textbox('setValue', $(this).val());
+			}
+		});
+		
+		$("#passwordTb").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#passwordTb").textbox('setValue', $(this).val());
+			}
+		});
+		
+		$("#cdkey").textbox('textbox').bind('keydown', function(e){
+			if (e.keyCode == 13){
+				$("#cdkey").textbox('setValue', $(this).val());
+			}
+		});
+	});
+	
+	$(document).keydown(function(event){
+		var mykeyCode = event.which;
+		if (/msie/.test(navigator.userAgent.toLowerCase())){
+			mykeyCode = event.keyCode;
+		}
+		switch(mykeyCode) {
+			case 13:
+				if($("#type").val() == "1"){
+					login();
+				}
+				if($("#type").val() == "2"){
+					register();
+				}
+		}
+	}); 
+	
+	function login(){
+		var account = $("#account").textbox("getValue");
+		var password = $("#passwordTb").textbox("getValue");
+		var cdkey = $("#cdkey").textbox("getValue");
+
+		if($.trim(account) == ""){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.accountHint\')}"/>');
+			$('#account').next().find('input').focus();
+			return;
+		}
+		
+		if($.trim(password) == ''){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.passwordHint\')}"/>');
+			$('#password').next().find('input').focus();
+			return;
+		}
+		
+		if($.trim(cdkey) == ''){
+			$('#messageDiv').html('<s:property value="%{getText(\'login.cdkeyHint\')}"/>');
+			$('#cdkey').next().find('input').focus();
+			return;
+		}
+		
+		$("#loginBtn").linkbutton('disable');
+		$("#loginBtn").linkbutton({text: '鐧诲綍涓�傘�傘��'});
+		console.log(password)
+		$("#password").val($.md5(password));
+		$("#loginForm").submit();
+	}
+	
+	function register(){
+		var code = $("#code").textbox("getValue");
+
+		if($.trim(code) == ""){
+			$('#registerMessageDiv').html('<s:property value="%{getText(\'login.codeHint\')}"/>');
+			$('#code').next().find('input').focus();
+			return;
+		}
+		
+		$("#registerBtn").linkbutton('disable');
+		$("#registerBtn").linkbutton({text: '娉ㄥ唽涓�傘�傘��'});
+
+		$("#registerForm").submit();
+	}
+	
+	function changeCdkey(){
+		$("#cdkeyImg").attr("src","<%="image.jsp"%>?rnd=" + Math.random());
+	}
+	
+	var backImage = new Array("image/bg.jpg", "image/bg1.jpg", "image/bg2.jpg");
+	var backImageIndex = 0;
+	function ChangeBackground(){
+	$("#backgroundImage").fadeTo(2000, 0.1, function(){
+
+			if( ++backImageIndex >= backImage.length) {
+				backImageIndex=0;
+			}
+			$("#backgroundImage").attr('src',backImage[backImageIndex]).fadeTo(2000, 1);
+		});
+	}
+	
+	function gotoNewWeb(){
+		window.location.href = 'https://mmp.lingyue-digital.com/'
+	}
+	</script>
+	
+</head>
+
+<body style="margin:0;padding:0;overflow:hidden;background:#aaaaaa;" class="body-style">
+	<input type="hidden" id="type" />
+	<div id="backgroundImage" style="background-image:url(image/bg.jpg);background-size:cover;background-repeat:no-repeat;background-position:center;width:100%;position:absolute;z-index:-9999;left:0; right:0; top:0; bottom:0;margin:auto;height:100%;" class="bg"></div>
+	<div id="bmLogo" style="border:background-repeat:no-repeat;position:absolute;z-index:1;right:10px;top:10px;"><img src="image/bm_logo.png" style="height:200px;" /></div>
+	<div id="text1Div" class="title" style="position:absolute;;text-align:center;margin:0 auto;width:100%;top:10%;opacity:0;">
+		<h1 style="color: #ffffff;font-size: 55px;font-weight: blod;line-height: 60px;letter-spacing: 10px;font-family:Microsoft YaHei;">BMW澶氬獟浣撴帹閫佸钩鍙�</h1>
+	</div>
+	<div id="text2Div" class="title" style="position:absolute;text-align:center;margin:0 auto;width:100%;top:24%;opacity:0;">
+		<p style="color: #ffffff;font-size: 25px;font-weight: bold;margin-top: 20px;line-height: 2;">BMW Multi-Media Post System</p>
+	</div>
+	<div id="registerDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style panel-style" style="height:100px">
+			<s:form id="registerForm" action="register" theme="simple">
+			  	<div id="registerMessageDiv" style="height:25px;margin-bottom:5px;margin-left:2px;color:red;">
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="code" name="cdkeyBean.code" class="easyui-textbox" style="width:100%;height:170px;padding:11px" data-options="multiline:true,prompt:'<s:property value="%{getText(\'login.registerPlaceholder\')}"/>'" />
+		        </div>
+		        <div>
+		            <a id="registerBtn" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="register()">
+		                <span style="font-size:14px;"><s:property value="%{getText('login.register')}"/></span>
+		            </a>
+		        </div>
+		    </s:form>
+		</div>
+	</div>
+	<div id="loginDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style panel-style">
+			<s:form id="loginForm" action="login" theme="simple">
+				<div id="messageDiv" style="height:25px;margin-bottom:5px;margin-left:2px;color:red;">
+			  		${userBean.errorMsg}
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="account" name="userBean.account" class="easyui-textbox" style="width:100%;height:40px;padding:11px" data-options="prompt:'<s:property value="%{getText(\'login.accountPlaceholder\')}"/>',iconCls:'icon-man',iconWidth:38" />
+		        </div>
+		        <div style="margin-bottom:15px">
+		            <input id="passwordTb" class="easyui-textbox" type="password" style="width:100%;height:40px;padding:12px" autocomplete="off" data-options="prompt:'<s:property value="%{getText(\'login.passwordPlaceholder\')}"/>',iconCls:'icon-lock',iconWidth:38" />
+		        	<input id="password" name="userBean.password" type="hidden" />
+			</div>
+		        <div style="margin-bottom:15px">
+		        	<table width="100%" cellpadding="0" cellspacing="0" border="0">
+						<tr>
+						<td width="50%"><input id="cdkey" name="userBean.cdkey" class="easyui-textbox" style="width:100%;height:40px;padding:12px" data-options="prompt:'<s:property value="%{getText(\'login.cdkeyPlaceholder\')}"/>'" /></td>
+						<td width="30%"><img id="cdkeyImg" onclick="changeCdkey()" style="vertical-align:middle;margin-left:10px;cursor:pointer;" src="<%="image.jsp"%>" /></td>
+						</tr>
+					</table>
+		        </div>
+		        <div>
+		            <a id="loginBtn" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="login()">
+		                <span style="font-size:14px;"><s:property value="%{getText(\'login.login\')}"/></span>
+		            </a>
+		        </div>
+			</s:form>
+		</div>
+	</div>
+	<div id="redirectDiv" style="text-align:center;margin: 0 auto;width:100%;top:38%; position:absolute;opacity:0;">
+		<div class="form-style apanel-style">
+			<div>
+				<a class="easyui-linkbutton" data-options="iconCls:'icon-ok'" style="padding:5px 0px;width:100%;" onclick="gotoNewWeb()">
+					<span style="font-size:14px;">缃戝潃宸插彉鏇达紝鐐瑰嚮璺宠浆</span>
+				</a>
+			</div>
+		</div>
+	</div>
+	<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" style="position: fixed; left: -1000px; height: -1000px;">
+        <defs>
+	        <filter id="blur">
+	            <feGaussianBlur stdDeviation="10" />
+	        </filter>
+    	</defs>
+    </svg>
+</body>
+</html>
\ No newline at end of file
diff --git "a/markdown/SY2209iBP6EXBASY\0500551\051-14.022.71.007 2020.11.18.md" "b/markdown/SY2209iBP6EXBASY\0500551\051-14.022.71.007 2020.11.18.md"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/markdown/SY2209iBP6EXBASY\0500551\051-14.022.71.007 2020.11.18.md"
diff --git "a/markdown/\345\224\256\350\215\257.md" "b/markdown/\345\224\256\350\215\257.md"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/markdown/\345\224\256\350\215\257.md"

--
Gitblit v1.10.0