update noise to noises

+ type
This commit is contained in:
mhsanaei 2024-09-17 09:33:44 +02:00
parent 77edea5419
commit 6b0c9a5fad
No known key found for this signature in database
GPG key ID: 4DACC0663B5986F5
18 changed files with 104 additions and 70 deletions

View file

@ -92,9 +92,9 @@ func (s *Server) initRouter() (*gin.Engine, error) {
SubJsonFragment = "" SubJsonFragment = ""
} }
SubJsonNoise, err := s.settingService.GetSubJsonNoise() SubJsonNoises, err := s.settingService.GetSubJsonNoises()
if err != nil { if err != nil {
SubJsonNoise = "" SubJsonNoises = ""
} }
SubJsonMux, err := s.settingService.GetSubJsonMux() SubJsonMux, err := s.settingService.GetSubJsonMux()
@ -111,7 +111,7 @@ func (s *Server) initRouter() (*gin.Engine, error) {
s.sub = NewSUBController( s.sub = NewSUBController(
g, LinksPath, JsonPath, Encrypt, ShowInfo, RemarkModel, SubUpdates, g, LinksPath, JsonPath, Encrypt, ShowInfo, RemarkModel, SubUpdates,
SubJsonFragment, SubJsonNoise, SubJsonMux, SubJsonRules) SubJsonFragment, SubJsonNoises, SubJsonMux, SubJsonRules)
return engine, nil return engine, nil
} }

View file

@ -21,14 +21,14 @@ type SubJsonService struct {
configJson map[string]interface{} configJson map[string]interface{}
defaultOutbounds []json_util.RawMessage defaultOutbounds []json_util.RawMessage
fragment string fragment string
noise string noises string
mux string mux string
inboundService service.InboundService inboundService service.InboundService
SubService *SubService SubService *SubService
} }
func NewSubJsonService(fragment string, noise string, mux string, rules string, subService *SubService) *SubJsonService { func NewSubJsonService(fragment string, noises string, mux string, rules string, subService *SubService) *SubJsonService {
var configJson map[string]interface{} var configJson map[string]interface{}
var defaultOutbounds []json_util.RawMessage var defaultOutbounds []json_util.RawMessage
json.Unmarshal([]byte(defaultJson), &configJson) json.Unmarshal([]byte(defaultJson), &configJson)
@ -53,15 +53,15 @@ func NewSubJsonService(fragment string, noise string, mux string, rules string,
defaultOutbounds = append(defaultOutbounds, json_util.RawMessage(fragment)) defaultOutbounds = append(defaultOutbounds, json_util.RawMessage(fragment))
} }
if noise != "" { if noises != "" {
defaultOutbounds = append(defaultOutbounds, json_util.RawMessage(noise)) defaultOutbounds = append(defaultOutbounds, json_util.RawMessage(noises))
} }
return &SubJsonService{ return &SubJsonService{
configJson: configJson, configJson: configJson,
defaultOutbounds: defaultOutbounds, defaultOutbounds: defaultOutbounds,
fragment: fragment, fragment: fragment,
noise: noise, noises: noises,
mux: mux, mux: mux,
SubService: subService, SubService: subService,
} }

View file

@ -854,14 +854,14 @@ Outbound.FreedomSettings = class extends CommonClass {
timeout = 10, timeout = 10,
redirect = '', redirect = '',
fragment = {}, fragment = {},
noise = {} noises = {}
) { ) {
super(); super();
this.domainStrategy = domainStrategy; this.domainStrategy = domainStrategy;
this.timeout = timeout; this.timeout = timeout;
this.redirect = redirect; this.redirect = redirect;
this.fragment = fragment; this.fragment = fragment;
this.noise = noise; this.noises = noises;
} }
static fromJson(json = {}) { static fromJson(json = {}) {
@ -870,7 +870,7 @@ Outbound.FreedomSettings = class extends CommonClass {
json.timeout, json.timeout,
json.redirect, json.redirect,
json.fragment ? Outbound.FreedomSettings.Fragment.fromJson(json.fragment) : undefined, json.fragment ? Outbound.FreedomSettings.Fragment.fromJson(json.fragment) : undefined,
json.noise ? Outbound.FreedomSettings.Noise.fromJson(json.noise) : undefined, json.noises ? Outbound.FreedomSettings.Noises.fromJson(json.noises) : undefined,
); );
} }
@ -880,7 +880,7 @@ Outbound.FreedomSettings = class extends CommonClass {
timeout: this.timeout, timeout: this.timeout,
redirect: this.redirect, redirect: this.redirect,
fragment: Object.keys(this.fragment).length === 0 ? undefined : this.fragment, fragment: Object.keys(this.fragment).length === 0 ? undefined : this.fragment,
noise: Object.keys(this.noise).length === 0 ? undefined : this.noise, noises: Object.keys(this.noises).length === 0 ? undefined : this.noises,
}; };
} }
}; };
@ -900,15 +900,21 @@ Outbound.FreedomSettings.Fragment = class extends CommonClass {
); );
} }
}; };
Outbound.FreedomSettings.Noise = class extends CommonClass { Outbound.FreedomSettings.Noises = class extends CommonClass {
constructor(packet = 'rand:100-200', delay = '10-20') { constructor(
type = 'rand',
packet = '10-20',
delay = '10-16'
) {
super(); super();
this.type = type;
this.packet = packet; this.packet = packet;
this.delay = delay; this.delay = delay;
} }
static fromJson(json = {}) { static fromJson(json = {}) {
return new Outbound.FreedomSettings.Noise( return new Outbound.FreedomSettings.Noises(
json.type,
json.packet, json.packet,
json.delay, json.delay,
); );

View file

@ -38,7 +38,7 @@ class AllSetting {
this.subURI = ""; this.subURI = "";
this.subJsonURI = ""; this.subJsonURI = "";
this.subJsonFragment = ""; this.subJsonFragment = "";
this.subJsonNoise = ""; this.subJsonNoises = "";
this.subJsonMux = ""; this.subJsonMux = "";
this.subJsonRules = ""; this.subJsonRules = "";

View file

@ -52,7 +52,7 @@ type AllSetting struct {
SubJsonPath string `json:"subJsonPath" form:"subJsonPath"` SubJsonPath string `json:"subJsonPath" form:"subJsonPath"`
SubJsonURI string `json:"subJsonURI" form:"subJsonURI"` SubJsonURI string `json:"subJsonURI" form:"subJsonURI"`
SubJsonFragment string `json:"subJsonFragment" form:"subJsonFragment"` SubJsonFragment string `json:"subJsonFragment" form:"subJsonFragment"`
SubJsonNoise string `json:"subJsonNoise" form:"subJsonNoise"` SubJsonNoises string `json:"subJsonNoises" form:"subJsonNoises"`
SubJsonMux string `json:"subJsonMux" form:"subJsonMux"` SubJsonMux string `json:"subJsonMux" form:"subJsonMux"`
SubJsonRules string `json:"subJsonRules" form:"subJsonRules"` SubJsonRules string `json:"subJsonRules" form:"subJsonRules"`
Datepicker string `json:"datepicker" form:"datepicker"` Datepicker string `json:"datepicker" form:"datepicker"`

View file

@ -46,15 +46,20 @@
<a-input v-model.trim="outbound.settings.fragment.interval"></a-input> <a-input v-model.trim="outbound.settings.fragment.interval"></a-input>
</a-form-item> </a-form-item>
</template> </template>
<a-form-item label='Noise'> <a-form-item label='Noises'>
<a-switch :checked="Object.keys(outbound.settings.noise).length >0" @change="checked => outbound.settings.noise = checked ? new Outbound.FreedomSettings.Noise() : {}"></a-switch> <a-switch :checked="Object.keys(outbound.settings.noises).length >0" @change="checked => outbound.settings.noises = checked ? new Outbound.FreedomSettings.Noises() : {}"></a-switch>
</a-form-item>
<template v-if="Object.keys(outbound.settings.noises).length >0">
<a-form-item label='Type'>
<a-select v-model="outbound.settings.noises.type" :dropdown-class-name="themeSwitcher.currentTheme">
<a-select-option v-for="s in ['rand','base64','str']" :value="s">[[ s ]]</a-select-option>
</a-select>
</a-form-item> </a-form-item>
<template v-if="Object.keys(outbound.settings.noise).length >0">
<a-form-item label='Packet'> <a-form-item label='Packet'>
<a-input v-model.trim="outbound.settings.noise.packet"></a-input> <a-input v-model.trim="outbound.settings.noises.packet"></a-input>
</a-form-item> </a-form-item>
<a-form-item label='Delay'> <a-form-item label='Delay'>
<a-input v-model.trim="outbound.settings.noise.delay"></a-input> <a-input v-model.trim="outbound.settings.noises.delay"></a-input>
</a-form-item> </a-form-item>
</template> </template>
</template> </template>

View file

@ -305,18 +305,30 @@
<a-list-item style="padding: 20px"> <a-list-item style="padding: 20px">
<a-row> <a-row>
<a-col :lg="24" :xl="12"> <a-col :lg="24" :xl="12">
<a-list-item-meta title='Noise'> <a-list-item-meta title='Noises'>
<template slot="description">{{ i18n "pages.settings.noiseDesc"}}</template> <template slot="description">{{ i18n "pages.settings.noisesDesc"}}</template>
</a-list-item-meta> </a-list-item-meta>
</a-col> </a-col>
<a-col :lg="24" :xl="12"> <a-col :lg="24" :xl="12">
<a-switch v-model="noise"></a-switch> <a-switch v-model="noises"></a-switch>
</a-col> </a-col>
</a-row> </a-row>
<a-collapse v-if="noise" style="margin-top: 14px;"> <a-collapse v-if="noises" style="margin-top: 14px;">
<a-collapse-panel header='{{ i18n "pages.settings.noiseSett"}}' v-if="noise"> <a-collapse-panel header='{{ i18n "pages.settings.noisesSett"}}' v-if="noises">
<setting-list-item style="padding: 10px 20px" type="text" title='Packet (ms)' v-model="noisePacket" placeholder="rand:5-10"></setting-list-item> <a-list-item style="padding: 10px 20px">
<setting-list-item style="padding: 10px 20px" type="text" title='Delay (ms)' v-model="noiseDelay" placeholder="10-20"></setting-list-item> <a-row>
<a-col :lg="24" :xl="12">
<a-list-item-meta title='Type'></a-list-item-meta>
</a-col>
<a-col :lg="24" :xl="12">
<a-select v-model="noisesType" style="width: 100%" :dropdown-class-name="themeSwitcher.currentTheme">
<a-select-option :value="p" :label="p" v-for="p in ['rand', 'base64', 'str']"> [[ p ]] </a-select-option>
</a-select>
</a-col>
</a-row>
</a-list-item>
<setting-list-item style="padding: 10px 20px" type="text" title='Packet (ms)' v-model="noisesPacket" placeholder="5-10"></setting-list-item>
<setting-list-item style="padding: 10px 20px" type="text" title='Delay (ms)' v-model="noisesDelay" placeholder="10-20"></setting-list-item>
</a-collapse-panel> </a-collapse-panel>
</a-collapse> </a-collapse>
</a-list-item> </a-list-item>
@ -419,14 +431,15 @@
} }
} }
}, },
defaultNoise: { defaultNoises: {
tag: "noise", tag: "noises",
protocol: "freedom", protocol: "freedom",
settings: { settings: {
domainStrategy: "AsIs", domainStrategy: "AsIs",
noise: { noises: {
packet: "rand:5-10", type: "rand",
delay: "10-20", packet: "10-20",
delay: "10-16",
} }
}, },
}, },
@ -629,29 +642,39 @@
} }
} }
}, },
noise: { noises: {
get: function () { return this.allSetting?.subJsonNoise != ""; }, get: function () { return this.allSetting?.subJsonNoises != ""; },
set: function (v) { set: function (v) {
this.allSetting.subJsonNoise = v ? JSON.stringify(this.defaultNoise) : ""; this.allSetting.subJsonNoises = v ? JSON.stringify(this.defaultNoises) : "";
} }
}, },
noisePacket: { noisesType: {
get: function () { return this.noise ? JSON.parse(this.allSetting.subJsonNoise).settings.noise.packet : ""; }, get: function () { return this.noises ? JSON.parse(this.allSetting.subJsonNoises).settings.noises.type : ""; },
set: function (v) { set: function (v) {
if (v != "") { if (v != "") {
newNoise = JSON.parse(this.allSetting.subJsonNoise); newNoises = JSON.parse(this.allSetting.subJsonNoises);
newNoise.settings.noise.packet = v; newNoises.settings.noises.type = v;
this.allSetting.subJsonNoise = JSON.stringify(newNoise); this.allSetting.subJsonNoises = JSON.stringify(newNoises);
} }
} }
}, },
noiseDelay: { noisesPacket: {
get: function () { return this.noise ? JSON.parse(this.allSetting.subJsonNoise).settings.noise.delay : ""; }, get: function () { return this.noises ? JSON.parse(this.allSetting.subJsonNoises).settings.noises.packet : ""; },
set: function (v) { set: function (v) {
if (v != "") { if (v != "") {
newNoise = JSON.parse(this.allSetting.subJsonNoise); newNoises = JSON.parse(this.allSetting.subJsonNoises);
newNoise.settings.noise.delay = v; newNoises.settings.noises.packet = v;
this.allSetting.subJsonNoise = JSON.stringify(newNoise); this.allSetting.subJsonNoises = JSON.stringify(newNoises);
}
}
},
noisesDelay: {
get: function () { return this.noises ? JSON.parse(this.allSetting.subJsonNoises).settings.noises.delay : ""; },
set: function (v) {
if (v != "") {
newNoises = JSON.parse(this.allSetting.subJsonNoises);
newNoises.settings.noises.delay = v;
this.allSetting.subJsonNoises = JSON.stringify(newNoises);
} }
} }
}, },

View file

@ -62,7 +62,7 @@ var defaultValueMap = map[string]string{
"subJsonPath": "/json/", "subJsonPath": "/json/",
"subJsonURI": "", "subJsonURI": "",
"subJsonFragment": "", "subJsonFragment": "",
"subJsonNoise": "", "subJsonNoises": "",
"subJsonMux": "", "subJsonMux": "",
"subJsonRules": "", "subJsonRules": "",
"datepicker": "gregorian", "datepicker": "gregorian",
@ -459,8 +459,8 @@ func (s *SettingService) GetSubJsonFragment() (string, error) {
return s.getString("subJsonFragment") return s.getString("subJsonFragment")
} }
func (s *SettingService) GetSubJsonNoise() (string, error) { func (s *SettingService) GetSubJsonNoises() (string, error) {
return s.getString("subJsonNoise") return s.getString("subJsonNoises")
} }
func (s *SettingService) GetSubJsonMux() (string, error) { func (s *SettingService) GetSubJsonMux() (string, error) {

View file

@ -309,8 +309,8 @@
"fragment" = "Fragmentation" "fragment" = "Fragmentation"
"fragmentDesc" = "Enable fragmentation for TLS hello packet." "fragmentDesc" = "Enable fragmentation for TLS hello packet."
"fragmentSett" = "Fragmentation Settings" "fragmentSett" = "Fragmentation Settings"
"noiseDesc" = "Enable Noise." "noisesDesc" = "Enable Noises."
"noiseSett" = "Noise Settings" "noisesSett" = "Noises Settings"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Transmit multiple independent data streams within an established data stream." "muxDesc" = "Transmit multiple independent data streams within an established data stream."
"muxSett" = "Mux Settings" "muxSett" = "Mux Settings"

View file

@ -309,8 +309,8 @@
"fragment" = "Fragmentación" "fragment" = "Fragmentación"
"fragmentDesc" = "Habilitar la fragmentación para el paquete de saludo de TLS" "fragmentDesc" = "Habilitar la fragmentación para el paquete de saludo de TLS"
"fragmentSett" = "Configuración de Fragmentación" "fragmentSett" = "Configuración de Fragmentación"
"noiseDesc" = "Activar Noise." "noisesDesc" = "Activar Noises."
"noiseSett" = "Configuración de Noise" "noisesSett" = "Configuración de Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Transmite múltiples flujos de datos independientes dentro de un flujo de datos establecido." "muxDesc" = "Transmite múltiples flujos de datos independientes dentro de un flujo de datos establecido."
"muxSett" = "Configuración Mux" "muxSett" = "Configuración Mux"

View file

@ -309,8 +309,8 @@
"fragment" = "فرگمنت" "fragment" = "فرگمنت"
"fragmentDesc" = "فعال کردن فرگمنت برای بسته‌ی نخست تی‌ال‌اس" "fragmentDesc" = "فعال کردن فرگمنت برای بسته‌ی نخست تی‌ال‌اس"
"fragmentSett" = "تنظیمات فرگمنت" "fragmentSett" = "تنظیمات فرگمنت"
"noiseDesc" = "فعال کردن Noise." "noisesDesc" = "فعال کردن Noises."
"noiseSett" = "تنظیمات Noise" "noisesSett" = "تنظیمات Noises"
"mux" = "ماکس" "mux" = "ماکس"
"muxDesc" = "چندین جریان داده مستقل را در یک جریان داده ثابت منتقل می کند" "muxDesc" = "چندین جریان داده مستقل را در یک جریان داده ثابت منتقل می کند"
"muxSett" = "تنظیمات ماکس" "muxSett" = "تنظیمات ماکس"

View file

@ -309,8 +309,8 @@
"fragment" = "Fragmentasi" "fragment" = "Fragmentasi"
"fragmentDesc" = "Aktifkan fragmentasi untuk paket hello TLS" "fragmentDesc" = "Aktifkan fragmentasi untuk paket hello TLS"
"fragmentSett" = "Pengaturan Fragmentasi" "fragmentSett" = "Pengaturan Fragmentasi"
"noiseDesc" = "Aktifkan Noise." "noisesDesc" = "Aktifkan Noises."
"noiseSett" = "Pengaturan Noise" "noisesSett" = "Pengaturan Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Mengirimkan beberapa aliran data independen dalam aliran data yang sudah ada." "muxDesc" = "Mengirimkan beberapa aliran data independen dalam aliran data yang sudah ada."
"muxSett" = "Pengaturan Mux" "muxSett" = "Pengaturan Mux"

View file

@ -309,8 +309,8 @@
"fragment" = "Fragmentação" "fragment" = "Fragmentação"
"fragmentDesc" = "Ativa a fragmentação para o pacote TLS hello." "fragmentDesc" = "Ativa a fragmentação para o pacote TLS hello."
"fragmentSett" = "Configurações de Fragmentação" "fragmentSett" = "Configurações de Fragmentação"
"noiseDesc" = "Ativar Noise." "noisesDesc" = "Ativar Noises."
"noiseSett" = "Configurações de Noise" "noisesSett" = "Configurações de Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Transmitir múltiplos fluxos de dados independentes dentro de um fluxo de dados estabelecido." "muxDesc" = "Transmitir múltiplos fluxos de dados independentes dentro de um fluxo de dados estabelecido."
"muxSett" = "Configurações de Mux" "muxSett" = "Configurações de Mux"

View file

@ -309,8 +309,8 @@
"fragment" = "Фрагментация" "fragment" = "Фрагментация"
"fragmentDesc" = "Включить фрагментацию для пакета приветствия TLS" "fragmentDesc" = "Включить фрагментацию для пакета приветствия TLS"
"fragmentSett" = "Настройки фрагментации" "fragmentSett" = "Настройки фрагментации"
"noiseDesc" = "Включить Noise." "noisesDesc" = "Включить Noises."
"noiseSett" = "Настройки Noise" "noisesSett" = "Настройки Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Передача нескольких независимых потоков данных в рамках установленного потока данных." "muxDesc" = "Передача нескольких независимых потоков данных в рамках установленного потока данных."
"muxSett" = "Mux Настройки" "muxSett" = "Mux Настройки"

View file

@ -309,8 +309,8 @@
"fragment" = "Parçalama" "fragment" = "Parçalama"
"fragmentDesc" = "TLS merhaba paketinin parçalanmasını etkinleştir." "fragmentDesc" = "TLS merhaba paketinin parçalanmasını etkinleştir."
"fragmentSett" = "Parçalama Ayarları" "fragmentSett" = "Parçalama Ayarları"
"noiseDesc" = "Noise'i Etkinleştir." "noisesDesc" = "Noises'i Etkinleştir."
"noiseSett" = "Noise Ayarları" "noisesSett" = "Noises Ayarları"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Kurulmuş bir veri akışında birden çok bağımsız veri akışını iletir." "muxDesc" = "Kurulmuş bir veri akışında birden çok bağımsız veri akışını iletir."
"muxSett" = "Mux Ayarları" "muxSett" = "Mux Ayarları"

View file

@ -309,8 +309,8 @@
"fragment" = "Фрагментація" "fragment" = "Фрагментація"
"fragmentDesc" = "Увімкнути фрагментацію для пакету привітання TLS" "fragmentDesc" = "Увімкнути фрагментацію для пакету привітання TLS"
"fragmentSett" = "Параметри фрагментації" "fragmentSett" = "Параметри фрагментації"
"noiseDesc" = "Увімкнути Noise." "noisesDesc" = "Увімкнути Noises."
"noiseSett" = "Налаштування Noise" "noisesSett" = "Налаштування Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Передавати кілька незалежних потоків даних у межах встановленого потоку даних." "muxDesc" = "Передавати кілька незалежних потоків даних у межах встановленого потоку даних."
"muxSett" = "Налаштування Mux" "muxSett" = "Налаштування Mux"

View file

@ -309,8 +309,8 @@
"fragment" = "Sự phân mảnh" "fragment" = "Sự phân mảnh"
"fragmentDesc" = "Kích hoạt phân mảnh cho gói TLS hello" "fragmentDesc" = "Kích hoạt phân mảnh cho gói TLS hello"
"fragmentSett" = "Cài đặt phân mảnh" "fragmentSett" = "Cài đặt phân mảnh"
"noiseDesc" = "Bật Noise." "noisesDesc" = "Bật Noises."
"noiseSett" = "Cài đặt Noise" "noisesSett" = "Cài đặt Noises"
"mux" = "Mux" "mux" = "Mux"
"muxDesc" = "Truyền nhiều luồng dữ liệu độc lập trong luồng dữ liệu đã thiết lập." "muxDesc" = "Truyền nhiều luồng dữ liệu độc lập trong luồng dữ liệu đã thiết lập."
"muxSett" = "Mux Cài đặt" "muxSett" = "Mux Cài đặt"

View file

@ -309,8 +309,8 @@
"fragment" = "分片" "fragment" = "分片"
"fragmentDesc" = "启用 TLS hello 数据包分片" "fragmentDesc" = "启用 TLS hello 数据包分片"
"fragmentSett" = "设置" "fragmentSett" = "设置"
"noiseDesc" = "启用 Noise." "noisesDesc" = "启用 Noises."
"noiseSett" = "Noise 设置" "noisesSett" = "Noises 设置"
"mux" = "多路复用器" "mux" = "多路复用器"
"muxDesc" = "在已建立的数据流内传输多个独立的数据流" "muxDesc" = "在已建立的数据流内传输多个独立的数据流"
"muxSett" = "复用器设置" "muxSett" = "复用器设置"