Closed Jackarain closed 1 year ago
Hi!这个想法我之前有过,不过后来觉得直接集成在里面不够优雅,因为完全可以通过在外部调用解决。
是的,外部调用虽然也可以做到。但是拆分成外部调用,会和通过 tun2socks 来调用,这2者用法有很大区别,由其是把 tun2socks 做成系统服务的时候,如果没有这个参数,事情就会变得相对复杂很多。 另外,这可以给人多一个选择,具体用法还取决于用户自己的需求,同样依然可以继续通过外部调用来完成。
系统服务,例如systemd,可以用ExecStartPost
处理,反而更加符合设计原理。
比如像 sysvinit 并没有像 systemd 的 ExecStartPost 这种功能,还比如 windows 的服务。 当遇到这种情况的时候,只能使用一个专门的壳程序来启动 tun2socks 及 script 并管理进程,像这种结构并不优雅。
嗯确实有一些道理。不过既然这样的话,应该也提供一个类似于ExecStartPre
的参数。另外需要注意下代码中的一些规范问题,例如日志应该用专门的log
模块打印,而不是fmt.Println
;pre
和 post
两个功能最好通过不同的func来分开处理等。
谢谢你接受了我的提议,并给出代码上的建议。
后面我会按你的建议重新做修改,命名我将参考 WireGuard
中类似的功能命名为: PreUP
和 PostUP
,如果你没有意见的话。
可以,我觉得这个命名不错!
Ok,已经完成,有空帮忙 Review
谢谢
@Jackarain 看看还有一些changes,改完应该就可以merge了
Merged!
用于在 tun 设备创建后,执行一个自定义的脚本,比如
route.sh 内容如:
有了 postup 这个参数,这样用便于做一些 tun 创建之后相关的自己的脚本设定。