dingtalk-docs-cool-app
Version:
钉钉文档酷应用插件扩展 开发者初始化包
1 lines • 934 B
JavaScript
import _extends from"@babel/runtime/helpers/extends";import fetch from"node-fetch";import{URL}from"url";import{getAuthenticationHeader}from"../module/fields/kit";function isPrivateIP(e){return["127.0.0.1","::1","localhost","0.0.0.0","192.168.","10.","172.16.","172.17.","172.18.","172.19.","172.20.","172.21.","172.22.","172.23.","172.24.","172.25.","172.26.","172.27.","172.28.","172.29.","172.30.","172.31."].some((function(t){return e.startsWith(t)}))}function isDomainAllowed(e,t){if(isPrivateIP(t))return!1;var r=t.toLowerCase();return e.some((function(e){return"string"==typeof e?e.toLowerCase()===r:e instanceof RegExp&&e.test(r)}))}export function getSafeFetch(e,t,r){return function(o,n,i){var s=new URL(o).hostname,a=n.headers||{};i&&r&&(a=_extends({},a,getAuthenticationHeader(t,i,r)));var f=_extends({},n,{headers:a});if(!isDomainAllowed(e,s))throw new Error("Blocked request to disallowed domain: "+s);return fetch(o,f)}}