源站支持自定义回源主机名

This commit is contained in:
刘祥超
2022-03-17 15:48:08 +08:00
parent 69d6fd645b
commit 0735bc2d8a
10 changed files with 44 additions and 15 deletions

View File

@@ -64,6 +64,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
primaryOriginMaps = append(primaryOriginMaps, m) primaryOriginMaps = append(primaryOriginMaps, m)
} }
@@ -79,6 +80,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
backupOriginMaps = append(backupOriginMaps, m) backupOriginMaps = append(backupOriginMaps, m)
} }

View File

@@ -64,6 +64,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
primaryOriginMaps = append(primaryOriginMaps, m) primaryOriginMaps = append(primaryOriginMaps, m)
} }
@@ -79,6 +80,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
backupOriginMaps = append(backupOriginMaps, m) backupOriginMaps = append(backupOriginMaps, m)
} }

View File

@@ -64,6 +64,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
primaryOriginMaps = append(primaryOriginMaps, m) primaryOriginMaps = append(primaryOriginMaps, m)
} }
@@ -79,6 +80,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
backupOriginMaps = append(backupOriginMaps, m) backupOriginMaps = append(backupOriginMaps, m)
} }

View File

@@ -65,6 +65,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
primaryOriginMaps = append(primaryOriginMaps, m) primaryOriginMaps = append(primaryOriginMaps, m)
} }
@@ -80,6 +81,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
backupOriginMaps = append(backupOriginMaps, m) backupOriginMaps = append(backupOriginMaps, m)
} }

View File

