1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,3 +7,4 @@ x-ui-*.tar.gz
|
||||
/x-ui
|
||||
/release.sh
|
||||
.sync*
|
||||
main
|
||||
|
||||
2
go.mod
2
go.mod
@@ -9,7 +9,7 @@ require (
|
||||
github.com/gin-contrib/sessions v0.0.3
|
||||
github.com/gin-gonic/gin v1.7.1
|
||||
github.com/go-ole/go-ole v1.2.5 // indirect
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
|
||||
github.com/nicksnyder/go-i18n/v2 v2.1.2
|
||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
|
||||
@@ -110,11 +110,13 @@ class XrayCommonClass {
|
||||
}
|
||||
|
||||
class TcpStreamSettings extends XrayCommonClass {
|
||||
constructor(type='none',
|
||||
constructor(acceptProxyProtocol=false,
|
||||
type='none',
|
||||
request=new TcpStreamSettings.TcpRequest(),
|
||||
response=new TcpStreamSettings.TcpResponse(),
|
||||
) {
|
||||
super();
|
||||
this.acceptProxyProtocol = acceptProxyProtocol;
|
||||
this.type = type;
|
||||
this.request = request;
|
||||
this.response = response;
|
||||
@@ -125,7 +127,7 @@ class TcpStreamSettings extends XrayCommonClass {
|
||||
if (!header) {
|
||||
header = {};
|
||||
}
|
||||
return new TcpStreamSettings(
|
||||
return new TcpStreamSettings(json.acceptProxyProtocol,
|
||||
header.type,
|
||||
TcpStreamSettings.TcpRequest.fromJson(header.request),
|
||||
TcpStreamSettings.TcpResponse.fromJson(header.response),
|
||||
@@ -134,6 +136,7 @@ class TcpStreamSettings extends XrayCommonClass {
|
||||
|
||||
toJson() {
|
||||
return {
|
||||
acceptProxyProtocol: this.acceptProxyProtocol,
|
||||
header: {
|
||||
type: this.type,
|
||||
request: this.type === 'http' ? this.request.toJson() : undefined,
|
||||
@@ -293,8 +296,9 @@ class KcpStreamSettings extends XrayCommonClass {
|
||||
}
|
||||
|
||||
class WsStreamSettings extends XrayCommonClass {
|
||||
constructor(path='/', headers=[]) {
|
||||
constructor(acceptProxyProtocol=false, path='/', headers=[]) {
|
||||
super();
|
||||
this.acceptProxyProtocol = acceptProxyProtocol;
|
||||
this.path = path;
|
||||
this.headers = headers;
|
||||
}
|
||||
@@ -318,6 +322,7 @@ class WsStreamSettings extends XrayCommonClass {
|
||||
|
||||
static fromJson(json={}) {
|
||||
return new WsStreamSettings(
|
||||
json.acceptProxyProtocol,
|
||||
json.path,
|
||||
XrayCommonClass.toHeaders(json.headers),
|
||||
);
|
||||
@@ -325,6 +330,7 @@ class WsStreamSettings extends XrayCommonClass {
|
||||
|
||||
toJson() {
|
||||
return {
|
||||
acceptProxyProtocol: this.acceptProxyProtocol,
|
||||
path: this.path,
|
||||
headers: XrayCommonClass.toV2Headers(this.headers, false),
|
||||
};
|
||||
@@ -411,10 +417,11 @@ class GrpcStreamSettings extends XrayCommonClass {
|
||||
|
||||
class TlsStreamSettings extends XrayCommonClass {
|
||||
constructor(serverName='',
|
||||
certificates=[new TlsStreamSettings.Cert()]) {
|
||||
certificates=[new TlsStreamSettings.Cert()], alpn=[]) {
|
||||
super();
|
||||
this.server = serverName;
|
||||
this.certs = certificates;
|
||||
this.alpn = alpn;
|
||||
}
|
||||
|
||||
addCert(cert) {
|
||||
@@ -430,9 +437,11 @@ class TlsStreamSettings extends XrayCommonClass {
|
||||
if (!ObjectUtil.isEmpty(json.certificates)) {
|
||||
certs = json.certificates.map(cert => TlsStreamSettings.Cert.fromJson(cert));
|
||||
}
|
||||
|
||||
return new TlsStreamSettings(
|
||||
json.serverName,
|
||||
certs,
|
||||
json.alpn
|
||||
);
|
||||
}
|
||||
|
||||
@@ -440,6 +449,7 @@ class TlsStreamSettings extends XrayCommonClass {
|
||||
return {
|
||||
serverName: this.server,
|
||||
certificates: TlsStreamSettings.toJsonArray(this.certs),
|
||||
alpn: this.alpn
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -629,11 +639,7 @@ class Inbound extends XrayCommonClass {
|
||||
if (isTls) {
|
||||
this.stream.security = 'tls';
|
||||
} else {
|
||||
if (this.protocol === Protocols.TROJAN) {
|
||||
this.xtls = true;
|
||||
} else {
|
||||
this.stream.security = 'none';
|
||||
}
|
||||
this.stream.security = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -645,11 +651,7 @@ class Inbound extends XrayCommonClass {
|
||||
if (isXTls) {
|
||||
this.stream.security = 'xtls';
|
||||
} else {
|
||||
if (this.protocol === Protocols.TROJAN) {
|
||||
this.tls = true;
|
||||
} else {
|
||||
this.stream.security = 'none';
|
||||
}
|
||||
this.stream.security = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
{{define "form/streamTCP"}}
|
||||
<!-- tcp type -->
|
||||
<a-form layout="inline">
|
||||
<a-form-item label="acceptProxyProtocol">
|
||||
<a-switch v-model="inbound.stream.tcp.acceptProxyProtocol"></a-switch>
|
||||
</a-form-item>
|
||||
<a-form-item label="http 伪装">
|
||||
<a-switch
|
||||
:checked="inbound.stream.tcp.type === 'http'"
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{{define "form/streamWS"}}
|
||||
<a-form layout="inline">
|
||||
<a-form-item label="acceptProxyProtocol">
|
||||
<a-switch v-model="inbound.stream.ws.acceptProxyProtocol"></a-switch>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
<a-form layout="inline">
|
||||
<a-form-item label="路径">
|
||||
<a-input v-model.trim="inbound.stream.ws.path"></a-input>
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
<a-form-item label="域名">
|
||||
<a-input v-model.trim="inbound.stream.tls.server"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="alpn" placeholder="http/1.1,h2">
|
||||
<a-input v-model.trim="inbound.stream.tls.alpn"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="证书">
|
||||
<a-radio-group v-model="inbound.stream.tls.certs[0].useFile"
|
||||
button-style="solid">
|
||||
@@ -42,4 +45,9 @@
|
||||
</a-form-item>
|
||||
</template>
|
||||
</a-form>
|
||||
<a-form layout="inline" v-else-if = "inbound.stream.network === 'tcp' ">
|
||||
<a-form-item label="tcp-acceptProxyProtocol">
|
||||
<a-switch v-model="inbound.stream.tcp.acceptProxyProtocol"></a-switch>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user