实现源站端口跟随功能

This commit is contained in:
刘祥超
2022-06-29 21:56:44 +08:00
parent 633684f576
commit c454cd75b3
16 changed files with 215 additions and 120 deletions

View File

@@ -14,13 +14,13 @@
</select>
<!-- TCP -->
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'tcpProxy'">
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'tcpProxy'" v-model="protocol">
<option value="tcp">TCP</option>
<option value="tls">TLS</option>
</select>
<!-- UDP -->
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'udpProxy'">
<select class="ui dropdown auto-width" name="protocol" v-if="serverType == 'udpProxy'" v-model="protocol">
<option value="udp">UDP</option>
</select>
</td>
@@ -32,6 +32,38 @@
<p class="comment"><span class="red" v-if="addrError.length > 0">{{addrError}}</span>源站服务器地址通常是一个IP或域名加端口<span v-if="serverType == 'httpProxy'">,不需要加 http:// 或 https://</span></p>
</td>
</tr>
<tr>
<td colspan="2"><more-options-indicator></more-options-indicator></td>
</tr>
<tbody v-show="moreOptionsVisible">
<tr v-if="protocol == 'https' || protocol == 'tls'">
<td>{{protocol.toUpperCase()}}证书</td>
<td>
<ssl-certs-box :v-single-mode="true" :v-view-size="'mini'" :v-description="'可以选择连接源站使用的证书。'"></ssl-certs-box>
</td>
</tr>
<tr v-if="isHTTP || protocol == 'tls'">
<td>回源主机名</td>
<td>
<input type="text" name="host" placeholder="比如example.com" maxlength="100"/>
<p class="comment">请求源站时的Host用于修改源站接收到的域名<span v-if="isHTTP">自定义Host内容中支持请求变量</span></p>
</td>
</tr>
<tr v-if="isHTTP">
<td>专属域名</td>
<td>
<domains-box></domains-box>
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
</td>
</tr>
<tr>
<td>端口跟随</td>
<td>
<checkbox name="followPort"></checkbox>
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
</td>
</tr>
</tbody>
</table>
<submit-btn></submit-btn>
</form>

View File

@@ -4,8 +4,14 @@ Tea.context(function () {
this.addrError = ""
// 当前服务协议
this.isHTTP = (this.serverType == "httpProxy" || this.serverType == "httpWeb")
if (this.serverType == "httpProxy") {
this.protocol = "http"
} else if (this.serverType == "tcpProxy") {
this.protocol = "tcp"
} else if (this.serverType == "udpProxy") {
this.protocol = "udp"
}
this.changeProtocol = function () {

View File

@@ -45,6 +45,7 @@ Tea.context(function () {
this.addOrigin = function () {
teaweb.popup("/servers/addOriginPopup?serverType=" + this.serverType, {
height: "27em",
callback: function (resp) {
this.origins.push(resp.data.origin);
}

View File

@@ -2,7 +2,7 @@ Tea.context(function () {
this.success = NotifyReloadSuccess("保存成功")
this.updateOn = function (b) {
teaweb.confirm(b ? "确定要启用反向代理服务吗?" : "确定要停用反向代理服务吗?", function () {
teaweb.confirm(b ? "确定要启用源站吗?" : "确定要停用源站服务吗?", function () {
this.$post(".updateOn")
.params({
"serverId": this.serverId,

View File

@@ -59,6 +59,13 @@
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
</td>
</tr>
<tr>
<td>端口跟随</td>
<td>
<checkbox name="followPort"></checkbox>
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
</td>
</tr>
<tr>
<td>权重</td>
<td>

View File

@@ -60,6 +60,13 @@
<p class="comment">默认不需要填写,表示支持所有域名。如果填写了专属域名,表示这些源站只会在所列的专属域名被访问时才生效。</p>
</td>
</tr>
<tr>
<td>端口跟随</td>
<td>
<checkbox name="followPort" v-model="origin.followPort"></checkbox>
<p class="comment">选中后表示源站的端口保持和用户访问的服务端口保持一致;此时的源站地址中的端口号可以任意填写。</p>
</td>
</tr>
<tr>
<td>权重</td>
<td>