setting.tpl 119 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793
  1. {include file='admin/main.tpl'}
  2. <main class="content">
  3. <div class="content-header ui-content-header">
  4. <div class="container">
  5. <h1 class="content-heading">设置中心</h1>
  6. </div>
  7. </div>
  8. <div class="container">
  9. <div class="col-xx-12 col-sm-12">
  10. <div class="card quickadd">
  11. <div class="card-main">
  12. <div class="card-inner">
  13. <nav class="tab-nav margin-top-no">
  14. <ul class="nav nav-list">
  15. <li class="active">
  16. <a data-toggle="tab" href="#payment_settings"><i class="mdi mdi-credit-card-outline icon-lg"></i>&nbsp;支付</a>
  17. </li>
  18. <li>
  19. <a data-toggle="tab" href="#mail_settings"><i class="mdi mdi-email icon-lg"></i>&nbsp;邮件</a>
  20. </li>
  21. <li>
  22. <a data-toggle="tab" href="#customer_service_system_settings"><i class="mdi mdi-face-agent icon-lg"></i>&nbsp;客服</a>
  23. </li>
  24. <li>
  25. <a data-toggle="tab" href="#verification_code_settings"><i class="mdi mdi-shield-check icon-lg"></i>&nbsp;验证</a>
  26. </li>
  27. <li>
  28. <a data-toggle="tab" href="#registration_settings"><i class="mdi mdi-account-plus icon-lg"></i>&nbsp;注册</a>
  29. </li>
  30. <li>
  31. <a data-toggle="tab" href="#invitation_settings"><i class="mdi mdi-account-multiple-plus icon-lg"></i>&nbsp;邀请</a>
  32. </li>
  33. <li>
  34. <a data-toggle="tab" href="#telegram_settings"><i class="mdi mdi-send-circle icon-lg"></i>&nbsp;Telegram</a>
  35. </li>
  36. </ul>
  37. </nav>
  38. <div class="card-inner">
  39. <div class="tab-content">
  40. <div class="tab-pane fade" id="mail_settings">
  41. <nav class="tab-nav margin-top-no">
  42. <ul class="nav nav-list">
  43. <li class="active">
  44. <a data-toggle="tab" href="#email_auth_settings">&nbsp;设置</a>
  45. </li>
  46. <li>
  47. <a data-toggle="tab" href="#smtp">&nbsp;smtp</a>
  48. </li>
  49. <li>
  50. <a data-toggle="tab" href="#sendgrid">&nbsp;sendgrid</a>
  51. </li>
  52. <li>
  53. <a data-toggle="tab" href="#mailgun">&nbsp;mailgun</a>
  54. </li>
  55. <li>
  56. <a data-toggle="tab" href="#ses">&nbsp;ses</a>
  57. </li>
  58. </ul>
  59. </nav>
  60. <div class="tab-pane fade active in" id="email_auth_settings">
  61. <!-- mail_driver -->
  62. <div class="form-group form-group-label">
  63. <label class="floating-label">邮件服务</label>
  64. <select id="mail_driver" class="form-control maxwidth-edit">
  65. <option value="none" {if $settings['mail_driver'] == "none"}selected{/if}>none</option>
  66. <option value="mailgun" {if $settings['mail_driver'] == "mailgun"}selected{/if}>mailgun</option>
  67. <option value="sendgrid" {if $settings['mail_driver'] == "sendgrid"}selected{/if}>sendgrid</option>
  68. <option value="ses" {if $settings['mail_driver'] == "ses"}selected{/if}>ses</option>
  69. <option value="smtp" {if $settings['mail_driver'] == "smtp"}selected{/if}>smtp</option>
  70. </select>
  71. </div>
  72. <button id="submit_mail" type="submit" class="btn btn-brand btn-dense">提交</button>
  73. <!-- smtp_test_recipient -->
  74. <div class="form-group form-group-label">
  75. <label class="floating-label">测试邮件收件人</label>
  76. <input class="form-control maxwidth-edit" id="testing_email_recipients">
  77. <p class="form-control-guide"><i class="mdi mdi-information"></i>邮件配置保存完成后,如需验证是否可用,可在上方填写一个有效邮箱,系统将发送一封测试邮件到该邮箱。如果能够正常接收,则说明配置可用</p>
  78. {if $settings['mail_driver'] == "none"}
  79. <p class="form-control-guide"><i class="mdi mdi-information"></i>如需使用发信测试功能,请先在上方选择一个发信方式,并配置有效的相关参数</p>
  80. {/if}
  81. </div>
  82. <button id="submit_email_test" type="submit" class="btn btn-brand btn-dense" {if $settings['mail_driver'] == "none"}disabled{/if}>测试</button>
  83. </div>
  84. <div class="tab-pane fade" id="smtp">
  85. <!-- smtp_host -->
  86. <div class="form-group form-group-label">
  87. <label class="floating-label">SMTP主机地址</label>
  88. <input class="form-control maxwidth-edit" id="smtp_host" value="{$settings['smtp_host']}">
  89. <p class="form-control-guide"><i class="mdi mdi-information"></i>例如:smtpdm-ap-southeast-1.aliyun.com</p>
  90. </div>
  91. <!-- smtp_username -->
  92. <div class="form-group form-group-label">
  93. <label class="floating-label">SMTP账户名</label>
  94. <input class="form-control maxwidth-edit" id="smtp_username" value="{$settings['smtp_username']}">
  95. <p class="form-control-guide"><i class="mdi mdi-information"></i>例如:[email protected]</p>
  96. </div>
  97. <!-- smtp_password -->
  98. <div class="form-group form-group-label">
  99. <label class="floating-label">SMTP账户密码</label>
  100. <input class="form-control maxwidth-edit" id="smtp_password" value="{$settings['smtp_password']}">
  101. <p class="form-control-guide"><i class="mdi mdi-information"></i>如果你使用 QQ 邮箱或 163 邮箱,此处应当填写单独的授权码</p>
  102. </div>
  103. <!-- smtp_port -->
  104. <div class="form-group form-group-label">
  105. <label class="floating-label">SMTP端口</label>
  106. <select id="smtp_port" class="form-control maxwidth-edit">
  107. <option value="465" {if $settings['smtp_port'] == "465"}selected{/if}>465</option>
  108. <option value="587" {if $settings['smtp_port'] == "587"}selected{/if}>587</option>
  109. <option value="2525" {if $settings['smtp_port'] == "2525"}selected{/if}>2525</option>
  110. <option value="25" {if $settings['smtp_port'] == "25"}selected{/if}>25</option>
  111. </select>
  112. <p class="form-control-guide"><i class="mdi mdi-information"></i>常见端口一般就这些</p>
  113. </div>
  114. <!-- smtp_name -->
  115. <div class="form-group form-group-label">
  116. <label class="floating-label">SMTP发信名称</label>
  117. <input class="form-control maxwidth-edit" id="smtp_name" value="{$settings['smtp_name']}">
  118. <p class="form-control-guide"><i class="mdi mdi-information"></i>这里的设置在邮箱的邮件列表中可见。你可以设置为网站名称</p>
  119. </div>
  120. <!-- smtp_sender -->
  121. <div class="form-group form-group-label">
  122. <label class="floating-label">SMTP账户发信地址</label>
  123. <input class="form-control maxwidth-edit" id="smtp_sender" value="{$settings['smtp_sender']}">
  124. <p class="form-control-guide"><i class="mdi mdi-information"></i>如不知道填什么,请与此项保持一致:SMTP账户名</p>
  125. </div>
  126. <!-- smtp_ssl -->
  127. <div class="form-group form-group-label">
  128. <label class="floating-label">是否使用 TLS/SSL 发信</label>
  129. <select id="smtp_ssl" class="form-control maxwidth-edit">
  130. <option value="1" {if $settings['smtp_ssl'] == true}selected{/if}>开启</option>
  131. <option value="0" {if $settings['smtp_ssl'] == false}selected{/if}>关闭</option>
  132. </select>
  133. </div>
  134. <!-- smtp_bbc -->
  135. <div class="form-group form-group-label">
  136. <label class="floating-label">发给用户的邮件密送给指定邮箱备份</label>
  137. <input class="form-control maxwidth-edit" id="smtp_bbc" value="{$settings['smtp_bbc']}">
  138. <p class="form-control-guide"><i class="mdi mdi-information"></i>如无需使用此功能,请留空</p>
  139. </div>
  140. <button id="submit_smtp" type="submit" class="btn btn-brand btn-dense">提交</button>
  141. </div>
  142. <div class="tab-pane fade" id="sendgrid">
  143. <!-- sendgrid_key -->
  144. <div class="form-group form-group-label">
  145. <label class="floating-label">Sendgrid 密钥</label>
  146. <input class="form-control maxwidth-edit" id="sendgrid_key" value="{$settings['sendgrid_key']}">
  147. </div>
  148. <!-- sendgrid_sender -->
  149. <div class="form-group form-group-label">
  150. <label class="floating-label">Sendgrid 发件邮箱</label>
  151. <input class="form-control maxwidth-edit" id="sendgrid_sender" value="{$settings['sendgrid_sender']}">
  152. </div>
  153. <!-- sendgrid_name -->
  154. <div class="form-group form-group-label">
  155. <label class="floating-label">Sendgrid 发件人名称</label>
  156. <input class="form-control maxwidth-edit" id="sendgrid_name" value="{$settings['sendgrid_name']}">
  157. </div>
  158. <button id="submit_sendgrid" type="submit" class="btn btn-brand btn-dense">提交</button>
  159. </div>
  160. <div class="tab-pane fade" id="mailgun">
  161. <!-- mailgun_key -->
  162. <div class="form-group form-group-label">
  163. <label class="floating-label">Mailgun 密钥</label>
  164. <input class="form-control maxwidth-edit" id="mailgun_key" value="{$settings['mailgun_key']}">
  165. </div>
  166. <!-- mailgun_domain -->
  167. <div class="form-group form-group-label">
  168. <label class="floating-label">Mailgun 域名</label>
  169. <input class="form-control maxwidth-edit" id="mailgun_domain" value="{$settings['mailgun_domain']}">
  170. </div>
  171. <!-- mailgun_sender -->
  172. <div class="form-group form-group-label">
  173. <label class="floating-label">Mailgun 发送者</label>
  174. <input class="form-control maxwidth-edit" id="mailgun_sender" value="{$settings['mailgun_sender']}">
  175. </div>
  176. <button id="submit_mailgun" type="submit" class="btn btn-brand btn-dense">提交</button>
  177. </div>
  178. <div class="tab-pane fade" id="ses">
  179. <!-- aws_access_key_id -->
  180. <div class="form-group form-group-label">
  181. <label class="floating-label">AWS 密钥 ID</label>
  182. <input class="form-control maxwidth-edit" id="aws_access_key_id" value="{$settings['aws_access_key_id']}">
  183. </div>
  184. <!-- aws_secret_access_key -->
  185. <div class="form-group form-group-label">
  186. <label class="floating-label">AWS 密钥 KEY</label>
  187. <input class="form-control maxwidth-edit" id="aws_secret_access_key" value="{$settings['aws_secret_access_key']}">
  188. </div>
  189. <!-- aws_region -->
  190. <div class="form-group form-group-label">
  191. <label class="floating-label">AWS 区域</label>
  192. <input class="form-control maxwidth-edit" id="aws_region" value="{$settings['aws_region']}">
  193. </div>
  194. <!-- aws_ses_sender -->
  195. <div class="form-group form-group-label">
  196. <label class="floating-label">AWS SES 发送者</label>
  197. <input class="form-control maxwidth-edit" id="aws_ses_sender" value="{$settings['aws_ses_sender']}">
  198. </div>
  199. <button id="submit_ses" type="submit" class="btn btn-brand btn-dense">提交</button>
  200. </div>
  201. </div>
  202. <div class="tab-pane fade active in" id="payment_settings">
  203. <nav class="tab-nav margin-top-no">
  204. <ul class="nav nav-list">
  205. <li class="active">
  206. <a data-toggle="tab" href="#public_payment_settings">&nbsp;设置</a>
  207. </li>
  208. {foreach $payment_gateways as $key => $value}
  209. <li>
  210. <a data-toggle="tab" href="#{$value}">{$key}</a>
  211. </li>
  212. {/foreach}
  213. </ul>
  214. </nav>
  215. <div class="tab-pane fade active in" id="public_payment_settings">
  216. <div class="form-group form-group-label">
  217. {foreach $payment_gateways as $key => $value}
  218. <div class="checkbox switch">
  219. <label for="{$value}_switch">
  220. <input class="access-hide" type="checkbox" id="{$value}_switch" name="{$value}_switch"
  221. {if in_array($value, $active_payment_gateway)}
  222. checked
  223. {/if}
  224. ><span class="switch-toggle"></span>{$key}
  225. </label>
  226. </div>
  227. {/foreach}
  228. </div>
  229. <button id="submit_payment" type="submit" class="btn btn-block btn-brand">提交</button>
  230. </div>
  231. <div class="tab-pane fade" id="payjs">
  232. <p class="form-control-guide"><i class="mdi mdi-information"></i>此处申请: <a href="https://payjs.cn" target="view_window">https://payjs.cn</a></p>
  233. <!-- payjs_url -->
  234. <div class="form-group form-group-label">
  235. <label class="floating-label">payjs_url</label>
  236. <input class="form-control maxwidth-edit" id="payjs_url" value="{$settings['payjs_url']}">
  237. </div>
  238. <!-- payjs_mchid -->
  239. <div class="form-group form-group-label">
  240. <label class="floating-label">payjs_mchid</label>
  241. <input class="form-control maxwidth-edit" id="payjs_mchid" value="{$settings['payjs_mchid']}">
  242. </div>
  243. <!-- payjs_key -->
  244. <div class="form-group form-group-label">
  245. <label class="floating-label">payjs_key</label>
  246. <input class="form-control maxwidth-edit" id="payjs_key" value="{$settings['payjs_key']}">
  247. </div>
  248. <button id="submit_payjs_pay" type="submit" class="btn btn-block btn-brand">提交</button>
  249. </div>
  250. <div class="tab-pane fade" id="paymentwall">
  251. <p class="form-control-guide"><i class="mdi mdi-information"></i>此处申请: <a href="https://www.paymentwall.com/cn" target="view_window">https://www.paymentwall.com/cn</a></p>
  252. <!-- pmw_publickey -->
  253. <div class="form-group form-group-label">
  254. <label class="floating-label">pmw公钥</label>
  255. <textarea class="form-control maxwidth-edit" id="pmw_publickey" rows="5">{$settings['pmw_publickey']}</textarea>
  256. </div>
  257. <!-- pmw_privatekey -->
  258. <div class="form-group form-group-label">
  259. <label class="floating-label">pmw私钥</label>
  260. <textarea class="form-control maxwidth-edit" id="pmw_privatekey" rows="7">{$settings['pmw_privatekey']}</textarea>
  261. </div>
  262. <!-- pmw_widget -->
  263. <div class="form-group form-group-label">
  264. <label class="floating-label">pmw_widget</label>
  265. <input class="form-control maxwidth-edit" id="pmw_widget" value="{$settings['pmw_widget']}">
  266. </div>
  267. <!-- pmw_height -->
  268. <div class="form-group form-group-label">
  269. <label class="floating-label">pmw_height</label>
  270. <input class="form-control maxwidth-edit" id="pmw_height" value="{$settings['pmw_height']}">
  271. </div>
  272. <button id="submit_paymentwall" type="submit" class="btn btn-block btn-brand">提交</button>
  273. </div>
  274. <div class="tab-pane fade" id="theadpay">
  275. <p class="form-control-guide"><i class="mdi mdi-information"></i>此处申请:<a href="https://theadpay.com" target="view_window">https://theadpay.com</a></p>
  276. <!-- theadpay_url -->
  277. <div class="form-group form-group-label">
  278. <label class="floating-label">theadpay_url</label>
  279. <input class="form-control maxwidth-edit" id="theadpay_url" value="{$settings['theadpay_url']}">
  280. </div>
  281. <!-- theadpay_mchid -->
  282. <div class="form-group form-group-label">
  283. <label class="floating-label">theadpay_mchid</label>
  284. <input class="form-control maxwidth-edit" id="theadpay_mchid" value="{$settings['theadpay_mchid']}">
  285. </div>
  286. <!-- theadpay_key -->
  287. <div class="form-group form-group-label">
  288. <label class="floating-label">theadpay_key</label>
  289. <input class="form-control maxwidth-edit" id="theadpay_key" value="{$settings['theadpay_key']}">
  290. </div>
  291. <button id="submit_theadpay" type="submit" class="btn btn-block btn-brand">提交</button>
  292. </div>
  293. <div class="tab-pane fade" id="stripe_card">
  294. <p class="form-control-guide"><i class="mdi mdi-alert"></i>提供虚拟专用网络业务符合 Stripe 用户协议,但可能不符合 Stripe 提供的部分支付通道(如支付宝、微信)用户协议,相关支付通道可能存在被关闭的风险</p>
  295. <h5>支付渠道</h5>
  296. <!-- stripe_card_select -->
  297. <div class="form-group form-group-label">
  298. <label class="floating-label">银行卡支付</label>
  299. <select id="stripe_card_select" class="form-control maxwidth-edit">
  300. <option value="0">停用</option>
  301. <option value="1" {if $settings['stripe_card'] == true}selected{/if}>
  302. 启用
  303. </option>
  304. </select>
  305. </div>
  306. <h5>支付设置</h5>
  307. <!-- stripe_currency -->
  308. <div class="form-group form-group-label">
  309. <label class="floating-label">货币单位</label>
  310. <input class="form-control maxwidth-edit" id="stripe_currency" value="{$settings['stripe_currency']}">
  311. </div>
  312. <!-- stripe_min_recharge -->
  313. <div class="form-group form-group-label">
  314. <label class="floating-label">最低充值限额(整数)</label>
  315. <input class="form-control maxwidth-edit" id="stripe_min_recharge" value="{$settings['stripe_min_recharge']}">
  316. </div>
  317. <!-- stripe_max_recharge -->
  318. <div class="form-group form-group-label">
  319. <label class="floating-label">最高充值限额(整数)</label>
  320. <input class="form-control maxwidth-edit" id="stripe_max_recharge" value="{$settings['stripe_max_recharge']}">
  321. </div>
  322. <!-- stripe_pk -->
  323. <div class="form-group form-group-label">
  324. <label class="floating-label">stripe_pk</label>
  325. <input class="form-control maxwidth-edit" id="stripe_pk" value="{$settings['stripe_pk']}">
  326. </div>
  327. <!-- stripe_sk -->
  328. <div class="form-group form-group-label">
  329. <label class="floating-label">stripe_sk</label>
  330. <input class="form-control maxwidth-edit" id="stripe_sk" value="{$settings['stripe_sk']}">
  331. </div>
  332. <!-- stripe_webhook_key -->
  333. <div class="form-group form-group-label">
  334. <label class="floating-label">WebHook密钥</label>
  335. <input class="form-control maxwidth-edit" id="stripe_webhook_key" value="{$settings['stripe_webhook_key']}">
  336. </div>
  337. <button id="submit_stripe" type="submit" class="btn btn-block btn-brand">提交</button>
  338. </div>
  339. <div class="tab-pane fade" id="vmqpay">
  340. <p class="form-control-guide"><i class="mdi mdi-information"></i>此支付方式需自建网关并配置各项参数。访问 <a href="https://github.com/szvone/vmqphp" target="view_window">https://github.com/szvone/vmqphp</a> 了解更多</p>
  341. <p class="form-control-guide"><i class="mdi mdi-information"></i>开源的 Android 监听端(推荐):<a href="https://gitee.com/yuniks/VMQAPK" target="view_window">https://gitee.com/yuniks/VMQAPK</a></p>
  342. <p class="form-control-guide"><i class="mdi mdi-information"></i>不开源的 Windows 监听端(不推荐):<a href="https://toscode.gitee.com/pmhw/Vpay" target="view_window">https://toscode.gitee.com/pmhw/Vpay</a></p>
  343. <!-- vmq_gateway -->
  344. <div class="form-group form-group-label">
  345. <label class="floating-label">V免签网关</label>
  346. <input class="form-control maxwidth-edit" id="vmq_gateway" value="{$settings['vmq_gateway']}">
  347. <p class="form-control-guide"><i class="mdi mdi-information"></i>形如:https://pay.com</p>
  348. </div>
  349. <!-- vmq_key -->
  350. <div class="form-group form-group-label">
  351. <label class="floating-label">V免签密钥</label>
  352. <input class="form-control maxwidth-edit" id="vmq_key" value="{$settings['vmq_key']}">
  353. </div>
  354. <button id="submit_vmq_pay" type="submit" class="btn btn-block btn-brand">提交</button>
  355. </div>
  356. <div class="tab-pane fade" id="f2fpay">
  357. <p class="form-control-guide"><i class="mdi mdi-information"></i>此处申请: <a href="https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001003" target="view_window">https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001003</a></p>
  358. <!-- f2f_pay_app_id -->
  359. <div class="form-group form-group-label">
  360. <label class="floating-label">App ID</label>
  361. <input class="form-control maxwidth-edit" id="f2f_pay_app_id" value="{$settings['f2f_pay_app_id']}">
  362. </div>
  363. <!-- f2f_pay_pid -->
  364. <div class="form-group form-group-label">
  365. <label class="floating-label">PID</label>
  366. <input class="form-control maxwidth-edit" id="f2f_pay_pid" value="{$settings['f2f_pay_pid']}">
  367. <p class="form-control-guide"><i class="mdi mdi-information"></i>此项可留空,不影响使用</p>
  368. </div>
  369. <!-- f2f_pay_public_key -->
  370. <div class="form-group form-group-label">
  371. <label class="floating-label">公钥</label>
  372. <textarea class="form-control maxwidth-edit" id="f2f_pay_public_key" rows="4">{$settings['f2f_pay_public_key']}</textarea>
  373. </div>
  374. <!-- f2f_pay_private_key -->
  375. <div class="form-group form-group-label">
  376. <label class="floating-label">私钥</label>
  377. <textarea class="form-control maxwidth-edit" id="f2f_pay_private_key" rows="12">{$settings['f2f_pay_private_key']}</textarea>
  378. </div>
  379. <!-- f2f_pay_notify_url -->
  380. <div class="form-group form-group-label">
  381. <label class="floating-label">自定义回调地址</label>
  382. <input class="form-control maxwidth-edit" id="f2f_pay_notify_url" value="{$settings['f2f_pay_notify_url']}">
  383. <p class="form-control-guide"><i class="mdi mdi-information"></i>此项可留空,不影响使用</p>
  384. </div>
  385. <button id="submit_f2f_pay" type="submit" class="btn btn-block btn-brand">提交</button>
  386. </div>
  387. <div class="tab-pane fade" id="epay">
  388. <!-- epay_url -->
  389. <div class="form-group form-group-label">
  390. <label class="floating-label">易支付URL</label>
  391. <input class="form-control maxwidth-edit" id="epay_url" value="{$settings['epay_url']}">
  392. <p class="form-control-guide"><i class="mdi mdi-information"></i>不同易支付url后缀不同,1:域名后面带/ 2:域名后面带submit.php/</p>
  393. </div>
  394. <!-- epay_pid -->
  395. <div class="form-group form-group-label">
  396. <label class="floating-label">商户ID</label>
  397. <input class="form-control maxwidth-edit" id="epay_pid" value="{$settings['epay_pid']}">
  398. <p class="form-control-guide"><i class="mdi mdi-information"></i>必填</p>
  399. </div>
  400. <!-- epay_key -->
  401. <div class="form-group form-group-label">
  402. <label class="floating-label">商户Key</label>
  403. <input class="form-control maxwidth-edit" id="epay_key" value="{$settings['epay_key']}">
  404. <p class="form-control-guide"><i class="mdi mdi-information"></i>必填</p>
  405. </div>
  406. <!-- epay_alipay -->
  407. <div class="form-group form-group-label">
  408. <label class="floating-label">支付宝</label>
  409. <select id="epay_alipay" class="form-control maxwidth-edit">
  410. <option value="0">停用</option>
  411. <option value="1" {if $settings['epay_alipay'] == true}selected{/if}>
  412. 启用
  413. </option>
  414. </select>
  415. </div>
  416. <!-- epay_wechat -->
  417. <div class="form-group form-group-label">
  418. <label class="floating-label">微信支付</label>
  419. <select id="epay_wechat" class="form-control maxwidth-edit">
  420. <option value="0">停用</option>
  421. <option value="1" {if $settings['epay_wechat'] == true}selected{/if}>
  422. 启用
  423. </option>
  424. </select>
  425. </div>
  426. <!-- epay_qq -->
  427. <div class="form-group form-group-label">
  428. <label class="floating-label">QQ钱包</label>
  429. <select id="epay_qq" class="form-control maxwidth-edit">
  430. <option value="0">停用</option>
  431. <option value="1" {if $settings['epay_qq'] == true}selected{/if}>
  432. 启用
  433. </option>
  434. </select>
  435. </div>
  436. <!-- epay_usdt -->
  437. <div class="form-group form-group-label">
  438. <label class="floating-label">USDT</label>
  439. <select id="epay_usdt" class="form-control maxwidth-edit">
  440. <option value="0">停用</option>
  441. <option value="1" {if $settings['epay_usdt'] == true}selected{/if}>
  442. 启用
  443. </option>
  444. </select>
  445. </div>
  446. <button id="submit_e_pay" type="submit" class="btn btn-block btn-brand">提交</button>
  447. </div>
  448. </div>
  449. <div class="tab-pane fade" id="customer_service_system_settings">
  450. <nav class="tab-nav margin-top-no">
  451. <ul class="nav nav-list">
  452. <li class="active">
  453. <a data-toggle="tab" href="#web_customer_service_system">&nbsp;网页客服</a>
  454. </li>
  455. <li>
  456. <a data-toggle="tab" href="#admin_contact">&nbsp;联系站长</a>
  457. </li>
  458. </ul>
  459. </nav>
  460. <div class="tab-pane fade active in" id="web_customer_service_system">
  461. <!-- live_chat -->
  462. <div class="form-group form-group-label">
  463. <label class="floating-label">网页客服系统</label>
  464. <select id="live_chat" class="form-control maxwidth-edit">
  465. <option value="none" {if $settings['live_chat'] == "none"}selected{/if}>不启用</option>
  466. <option value="tawk" {if $settings['live_chat'] == "tawk"}selected{/if}>Tawk</option>
  467. <option value="crisp" {if $settings['live_chat'] == "crisp"}selected{/if}>Crisp</option>
  468. <option value="livechat" {if $settings['live_chat'] == "livechat"}selected{/if}>LiveChat</option>
  469. <option value="mylivechat" {if $settings['live_chat'] == "mylivechat"}selected{/if}>MyLiveChat</option>
  470. </select>
  471. <p class="form-control-guide"><i class="mdi mdi-information"></i>目前仅 Crisp 与 LiveChat 支持在聊天时传递用户部分账户信息(如账户余额、到期时间、已用流量和剩余流量等)</p>
  472. </div>
  473. <!-- tawk_id -->
  474. <div class="form-group form-group-label">
  475. <label class="floating-label">Tawk</label>
  476. <input class="form-control maxwidth-edit" id="tawk_id" value="{$settings['tawk_id']}">
  477. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://tawk.to" target="view_window">https://tawk.to</a> 申请,这应该是 24 位字符</p>
  478. </div>
  479. <!-- crisp_id -->
  480. <div class="form-group form-group-label">
  481. <label class="floating-label">Crisp</label>
  482. <input class="form-control maxwidth-edit" id="crisp_id" value="{$settings['crisp_id']}">
  483. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://crisp.chat/en" target="view_window">https://crisp.chat/en</a> 申请,这应该是一个 UUID</p>
  484. </div>
  485. <!-- livechat_id -->
  486. <div class="form-group form-group-label">
  487. <label class="floating-label">LiveChat</label>
  488. <input class="form-control maxwidth-edit" id="livechat_id" value="{$settings['livechat_id']}">
  489. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://www.livechat.com/cn" target="view_window">https://www.livechat.com/cn</a> 申请,这应该是 8 位数字</p>
  490. </div>
  491. <!-- mylivechat_id -->
  492. <div class="form-group form-group-label">
  493. <label class="floating-label">MyLiveChat</label>
  494. <input class="form-control maxwidth-edit" id="mylivechat_id" value="{$settings['mylivechat_id']}">
  495. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://www.mylivechat.com" target="view_window">https://www.mylivechat.com</a> 申请,这个我不知道</p>
  496. </div>
  497. <button id="submit_web_customer_service_system" type="submit" class="btn btn-block btn-brand">提交</button>
  498. </div>
  499. <div class="tab-pane fade" id="admin_contact">
  500. <p class="form-control-guide"><i class="mdi mdi-information"></i>注意:留空的联系方式将不显示</p>
  501. <p class="form-control-guide"><i class="mdi mdi-information"></i>支持使用 HTML 标签。你可以通过配置 a 标签,达到点击即可唤起对应app会话窗口的效果</p>
  502. <p class="form-control-guide"><i class="mdi mdi-information"></i>若开启此功能,此页面展示的联系方式将显示在:</p>
  503. <p class="form-control-guide"><i class="mdi mdi-information"></i>1. 注册或重置密码页面点击【无法收到验证码】按钮</p>
  504. <p class="form-control-guide"><i class="mdi mdi-information"></i>2. 用户账户被停用的告知页面</p>
  505. <p class="form-control-guide"><i class="mdi mdi-information"></i>3. 充值页面提示充值未到账的用户</p>
  506. <p class="form-control-guide"><i class="mdi mdi-information"></i>4. 用户中心首页公告栏下方</p>
  507. <!-- enable_admin_contact -->
  508. <div class="form-group form-group-label">
  509. <label class="floating-label">是否显示站长联系方式</label>
  510. <select id="enable_admin_contact" class="form-control maxwidth-edit">
  511. <option value="0" {if $settings['enable_admin_contact'] == false}selected{/if}>关闭</option>
  512. <option value="1" {if $settings['enable_admin_contact'] == true}selected{/if}>开启</option>
  513. </select>
  514. </div>
  515. <!-- admin_contact1 -->
  516. <div class="form-group form-group-label">
  517. <label class="floating-label">站长联系方式一</label>
  518. <input class="form-control maxwidth-edit" id="admin_contact1" value="{htmlspecialchars($settings['admin_contact1'])}">
  519. </div>
  520. <!-- admin_contact2 -->
  521. <div class="form-group form-group-label">
  522. <label class="floating-label">站长联系方式二</label>
  523. <input class="form-control maxwidth-edit" id="admin_contact2" value="{htmlspecialchars($settings['admin_contact2'])}">
  524. </div>
  525. <!-- admin_contact3 -->
  526. <div class="form-group form-group-label">
  527. <label class="floating-label">站长联系方式三</label>
  528. <input class="form-control maxwidth-edit" id="admin_contact3" value="{htmlspecialchars($settings['admin_contact3'])}">
  529. </div>
  530. <button id="submit_admin_contact" type="submit" class="btn btn-block btn-brand">提交</button>
  531. </div>
  532. </div>
  533. <div class="tab-pane fade" id="verification_code_settings">
  534. <nav class="tab-nav margin-top-no">
  535. <ul class="nav nav-list">
  536. <li class="active">
  537. <a data-toggle="tab" href="#verification_code_public_settings">&nbsp;设置</a>
  538. </li>
  539. <li>
  540. <a data-toggle="tab" href="#turnstile">&nbsp;Turnstile</a>
  541. </li>
  542. <li>
  543. <a data-toggle="tab" href="#geetest">&nbsp;Geetest</a>
  544. </li>
  545. </ul>
  546. </nav>
  547. <div class="tab-pane fade active in" id="verification_code_public_settings">
  548. <!-- captcha_provider -->
  549. <div class="form-group form-group-label">
  550. <label class="floating-label">验证码提供商</label>
  551. <select id="captcha_provider" class="form-control maxwidth-edit">
  552. <option value="turnstile" {if $settings['captcha_provider'] == "turnstile"}selected{/if}>Turnstile</option>
  553. <option value="geetest" {if $settings['captcha_provider'] == "geetest"}selected{/if}>Geetest</option>
  554. </select>
  555. </div>
  556. <!-- enable_reg_captcha -->
  557. <div class="form-group form-group-label">
  558. <label class="floating-label">注册验证码</label>
  559. <select id="enable_reg_captcha" class="form-control maxwidth-edit">
  560. <option value="0" {if $settings['enable_reg_captcha'] == false}selected{/if}>关闭</option>
  561. <option value="1" {if $settings['enable_reg_captcha'] == true}selected{/if}>开启</option>
  562. </select>
  563. </div>
  564. <!-- enable_login_captcha -->
  565. <div class="form-group form-group-label">
  566. <label class="floating-label">登录验证码</label>
  567. <select id="enable_login_captcha" class="form-control maxwidth-edit">
  568. <option value="0" {if $settings['enable_login_captcha'] == false}selected{/if}>关闭</option>
  569. <option value="1" {if $settings['enable_login_captcha'] == true}selected{/if}>开启</option>
  570. </select>
  571. </div>
  572. <!-- enable_checkin_captcha -->
  573. <div class="form-group form-group-label">
  574. <label class="floating-label">签到验证码</label>
  575. <select id="enable_checkin_captcha" class="form-control maxwidth-edit">
  576. <option value="0" {if $settings['enable_checkin_captcha'] == false}selected{/if}>关闭</option>
  577. <option value="1" {if $settings['enable_checkin_captcha'] == true}selected{/if}>开启</option>
  578. </select>
  579. </div>
  580. <!-- enable_reset_password_captcha -->
  581. <div class="form-group form-group-label">
  582. <label class="floating-label">重置密码验证码</label>
  583. <select id="enable_reset_password_captcha" class="form-control maxwidth-edit">
  584. <option value="0" {if $settings['enable_reset_password_captcha'] == false}selected{/if}>关闭</option>
  585. <option value="1" {if $settings['enable_reset_password_captcha'] == true}selected{/if}>开启</option>
  586. </select>
  587. </div>
  588. <button id="submit_verify_code" type="submit" class="btn btn-block btn-brand">提交</button>
  589. </div>
  590. <div class="tab-pane fade" id="turnstile">
  591. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://developers.cloudflare.com/turnstile/get-started/#sitekey-and-secret-key" target="view_window">https://developers.cloudflare.com/turnstile/get-started/#sitekey-and-secret-key</a> 申请</p>
  592. <!-- turnstile_sitekey -->
  593. <div class="form-group form-group-label">
  594. <label class="floating-label">Turnstile Site Key</label>
  595. <input class="form-control maxwidth-edit" id="turnstile_sitekey" value="{$settings['turnstile_sitekey']}">
  596. </div>
  597. <!-- turnstile_secret -->
  598. <div class="form-group form-group-label">
  599. <label class="floating-label">Turnstile Secret</label>
  600. <input class="form-control maxwidth-edit" id="turnstile_secret" value="{$settings['turnstile_secret']}">
  601. </div>
  602. <button id="submit_turnstile" type="submit" class="btn btn-block btn-brand">提交</button>
  603. </div>
  604. <div class="tab-pane fade" id="geetest">
  605. <p class="form-control-guide"><i class="mdi mdi-information"></i>在 <a href="https://gtaccount.geetest.com/sensebot/overview" target="view_window">https://gtaccount.geetest.com/sensebot/overview</a> 申请</p>
  606. <!-- geetest_id -->
  607. <div class="form-group form-group-label">
  608. <label class="floating-label">Geetest ID</label>
  609. <input class="form-control maxwidth-edit" id="geetest_id" value="{$settings['geetest_id']}">
  610. </div>
  611. <!-- geetest_key -->
  612. <div class="form-group form-group-label">
  613. <label class="floating-label">Geetest Key</label>
  614. <input class="form-control maxwidth-edit" id="geetest_key" value="{$settings['geetest_key']}">
  615. </div>
  616. <button id="submit_geetest" type="submit" class="btn btn-block btn-brand">提交</button>
  617. </div>
  618. </div>
  619. <div class="tab-pane fade" id="registration_settings">
  620. <nav class="tab-nav margin-top-no">
  621. <ul class="nav nav-list">
  622. <li class="active">
  623. <a data-toggle="tab" href="#reg_mode_and_verify">&nbsp;注册模式与验证</a>
  624. </li>
  625. <li>
  626. <a data-toggle="tab" href="#register_default_value">&nbsp;默认值</a>
  627. </li>
  628. </ul>
  629. </nav>
  630. <div class="tab-pane fade active in" id="reg_mode_and_verify">
  631. <!-- reg_mode -->
  632. <div class="form-group form-group-label">
  633. <label class="floating-label">注册模式设置</label>
  634. <select id="reg_mode" class="form-control maxwidth-edit">
  635. <option value="close" {if $settings['reg_mode'] == 'close'}selected{/if}>关闭公共注册</option>
  636. <option value="open" {if $settings['reg_mode'] == 'open'}selected{/if}>开启公共注册</option>
  637. <option value="invite" {if $settings['reg_mode'] == 'invite'}selected{/if}>仅限用户邀请注册</option>
  638. </select>
  639. </div>
  640. <!-- reg_email_verify -->
  641. <div class="form-group form-group-label">
  642. <label class="floating-label">注册邮箱验证码验证</label>
  643. <select id="reg_email_verify" class="form-control maxwidth-edit">
  644. <option value="0" {if $settings['reg_email_verify'] == false}selected{/if}>关闭</option>
  645. <option value="1" {if $settings['reg_email_verify'] == true}selected{/if}>开启</option>
  646. </select>
  647. </div>
  648. <!-- email_verify_ttl -->
  649. <div class="form-group form-group-label">
  650. <label class="floating-label">注册邮箱验证码有效期(单位:秒)</label>
  651. <input class="form-control maxwidth-edit" id="email_verify_ttl" value="{$settings['email_verify_ttl']}">
  652. </div>
  653. <!-- email_verify_ip_limit -->
  654. <div class="form-group form-group-label">
  655. <label class="floating-label">验证码有效期内单个ip可请求的发件次数</label>
  656. <input class="form-control maxwidth-edit" id="email_verify_ip_limit" value="{$settings['email_verify_ip_limit']}">
  657. </div>
  658. <button type="submit" class="btn btn-block btn-brand submit_register_settings">提交</button>
  659. </div>
  660. <div class="tab-pane fade" id="register_default_value">
  661. <h5>注册默认</h5>
  662. <!-- random_group -->
  663. <div class="form-group form-group-label">
  664. <label class="floating-label">注册时随机分配到的分组,多个分组请用英文半角逗号分隔</label>
  665. <input class="form-control maxwidth-edit" id="random_group" value="{$settings['random_group']}">
  666. </div>
  667. <!-- min_port -->
  668. <div class="form-group form-group-label">
  669. <label class="floating-label">用户端口池最小值,0为用户在注册的时候不会被分配多用户端口</label>
  670. <input class="form-control maxwidth-edit" id="min_port" value="{$settings['min_port']}">
  671. </div>
  672. <!-- max_port -->
  673. <div class="form-group form-group-label">
  674. <label class="floating-label">用户端口池最大值,0为用户在注册的时候不会被分配多用户端口</label>
  675. <input class="form-control maxwidth-edit" id="max_port" value="{$settings['max_port']}">
  676. </div>
  677. <!-- sign_up_for_free_traffic -->
  678. <div class="form-group form-group-label">
  679. <label class="floating-label">注册时赠送的流量(单位:GB)</label>
  680. <input class="form-control maxwidth-edit" id="sign_up_for_free_traffic" value="{$settings['sign_up_for_free_traffic']}">
  681. </div>
  682. <!-- free_user_reset_day -->
  683. <div class="form-group form-group-label">
  684. <label class="floating-label">免费用戶的流量重置日,0为不重置</label>
  685. <input class="form-control maxwidth-edit" id="free_user_reset_day" value="{$settings['free_user_reset_day']}">
  686. </div>
  687. <!-- free_user_reset_bandwidth -->
  688. <div class="form-group form-group-label">
  689. <label class="floating-label">需要重置的免费流量,0为不重置</label>
  690. <input class="form-control maxwidth-edit" id="free_user_reset_bandwidth" value="{$settings['free_user_reset_bandwidth']}">
  691. </div>
  692. <!-- sign_up_for_free_time -->
  693. <div class="form-group form-group-label">
  694. <label class="floating-label">注册时赠送的时长(单位:天)</label>
  695. <input class="form-control maxwidth-edit" id="sign_up_for_free_time" value="{$settings['sign_up_for_free_time']}">
  696. </div>
  697. <!-- sign_up_for_class -->
  698. <div class="form-group form-group-label">
  699. <label class="floating-label">注册时设定的等级</label>
  700. <input class="form-control maxwidth-edit" id="sign_up_for_class" value="{$settings['sign_up_for_class']}">
  701. </div>
  702. <!-- sign_up_for_class_time -->
  703. <div class="form-group form-group-label">
  704. <label class="floating-label">注册时设定的等级过期时间(单位:天)</label>
  705. <input class="form-control maxwidth-edit" id="sign_up_for_class_time" value="{$settings['sign_up_for_class_time']}">
  706. </div>
  707. <h5>注册限制</h5>
  708. <!-- sign_up_for_invitation_codes -->
  709. <div class="form-group form-group-label">
  710. <label class="floating-label">初始邀请注册链接使用次数限制</label>
  711. <input class="form-control maxwidth-edit" id="sign_up_for_invitation_codes" value="{$settings['sign_up_for_invitation_codes']}">
  712. </div>
  713. <!-- connection_device_limit -->
  714. <div class="form-group form-group-label">
  715. <label class="floating-label">连接设备限制</label>
  716. <input class="form-control maxwidth-edit" id="connection_device_limit" value="{$settings['connection_device_limit']}">
  717. </div>
  718. <!-- connection_rate_limit -->
  719. <div class="form-group form-group-label">
  720. <label class="floating-label">使用速率限制</label>
  721. <input class="form-control maxwidth-edit" id="connection_rate_limit" value="{$settings['connection_rate_limit']}">
  722. </div>
  723. <h5>Shadowsocks 设置</h5>
  724. <!-- sign_up_for_method -->
  725. <div class="form-group form-group-label">
  726. <label class="floating-label">默认加密</label>
  727. <input class="form-control maxwidth-edit" id="sign_up_for_method" value="{$settings['sign_up_for_method']}">
  728. </div>
  729. <h5>其他</h5>
  730. <!-- reg_forbidden_ip -->
  731. <div class="form-group form-group-label">
  732. <label class="floating-label">注册时默认禁止访问IP列表</label>
  733. <input class="form-control maxwidth-edit" id="reg_forbidden_ip" value="{$settings['reg_forbidden_ip']}">
  734. </div>
  735. <!-- reg_forbidden_port -->
  736. <div class="form-group form-group-label">
  737. <label class="floating-label">注册时默认禁止访问端口列表</label>
  738. <input class="form-control maxwidth-edit" id="reg_forbidden_port" value="{$settings['reg_forbidden_port']}">
  739. </div>
  740. <!-- sign_up_for_daily_report -->
  741. <div class="form-group form-group-label">
  742. <label class="floating-label">注册后是否默认接收每日用量邮件推送</label>
  743. <select id="sign_up_for_daily_report" class="form-control maxwidth-edit">
  744. <option value="0" {if $settings['sign_up_for_daily_report'] == false}selected{/if}>关闭</option>
  745. <option value="1" {if $settings['sign_up_for_daily_report'] == true}selected{/if}>开启</option>
  746. </select>
  747. </div>
  748. <!-- enable_reg_im -->
  749. <div class="form-group form-group-label">
  750. <label class="floating-label">注册时是否要求用户输入IM联系方式</label>
  751. <select id="enable_reg_im" class="form-control maxwidth-edit">
  752. <option value="0" {if $settings['enable_reg_im'] == false}selected{/if}>关闭</option>
  753. <option value="1" {if $settings['enable_reg_im'] == true}selected{/if}>开启</option>
  754. </select>
  755. </div>
  756. <button type="submit" class="btn btn-block btn-brand submit_register_settings">提交</button>
  757. </div>
  758. </div>
  759. <div class="tab-pane fade" id="invitation_settings">
  760. <nav class="tab-nav margin-top-no">
  761. <ul class="nav nav-list">
  762. <li class="active">
  763. <a data-toggle="tab" href="#invite_gernal_settings">&nbsp;设置</a>
  764. </li>
  765. <li>
  766. <a data-toggle="tab" href="#rebate_mode">&nbsp;模式</a>
  767. </li>
  768. </ul>
  769. </nav>
  770. <div class="tab-pane fade active in" id="invite_gernal_settings">
  771. <!-- invitation_to_register_balance_reward -->
  772. <div class="form-group form-group-label">
  773. <label class="floating-label">若有人使用现存用户的邀请链接注册,被邀请人所能获得的余额奖励(单位:元)</label>
  774. <input class="form-control maxwidth-edit" id="invitation_to_register_balance_reward" value="{$settings['invitation_to_register_balance_reward']}">
  775. </div>
  776. <!-- invitation_to_register_traffic_reward -->
  777. <div class="form-group form-group-label">
  778. <label class="floating-label">若有人使用现存用户的邀请链接注册,邀请人所能获得的流量奖励(单位:GB)</label>
  779. <input class="form-control maxwidth-edit" id="invitation_to_register_traffic_reward" value="{$settings['invitation_to_register_traffic_reward']}">
  780. </div>
  781. <!-- invite_price -->
  782. <div class="form-group form-group-label">
  783. <label class="floating-label">用户购买邀请码所需要的价格,价格小于0时视为不开放购买</label>
  784. <input class="form-control maxwidth-edit" id="invite_price" value="{$settings['invite_price']}">
  785. </div>
  786. <!-- custom_invite_price -->
  787. <div class="form-group form-group-label">
  788. <label class="floating-label">用户定制邀请码所需要的价格,价格小于0时视为不开放购买</label>
  789. <input class="form-control maxwidth-edit" id="custom_invite_price" value="{$settings['custom_invite_price']}">
  790. </div>
  791. <br/>
  792. <button type="submit" class="btn btn-block btn-brand submit_invite_settings">提交</button>
  793. </div>
  794. <div class="tab-pane fade" id="rebate_mode">
  795. <!-- invitation_mode -->
  796. <div class="form-group form-group-label">
  797. <label class="floating-label">邀请模式</label>
  798. <select id="invitation_mode" class="form-control maxwidth-edit">
  799. <option value="registration_only" {if $settings['invitation_mode'] == 'registration_only'}selected{/if}>
  800. 仅使用邀请注册功能,不返利</option>
  801. <option value="after_recharge" {if $settings['invitation_mode'] == 'after_recharge'}selected{/if}>
  802. 使用邀请注册功能,并在被邀请用户充值时返利</option>
  803. <option value="after_purchase" {if $settings['invitation_mode'] == 'after_purchase'}selected{/if}>
  804. 使用邀请注册功能,并在被邀请用户购买时返利</option>
  805. </select>
  806. </div>
  807. <!-- invite_rebate_mode -->
  808. <div class="form-group form-group-label">
  809. <label class="floating-label">返利模式</label>
  810. <select id="invite_rebate_mode" class="form-control maxwidth-edit">
  811. <option value="continued" {if $settings['invite_rebate_mode'] == 'continued'}selected{/if}>
  812. 持续返利</option>
  813. <option value="limit_frequency" {if $settings['invite_rebate_mode'] == 'limit_frequency'}selected{/if}>
  814. 限制邀请人能从被邀请人身上获得的总返利次数</option>
  815. <option value="limit_amount" {if $settings['invite_rebate_mode'] == 'limit_amount'}selected{/if}>
  816. 限制邀请人能从被邀请人身上获得的总返利金额</option>
  817. <option value="limit_time_range" {if $settings['invite_rebate_mode'] == 'limit_time_range'}selected{/if}>
  818. 限制邀请人能从被邀请人身上获得返利的时间范围</option>
  819. </select>
  820. </div>
  821. <!-- rebate_ratio -->
  822. <div class="form-group form-group-label">
  823. <label class="floating-label">返利比例。10 元商品反 2 元就填 0.2</label>
  824. <input class="form-control maxwidth-edit" id="rebate_ratio" value="{$settings['rebate_ratio']}">
  825. </div>
  826. <h5>返利限制模式</h5>
  827. <p class="form-control-guide"><i class="mdi mdi-information"></i>以下设置项仅在选择对应返利限制模式时生效</p>
  828. <!-- rebate_time_range_limit -->
  829. <div class="form-group form-group-label">
  830. <label class="floating-label">返利时间范围限制(单位:天)</label>
  831. <input class="form-control maxwidth-edit" id="rebate_time_range_limit" value="{$settings['rebate_time_range_limit']}">
  832. </div>
  833. <!-- rebate_frequency_limit -->
  834. <div class="form-group form-group-label">
  835. <label class="floating-label">返利总次数限制</label>
  836. <input class="form-control maxwidth-edit" id="rebate_frequency_limit" value="{$settings['rebate_frequency_limit']}">
  837. </div>
  838. <p class="form-control-guide"><i class="mdi mdi-information"></i>例如:设置为 3 时,一个被邀请用户先后购买了售价为 10,20,50,100 的商品,则只对前三笔订单返利(假设设置为在购买时返利)</p>
  839. <!-- rebate_amount_limit -->
  840. <div class="form-group form-group-label">
  841. <label class="floating-label">返利总金额限制</label>
  842. <input class="form-control maxwidth-edit" id="rebate_amount_limit" value="{$settings['rebate_amount_limit']}">
  843. </div>
  844. <p class="form-control-guide"><i class="mdi mdi-information"></i>例如:设置为 10 时,一个被邀请用户先后购买了售价为 10,20,50,100 的商品,若返点设置为 20% ,则第一次购买返利为 2;第二次为 4;第三次为 4;第四次及之后的购买,邀请人所能获得的返利均为 0(假设设置为在购买时返利)</p>
  845. <p class="form-control-guide"><i class="mdi mdi-information"></i>在进行第三次返利计算时,按设置应返利订单金额的 20% ,即 10 元。但因已获得历史返利 6 元,则只能获得返利总金额限制与历史返利的差值</p>
  846. <br/>
  847. <button type="submit" class="btn btn-block btn-brand submit_invite_settings">提交</button>
  848. </div>
  849. </div>
  850. <div class="tab-pane fade" id="telegram_settings">
  851. <nav class="tab-nav margin-top-no">
  852. <ul class="nav nav-list">
  853. <li class="active">
  854. <a data-toggle="tab" href="#telegram_gernal_settings">&nbsp;设置</a>
  855. </li>
  856. </ul>
  857. </nav>
  858. <div class="tab-pane fade active in" id="telegram_gernal_settings">
  859. <!-- telegram_add_node -->
  860. <div class="form-group form-group-label">
  861. <label class="floating-label">添加节点通知</label>
  862. <select id="telegram_add_node" class="form-control maxwidth-edit">
  863. <option value="0" {if $settings['telegram_add_node'] == false}selected{/if}>关闭</option>
  864. <option value="1" {if $settings['telegram_add_node'] == true}selected{/if}>开启</option>
  865. </select>
  866. </div>
  867. <!-- telegram_add_node_text -->
  868. <div class="form-group form-group-label">
  869. <label class="floating-label">添加节点通知文本</label>
  870. <input class="form-control maxwidth-edit" id="telegram_add_node_text" value="{$settings['telegram_add_node_text']}">
  871. </div>
  872. <!-- telegram_update_node -->
  873. <div class="form-group form-group-label">
  874. <label class="floating-label">修改节点通知</label>
  875. <select id="telegram_update_node" class="form-control maxwidth-edit">
  876. <option value="0" {if $settings['telegram_update_node'] == false}selected{/if}>关闭</option>
  877. <option value="1" {if $settings['telegram_update_node'] == true}selected{/if}>开启</option>
  878. </select>
  879. </div>
  880. <!-- telegram_update_node_text -->
  881. <div class="form-group form-group-label">
  882. <label class="floating-label">修改节点通知文本</label>
  883. <input class="form-control maxwidth-edit" id="telegram_update_node_text" value="{$settings['telegram_update_node_text']}">
  884. </div>
  885. <!-- telegram_delete_node -->
  886. <div class="form-group form-group-label">
  887. <label class="floating-label">删除节点通知</label>
  888. <select id="telegram_delete_node" class="form-control maxwidth-edit">
  889. <option value="0" {if $settings['telegram_delete_node'] == false}selected{/if}>关闭</option>
  890. <option value="1" {if $settings['telegram_delete_node'] == true}selected{/if}>开启</option>
  891. </select>
  892. </div>
  893. <!-- telegram_delete_node_text -->
  894. <div class="form-group form-group-label">
  895. <label class="floating-label">删除节点通知文本</label>
  896. <input class="form-control maxwidth-edit" id="telegram_delete_node_text" value="{$settings['telegram_delete_node_text']}">
  897. </div>
  898. <!-- telegram_node_gfwed -->
  899. <div class="form-group form-group-label">
  900. <label class="floating-label">节点被墙通知</label>
  901. <select id="telegram_node_gfwed" class="form-control maxwidth-edit">
  902. <option value="0" {if $settings['telegram_node_gfwed'] == false}selected{/if}>关闭</option>
  903. <option value="1" {if $settings['telegram_node_gfwed'] == true}selected{/if}>开启</option>
  904. </select>
  905. </div>
  906. <!-- telegram_node_gfwed_text -->
  907. <div class="form-group form-group-label">
  908. <label class="floating-label">节点被墙通知文本</label>
  909. <input class="form-control maxwidth-edit" id="telegram_node_gfwed_text" value="{$settings['telegram_node_gfwed_text']}">
  910. </div>
  911. <!-- telegram_node_ungfwed -->
  912. <div class="form-group form-group-label">
  913. <label class="floating-label">节点被墙恢复通知</label>
  914. <select id="telegram_node_ungfwed" class="form-control maxwidth-edit">
  915. <option value="0" {if $settings['telegram_node_ungfwed'] == false}selected{/if}>关闭</option>
  916. <option value="1" {if $settings['telegram_node_ungfwed'] == true}selected{/if}>开启</option>
  917. </select>
  918. </div>
  919. <!-- telegram_node_ungfwed_text -->
  920. <div class="form-group form-group-label">
  921. <label class="floating-label">节点被墙恢复通知文本</label>
  922. <input class="form-control maxwidth-edit" id="telegram_node_ungfwed_text" value="{$settings['telegram_node_ungfwed_text']}">
  923. </div>
  924. <!-- telegram_node_online -->
  925. <div class="form-group form-group-label">
  926. <label class="floating-label">节点恢复上线通知</label>
  927. <select id="telegram_node_online" class="form-control maxwidth-edit">
  928. <option value="0" {if $settings['telegram_node_online'] == false}selected{/if}>关闭</option>
  929. <option value="1" {if $settings['telegram_node_online'] == true}selected{/if}>开启</option>
  930. </select>
  931. </div>
  932. <!-- telegram_node_online_text -->
  933. <div class="form-group form-group-label">
  934. <label class="floating-label">节点恢复上线通知文本</label>
  935. <input class="form-control maxwidth-edit" id="telegram_node_online_text" value="{$settings['telegram_node_online_text']}">
  936. </div>
  937. <!-- telegram_node_offline -->
  938. <div class="form-group form-group-label">
  939. <label class="floating-label">节点离线通知</label>
  940. <select id="telegram_node_offline" class="form-control maxwidth-edit">
  941. <option value="0" {if $settings['telegram_node_offline'] == false}selected{/if}>关闭</option>
  942. <option value="1" {if $settings['telegram_node_offline'] == true}selected{/if}>开启</option>
  943. </select>
  944. </div>
  945. <!-- telegram_node_offline_text -->
  946. <div class="form-group form-group-label">
  947. <label class="floating-label">节点离线通知文本</label>
  948. <input class="form-control maxwidth-edit" id="telegram_node_offline_text" value="{$settings['telegram_node_offline_text']}">
  949. </div>
  950. <!-- telegram_daily_job -->
  951. <div class="form-group form-group-label">
  952. <label class="floating-label">每日任务通知</label>
  953. <select id="telegram_daily_job" class="form-control maxwidth-edit">
  954. <option value="0" {if $settings['telegram_daily_job'] == false}selected{/if}>关闭</option>
  955. <option value="1" {if $settings['telegram_daily_job'] == true}selected{/if}>开启</option>
  956. </select>
  957. </div>
  958. <!-- telegram_daily_job_text -->
  959. <div class="form-group form-group-label">
  960. <label class="floating-label">每日任务通知文本</label>
  961. <input class="form-control maxwidth-edit" id="telegram_daily_job_text" value="{$settings['telegram_daily_job_text']}">
  962. </div>
  963. <!-- telegram_diary -->
  964. <div class="form-group form-group-label">
  965. <label class="floating-label">系统运行状况通知</label>
  966. <select id="telegram_diary" class="form-control maxwidth-edit">
  967. <option value="0" {if $settings['telegram_diary'] == false}selected{/if}>关闭</option>
  968. <option value="1" {if $settings['telegram_diary'] == true}selected{/if}>开启</option>
  969. </select>
  970. </div>
  971. <!-- telegram_diary_text -->
  972. <div class="form-group form-group-label">
  973. <label class="floating-label">系统运行状况通知文本</label>
  974. <input class="form-control maxwidth-edit" id="telegram_diary_text" value="{$settings['telegram_diary_text']}">
  975. </div>
  976. <!-- telegram_unbind_kick_member -->
  977. <div class="form-group form-group-label">
  978. <label class="floating-label">解绑Telegram账户后自动踢出群组</label>
  979. <select id="telegram_unbind_kick_member" class="form-control maxwidth-edit">
  980. <option value="0" {if $settings['telegram_unbind_kick_member'] == false}selected{/if}>关闭</option>
  981. <option value="1" {if $settings['telegram_unbind_kick_member'] == true}selected{/if}>开启</option>
  982. </select>
  983. </div>
  984. <!-- telegram_group_bound_user -->
  985. <div class="form-group form-group-label">
  986. <label class="floating-label">仅允许已绑定Telegram账户的用户加入群组</label>
  987. <select id="telegram_group_bound_user" class="form-control maxwidth-edit">
  988. <option value="0" {if $settings['telegram_group_bound_user'] == false}selected{/if}>关闭</option>
  989. <option value="1" {if $settings['telegram_group_bound_user'] == true}selected{/if}>开启</option>
  990. </select>
  991. </div>
  992. <!-- telegram_show_group_link -->
  993. <div class="form-group form-group-label">
  994. <label class="floating-label">启用Telegram机器人显示用户群组链接</label>
  995. <select id="telegram_show_group_link" class="form-control maxwidth-edit">
  996. <option value="0" {if $settings['telegram_show_group_link'] == false}selected{/if}>关闭</option>
  997. <option value="1" {if $settings['telegram_show_group_link'] == true}selected{/if}>开启</option>
  998. </select>
  999. </div>
  1000. <!-- telegram_group_link -->
  1001. <div class="form-group form-group-label">
  1002. <label class="floating-label">用户群组链接</label>
  1003. <input class="form-control maxwidth-edit" id="telegram_group_link" value="{$settings['telegram_group_link']}">
  1004. </div>
  1005. <button id="submit_telegram_gernal_settings" type="submit" class="btn btn-block btn-brand">提交</button>
  1006. </div>
  1007. </div>
  1008. </div>
  1009. </div>
  1010. </div>
  1011. </div>
  1012. </div>
  1013. </div>
  1014. {include file='dialog.tpl'}
  1015. </div>
  1016. </main>
  1017. {include file='admin/footer.tpl'}
  1018. <script>
  1019. window.addEventListener('load', () => {
  1020. $$.getElementById('submit_f2f_pay').addEventListener('click', () => {
  1021. $.ajax({
  1022. type: "POST",
  1023. url: "/admin/setting",
  1024. dataType: "json",
  1025. data: {
  1026. class: 'f2f_pay',
  1027. f2f_pay_app_id: $$getValue('f2f_pay_app_id'),
  1028. f2f_pay_pid: $$getValue('f2f_pay_pid'),
  1029. f2f_pay_public_key: $$getValue('f2f_pay_public_key'),
  1030. f2f_pay_private_key: $$getValue('f2f_pay_private_key'),
  1031. f2f_pay_notify_url: $$getValue('f2f_pay_notify_url')
  1032. },
  1033. success: data => {
  1034. $("#result").modal();
  1035. $$.getElementById('msg').innerHTML = data.msg;
  1036. if (data.ret) {
  1037. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1038. }
  1039. },
  1040. error: jqXHR => {
  1041. alert(`发生错误:${
  1042. jqXHR.status
  1043. }`);
  1044. }
  1045. })
  1046. })
  1047. })
  1048. </script>
  1049. <script>
  1050. window.addEventListener('load', () => {
  1051. $$.getElementById('submit_e_pay').addEventListener('click', () => {
  1052. $.ajax({
  1053. type: "POST",
  1054. url: "/admin/setting",
  1055. dataType: "json",
  1056. data: {
  1057. class: 'e_pay',
  1058. epay_url: $$getValue('epay_url'),
  1059. epay_pid: $$getValue('epay_pid'),
  1060. epay_key: $$getValue('epay_key'),
  1061. epay_alipay: $$getValue('epay_alipay'),
  1062. epay_wechat: $$getValue('epay_wechat'),
  1063. epay_qq: $$getValue('epay_qq'),
  1064. epay_usdt: $$getValue('epay_usdt')
  1065. },
  1066. success: data => {
  1067. $("#result").modal();
  1068. $$.getElementById('msg').innerHTML = data.msg;
  1069. if (data.ret) {
  1070. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1071. }
  1072. },
  1073. error: jqXHR => {
  1074. alert(`发生错误:${
  1075. jqXHR.status
  1076. }`);
  1077. }
  1078. })
  1079. })
  1080. })
  1081. </script>
  1082. <script>
  1083. window.addEventListener('load', () => {
  1084. $$.getElementById('submit_payment').addEventListener('click', () => {
  1085. {foreach $payment_gateways as $key => $value}
  1086. if ($$.getElementById("{$value}_switch").checked) {
  1087. var {$value} = 1;
  1088. } else {
  1089. var {$value} = 0;
  1090. }
  1091. {/foreach}
  1092. $.ajax({
  1093. type: "POST",
  1094. url: "/admin/setting/payment",
  1095. dataType: "json",
  1096. data: {
  1097. {foreach $payment_gateways as $key => $value}
  1098. {$value},
  1099. {/foreach}
  1100. class: 'payment'
  1101. },
  1102. success: data => {
  1103. $("#result").modal();
  1104. $$.getElementById('msg').innerHTML = data.msg;
  1105. if (data.ret) {
  1106. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1107. }
  1108. },
  1109. error: jqXHR => {
  1110. alert(`发生错误:${
  1111. jqXHR.status
  1112. }`);
  1113. }
  1114. })
  1115. })
  1116. })
  1117. </script>
  1118. <script>
  1119. window.addEventListener('load', () => {
  1120. $$.getElementById('submit_vmq_pay').addEventListener('click', () => {
  1121. $.ajax({
  1122. type: "POST",
  1123. url: "/admin/setting",
  1124. dataType: "json",
  1125. data: {
  1126. class: 'vmq_pay',
  1127. vmq_gateway: $$getValue('vmq_gateway'),
  1128. vmq_key: $$getValue('vmq_key')
  1129. },
  1130. success: data => {
  1131. $("#result").modal();
  1132. $$.getElementById('msg').innerHTML = data.msg;
  1133. if (data.ret) {
  1134. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1135. }
  1136. },
  1137. error: jqXHR => {
  1138. alert(`发生错误:${
  1139. jqXHR.status
  1140. }`);
  1141. }
  1142. })
  1143. })
  1144. })
  1145. </script>
  1146. <script>
  1147. window.addEventListener('load', () => {
  1148. $$.getElementById('submit_mail').addEventListener('click', () => {
  1149. $.ajax({
  1150. type: "POST",
  1151. url: "/admin/setting",
  1152. dataType: "json",
  1153. data: {
  1154. class: 'mail',
  1155. mail_driver: $$getValue('mail_driver')
  1156. },
  1157. success: data => {
  1158. $("#result").modal();
  1159. $$.getElementById('msg').innerHTML = data.msg;
  1160. if (data.ret) {
  1161. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1162. }
  1163. },
  1164. error: jqXHR => {
  1165. alert(`发生错误:${
  1166. jqXHR.status
  1167. }`);
  1168. }
  1169. })
  1170. })
  1171. })
  1172. </script>
  1173. <script>
  1174. window.addEventListener('load', () => {
  1175. $$.getElementById('submit_smtp').addEventListener('click', () => {
  1176. $.ajax({
  1177. type: "POST",
  1178. url: "/admin/setting",
  1179. dataType: "json",
  1180. data: {
  1181. class: 'smtp',
  1182. smtp_host: $$getValue('smtp_host'),
  1183. smtp_username: $$getValue('smtp_username'),
  1184. smtp_password: $$getValue('smtp_password'),
  1185. smtp_port: $$getValue('smtp_port'),
  1186. smtp_name: $$getValue('smtp_name'),
  1187. smtp_sender: $$getValue('smtp_sender'),
  1188. smtp_ssl: $$getValue('smtp_ssl'),
  1189. smtp_bbc: $$getValue('smtp_bbc')
  1190. },
  1191. success: data => {
  1192. $("#result").modal();
  1193. $$.getElementById('msg').innerHTML = data.msg;
  1194. if (data.ret) {
  1195. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1196. }
  1197. },
  1198. error: jqXHR => {
  1199. alert(`发生错误:${
  1200. jqXHR.status
  1201. }`);
  1202. }
  1203. })
  1204. })
  1205. })
  1206. </script>
  1207. <script>
  1208. window.addEventListener('load', () => {
  1209. $$.getElementById('submit_email_test').addEventListener('click', () => {
  1210. $.ajax({
  1211. type: "POST",
  1212. url: "/admin/setting/email",
  1213. dataType: "json",
  1214. data: {
  1215. recipient: $$getValue('testing_email_recipients')
  1216. },
  1217. success: data => {
  1218. $("#result").modal();
  1219. $$.getElementById('msg').innerHTML = data.msg;
  1220. if (data.ret) {
  1221. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1222. }
  1223. },
  1224. error: jqXHR => {
  1225. alert(`发生错误:${
  1226. jqXHR.status
  1227. }`);
  1228. }
  1229. })
  1230. })
  1231. })
  1232. </script>
  1233. <script>
  1234. window.addEventListener('load', () => {
  1235. $$.getElementById('submit_verify_code').addEventListener('click', () => {
  1236. $.ajax({
  1237. type: "POST",
  1238. url: "/admin/setting",
  1239. dataType: "json",
  1240. data: {
  1241. class: 'verify_code',
  1242. captcha_provider: $$getValue('captcha_provider'),
  1243. enable_reg_captcha: $$getValue('enable_reg_captcha'),
  1244. enable_login_captcha: $$getValue('enable_login_captcha'),
  1245. enable_checkin_captcha: $$getValue('enable_checkin_captcha'),
  1246. enable_reset_password_captcha: $$getValue('enable_reset_password_captcha')
  1247. },
  1248. success: data => {
  1249. $("#result").modal();
  1250. $$.getElementById('msg').innerHTML = data.msg;
  1251. if (data.ret) {
  1252. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1253. }
  1254. },
  1255. error: jqXHR => {
  1256. alert(`发生错误:${
  1257. jqXHR.status
  1258. }`);
  1259. }
  1260. })
  1261. })
  1262. })
  1263. </script>
  1264. <script>
  1265. window.addEventListener('load', () => {
  1266. $$.getElementById('submit_geetest').addEventListener('click', () => {
  1267. $.ajax({
  1268. type: "POST",
  1269. url: "/admin/setting",
  1270. dataType: "json",
  1271. data: {
  1272. class: 'verify_code_geetest',
  1273. geetest_id: $$getValue('geetest_id'),
  1274. geetest_key: $$getValue('geetest_key')
  1275. },
  1276. success: data => {
  1277. $("#result").modal();
  1278. $$.getElementById('msg').innerHTML = data.msg;
  1279. if (data.ret) {
  1280. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1281. }
  1282. },
  1283. error: jqXHR => {
  1284. alert(`发生错误:${
  1285. jqXHR.status
  1286. }`);
  1287. }
  1288. })
  1289. })
  1290. })
  1291. </script>
  1292. <script>
  1293. window.addEventListener('load', () => {
  1294. $$.getElementById('submit_turnstile').addEventListener('click', () => {
  1295. $.ajax({
  1296. type: "POST",
  1297. url: "/admin/setting",
  1298. dataType: "json",
  1299. data: {
  1300. class: 'verify_code_turnstile',
  1301. turnstile_sitekey: $$getValue('turnstile_sitekey'),
  1302. turnstile_secret: $$getValue('turnstile_secret')
  1303. },
  1304. success: data => {
  1305. $("#result").modal();
  1306. $$.getElementById('msg').innerHTML = data.msg;
  1307. if (data.ret) {
  1308. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1309. }
  1310. },
  1311. error: jqXHR => {
  1312. alert(`发生错误:${
  1313. jqXHR.status
  1314. }`);
  1315. }
  1316. })
  1317. })
  1318. })
  1319. </script>
  1320. <script>
  1321. window.addEventListener('load', () => {
  1322. $$.getElementById('submit_mailgun').addEventListener('click', () => {
  1323. $.ajax({
  1324. type: "POST",
  1325. url: "/admin/setting",
  1326. dataType: "json",
  1327. data: {
  1328. class: 'mailgun',
  1329. mailgun_key: $$getValue('mailgun_key'),
  1330. mailgun_domain: $$getValue('mailgun_domain'),
  1331. mailgun_sender: $$getValue('mailgun_sender')
  1332. },
  1333. success: data => {
  1334. $("#result").modal();
  1335. $$.getElementById('msg').innerHTML = data.msg;
  1336. if (data.ret) {
  1337. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1338. }
  1339. },
  1340. error: jqXHR => {
  1341. alert(`发生错误:${
  1342. jqXHR.status
  1343. }`);
  1344. }
  1345. })
  1346. })
  1347. })
  1348. </script>
  1349. <script>
  1350. window.addEventListener('load', () => {
  1351. $$.getElementById('submit_sendgrid').addEventListener('click', () => {
  1352. $.ajax({
  1353. type: "POST",
  1354. url: "/admin/setting",
  1355. dataType: "json",
  1356. data: {
  1357. class: 'sendgrid',
  1358. sendgrid_key: $$getValue('sendgrid_key'),
  1359. sendgrid_sender: $$getValue('sendgrid_sender'),
  1360. sendgrid_name: $$getValue('sendgrid_name')
  1361. },
  1362. success: data => {
  1363. $("#result").modal();
  1364. $$.getElementById('msg').innerHTML = data.msg;
  1365. if (data.ret) {
  1366. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1367. }
  1368. },
  1369. error: jqXHR => {
  1370. alert(`发生错误:${
  1371. jqXHR.status
  1372. }`);
  1373. }
  1374. })
  1375. })
  1376. })
  1377. </script>
  1378. <script>
  1379. window.addEventListener('load', () => {
  1380. $$.getElementById('submit_ses').addEventListener('click', () => {
  1381. $.ajax({
  1382. type: "POST",
  1383. url: "/admin/setting",
  1384. dataType: "json",
  1385. data: {
  1386. class: 'ses',
  1387. aws_access_key_id: $$getValue('aws_access_key_id'),
  1388. aws_secret_access_key: $$getValue('aws_secret_access_key'),
  1389. aws_region: $$getValue('aws_region'),
  1390. aws_ses_sender: $$getValue('aws_ses_sender')
  1391. },
  1392. success: data => {
  1393. $("#result").modal();
  1394. $$.getElementById('msg').innerHTML = data.msg;
  1395. if (data.ret) {
  1396. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1397. }
  1398. },
  1399. error: jqXHR => {
  1400. alert(`发生错误:${
  1401. jqXHR.status
  1402. }`);
  1403. }
  1404. })
  1405. })
  1406. })
  1407. </script>
  1408. <script>
  1409. window.addEventListener('load', () => {
  1410. $$.getElementById('submit_payjs_pay').addEventListener('click', () => {
  1411. $.ajax({
  1412. type: "POST",
  1413. url: "/admin/setting",
  1414. dataType: "json",
  1415. data: {
  1416. class: 'payjs_pay',
  1417. payjs_url: $$getValue('payjs_url'),
  1418. payjs_mchid: $$getValue('payjs_mchid'),
  1419. payjs_key: $$getValue('payjs_key')
  1420. },
  1421. success: data => {
  1422. $("#result").modal();
  1423. $$.getElementById('msg').innerHTML = data.msg;
  1424. if (data.ret) {
  1425. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1426. }
  1427. },
  1428. error: jqXHR => {
  1429. alert(`发生错误:${
  1430. jqXHR.status
  1431. }`);
  1432. }
  1433. })
  1434. })
  1435. })
  1436. </script>
  1437. <script>
  1438. window.addEventListener('load', () => {
  1439. $$.getElementById('submit_paymentwall').addEventListener('click', () => {
  1440. $.ajax({
  1441. type: "POST",
  1442. url: "/admin/setting",
  1443. dataType: "json",
  1444. data: {
  1445. class: 'paymentwall',
  1446. pmw_publickey: $$getValue('pmw_publickey'),
  1447. pmw_privatekey: $$getValue('pmw_privatekey'),
  1448. pmw_widget: $$getValue('pmw_widget'),
  1449. pmw_height: $$getValue('pmw_height')
  1450. },
  1451. success: data => {
  1452. $("#result").modal();
  1453. $$.getElementById('msg').innerHTML = data.msg;
  1454. if (data.ret) {
  1455. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1456. }
  1457. },
  1458. error: jqXHR => {
  1459. alert(`发生错误:${
  1460. jqXHR.status
  1461. }`);
  1462. }
  1463. })
  1464. })
  1465. })
  1466. </script>
  1467. <script>
  1468. window.addEventListener('load', () => {
  1469. $$.getElementById('submit_admin_contact').addEventListener('click', () => {
  1470. $.ajax({
  1471. type: "POST",
  1472. url: "/admin/setting",
  1473. dataType: "json",
  1474. data: {
  1475. class: 'admin_contact',
  1476. enable_admin_contact: $$getValue('enable_admin_contact'),
  1477. admin_contact1: $$getValue('admin_contact1'),
  1478. admin_contact2: $$getValue('admin_contact2'),
  1479. admin_contact3: $$getValue('admin_contact3')
  1480. },
  1481. success: data => {
  1482. $("#result").modal();
  1483. $$.getElementById('msg').innerHTML = data.msg;
  1484. if (data.ret) {
  1485. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1486. }
  1487. },
  1488. error: jqXHR => {
  1489. alert(`发生错误:${
  1490. jqXHR.status
  1491. }`);
  1492. }
  1493. })
  1494. })
  1495. })
  1496. </script>
  1497. <script>
  1498. window.addEventListener('load', () => {
  1499. $$.getElementById('submit_web_customer_service_system').addEventListener('click', () => {
  1500. $.ajax({
  1501. type: "POST",
  1502. url: "/admin/setting",
  1503. dataType: "json",
  1504. data: {
  1505. class: 'web_customer_service_system',
  1506. live_chat: $$getValue('live_chat'),
  1507. tawk_id: $$getValue('tawk_id'),
  1508. crisp_id: $$getValue('crisp_id'),
  1509. livechat_id: $$getValue('livechat_id'),
  1510. mylivechat_id: $$getValue('mylivechat_id')
  1511. },
  1512. success: data => {
  1513. $("#result").modal();
  1514. $$.getElementById('msg').innerHTML = data.msg;
  1515. if (data.ret) {
  1516. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1517. }
  1518. },
  1519. error: jqXHR => {
  1520. alert(`发生错误:${
  1521. jqXHR.status
  1522. }`);
  1523. }
  1524. })
  1525. })
  1526. })
  1527. </script>
  1528. <script>
  1529. window.addEventListener('load', () => {
  1530. $$.getElementById('submit_theadpay').addEventListener('click', () => {
  1531. $.ajax({
  1532. type: "POST",
  1533. url: "/admin/setting",
  1534. dataType: "json",
  1535. data: {
  1536. class: 'theadpay',
  1537. theadpay_url: $$getValue('theadpay_url'),
  1538. theadpay_mchid: $$getValue('theadpay_mchid'),
  1539. theadpay_key: $$getValue('theadpay_key')
  1540. },
  1541. success: data => {
  1542. $("#result").modal();
  1543. $$.getElementById('msg').innerHTML = data.msg;
  1544. if (data.ret) {
  1545. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1546. }
  1547. },
  1548. error: jqXHR => {
  1549. alert(`发生错误:${
  1550. jqXHR.status
  1551. }`);
  1552. }
  1553. })
  1554. })
  1555. })
  1556. </script>
  1557. <script>
  1558. window.addEventListener('load', () => {
  1559. $$.getElementById('submit_stripe').addEventListener('click', () => {
  1560. $.ajax({
  1561. type: "POST",
  1562. url: "/admin/setting",
  1563. dataType: "json",
  1564. data: {
  1565. class: 'stripe',
  1566. stripe_card: $$getValue('stripe_card_select'),
  1567. stripe_currency: $$getValue('stripe_currency'),
  1568. stripe_min_recharge: $$getValue('stripe_min_recharge'),
  1569. stripe_max_recharge: $$getValue('stripe_max_recharge'),
  1570. stripe_pk: $$getValue('stripe_pk'),
  1571. stripe_sk: $$getValue('stripe_sk'),
  1572. stripe_webhook_key: $$getValue('stripe_webhook_key')
  1573. },
  1574. success: data => {
  1575. $("#result").modal();
  1576. $$.getElementById('msg').innerHTML = data.msg;
  1577. if (data.ret) {
  1578. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1579. }
  1580. },
  1581. error: jqXHR => {
  1582. alert(`发生错误:${
  1583. jqXHR.status
  1584. }`);
  1585. }
  1586. })
  1587. })
  1588. })
  1589. </script>
  1590. <script>
  1591. window.addEventListener('load', () => {
  1592. $('.submit_register_settings').click( () => {
  1593. $.ajax({
  1594. type: "POST",
  1595. url: "/admin/setting",
  1596. dataType: "json",
  1597. data: {
  1598. class: 'register',
  1599. reg_mode: $$getValue('reg_mode'),
  1600. reg_email_verify: $$getValue('reg_email_verify'),
  1601. email_verify_ttl: $$getValue('email_verify_ttl'),
  1602. email_verify_ip_limit: $$getValue('email_verify_ip_limit'),
  1603. random_group: $$getValue('random_group'),
  1604. min_port: $$getValue('min_port'),
  1605. max_port: $$getValue('max_port'),
  1606. sign_up_for_free_traffic: $$getValue('sign_up_for_free_traffic'),
  1607. free_user_reset_day: $$getValue('free_user_reset_day'),
  1608. free_user_reset_bandwidth: $$getValue('free_user_reset_bandwidth'),
  1609. sign_up_for_free_time: $$getValue('sign_up_for_free_time'),
  1610. sign_up_for_class: $$getValue('sign_up_for_class'),
  1611. sign_up_for_class_time: $$getValue('sign_up_for_class_time'),
  1612. sign_up_for_invitation_codes: $$getValue('sign_up_for_invitation_codes'),
  1613. connection_device_limit: $$getValue('connection_device_limit'),
  1614. connection_rate_limit: $$getValue('connection_rate_limit'),
  1615. sign_up_for_method: $$getValue('sign_up_for_method'),
  1616. reg_forbidden_ip: $$getValue('reg_forbidden_ip'),
  1617. reg_forbidden_port: $$getValue('reg_forbidden_port'),
  1618. sign_up_for_daily_report: $$getValue('sign_up_for_daily_report'),
  1619. enable_reg_im: $$getValue('enable_reg_im')
  1620. },
  1621. success: data => {
  1622. $("#result").modal();
  1623. $$.getElementById('msg').innerHTML = data.msg;
  1624. if (data.ret) {
  1625. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1626. }
  1627. },
  1628. error: jqXHR => {
  1629. alert(`发生错误:${
  1630. jqXHR.status
  1631. }`);
  1632. }
  1633. })
  1634. })
  1635. })
  1636. </script>
  1637. <script>
  1638. window.addEventListener('load', () => {
  1639. $('.submit_invite_settings').click( () => {
  1640. $.ajax( {
  1641. type: "POST",
  1642. url: "/admin/setting",
  1643. dataType: "json",
  1644. data: {
  1645. class: 'invite',
  1646. invitation_mode: $$getValue('invitation_mode'),
  1647. invite_rebate_mode: $$getValue('invite_rebate_mode'),
  1648. rebate_ratio: $$getValue('rebate_ratio'),
  1649. rebate_frequency_limit: $$getValue('rebate_frequency_limit'),
  1650. rebate_amount_limit: $$getValue('rebate_amount_limit'),
  1651. rebate_time_range_limit: $$getValue('rebate_time_range_limit'),
  1652. invitation_to_register_balance_reward: $$getValue('invitation_to_register_balance_reward'),
  1653. invitation_to_register_traffic_reward: $$getValue('invitation_to_register_traffic_reward'),
  1654. invite_price: $$getValue('invite_price'),
  1655. custom_invite_price: $$getValue('custom_invite_price')
  1656. },
  1657. success: data => {
  1658. $("#result").modal();
  1659. $$.getElementById('msg').innerHTML = data.msg;
  1660. if (data.ret) {
  1661. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1662. }
  1663. },
  1664. error: jqXHR => {
  1665. alert(`发生错误:${
  1666. jqXHR.status
  1667. }`);
  1668. }
  1669. } )
  1670. } )
  1671. } )
  1672. </script>
  1673. <script>
  1674. window.addEventListener('load', () => {
  1675. $$.getElementById('submit_telegram_gernal_settings').addEventListener('click', () => {
  1676. $.ajax({
  1677. type: "POST",
  1678. url: "/admin/setting",
  1679. dataType: "json",
  1680. data: {
  1681. class: 'telegram',
  1682. telegram_add_node: $$getValue('telegram_add_node'),
  1683. telegram_add_node_text: $$getValue('telegram_add_node_text'),
  1684. telegram_update_node: $$getValue('telegram_update_node'),
  1685. telegram_update_node_text: $$getValue('telegram_update_node_text'),
  1686. telegram_delete_node: $$getValue('telegram_delete_node'),
  1687. telegram_delete_node_text: $$getValue('telegram_delete_node_text'),
  1688. telegram_node_gfwed: $$getValue('telegram_node_gfwed'),
  1689. telegram_node_gfwed_text: $$getValue('telegram_node_gfwed_text'),
  1690. telegram_node_ungfwed: $$getValue('telegram_node_ungfwed'),
  1691. telegram_node_ungfwed_text: $$getValue('telegram_node_ungfwed_text'),
  1692. telegram_node_online: $$getValue('telegram_node_online'),
  1693. telegram_node_online_text: $$getValue('telegram_node_online_text'),
  1694. telegram_node_offline: $$getValue('telegram_node_offline'),
  1695. telegram_node_offline_text: $$getValue('telegram_node_offline_text'),
  1696. telegram_daily_job: $$getValue('telegram_daily_job'),
  1697. telegram_daily_job_text: $$getValue('telegram_daily_job_text'),
  1698. telegram_diary: $$getValue('telegram_diary'),
  1699. telegram_diary_text: $$getValue('telegram_diary_text'),
  1700. telegram_unbind_kick_member: $$getValue('telegram_unbind_kick_member'),
  1701. telegram_group_bound_user: $$getValue('telegram_group_bound_user'),
  1702. telegram_show_group_link: $$getValue('telegram_show_group_link'),
  1703. telegram_group_link: $$getValue('telegram_group_link')
  1704. },
  1705. success: data => {
  1706. $("#result").modal();
  1707. $$.getElementById('msg').innerHTML = data.msg;
  1708. if (data.ret) {
  1709. window.setTimeout("location.href='/admin/setting'", {$config['jump_delay']});
  1710. }
  1711. },
  1712. error: jqXHR => {
  1713. alert(`发生错误:${
  1714. jqXHR.status
  1715. }`);
  1716. }
  1717. })
  1718. })
  1719. })
  1720. </script>