json.html 11 KB

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