如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

苏南大叔继续讲述百度前端模块化工具fis3,本文中讲述服务器发布脚本。在以前的fis3文章中,所有的demo都是发布到本机的另外一个目录的。那么本文中,发布的对象是另外一台服务器。这个服务器的上需要部署一个特殊的receiver脚本。好,剧透就这么多,想知道更多fis3服务器端发布脚本的细节,请继续查看正文吧。

'http-push'插件

依然是插件制度,这里使用的是个http-push。见名思意,通过http进行push操作.... 那就是文件上传了。那么苏南大叔是这么理解这个插件的,把所有的文件上传到另外的接口。那么是不是这样的呢?大家可以看看文末的代码解读部分,这里就先卖个关子。

同样,苏南大叔这里修改的文件是fis-config.js文件。利用了mediaplugin功能,将这个release限定了一个特定的场景qa。代码如下:

fis.media('qa').match('*', {
  deploy: fis.plugin('http-push', {
    receiver: 'http://remote:888/receive.php',
    to: 'E:/fis3/php/www/' // 注意这个是指的是测试机器的路径,而非本地机器
  })
});

对于参数receiverto,请看下一步的继续说明。to中目录分隔符,即使远程机器是win,目录的写法也是仿linux系列的写法。这点需要注意。

fis3进阶之服务器发布脚本http-push插件 - fis-config

特制的receiver

百度提供了一个php的demo,名叫receiver.php。代码见这里:

这个php文件,预先放置在远程服务器上面就可以了。

在部署receiver.php的时候,可以看到这里的注释上面写了这个代码非常危险,请不要部署在正式环境里面。所以,苏南大叔粗略的看了一下这个代码。因为毕竟也挺简单的,一目几行就看完了。确实蛮危险的,用于演示还可以。但是部署正式服务器的话,挺冒险的。

危险点主要有下面几个:

  • 会先删除远程服务器上的目标目录to,也就是说已有的老数据会被先行清除。可以想象,如果把to目录指定为根目录,会发生什么事情。记得那个经典程序员笑话么?“QQ群里面教了我一个高级命令sudo rm -rf /”。
  • 目标目录to是由fis3发布方指定的,receiver完全没有发言权。很容易把代码发布到不合适的位置上面去。
  • 没有鉴权策略,任何知道receiver脚本位置的人,都可以发布数据。
  • 没有文件检测策略,比如没有改变的文件可以不用上传。
不过作为内部演示的话,这个代码还是可以操作的。所以,fis-config.js上的to参数,一定要小心谨慎配置,异常小心谨慎!!否则,一不小心远程服务器就误删除了。

fis3进阶之服务器发布脚本http-push插件 - receiver-php

当然,百度官方还有提供一个node版本的receive。原理上和php版本的是一致的,所以上述安全问题一致存在。node版的代码见这里:

在本文中,就暂时不做评述了,大家可以自行试验。记得小心谨慎操作!这些脚本都异常危险!

解读fis3-deploy-http-push

这个脚本文件位于npm全局包的下的这个位置:
/node_modules/fis3/node_modules/fis3-deploy-http-push/index.js

结合上一个receiver.php,大家可以知道:这个发布的逻辑就是:删除目标文件夹to,然后批量文件上传,保存文件。

fis3进阶之服务器发布脚本http-push插件 - fis3-http-push

如何查找全局包的位置,请点击 https://newsn.net/say/npm-whereis.html

相关截图

苏南大叔执行的代码是:fis3 release qa。然后远端服务器是个win主机,php端口监听888。远端服务器脚本的发布目录是:E:/fis3/php/www/

fis3进阶之服务器发布脚本http-push插件 - fis3-release-qa

结论

这个receiver.php,如果稍加改造,还是可以使用的。但是一定要加强其安全性。鉴权以及对目录to的控制,对删除时机的控制,这些都是要考虑到的安全因素。

更多由苏南大叔解读的fis3使用经验文章,请点击下面的连接查看。

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。