@@ -66,6 +66,7 @@ func (this *AddPopupAction) RunPost(params struct {
CertIdsJSON []byte CertIdsJSON []byte
DomainsJSON []byte DomainsJSON []byte
Host string
Description string Description string
IsOn bool IsOn bool
@@ -157,6 +158,7 @@ func (this *AddPopupAction) RunPost(params struct {
} }
} }
// 专属域名
var domains = []string{} var domains = []string{}
if len(params.DomainsJSON) > 0 { if len(params.DomainsJSON) > 0 {
err = json.Unmarshal(params.DomainsJSON, &domains) err = json.Unmarshal(params.DomainsJSON, &domains)
@@ -188,6 +190,7 @@ func (this *AddPopupAction) RunPost(params struct {
MaxIdleConns: params.MaxIdleConns, MaxIdleConns: params.MaxIdleConns,
CertRefJSON: certRefJSON, CertRefJSON: certRefJSON,
Domains: domains, Domains: domains,
Host: params.Host,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -60,17 +60,17 @@ func (this *UpdatePopupAction) RunGet(params struct {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
configData := originResp.OriginJSON var configData = originResp.OriginJSON
config := &serverconfigs.OriginConfig{} var config = &serverconfigs.OriginConfig{}
err = json.Unmarshal(configData, config) err = json.Unmarshal(configData, config)
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
return return
} }
connTimeout := 0 var connTimeout = 0
readTimeout := 0 var readTimeout = 0
idleTimeout := 0 var idleTimeout = 0
if config.ConnTimeout != nil { if config.ConnTimeout != nil {
connTimeout = types.Int(config.ConnTimeout.Count) connTimeout = types.Int(config.ConnTimeout.Count)
} }
@@ -108,6 +108,7 @@ func (this *UpdatePopupAction) RunGet(params struct {
"maxIdleConns": config.MaxIdleConns, "maxIdleConns": config.MaxIdleConns,
"cert": config.Cert, "cert": config.Cert,
"domains": config.Domains, "domains": config.Domains,
"host": config.RequestHost,
} }
this.Show() this.Show()
@@ -130,7 +131,9 @@ func (this *UpdatePopupAction) RunPost(params struct {
IdleTimeout int IdleTimeout int
CertIdsJSON []byte CertIdsJSON []byte
DomainsJSON []byte DomainsJSON []byte
Host string
Description string Description string
IsOn bool IsOn bool
@@ -164,8 +167,8 @@ func (this *UpdatePopupAction) RunPost(params struct {
} }
portIndex = strings.LastIndex(addr, ":") portIndex = strings.LastIndex(addr, ":")
} }
host := addr[:portIndex] var host = addr[:portIndex]
port := addr[portIndex+1:] var port = addr[portIndex+1:]
if port == "0" { if port == "0" {
this.Fail("端口号不能为0") this.Fail("端口号不能为0")
} }
@@ -222,6 +225,7 @@ func (this *UpdatePopupAction) RunPost(params struct {
} }
} }
// 专属域名
var domains = []string{} var domains = []string{}
if len(params.DomainsJSON) > 0 { if len(params.DomainsJSON) > 0 {
err = json.Unmarshal(params.DomainsJSON, &domains) err = json.Unmarshal(params.DomainsJSON, &domains)
@@ -254,6 +258,7 @@ func (this *UpdatePopupAction) RunPost(params struct {
MaxIdleConns: params.MaxIdleConns, MaxIdleConns: params.MaxIdleConns,
CertRefJSON: certRefJSON, CertRefJSON: certRefJSON,
Domains: domains, Domains: domains,
Host: params.Host,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -92,6 +92,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
primaryOriginMaps = append(primaryOriginMaps, m) primaryOriginMaps = append(primaryOriginMaps, m)
} }
@@ -107,6 +108,7 @@ func (this *IndexAction) RunGet(params struct {
"isOn": originConfig.IsOn, "isOn": originConfig.IsOn,
"domains": originConfig.Domains, "domains": originConfig.Domains,
"hasCert": originConfig.Cert != nil, "hasCert": originConfig.Cert != nil,
"host": originConfig.RequestHost,
} }
backupOriginMaps = append(backupOriginMaps, m) backupOriginMaps = append(backupOriginMaps, m)
} }

View File

@@ -86,14 +86,11 @@ Vue.component("origin-list-table", {
</thead> </thead>
<tr v-for="origin in vOrigins"> <tr v-for="origin in vOrigins">
<td :class="{disabled:!origin.isOn}"><a href="" @click.prevent="updateOrigin(origin.id)">{{origin.addr}} &nbsp;<i class="icon clone outline small"></i></a> <td :class="{disabled:!origin.isOn}"><a href="" @click.prevent="updateOrigin(origin.id)">{{origin.addr}} &nbsp;<i class="icon clone outline small"></i></a>
<div v-if="origin.name.length > 0" style="margin-top: 0.5em"> <div style="margin-top: 0.3em" v-if="origin.name.length > 0 || origin.hasCert || (origin.host != null && origin.host.length > 0) || (origin.domains != null && origin.domains.length > 0)">
<tiny-basic-label>{{origin.name}}</tiny-basic-label> <tiny-basic-label v-if="origin.name.length > 0">{{origin.name}}</tiny-basic-label>
</div> <tiny-basic-label v-if="origin.hasCert">证书</tiny-basic-label>
<div v-if="origin.domains != null && origin.domains.length > 0"> <tiny-basic-label v-if="origin.host != null && origin.host.length > 0">主机名: {{origin.host}}</tiny-basic-label>
<grey-label v-for="domain in origin.domains">{{domain}}</grey-label> <span v-if="origin.domains != null && origin.domains.length > 0"><tiny-basic-label v-for="domain in origin.domains">匹配: {{domain}}</tiny-basic-label></span>
</div>
<div v-if="origin.hasCert">
<tiny-basic-label>证书</tiny-basic-label>
</div> </div>
</td> </td>
<td :class="{disabled:!origin.isOn}">{{origin.weight}}</td> <td :class="{disabled:!origin.isOn}">{{origin.weight}}</td>

View File

@@ -45,6 +45,13 @@
<ssl-certs-box :v-single-mode="true" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box> <ssl-certs-box :v-single-mode="true" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box>
</td> </td>
</tr> </tr>
<tr v-if="isHTTP">
<td>回源主机名</td>
<td>
<input type="text" name="host" placeholder="比如example.com" maxlength="100"/>
<p class="comment">请求源站时的Host用于修改源站接收到的域名自定义Host内容中支持请求变量。</p>
</td>
</tr>
<tr v-if="isHTTP"> <tr v-if="isHTTP">
<td>专属域名</td> <td>专属域名</td>
<td> <td>

View File

@@ -46,6 +46,13 @@
<ssl-certs-box :v-single-mode="true" :v-cert="origin.cert" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box> <ssl-certs-box :v-single-mode="true" :v-cert="origin.cert" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box>
</td> </td>
</tr> </tr>
<tr v-if="isHTTP">
<td>回源主机名</td>
<td>
<input type="text" name="host" v-model="origin.host" placeholder="比如example.com" maxlength="100"/>
<p class="comment">请求源站时的Host用于修改源站接收到的域名自定义Host内容中支持请求变量。</p>
</td>
</tr>
<tr v-if="isHTTP"> <tr v-if="isHTTP">
<td>专属域名</td> <td>专属域名</td>
<td> <td>