├── client ├── readme └── languages │ └── language.js ├── server └── readme ├── res ├── conf.png ├── reg.png ├── s2s.png ├── ipv4p2p.png ├── ipv6p2p.png ├── login.png ├── oper1.png ├── oper2.png ├── oper3.png ├── proxy.png ├── use_rdp.png ├── user_id.png ├── conf_exp.png ├── conf_s2s.png ├── config_s.png ├── donation.png ├── register.png ├── registerok.png ├── server-proxy.png ├── smarGateArch.png ├── github_source.png └── userdefineproxyer.png ├── app-release.apk ├── dynamic ├── readme.txt ├── linux_mini_arm32v0.40.5.tar ├── linux_mini_arm64v0.40.5.tar ├── linux_mini_x86v0.40.5.tar ├── windows_mini_x86v0.40.5.tar ├── linux_mini_mips32v0.40.5.tar ├── linux_mini_mips64v0.40.5.tar ├── linux_mini_riscv32v0.40.5.tar ├── linux_mini_riscv64v0.40.5.tar ├── linux_mini_x86_64v0.40.5.tar ├── linux_mini_mipsel32v0.40.5.tar ├── linux_mini_mipsel64v0.40.5.tar ├── macos_mini_universalv0.40.5.tar ├── linux_mini_loongarch64v0.40.5.tar └── linux_mini_mipsel32-uclibcv0.40.5.tar ├── linux_x86v0.40.5.tar ├── linux_arm32v0.40.5.tar ├── windows_x86v0.40.5.tar ├── linux_x86_64v0.40.5.tar ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── readme.md └── README_en.md /client/readme: -------------------------------------------------------------------------------- 1 | client for android。 2 | -------------------------------------------------------------------------------- /server/readme: -------------------------------------------------------------------------------- 1 | muit-platform server 2 | -------------------------------------------------------------------------------- /res/conf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/conf.png -------------------------------------------------------------------------------- /res/reg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/reg.png -------------------------------------------------------------------------------- /res/s2s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/s2s.png -------------------------------------------------------------------------------- /app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/app-release.apk -------------------------------------------------------------------------------- /res/ipv4p2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/ipv4p2p.png -------------------------------------------------------------------------------- /res/ipv6p2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/ipv6p2p.png -------------------------------------------------------------------------------- /res/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/login.png -------------------------------------------------------------------------------- /res/oper1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/oper1.png -------------------------------------------------------------------------------- /res/oper2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/oper2.png -------------------------------------------------------------------------------- /res/oper3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/oper3.png -------------------------------------------------------------------------------- /res/proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/proxy.png -------------------------------------------------------------------------------- /res/use_rdp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/use_rdp.png -------------------------------------------------------------------------------- /res/user_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/user_id.png -------------------------------------------------------------------------------- /res/conf_exp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/conf_exp.png -------------------------------------------------------------------------------- /res/conf_s2s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/conf_s2s.png -------------------------------------------------------------------------------- /res/config_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/config_s.png -------------------------------------------------------------------------------- /res/donation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/donation.png -------------------------------------------------------------------------------- /res/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/register.png -------------------------------------------------------------------------------- /dynamic/readme.txt: -------------------------------------------------------------------------------- 1 | mini size of the server.it depends [libssl.* libcrypto.*] dynamic! 2 | -------------------------------------------------------------------------------- /linux_x86v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/linux_x86v0.40.5.tar -------------------------------------------------------------------------------- /res/registerok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/registerok.png -------------------------------------------------------------------------------- /res/server-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/server-proxy.png -------------------------------------------------------------------------------- /res/smarGateArch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/smarGateArch.png -------------------------------------------------------------------------------- /linux_arm32v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/linux_arm32v0.40.5.tar -------------------------------------------------------------------------------- /res/github_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/github_source.png -------------------------------------------------------------------------------- /windows_x86v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/windows_x86v0.40.5.tar -------------------------------------------------------------------------------- /linux_x86_64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/linux_x86_64v0.40.5.tar -------------------------------------------------------------------------------- /res/userdefineproxyer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/res/userdefineproxyer.png -------------------------------------------------------------------------------- /dynamic/linux_mini_arm32v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_arm32v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_arm64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_arm64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_x86v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_x86v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/windows_mini_x86v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/windows_mini_x86v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_mips32v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_mips32v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_mips64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_mips64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_riscv32v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_riscv32v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_riscv64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_riscv64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_x86_64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_x86_64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_mipsel32v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_mipsel32v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_mipsel64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_mipsel64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/macos_mini_universalv0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/macos_mini_universalv0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_loongarch64v0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_loongarch64v0.40.5.tar -------------------------------------------------------------------------------- /dynamic/linux_mini_mipsel32-uclibcv0.40.5.tar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lazy-luo/smarGate/HEAD/dynamic/linux_mini_mipsel32-uclibcv0.40.5.tar -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /client/languages/language.js: -------------------------------------------------------------------------------- 1 | var g_languages = [ 2 | ["中文"//0 3 | ,"确 定"//1 4 | ,"取 消"//2 5 | ,"刷 新"//3 6 | ,"清缓存"//4 7 | ,"改密码"//5 8 | ,"保 存"//6 9 | ,"模式切换"//7 10 | ,"删 除"//8 11 | ,"登 录"//9 12 | ,"注 册"//10 13 | ,"返回登录"//11 14 | ,"移动网关"//12 15 | ,"用户登录"//13 16 | ,"用户名"//14 17 | ,"密码"//15 18 | ,"自动登录"//16 19 | ,"用户注册"//17 20 | ,"邀请码"//18 21 | ,"确认密码"//19 22 | ,"姓名"//20 23 | ,"联系电话"//21 24 | ,"邮箱"//22 25 | ,"用户协议"//23 26 | ,"必须填写邀请码"//24 27 | ,"描述"//25 28 | ,"基础信息"//26 29 | ,"发送 ↑ "//27 30 | ,"接收 ↓ "//28 31 | ,"总内存"//29 32 | ,"已用内存"//30 33 | ,"内存峰值"//31 34 | ,"状态"//32 35 | ,"在线"//33 36 | ,"离线"//34 37 | ,"系统状态"//35 38 | ,"工作线程"//36 39 | ,"空闲线程"//37 40 | ,"最大连接"//38 41 | ,"当前连接"//39 42 | ,"等待事件"//40 43 | ,"检测线程"//41 44 | ,"服务集合"//42 45 | ,"本地端口"//43 46 | ,"路由指向"//44 47 | ,"协议"//45 48 | ,"远程IP"//46 49 | ,"远程端口"//47 50 | ,"服务端"//48 51 | ,"修改配置"//49 52 | ,"官方代理"//50 53 | ,"访问点配置"//51 54 | ,"访问点序号"//52 55 | ,"访问点名称"//53 56 | ,"访问点描述"//54 57 | ,"协商端口号"//55 58 | ,"输入小于64的数字..."//56 59 | ,"输入节点名..."//57 60 | ,"输入简短描述..."//58 61 | ,"协商端口号默认不指定..."//59 62 | ,"必须输入访问点序号,且为<64的整数"//60 63 | ,"更改密码"//61 64 | ,"旧密码"//62 65 | ,"新密码"//63 66 | ,"恭喜您:注册请求成功,请务必妥善保管你的服务ID"//64 67 | ,"登录失败,请验证输入的用户名密码!"//65 68 | ,"登录中..."//66 69 | ,"注册失败,请确认信息填写无误!"//67 70 | ,"密码修改失败!!"//68 71 | ,"请等待..."//69 72 | ,"注册中..."//70 73 | ,"必须输入原密码"//71 74 | ,"密码不能为空"//72 75 | ,"新密码不能和原密码相同"//73 76 | ,"确认密码不一致"//74 77 | ,"访问点名称不能为空,且长度<64"//75 78 | ,"访问点简要描述不能为空,且长度<64"//76 79 | ,"必须填写邀请码"//77 80 | ,"必须填写用户名"//78 81 | ,"必须设置密码"//79 82 | ,"必须设置确认密码,且确保与密码一致"//80 83 | ,"必须填写昵称"//81 84 | ,"你真的要删除当前配置的代理点吗?"//82 85 | ,"正在自动登录,请稍后..."//83 86 | ,"网络不可用,请确认网络设置"//84 87 | ,"端口"//85 88 | ,"服务端模式"//86 89 | ,"访问点"//87 90 | ,"待检测"//88 91 | ,"连接检测中..."//89 92 | ,"旧版本"//90 93 | ,"登录失败!用户不存在或密码错误"//91 94 | ,"密码修改成功!请妥善保管您的密"//92 95 | ,"密码修改成功!下次登录需重新输入新密码"//93 96 | ,"注册失败!邀请码有误"//94 97 | ,"密码修改失败,请稍后再试"//95 98 | ,"转发配置错误[本地端口需大于1024]"//96 99 | ,"转发端口配置错误[需小于65536]"//97 100 | ,"远程端口配置错误,范围[1-65535]"//98 101 | ,"转发配置错误[端口冲突]"//99 102 | ,"转发配置错误[未知错误]"//100 103 | ,"配置修改成功!将在下次重启时生效"//101 104 | ,"移动网关将保持提供服务"//102 105 | ,"服务启动时间"//103 106 | ,"暴露服务集"//104 107 | ,"服务端代理"//105 108 | ,"请选择文件操作:"//106 109 | ,"上传"//107 110 | ,"下载"//108 111 | ,"文件管理"//109 112 | ,"文件名"//110 113 | ,"大小"//111 114 | ,"当前版本过低,不支持自动升级,请手动更新!"//112 115 | ,"自定义代理"//113 116 | ,"自定义代理 IP:port..."//114 117 | ,"访问Token"//115 118 | ,"代理服务器Token..."//116 119 | ,"P2P加密选项" //117 120 | ,"none"//118 121 | ,"first"//119 122 | ,"only"//120 123 | ,"序列号注册成功!"//121 124 | ,"序列号注册失败!"//122 125 | ,"序列号注册" //123 126 | ,"序列号" //124 127 | ,"必须输入序列号" //125 128 | ,"VIP 到期剩余时间(天):" //126 129 | ,"播放" //127 130 | ,"已发送定位请求..." //128 131 | ,"定位请求失败" //129 132 | ,"已成功获取定位信息" //130 133 | ,"请输入账号"//131 134 | ,"请输入密码"//132 135 | ,"账号最短为 5 个字符"//133 136 | ,"密码长度至少为 6 个字符"//134 137 | ,"邀请码必须输入数字,且不为0"//135 138 | ,"邮箱地址格式错误"//136 139 | ,"请输入邀请码"//137 140 | ,"请确认密码"//138 141 | ,"请输入电话号码"//139 142 | ,"请输入邮箱"//140 143 | ,"注册成功后,请于2小时内完成首次登录,用户名、密码请妥善保管,用户相关数据仅存储于本地。"//141 144 | ,"密码两次输入不一致"//142 145 | ,"设置"//143 146 | ,"左滑可以打开设置"//144 147 | ,"设置完成后,即时生效,你可以右滑返回"//145 148 | ,"语言选择"//146 149 | ,"常用设置"//147 150 | ,"高级设置"//148 151 | ,"操作确认"//149 152 | ,"确认删除该条收藏记录?"//150 153 | ,"系统免费用户"//151 154 | ,"确认删除该条代理记录?"//152 155 | ,"添加映射配置"//153 156 | ,"注意:请仔细核对,如输入序列号错误,须等待半小时才能继续注册"//154 157 | ,"下拉可以刷新"//155 158 | ,"释放立即刷新"//156 159 | ,"正在刷新..."//157 160 | ,"提示信息"//158 161 | ,"错误信息"//159 162 | ,"常用收藏"//160 163 | ,"为常用连接提供收藏"//161 164 | ,"请输入收藏标题"//162 165 | ,"加入收藏"//163 166 | ,"文件传输功能只能在P2P或自定义代理生效时使用"//164 167 | ,"您暂时没有此功能权限"//165 168 | ,"目标文件夹"//166 169 | ,"当前文件夹"//167 170 | ,"任务区"//168 171 | ,"可点击切换文件主机"//169 172 | ,"刷新操作需要30秒间隔"//170 173 | ,"操作失败,条目可能已添加" //171 174 | ,"是否切换为服务端模式?"//172 175 | ,"切换服务端/客户端模式后,需要重启APP才能生效!" //173 176 | ,"请输入姓名"//174 177 | ,"请间隔30秒后再试!"//175 178 | ,"新用户注册失败!"//176 179 | ,"网络太慢,数据加载超时!"//177 180 | ,"确认删除当前选中文件?"//178 181 | ,"确认传输当前选中文件?"//179 182 | ,"玩命加载中..."//180 183 | ,"请自行申请百度地图浏览器版AK。如首次使用地图,请在配置中设置AK"//181 184 | ,"AK码设置"//182 185 | ,"请输入百度地图浏览器版AK码"//183 186 | ,"地图"//184 187 | ,"描述"//185 188 | ,"备注设置"//186 189 | ,"请输入服务简短备注"//187 190 | ,"设置[电池优化]"//188 191 | ,"设置后台[无限制]"//189 192 | ,"关闭应用速冻"//190 193 | ,"允许后台高耗电"//191 194 | ,"前往[电池优化]-[应用名称],设置[不允许]"//192 195 | ,"设置MIUI系统后台配置为[无限制]"//193 196 | ,"前往[电池]-[应用名称],关闭[后台冻结]和[检测到异常时自动优化]"//194 197 | ,"前往[电池]-[后台耗电管理]-[应用名称],设置[允许后台高耗电]"//195 198 | ,"跳转设置失败"//196 199 | ,"未知机型,请自行设置后台运行权限"//197 200 | ], 201 | ["English" 202 | , "OK" //1 203 | , "Cancel" //2 204 | , "Refresh" //3 205 | , "Clear" //4 206 | , "Chpass" //5 207 | , "Save" //6 208 | , "Chmode" //7 209 | , "Delete" //8 210 | , "Login" //9 211 | , "Register" //10 212 | , "Back to login" //11 213 | , "SmarGate" //12 214 | , "User login" //13 215 | , "User name" //14 216 | , "Password" //15 217 | , "Auto login" //16 218 | , "User registration" //17 219 | , "Invitation NO" //18 220 | , "Confirm" //19 221 | , "Name" //20 222 | , "Phone NO" //21 223 | , "Mailbox" //22 224 | , "User Agreement" //23 225 | , "Invitation code must be filled in" //24 226 | , "Desc" //25 227 | , "Info" //26 228 | , "SND ↑ " //27 229 | , "RX ↓ " //28 230 | , "Tot-mem" //29 231 | , "Usage" //30 232 | , "Max-usage" //31 233 | , "Status" //32 234 | , "Online" //33 235 | , "Offline" //34 236 | , "Summery" //35 237 | , "Workers" //36 238 | , "Idles" //37 239 | , "Max-sockets" //38 240 | , "Connections" //39 241 | , "Pending" //40 242 | , "Products" //41 243 | , "Services" //42 244 | , "Local port" //43 245 | , "Routing to" //44 246 | , "Protocol" //45 247 | , "Peer IP" //46 248 | , "Peer port" //47 249 | , "Server" //48 250 | , "Configure" //49 251 | , "Agent" //50 252 | , "Endpoint configuration" // 51 253 | , "Endpoint IDX"//52 254 | , "Endpoint name" // 53 255 | , "Endpoint Desc" // 54 256 | , "Negotiation port" //55 257 | , "Enter a number less than 64..." //56 258 | , "Enter node name..." //57 259 | , "Enter a short description..." //58 260 | , "No need specified by default..." //59 261 | , "The access point number must be entered and is an integer of <64" //60 262 | , "Change password" //61 263 | , "Older" //62 264 | , "Newer" //63 265 | , "Congratulations: registration request is successful. Please keep your service ID properly" //64 266 | , "Login failed. Please verify the user name password you entered!"// 65 267 | , "Logging in..." //66 268 | , "Registration failed. Please confirm that the information is filled in correctly!"// 67 269 | , "Password modification failed!!"// 68 270 | , "Please wait..." //69 271 | , "Registered..." //70 272 | , "Must enter original password" //71 273 | , "Password cannot be empty" //72 274 | , "New password cannot be the same as the original password" //73 275 | , "Confirm password is inconsistent" //74 276 | , "Endpoint name cannot be empty and length is <64" //75 277 | , "Endpoint brief description cannot be empty and length is <64" //76 278 | , "Invitation code must be filled in" //77 279 | , "User name must be filled in" //78 280 | , "Password must be set" //79 281 | , "Confirm password must be set and be sure to be consistent with password" //80 282 | , "Must fill in nickname" //81 283 | , "Do you really want to delete the currently configured proxy point?"// 82 284 | , "Logging in automatically, please wait..." //83 285 | , "Network not available, please confirm network settings "//84 286 | , "Port" //85 287 | , "Server mode" //86 288 | , "EP" // 87 Endpoint 289 | , "Waiting for detection" //88 290 | , "Connection detection..." //89 291 | , "Old version" //90 292 | , "Login failed! User does not exist or password error "//91 293 | , "Password modified successfully! Please keep your secret in good condition "//92 294 | , "Password modified successfully! The next login requires a new password to be re entered "//93 295 | , "Registration failed! Invitation code error "//94 296 | , "Password modification failed. Please try again later "//95 297 | , "Forwarding configuration error [local port needs to be greater than 1024]" //96 298 | , "Forward port configuration error [less than 65536]" //97 299 | , "Remote port configuration error, range [1-65535]" //98 300 | , "Forward configuration error [port conflict]" //99 301 | , "Forward configuration error [unknown error]" //100 302 | , "Configuration modification succeeded! Will take effect on the next reboot "//101 303 | , "The SmarGate will remain in service" // 102 304 | , "Service start time" // 103 305 | , "Exposed services"//104 306 | , "Server Proxy"//105 307 | , "Please select a file operation:"//106 308 | , "upload"//107 309 | , "download"//108 310 | , "File Manager" //109 311 | , "file name" //110 312 | , "size" //111 313 | , "The current version is too low to support automatic upgrade, please update manually!" //112 314 | , "User proxy"//113 315 | , "User proxy IP:port..."//114 316 | , "Access token"//115 317 | , "Token of proxy server..."//116 318 | , "SSL for P2P" //117 319 | , "none"//118 320 | , "first"//119 321 | , "only"//120 322 | , "Successful license register!"//121 323 | , "Fault to license register!"//122 324 | , "License register" //123 325 | , "License key" //124 326 | , "license key must be filled" //125 327 | , "VIP exp-after-days:" //126 328 | , "Play" //127 329 | , "Location request has been sent..." //128 330 | , "Location request failed" //129 331 | , "Successfully obtained location information" //130 332 | , "Please enter your account"//131 333 | , "Please enter password"//132 334 | , "The minimum account length is 5 characters"//133 335 | , "The password length should be at least 6 characters"//134 336 | , "The invitation code must be entered as a number and not 0"//135 337 | , "Email address format error"//136 338 | , "Please enter the invitation code"//137 339 | , "Please confirm password"//138 340 | , "Please enter a phone number"//139 341 | , "Please enter your email address"//140 342 | , "After successful registration, please complete the first login within 2 hours. Please keep your username and password properly, and user related data is only stored locally."//141 343 | , "The password entered twice is inconsistent"//142 344 | , "Setting"//143 345 | , "Left swipe to open settings"//144 346 | , "After setting up, you can slide right to return"//145 347 | , "Language "//146 348 | , "Common Settings"//147 349 | , "Advanced Setting"//148 350 | , "Operate Confirm"//149 351 | , "Are you sure to delete this favorite record?"//150 352 | , "You are free users"//151 353 | , "Confirm deleting the proxy record?"//152 354 | , "Add mapping configuration" //153 355 | , "Attention: Please check carefully. If you enter the wrong serial number, you will need to wait for half an hour before continuing to register"//154 356 | , "Dropdown can refresh"//155 357 | , "Release and refresh immediately"//156 358 | , "Refreshing..."//157 359 | , "Information"//158 360 | , "Error"//159 361 | , "Favorites"//160 362 | , "Provide favorites for commonly used connections"//161 363 | , "Please enter the bookmark title"//162 364 | , "Add to favorites"//163 365 | , "The file transfer function can only be used when P2P or custom proxies are in effect"//164 366 | , "You currently do not have permission for this feature"//165 367 | , "Destination Folder"//166 368 | , "Current Folder"//167 369 | , "Mission Area"//168 370 | , "Click to switch file hosts"//169 371 | , "The refresh operation requires a 30 second interval"//170 372 | , "Operation failed, entry may have been added"//171 373 | , "Switch to server-side mode?"//172 374 | , "After switching between server/client mode, you need to restart the app to take effect!"//173 375 | , "Please enter your name"//174 376 | , "Please try again after a 30 second interval"//175 377 | , "New user registration failed!"//176 378 | , "The network is too slow, data loading timed out!"//177 379 | , "Confirm deleting the currently selected file?"//178 380 | , "Confirm the transfer of the currently selected file?"//179 381 | , "Loading..."//180 382 | , "Please apply for Baidu Map Browser version AK by yourself. If using the map for the first time, please set AK in the configuration"//181 383 | , "AK code setting"//182 384 | , "Enter AK code of the Baidu Map"//183 385 | , "Map"//184 386 | , "MEMO"//185 387 | , "Notes modify"//186 388 | , "Enter notes of the services"//187 389 | , "Settings [Battery Optimization]"//188 390 | , "Set up background [unlimited]"//189 391 | , "Close application quick freeze"//190 392 | , "Allow high power consumption in the background"//191 393 | , "Go to [Battery Optimization]-[App Name] and set [Not Allowed]"//192 394 | , "Set the MIUI system background configuration to [Unlimited]"//193 395 | , "Go to [Battery]-[App Name], turn off [Background Freeze] and [Automatic Optimization when Abnormality Detected]"//194 396 | , "Go to [Battery]-[Background Power Consumption Management]-[App Name] and set [Allow background high power consumption]"//195 397 | , "Load setting failed"//196 398 | , "Unknown model, please set background running permissions yourself"//197 399 | ] 400 | ]; 401 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # samrGate(SG) 中文 | [English](https://github.com/lazy-luo/smarGate/blob/master/README_en.md) 2 | 3 | ## SG是什么? 4 | * 是个跨网段远程端口映射工具 5 | * 支持内网到内网、内网到外网映射 6 | * 是个随身携带可灵活控制访问入口的工具 7 | * 所有配置操作都在app客户端,一眼看全、高度安全可控 8 | * 访问入口既可配置到app所在手机上,也能配置到任意SG服务端电脑上 9 | * 是个简单的远程文件管理工具 10 | * 可对手机及服务端所在服务器进行文件管理操作 11 | * 是个简单的socks代理工具 12 | * 是个简单的http(s)代理工具 13 | * ...... 14 | 15 | ## SG有什么特点? 16 | * 所有映射都通过app客户端进行配置,服务端运行时免配置 17 | * 支持服务端到APP及服务端到服务端的端口映射 18 | * 可以将服务端所在内网任意机器任意端口映射到app所在手机上,通过访问手机本地端口进行穿透访问 19 | * 可以通过app客户端配置,将A服务端内网任意主机任意端口映射到B服务端所在主机上 20 | * 支持链式代理 21 | * 支持多用户隔离 22 | * 支持ipv4/6,基于TCP进行P2P穿透 23 | * 支持自建代理进行数据转发 24 | * 支持数据隧道加密(TLS) 25 | * 支持自动数据隧道选择 26 | * 优先P2P,次选自定义代理,官方代理兜底 27 | * 支持自动版本升级及APP客户端上一键升级 28 | * socks及http(s)代理支持自定义ip白名单及域名白名单,支持CIDR格式IP段及域名统配符 29 | * 支持TCP协议服务,也支持UDP协议 30 | * UDP采用UDP over TCP模式 31 | * ...... 32 | 33 | ## SG能解决什么问题? 34 | * 无视内外网,安全访问内网资源的场景 35 | * 需要P2P高带宽安全传输的场景 36 | * 有公网IP,需要将内网服务发布出去的场景 37 | * ...... 38 | 39 | ## SG怎么使用? 40 | * 下载APP并注册 41 | * 下载合适的服务端版本,根据用户ID进行配置并运行 42 | * 登录APP进行端口映射配置 43 | * 使用配置的映射进行访问 44 | 45 | ## 有兴趣再细看 46 | 47 |
48 | 49 | 查看详细 50 | 51 | 52 | # 53 | ## 快速概览【快速上手手册】 【三方视频教学- B站】
54 | * 平台适配,支持linux、windows、macos、android(tob,小型机:hp-unix、solaris、AIX)
55 | * cpu架构,支持x86、arm、mips、riscv、LoongArch64(tob:alpha、PowerPC、SPRAC)
56 | * 注重安全,“内网”到“内网”的穿透,无需映射任何端口到外网,不更改任何防火墙配置
57 | * 注重带宽,”4G手机+v6宽带“采用P2P方式访问内网服务(基于TCP协议,v4支持NAT1-3穿透)
58 | * 注重节约,无需购买vps、无需公网IP;家中淘汰Android手机可做服务器
59 | * 注重可靠,随用随有,可7*24不间断服务,且不受UDP协议Qos之苦
60 | * 注重可控,客户端一点配置,且随时随地控制服务开启/关闭
61 | * 注重环保,免安装,体量小巧(mini版1MB左右) allinone,高性能且资源占用最少
62 | * 注重便携,无论工作或是度假,不管在任何地方,只要手机有网络,一切尽在掌控
63 | * ......如果这都是你想要的!请耐心继续往下看;如果你还想要...请提issue,【更新历史】也有看头哦
64 | * 免费,测试稳定后考虑开源.
65 | * 包含一个android客户端和需内网安装的服务端.
66 | 67 | ## APP端配置(必须)--- 无法正常使用典型情况 68 | * 必须配置“允许后台运行”权限,否则切后台即被系统断连 69 | * 必须配置“休眠时始终保持网络连接”,否则一旦休眠则被系统断连 70 | * 可以配置“允许自启动”权限,否则Android服务端模式下无法开机启动(v0.30及后续版本) 71 | * 可以配置“麦克风”权限,否则Android服务端无法提供语音监听功能(v0.30及后续版本) 72 | * 注意:SG官方代理不提供到港澳台及国外IP的数据转发 73 | ## smarGate是什么?
74 | #### 官方命名为“移动网关”,通过手机客户端将位于内网的服务端网络进行按需暴露,核心引擎采用c++实现。
75 | #### “移动网关”是用户私有网关,所有共享访问入口都在客户端,不是类似其它穿透工具主推的面向域名的公共访问入口。打个比方:smarGate是将防盗门随身携带,其它穿透产品是将防盗门放到公共场所,额...虽然需要钥匙,但有种职业叫开锁匠
76 | 77 | ##### 具备如下技术特点:
78 | * 安全性
79 | * 手机客户端作为主要的访问入口,按需开放,及时关闭。
80 | * 支持服务端间端口映射组网(v0.31及以后版本)。
81 | * 电脑可以接入手机热点或wifi环境下通过访问手机开放的端口穿透到内网进行访问(客户端会显示手机ip)。
82 | * 手机网络一般为私有网段别人无法访问。
83 | * 用户间隔离。
84 | * 扩展性
85 | * 基于内网网段代理,可以配合众多工具实现各种网络服务能力(telnet、ssh、http服务、内网摄像头、远程桌面等)
86 | * 面向极客,可访问自定义的内网服务(rpc)
87 | * 便利性
88 | * 手机客户端一点配置
89 | * 服务能力动态增减
90 | * 高性能
91 | * 0.1.1版本开始采用自主网络引擎,性能高,千元手机客户端能支持1千以上的并发共享访问
92 | * 高性能设计:
93 | * 跨平台实现 socket 多路复用,支持:poll、epoll、kqueue、port、select、IOCP 等模型
94 | * 采用 lock-free 算法
95 | * 线程池设计
96 | * socket 连接池
97 | * 多级任务队列
98 | * ...
99 |
100 | 101 | 附:交互示意图 102 | 103 |
104 |
105 | 106 | ## smarGate有什么主要功能?
107 | * 支持代理穿透
108 | * 官方提供免费的代理服务器(共享带宽,多人共用时比较慢,最佳实践为启用自有代理服务器)
109 | * 如果自己有云服务器(具备公网ip),用户可自定义自己的代理服务器,且在代理服务器上安装proxy_server。所有数据传输走用户配置的代理服务器(代理服务器需要证书,可自动生成也可配置已有证书)
110 | 111 | ``` 112 | 1、“代理服务器”配置如下(代理服务器必须允许任意端口“入站”连接): 113 | ``` 114 | ``` 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | ``` 133 | ``` 134 | 2、"服务端"中增加如下配置: 135 | ``` 136 | ``` 137 | ...... 138 | 139 | 140 | 144 | 145 | 146 | ...... 147 | 148 | 149 | 150 | ``` 151 | * 支持p2p通道
152 | * 使用TCP协议进行p2p穿透,提升安全性
153 | * 不是所有的网络都支持p2p,取决于两端NAT类型 154 | * v0.14以上版本,直接支持ipv6,且能提供防火墙穿透 155 | * P2P测试结论:一端是NAT4,另一端是NAT3或NAT4时无法打通
156 | 注:NAT1-〉Full Cone , NAT2-〉Restricted Cone , NAT3-〉Port Restricted Cone , NAT4-〉Symmetric
157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 |
服务端 NAT客户端 NATP2P成功
NAT1-3NAT1-3YES
NAT1-2NAT4YES
NAT4NAT1-2YES
NAT4NAT3-4NO
NAT3-4NAT4NO
165 | 166 | * 支持外网发布(有违安全设计理念,v0.31版本开放)
167 | * 其它内网穿透工具的主推模式,将内网服务直接映射到外网端口
168 | * 支持服务端之间的P2P端口映射(v0.31及以后版本)
169 | * 具体配置主要通过 ip@index方式支持
170 | 171 |
172 | 173 | 附:主要功能简述 174 | 175 | 176 | ``` 177 | 1、支持基于tcp的P2P连接隧道 178 | 。安全可靠,避免Qos 179 | 2、支持所有基于tcp的各类协议”透明代理” 180 | 。可代理所有内网tcp服务(ssh、rdp、smb、vnc、摄像头、数据库服务等) 181 | 3、支持HTTP、HTTPS to HTTP 182 | 。支持http-head rewrite,支持将https服务代理成http 183 | 4、支持udp over tcp 184 | 。支持udp协议的服务代理 185 | 5、透明方式(无需关注ipv6地址)支持ipv6隧道 186 | 。自动建立v6隧道,访问时始终使用v4地址 187 | 6、支持自定义代理(需外网ip),接管所有数据转发 188 | 。无法p2p时,自动连接自定义代理,实现数据转发 189 | 7、自定义代理支持token及白名单配置 190 | 。支持安全机制 191 | 8、支持多级级联代理 192 | 。支持链式代理,支持多级无环代理 193 | 9、支持手机作为访问唯一入口 —— 安全 + 移动便捷 194 | 。手机在手、随用随有 195 | 10、端口映射全动态配置,支持映射配置“热拔插” 196 | 。代理增、删及时生效,无需重启 197 | 11、所有功能app端“一点配置” 198 | 。客户端一点配置,服务端运行时免配 199 | 12、支持P2P隧道及自定义代理隧道自动探测及连接 200 | 。无需干预,app自动连接,自动重试 201 | 13、支持动态协商端口,支持指定协商端口 202 | 。默认动态端口协商,支持配合防火墙配置协商端口 203 | 14、支持隧道连接优先级(P2P—>自定义代理-->官网代理) 204 | 。数据传输时,支持优先级隧道 205 | 15、支持ssl加密隧道 206 | 。支持P2P及代理隧道ssl加密,确保数据传输不泄密 207 | 16、支持流量限制 208 | 。支持进行网络带宽限制,默认不限流 209 | 17、支持网络切换(如:移动<—>wifi)自动识别+自动连接 210 | 。app端智能重连,始终确保服务可用性 211 | 18、支持不同局域网主机间端口映射 —— 如有一端主机有外网ip则可直接外网访问(version > v0.31) 212 | 。支持服务端组网映射,流量无需通过手机app(传统穿透模式) 213 | 19、app支持服务端模式,可以将手机配置成服务端 214 | 。android手机可作为服务端 215 | 20、支持远程文件管理功能:浏览、上传、下载、删除,支持断点续传(version >= v0.31.6) 216 | 。在有p2p或自定义代理时,激活文件管理功能,可对手机和服务端电脑文件进行基本操作 217 | 21、支持内置socks5、http代理(version >= v0.32.1) 218 | 。毕竟有三方专业工具如ss5、squid等,因此socks5及http代理是可选的功能 219 | 22、socks5、http代理支持域名和IP白名单(version >= v0.32.1) 220 | 。域名白名单支持四种模式匹配(完全匹配、向前匹配、向后匹配、中间匹配),默认配置文件名.white_list 221 | 。IP白名单支持CIDR格式ip-range配置,默认配置文件名.ipchecks 222 | 。。。待续 223 | 224 | ``` 225 |
226 | 227 | ## 使用指南:
228 | 三方视频教学- B站

229 | 使用实践-度娘

230 | 使用实践-google 231 | ### 1、下载app && 注册新用户 232 | * 下载android app(app-release.apk包含客户端和服务端)支持armv7及arm64 cpu架构
233 | * 注册新用户(邀请码必填,为数字,可任意填。ps:如果必填信息未填完整,或包含中文字符,会注册失败)
234 | * 注册成功后请务必记住返回的服务ID(N) 【重要】:注册成功后务必在1小时内完成首次登录
235 |
236 | 237 | 展开图示 238 | 239 |
240 |
241 |
242 | 243 | ### 2、下载服务端 && 配置 244 | * 下载内网服务器适合的服务端版本(目前支持linux-x86-32/64,windows,及linux-arm【树莓派、群晖】,另:Android app自带服务端模式)
245 | * 解压服务端压缩包,修改配置文件(conf-proxy.xml):
246 |
247 | 248 | 配置样例 249 | 250 | 251 | ``` 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | ``` 274 |
275 | 276 | ### 3、运行内网服务端(命令参数说明 i:最大接入连接数,o:最大接出连接数,w:最大线程数)
277 | * linux下执行命令:chmod +x proxy_server && nohup ./proxy_server -i1000 -o1000 -w8 >/dev/null &
278 | * windows下执行命令:proxy_server.exe -i1000 -o1000 -w8
279 | * Android 手机/设备:运行app -〉编辑模式下,配置服务端信息 -〉打开“服务端”开关 -〉重启app
280 | * OpenWrt mips设备安装请见:【MIPS linux下正确使用方式】
281 | ### 4、登陆手机app && 配置端口映射 【常用服务配置】
282 | * 在客户端中可以看到上线的服务端(“访问点”),可以在客户端上定义端口映射规则
283 |
284 | 285 | 展开图示 286 | 287 |
288 | 服务端间端口映射配置需要在ip后加上服务端index序号,格式为:ip@idx 289 |
290 |
291 | 292 | ### 5、电脑或手机可以直接访问手机客户端设置的服务(如ssh、http等)
293 | 294 |
295 | 296 | ## 补充说明:
297 | * 所有版本已经打包了依赖,开箱即用.
298 | * 系统将自动清除30天以上未使用的“僵尸账号”.
299 | * Android 客户端需要权限:
300 | >> 1、后台执行权限(如果不允许,则app进入后台会断开连接)
301 | >> 2、网络访问权限(基本权限)
302 | * 手机设置 (Android):
303 | >> 1、设置 -> 无线及网络 -> WLAN -> 系统休眠保持连接 "允许" (否则,系统休眠会被断连)
304 | >> 2、设置 -> 无线及网络 -> 移动网络 -> 高级 ->始终保持数据连接 "允许"
305 | 306 |
307 | 308 | 常见问题答疑 309 | 310 | 311 | * Q:如何下载安装 android app?
312 | >> 1、用android手机浏览器打开 https://github.com/lazy-luo/smarGate/raw/master/app-release.apk
313 | >> 2、弹出框中下载安装
314 | >> 网盘链接为最新测试版本,github上版本稍有滞后
315 | >> 附网盘下载地址: https://pan.baidu.com/s/14Iq60kxHW711NVoCVKWySg
316 | >> gitee地址(速度快些,不会有图片无法显示问题):https://gitee.com/lazy-luo/smarGate
317 | >> 如有需要请添加微信:ws_lzy008 注明:smarGate ,视情况组建技术讨论群
318 | * Q:需要访问家中局域网多台设备,是否每台都需要安装服务端?
319 | >> A:不需要,只需选择任意一台设备安装服务端即可。
320 | * Q:为何有时连接不上?
321 | >> A:服务端空闲约2-3分钟,会自动断开,须等待10秒左右重连。
322 | * Q:ipv6为何无法P2P?
323 | >> A:请将客户端及服务端更新到最新版本;确保手机与内网电脑能获取到全局ipv6地址;确保没被防火墙拦截(windows);排查两个ipv6是否能路由出去;查看hosts文件确保hostname能解析到ipv6地址。
324 | * Q:IPv4及IPv6的P2P连接为何没有UDP端口?
325 | >> A:smarGate基于TCP协议进行P2P穿透,具备更好的安全性,及连接可靠性。
326 | * Q:手机NAS客户端为何无法登录?
327 | >> A:确保手机NAS客户端ip黑名单中没有localhost(127.0.0.1)。
328 | * Q:如何将异地公司内网机器共享给多地团队?
329 | >> A:手机连接wifi,让团队成员电脑连接手机IP:PORT,直接通过手机代理进行访问。实测,2k以上的手机,可以带上百人团队共享访问。
330 | * Q:为何windows服务端没有控制台黑框?
331 | >> A:为了防止误操作关闭服务端,新版本windows服务端采用后台方式运行。如需关闭,请用“任务管理器”
332 | * Q:P2P时流量是否还需要走中间代理?
333 | >> A:不需要,直接点对点连接,网速取决于你的客户端及服务端所在网络。
334 | * Q:smarGate后台运行是否很耗电?
335 | >> A:经过长时间测试,按偶尔使用的频次,耗电量和任意一个系统进程相近,极低;频繁后台使用情况,长时间“后台”使用,整体耗电量等同于偶尔使用微信的耗电量。电源管理提示“后台频繁刷新。。。”,不用管它,后台传输数据都会有此提示,关键看耗电排名
336 | * Q:smarGate连接优先级规则?
337 | >> A:首选P2P连接,无P2P时使用自定义代理连接,无前两者连接时使用官方代理连接。
338 | * Q: 同一个用户能否多处登录 ?
339 | >> A: 可以多点登录,但同一时刻只能有一个客户端可以进行P2P;服务端单台机器只能启1个实例,服务端各实例配置确保序号不重复,否则将无法正常使用。
340 | * Q: 服务端能否支持Android手机 ?
341 | >> A:v0.27版本Android app加入了“服务端模式”的支持。
342 | * Q: 客户端不同颜色表示啥意思?
343 | >> A:ipv4下P2P标识为:
344 | ![ipv4 p2p](https://github.com/lazy-luo/smarGate/blob/master/res/ipv4p2p.png)
345 | >> A:ipv6下P2P标识为:
346 | ![ipv6 p2p](https://github.com/lazy-luo/smarGate/blob/master/res/ipv6p2p.png)
347 | >> A:自定义路由标识为:
348 | ![userdefineproxyer p2p](https://github.com/lazy-luo/smarGate/blob/master/res/userdefineproxyer.png)
349 | 350 |
351 | 352 | ## 最佳实践
353 | * 以下为推荐使用的最佳实践,供参考:
354 | 1、android客户端设置为“自动登录”,免除每次输入用户名/密码的麻烦;
355 | 2、android客户端设置好后让其在后台运行,如果始终保持前台会定时刷新,webview控件空耗电,你懂的;
356 | 3、服务端始终保持后台运行,安全放心,只有你自己才能访问;
357 | ...使用场景...
358 | 【家用摄像头P2P直连】
359 | ## 免责申明
360 | * 请您仔细阅读以下申明,您在使用smarGate工具软件,表明您对以下内容的接受:
361 | 1、严禁使用本软件从事计算机黑客以及其他任何危害计算机信息网络安全的行为;
362 | 2、本软件属于正规网络接入软件,请合理,合法的使用;勿用于违反法律,道德及影响他人利益的活动;如果因用于非法用途,由此造成的不良后果,由用户自行负责,本软件开发者不承担任何责任及损失。
363 | ## 捐助 364 | 如果您觉得 smarGate 对你有帮助,欢迎给予一定的捐助来维持项目的长期发展!
365 | ps:捐赠建议附上注册用户名
366 |
367 | 368 | 微信捐赠 369 | 370 | 371 |
372 | 373 | ## 附录
374 |
375 | 376 | 更新历史 377 | 378 | 379 | ### 2025-09-26更新到v0.40.5

380 | 1、解决代理模式下连接概率性断开的BUG
381 | 2、增强稳定性,提升性能
382 | 3、增加开机自启动脚本,使用方式如下:
383 | * windows 384 | ``` 385 | windows下,确保 enable_autostart.bat 和 enable_autostart.ps1 文件与服务端在同一个目录 386 | 打开cmd窗口,开启自启动输入: 387 | enable_autostart.bat on 388 | 关闭自启动输入: 389 | enable_autostart.bat off 390 | 过程中要求脚本以管理员方式运行 391 | ``` 392 | * linux/macOS 393 | ``` 394 | 确保 enable_autostart.sh 文件与服务端在同一个目录 395 | 开启自启动输入: 396 | enable_autostart.sh on 397 | 关闭自启动输入: 398 | enable_autostart.sh off 399 | ``` 400 | 4、版本更新到v0.40.5
401 | 402 | ### 2025-03-25
403 | 1、文件管理新增空目录删除功能
404 | 2、服务端间连接增加使用时连接功能(20秒内重连1次)
405 | 3、增强稳定性,修复异常退出问题
406 | 407 | ### 2024-10-12更新到v0.40.4:
408 | 1、新增PROXY协议,单端口同时支持socks5及http代理
409 | 2、新增http代理用户/密码认证
410 | 411 | ``` 412 | 413 | ... 414 | 415 | 416 | 417 | 418 | ... 419 | 420 | ``` 421 | 3、其它优化
422 | 423 | ### 2024-08-20
424 | 1、提升文件传输速度
425 | 2、其它优化
426 | 427 | ### 2024-08-17
428 | 1、修复网络出口变化时服务端长时间丢失的BUG
429 | 2、改进P2P连接机制,提升P2P连接成功率
430 | 431 | ### 2024-08-06更新到v0.40.3
432 | 1、修复windows下代理连接偶发断开的BUG
433 | 2、修复windows下低带宽时高CPU占用的BUG
434 | 3、服务端支持动态资源回收,适合内存限制设备
435 | 4、新增编译包,支持LoongArch64架构
436 | 5、版本更新到v0.40.3
437 | 438 | ### 2024-07-11
439 | 1、修复代理地址错误显示为localhost的BUG
440 | 2、修复windows下偶发coredump的BUG
441 | 442 | ### 2024-05-11
443 | 1、启用异步连接,防止慢连接阻塞正常连接
444 | 2、修复链式代理、Socks5、http代理在特定情况下无法释放连接的BUG
445 | 446 | ### 2024-04-27更新到v0.40.2:
447 | 1、改进P2P的连接成功率
448 | 2、修复部分已知BUG
449 | 3、版本更新到v0.40.2
450 | 451 | ### 2024-04-18:
452 | 1、收藏夹BUG修复
453 | 2、新增服务备注功能,便于服务识别及打标
454 | 455 | ### 2024-04-10:
456 | 1、VIP支持百度地图定位
457 | * APP服务端支持GPS定位 458 | * 百度地图开放平台,自行申请“浏览器端”AK,然后将AK配置到SG客户端中,即可正常使用地图定位功能 459 | 460 | 2、版本更新到v0.40.1
461 | 462 | ### 2024-02-02:
463 | 1、APP易用性更新,后续版本将采用全新界面
464 | 2、修复特定情况无法创建ipv6隧道的BUG
465 | 3、APP增加收藏夹功能,常用连接一览无余
466 | 4、版本更新到v0.32.3
467 | 468 | ### 2023-11-28:
469 | 1、老幼安全防护,支持GPS定位,便于掌握关怀对象所在经纬度(自行手动授权)
470 | * 此功能仅支持Android服务端
471 | * 坐标获取成功,则经纬度坐标将会自动复制到剪贴板
472 | 473 | 2、其它优化
474 | 475 | ### 2023-11-17更新到v0.32.2:
476 | 1、socks协议支持用户名/密码验证
477 | 2、支持保存及播放录音(VIP)
478 | 3、版本更新到v0.32.2
479 | 480 | ### 2023-10-25更新到v0.32.1:
481 | 1、修复bug
482 | 2、完善支持socks协议(仅支持ipv4 tcp)
483 | 3、完善支持HTTP proxy协议
484 | 4、APP支持VIP功能许可
485 | 5、版本更新到v0.32.1
486 | 487 | ### 2023-09-08更新到v0.31.12:
488 | 1、修复bug
489 | 2、试验性支持socks协议(仅支持ipv4 tcp)
490 | 3、新增内置支持HTTP proxy协议
491 | 4、内存回收(适用于内存限制设备)
492 | 5、全异步方式提升响应速度
493 | 6、版本更新到v0.31.12
494 | 495 | ### 2023-08-29更新到v0.31.11:
496 | 1、文件管理支持默认按时间排序
497 | 2、新增macos M1/M2支持
498 | 3、版本更新到v0.31.11
499 | 500 | ### 2023-06-03更新到v0.31.10:
501 | 1、网络可靠性优化
502 | 2、优化网络传输效率
503 | 3、版本更新到v0.31.10
504 | 505 | ### 2023-03-04更新到v0.31.9:
506 | 1、APP服务端模式新增“无障碍”服务,用户自行打开,实现自动重启
507 | 2、APP端操作优化:新增点击操作自动填充功能,便于新增配置
508 | 3、修复mips路由器下安装自定义代理无法提供服务的BUG
509 | 4、提供服务端自定义代理域名定时ip刷新功能(动态域名)
510 | 5、其它优化
511 | 512 | ### 2022-12-14更新到v0.31.8:
513 | 1、APP服务端模式支持配置自定义代理及SSL加密
514 | 2、自定义代理服务器支持SSL自签名证书下发
515 | 3、其它优化
516 | 517 | ### 2022-11-04更新到v0.31.7:
518 | 1、提供一键版本升级功能,无需手动更新
519 | * 此功能版本源指向github,如无法更新,请确认github连通性
520 | * 更新后一般10-20秒左右恢复可用
521 | * 服务端提供自动更新选项(每天检测一次),默认关闭
522 | ``` 523 | 524 | ``` 525 | 526 | ### 2022-10-20更新到v0.31.6:
527 | 1、文件管理增加删除文件功能
528 | 2、文件管理增加断点续传功能
529 | 3、文件管理增加文件时间
530 | 4、文件管理windows下增加切换磁盘操作
531 | * 此功能仅在有P2P连接或自定义代理连接时激活
532 | * 通过拖拽模式进行上传和下载
533 | * 通过双击弹出文件删除确认框
534 | 535 | ### 2022-10-14更新到v0.31.5:
536 | 1、修复自定义代理短间隔重连情况下连不上的BUG
537 | 2、新增了简易文件上传下载功能,可方便同步异地文档
538 | * 此功能仅在有P2P连接或自定义代理连接时激活
539 | * 通过拖拽模式进行上传和下载
540 | 541 | 3、版本更新到v0.31.5
542 | 543 | ### 2022-09-05:
544 | 1、解决自定义代理连接异常断开BUG
545 | 2、版本保持不变
546 | 547 | ### 2022-08-30更新到v0.31.4:
548 | 1、降低运行时虚拟内存占用
549 | 2、常规性优化
550 | 3、版本更新到v0.31.4
551 | 552 | ### 2022-08-14更新到v0.31.3:
553 | 1、修复mips架构系统无法连接自定义代理的BUG
554 | 2、修复HTTP协议加载完成时间长的问题
555 | 3、版本更新到v0.31.3
556 | 557 | ### 2022-08-06更新到v0.31.2:
558 | 1、修复Windows平台偶发闪退BUG,增强稳定性
559 | 2、P2P连接及自定义代理进行keep-alive操作,尽可能避免重连时间窗口,提升可用性
560 | 3、其它可用性优化,降低app能耗
561 | 4、版本更新到v0.31.2
562 | 563 | ### 2022-07-28更新到v0.31.1:
564 | 1、修复特定情况下,服务端重启,组网配置不生效的BUG
565 | 2、修复NAT1服务器P2P协商BUG
566 | 3、版本更新到v0.31.1
567 | 568 | ### 2022-07-22更新到v0.31:
569 | 1、提供服务端之间端口映射,服务端如有公网ip则可直接从公网访问(仅需在app上配置) 570 | * 配置方式,在原有映射配置“远程ip”配置中支持:ip@idx方式进行配置(idx为不同“访问点”的序号) 571 | * 此种方式配置的“本地端口”实际是在当前“访问点”所在主机上(注意:不在APP所在手机上) 572 | * 服务端间如能P2P成功(或自定义代理连接成功)则配置的映射将生效,否则不生效 573 | * APP上只有在P2P连接时才会定时刷新服务端间代理状态 574 | * 配置成功后需要等待10秒左右才能在App上看到实际状态 575 | 576 | 2、版本升级到v0.31
577 | 578 | ### 2022-06-30:
579 | 1、修复32位大端机器运行服务端,无法正常代理的BUG
580 | 2、版本暂保持不变
581 | 582 | ### 2022-05-17:
583 | 1、服务端支持自动生成自签名证书(默认文件名为server.xxx)
584 | -->a、配置ssl-create-certfile选项
585 | ``` 586 | 587 | 588 | ... 589 | 590 | ``` 591 | -->b、确保安装openssl
592 | -->c、不要指定证书文件(不配置 ssl-cacert-file 及 ssl-privatekey-file)
593 | 594 | ### 2022-05-04:
595 | 1、支持riscv32/64架构,编译时同mips架构使用musl库进行链接
596 | 2、优化网络传输层
597 | 3、版本暂保持不变
598 | 599 | ### 2022-02-07更新到v0.30.4:
600 | 1、提供mips64el支持
601 | 2、增加app端系统图标显示
602 | 3、其它优化
603 | 604 | ### 2021-11-06更新到v0.30.3:
605 | 1、修复app端内存占用只显示jvm不包含native的BUG
606 | 2、优化网络引擎,提升高并发下的稳定性及公平性
607 | 608 | ### 2021-10-17更新到v0.30.2:
609 | 1、自定义代理支持ssl验证
610 | 2、网络P2P情况下,支持配置成ssl隧道( **要求服务端必须配置证书** )
611 | ``` 612 | 613 | 614 | ... 615 | 616 | ``` 617 | 3、其他优化
618 | 619 | ### 2021-09-24更新到v0.30:
620 | 1、提供了Android服务端开机自启动支持(仅服务端模式,且需要自行手动授权)
621 | 2、网络P2P情况下,Android服务端支持实时音频(麦克风权限需要自行手动授权,必须打开SG界面才能录音)
622 | 3、其他优化
623 | 624 | ### 2021-05-03更新到v0.29.2:
625 | 1、修复Android高版本无法退出问题
626 | 2、优化网络:修复了可能带来网络延迟的BUG,进一步提升网络传输速度
627 | 3、提供版本号展示,便于客户端及服务端版本管理
628 | 4、优化app cpu占用,降低能耗
629 | 630 | ### 2021-03-05更新到v0.29:
631 | 1、修复ipv6与ipv4网络切换存在的服务端core-dump问题
632 | 2、客户端新增ipv4-only网络模式选项,用于在ipv6网络环境下由于特殊需求需要使用ipv4进行p2p连接的场景(强制使用ipv4进行网络穿透)
633 | 3、其它一些bug修复
634 | 注意:特定场景下由于存在core-dump的致命问题,0.29版本需要同时更新客户端及服务端 635 | 636 | ### 2020-12-13更新到v0.28:
637 | 1、自定义代理增加token支持,防止非法访问。同时支持配置访问许可列表(access-token只能输入数字,access-restricting可输入允许的SID,多个SID用“:”分隔,access-restricting可不配)
638 | A、代理服务器配置: 639 | ``` 640 | 641 | 642 | 643 | 644 | … 645 | 646 | ``` 647 | B、服务端配置(token必须与代理服务器一致): 648 | ``` 649 | 650 | ``` 651 | 2、对于隧道超时断开机制做了优化(仅针对P2P隧道及用户代理隧道):只要有连接接入且连接正常情况下客户端会随机时延发送心跳,尽量防止超时断开。
652 | 场景:ssh访问时,较长时间不输入会保持心跳,不至于1两分钟空闲就断开了。 653 | 654 | ### 2020-05-23更新到v0.27:
655 | 1、去掉root权限获取功能,保持最低权限要求。暂不开发支持配置1024以下端口的能力
656 | 2、由于自用树莓派被孩子摔坏了,只能压榨淘汰手机剩余价值,Android app端增加“服务端模式”支持,可以放在家中作为服务器
657 | 658 | ### 2020-04-30更新到v0.26:
659 | 1、修复IP切换时配置的HTTP服务可能不可用的问题
660 | ~~2、对已root手机,尝试获取root权限,支持配置1024以下的保留端口~~
661 | 3、解决绝对路径执行(多为开机启动脚本)且不指定-f参数时无法定位默认配置文件问题
662 | 4、服务端增加HTTP基于内容替换选项(影响效率,忽略压缩数据。对于部分js中将ip端口返回到浏览器的不规范内网web应用),默认不过滤内容
663 | ``` 664 | …… 665 | 666 | 667 | …… 668 | 669 | …… 670 | ``` 671 | 5、服务端增加指定P2P协商端口选项,默认选择随机端口
672 | ``` 673 | …… 674 | 675 | 676 | …… 677 | 678 | …… 679 | ``` 680 | 6、增加“官方代理”开关,默认打开。关闭时在任何情况下都不会走官方代理转发数据
681 | ### 2020-03-13:
682 | 1、修复tcp-cork特定条件下丢失writable-event造成网络延迟的BUG
683 | 2、提升内存池运行性能
684 | 3、增加 -f 命令行参数,可指定配置文件全路径
685 | 4、其它优化,版本保持不变
686 | ### 2020-01-18更新到v0.25:
687 | 1、修复 http代理失效 BUG
688 | 2、app端提供ipv6地址显示
689 | 3、版本更新到0.25
690 | ### 2019-11-30更新到v0.24:
691 | 1、花生壳支持UDP了?好吧,支持一下UDP端口转发,游戏串流的朋友可以试用一下
692 | 2、支持 UDP over TCP 模式
693 | 3、其它小的优化
694 | ### 2019-11-03:
695 | 1、修复 memory leak BUG
696 | 2、其它小优化,版本保持不变
697 | 3、提升P2P重连可靠性
698 | ### 2019-09-30更新到v0.23:
699 | 1、修复弱网络环境下windows服务端高CPU占用BUG
700 | 2、整体提升网络传输速度
701 | ### 2019-09-20更新到v0.22:
702 | 1、提升P2P检测可靠性
703 | 2、修复windows下特定情况无法进行P2P连接的BUG
704 | 3、客户端提供了手动p2p重连功能(弱网络环境下自动重连可能失败,此时可以手动重连) 705 | ### 2019-09-15:
706 | 1、进一步降低在低速率下服务端cpu占用率
707 | 2、常规优化,版本保持不变
708 | ### 2019-09-10更新到v0.21:
709 | 1、优化网络性能
710 | 2、客户端支持显示实时网速
711 | ### 2019-09-05:
712 | 1、解决客户端修改密码后自动登录失败的BUG
713 | 2、提供自动登录超时控制
714 | ### 2019-09-01更新到v0.20:
715 | 1、优化连接检查性能(提供并行异步检测)
716 | 2、支持将HTTPS代理到HTTP(客户端http访问,服务端为https)
717 | ### 2019-08-18更新到v0.19:
718 | 1、性能优化
719 | 2、解决特定条件下(自定义路由)无法可靠断开服务端连接的BUG
720 | 3、进行静态编译,不再依赖inux系统gcc动态库,可直接在alpine中运行(需要创建软连接)
721 | 4、支持编译为mini版本,不再静态编译openssl;对openssl库从0.9.8~1.1.1的全系动态兼容,二进制包缩小为1M左右(已放入dynamic目录,需配置ssl库)
722 | ### 2019-05-27更新到v0.18:
723 | 1、性能优化
724 | 2、提供ipv6 P2P开关机制:<ipv4-tunnel-first value="false"/> 如需关闭ipv6点对点则设置为“true”,默认值为“false”
725 | 3、增加客户端ipv6标志及连接状态提示
726 | ### 2019-05-21:
727 | 1、修复Raspbian jessie下无法检测IPv6的BUG
728 | ### 2019-05-16更新到v0.17:
729 | 1、性能优化
730 | 2、提供P2P断开重连机制
731 | ### 2019-05-04:
732 | 1、修复服务端在挂载私有路由时当线程数量<4时偶发CPU高占用的BUG,版本保持不变
733 | ### 2019-04-23更新到v0.16:
734 | 1、修复服务端在挂载私有路由时偶发core dump的BUG
735 | ### 2019-04-16更新到v0.15:
736 | 1、修复IPV4/IPV6网络切换,无法P2P的BUG
737 | ### 2019-04-15更新到v0.14:
738 | 1、解决网络切换重连失败问题
739 | 2、引擎性能优化
740 | 3、新增对IPv6防火墙穿透支持(移动端支持ipv6,且内网服务端支持ipv6)
741 | 【重要提示】v0.14版本将于之前版本不兼容,请务必更新版本!!!
742 | ### ....初始版本v0.13
743 |
744 | 745 | 746 | -------------------------------------------------------------------------------- /README_en.md: -------------------------------------------------------------------------------- 1 | # Quick Overview 2 | * **Platform Adaptation**: Supports Linux, Windows, macOS, Android, (Tob, small machines: HP-UX, Solaris, AIX)
3 | * **CPU Architectures**: Supports x86, arm, mips, riscv (Tob: alpha, PowerPC, SPRAC)
4 | * **Security Focus**: Intranet-to-intranet penetration, no need to map any ports to the external network, no changes to firewall configurations
5 | * **Bandwidth Emphasis**: "4G phone + v6 broadband" accesses intranet services using P2P (based on TCP protocol, v4 supports NAT1-3 penetration)
6 | * **Cost Savings Priority**: No need to buy VPS, no need for a public IP; old Android phones at home can be used as servers
7 | * **Reliability Priority**: On-demand availability, can provide uninterrupted service 24/7, and unaffected by UDP protocol QoS issues
8 | * **Control Emphasis**: Client configuration is straightforward, and service can be controlled to start/stop anytime, anywhere
9 | * **Environmental Friendliness**: No installation required, compact size (around 1MB for the mini version), all-in-one, high performance with minimal resource usage
10 | * **Portability Priority**: Whether working or on vacation, everything is in control as long as the phone has a network connection
11 | * ... If this is what you want! Please continue reading patiently; if you have additional requirements, please raise an issue, and there's also interesting stuff in the [Update History]. 12 | 13 | * **Free**, considering open source after stable testing. 14 | * Includes an Android client and a server that needs to be installed in the intranet. 15 | 16 | # APP Configuration (Required) --- Typical usage may be affected if not configured properly 17 | * Must configure "Allow Background Running" permission, otherwise, the connection will be severed by the system when switching to the background. 18 | * Must configure "Keep Network Connection Always Active during Sleep," otherwise, the connection will be severed by the system once in sleep mode. 19 | * "Allow Auto-Start" permission can be configured, otherwise, Android server mode cannot start on boot (v0.30 and later versions). 20 | * "Microphone" permission can be configured, otherwise, the Android server cannot provide voice monitoring functionality (v0.30 and later versions). 21 | * Note: SG official proxy does not provide data forwarding to IPs in Hong Kong, Macau, Taiwan, and foreign countries. 22 | 23 | ## What is smarGate? 24 | #### Officially named "Mobile Gateway," it exposes the server network located in the intranet on demand through the mobile client. The core engine is implemented in C++. 25 | #### "Mobile Gateway" is a user's private gateway, and all shared access entry points are in the client, not like other penetration tools that promote public access entry points based on domain names. In other words, smarGate is like carrying a personal theft-proof door, while other penetration products place the theft-proof door in public places... Although they need a key, there's a profession called a locksmith. 26 | 27 | ##### It has the following technical features: 28 | * **Security** 29 | * The mobile client serves as the main access entry, opened on demand and closed promptly. 30 | * Supports port mapping networking between servers (v0.31 and later versions). 31 | * Computers can connect to the internal network through access to open ports on the phone in a hotspot or Wi-Fi environment (the client will display the phone's IP). 32 | * The phone network is generally in a private network segment that others cannot access. 33 | * User isolation. 34 | * **Scalability** 35 | * Based on intranet segment proxy, it can work with numerous tools to achieve various network service capabilities (telnet, ssh, http services, intranet cameras, remote desktop, etc.). 36 | * Geared towards geeks, can access custom intranet services (RPC). 37 | * **Convenience** 38 | * Simple configuration with the mobile client. 39 | * Dynamic addition and removal of service capabilities. 40 | * **High Performance** 41 | * Starting from version 0.1.1, it uses a proprietary network engine with high performance. The client on a thousand-dollar phone can support over 1,000 concurrent shared accesses. 42 | * High-performance design: 43 | * Cross-platform implementation of socket multiplexing, supporting models such as poll, epoll, kqueue, port, select, IOCP, etc. 44 | * Uses lock-free algorithms. 45 | * Thread pool design. 46 | * Socket connection pool. 47 | * Multi-level task queue. 48 | * ... 49 | 50 |
51 | 52 | Attachment: Interaction Diagram 53 | 54 |
55 |
56 | 57 | ## What are the main functions of smarGate? 58 | * **Supports Proxy Penetration** 59 | * The official provides a free proxy server (shared bandwidth, slower when shared by multiple users, best practice is to use a self-owned proxy server). 60 | * If you have your own cloud server (with a public IP), you can customize your proxy server, and install proxy_server on the proxy server. All data transmission goes through the user-configured proxy server (the proxy server needs a certificate, which can be generated automatically or configured with an existing certificate). 61 | 62 | ``` 63 | 1、Configuration of the "Proxy Server" is as follows (the proxy server must allow any port "inbound" connections): 64 | ``` 65 | ``` 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | ``` 84 | ``` 85 | 2. Add the following configuration to the "Server": 86 | ``` 87 | ``` 88 | ...... 89 | 90 | 91 | 95 | 96 | 97 | ...... 98 | 99 | 100 | 101 | ``` 102 | * **Supports P2P Channel** 103 | * Utilizes TCP protocol for P2P penetration, enhancing security. 104 | * Not all networks support P2P, depending on the NAT types on both ends. 105 | * From version v0.14 and above, directly supports IPv6 and provides firewall penetration. 106 | * P2P Test Conclusion: Unable to establish a connection when one end is NAT4 and the other end is NAT3 or NAT4. 107 | Note: NAT1-〉Full Cone, NAT2-〉Restricted Cone, NAT3-〉Port Restricted Cone, NAT4-〉Symmetric 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 |
Server NATClient NATP2P Success
NAT1-3NAT1-3YES
NAT1-2NAT4YES
NAT4NAT1-2YES
NAT4NAT3-4NO
NAT3-4NAT4NO
117 | 118 | * **Supports External Network Publishing (Contrary to Security Design Principles, Opened in v0.31)** 119 | * The main mode of other intranet penetration tools, directly mapping internal network services to external network ports. 120 | * **Supports P2P Port Mapping Between Servers (v0.31 and Later Versions)** 121 | * Specific configuration mainly supported through ip@index. 122 | * 123 |
124 | 125 | Attachment: Brief Overview of Main Functions 126 | 127 | 128 | 1. Supports TCP-based P2P connection tunnels 129 | - Secure and reliable, avoiding QoS issues 130 | 131 | 2. Supports all types of protocols based on TCP for "transparent proxy" 132 | - Can proxy all internal TCP services (SSH, RDP, SMB, VNC, cameras, database services, etc.) 133 | 134 | 3. Supports HTTP, HTTPS to HTTP 135 | - Supports HTTP-head rewrite, can proxy HTTPS services as HTTP 136 | 137 | 4. Supports UDP over TCP 138 | - Can proxy services using the UDP protocol 139 | 140 | 5. Transparent mode (no need to focus on IPv6 addresses) supports IPv6 tunnel 141 | - Automatically establishes a v6 tunnel, always using v4 address for access 142 | 6. Supports custom proxy (requires public IP), taking over all data forwarding 143 | - When P2P is not possible, automatically connects to a custom proxy for data forwarding 144 | 7. Custom proxy supports token and whitelist configuration 145 | - Supports security mechanisms 146 | 8. Supports multi-level cascading proxy 147 | - Supports chained proxies, supports multi-level acyclic proxies 148 | 9. Supports mobile phones as the only access point — Secure + Mobile Convenience 149 | - With the phone in hand, access is available on demand 150 | 10. Dynamic configuration for port mapping, supports "hot-plugging" of mapping configurations 151 | - Proxies are effective immediately when added or removed, no need to restart 152 | 11. All features are "one-point configuration" on the app side 153 | - Client configuration is a single point, no need for server configuration during runtime 154 | 12. Supports automatic detection and connection of P2P tunnels and custom proxy tunnels 155 | - No intervention required, the app automatically connects and retries 156 | 13. Supports dynamic negotiation of ports, supports specifying negotiated ports 157 | - Default dynamic port negotiation, supports negotiating ports in conjunction with firewall configurations 158 | 14. Supports tunnel connection priority (P2P -> Custom Proxy -> Official Proxy) 159 | - During data transmission, supports priority for tunnels 160 | 15. Supports SSL encrypted tunnel 161 | - Supports SSL encryption for both P2P and proxy tunnels, ensuring data transmission is secure 162 | 16. Supports traffic limitation 163 | - Supports network bandwidth limitation, default is unlimited 164 | 17. Supports network switching (e.g., mobile <-> Wi-Fi) automatic identification + automatic connection 165 | - Intelligent reconnection on the app side, ensuring service availability at all times 166 | 18. Supports port mapping between different LAN hosts — If one end host has a public IP, it can be accessed directly from the external network (version > v0.31) 167 | - Supports server-side networking mapping, traffic does not need to pass through the mobile app (traditional penetration mode) 168 | 19. App supports server mode, can configure the phone as a server 169 | - Android phones can be used as servers 170 | 20. Supports remote file management functionality: browsing, uploading, downloading, deleting, supports resuming downloads (version >= v0.31.6) 171 | - Activates file management functionality when there is P2P or custom proxy, basic operations on files on the phone and server-side computer are possible 172 | 21. Supports built-in SOCKS5, HTTP proxies (version >= v0.32.1) 173 | - Since there are third-party specialized tools such as ss5, squid, etc., SOCKS5 and HTTP proxies are optional features 174 | 22. SOCKS5, HTTP proxies support domain and IP whitelists (version >= v0.32.1) 175 | - Domain whitelist supports four matching modes (exact match, forward match, backward match, middle match), default configuration file name: .white_list 176 | - IP whitelist supports CIDR format ip-range configuration, default configuration file name: .ipchecks 177 | 178 | ... To be continued 179 | 180 |
181 | 182 | ## User Guide: 183 | 184 | ### 1. Download the App and Register a New User 185 | * Download the Android app (app-release.apk includes both the client and server) supporting armv7 and arm64 CPU architectures. 186 | * Register a new user (Invitation code is required and can be any number. Note: If the required information is not filled in completely or contains Chinese characters, registration will fail). 187 | * After successful registration, remember to note the returned service ID (N). [Important]: After successful registration, be sure to complete the first login within 1 hour. 188 | 189 |
190 | 191 | Expand for Illustrations 192 | 193 | 194 | ![Login](https://github.com/lazy-luo/smarGate/blob/master/res/login.png) 195 | ![Register](https://github.com/lazy-luo/smarGate/blob/master/res/register.png) 196 | ![Register Success](https://github.com/lazy-luo/smarGate/blob/master/res/registerok.png) 197 |
198 | 199 | ### 2. Download Server and Configure 200 | 201 | * Download the server version suitable for the intranet server (currently supports linux-x86-32/64, windows, and linux-arm [Raspberry Pi, Synology], also: Android app comes with server mode). 202 | * Unzip the server compression package and modify the configuration file (conf-proxy.xml): 203 | 204 |
205 | 206 | Configuration Example 207 | 208 | 209 | ```xml 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | ``` 231 |
232 | 233 | ### 3. Run the Intranet Server (Command Parameters Explanation i: Max incoming connections, o: Max outgoing connections, w: Max threads) 234 | * Execute the command on Linux: `chmod +x proxy_server && nohup ./proxy_server -i1000 -o1000 -w8 >/dev/null &` 235 | * Execute the command on Windows: `proxy_server.exe -i1000 -o1000 -w8` 236 | * Android Phone/Device: Run the app -> In edit mode, configure server information -> Turn on the "Server" switch -> Restart the app 237 | * For OpenWrt MIPS devices installation, see: [【Correct Usage on MIPS Linux】](https://github.com/lazy-luo/smarGate/issues/65) 238 | 239 | ### 4. Log in to the mobile app and configure port mapping 240 | * In the client, you can see the online server ("access point") and define port mapping rules on the client. 241 | 242 |
243 | 244 | Expand for Illustrations 245 | 246 | 247 | ![Operational](https://github.com/lazy-luo/smarGate/blob/master/res/oper2.png) 248 | In the configuration, the "Remote IP" corresponds to the IP of a host in the intranet ("access point"). "localhost" or "127.0.0.1" represents the machine where the internal server-side is located. 249 | ![Operational](https://github.com/lazy-luo/smarGate/blob/master/res/oper3.png) 250 | 251 |
252 | 253 | ### 5. Computers or phones can directly access the services set in the mobile client (such as SSH, HTTP, etc.) 254 | 255 | ## Additional Information: 256 | * All versions come with packaged dependencies and are ready to use. 257 | * The system will automatically clear "zombie accounts" that have not been used for more than 30 days. 258 | * Android client requires permissions: 259 | 1. Background execution permission (if not allowed, the connection will be disconnected when the app goes to the background). 260 | 2. Network access permission (basic permission). 261 | * Phone settings (Android): 262 | 1. Settings -> Wireless & networks -> WLAN -> Keep Wi-Fi on during sleep "Allow" (otherwise, the connection will be disconnected during system sleep). 263 | 2. Settings -> Wireless & networks -> Mobile network -> Advanced -> Keep mobile data always active "Allow". 264 | 265 | * Q: How to download and install the Android app? 266 | >> A: Open the link [https://github.com/lazy-luo/smarGate/raw/master/app-release.apk](https://github.com/lazy-luo/smarGate/raw/master/app-release.apk) in the browser of your Android phone, and then install it when prompted. 267 | >> B: Pan.baidu.com download link for the latest test version: [https://pan.baidu.com/s/14Iq60kxHW711NVoCVKWySg](https://pan.baidu.com/s/14Iq60kxHW711NVoCVKWySg) 268 | >> C: Gitee address (faster download speed, no issues with image display): [https://gitee.com/lazy-luo/smarGate](https://gitee.com/lazy-luo/smarGate) 269 | >> D: If needed, add WeChat: ws_lzy008, specifying "smarGate". Depending on the situation, a technical discussion group may be formed. 270 | * Q: Do I need to install the server on every device at home to access multiple devices on the local network? 271 | >> A: No, you only need to install the server on any one device. 272 | * Q: Why sometimes unable to connect? 273 | >> A: The server will automatically disconnect after about 2-3 minutes of idle time and will reconnect after waiting for about 10 seconds. 274 | * Q: Why can't I establish a P2P connection over IPv6? 275 | >> A: Please update both the client and server to the latest version; make sure your phone and the internal computer can obtain a global IPv6 address; ensure it is not blocked by the firewall (Windows); check if both IPv6 can be routed out; and check the hosts file to ensure the hostname resolves to the IPv6 address. 276 | * Q: Why does P2P connection over IPv4 and IPv6 not have UDP ports? 277 | >> A: smarGate uses TCP protocol for P2P penetration, which provides better security and connection reliability. 278 | * Q: Why can't the phone NAS client log in? 279 | >> A: Make sure the phone NAS client's IP is not blacklisted, and it does not include "localhost" (127.0.0.1). 280 | * Q: How to share machines in a remote company network with multiple teams in different locations? 281 | >> A: Connect the phone to Wi-Fi, let team members' computers connect to the phone's IP: PORT, and access directly through the phone's proxy. Tested on phones with 2k resolution or higher, it can support sharing access for up to a hundred people. 282 | * Q: Why doesn't the Windows server have a console window? 283 | >> A: To prevent accidental shutdown of the server, the new version of the Windows server runs in the background. If you need to close it, use "Task Manager". 284 | * Q: Do I still need to go through an intermediate proxy when using P2P? 285 | >> A: No, connect directly point-to-point, and the network speed depends on the networks of your client and server. 286 | * Q: Does smarGate consume a lot of power when running in the background? 287 | >> A: After long-term testing, for occasional use, the power consumption is similar to any system process, extremely low. In the case of frequent background use, the overall power consumption is equivalent to occasional use of WeChat. The power management prompt "Frequent background refresh..." can be ignored; it appears whenever there is background data transfer, and the key is to look at the power consumption ranking. 288 | * Q: What are the connection priority rules in smarGate? 289 | >> A: Prefer P2P connection. If there is no P2P, use a custom proxy connection. If neither of the previous two connects, use the official proxy connection. 290 | * Q: Can the same user log in from multiple locations? 291 | >> A: Multiple logins are allowed, but only one client can perform P2P at a time. Each server machine can only run one instance, and the configuration of each instance ensures that the serial number is not duplicated, otherwise it will not work properly. 292 | * Q: Can the server support Android phones? 293 | >> A: The Android app version 0.27 has added support for "server mode". 294 | * Q: What does the different color represent in the client? 295 | >> A: P2P identification under IPv4: 296 | ![IPv4 P2P](https://github.com/lazy-luo/smarGate/blob/master/res/ipv4p2p.png) 297 | >> A: P2P identification under IPv6: 298 | ![IPv6 P2P](https://github.com/lazy-luo/smarGate/blob/master/res/ipv6p2p.png) 299 | >> A: User-defined proxy identification: 300 | ![User-defined proxy P2P](https://github.com/lazy-luo/smarGate/blob/master/res/userdefineproxyer.png) 301 | 302 | ## Best Practices 303 | * The following are recommended best practices for reference: 304 | 1. Set the Android client to "Auto Login" to avoid the hassle of entering the username/password each time. 305 | 2. Let the Android client run in the background after setting it up. If it remains in the foreground, it will refresh regularly, consuming power due to the WebView component. 306 | 3. Keep the server running in the background at all times for security and peace of mind. Only you can access it. 307 | 308 | 309 | ## Disclaimer 310 | * Please read the following disclaimer carefully. Your use of the smarGate tool software indicates your acceptance of the following: 311 | 1. It is strictly forbidden to use this software for computer hacking and any other activities that may harm computer information network security. 312 | 2. This software is a regular network access tool. Please use it reasonably and legally. Do not use it for activities that violate laws, morals, and affect the interests of others. If used for illegal purposes, the user is responsible for any consequences, and the developer of this software assumes no responsibility or loss. 313 | 314 | ## Donation 315 | If you find smarGate helpful, feel free to make a donation to support the long-term development of the project! 316 | Note: It is recommended to include your registered username with the donation. 317 | 318 |
319 | 320 | WeChat Donation 321 | 322 | 323 |
324 | 325 | ## Appendix 326 |
327 | 328 | Update History 329 | 330 | 331 | ### 2023-11-28:
332 | 1. Safety protection for the elderly and children, supports GPS positioning for easy tracking of the latitude and longitude of the care recipient (manual authorization required).
333 | * This feature is only supported on the Android server.
334 | * If the coordinates are successfully obtained, the latitude and longitude will be automatically copied to the clipboard.
335 | 336 | 2. Other optimizations
337 | 338 | ### Update to v0.32.2 on 2023-11-17:
339 | 1. Support for username/password authentication in the SOCKS protocol.
340 | 2. Support for saving and playing recordings (VIP).
341 | 3. Version updated to v0.32.2.
342 | 343 | ### Update to v0.32.1 on 2023-10-25:
344 | 1. Bug fixes
345 | 2. Improved support for SOCKS protocol (IPv4 TCP only).
346 | 3. Improved support for HTTP proxy protocol.
347 | 4. App supports VIP function license.
348 | 5. Version updated to v0.32.1.
349 | 350 | ### Update to v0.31.12 on 2023-09-08:
351 | 1. Bug fixes
352 | 2. Experimental support for SOCKS protocol (IPv4 TCP only).
353 | 3. Added built-in support for HTTP proxy protocol.
354 | 4. Memory recycling (for devices with memory limitations).
355 | 5. Improved response speed with full asynchronous mode.
356 | 6. Version updated to v0.31.12.
357 | 358 | ### Update to v0.31.11 on 2023-08-29:
359 | 1. File management supports default sorting by time.
360 | 2. Added support for macOS M1/M2.
361 | 3. Version updated to v0.31.11.
362 | 363 | ### Update to v0.31.10 on 2023-06-03:
364 | 1. Network reliability optimization.
365 | 2. Improved network transmission efficiency.
366 | 3. Version updated to v0.31.10.
367 | 368 | ### Update to v0.31.9 on 2023-03-04:
369 | 1. App server mode adds "Accessibility" service, user manually opens it for automatic restart.
370 | 2. App-side operation optimization: Added automatic fill-in feature for click operations, making it easier to add configurations.
371 | 3. Fixed the BUG that custom proxy installation on MIPS routers could not provide services.
372 | 4. Provided server-side custom proxy domain timed IP refresh function (dynamic domain).
373 | 5. Other optimizations.
374 | 375 | ### Update to v0.31.8 on 2022-12-14:
376 | 1. App server mode supports configuring custom proxies and SSL encryption.
377 | 2. Custom proxy server supports SSL self-signed certificate distribution.
378 | 3. Other optimizations.
379 | 380 | ### Update to v0.31.7 on 2022-11-04:
381 | 1. Provided one-click version upgrade function, no manual update required.
382 | * This feature's version source points to GitHub. If unable to update, please confirm GitHub connectivity.
383 | * Generally, usability is restored in about 10-20 seconds after the update.
384 | * The server provides an automatic update option (checks once a day), which is off by default.
385 | ```xml 386 | 387 | ``` 388 | ### Update to v0.31.6 on 2022-10-20:
389 | 1. File management adds file deletion functionality.
390 | 2. File management adds breakpoint resume functionality.
391 | 3. File management adds file timestamp.
392 | 4. File management on Windows adds disk switching operation.
393 | * This feature is only activated when there is P2P or custom proxy connection.
394 | * Upload and download through drag-and-drop mode.
395 | * Confirmation box for file deletion pops up with a double click.
396 | 397 | ### Update to v0.31.5 on 2022-10-14:
398 | 1. Fixed the bug where custom proxy couldn't connect under short interval reconnection.
399 | 2. Added simple file upload and download functionality for easy synchronization of documents in different locations.
400 | * This feature is only activated when there is P2P or custom proxy connection.
401 | * Upload and download through drag-and-drop mode.
402 | 3. Version updated to v0.31.5.
403 | 404 | ### Update on 2022-09-05:
405 | 1. Resolved the bug of abnormal disconnection in custom proxy connection.
406 | 2. Version remains unchanged.
407 | 408 | ### Update to v0.31.4 on 2022-08-30:
409 | 1. Reduced virtual memory usage during runtime.
410 | 2. Routine optimizations.
411 | 3. Version updated to v0.31.4.
412 | 413 | ### Update to v0.31.3 on 2022-08-14:
414 | 1. Fixed the bug where MIPS architecture systems couldn't connect to custom proxies.
415 | 2. Fixed the issue of long loading time for HTTP protocol.
416 | 3. Version updated to v0.31.3.
417 | 418 | ### Update to v0.31.2 on 2022-08-06:
419 | 1. Fixed occasional crashes on the Windows platform, enhanced stability.
420 | 2. Keep-alive operations for P2P connection and custom proxy to minimize reconnection time window, improving availability.
421 | 3. Other usability optimizations, reduced app consumption.
422 | 4. Version updated to v0.31.2.
423 | 424 | ### Update to v0.31.1 on 2022-07-28:
425 | 1. Fixed the bug where, under specific circumstances, network configurations did not take effect when the server restarted.
426 | 2. Fixed NAT1 server P2P negotiation bug.
427 | 3. Version updated to v0.31.1.
428 | 429 | ### Update to v0.31 on 2022-07-22:
430 | 1. Provided port mapping between servers, allowing direct access from the public network if the server has a public IP (only needs to be configured on the app). 431 | * Configuration: In the original mapping configuration, "Remote IP" supports configuration in the form of ip@idx (idx is the sequence number of different "access points"). 432 | * The "Local Port" configured in this way is actually on the host where the current "access point" is located (Note: not on the phone where the app is located). 433 | * If P2P between servers is successful (or custom proxy connection is successful), the configured mapping will take effect, otherwise, it will not. 434 | * On the app, the proxy status between servers is refreshed only when there is a P2P connection. 435 | * After successful configuration, it takes about 10 seconds to see the actual status on the app. 436 | 2. Version upgraded to v0.31.
437 | 438 | ### Update on 2022-06-30:
439 | 1. Fixed the bug where the server could not proxy normally on 32-bit big-endian machines.
440 | 2. Version remains unchanged.
441 | 442 | ### Update on 2022-05-17:
443 | 1. Server supports automatically generating self-signed certificates (default file name is server.xxx). 444 | * Configuration: ssl-create-certfile option
445 | ``` 446 | 447 | 448 | ... 449 | 450 | ``` 451 | * Make sure to install openssl. 452 | * Do not specify certificate files (do not configure ssl-cacert-file and ssl-privatekey-file). 453 | 454 | ### Update on 2022-05-04:
455 | 1. Support for riscv32/64 architecture, linked with musl library during compilation like mips architecture.
456 | 2. Optimized network transmission layer.
457 | 3. Version remains unchanged.
458 | 459 | ### Update to v0.30.4 on 2022-02-07:
460 | 1. Provided support for mips64el.
461 | 2. Added system icon display on the app.
462 | 3. Other optimizations.
463 | 464 | ### Update to v0.30.3 on 2021-11-06:
465 | 1. Fixed the bug where app-side memory usage only displayed JVM without native.
466 | 2. Optimized network engine, improving stability and fairness under high concurrency.
467 | 468 | ### Update to v0.30.2 on 2021-10-17:
469 | 1. Custom proxy supports SSL verification.
470 | 2. In the case of P2P network, supports configuring SSL tunnel ( **requires server-side certificate configuration** )
471 | ``` 472 | 473 | 474 | ... 475 | 476 | ``` 477 | 3. Other optimizations.
478 | 479 | ### Update to v0.30 on 2021-09-24:
480 | 1. Provided Android server-side automatic startup support (only in server mode, and manual authorization is required).
481 | 2. In the case of P2P network, Android server-side supports real-time audio (microphone permission needs manual authorization, must open the SG interface to record).
482 | 3. Other optimizations.
483 | 484 | ### Update to v0.29.2 on 2021-05-03:
485 | 1. Fixed the issue of not being able to exit on high versions of Android.
486 | 2. Optimized network: Fixed a BUG that may cause network latency, further improving network transmission speed.
487 | 3. Provided version number display for easier client and server version management.
488 | 4. Optimized app CPU usage, reduced power consumption.
489 | 490 | ### Update to v0.29 on 2021-03-05:
491 | 1. Fixed the issue of server-side core dump when switching between IPv6 and IPv4 networks.
492 | 2. Added IPv4-only network mode option on the client side, for scenarios where IPv6 is present but IPv4 is needed for P2P connections due to special requirements (forces the use of IPv4 for network penetration).
493 | 3. Some other bug fixes.
494 | Note: Due to fatal issues with core dump in specific scenarios, both the client and server need to be updated to version 0.29. 495 | 496 | ### Update to v0.28 on 2020-12-13:
497 | 1. Custom proxy added token support to prevent unauthorized access. Also supports configuring an access permission list (access-token can only input numbers, access-restricting can input allowed SIDs, multiple SIDs separated by ":"; access-restricting can be left unconfigured).
498 | A. Proxy server configuration: 499 | ``` 500 | 501 | 502 | 503 | 504 | … 505 | 506 | ``` 507 | B、Server-side configuration (token must match the proxy server): 508 | ``` 509 | 510 | ``` 511 | 2.Optimized the tunnel timeout disconnect mechanism (only for P2P tunnels and user agent tunnels): As long as there is a connection and the connection is normal, the client will randomly delay sending heartbeats to prevent timeout disconnections.
512 | Scenario: When accessing SSH, if there is no input for a long time, it will maintain a heartbeat to prevent disconnection after 1 or 2 minutes of inactivity.
513 | ### Update to v0.27 on 2020-05-23:
514 | 1. Removed the root permission acquisition feature to maintain the minimum permission requirement. Currently not developing support for configuring ports below 1024.
515 | 2. Due to personal Raspberry Pi being damaged by a child, making use of the remaining value of old smartphones, Android app added "Server Mode" support, enabling it to be used as a server at home.
516 | 517 | ### Update to v0.26 on 2020-04-30:
518 | 1. Fixed the issue where configured HTTP services might be unavailable when IP is switched.
519 | ~~2. For rooted phones, attempted to acquire root permissions, supporting the configuration of reserved ports below 1024.~~ (This feature has been removed.)
520 | 3. Solved the problem of absolute path execution (mostly for startup scripts) and not specifying the -f parameter causing the inability to locate the default configuration file.
521 | 4. Server-side added HTTP-based content replacement option (affects efficiency, ignores compressed data). For some non-standard intranet web applications that return IP ports in JavaScript to the browser, content filtering is not applied by default.
522 | ``` 523 | …… 524 | 525 | 526 | …… 527 | 528 | …… 529 | ``` 530 | 5. Server-side added an option to specify the P2P negotiation port, with the default being a random port.
531 | ``` 532 | …… 533 | 534 | 535 | …… 536 | 537 | …… 538 | ``` 539 | 540 | 6. Added an "Official Proxy" switch, defaulting to open. When closed, data will not be forwarded through the official proxy under any circumstances.
541 | ### 2020-03-13:
542 | 1. Fixed a bug causing network latency due to the loss of writable-event under specific conditions with tcp-cork.
543 | 2. Improved the performance of the memory pool.
544 | 3. Added the `-f` command line parameter to specify the full path of the configuration file.
545 | 4. Other optimizations, version remains unchanged.
546 | 547 | ### 2020-01-18 updated to v0.25:
548 | 1. Fixed the issue of HTTP proxy failure.
549 | 2. The app now provides IPv6 address display.
550 | 3. Version updated to 0.25.
551 | 552 | ### 2019-11-30 updated to v0.24:
553 | 1. Peanut shell supports UDP now? Okay, support UDP port forwarding, friends who stream games can give it a try.
554 | 2. Support UDP over TCP mode.
555 | 3. Other minor optimizations.
556 | 557 | ### 2019-11-03:
558 | 1. Fixed memory leak bug.
559 | 2. Other minor optimizations, version remains unchanged.
560 | 3. Improved P2P reconnection reliability.
561 | 562 | ### 2019-09-30 updated to v0.23:
563 | 1. Fixed high CPU usage bug under weak network conditions on Windows server.
564 | 2. Overall improved network transmission speed.
565 | 566 | ### 2019-09-20 updated to v0.22:
567 | 1. Improved P2P detection reliability.
568 | 2. Fixed a bug on Windows that prevented P2P connection under certain conditions.
569 | 3. The client now provides manual P2P reconnection feature (automatic reconnection may fail under weak network conditions, in such cases, manual reconnection can be used).
570 | 571 | ### 2019-09-15:
572 | 1. Further reduced server CPU usage under low-speed conditions.
573 | 2. General optimizations, version remains unchanged.
574 | 575 | ### 2019-09-10 updated to v0.21:
576 | 1. Network performance optimization.
577 | 2. The client now supports displaying real-time network speed.
578 | 579 | ### 2019-09-05:
580 | 1. Fixed the bug of automatic login failure after changing the password on the client.
581 | 2. Provided automatic login timeout control.
582 | 583 | ### 2019-09-01 updated to v0.20:
584 | 1. Optimized connection checking performance (provided parallel asynchronous detection).
585 | 2. Supports proxying HTTPS to HTTP (client-side HTTP access, server-side HTTPS).
586 | 587 | ### 2019-08-18 updated to v0.19:
588 | 1. Performance optimization.
589 | 2. Fixed a bug where server connections could not be reliably disconnected under certain conditions (custom routing).
590 | 3. Static compilation, no longer dependent on the gcc dynamic library of the inux system, can run directly in alpine (requires creating a symbolic link).
591 | 4. Supports compiling as a mini version, no longer statically compiling OpenSSL; fully compatible with OpenSSL library from 0.9.8 to 1.1.1, binary package reduced to about 1M (already placed in the dynamic directory, SSL library needs to be configured).
592 | 593 | ### 2019-05-27 updated to v0.18:
594 | 1. Performance optimization.
595 | 2. Provided IPv6 P2P switch mechanism: `` Set to "true" to close IPv6 P2P, the default value is "false".
596 | 3. Added client IPv6 flag and connection status display.
597 | 598 | ### 2019-05-21:
599 | 1. Fixed the bug that IPv6 could not be detected under Raspbian jessie.
600 | 601 | ### 2019-05-16 updated to v0.17:
602 | 1. Performance optimization.
603 | 2. Provided P2P disconnect and reconnect mechanism.
604 | 605 | ### 2019-05-04:
606 | 1. Fixed a bug where the server occasionally had high CPU usage when mounting private routes with a thread count < 4, version remains unchanged.
607 | 608 | ### 2019-04-23 updated to v0.16:
609 | 1. Fixed a bug where the server occasionally core dumped when mounting private routes.
610 | 611 | ### 2019-04-16 updated to v0.15:
612 | 1. Fixed the bug of IPV4/IPV6 network switching, unable to P2P.
613 | 614 | ### 2019-04-15 updated to v0.14:
615 | 1. Fixed the issue of network switching reconnection failure.
616 | 2. Engine performance optimization.
617 | 3. Added support for IPv6 firewall penetration (mobile end supports IPv6, and the internal network server supports IPv6).
618 | [Important Note] Version 0.14 is incompatible with previous versions, be sure to update!
619 | 620 | ### ....Initial version v0.13
621 | 622 |
623 | --------------------------------------------------------------------------------