diff --git a/model/option.go b/model/option.go index d98a9d38..d892b120 100644 --- a/model/option.go +++ b/model/option.go @@ -67,6 +67,7 @@ func InitOptionMap() { common.OptionMap["ServerAddress"] = "" common.OptionMap["WorkerUrl"] = setting.WorkerUrl common.OptionMap["WorkerValidKey"] = setting.WorkerValidKey + common.OptionMap["WorkerAllowHttpImageRequestEnabled"] = strconv.FormatBool(setting.WorkerAllowHttpImageRequestEnabled) common.OptionMap["PayAddress"] = "" common.OptionMap["CustomCallbackAddress"] = "" common.OptionMap["EpayId"] = "" @@ -257,6 +258,8 @@ func updateOptionMap(key string, value string) (err error) { setting.StopOnSensitiveEnabled = boolValue case "SMTPSSLEnabled": common.SMTPSSLEnabled = boolValue + case "WorkerAllowHttpImageRequestEnabled": + setting.WorkerAllowHttpImageRequestEnabled = boolValue } } switch key { diff --git a/service/cf_worker.go b/service/cf_worker.go index 40a1e294..ae6e1ffe 100644 --- a/service/cf_worker.go +++ b/service/cf_worker.go @@ -24,7 +24,7 @@ func DoWorkerRequest(req *WorkerRequest) (*http.Response, error) { if !setting.EnableWorker() { return nil, fmt.Errorf("worker not enabled") } - if !strings.HasPrefix(req.URL, "https") { + if !setting.WorkerAllowHttpImageRequestEnabled && !strings.HasPrefix(req.URL, "https") { return nil, fmt.Errorf("only support https url") } diff --git a/setting/system_setting.go b/setting/system_setting.go index 15017d3d..c37a6123 100644 --- a/setting/system_setting.go +++ b/setting/system_setting.go @@ -3,6 +3,7 @@ package setting var ServerAddress = "http://localhost:3000" var WorkerUrl = "" var WorkerValidKey = "" +var WorkerAllowHttpImageRequestEnabled = false func EnableWorker() bool { return WorkerUrl != "" diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index 8364657b..53ba675d 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -19,7 +19,7 @@ import { verifyJSON, } from '../helpers/utils'; import { API } from '../helpers/api'; -import axios from "axios"; +import axios from 'axios'; const SystemSetting = () => { let [inputs, setInputs] = useState({ @@ -45,6 +45,7 @@ const SystemSetting = () => { ServerAddress: '', WorkerUrl: '', WorkerValidKey: '', + WorkerAllowHttpImageRequestEnabled: '', EpayId: '', EpayKey: '', Price: 7.3, @@ -111,6 +112,7 @@ const SystemSetting = () => { case 'SMTPSSLEnabled': case 'LinuxDOOAuthEnabled': case 'oidc.enabled': + case 'WorkerAllowHttpImageRequestEnabled': item.value = item.value === 'true'; break; case 'Price': @@ -206,7 +208,11 @@ const SystemSetting = () => { let WorkerUrl = removeTrailingSlash(inputs.WorkerUrl); const options = [ { key: 'WorkerUrl', value: WorkerUrl }, - ] + { + key: 'WorkerAllowHttpImageRequestEnabled', + value: inputs.WorkerAllowHttpImageRequestEnabled ? 'true' : 'false', + }, + ]; if (inputs.WorkerValidKey !== '' || WorkerUrl === '') { options.push({ key: 'WorkerValidKey', value: inputs.WorkerValidKey }); } @@ -302,7 +308,8 @@ const SystemSetting = () => { const domain = emailToAdd.trim(); // 验证域名格式 - const domainRegex = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; + const domainRegex = + /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; if (!domainRegex.test(domain)) { showError('邮箱域名格式不正确,请输入有效的域名,如 gmail.com'); return; @@ -577,6 +584,12 @@ const SystemSetting = () => { /> +