Compare commits

...

8 Commits
v1.0.0 ... main

Author SHA1 Message Date
justice2001 e27a3b04d0
Merge pull request #3 from LebsChen/patch-1
Update frp.po
2024-01-18 00:29:17 +08:00
LebsChen b57f0f1e26
Update frp.po
标点符号错误
2024-01-17 07:07:44 +08:00
zhengyi a0ca334c4c Merge pull request 'v1.0.1 Releases' (PR#13) from dev into main
Reviewed-on: #13
2023-12-21 14:14:07 +08:00
zhengyi 9926eb54ea 📝 Update document 2023-12-21 06:12:23 +00:00
zhengyi 93b5a38bd3 🐛 Fix #5 2023-12-21 05:38:36 +00:00
zhengyi b7c5709e92 🐛 Fix #11 2023-12-21 04:54:46 +00:00
zhengyi 34f80e478a 🐛 Fix https://git-uk.mczhengyi.top/zhengyi/luci-app-multi-frpc/issues/11 2023-12-21 04:49:42 +00:00
zhengyi ac64474c13 🐛 Fix #10 2023-12-21 04:42:39 +00:00
11 changed files with 66 additions and 21 deletions

11
CHANGELOG Normal file
View File

@ -0,0 +1,11 @@
# v1.0.0
* 支持多个服务器同时连接
* 支持显示多个服务器的连接日志
* 支持插件日志
# v1.0.1
* 修复客户端日志白屏问题
* 修复插件无视总启用选项的问题
* 修复服务器无视独立启用选项的问题

View File

@ -11,7 +11,7 @@ LUCI_DEPENDS:=+wget +frpc
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-multi-frpc
PKG_VERSION:=1.0
PKG_VERSION:=1.0.1
PKG_RELEASE:=2
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -1,5 +1,35 @@
# LUCI-APP-MULTI-FRPC
一款支持多服务端的frp Client Openwrt插件
> 这是我第一次开发Openwrt插件也是我开源的第三个项目可能会有些Bug欢迎ISSUE
修改自Lean源码
一款支持多服务端的frp Client Openwrt插件修改自Lean源码
## ✨ 特性
* 支持多个服务器同时连接
* 支持显示多个服务器的连接日志
* 拆分插件日志
## 🖊️ 使用
您可以在下列地址下载到ipk文件
* [GitHub Releases](https://github.com/justice2001/luci-app-multi-frpc/releases)
* Gitee Releases - 等待...
您可以使用Openwrt的包管理器的`上传软件包`进行安装或者将ipk文件上传至openwrt使用`opkg install <package>`安装。
## 信息
项目开发的需求会同步到[Gitea](https://git.mczhengyi.top/zhengyi/luci-app-multi-frpc/issues),包括我自己提的一些事项都会在这里展示,您可以浏览这里来获取开发动向。
## 🎉 鸣谢
- 该项目基于[luci-app-frpc](https://github.com/coolsnowwolf/luci/tree/master/applications/luci-app-frpc)修改
- 部分代码参考自[luci-app-adguardhome](https://github.com/rufengsuixing/luci-app-adguardhome)
## 🧑‍💻 碎碎念(开发历程和原因)
> 这段只是介绍我的开发原因与经历,可能比较长
我的个人一些服务和网站都是运行在一个内网的服务器中的由于家用宽带并不允许运行一些应用因此我采用的是内网穿透的方案来运行对外服务而我还有一个VPN来访问家中的网路碍于国内运营商的贷款费用巨贵因此我选择了Vultr作为中转虽然延迟很高但对于在公网看个电影之类的应用也够用无非就是连接建立比较慢一旦播放起来就完全没有感受了。既然服务器都买了带宽也还有很大的富裕我就想着搭一个frp服务器节点吧使用DNS把国外的流量导入到这个服务器上。现在我有两个frp服务端但是Openwrt的插件却只支持单个服务端找遍了GitHub也没有找到支持多个服务端的frp插件可能我这种要求比较奇葩吧。于是做为一个开发者我决定自己动手丰衣足食。开发一款支持多个服务端同时映射的插件但这是我第一次摸Openwrt的插件开发。网上的文档似乎也不算多从零开始开发好像也不现实因此我找出了Lean的luci-app-frpc的源码分析使用的API查找API文档同时也从luci-app-adguardhome中学习到了一些知识。最终搓出了这个插件。

View File

@ -28,8 +28,9 @@ end
function get_server()
local ret = {}
uci.foreach("frp", "server", function (s)
ret[#ret + 1] = s["name"]
uci:load("frp")
uci:foreach("frp", "server", function (s)
table.insert(ret, s["name"])
end)
luci.http.prepare_content("application/json")
luci.http.write_json(ret)

View File

@ -171,7 +171,7 @@ e.width = "15%"
e = t:option(DummyValue, "user", translate("Server User"))
e.width = "15%"
e = t:option(Flag, "enable", translate("Enable State"))
e = t:option(Flag, "enabled", translate("Enable State"))
e.width = "10%"
e.rmempty = false

View File

@ -17,7 +17,7 @@ t.dynamic = false
t:tab("base", translate("Basic Settings"))
e = t:taboption("base", ListValue, "enable", translate("Enable State"))
e = t:taboption("base", ListValue, "enabled", translate("Enable State"))
e.default = "1"
e.rmempty = false
e:value("1", translate("Enable"))

View File

@ -1,12 +1,12 @@
<form>
<div style="padding: 20px 20px 5px;">
<label for="server-list"><%:Choose a server%>:
<select name="server" id="server-list"></select>
<select class="cbi-input-select" name="server" id="server-list"></select>
</label>
<input class="cbi-button cbi-button-apply" type="button" id="reload" value="<%:Reload%>" />
</div>
<div style="padding: 5px 20px 20px;">
<textarea readonly id="content" style="width: 100%; min-height: 800px!important;"></textarea>
<textarea class="cbi-input-textarea" readonly id="content" style="width: 100%; min-height: 800px!important;"></textarea>
</div>
</form>

View File

@ -329,7 +329,7 @@ msgid "Server List"
msgstr "服务器列表"
msgid "Server Remark Name"
msgstr "服务器备注
msgstr "服务器备注"
msgid "Server User"
msgstr "登陆用户"

View File

@ -1,6 +1,6 @@
config frp 'common'
option enable '0'
option enabled '0'
option log_max_days '3'
option login_fail_exit '0'
option enable_cpool '0'

View File

@ -139,12 +139,18 @@ conf_proxy_add() {
config_server_add() {
local cfg="$1"
local servicecfg="$3"
local server_addr server_port token user server_name
local server_addr server_port token user server_name enabled
config_get server_name "$cfg" name
config_get_bool enabled "$cfg" enabled 0
[ $server_name != "" ] || return 1
if [ "$enabled" -lt 1 ]; then
echo_date "服务端 $server_name 被禁用"
return 1
fi
echo_date "正在创建 $server_name 的配置文件"
config_get server_addr "$cfg" server_addr
config_get server_port "$cfg" server_port
config_get token "$cfg" token
@ -246,6 +252,9 @@ start() {
local tmpconf="/var/etc/frp"
local service_conf="/var/etc/frp/service.conf"
# Clean File
rm $tmpconf/*.conf
# Load Service Config
echo "log_level=${log_level}" > $service_conf
echo "log_max_days=${log_max_days}" >>$service_conf
@ -269,6 +278,8 @@ start() {
# 检查服务
[ "$(find $tmpconf -name "frpc-*.conf")" != "" ] || (echo_date "frp服务启动失败没有配置可用服务端" && exit 0)
[ "$(cat "$service_conf" | grep -c "type=")" -gt 0 ] || (echo_date "frp服务启动失败请首先添加服务列表" && exit 0)
config_foreach start_service server "$tmpconf"
@ -286,6 +297,7 @@ start_service() {
config_get server_name "$config" name
[ "$server_name" != "" ] || return 1
[ -f "$2/frpc-$server_name.conf" ] || return 1
logger -t FRPC "Starting frp service $server_name"
echo_date "正在启动Frp客户端: $server_name"
@ -302,10 +314,5 @@ stop() {
echo_date "停止所有Frp客户端!"
kill $(pidof frpc)
# if [ -n "`pidof frpc`" ]; then
# service_stop /usr/bin/frpc
# # Reduce_Log $LOGFILE
# fi
return 0
}

View File

@ -1,4 +0,0 @@
opkg remove luci-app-multi-frpc
opkg install /tmp/luci-app-multi-frpc_1.0-2_all.ipk
rm -rf /tmp/luci-modulecache/*
rm /tmp/luci-indexcache