Update Vmess

This commit is contained in:
2026-05-02 18:46:46 -03:00
parent 6f677d272a
commit f8fac513e3
3 changed files with 39 additions and 17 deletions

View File

@@ -22,8 +22,8 @@ Distribuições alvo:
Clone o projeto e execute o instalador:
```bash
git clone <REPOSITORY_URL>
cd <PROJECT_FOLDER>
git clone https://git.dr2.site/penguinehis/DragonCoreSSH-NewWEB
cd DragonCoreSSH-NewWEB
sudo bash install.sh
```
@@ -212,8 +212,8 @@ Target distributions:
Clone the project and run the installer:
```bash
git clone <REPOSITORY_URL>
cd <PROJECT_FOLDER>
git clone https://git.dr2.site/penguinehis/DragonCoreSSH-NewWEB
cd DragonCoreSSH-NewWEB
sudo bash install.sh
```

View File

@@ -308,6 +308,7 @@ pre.log-box{background:rgba(15,23,42,.9);color:#9ca3af;border:1px solid rgba(55,
<label>Protocol</label>
<select id="wzProtocol" onchange="onWzProtoChange(this.value)">
<option value="vless">VLESS</option>
<option value="vmess">VMess</option>
<option value="trojan">Trojan</option>
<option value="shadowsocks">Shadowsocks</option>
<option value="socks">SOCKS5 (local)</option>
@@ -316,7 +317,7 @@ pre.log-box{background:rgba(15,23,42,.9);color:#9ca3af;border:1px solid rgba(55,
<div class="field"><label>Port</label><input type="number" id="wzPort" min="1" max="65535" placeholder="10086"/></div>
<div class="field"><label>Listen IP</label><input type="text" id="wzListenIP" placeholder="0.0.0.0"/></div>
<div class="field"><label>Tag</label><input type="text" id="wzTag" placeholder="vless-in"/></div>
<!-- VLESS fields -->
<!-- VLESS / VMess transport fields -->
<div id="wzVlessFields" style="grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:8px;">
<div class="field">
<label>Network</label>
@@ -1972,17 +1973,33 @@ function wzToggleAddInbound() {
}
function onWzProtoChange(val) {
document.getElementById("wzVlessFields").style.display = val === "vless" ? "grid" : "none";
const usesClientTransport = val === "vless" || val === "vmess";
document.getElementById("wzVlessFields").style.display = usesClientTransport ? "grid" : "none";
document.getElementById("wzTrojanFields").style.display = val === "trojan" ? "" : "none";
document.getElementById("wzSSFields").style.display = val === "shadowsocks" ? "grid" : "none";
const portMap = { vless:10086, trojan:8443, shadowsocks:8388, socks:10808 };
const tagMap = { vless:"vless-in", trojan:"trojan-in", shadowsocks:"ss-in", socks:"socks-local" };
const tlsSel = document.getElementById("wzTLS");
const realityOpt = document.querySelector("#wzTLS option[value='reality']");
if (realityOpt) {
realityOpt.disabled = val === "vmess";
if (val === "vmess" && tlsSel.value === "reality") {
tlsSel.value = "none";
onWzTLSChange("none");
}
}
const portMap = { vless:10086, vmess:10087, trojan:8443, shadowsocks:8388, socks:10808 };
const tagMap = { vless:"vless-in", vmess:"vmess-in", trojan:"trojan-in", shadowsocks:"ss-in", socks:"socks-local" };
const portEl = document.getElementById("wzPort");
const tagEl = document.getElementById("wzTag");
const lisEl = document.getElementById("wzListenIP");
if (!portEl.value) portEl.value = portMap[val] || "";
if (!tagEl.value) tagEl.value = tagMap[val] || val+"-in";
if (!lisEl.value) lisEl.value = val === "socks" ? "127.0.0.1" : "0.0.0.0";
const knownPorts = Object.values(portMap).map(String);
const knownTags = Object.values(tagMap);
if (!portEl.value || knownPorts.includes(portEl.value)) portEl.value = portMap[val] || "";
if (!tagEl.value || knownTags.includes(tagEl.value)) tagEl.value = tagMap[val] || val+"-in";
if (!lisEl.value || lisEl.value === "0.0.0.0" || lisEl.value === "127.0.0.1") {
lisEl.value = val === "socks" ? "127.0.0.1" : "0.0.0.0";
}
}
function onWzNetworkChange(val) {
@@ -2025,8 +2042,8 @@ function wzSaveInbound() {
const tag = document.getElementById("wzTag").value.trim() || proto+"-in";
if (!port) { alert("Port required."); return; }
const ib = { tag, port, listen, protocol: proto, settings: {} };
if (proto === "vless") {
ib.settings = { clients: [], decryption: "none" };
if (proto === "vless" || proto === "vmess") {
ib.settings = proto === "vless" ? { clients: [], decryption: "none" } : { clients: [] };
const net = document.getElementById("wzNetwork").value;
const tlsVal = document.getElementById("wzTLS").value;
ib.streamSettings = { network: net };
@@ -2069,7 +2086,7 @@ function wzSaveInbound() {
ib.streamSettings.tlsSettings = {
certificates: [{ certificateFile: document.getElementById("wzTLSCert").value.trim(), keyFile: document.getElementById("wzTLSKey").value.trim() }],
};
} else if (tlsVal === "reality") {
} else if (tlsVal === "reality" && proto === "vless") {
ib.streamSettings.security = "reality";
ib.streamSettings.realitySettings = {
dest: document.getElementById("wzRealityDest").value.trim(),

View File

@@ -471,9 +471,14 @@ func (m *XrayManager) AddXrayClient(inboundTag, uuid, email string) error {
}
}
}
settings["clients"] = append(clients, map[string]interface{}{
proto, _ := ibMap["protocol"].(string)
client := map[string]interface{}{
"id": uuid, "email": email, "level": 0,
})
}
if strings.EqualFold(proto, "vmess") {
client["alterId"] = 0
}
settings["clients"] = append(clients, client)
return nil
}
return fmt.Errorf("inbound %q not found", inboundTag)
@@ -578,7 +583,7 @@ func handleXrayClientAdd(w http.ResponseWriter, r *http.Request) {
UUID string `json:"uuid"`
Email string `json:"email"`
Name string `json:"name"`
ExpiresAt string `json:"expires_at"` // RFC3339 or YYYY-MM-DD or empty
ExpiresAt string `json:"expires_at"` // RFC3339 or YYYY-MM-DD or empty
MaxConnections int `json:"max_connections"`
}
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {