Open kva159 opened 4 years ago
frpc -v
cat /etc/*release
opkg print-architecture
看看输出什么
frpc -v cat /etc/*release opkg print-architecture
看看输出什么 你好软件安装及输出如图
文件未找到,检查一下你的 frpc 路径
试试
/usr/bin/frpc -v
文件未找到,检查一下你的 frpc 路径
试试
/usr/bin/frpc -v
未找到相关路径 是我缺少安装了什么插件吗
不关插件的事,你这个客户端文件安装有问题呗。 不能在路由器上运行。
我这里不是提供了 ipk 吗 https://github.com/kuoruan/openwrt-frp/releases
我这里不是提供了ipk吗 https://github.com/kuoruan/openwrt-frp/releases
额 大哥 感谢你的回复
经过我两天的努力 终于把ipk装上去了 。。。 我的设备flash不够 只能装到内存卡上了,经过不懈努力 最终可以执行frpc -v命令 如图 让我高兴好久 but! 等我到界面上查看是 发现并未有变化 这是一个令人伤心的过程 ,还请大佬再指点一二 让我了结这痛苦的过程
已小小捐助 聊表谢意
请配置完整的文件路径
its work!
@kuoruan 我抄着你的luci来做了一个FRPS的管理界面。运行是没有问题的。见下图: 后面最大的问题是如果怎么在保存后,已经更新了config的情况下,把“启用”复选框和frps的服务的相应设置为启动、关闭进行关联。本人会网页开发的。但是luci是最近玩家里的路由器开始学习的,所以个中原理不懂。我目前只建立了luci文件夹中的各种文件。 根据我对你的源码的查看,是否是/etc/init.d中的frps的程序缺少接口导致的? 小白一个,望兄弟不吝赐教,谢谢了!
@kuoruan 您给指个思路,我可以慢慢研究,我能参考您的源码进行学习。谢谢了!
@leo19821119
LuCI 在点击保存并提交时会自动调用 /etc/init.d/...
执行 restart
所以你只要在 start_service 里边获取 LuCI 配置,从而决定是否启动服务即可
@kuoruan 收到,学习了。 看了你的代码,感觉最像的就是这个,是模仿 service_triggers() { procd_add_reload_trigger "$NAME" } 这个方法吗? 还是另外写一个 restart_service() {
} 服务的配置文件的机制我也不是很明白。 我的frps的配置文件如下:
START=99 USE_PROCD=1
NAME=frps PROG=/usr/bin/$NAME
_err() { echo "$" >&2 logger -p daemon.err -t "$NAME" "$" }
config_cb() { [ $# -eq 0 ] && return
local type="$1"
local name="$2"
if [ "$type" = "conf" ]; then
echo "[$name]" >> "$conf_file"
option_cb() {
local option="$1"
local value="$2"
echo "$option = $value" >> "$conf_file"
}
list_cb() {
local name="$1"
local value="$2"
[ "$name" = "_" ] && echo "$value" >> "$conf_file"
}
else
[ "$type" = "init" ] && init_cfg="$name"
option_cb() { return 0; }
list_cb() { return 0; }
fi
}
start_service() { local init_cfg=" " local conf_file="/var/etc/$NAME.ini"
> "$conf_file"
config_load "$NAME"
local stdout stderr user group respawn env conf_inc
uci_validate_section "$NAME" init "$init_cfg" \
'stdout:bool:1' \
'stderr:bool:1' \
'user:string' \
'group:string' \
'respawn:bool:1' \
'env:list(string)' \
'conf_inc:list(string)'
local err=$?
[ $err -ne 0 ] && {
_err "uci_validate_section returned $err"
return 1
}
[ -n "$conf_inc" ] && config_list_foreach "$init_cfg" conf_inc cat >> "$conf_file"
procd_open_instance
procd_set_param command "$PROG" -c "$conf_file"
procd_set_param stdout $stdout
procd_set_param stderr $stderr
[ -n "$user" ] && procd_set_param user "$user"
[ -n "$group" ] && procd_set_param group "$group"
[ $respawn -eq 1 ] && procd_set_param respawn
[ -n "$env" ] && config_list_foreach "$init_cfg" env "procd_append_param env"
procd_close_instance
}
procd_add_reload_trigger
只是监听配置文件的改动自动 reload service
官方的文档都有。
我们只需要实现 start_service
和 stop_service
就行了,然后告诉 LuCI 在保存时调用哪个service
https://github.com/kuoruan/luci-app-frpc/blob/157292694b393b720ee237a963cd0eaa67ae2f5c/root/etc/uci-defaults/40_luci-frpc#L3-L8
@kuoruan 好的,我先研究一下,不懂再请教。
@kuoruan 谢谢!!!
@kuoruan 我是直接在 ucitrack 文件 最后加上了这段 config frps option init 'frps'
,但是没发现保存配置是按钮会触发/etc/init.d/frps的start_service()这个方法。不知道问题出在哪里,另外,我直接把这个文件40_luci-frpc 改成名称和内容对应的frps的,直接运行不了。 bash /usr/bin/40_luci-frps.sh /usr/bin/40_luci-frps.sh: line 2: $'\r': command not found /usr/bin/40_luci-frps.sh: line 25: warning: here-document at line 3 delimited by end-of-file (wanted `EOF')
所以的文件都应该是 Unix 的格式,换行符都应该为 \n
你从 Windows 上拷贝个文件,会出错正常
@kuoruan 这不是关键,我手动运行这个可运行。 uci delete ucitrack.@frps[-1] uci add ucitrack frps uci set ucitrack.@frps[-1].init=frps uci commit ucitrack 看对应的ucitrack文件也正常。 那保存按钮没有导致服务自动重启的原因是不是,我的/etc/init.d/frps缺少什么关键方法或者语句?
我已经说得很明白了 第一 config 文件 第二 init.d 文件 第三 uci-defaults 文件
@kuoruan 谢谢,最后找到原因了,init.d文件中配置文件项没有设置,导致文件修改后没有自动重发程序重启。谢谢了,非常感谢!!!这句话很有用。 procd_set_param file /var/etc/your_service.conf # /etc/init.d/your_service reload will restart the daemon if these files have changed
如图 已按上传相应的客户端文件
这个地方指的是上传frpc的软件包 我理解的没错吧 应该不是我的客户端配置文件吧? linux小白 希望能够说的基础一点
另外我不太清除我的设备是arm64还是mipls构架 原谅我的小白 希望能得到帮助