解决带等号的密码无法保存的问题
问题
极路由上 ShadowsockR 插件长久以来都有一个 BUG ,就是服务器密码中有等号时,保存配置刷新页面后密码无法显示。这个问题存在很久了,但一直懒得改,新的一年就拿它开刀吧!~
分析
经过测试后发现密码已经正确保存到了 uci 中,只是前端显示出了问题。分析后结论为:问题出现在使用 sed 从 uci 提取配置信息的过程中考虑不周到造成的。
错误
测试:
echo "ss-redir.6.ss_password==1=2=3=4" | sed 's/ss-redir\.\(.*\)\.\(.*\)=\(.*\)/ss_redir["\1"]["\2"]="\3";/g'
结果:
ss_redir["6"]["ss_password==1=2=3"]="4";
很明显结果是错误的,正确的结果应该是
ss_redir["6"]["ss_password"]="=1=2=3=4";
修正
修正后:
echo "ss-redir.6.ss_password==1=2=3=4" | sed 's/ss-redir\.\(.*\)\.\(.[^=]*\)=\(.*\)/ss_redir["\1"]["\2"]="\3";/g'
结果:
ss_redir["6"]["ss_password"]="=1=2=3=4";
后
这可能是一篇对你没什么用的解决方案,只适用于我正在维护的项目。
EOF
评论框君很顽皮,需要科学上网才能看到哦!~
关注微信公众号(MarIxs)也能联系到我哦!