6

CoreELEC中Google Drive插件不全局代理的解决方法

 2 years ago
source link: https://www.saltyfish.win/posts/coreelec-addon-proxy-setting/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Do Not Go Gentle Into That Good Night

CoreELEC中Google Drive插件不全局代理的解决方法

2020-07-15

CoreELEC是专用于晶晨SOC的基于KODI定制的Linux发行版,职业高清播放器系统。然而对比桌面版KODI还是有不少坑点,尤其是想要用高性能盒子做all-in-one方案的时候。耗费了数小时才跳出这个代理的大坑。

现在不少人的Google Drive团队盘里都有几十T的片库,为了让家庭影院物尽其用就有了这次折腾。

Bug描述

设备:S922X 盒子

Repro:在设置好了CoreELEC里的socks5代理之后,Google Drive Add-on在认证账号之后无法获取账号信息。

在插件中心中安装Docker,并运行v2ray代理。

尝试一(失败)

首先考虑直接在本机运行一个openwrt的docker镜像当软路由用。根据之前N1的经验,kanshudj/n1-openwrtgateway:r20这个docker镜像是在ARM上成功率最高的。一通设置之后代理就是跑不起来,更换了数个openwrt image之后还是报同样的错误。

然后在github上找到插件报错的源代码,应该是CoreELEC的内核精简导致iptables里功能不全。如果要修复这个问题就需要找到缺失的部分并重新编译CoreELEC。

没有时间精力,放弃。

尝试二(成功)

转而研究GD插件的代码,看看为什么插件不会走代理。插件的Github在此。

一番研究之后发现这是因为它直接用两个urllib2进行网络访问。本来打算给插件加一个代理配置项,在查询urllib2的代理参数时发现它会默认读取环境变量中的*_PROXY来进行代理设置。于是乎转而研究如何给插件加上环境变量。

又进行一番研究以后发现在/storage/.kodi/addons/plugin.googledrive下建立profile.d文件夹,里面的所有*.profile都会被拿出来当作shell执行一番。所以在里面设置好代理就完事啦。

注意v2ray只支持原生http协议,并不支持原生https代理(但并不意味着这种代理模式只能访问http网站)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK