1
0

json.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. {{define "settings/panel/subscription/json"}}
  2. <a-collapse default-active-key="1">
  3. <a-collapse-panel key="1" header='{{ i18n "pages.xray.generalConfigs"}}'>
  4. <a-setting-list-item paddings="small" v-if="allSetting.subJsonEnable">
  5. <template #title>{{ i18n "pages.settings.subPath"}} (JSON)</template>
  6. <template #description>{{ i18n "pages.settings.subPathDesc"}}</template>
  7. <template #control>
  8. <a-input type="text" v-model="allSetting.subJsonPath"
  9. @input="allSetting.subJsonPath = ((typeof $event === 'string' ? $event : ($event && $event.target ? $event.target.value : '')) || '').replace(/[:*]/g, '')"
  10. @blur="allSetting.subJsonPath = (p => { p = p || '/'; if (!p.startsWith('/')) p='/' + p; if (!p.endsWith('/')) p += '/'; return p.replace(/\/+/g,'/'); })(allSetting.subJsonPath)"
  11. placeholder="/json/"></a-input>
  12. </template>
  13. </a-setting-list-item>
  14. <a-setting-list-item paddings="small" v-if="allSetting.subJsonEnable">
  15. <template #title>{{ i18n "pages.settings.subURI"}} (JSON)</template>
  16. <template #description>{{ i18n "pages.settings.subURIDesc"}}</template>
  17. <template #control>
  18. <a-input type="text" placeholder="(http|https)://domain[:port]/path/"
  19. v-model="allSetting.subJsonURI"></a-input>
  20. </template>
  21. </a-setting-list-item>
  22. <a-setting-list-item paddings="small" v-if="allSetting.subClashEnable">
  23. <template #title>{{ i18n "pages.settings.subPath"}} (Clash)</template>
  24. <template #description>{{ i18n "pages.settings.subPathDesc"}}</template>
  25. <template #control>
  26. <a-input type="text" v-model="allSetting.subClashPath"
  27. @input="allSetting.subClashPath = ((typeof $event === 'string' ? $event : ($event && $event.target ? $event.target.value : '')) || '').replace(/[:*]/g, '')"
  28. @blur="allSetting.subClashPath = (p => { p = p || '/'; if (!p.startsWith('/')) p='/' + p; if (!p.endsWith('/')) p += '/'; return p.replace(/\/+/g,'/'); })(allSetting.subClashPath)"
  29. placeholder="/clash/"></a-input>
  30. </template>
  31. </a-setting-list-item>
  32. <a-setting-list-item paddings="small" v-if="allSetting.subClashEnable">
  33. <template #title>{{ i18n "pages.settings.subURI"}} (Clash)</template>
  34. <template #description>{{ i18n "pages.settings.subURIDesc"}}</template>
  35. <template #control>
  36. <a-input type="text" placeholder="(http|https)://domain[:port]/path/"
  37. v-model="allSetting.subClashURI"></a-input>
  38. </template>
  39. </a-setting-list-item>
  40. </a-collapse-panel>
  41. <a-collapse-panel key="2" header='{{ i18n "pages.settings.fragment"}}'>
  42. <a-setting-list-item paddings="small">
  43. <template #title>{{ i18n "pages.settings.fragment"}}</template>
  44. <template #description>{{ i18n "pages.settings.fragmentDesc"}}</template>
  45. <template #control>
  46. <a-switch v-model="fragment"></a-switch>
  47. </template>
  48. </a-setting-list-item>
  49. <a-list-item v-if="fragment" :style="{ padding: '10px 20px' }">
  50. <a-collapse>
  51. <a-collapse-panel header='{{ i18n "pages.settings.fragmentSett"}}' v-if="fragment">
  52. <a-setting-list-item paddings="small">
  53. <template #title>Packets</template>
  54. <template #control>
  55. <a-input type="text" v-model="fragmentPackets"
  56. placeholder="1-1 | 1-3 | tlshello | ..."></a-input>
  57. </template>
  58. </a-setting-list-item>
  59. <a-setting-list-item paddings="small">
  60. <template #title>Length</template>
  61. <template #control>
  62. <a-input type="text" v-model="fragmentLength" placeholder="100-200"></a-input>
  63. </template>
  64. </a-setting-list-item>
  65. <a-setting-list-item paddings="small">
  66. <template #title>Interval</template>
  67. <template #control>
  68. <a-input type="text" v-model="fragmentInterval" placeholder="10-20"></a-input>
  69. </template>
  70. </a-setting-list-item>
  71. <a-setting-list-item paddings="small">
  72. <template #title>MaxSplit</template>
  73. <template #control>
  74. <a-input type="text" v-model="fragmentMaxSplit" placeholder="300-400"></a-input>
  75. </template>
  76. </a-setting-list-item>
  77. </a-collapse-panel>
  78. </a-collapse>
  79. </a-list-item>
  80. </a-collapse-panel>
  81. <a-collapse-panel key="3" header="Noises">
  82. <a-setting-list-item paddings="small">
  83. <template #title>Noises</template>
  84. <template #description>{{ i18n "pages.settings.noisesDesc"}}</template>
  85. <template #control>
  86. <a-switch v-model="noises"></a-switch>
  87. </template>
  88. </a-setting-list-item>
  89. <a-list-item v-if="noises" :style="{ padding: '10px 20px' }">
  90. <a-collapse>
  91. <a-collapse-panel v-for="(noise, index) in noisesArray" :key="index" :header="`Noise №${index + 1}`">
  92. <a-setting-list-item paddings="small">
  93. <template #title>Type</template>
  94. <template #control>
  95. <a-select :value="noise.type" :style="{ width: '100%' }"
  96. :dropdown-class-name="themeSwitcher.currentTheme"
  97. @change="(value) => updateNoiseType(index, value)">
  98. <a-select-option :value="p" :label="p" v-for="p in ['rand', 'base64', 'str', 'hex']"
  99. :key="p">
  100. <span>[[ p ]]</span>
  101. </a-select-option>
  102. </a-select>
  103. </template>
  104. </a-setting-list-item>
  105. <a-setting-list-item paddings="small">
  106. <template #title>Packet</template>
  107. <template #control>
  108. <a-input type="text" :value="noise.packet"
  109. @input="(value) => updateNoisePacket(index, event.target.value)"
  110. placeholder="5-10"></a-input>
  111. </template>
  112. </a-setting-list-item>
  113. <a-setting-list-item paddings="small">
  114. <template #title>Delay (ms)</template>
  115. <template #control>
  116. <a-input type="text" :value="noise.delay"
  117. @input="(value) => updateNoiseDelay(index, event.target.value)"
  118. placeholder="10-20"></a-input>
  119. </template>
  120. </a-setting-list-item>
  121. <a-setting-list-item paddings="small">
  122. <template #title>ApplyTo</template>
  123. <template #control>
  124. <a-select :value="noise.applyTo" :style="{ width: '100%' }"
  125. :dropdown-class-name="themeSwitcher.currentTheme"
  126. @change="(value) => updateNoiseApplyTo(index, value)">
  127. <a-select-option :value="p" :label="p" v-for="p in ['ip', 'ipv4', 'ipv6']" :key="p">
  128. <span>[[ p ]]</span>
  129. </a-select-option>
  130. </a-select>
  131. </template>
  132. </a-setting-list-item>
  133. <a-space direction="horizontal" :style="{ padding: '10px 20px' }">
  134. <a-button v-if="noisesArray.length > 1" type="danger"
  135. @click="removeNoise(index)">Remove</a-button>
  136. </a-space>
  137. </a-collapse-panel>
  138. </a-collapse>
  139. <a-button v-if="noises" type="primary" @click="addNoise" :style="{ marginTop: '10px' }">Add Noise</a-button>
  140. </a-list-item>
  141. </a-collapse-panel>
  142. <a-collapse-panel key="4" header='{{ i18n "pages.settings.mux"}}'>
  143. <a-setting-list-item paddings="small">
  144. <template #title>{{ i18n "pages.settings.mux"}}</template>
  145. <template #description>{{ i18n "pages.settings.muxDesc"}}</template>
  146. <template #control>
  147. <a-switch v-model="enableMux"></a-switch>
  148. </template>
  149. </a-setting-list-item>
  150. <a-list-item v-if="enableMux" :style="{ padding: '10px 20px' }">
  151. <a-collapse>
  152. <a-collapse-panel header='{{ i18n "pages.settings.muxSett"}}'>
  153. <a-setting-list-item paddings="small">
  154. <template #title>Concurrency</template>
  155. <template #control>
  156. <a-input-number v-model="muxConcurrency" :min="-1" :max="1024"
  157. :style="{ width: '100%' }"></a-input-number>
  158. </template>
  159. </a-setting-list-item>
  160. <a-setting-list-item paddings="small">
  161. <template #title>xudp Concurrency</template>
  162. <template #control>
  163. <a-input-number v-model="muxXudpConcurrency" :min="-1" :max="1024"
  164. :style="{ width: '100%' }"></a-input-number>
  165. </template>
  166. </a-setting-list-item>
  167. <a-setting-list-item paddings="small">
  168. <template #title>xudp UDP 443</template>
  169. <template #control>
  170. <a-select v-model="muxXudpProxyUDP443" :style="{ width: '100%' }"
  171. :dropdown-class-name="themeSwitcher.currentTheme">
  172. <a-select-option :value="p" :label="p" v-for="p in ['reject', 'allow', 'skip']">
  173. <span>[[ p ]]</span>
  174. </a-select-option>
  175. </a-select>
  176. </template>
  177. </a-setting-list-item>
  178. </a-collapse-panel>
  179. </a-collapse>
  180. </a-list-item>
  181. </a-collapse-panel>
  182. <a-collapse-panel key="5" header='{{ i18n "pages.settings.direct" }}'>
  183. <a-setting-list-item paddings="small">
  184. <template #title>{{ i18n "pages.settings.direct"}}</template>
  185. <template #description>{{ i18n "pages.settings.directDesc"}}</template>
  186. <template #control>
  187. <a-switch v-model="enableDirect"></a-switch>
  188. </template>
  189. </a-setting-list-item>
  190. <a-list-item v-if="enableDirect" :style="{ padding: '10px 20px' }">
  191. <a-collapse>
  192. <a-collapse-panel header='{{ i18n "pages.settings.direct"}}'>
  193. <a-setting-list-item paddings="small">
  194. <template #title>{{ i18n "pages.xray.directips" }}</template>
  195. <template #control>
  196. <a-select mode="tags" :style="{ width: '100%' }" v-model="directIPs"
  197. :dropdown-class-name="themeSwitcher.currentTheme">
  198. <a-select-option :value="p.value" :label="p.label" v-for="p in directIPsOptions">
  199. <span>[[ p.label ]]</span>
  200. </a-select-option>
  201. </a-select>
  202. </template>
  203. </a-setting-list-item>
  204. <a-setting-list-item paddings="small">
  205. <template #title>{{ i18n "pages.xray.directdomains" }}</template>
  206. <template #control>
  207. <a-select mode="tags" :style="{ width: '100%' }" v-model="directDomains"
  208. :dropdown-class-name="themeSwitcher.currentTheme">
  209. <a-select-option :value="p.value" :label="p.label" v-for="p in diretDomainsOptions">
  210. <span>[[ p.label ]]</span>
  211. </a-select-option>
  212. </a-select>
  213. </template>
  214. </a-setting-list-item>
  215. </a-collapse-panel>
  216. </a-collapse>
  217. </a-list-item>
  218. </a-collapse-panel>
  219. </a-collapse>
  220. {{end}}