Files
yakpanel-core/class/__pycache__/config.cpython-314.pyc

739 lines
191 KiB
Plaintext
Raw Normal View History

2026-04-07 02:04:22 +05:30
+
<00><><EFBFBD>i0m<00><00><><00>^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RI t ^RI
t
^RI t ^RI HtHtHtHtHt^RIt!RR4tR# ]P!R4L5;i L);i)<06>Nzpip install pyotp &)<05>session<6F>admin_path_checks<6B>g<>request<73>cachec<00><>a<00>]tRt^toRt]R,t]R,t]R,t]R,t]R,t ]R,t
]R,t .t .t R tR
tR tR tR tRtRtRtRtRtRtR<>RltRtRtRtRtRtRtRt Rt!Rt"Rt#R t$R!t%R"t&R<>R#lt'R$t(R%t)R&t*R't+R(t,R)t-R*t.R+t/R,t0R-t1R.t2R/t3R0t4R1t5R2t6R3t7R4t8R5t9R6t:R7t;R8t<R9t=R:t>R;t?R<t@R=tAR>tBR?tCR@tDRAtERBtFRCtGRDtHREtIRFtJRGtKRHtLRItMRJtNRKtORLtPRMtQRNtRROtSRPtTRQtURRtVRStWRTtXRUtYRVtZRWt[RXt\RYt]RZt^R[t_R\t`R]taR^tbR_tcR`tdRateRbtfRctgRdthRetiRftjRgtkRhtlRitmRjtnRktoRltpRmtqRntrRotsRpttRqtuRrtvRstwRttxRutyRvtzRwt{Rxt|Ryt}Rzt~R{tR|t<>R}t<>R~t<>Rt<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>R<EFBFBD>lt<>R<EFBFBD>R<EFBFBD>lt<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>R<EFBFBD>lt<>R<EFBFBD>R<EFBFBD>lt<>R<EFBFBD>R<EFBFBD>lt<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<>R<EFBFBD>t<EFBFBD>Vt<>R#)<29><>configz/www/server/panelz/data/two_step_auth.txtz/data/bk_two_step_auth.txtz/data/username.txtz /data/qrcodez/data/stmp_mail.jsonz/data/mail_list.jsonz/data/dingding.jsonc<08><00>\P!4Vn\PP VP
4'g:.p\ P!VP
\P!V44R#\P!\ P!VP
44pW n R# .p\ P!TP
\P!T44R#;i R#;i<01>N) <0A> send_mail<69>mail<69>os<6F>path<74>exists<74>_config__mail_list_data<74>public<69> writeFile<6C>json<6F>dumps<70>loads<64>ReadFile<6C>_config__mail_list)<03>self<6C>ret<65> mail_datas& <20>6C:\wwwroot\yakpanel.com\YakPanel-master\class\config.py<70>__init__<5F>config.__init__#s<><00><00> <14>!<21>+<2B>+<2B>-<2D>D<EFBFBD>I<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24>"7<>"7<>8<>8<><18><03><16> <20> <20><14>!6<>!6<><04>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F>H<>M<01> $<24>
<EFBFBD>
<EFBFBD>6<EFBFBD>?<3F>?<3F>4<EFBFBD>;P<>;P<>+Q<> R<>I<EFBFBD>'0<>$<24><>M<01><1C>C<EFBFBD><1A>$<24>$<24>T<EFBFBD>%:<3A>%:<3A>D<EFBFBD>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD>L<><4C><13>t<EFBFBD>s*<00>AD<00> 7D<00>:C<00>9C=<03>:D<00>=D<00>Dc<08>D<00>\P!RVP4#)T)r<00>return_msg_gettextr<00>r<00>gets&&r<00>return_mail_list<73>config.return_mail_list2s<00><00><15>(<28>(<28><14>t<EFBFBD>/?<3F>/?<3F>@<40>@<40>c<08>f<00>VPP4pW P9drVPPV4\P
!VP \P!VP44\P!RR4#\P!RR4#)T<>Successfully deletedzEmail does not exist)
<EFBFBD>email<69>stripr<00>removerrrrrr )rr"<00>emials&& r<00> del_mail_list<73>config.del_mail_list6s<00><00><13> <09> <09><0F><0F>!<21><05> <10>$<24>$<24> $<24> <10> <1C> <1C> #<23> #<23>E<EFBFBD> *<2A> <12> <1C> <1C>T<EFBFBD>2<>2<>D<EFBFBD>J<EFBFBD>J<EFBFBD>t<EFBFBD>?O<>?O<>4P<34> Q<><19>,<2C>,<2C>T<EFBFBD>3I<33>J<> J<><19>,<2C>,<2C>T<EFBFBD>3I<33>J<> Jr%c<08>H<00>^RIpVP4PV4#<00>rN)<02>panel_telegram_bot<6F>
del_tg_bot<EFBFBD>rr"r0s&& r<00> del_tg_info<66>config.del_tg_info?<00><00><00>!<21>!<21>4<>4<>6<>A<>A<>#<23>F<>Fr%c<08>H<00>^RIpVP4PV4#r/)r0<00>
set_tg_botr2s&& rr7<00>config.set_tg_botCr5r%c<08><><00>\VR4'g\P!RR4#\P!R4pVP VP 4'g\P!RR4#VP P4VP9d\P!RR4#VPPVP P44\P!VP\P!VP44\P!RR4#)r(F<>Please input your email<69>,[a-zA-Z0-9.-_+%]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+<2B>Please enter your vaild emailTzEmail already exists<74>Setup successfully!)<0E>hasattrrr <00>re<72>compile<6C>searchr(r)r<00>appendrrrr)rr"<00> emailformats&& r<00>add_mail_address<73>config.add_mail_addressHs<><00><00><16>s<EFBFBD>G<EFBFBD>$<24>$<24>V<EFBFBD>-F<>-F<>u<EFBFBD>Ng<4E>-h<>&h<><18>j<EFBFBD>j<EFBFBD>!P<>Q<> <0B><1A>!<21>!<21>#<23>)<29>)<29>,<2C>,<2C>V<EFBFBD>5N<35>5N<35>u<EFBFBD>Vu<56>5v<35>.v<> <0E>9<EFBFBD>9<EFBFBD>?<3F>?<3F> <1C><04> 0<> 0<> 0<><16>9R<39>9R<39>SW<53>Yo<59>9p<39>2p<32> <0C><18><18><1F><1F><03> <09> <09><0F><0F> 1<>2<><0E><18><18><14>.<2E>.<2E><04>
<EFBFBD>
<EFBFBD>4<EFBFBD>;K<>;K<>0L<30>M<><15>(<28>(<28><14>/D<>E<>Er%c<08><><00>\VR4'gN\VR4'g<\VR4'g*\VR4'g\P!RR4#VPP VP
P 4VPP 4VPP 4VPP 44VPPVP
P 4\P!R4\P!R44'd<>VP
P 4VP9gsVPPVP
P 44\P!VP\ P"!VP44\P!RR4#.p\P!VP$\ P"!V44\P!RR 4#)
r(<00>stmp_pwd<77>hosts<74>portF<74>Please complete the informationzYakPanel Alert Test EmailTr=z[Email sending failed, please check if the STMP password is correct or the hosts are correct)r>rr r <00>qq_stmp_insertr(r)rGrHrI<00> qq_smtp_send<6E>langrrBrrrr<00>_config__mail_config)rr"rs&& r<00>user_mail_send<6E>config.user_mail_sendSs<><00><00><17><03>W<EFBFBD>%<25>%<25><17><13>j<EFBFBD>)A<>)A<>W<EFBFBD>S<EFBFBD>RY<52>EZ<45>EZ<45>^e<>fi<66>kq<6B>^r<>^r<><19>,<2C>,<2C>U<EFBFBD>4U<34>V<> V<> <0C> <09> <09> <20> <20><13><19><19><1F><1F>!2<>C<EFBFBD>L<EFBFBD>L<EFBFBD>4F<34>4F<34>4H<34>#<23>)<29>)<29>/<2F>/<2F>J[<5B>\_<>\d<>\d<>\j<>\j<>\l<>m<> <0F>9<EFBFBD>9<EFBFBD> !<21> !<21>#<23>)<29>)<29>/<2F>/<2F>"3<>V<EFBFBD>[<5B>[<5B>A\<5C>5]<5D>_e<5F>_j<5F>_j<5F>lG<02>`H<02> I<02> I<02><16>9<EFBFBD>9<EFBFBD>?<3F>?<3F>$<24><04>(8<>(8<>8<><14> <20> <20>'<27>'<27><03> <09> <09><0F><0F>(9<>:<3A><16> <20> <20><14>!6<>!6<><04>
<EFBFBD>
<EFBFBD>4<EFBFBD>CS<EFBFBD>CS<EFBFBD>8T<EFBFBD>U<><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> I<><14>C<EFBFBD> <12> <1C> <1C>T<EFBFBD>/<2F>/<2F><14><1A><1A>C<EFBFBD><1F> A<><19>,<2C>,<2C>U<EFBFBD>5R<02>S<02> Sr%c<08><><00>\P!\P!VP44p\ V4^8Xd\P !RR4#RV9gRVR&\P !RV4#)rFzNo DatarIi<>T)rrrrrN<00>lenr <00>rr"<00> qq_mail_infos&& r<00> get_user_mail<69>config.get_user_maildsc<00><00><1B>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>$<24>2D<32>2D<32>"E<>F<> <0C> <0E>|<7C> <1C><01> !<21><19>,<2C>,<2C>U<EFBFBD>I<EFBFBD>><3E> ><3E><15><1C>%<25>3<EFBFBD>l<EFBFBD>6<EFBFBD>&:<3A><15>(<28>(<28><14>|<7C><<3C><r%c<08>|<00>VPP4pVR8XdO.p\P!VP\
P !V44\P!RR4#.p\P!VP\
P !V44\P!RR4#)<03>dingdingTzEmpty successfully) <09>typer)rr<00>_config__dingding_configrrr rN)rr"rYrs&& r<00> set_empty<74>config.set_emptyls<><00><00> <10>X<EFBFBD>X<EFBFBD>^<5E>^<5E> <1D><04> <0F><1A> <1B><14>C<EFBFBD> <12> <1C> <1C>T<EFBFBD>3<>3<>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><03>_<EFBFBD> E<><19>,<2C>,<2C>T<EFBFBD>3G<33>H<> H<><14>C<EFBFBD> <12> <1C> <1C>T<EFBFBD>/<2F>/<2F><14><1A><1A>C<EFBFBD><1F> A<><19>,<2C>,<2C>T<EFBFBD>3G<33>H<> Hr%c<08><><00>\VR4'g\P!RR4#\P!R4pVP VP 4'g\P!RR4#VP P4VP9g\P!RR4#\VR4'g\P!RR4#\VR 4'g\P!RR
4#\P!\P!VP44p\V4^8Xd\P!RR 4#VPPVP P4VP P4VP"4'd\P!RR 4#\P!RR 4#)r(Fr:r;r<Tz=The mailbox does not exist, please add it to the mailbox list<73>titlezPlease fill in the email title<6C>bodyzPlease enter the email contentzZSTMP information was not found, please re-add custom mail STMP information in the settings<67>Sent successfully<6C>Failed to send)r>rr r?r@rAr(r)rrrrrNrRr rLr^r_)rr"rCrTs&& r<00>user_stmp_mail_send<6E>config.user_stmp_mail_sendysr<00><00><17><03>W<EFBFBD>%<25>%<25>v<EFBFBD>/H<>/H<><15>Pi<50>/j<>(j<><18>j<EFBFBD>j<EFBFBD>!P<>Q<> <0B><1A>!<21>!<21>#<23>)<29>)<29>,<2C>,<2C>V<EFBFBD>5N<35>5N<35>u<EFBFBD>Vu<56>5v<35>.v<><12>y<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD> <20>D<EFBFBD>$4<>$4<>4<>V<EFBFBD>=V<>=V<>W[<5B>^]<02>>^<02>7^<02><17><03>W<EFBFBD>%<25>%<25>v<EFBFBD>/H<>/H<><15>Pp<50>/q<>(q<><17><03>V<EFBFBD>$<24>$<24>f<EFBFBD>.G<>.G<><05>Oo<4F>.p<>'p<><1B>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>$<24>2D<32>2D<32>"E<>F<> <0C> <0E>|<7C> <1C><01> !<21><19>,<2C>,<2C>U<EFBFBD>5Q<02>R<02> R<02> <0F>9<EFBFBD>9<EFBFBD> !<21> !<21>#<23>)<29>)<29>/<2F>/<2F>"3<>S<EFBFBD>Y<EFBFBD>Y<EFBFBD>_<EFBFBD>_<EFBFBD>5F<35><03><08><08> Q<> Q<><19>,<2C>,<2C>T<EFBFBD>3F<33>G<> G<><19>,<2C>,<2C>U<EFBFBD>4D<34>E<> Er%c<08>L<00>\P!4pVP4#r )r <00> get_settings<67>rr"<00>sms&& rre<00>config.get_settings<67><00><00><00> <16> <20> <20> "<22><02><11><EFBFBD><EFBFBD> <20> r%Nc<08>x<00>^RIpVP4pVP4pVPV4pW4R&V#)rN<>telegram)r0<00> get_tg_confre)rr"r0<00>tg<74>confs&& r<00> get_settings2<73>config.get_settings2<73>s<<00><00>!<21> <1F> 2<> 2<> 4<><02> <0F>^<5E>^<5E> <1D><02><13> <20> <20><13>%<25><04><1D>Z<EFBFBD><18><13> r%c<08><><00>\VR4'g*\VR4'g\P!RR4#VPR8XgVPR8Xd RVnMRVnVPP 4pRpVP R4R8wdR pR
p^R IHpV!4p\VR 4'd<VPV4pV'd#VPV4pVR ,'dV#T'g\P!RR4#\P!RT4# \d0p \T 4p\RPT44Rp ? LkRp ? ii;i)<12>url<72>atallFrJ<00>True<75>1<>FalserXz weixin.qq.com<6F>weixin<69><00><01> panelMessage<67>init_msg_module<6C>statusu设置钉钉配置异常: {}Nz.Add failed, please check if the URL is correct<63><74><EFBFBD><EFBFBD><EFBFBD>)r>rr rsrrr)<00>findrzr{<00>
set_config<EFBFBD> Exception<6F>str<74>print<6E>format<61> returnMsg)
rr"<00>push_url<72>channel<65>msgrz<00>pm<70>
msg_module<EFBFBD>_res<65>es
&& r<00> set_dingding<6E>config.set_dingding<6E>s.<00><00><17><03>U<EFBFBD>#<23>#<23>w<EFBFBD>s<EFBFBD>G<EFBFBD>'<<3C>'<<3C><19>,<2C>,<2C>U<EFBFBD>4U<34>V<> V<> <0E>9<EFBFBD>9<EFBFBD>f<EFBFBD> <1C><13><19><19>C<EFBFBD><1E><1E>C<EFBFBD>I<EFBFBD>!<21>c<EFBFBD>i<EFBFBD><16>7<EFBFBD>7<EFBFBD>=<3D>=<3D>?<3F><08><1C><07> <13>=<3D>=<3D><1F> )<29>R<EFBFBD> /<2F><1E>G<EFBFBD><10><03> ><3E> 1<><1D><1E>B<EFBFBD><16>r<EFBFBD>,<2C>-<2D>-<2D><1F>/<2F>/<2F><07>8<>
<EFBFBD><1D>%<25>0<>0<><13>5<>D<EFBFBD><1B>H<EFBFBD>~<7E>~<7E>#<23> <0B><13><19>#<23>#<23>E<EFBFBD>+[<5B>\<5C> \<5C><19>#<23>#<23>E<EFBFBD>3<EFBFBD>/<2F> /<2F><> <19> ><3E><15>a<EFBFBD>&<26>C<EFBFBD> <11>0<>7<>7<><03><<3C> =<3D> =<3D><> ><3E>s$<00>$7D4<00>D4<00><D4<00>4 E.<03>?%E)<03>)E.c<08>L<00>\P!4pVP4#r )r <00> get_dingdingrfs&& rr<><00>config.get_dingding<6E>rir%c<08><><00>\P!\P!VP44p\ V4^8Xd\P !RR4#\VR4'g\P !RR4#VPPVP4'd\P !RR4#\P !RR4#)rFzcThe configuration information of the nails you configured was not found, please add in the settings<67>contentz&Please enter the data you need to sendTr`ra) rrrrrZrRr r>r <00> dingding_sendr<64>rSs&& r<00>user_dingding_send<6E>config.user_dingding_send<6E>s<><00><00><1B>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>$<24>2H<32>2H<32>"I<>J<> <0C> <0E>|<7C> <1C><01> !<21><19>,<2C>,<2C>U<EFBFBD>5Z<02>[<02> [<02><17><03>Y<EFBFBD>'<27>'<27><16>1J<31>1J<31>5<EFBFBD>Rz<52>1{<7B>*{<7B> <0F>9<EFBFBD>9<EFBFBD> "<22> "<22>3<EFBFBD>;<3B>;<3B> /<2F> /<2F><19>,<2C>,<2C>T<EFBFBD>3F<33>G<> G<><19>,<2C>,<2C>U<EFBFBD>4D<34>E<> Er%c<08>b<00>\PPVPR,4#)z/data/close.pl)rrr<00> _setup_pathr!s&&r<00> getPanelState<74>config.getPanelState<74>s!<00><00><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>d<EFBFBD>.<2E>.<2E>/?<3F>?<3F>@<40>@r%c <08><<00>\P!R4PRR 4PR4P 4p\P
!VR,R,VR,,4p\P !VPR,V4Rp\P!W24Rp\PPV4'g\P!VR 4VPV4\P!4p\PP!WE4p\P !V\#\%\&P&!4R
,444\P(!VR 4V\*R&R #)<0E>users<72>id=?zusername,password<72>username<6D>/<2F>passwordz/data/login_token.pl<70> login_tokenzdata/sess_files<65><73><00><>Q<00>600N)<01>)r<00>M<>where<72>fieldr~<00>Md5rr<>r<00>setrrr<00>makedirs<72>clean_sess_files<65> get_sess_key<65>joinr<6E><00>int<6E>time<6D>set_moder)r<00>userInfo<66>token<65>skey<65> sess_path<74>sess_key<65> sess_files& r<00>reload_session<6F>config.reload_session<6F>s<00><00><19>8<EFBFBD>8<EFBFBD>G<EFBFBD>$<24>*<2A>*<2A>6<EFBFBD>$<24>7<>=<3D>=<3D>>Q<>R<>W<>W<>Y<><08><16>
<EFBFBD>
<EFBFBD>8<EFBFBD>J<EFBFBD>/<2F>#<23>5<><08><1A>8L<38>L<>M<><05><0E><18><18><14>)<29>)<29>*@<40>@<40><15>G<><1C><04> <0A> <09> <09>$<24><1D>%<25> <09><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>i<EFBFBD>(<28>(<28> <0E>K<EFBFBD>K<EFBFBD> <09>#<23> &<26> <0C><1D><1D>i<EFBFBD>(<28><19>&<26>&<26>(<28><08><16>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><19>4<> <09><0E><18><18><19>3<EFBFBD>s<EFBFBD>4<EFBFBD>9<EFBFBD>9<EFBFBD>;<3B>u<EFBFBD>+<<3C>'=<3D>#><3E>?<3F><0E><0F><0F> <09>%<25>(<28>!&<26><07> <0A>r%c <0C>.<00>\P!4p\P!V4F<>p\V4^ 8wdK\PP W4p\PP V4'gK\\P!V4pV'g<\PPV4'd\P!V4V\V48<>d\P!V4K<>K<> R# K<>;i)us
@name 清理过期的sess_file
@auther hwliang<2020-07-25>
@param sess_path(string) sess_files目录
@return void
N) r<>r<00>listdirrRrr<><00>isfilerrrr*r<>)rr<><00>s_time<6D>fnamer<65><00>sess_tmps&& rr<><00>config.clean_sess_files<65>s<><00><00><16><19><19><1B><06><17>Z<EFBFBD>Z<EFBFBD> <09>*<2A>E<EFBFBD> <15><16>u<EFBFBD>:<3A><12>#<23>X<EFBFBD><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><19>9<> <09><19>w<EFBFBD>w<EFBFBD>~<7E>~<7E>i<EFBFBD>0<>0<>(<28>!<21>?<3F>?<3F>9<EFBFBD>5<><08><1F><19>w<EFBFBD>w<EFBFBD>~<7E>~<7E>i<EFBFBD>0<>0<><1A> <09> <09>)<29>,<2C><19>C<EFBFBD><08>M<EFBFBD>)<29><16>I<EFBFBD>I<EFBFBD>i<EFBFBD>(<28>*<2A>+<2B><> <15><14>s$<00>D<02>AD<02>D<02>&$D<02> <D<02>Dc <0C>:<00>\P!4R,#)uT
@name 获取密码复杂度配置文件
@auther hwliang<2021-10-18>
@return string
z/data/check_password_safe.pl<70>r<00>get_panel_path<74>rs&r<00>get_password_safe_file<6C>config.get_password_safe_file<6C>s<00><00> <16>$<24>$<24>&<26>)G<>G<>Gr%c <0C><><00>VP4p\PPV4'gR#\ V4^8dR#^p\
P !RV4'd
V^, p\
P !RV4'd
V^, p\
P !RV4'd
V^, p\
P !RV4'd
V^, pV^8dR#R#)ue
@name 密码复杂度验证
@auther hwliang<2021-10-18>
@param password(string) 密码
@return bool
TFz[0-9]+z[a-z]+z[A-Z]+z[^\w\s]+)r<>rrrrRr?rA)rr<><00> is_check_file<6C>nums&& r<00>check_password_safe<66>config.check_password_safe<66>s<><00><00><1D>3<>3<>5<> <0A><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C>,<2C>T<EFBFBD> <0F>x<EFBFBD>=<3D>1<EFBFBD> <1C>U<EFBFBD><0F><03> <0A>9<EFBFBD>9<EFBFBD>Y<EFBFBD>x<EFBFBD> (<28> (<28>#<23><11>(<28>#<23> <0A>9<EFBFBD>9<EFBFBD>Y<EFBFBD>x<EFBFBD> (<28> (<28>#<23><11>(<28>#<23> <0A>9<EFBFBD>9<EFBFBD>Y<EFBFBD>x<EFBFBD> (<28> (<28>#<23><11>(<28>#<23> <0A>9<EFBFBD>9<EFBFBD>[<5B><18> *<2A> *<2A>C<EFBFBD>1<EFBFBD>H<EFBFBD>C<EFBFBD> <0E><11>7<EFBFBD>5<EFBFBD>r%c <0C>~<00>VP4p\PPV4'dE\P!V4\
P !RR4\
P!RR4#\
P!VR4\
P !RR4\
P!RR4#)u`
@name 设置密码复杂度
@auther hwliang<2021-10-18>
@param get(string) 参数
@return dict
<EFBFBD>
TYPE_PANELz(Disable password complexity verificationTz,Password complexity verification is disabledrtz'Enable password complexity verificationz1Password complexity verification has been enabled) r<>rrrr*r<00>WriteLogr<67>r<00>rr"r<>s&& r<00>set_password_safe<66>config.set_password_safes<><00><00><1D>3<>3<>5<> <0A> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>-<2D> (<28> (<28> <0E>I<EFBFBD>I<EFBFBD>m<EFBFBD> $<24> <12>O<EFBFBD>O<EFBFBD>L<EFBFBD>)S<> T<><19>#<23>#<23>D<EFBFBD>)W<>X<> X<> <12> <1C> <1C>]<5D>6<EFBFBD> 2<> <12>O<EFBFBD>O<EFBFBD>L<EFBFBD>)R<> S<><19>#<23>#<23>D<EFBFBD>)\<5C>]<5D> ]r%c <0C>`<00>VP4p\PPV4#)u`
@name 获取密码复杂度
@auther hwliang<2021-10-18>
@param get(string) 参数
@return bool
)r<>rrrr<>s&& r<00>get_password_safe<66>config.get_password_safe#s%<00><00><1D>3<>3<>5<> <0A><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C>,r%c <0C>:<00>\P!4R,#)uQ
@name 获取密码过期配置文件
@auther hwliang<2021-10-18>
@return string
z/data/password_expire.plr<6C>r<>s&r<00>get_password_expire_file<6C>config.get_password_expire_file.s<00><00> <16>$<24>$<24>&<26>)C<>C<>Cr%c  <0C><><00>\VP4pVP4pV^8:dj\PP V4'd\P !V4\P!RR4\P!RR4#^
pR pW$8d'\P!RRPV44#W%8<>d'\P!RRPV44#\P!VP4\V44V^8<>dg\P!4R,p\P!V\\\P!44VR ,,44\P!RR
PV44\P!RR PV44#) u<>
@name 设置密码过期时间
@auther hwliang<2021-10-18>
@param get<dict_obj>{
expire: int<密码过期时间> 单位:天,
}
@return dict
r<EFBFBD>z*Disable password expiration authenticationTz.Password expiration authentication is disabledFz:The password expiration period cannot be less than {} daysz<The password expiration period cannot be longer than {} days<79>/data/password_expire_time.plr<6C>z-Set the password expiration time to [{}] daysz0The password expiration time is set to [{}] daysi!)r<><00>expirer<65>rrrr*rr<>r<>r<>rr<>r<>r<>)rr"r<><00> expire_file<6C>
min_expire<EFBFBD>
max_expire<EFBFBD>expire_time_files&& r<00>set_password_expire<72>config.set_password_expire7s<><00><00><15>S<EFBFBD>Z<EFBFBD>Z<EFBFBD><1F><06><1A>3<>3<>5<> <0B> <11>Q<EFBFBD>;<3B><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>k<EFBFBD>*<2A>*<2A><12> <09> <09>+<2B>&<26> <12>O<EFBFBD>O<EFBFBD>L<EFBFBD>)U<> V<><19>#<23>#<23>D<EFBFBD>)Y<>Z<> Z<><17>
<EFBFBD><1C>
<EFBFBD> <11> <1E>v<EFBFBD>'7<>'7<><05>>z<>?B<02>?B<02>CM<02>?N<02>(O<02>!O<02> <11> <1E>v<EFBFBD>'7<>'7<><05>>|<7C>?D<02>?D<02>EO<02>?P<02>(Q<02>!Q<02><0E><18><18><14>6<>6<>8<><13>V<EFBFBD><1B>E<> <11>A<EFBFBD>:<3A>%<25>4<>4<>6<>9X<39>X<> <1C> <12> <1C> <1C>-<2D>c<EFBFBD>#<23>d<EFBFBD>i<EFBFBD>i<EFBFBD>k<EFBFBD>2B<32>f<EFBFBD>u<EFBFBD>n<EFBFBD>2U<32>.V<> W<><0E><0F><0F> <0C>%T<>%[<5B>%[<5B>\b<>%c<>d<><15><1F><1F><04>%W<>%^<5E>%^<5E>_e<5F>%f<>g<>gr%c<08><><00>\P!RR4VP4\P!4R,p\P
P V4'd\P!V4VPR4\P!RR4'd
R\R&\P!RR4#)zChange Passwordz Successfully used last password!r<>N<>password_expireFTzPassword changed!) r<00>add_security_logsr<73>r<>rrrr*<00>get_password_configrr"r<><00>rr"r<>s&& r<00>setlastPassword<72>config.setlastPasswordUs<><00><00><0E> <20> <20>!2<>4V<34>W<> <0C><1B><1B><1D>!<21>0<>0<>2<>5T<35>T<><18> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>*<2A> +<2B> +<2B>R<EFBFBD>Y<EFBFBD>Y<EFBFBD>7G<37>-H<> <0C> <20> <20><14>&<26> <12>;<3B>;<3B>(<28>%<25> 0<> 0<>).<2E>G<EFBFBD>%<25> &<26><15><1F><1F><04>&9<>:<3A>:r%c  <0C><><00>VP4p^p^p\PPV4'd<>\P
!V4p\ V4p\P!4R,p\PPT4'gRT^8<>dK\P!T\\ \P!44TR,,44\P
!T4pT'd \ T4pM^p/pW6R&WFR&VPV4VR&RVR&VR,'d<>\ V\P!4,
R, 4VR&VR,^
8d4VR,^8:dR VR&V#R
PVR,4VR&V#R PVR,4VR&V# ^pEL<>;i) u<>
@name 获取密码配置
@auther hwliang<2021-10-18>
@param get<dict_obj> 参数
@return dict{expire:int,expire_time:int,password_safe:bool}
r<EFBFBD>r<>r<><00> expire_time<6D> password_safezgPassword expiration configuration is not enabled. For your panel security, please consider enabling it!<21>ps<70>
expire_dayziYour password has expired. In case you fail to log in next time, please change your password immediately.z<>Your panel password will expire in <span style='color:red;'>{}</span> days, in order not to affect your normal login, please change the password as soon as possible!zRYour panel password has <span style='color:green;'>{}</span> days left to expire!) r<>rrrr<00>readFiler<65>r<>rr<>r<>r<>r<>)rr"r<>r<>r<>r<><00>datas&& rr<><00>config.get_password_config`s<><00><00><1B>3<>3<>5<> <0B><12><06><15> <0B> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>+<2B> &<26> &<26><1B>_<EFBFBD>_<EFBFBD>[<5B>1<>F<EFBFBD> <1B><1C>V<EFBFBD><1B><06>
&<26>4<>4<>6<>9X<39>X<> <1C><15>7<EFBFBD>7<EFBFBD>><3E>><3E>"2<>3<>3<><06><11>
<EFBFBD><16> <20> <20>!1<>#<23>c<EFBFBD>$<24>)<29>)<29>+<2B>6F<36>&<26>SX<53>.<2E>6Y<36>2Z<32>[<5B> <20>/<2F>/<2F>*:<3A>;<3B>K<EFBFBD><1A>!<21>+<2B>.<2E> <0B><1F> <0B><11><04><1F>X<EFBFBD><0E>)<29>]<5D><1B> $<24> 6<> 6<>s<EFBFBD> ;<3B><04>_<EFBFBD><1D>~<7E><04>T<EFBFBD>
<EFBFBD> <0F> <0A> <1E> <1E>!$<24>k<EFBFBD>D<EFBFBD>I<EFBFBD>I<EFBFBD>K<EFBFBD>&?<3F>5<EFBFBD>%H<>!I<>D<EFBFBD><1C> <1E><13>L<EFBFBD>!<21>B<EFBFBD>&<26><17> <0C>%<25><11>*<2A>"M<02>D<EFBFBD><14>J<EFBFBD>
<14> <0B>"I<03>"P<03>"P<03>QU<03>Vb<03>Qc<03>"d<03>D<EFBFBD><14>J<EFBFBD><14> <0B>r<01>x<>x<>y}<7D>K<02>zL<02>M<02><04>T<EFBFBD>
<EFBFBD><13> <0B><>9 <1B><1A><06>s <00> G<00>G c <08><><00>\P!\P!VP44Vn\P!\P!VP44VnVPVP8wd\P
!RR4#\ VP4^8d\P
!RR4#VPVP4'g\P!RR4#\P!R4PR\R,34PR\P!\P!VPP44\R,R74\P !R R
\R,34VP#4\P$!4R ,p\&P(P+V4'd\&P,!V4VP/R 4\P0!R R4'd
R\R &\P
!RR4#)Fz?The passwords entered twice are inconsistent, please try again!z*Password cannot be less than 5 characters!z<>The password must be at least eight characters in length and contain at least three combinations of digits, uppercase letters, lowercase letters, and special charactersr<73><00>
username=?r<>r<><00>r<><00>Panel configurationz.Successfully modified password for user [{0}]!r<>Nr<4E>Tr=)r<00>
url_decode<EFBFBD> rsa_decrypt<70> password1<64> password2r rRr<>r<>r<>r<>r<00>setField<6C> password_salt<6C>md5r)<00>write_log_gettextr<74>r<>rrrr*r<>r"r<>s&& r<00> setPassword<72>config.setPassword<72>s<><00><00><1E>)<29>)<29>&<26>*<<3C>*<<3C>S<EFBFBD>]<5D>]<5D>*K<>L<><03> <0A><1E>)<29>)<29>&<26>*<<3C>*<<3C>S<EFBFBD>]<5D>]<5D>*K<>L<><03> <0A> <0E>=<3D>=<3D>C<EFBFBD>M<EFBFBD>M<EFBFBD> )<29>&<26>2K<32>2K<32>E<EFBFBD>ST<02>3U<02>,U<02> <0E>s<EFBFBD>}<7D>}<7D> <1D><01> !<21>&<26>*C<>*C<>E<EFBFBD>Jv<4A>*w<>#w<><13>'<27>'<27><03> <0A> <0A>6<>6<>v<EFBFBD>?O<>?O<>PU<50>WA<04>@B<04>9B<04><0E><08><08><17><19><1F><1F> <0C>g<EFBFBD>j<EFBFBD>.A<>-C<>D<>M<>M<>j<EFBFBD>Y_<59>Ym<59>Ym<59>nt<6E>nx<6E>nx<6E>y|<7C>zG<02>zG<02>zM<02>zM<02>zO<02>oP<02>Za<02>bl<02>Zm<02>Zn<02> o<02><0E> <20> <20>!6<>7g<37>ip<69>q{<7B>i|<7C>h~<7E><> <0C><1B><1B><1D>"<22>0<>0<>2<>5T<35>T<><18> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>*<2A> +<2B> +<2B>R<EFBFBD>Y<EFBFBD>Y<EFBFBD>7G<37>-H<> <0C> <20> <20><14>&<26> <12>;<3B>;<3B>(<28><15> /<2F> /<2F>).<2E>G<EFBFBD>%<25> &<26><15>(<28>(<28><14>.C<>D<>Dr%c<08>2<00>\P!\P!VP44Vn\P!\P!VP44VnVPVP8wd\P
!RR4#\ VP4^8d\P
!RR4#\P!R4PR\R,34PRVPP44\P!RR\R,VP34VP\R&VP4\P
!RR 4#)
Fz?The usernames entered twice are inconsistent, plesea try again!z)Username cannot be less than 3 charactersr<73>r<>r<>r<>z&Username is modified from [{}] to [{}]Tr=)rr<>r<><00> username1<65> username2r rRr<>r<>rr<>r)r<>r<>r!s&&r<00> setUsername<6D>config.setUsername<6D>s7<00><00><1E>)<29>)<29>&<26>*<<3C>*<<3C>S<EFBFBD>]<5D>]<5D>*K<>L<><03> <0A><1E>)<29>)<29>&<26>*<<3C>*<<3C>S<EFBFBD>]<5D>]<5D>*K<>L<><03> <0A> <0E>=<3D>=<3D>C<EFBFBD>M<EFBFBD>M<EFBFBD> )<29>&<26>2K<32>2K<32>E<EFBFBD>ST<02>3U<02>,U<02> <0E>s<EFBFBD>}<7D>}<7D> <1D><01> !<21>&<26>*C<>*C<>E<EFBFBD>Ju<4A>*v<>#v<><0E><08><08><17><19><1F><1F> <0C>g<EFBFBD>j<EFBFBD>.A<>-C<>D<>M<>M<>j<EFBFBD>Y\<5C>Yf<59>Yf<59>Yl<59>Yl<59>Yn<59>o<><0E> <20> <20>!6<>7_<37>ah<61>is<69>at<61>ux<75>vC<02>vC<02>aD<02> E<02>!<21>m<EFBFBD>m<EFBFBD><07>
<EFBFBD><1B> <0C><1B><1B><1D><15>(<28>(<28><14>.C<>D<>Dr%c<08>l<00>\P!R4PR4P4pV#)r<>z id,username)rr<>r<><00>select)r<00>argsr<73>s&& r<00> get_users<72>config.get_users<72>s)<00><00><15>x<EFBFBD>x<EFBFBD><07> <20>&<26>&<26>}<7D>5<><<3C><<3C>><3E><04><13> r%c <08>R<00>\P!VP4Vn\P!VP4Vn\R,^8wd\P
!RR4#\ VP4^8d\P
!RR4#\ VP4^8d\P
!RR4#RVPP4R\P!\P!VPP44VPP4R7/p\P!R4PR VR,34P4'd\P
!RR
4#\P!R4PV4'dA\P!R R VR,34\P
!R RVR,34#\P
!RR4#)<10>uidF<64>Permission denied!<21>'User name must be at least 2 characters<72>&Password must be at least 8 charactersr<73>r<>r<>r<>r<>z&The specified username already exists!<21>User ManagementzCreate new user {}TzCreate new user {} success!zCreate new user failed!)rr<>r<>r<>rr rRr)r<>r<>r<>r<><00>count<6E>insertr<74>)rr<00>pdatas&& r<00> create_user<65>config.create_user<65>s<><00><00><1E>)<29>)<29>$<24>-<2D>-<2D>8<><04> <0A><1E>)<29>)<29>$<24>-<2D>-<2D>8<><04> <0A> <12>5<EFBFBD>><3E>Q<EFBFBD> <1E>v<EFBFBD>'@<40>'@<40><15>G[<5B>'\<5C> \<5C> <0E>t<EFBFBD>}<7D>}<7D> <1D><01> !<21>&<26>*C<>*C<>E<EFBFBD>Js<4A>*t<>#t<> <0E>t<EFBFBD>}<7D>}<7D> <1D><01> !<21>&<26>*C<>*C<>E<EFBFBD>Jr<4A>*s<>#s<> <16><04> <0A> <0A>+<2B>+<2B>-<2D> <16><06>,<2C>,<2C>V<EFBFBD>Z<EFBFBD>Z<EFBFBD><04> <0A> <0A>8K<38>8K<38>8M<38>-N<>X\<5C>Xe<58>Xe<58>Xk<58>Xk<58>Xm<58>n<>
<EFBFBD><05>
<12>8<EFBFBD>8<EFBFBD>G<EFBFBD> <1C> "<22> "<22><<3C><15>z<EFBFBD>1B<31>0D<30> E<> K<> K<> M<> M<><19>,<2C>,<2C>U<EFBFBD>3[<5B>\<5C> \<5C> <11>8<EFBFBD>8<EFBFBD>G<EFBFBD> <1C> #<23> #<23>E<EFBFBD> *<2A> *<2A> <12> $<24> $<24>%6<>7K<37>U<EFBFBD>S]<5D>M^<5E>L`<60> a<><19>,<2C>,<2C>T<EFBFBD>2O<32>QV<51>Wa<57>Qb<51>Pd<50>e<> e<><15>(<28>(<28><15>/H<>I<>Ir%c<08><><00>\R,^8wd\P!RR4#\VP4^8Xd\P!RR4#\P
!R4P RVP34PR4pV'g\P!RR4#\P
!R4P RVP34P4'd2\P!RR V4\P!R
R V34#\P!RR 4#) rFr z#Cannot delete initial default user!r<>r<>r<>z"The specified username not exists!r zDelete users [{}]TzDelete user {} success!zUser deletion failed!)
rrr r<><00>idr<64>r<><00>getField<6C>deleter<65>)rrr<>s&& r<00> remove_user<65>config.remove_user<65>s<><00><00> <12>5<EFBFBD>><3E>Q<EFBFBD> <1E>v<EFBFBD>'@<40>'@<40><15>G[<5B>'\<5C> \<5C> <0E>t<EFBFBD>w<EFBFBD>w<EFBFBD><<3C>1<EFBFBD> <1C>V<EFBFBD>%><3E>%><3E>u<EFBFBD>Ej<45>%k<>k<><19>8<EFBFBD>8<EFBFBD>G<EFBFBD>$<24>*<2A>*<2A>6<EFBFBD>4<EFBFBD>7<EFBFBD>7<EFBFBD>*<2A>=<3D>F<>F<>z<EFBFBD>R<><08><17><06> 9<> 9<>%<25>@d<> e<>e<> <11>8<EFBFBD>8<EFBFBD>G<EFBFBD> <1C> "<22> "<22>6<EFBFBD>4<EFBFBD>7<EFBFBD>7<EFBFBD>*<2A> 5<> <<3C> <<3C> ><3E> ><3E> <12> $<24> $<24>%6<>7J<37>H<EFBFBD> V<><19>,<2C>,<2C>T<EFBFBD>2K<32>X<EFBFBD>K<EFBFBD>X<> X<><15>(<28>(<28><15>/F<>G<>Gr%c<08>R<00>\R,^8wd\P!RR4#\P!R4P RVP
34P R4p/pRV9dt\P!VP4Vn\VP4^8d\P!RR4#VPP4VR&RV9d<>VP'd<>\P!VP4Vn \VP4^8d\P!RR4#\P!\P!VPP44VR 7VR&\P!R4P RVP
34PV4'd1\P!R
R V34\P!R R 4#\P!RR4#)rFr r<>r<>r<>r
r<>r r<>r z Edit user {}Tr=zNo changes submitted)rrr r<>r<>rrr<>r<>rRr)r<>r<>r<><00>updater<65>)rrr<>rs&& r<00> modify_user<65>config.modify_user<65>s<><00><00> <12>5<EFBFBD>><3E>Q<EFBFBD> <1E>v<EFBFBD>'@<40>'@<40><15>G[<5B>'\<5C> \<5C><19>8<EFBFBD>8<EFBFBD>G<EFBFBD>$<24>*<2A>*<2A>6<EFBFBD>4<EFBFBD>7<EFBFBD>7<EFBFBD>*<2A>=<3D>F<>F<>z<EFBFBD>R<><08><12><05> <15><14> <1D>"<22>-<2D>-<2D>d<EFBFBD>m<EFBFBD>m<EFBFBD><<3C>D<EFBFBD>M<EFBFBD><12>4<EFBFBD>=<3D>=<3D>!<21>A<EFBFBD>%<25>f<EFBFBD>.G<>.G<><05>Nw<4E>.x<>'x<> $<24> <0A> <0A> 3<> 3<> 5<>E<EFBFBD>*<2A> <1D> <15><14> <1D><13>}<7D>}<7D>}<7D> &<26> 1<> 1<>$<24>-<2D>-<2D> @<40><04> <0A><16>t<EFBFBD>}<7D>}<7D>%<25><01>)<29>&<26>2K<32>2K<32>E<EFBFBD>Rz<52>2{<7B>+{<7B>$*<2A>$8<>$8<><16><1A><1A>D<EFBFBD>M<EFBFBD>M<EFBFBD>DW<44>DW<44>DY<44>9Z<39>dl<64>$m<><05>j<EFBFBD>!<21> <11>8<EFBFBD>8<EFBFBD>G<EFBFBD> <1C> "<22> "<22>6<EFBFBD>4<EFBFBD>7<EFBFBD>7<EFBFBD>*<2A> 5<> <<3C> <<3C>U<EFBFBD> C<> C<> <12> $<24> $<24>%6<>~<7E>x<EFBFBD>k<EFBFBD> R<><19>,<2C>,<2C>T<EFBFBD>2G<32>H<> H<><15>(<28>(<28><15>/E<>F<>Fr%c <08><><00>\P!4'g\P!RR4#RV9d8VPP R4R:8wd\P!RR4#RpRpRV9d<>\ VP 4p\P!T4pT'gRp\ T4T8wdHTR 8gTR
8<EFBFBD>d\P!RR 4#\P!T\T44R pR pRV9d<>\ VP4p\ \P!V44V8wd\V^8gVR8<>d,\P!R\P!R44#\P!V\V44R pVP'd~\P!RVP4'd\P!RR4#Rp\P!W<>P4'g\P!RR4#VP 'db^RIHp Hp
V PVP 4'g9V
PVP 4'g\P!RR4#\P(!R 4p RV9gW<>nVP*p W<>P*8wEdh\\ VP*44VnVP-VP*4'd$\P!RRVP*34#\ VP*4R8<>g\ VP*4^d8d\P!RR4#\P!RVP*4^RIp \P!R4VnV P/4pVP3V4W<>n\P4!R4P7RV 34P9R 4VnVP=V4R pVP>\@R!,8wd]\PB!VP>4\@R!&\PD!R!\PB!VP>44\P!R"4pVPV8wd9\P!R"VP4\FPH!R#.4\P!R$\PB!VP4PK44\P!R%VP 4^RI&pVPM4pVPOVPP4'g\P!RR&4#VPOVPR4'g\P!RR'4#\P4!R(4P7R)R;4PUR*VPPVPR34\VPXP[RVPP4\@R(,R+&\VPXP[RVPR4\@R(,R,&VPPR-,p\VPXP]V4'g\VP^!VR.4VPPR0,p\VPXP]V4'g\VP^!VR.4\P(!4pVPPK4'd VPpR1\bPXR2VR3,V ,R4R R5VR6\P!R74/p\Pd!R8R9W<39>PVPPVPRVP VP34V'd\Pf!4V# \P!RR4u#;i \P`!R/T,4EL{;i \P`!R/T,4ELP;i \Ph!\Pj!44R#;i)<F<>7Please run the program when all install tasks finished!<21>limitipr<70>zVThe authorized IP format is incorrect, and the subnet segment writing is not supportedzdata/session_timeout.pl<70>session_timeoutzTimeout must be an integer!<21>0i,r<>z.The timeout time needs to be between 300-86400Tzdata/workers.pl<70>workersiz4The number of panel threads should be between 1-1024z$^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$zDomain cannot bind ip addressz7^([\w\-\*]{1,100}\.){1,4}(\w{1,10}|\w{1,10}\.\w{1,10})$z%Format of primary domain is incorrect)<02>
match_ipv4<EFBFBD>
match_ipv6z Please set the correct Server IPrIzPort [{}] is in use!<21><><EFBFBD><00>4Port range is incorrect! should be between 100-65535z data/port.plNzNew panel port<72>firewallzport=?rr^zdata/limitip.conf<6E>limit_ipzdata/domain.confzdata/iplist.txtz@Cannot use system critical directory as default backup directoryz>Cannot use system critical directory as default site directoryr r<>zbackup_path,sites_path<74> backup_path<74>
sites_pathz /databaser<65>z mkdir -p z/site<74>uri<72>host<73>:r|<00>isReWebr<62><00>Savedr<64>z<>Set panel port [{}], domain [{}], default backup directory [{}], default site directory [{}], server IP [{}], authorized IP [{}]!r}<00>ru)6r<00> IsRestartr rr~r<>rr<>r<>rr<>r!rM<00>domainr?<00>match<63>address<73>public.regexplibr"r#<00>GetHostrI<00>IsOpen<65> firewallsr<73><00> AddAcceptPortr<74>r<>rr<00> DelAcceptPort<72>webnamer<00>
xssencode2<EFBFBD>SetConfigValuerr<>r)<00>files<65>CheckDirr(r)<00>saverrr<>rr<><00> ExecShellrr<><00> restart_panel<65> print_log<6F>get_error_info)rr"r-<00> sess_out_pathr<00>
s_time_tmp<EFBFBD> workers_pr!<00>regr"r#<00>oldPort<72>newPortr7<00>fwrr=<00>fs<66> db_backup<75> site_backup<75>mhostr<74>s&& r<00>setPanel<65>config.setPanel<65>s <00><00>_ 6<><19>#<23>#<23>%<25>%<25>f<EFBFBD>.G<>.G<><05>OH<02>/I<02>(I<02><18>C<EFBFBD><1F><16>;<3B>;<3B>#<23>#<23>C<EFBFBD>(<28>B<EFBFBD>.<2E>!<21>4<>4<>U<EFBFBD><T<02>U<02>U<02><1B>G<EFBFBD>5<>M<EFBFBD> <20>C<EFBFBD>'<27>Q<01>&)<29>#<23>*=<3D>*=<3D>&><3E>O<EFBFBD>$<24>_<EFBFBD>_<EFBFBD>]<5D>;<3B>
<EFBFBD>!<21><03>:<3A><16>z<EFBFBD>?<3F>o<EFBFBD>5<>&<26><13>,<2C><0F>%<25>0G<30>PV<50>Pi<50>Pi<50>jo<6A>qa<02>Qb<02>Jb<02><1A>$<24>$<24>]<5D>3<EFBFBD><EFBFBD>3G<33>H<>"<22>G<EFBFBD>*<2A>I<EFBFBD><18>C<EFBFBD><1F><1D>c<EFBFBD>k<EFBFBD>k<EFBFBD>*<2A><07><16>v<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>1<>2<>g<EFBFBD>=<3D><1E><11>{<7B>g<EFBFBD><04>n<EFBFBD>V<EFBFBD>=V<>=V<>W\<5C>]c<>]h<>]h<>j`<02>^a<02>>b<02>7b<02><1A>$<24>$<24>Y<EFBFBD>s<EFBFBD>7<EFBFBD>|<7C><<3C>"<22>G<EFBFBD><12>z<EFBFBD>z<EFBFBD>z<EFBFBD><15>8<EFBFBD>8<EFBFBD>C<>S<EFBFBD>Z<EFBFBD>Z<EFBFBD>P<>P<>Y_<59>Yr<59>Yr<59>sx<73>{Z<02>Z[<02>S[<02>P<><03><19>x<EFBFBD>x<EFBFBD><03>Z<EFBFBD>Z<EFBFBD>0<>0<><16>9R<39>9R<39>SX<53>ZA<02>:B<02>3B<02><12>{<7B>{<7B>{<7B>C<>!<21>'<27>'<27><03> <0B> <0B>4<>4<>Z<EFBFBD>=M<>=M<>c<EFBFBD>k<EFBFBD>k<EFBFBD>=Z<>=Z<>!<21>4<>4<>U<EFBFBD><^<5E>_<>_<><1C>n<EFBFBD>n<EFBFBD>T<EFBFBD>*<2A>G<EFBFBD><19>S<EFBFBD>=<3D>"<22><08><19>h<EFBFBD>h<EFBFBD>G<EFBFBD><16>(<28>(<28>"<22><1E>s<EFBFBD>3<EFBFBD>8<EFBFBD>8<EFBFBD>}<7D>-<2D><03><08><17>;<3B>;<3B>s<EFBFBD>x<EFBFBD>x<EFBFBD>(<28>(<28>!<21>4<>4<>U<EFBFBD>;Q<>SV<53>S[<5B>S[<5B>R]<5D>^<5E>^<5E><16>s<EFBFBD>x<EFBFBD>x<EFBFBD>=<3D>E<EFBFBD>)<29>c<EFBFBD>#<23>(<28>(<28>m<EFBFBD>c<EFBFBD>.A<>&<26>Jc<4A>Jc<4A>di<64>ka<02>Kb<02>Db<02><16> <20> <20><1E><03><08><08>9<> <20><1F><1B><1B>%5<>6<><03><06><1E>(<28>(<28>*<2A><02><12> <20> <20><13>%<25>"<22><08><1F><18><18>*<2A>-<2D>3<>3<>H<EFBFBD>g<EFBFBD>Z<EFBFBD>H<>Q<>Q<>RV<52>W<><03><06><12> <20> <20><13>%<25><1E><07><12>{<7B>{<7B>g<EFBFBD>g<EFBFBD>.<2E>.<2E>#)<29>#4<>#4<>S<EFBFBD>[<5B>[<5B>#A<><07><07> <20><16>%<25>%<25>g<EFBFBD>f<EFBFBD>.?<3F>.?<3F><03> <0B> <0B>.L<>M<><1C>o<EFBFBD>o<EFBFBD>&9<>:<3A>G<EFBFBD><12>{<7B>{<7B>g<EFBFBD>%<25><16> <20> <20>!4<>S<EFBFBD>[<5B>[<5B>A<><15> <09> <09>*<2A>R<EFBFBD>(<28> <12> <1C> <1C>/<2F><06>0A<30>0A<30>#<23>*<2A>*<2A>0M<30>0S<30>0S<30>0U<30> V<> <12> <1C> <1C>.<2E>s<EFBFBD>{<7B>{<7B> ;<3B> <18><16><1B><1B><1D>B<EFBFBD><15>;<3B>;<3B>s<EFBFBD><EFBFBD><EFBFBD>/<2F>/<2F><06>8H<38>8H<38><15>PR<02>9S<02>2S<02><15>;<3B>;<3B>s<EFBFBD>~<7E>~<7E>.<2E>.<2E>v<EFBFBD>7G<37>7G<37><05>OO<02>8P<02>1P<02> <12>H<EFBFBD>H<EFBFBD>X<EFBFBD> <1E> $<24> $<24>V<EFBFBD>F<EFBFBD> 3<> 8<> 8<>9Q<39>SV<53>Sb<53>Sb<53>cf<63>cq<63>cq<63>Rr<52> s<>/1<>w<EFBFBD>w<EFBFBD>|<7C>|<7C>C<EFBFBD><03><0F><0F>/P<>G<EFBFBD>H<EFBFBD> <1D>m<EFBFBD> ,<2C>.0<EFBFBD>g<EFBFBD>g<EFBFBD>l<EFBFBD>l<EFBFBD>3<EFBFBD>s<EFBFBD>~<7E>~<7E>.N<>G<EFBFBD>H<EFBFBD> <1D>l<EFBFBD> +<2B><1C><1F><1F>;<3B>6<>I<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>)<29>,<2C>,<2C>><3E><16>K<EFBFBD>K<EFBFBD> <09>#<23>.<2E><1F>?<3F>?<3F>W<EFBFBD>4<>K<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>+<2B>.<2E>.<2E>@<01><16>K<EFBFBD>K<EFBFBD> <0B>C<EFBFBD>0<><1B>N<EFBFBD>N<EFBFBD>$<24>E<EFBFBD><12>z<EFBFBD>z<EFBFBD><1F><1F>!<21>!<21>3<EFBFBD>:<3A>:<3A>5<EFBFBD><19>'<27>,<2C>,<2C>v<EFBFBD>e<EFBFBD>C<EFBFBD>i<EFBFBD><07>.?<3F><08><14>i<EFBFBD>X_<58>`e<>fl<66>fq<66>fq<66>ry<72>fz<66>{<7B>D<EFBFBD> <12> $<24> $<24>%:<3A><<02>AH<03>IS<03>IS<03>TW<03>Tc<03>Tc<03>dg<03>dr<03>dr<03>sv<03>s~<03>s~<03>B<04>J<04>J<04>@K<04> L<04><16><06>,<2C>,<2C>.<2E><17>K<EFBFBD><4B>gQ<01>!<21>+<2B>+<2B>E<EFBFBD>2O<32>P<>P<><50>H><3E><1A>$<24>$<24>[<5B>9<EFBFBD>%<<3C>=<3D><>
@<01><1A>$<24>$<24>[<5B>;<3B>%><3E>?<3F><> 6<> <12> <1C> <1C>V<EFBFBD>2<>2<>4<> 5<>s<EFBFBD><00>b><00>b><00>=b><00>2 b><00>>a<00>b><00>16b><00>(Bb><00>3b><00>9&b><00> b><00>7>b><00>6b><00>(b><00>1 b><00>b><00>)B&b><00>A
b><00>H$b><00>b><00> b><00>8b><00>C4b><00>a4<00>7b><00>b<00>+4b><00> B5b><00>a1<03>/b><00>1b><00>4b<03>b><00>b;<03>8b><00>>+c,c<08><00>\P!VPP44P4Vn\ VP4^8d\P
!RR4#VP\ 9d\P
!RR4#\P!VP4'dVPR ,R8Xd\P!RR4#VP^,R8wd\P
!RR4#VPPR4R 8wd\P
!RR4#RpRp\PPV4'd%\P!V4P4pVPV8wd6\P!W!P4\P!4\P
!R R
4#) <0C>Fz3Security Entrance cannot be less than 6 characters!zGThis entrance has been used by the panel, please set another entrances!<21>.z4Entrance address format is incorrect, e.g. /my_panelr<6C>z//zdata/admin_path.plTr=r})rr<><00>
admin_pathr)rRr r<00>path_safe_checkr<6B>r~rrrr<>rrA)rr"<00>admin_path_filerTs&& r<00>set_admin_path<74>config.set_admin_pathFs<><00><00><1F>+<2B>+<2B>C<EFBFBD>N<EFBFBD>N<EFBFBD>,@<40>,@<40>,B<>C<>I<>I<>K<><03><0E> <0E>s<EFBFBD>~<7E>~<7E> <1E><11> "<22>6<EFBFBD>+D<>+D<>U<EFBFBD>LA<02>,B<02>%B<02> <0E>><3E>><3E>.<2E> .<2E>v<EFBFBD>7P<37>7P<37>QV<51>Xa<02>8b<02>1b<02><15>%<25>%<25>c<EFBFBD>n<EFBFBD>n<EFBFBD>5<>5<><13><1E><1E><02>9K<39>s<EFBFBD>9R<39>\b<>\l<>\l<>mr<6D>tj<02>]k<02>Vk<02> <0E>><3E>><3E>!<21> <1C><03> #<23>F<EFBFBD>,E<>,E<>e<EFBFBD>MC<02>-D<02>&D<02> <0E>><3E>><3E> <1E> <1E>t<EFBFBD> $<24><02> *<2A><19>,<2C>,<2C>U<EFBFBD>4j<34>k<> k<>.<2E><0F><18>
<EFBFBD> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>/<2F> *<2A> *<2A><16><1F><1F><1F>9Y<39>9_<39>9_<39>9a<39>J<EFBFBD> <0E>><3E>><3E>Z<EFBFBD> '<27> <12> <1C> <1C>_<EFBFBD>^<5E>^<5E> <<3C> <12> <20> <20> "<22><15>(<28>(<28><14>/D<>E<>Er%c<08>R<00>VPpVPp\P!4R8Xd<>\P!R4R,V,R,p\P
!V4pRpVR8Xd\ P!VRV4pM\ P!VRV4p\P!WE4\P!4\P!R4R,V,R ,p\P
!V4pR
pR pVR8XdR p\ P!VR V,R,V4p\P!WE4\P!RRW#34\P!V4\P!RR4#)<13>nginx<6E>
setup_pathz/nginx/conf/enable-php-z.confz\s+#*include\s+pathinfo.conf;<3B>onz
include pathinfo.conf;z
#include pathinfo.conf;<3B>/php/<2F> /etc/php.iniz+\n*\s*cgi\.fix_pathinfo\s*=\s*([0-9]+)\s*\nr ruz
cgi.fix_pathinfo = <20>
<EFBFBD>PHP configurationz(Set PATH_INFO module to [{}] for PHP-{}!Tr=) <0A>versionrYr<00> get_webserver<65>GetConfigValuer<65>r?<00>subr<00> serviceReloadr<64><00> phpReloadr )rr"rarYrrn<00>repr|s&& r<00> setPathInfo<66>config.setPathInfoWsH<00><00><15>+<2B>+<2B><07><12>x<EFBFBD>x<EFBFBD><04> <11> <1F> <1F> !<21>W<EFBFBD> ,<2C><19>(<28>(<28><1C>6<>7P<37>P<>QX<51>X<>Y`<60>`<60>D<EFBFBD><19>?<3F>?<3F>4<EFBFBD>(<28>D<EFBFBD>2<>C<EFBFBD><13>t<EFBFBD>|<7C><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"B<>4<EFBFBD>H<><04><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"C<>D<EFBFBD>I<><04> <12> <1C> <1C>T<EFBFBD> '<27> <12> <20> <20> "<22><15>$<24>$<24>\<5C>2<>7<EFBFBD>:<3A>7<EFBFBD>B<>><3E>Q<><04><15><EFBFBD><EFBFBD>t<EFBFBD>$<24><04><<3C><03><14><06> <0F>4<EFBFBD><<3C><13><06><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>1<>&<26>8<><14>=<3D>d<EFBFBD>C<><04><0E><18><18><14>#<23><0E> <20> <20>!4<>6`<60>bi<62>ao<61>p<><0E><18><18><17>!<21><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>VPpVPp\V4^8d\P!RR4#\P
!R4R,V,R,pRP VPVP^,VP^,4p\PPR4'dRVP,R,pWE3F<>pV'gK \PPV4'gK4\P!V4pR p\P!VR
V,R ,V4pR p\P!VR V,R ,V4p\P!Wg4K<> \P!4R8Xd<>\P
!R4R,p\P!V4pRp\P!W<>4P!4p \V ^,4\V48d=\P!VRV,R,V4p\P!WG4\P"!4\P$!V4\P&!RRW#34\P!RR4#)<17>Fz-Limit of upload size cannot be less than 2 MBr[r]r^<00>7/usr/local/lsws/lsphp{}/etc/php/{}.{}/litespeed/php.ini<6E>/etc/redhat-release<73>/usr/local/lsws/lsphpz&\nupload_max_filesize\s*=\s*[0-9]+M?m?z\nupload_max_filesize = r<>z \npost_max_size\s*=\s*[0-9]+M?m?z\npost_max_size = rZ<00>/nginx/conf/nginx.confz#client_max_body_size\s+([0-9]+)m?M?zclient_max_body_size <20>mr`z*Set max upload size to [{} MB] for PHP-{}!Tr=)ra<00>maxr<78>rr rcr<>rrrr<>r?rdrrbrA<00>groupsrerfr<>)
rr"rarqr<00> ols_php_path<74>prnrg<00>tmps
&& r<00> setPHPMaxSize<7A>config.setPHPMaxSizess<00><00><15>+<2B>+<2B><07><11>g<EFBFBD>g<EFBFBD><03> <0E>s<EFBFBD>8<EFBFBD>a<EFBFBD><<3C><06> 9<> 9<>%<25>@o<> p<>p<><15>$<24>$<24>\<5C>2<>7<EFBFBD>:<3A>7<EFBFBD>B<>><3E>Q<><04>P<>W<>W<>X[<5B>Xc<58>Xc<58>eh<65>ep<65>ep<65>qr<71>es<65>tw<74>t<74>t<74>AB<02>uC<02>D<02> <0C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>/<2F> 0<> 0<>2<>S<EFBFBD>[<5B>[<5B>@<40>><3E>Q<>L<EFBFBD><16>$<24>A<EFBFBD><14><18><15>7<EFBFBD>7<EFBFBD>><3E>><3E>!<21>$<24>$<24><18><19>?<3F>?<3F>1<EFBFBD>%<25>D<EFBFBD>;<3B>C<EFBFBD><15>6<EFBFBD>6<EFBFBD>#<23>9<>#<23>=<3D>c<EFBFBD>A<>$<24>G<>D<EFBFBD>5<>C<EFBFBD><15>6<EFBFBD>6<EFBFBD>#<23>3<>C<EFBFBD>7<><03>;<3B>D<EFBFBD>A<>D<EFBFBD> <12> <1C> <1C>Q<EFBFBD> $<24>%<25> <12> <1F> <1F> !<21>W<EFBFBD> ,<2C><19>(<28>(<28><1C>6<>7O<37>O<>D<EFBFBD><19>?<3F>?<3F>4<EFBFBD>(<28>D<EFBFBD>8<>C<EFBFBD><14>)<29>)<29>C<EFBFBD>%<25>,<2C>,<2C>.<2E>C<EFBFBD><12>3<EFBFBD>q<EFBFBD>6<EFBFBD>{<7B>S<EFBFBD><13>X<EFBFBD>%<25><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"9<>#<23>"=<3D>c<EFBFBD>"A<>$<24>G<><04><16> <20> <20><14>+<2B><0E><1C><1C><1E><0E><18><18><17>!<21><0E> <20> <20>!4<>6b<36>dk<64>cp<63>q<><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>\P!R4R,VP,R,pRPVPVP^,VP^,4p\P
P R4'dRVP,R,p\P
P V4'g\P!RR4#W#3F<>p\P
P V4'gK*\P!V4pRp\P!VR VP,R
,V4p\P!R R VPVP34\P!WE4\P!VP4K<> \P!4\P!R R4#)r[r]r^rlrmrnFz%Requested PHP version does NOT exist!zdisable_functions\s*=\s*.*\nzdisable_functions = r_r`z-Modified disabled function to [{}] for PHP-{}Tr=)rrcrar<>rrrr r<>r?rd<00>disable_functionsr<73>rrfre)rr"<00>filenamers<00>file<6C>phpinirgs&& r<00> setPHPDisable<6C>config.setPHPDisable<6C>s<><00><00><19>(<28>(<28><1C>6<><17>@<40>3<EFBFBD>;<3B>;<3B>N<>Q_<51>_<><08>P<>W<>W<>X[<5B>Xc<58>Xc<58>eh<65>ep<65>ep<65>qr<71>es<65>tw<74>t<74>t<74>AB<02>uC<02>D<02> <0C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>/<2F> 0<> 0<>2<>S<EFBFBD>[<5B>[<5B>@<40>><3E>Q<>L<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27><06>0I<30>0I<30>%<25>Pw<50>0x<30>)x<><1D>+<2B>D<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24>'<27>'<27><18><1B>_<EFBFBD>_<EFBFBD>T<EFBFBD>*<2A>F<EFBFBD>1<>C<EFBFBD><17>V<EFBFBD>V<EFBFBD>C<EFBFBD>!7<>#<23>:O<>:O<>!O<>RV<52>!V<>X^<5E>_<>F<EFBFBD> <12> $<24> $<24>%8<>9h<39>jm<6A>ju<6A>ju<6A>vy<76>wL<02>wL<02>jM<02> N<02> <12> <1C> <1C>T<EFBFBD> )<29> <12> <1C> <1C>S<EFBFBD>[<5B>[<5B> )<29>,<2C> <0F><1C><1C><1E><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>VPpVPp\V4^8g\V4R8<>d\P!RR4#\P
!R4R,V,R,p\P !V4pRp\P!VRV,R ,V4p\P!WE4R
V,R ,p\P !V4pR p\P!VR V,R ,V4pRp\P!VRV,R ,V4p\P!WG4\P!4R8XEd\P
!R4R,p\P !V4pRp\P!We4P4p \V ^,4\V48d<>\P!VRV,R,V4pRp\P!VRV,R,V4pRp\P!VRV,R,V4p\P!W<>4\P!RRW234\P!4\P!V4\P!RR4#)<1D>r<>Fz.Please fill in the value between 30 and 86400!r[r]<00>/etc/php-fpm.conf<6E>*request_terminate_timeout\s*=\s*([0-9]+)\nzrequest_terminate_timeout = r_<00>/www/server/php/r^z&max_execution_time\s*=\s*([0-9]+)\r?\nzmax_execution_time = z"max_input_time\s*=\s*([0-9]+)\r?\nzmax_input_time = rZroz#fastcgi_connect_timeout\s+([0-9]+);zfastcgi_connect_timeout <20>;z fastcgi_send_timeout\s+([0-9]+);zfastcgi_send_timeout z fastcgi_read_timeout\s+([0-9]+);zfastcgi_read_timeout r`z5Set maximum time of script to [{} second] for PHP-{}!Tr=)r<>rar<>rr rcr<>r?rdrrbrArrr<>rerf)
rr"r<>rar{rnrgr|rrus
&& r<00> setPHPMaxTime<6D>config.setPHPMaxTime<6D>s/<00><00><12>x<EFBFBD>x<EFBFBD><04><15>+<2B>+<2B><07> <0E>t<EFBFBD>9<EFBFBD>r<EFBFBD>><3E>S<EFBFBD><14>Y<EFBFBD><15>.<2E>v<EFBFBD>7P<37>7P<37>QV<51>XH<02>8I<02>1I<02><15>$<24>$<24>\<5C>2<>7<EFBFBD>:<3A>7<EFBFBD>B<>CV<43>V<><04><15><EFBFBD><EFBFBD>t<EFBFBD>$<24><04>;<3B><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>8<><14>=<3D>d<EFBFBD>B<>4<EFBFBD>H<><04><0E><18><18><14>#<23>!<21>'<27>)<29>.<2E>8<><04><17><1F><1F><14>&<26><06>7<><03><13><16><16><03>3<>D<EFBFBD>8<><14>=<3D>f<EFBFBD>E<><06>3<><03><13><16><16><03>/<2F><04>4<>T<EFBFBD>9<>&<26>A<><06><0E><18><18><14>%<25> <11> <1F> <1F> !<21>W<EFBFBD> ,<2C><19>(<28>(<28><1C>6<>7O<37>O<>D<EFBFBD><19>?<3F>?<3F>4<EFBFBD>(<28>D<EFBFBD>8<>C<EFBFBD><14>)<29>)<29>C<EFBFBD>&<26>-<2D>-<2D>/<2F>C<EFBFBD><12>3<EFBFBD>q<EFBFBD>6<EFBFBD>{<7B>S<EFBFBD><14>Y<EFBFBD>&<26><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"<<3C>T<EFBFBD>"A<>#<23>"E<>d<EFBFBD>K<><04>9<><03><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"9<>$<24>"><3E>s<EFBFBD>"B<>4<EFBFBD>H<><04>9<><03><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>"9<>$<24>"><3E>s<EFBFBD>"B<>4<EFBFBD>H<><04><16> <20> <20><14>+<2B><0E> <20> <20>!4<>6m<36>ov<6F>n|<7C>}<7D><0E><1C><1C><1E><0E><18><18><17>!<21><15>(<28>(<28><14>/D<>E<>Er%c<08><><00>VPp\P!R4R,V,R,p\PP V4'g\P !RR4#\P!V4pV'g\P !RR4#/pRp\P!Wd4pV'dVP4^,MRVR&R p\P!Wd4pV'dVP4^,MRVR
&R p\P!Wd4pV'dVP4^,MRVR &R p\P!Wd4pV'dVP4^,MRVR&Rp\P!Wd4pV'dVP4^,MRVR&Rp\P!Wd4pV'dVP4^,MRVR&RVR&RVR&RPV4VR&\P!VR4p\V\4'gRVR&V^,VR&V^,VR&V#)r[r]r<>Fz.The PHP-FPM configuration file does not exist.z.Failed to read the PHP-FPM configuration file.<2E>$\s*pm.max_children\s*=\s*([0-9]+)\s*rx<00> max_children<65>%\s*pm.start_servers\s*=\s*([0-9]+)\s*<2A> start_servers<72>)\s*pm.min_spare_servers\s*=\s*([0-9]+)\s*<2A>min_spare_servers<72>*\s*pm.max_spare_servers \s*=\s*([0-9]+)\s*<2A>max_spare_servers<72>\s*pm\s*=\s*(\w+)\s*<2A>staticr<63><00>.\s*listen.allowed_clients\s*=\s*([\w\.,/]+)\s*<2A>allowed<65>unixrI<00>/tmp/php-cgi-{}.sock<63>bindT<64>tcp)rarrcrrrr r<>r?rArrr<><00>get_fpm_address<73>
isinstancer<EFBFBD>) rr"rar{rnr<>rgru<00> fpm_addresss && r<00> getFpmConfig<69>config.getFpmConfig<69>s<><00><00><15>+<2B>+<2B><07><15>$<24>$<24>\<5C>2<>7<EFBFBD>:<3A>7<EFBFBD>B<>CV<43>V<><04><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>d<EFBFBD>#<23>#<23><19>,<2C>,<2C>U<EFBFBD>4d<34>e<> e<><15><EFBFBD><EFBFBD>t<EFBFBD>$<24><04><13><19>,<2C>,<2C>U<EFBFBD>4d<34>e<> e<><11><04>5<><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>25<32>s<EFBFBD>z<EFBFBD>z<EFBFBD>|<7C>A<EFBFBD><EFBFBD>2<EFBFBD><04>^<5E><1C>6<><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>36<33><03>
<EFBFBD>
<EFBFBD> <0C>Q<EFBFBD><0F>B<EFBFBD><04>_<EFBFBD><1D>:<3A><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>7:<3A>C<EFBFBD>J<EFBFBD>J<EFBFBD>L<EFBFBD><11>O<EFBFBD><02><04> <20>!<21>;<3B><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>7:<3A>C<EFBFBD>J<EFBFBD>J<EFBFBD>L<EFBFBD><11>O<EFBFBD><02><04> <20>!<21>%<25><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>(+<2B>S<EFBFBD>Z<EFBFBD>Z<EFBFBD>\<5C>!<21>_<EFBFBD><18><04>T<EFBFBD>
<EFBFBD>?<3F><03><10>i<EFBFBD>i<EFBFBD><03>"<22><03>-0<>#<23>*<2A>*<2A>,<2C>q<EFBFBD>/<2F>b<EFBFBD><04>Y<EFBFBD><0F><1E><04>V<EFBFBD> <0C><19><04>V<EFBFBD> <0C>-<2D>4<>4<>W<EFBFBD>=<3D><04>V<EFBFBD> <0C><1C>,<2C>,<2C>W<EFBFBD>T<EFBFBD>:<3A> <0B><19>+<2B>c<EFBFBD>*<2A>*<2A> <20>D<EFBFBD><16>L<EFBFBD>&<26>q<EFBFBD>><3E>D<EFBFBD><16>L<EFBFBD>&<26>q<EFBFBD>><3E>D<EFBFBD><16>L<EFBFBD><13> r%c <08><><00>VPpVPpVPpVPpVPpVP
pVR$9g\ P!RR4#\ P!R4R,V,R,p\ P!V4p Rp
\P!V
RV,V 4p R p
\P!V
R
V,V 4p R p
\P!V
R V,V 4p R p
\P!V
RV,R,V 4p Rp
\P!V
RV,R,V 4p VR8Xd1V PR4R%8wdRp
\P!V
RV 4p VPR8XdRPV4p MJRPV4p RV9d1VPPR4R%8wdT p MVPp MT p Rp
\P!V
RV ,R,V 4p RV9dLVP 'gRVnRp
\P!V
RVP ,R,V 4p \ P"!W<>4\ P$!V4\ P&!V4\ P(!R R!W#WEV34\ P!R"R#4#)&r<><00>ondemandFzWrong operating moder[r]r<>r<>z
pm.max_children = r<>z
pm.start_servers = r<>z
pm.min_spare_servers = r<>z
pm.max_spare_servers = r_r<>z
pm = zlisten.backlog = -1z%\s*listen\.backlog\s*=\s*([0-9-]+)\s*z
listen.backlog = 8192
r<EFBFBD>r<>z127.0.0.1:10{}1<> bind_port<72>sockz\s*listen\s*=\s*.+\s*z
listen = r<><00> 127.0.0.1r<EFBFBD>z
listen.allowed_clients = r`zhSet concurrency of PHP-{}, max_children={}, start_servers={}, min_spare_servers={}, max_spare_servers={}Tr=)r<><00>dynamicr<63>r})rar<>r<>r<>r<>r<>rr rcr<>r?rdr~<00>listenr<6E>r<>r<>rrf<00>sync_php_addressr<73>) rr"rar<>r<>r<>r<>r<>r{rnrgr<><00>default_listens && r<00> setFpmConfig<69>config.setFpmConfigs<><00><00><15>+<2B>+<2B><07><1A>'<27>'<27> <0C><1B>)<29>)<29> <0A><1F>1<>1<><19><1F>1<>1<><19> <10>V<EFBFBD>V<EFBFBD><02><11>4<>4<><19>,<2C>,<2C>U<EFBFBD>3I<33>J<> J<><15>$<24>$<24>\<5C>2<>7<EFBFBD>:<3A>7<EFBFBD>B<>CV<43>V<><04><15><EFBFBD><EFBFBD>t<EFBFBD>$<24><04>5<><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>1<>,<2C>><3E><04>E<><04>6<><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>2<>=<3D>@<40>$<24>G<><04>:<3A><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>6<>7H<37>H<>$<24>O<><04>;<3B><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>6<>7H<37>H<><14>M<>t<EFBFBD>T<><04>%<25><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>9<EFBFBD>R<EFBFBD><<3C><04>,<2C>d<EFBFBD>3<><04> <0A><1A> <1B><13>y<EFBFBD>y<EFBFBD>.<2E>/<2F>2<EFBFBD>5<>><3E><03><19>v<EFBFBD>v<EFBFBD>c<EFBFBD>#><3E><04>E<><04> <0E>:<3A>:<3A><16> <1F>+<2B>2<>2<>7<EFBFBD>;<3B>F<EFBFBD>.<2E>5<>5<>g<EFBFBD>><3E>N<EFBFBD><1A>c<EFBFBD>!<21><16>=<3D>=<3D>%<25>%<25>f<EFBFBD>-<2D><12>3<>+<2B>F<EFBFBD> <20>]<5D>]<5D>F<EFBFBD>'<27><06>'<27><03><11>v<EFBFBD>v<EFBFBD>c<EFBFBD>=<3D><16>/<2F><04>4<>d<EFBFBD>;<3B><04> <14><03> <1B><16>;<3B>;<3B>;<3B>k<EFBFBD><03> <0B>C<>C<EFBFBD><15>6<EFBFBD>6<EFBFBD>#<23><<3C>S<EFBFBD>[<5B>[<5B>H<><14>M<>t<EFBFBD>T<>D<EFBFBD><0E><18><18><14>#<23><0E><18><18><17>!<21><0E><1F><1F><07>(<28><0E> <20> <20>!4<>6`<02>cj<02>xE<03>Xi<03>bj<03> k<03><15>(<28>(<28><14>/D<>E<>Er%c <0C>F<00>\P!\P!R4R,4p\V4R,
pT'g\P!RR4Rp\P
!R4^,P RR 4P4P4R,p\T4RpT^,R
8XdR p\T^R4R ,\TRR 4^<,,pT'd
Y6, pMY6,p\P!TR7p\P
!RT,4\P!RR4\P!R R4# \P!RR4u#;i L<>;i)u&
@name 同步时间
@author hezhihong
<EFBFBD>homez/api/index/get_timei<65>pFz%Failed to connect to the time server!z+0000zdate +"%Y-%m-%d %H:%M:%S %Z %z"r_rx<00>+T<>N<><01>timesz date -s "%s"r<>zUpdate Succeeded!r=r}<00><><EFBFBD><EFBFBD><EFBFBD>) r<00>HttpGetrcr<>r<>r@<00>replacer)<00>splitr<74><00> format_dater<65>r )rr"<00>time_str<74>new_time<6D>add_time<6D>add_1<5F>add_v<5F>date_strs&& r<00>syncDate<74>config.syncDate=sX<00><00> <1A>><3E>><3E>&<26>"7<>"7<><06>"?<3F>BW<42>"W<>X<><08> S<01><1A>8<EFBFBD>}<7D>U<EFBFBD>*<2A>H<EFBFBD><18><16>)<29>)<29>%<25>0W<30>X<><18><08> <14><1B>%<25>%<25>&G<>H<><11>K<>S<>S<>TX<54>Y[<5B>\<5C>b<>b<>d<>j<>j<>l<>mo<6D>p<>H<EFBFBD> <11>(<28>O<EFBFBD><13><05> <13>A<EFBFBD>;<3B><03> <1B><16>E<EFBFBD><11>(<28>1<EFBFBD>R<EFBFBD>.<2E>!<21>$<24>&<26>s<EFBFBD>8<EFBFBD>B<EFBFBD>C<EFBFBD>=<3D>'9<>"<22>'<<3C><<3C><05> <10> <14>O<EFBFBD>H<EFBFBD> <15>_<EFBFBD>X<EFBFBD><19>%<25>%<25>H<EFBFBD>5<><08><0E><18><18><1E>(<28>2<>3<><0E> <20> <20>!6<>8K<38>L<><15>(<28>(<28><14>.C<>D<>D<><44>) S<01><19>#<23>#<23>E<EFBFBD>*Q<>R<> R<><52> <14>t<EFBFBD>s<00>E><00>'AF<00>>F<03>F c<08><><00>^RIpVPVPVP4pVPR\ V434VP ^4R# R#;i)rNr<4E>TF)<06>socket<65>AF_INET<45> SOCK_STREAM<41>connectr<74><00>shutdown)rrIr<><00>ss&& rr6<00> config.IsOpen\sQ<00><00><15> <12>M<EFBFBD>M<EFBFBD>&<26>.<2E>.<2E><16>);<3B>);<3B> <<3C><01> <19> <0A>I<EFBFBD>I<EFBFBD>{<7B>3<EFBFBD>t<EFBFBD>9<EFBFBD>-<2D> .<2E> <0A>J<EFBFBD>J<EFBFBD>q<EFBFBD>M<EFBFBD><17><> <19><18>s <00>-A<00>A c<08><><00>\VR4'd]\VP4Vn\VP4VnVP^8d\P
!RR4#RpTP R8XdF\P!Y!P4\P!RRTP34EM}TP R8XdU\PPT4'd\P!T4\P!RR4EMTP R 8Xd<>\P!4'g\P
!RR
4#\P!R 4^R IpTP4pTP!R 4P#R 4\P!RR4\P
!RR4#/p\PPT4'd+\\P$!T44TR&RTR&T#^TR&RTR&T#\P
!RR4# EL<>;i ^TR&L;;i)<12>dayFz!Number of saving days is illegal!zdata/control.confrur<>z.Turned on monitory service, save for [{}] day!r zMonitor service turned off!<21>delrzdata/system.dbN<62>systemTr=r|zSuccessfully set)r>r<>r<>r<>rr rYrr<>rrrr*r0<00>db<64>Sql<71>dbfile<6C>creater<65>)rr"rzr<><00>sqlr<6C>s&& r<00>
SetControl<EFBFBD>config.SetControlhs<><00><00> <11><16>s<EFBFBD>5<EFBFBD>!<21>!<21><1D>c<EFBFBD>g<EFBFBD>g<EFBFBD>,<2C><03><07><1D>c<EFBFBD>g<EFBFBD>g<EFBFBD>,<2C><03><07><16>7<EFBFBD>7<EFBFBD>Q<EFBFBD>;<3B><06>(A<>(A<>%<25>Hk<48>(l<>!l<>'<27><08> <0E>8<EFBFBD>8<EFBFBD>s<EFBFBD>?<3F> <12> <1C> <1C>X<EFBFBD>g<EFBFBD>g<EFBFBD> .<2E> <12> $<24> $<24>%:<3A>;k<>mp<6D>mt<6D>mt<6D>lv<6C> w<> <10>X<EFBFBD>X<EFBFBD><13>_<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27><12><19><19>8<EFBFBD>)<<3C> <12> $<24> $<24>%:<3A><Y<> Z<> <10>X<EFBFBD>X<EFBFBD><15> <1E><19>#<23>#<23>%<25>%<25>f<EFBFBD>.G<>.G<><05>OH<02>/I<02>(I<02> <0E>I<EFBFBD>I<EFBFBD>&<26> '<27> <15><14>&<26>&<26>(<28>C<EFBFBD> <0F>J<EFBFBD>J<EFBFBD>x<EFBFBD> <20> '<27> '<27><08> 1<> <12> $<24> $<24>%:<3A><Y<> Z<><19>,<2C>,<2C>T<EFBFBD>2G<32>H<> H<><16>D<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27>%<25>"%<25>f<EFBFBD>o<EFBFBD>o<EFBFBD>h<EFBFBD>&?<3F>"@<40>D<EFBFBD><15>K<EFBFBD>"&<26><04>X<EFBFBD><0E><18>K<EFBFBD>!<21><04>U<EFBFBD> <0B>!&<26><04>X<EFBFBD><0E><17>K<EFBFBD><15>(<28>(<28><14>.@<40>A<>A<><41>A <11> <10><>.%<25>"$<24>D<EFBFBD><15>K<EFBFBD>s<00>A-I<00>"I$<00>I!<03>$I-c<08>z<00>Rp\PPV4'd.\P!V4\P
!RR4#\P !VR4\P!RV,4\P!RV,4\P!RR4#)z data/close.plTr=rt<00>
chmod 600 <20>chown root.root ) rrrr*rr<>rr@r <00>rr"rzs&& r<00>
ClosePanel<EFBFBD>config.ClosePanel<65>s<><00><00>"<22><08> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>(<28> #<23> #<23> <0E>I<EFBFBD>I<EFBFBD>h<EFBFBD> <1F><19>#<23>#<23>D<EFBFBD>*?<3F>@<40> @<40><0E><18><18><18>6<EFBFBD>*<2A><0E><18><18><1C><08>0<>1<><0E><18><18>+<2B>h<EFBFBD>6<>7<><15>(<28>(<28><14>.C<>D<>Dr%c<08>N<00>Rp\PPV4'd\P!V4MQ\P
!VR4\P !RV,4\P !RV,4\P!RR4#)zdata/autoUpdate.plrtr<>r<>Tr=)rrrr*rrr@r r<>s&& r<00>AutoUpdatePanel<65>config.AutoUpdatePanel<65>sq<00><00>'<27><08> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>(<28> #<23> #<23> <0E>I<EFBFBD>I<EFBFBD>h<EFBFBD> <1F> <12> <1C> <1C>X<EFBFBD>f<EFBFBD> -<2D> <12> <1C> <1C>\<5C>H<EFBFBD>4<> 5<> <12> <1C> <1C>/<2F>(<28>:<3A> ;<3B><15>(<28>(<28><14>.C<>D<>Dr%c<08><00>Rp\PPV4'gX\P!RV,4\P!RV,4\P!RV,4.ROpVF<>pVR,V,R,p\ W4'd\P !VR4KD\PPV4'gKk\P!V4K<> R#) z data/lockzmkdir r<>r<>r<>z.plrtN)r=<00>tasksr )rrrrr@r>rr*)rr"r<00>keys<79>namerzs&& r<00> SetPanelLock<63>config.SetPanelLock<63>s<><00><00><1A><04><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>d<EFBFBD>#<23>#<23> <12> <1C> <1C>X<EFBFBD><04>_<EFBFBD> -<2D> <12> <1C> <1C>\<5C>D<EFBFBD>0<> 1<> <12> <1C> <1C>/<2F>$<24>6<> 7<>)<29><04><18>D<EFBFBD><1B>c<EFBFBD>z<EFBFBD>D<EFBFBD>(<28>5<EFBFBD>0<>H<EFBFBD><16>s<EFBFBD> <20> <20><16> <20> <20><18>&<26>1<><15>7<EFBFBD>7<EFBFBD>><3E>><3E>(<28>+<2B>+<2B>R<EFBFBD>Y<EFBFBD>Y<EFBFBD>x<EFBFBD>-@<40> r%c<08><><00>Rp\PPV4'd\P!RV,4M\P
!VR4\P !RR4#)zdata/502Task.pl<70>rm -f rtTr=)rrrrr@rr r<>s&& r<00>Set502<30> config.Set502<30>sQ<00><00>$<24><08> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>(<28> #<23> #<23> <12> <1C> <1C>X<EFBFBD><08>0<> 1<> <12> <1C> <1C>X<EFBFBD>f<EFBFBD> -<2D><15>(<28>(<28><14>.C<>D<>Dr%c<08>r<00>\P!RVP4\P!RR4#)zdata/templates.plTr=)rr<00> templatesr r!s&&r<00> SetTemplates<65>config.SetTemplates<65>s+<00><00><0E><18><18>,<2C>S<EFBFBD>]<5D>]<5D>;<3B><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>\PPR4'g\P!R4\ VR4'dB\ VP 4R8Xd(^RIpVP4pVPV4pV#VPR,p\PPV4'dNRV9gG\P!RV,R,4R\n \P!RR4#\P!R 4\P!R
4\P!R 4RV9g\P!R R 4#VP R9dQVP!V4pVR,'gV#\P"!VR4\P"!RR4VP%4'g\P!R R4#\P"!VR4\P!RR4# \P!R R4u#;i)z/www/server/panel/ssl/<2F> cert_type<70>2N<32> /data/ssl.plr<6C>z && rm -f /www/server/panel/ssl/*Tu>SSL turned offPlease use http protocol to access the panel!zbtpip install cffizbtpip install cryptographyzbtpip install pyOpenSSLFz&Please refresh the page and try again!r|rt<00>data/reload.plzdError, unable to auto install pyOpenSSL!<p>Plesea try to manually install: pip install pyOpenSSL</p>z@SSL is turned on, plesea use https protocol to access the panel!)rr )rrrr<>r>r<>r<><00> setPanelLets<74>set_letsr<73>rr@r<00>rm_sslr r<><00> SavePanelSSLr<00> CreateSSL)rr"r<><00>sp<73>sps<70>sslConf<6E>results&& r<00> SetPanelSSL<53>config.SetPanelSSL<53>s<><00><00><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>6<>7<>7<> <0F>[<5B>[<5B>1<> 2<> <12>3<EFBFBD> <0B> $<24> $<24><13>S<EFBFBD>]<5D>]<5D>);<3B>s<EFBFBD>)B<> <20><1D>*<2A>*<2A>,<2C>B<EFBFBD><14>+<2B>+<2B>c<EFBFBD>"<22>C<EFBFBD><16>J<EFBFBD><1A>&<26>&<26><1E>7<>G<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>g<EFBFBD>&<26>&<26>{<7B>c<EFBFBD>/A<><16> <20> <20><18>G<EFBFBD>!3<>6X<36>!X<>Y<><1F><01><08><1D>0<>0<><14>7w<37>x<>x<><16> <20> <20>!5<>6<><16> <20> <20>!=<3D>><3E><16> <20> <20>!:<3A>;<3B>"<22>c<EFBFBD>)<29>!<21>+<2B>+<2B>E<EFBFBD>2Z<32>[<5B>[<5B><16>=<3D>=<3D>G<EFBFBD>+<2B>!<21>.<2E>.<2E>s<EFBFBD>3<>F<EFBFBD>!<21>(<28>+<2B>+<2B>F<EFBFBD>]<5D><1A>$<24>$<24>W<EFBFBD>V<EFBFBD>4<><1A>$<24>$<24>%5<>f<EFBFBD>=<3D>]<02><1F>><3E>><3E>+<2B>+<2B>%<25>8<>8<><15>:`<02> a<02>a<02><1A>$<24>$<24>W<EFBFBD>f<EFBFBD>5<><1E>0<>0<><14>1s<31>u<01>u<01><>]<02>!<21>4<>4<>U<EFBFBD>6\<02>]<02>]<02>s<00>H1<00>,H1<00>H1<00>1I c <08><><00>^RIp\P!4pV'g ^VR&RVR&\P!4'Eg4VP 4pRRRRRR P V4RVR,RRR
^/pR p\ P!\P!VR \ P!V4/44pR V9Ed<>VR ,'Ed<>\PPR4'd\P!R4\PPR4'd\P!R4R F@p\PPV4'gK*\P!V4KB \PPR4'd\P!R4\P!RVR,4\P!RVR,4\P!RVP!VR,4R4\P!RVR,4\P!RR4\!R4R#\PPR4'dR#^RIpVP$P'4p V P)VP$P*R4VP$P-4p
V
P/^4\P0!4V
P34nV
P7V
P344V
P9^4V
P;R!4V
P=V 4V
P?V R4VP$PAVP$PBV
4p VP$PEVP$PBV 4p \GV 4^d8<64>dC\GV 4^d8<64>d3\P!RV R4\P!RV R4R#R#)"rNr<00>
access_key<EFBFBD>action<6F>get_domain_cert<72>company<6E> yakpanel.comr1<00>,<2C>panelz&https://api.yakpanel.com/yakpanel_certr<74>r|<00>ssl/certificate.pem<65>ssl/privateKey.pem<65>ssl/yakpanel_root.pfx<66>ssl/root_password.pl<70>cert<72>key<65>pfxzwb+r<><00> data/ssl.plrtruT<> ssl/input.plir<>F<> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB)r<><00>ssl/baota_root.pfxi<03>)$<24>base64r<00> get_user_info<66>is_self_hosted<65> get_host_allr<6C>rr<00>httpPostrrrrr*r<00> b64decoder<65><00>OpenSSL<53>crypto<74>PKey<65> generate_key<65>TYPE_RSA<53>X509<30>set_serial_number<65>
GetLocalIp<EFBFBD> get_subject<63>CN<43>
set_issuer<EFBFBD>gmtime_adj_notBefore<72>gmtime_adj_notAfter<65>
set_pubkey<EFBFBD>sign<67>dump_certificate<74> FILETYPE_PEM<45>dump_privatekeyrR) rrr<><00>domainsr<00>cert_apir<69><00>_rpfxrrr<00>cert_ca<63> private_keys & rr<><00>config.CreateSSLs<00><00><15><19>'<27>'<27>)<29><08><17><1F>H<EFBFBD>U<EFBFBD>O<EFBFBD>%-<2D>H<EFBFBD>\<5C> "<22><15>$<24>$<24>&<26>&<26><1A>'<27>'<27>)<29>G<EFBFBD><18>+<2B><19>><3E><18>#<23>(<28>(<28>7<EFBFBD>+<2B><15>x<EFBFBD><05><EFBFBD><1C>h<EFBFBD><17><11> <0E>E<EFBFBD>@<01>H<EFBFBD><19>Z<EFBFBD>Z<EFBFBD><06><0F><0F><08>6<EFBFBD>4<EFBFBD>:<3A>:<3A>e<EFBFBD>CT<43>:U<> V<>W<>F<EFBFBD><17>6<EFBFBD>!<21><19>(<28>#<23>#<23><19>w<EFBFBD>w<EFBFBD>~<7E>~<7E>&;<3B><<3C><<3C><1A> <09> <09>"7<>8<><19>w<EFBFBD>w<EFBFBD>~<7E>~<7E>&:<3A>;<3B>;<3B><1A> <09> <09>"6<>7<>!P<><05><1D>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25>0<>0<><1E>I<EFBFBD>I<EFBFBD>e<EFBFBD>,<2C>"Q<01><1A>w<EFBFBD>w<EFBFBD>~<7E>~<7E>&<<3C>=<3D>=<3D><1A> <09> <09>"8<>9<><1A>$<24>$<24>%:<3A>F<EFBFBD>6<EFBFBD>N<EFBFBD>K<><1A>$<24>$<24>%9<>6<EFBFBD>%<25>=<3D>I<><1A>$<24>$<24>%<<3C>f<EFBFBD>>N<>>N<>v<EFBFBD>V[<5B>}<7D>>]<5D>_d<5F>e<><1A>$<24>$<24>%;<3B>V<EFBFBD>J<EFBFBD>=O<>P<><1A>$<24>$<24>]<5D>F<EFBFBD>;<3B><19>#<23>J<EFBFBD><1F> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>.<2E> )<29> )<29>$<24><16><15>n<EFBFBD>n<EFBFBD>!<21>!<21>#<23><03> <0B><18><18><17><1E><1E>0<>0<>$<24>7<><16>~<7E>~<7E>"<22>"<22>$<24><04> <0C><1E><1E>q<EFBFBD>!<21> &<26> 1<> 1<> 3<><04><18><18><1A><1D> <0C><0F><0F><04>(<28>(<28>*<2A>+<2B> <0C>!<21>!<21>1<EFBFBD>&<26> <0C> <20> <20><1C>.<2E> <0C><0F><0F><13><1E> <0C> <09> <09>3<EFBFBD><05><1F><19>.<2E>.<2E>1<>1<>'<27>.<2E>.<2E>2M<32>2M<32>t<EFBFBD>T<><07><1D>n<EFBFBD>n<EFBFBD>4<>4<>W<EFBFBD>^<5E>^<5E>5P<35>5P<35>RU<52>V<> <0B> <0E>w<EFBFBD><<3C>#<23> <1D>#<23>k<EFBFBD>"2<>S<EFBFBD>"8<> <12> <1C> <1C>2<>7<EFBFBD>5<EFBFBD> A<> <12> <1C> <1C>1<>+<2B>e<EFBFBD> D<><17>r%c <0C>~<00>\P!R4^,P4pVPR4pV#)uE
@name 获取本机IP地址
@author hwliang<2020-11-24>
@return list
zSip a |grep inet|grep -v inet6|grep -v 127.0.0.1|awk '{print $2}'|sed 's#/[0-9]*##g'r_)rr@r)r<>)r<00>ipa_tmp<6D>iplists& r<00> get_ipaddress<73>config.get_ipaddress?s<<00><00> <0F><18><18>n<>o<> <0A> <0F><14>u<EFBFBD>w<EFBFBD> <10><19><1D><1D>t<EFBFBD>$<24><06><15> r%c<08><><00>.ROp.pVP4pVF4pVP4pWA9dKWB9dK#VPV4K6 \P!RP \P !444pV'd(VP4pWR9gVPV4VR,V^,.pV#)r<>z{}/api/common/getClientIP)r<>z::1<> localhostr})r)r)rBr<00>httpGetr<74><00>OfficialApiBase)r<00>local_ip<69>ip_list<73>bind_ip<69>ip<69>net_ips& rr <00>config.get_host_allKs<><00><00>4<><08><14><07><16>$<24>$<24>&<26><07><19>B<EFBFBD><13><18><18><1A>B<EFBFBD><11>~<7E>x<EFBFBD><11>}<7D>h<EFBFBD> <13>N<EFBFBD>N<EFBFBD>2<EFBFBD> <1E> <1A>
<18><1E><1E> ;<3B> B<> B<>6<EFBFBD>CY<43>CY<43>C[<5B> \<5C>]<5D><06> <11><1B>\<5C>\<5C>^<5E>F<EFBFBD><19>$<24><17><0E><0E>v<EFBFBD>&<26><1A>2<EFBFBD>;<3B><07><01>
<EFBFBD>+<2B><07><16>r%c<08><<00>/p\P!^4VR&R#)<03>rxN)r<00>GetRandomString<6E>rr"r<>s&& r<00>SetToken<65>config.SetToken^s<00><00><11><04><19>)<29>)<29>"<22>-<2D><04>R<EFBFBD>r%c<08>(<00>\P!R4PR4PR4P 4p\ V4\ 8Xd
V^o,V# Rp\P!R4PTR4.u#;i)r<>z,id,title,url,username,password,click,addtimez
click descz<63>CREATE TABLE IF NOT EXISTS `panel` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`title` TEXT,
`url` TEXT,
`username` TEXT,
`password` TEXT,
`click` INTEGER,
`addtime` INTEGER
);<3B>sites<65>)rr<>r<><00>orderrrYr<><00>execute)rr"r<>r<>s&& r<00> GetPanelList<73>config.GetPanelListcs{<00><00> <16><19>8<EFBFBD>8<EFBFBD>G<EFBFBD>$<24>*<2A>*<2A>+Y<>Z<>`<60>`<60>am<61>n<>u<>u<>w<>D<EFBFBD><13>D<EFBFBD>z<EFBFBD>S<EFBFBD> <20>$<24>s<EFBFBD>)<29><17>K<EFBFBD><4B> <16><06>C<EFBFBD> <13>H<EFBFBD>H<EFBFBD>W<EFBFBD> <1D> %<25> %<25>c<EFBFBD>"<22> -<2D><15>I<EFBFBD>s <00>A A#<00>#,Bc <08><><00>\P!R4PRVPVP34P 4pV'd\P !RR4#^RIp^RIp\P!R4PR\P!VP4\P!VP4\P!VP4VP^\VP!4434pV'd\P !RR4#\P !RR4#) r<>ztitle=? OR url=?F<>!Notes or panel address duplicate!Nz)title,url,username,password,click,addtimeTr=z Failed to add)rr<>r<>r^rrr r r<>r<00>addr;r<>r<>r<>)rr"<00>isAddr<64>r<00>isRes&& r<00> AddPanelInfo<66>config.AddPanelInfovsU<00><00><17><08><08><17>!<21>'<27>'<27>(:<3A>C<EFBFBD>I<EFBFBD>I<EFBFBD>c<EFBFBD>g<EFBFBD>g<EFBFBD>;N<>O<>U<>U<>W<><05> <10><16>2<>2<>5<EFBFBD>9\<5C>]<5D>]<5D><18><15>x<EFBFBD>x<EFBFBD><07> <20>$<24>$<24>%P<>RX<52>Rc<52>Rc<52>dg<64>dm<64>dm<64>Rn<52>ou<6F>pA<02>pA<02>BE<02>BI<02>BI<02>pJ<02>KQ<02>K\<02>K\<02>]`<02>]i<02>]i<02>Kj<02>kn<02>kw<02>kw<02>xy<02>z}<02>~B<03>~G<03>~G<03>~I<03>zJ<03>RK<03>L<03><04> <0F><06>1<>1<>$<24>7L<37>M<>M<><15>(<28>(<28><15><EFBFBD>?<3F>?r%c<08>@<00>\P!R4PRVPVPVP
34P 4pV'd\P!RR4#^RIp^RI p\P!R4PRVP
34PRVPVPVPVP34pV'd\P!RR4#\P!RR 4#)
r<EFBFBD>z(title=? OR url=?) AND id!=?FrCNr<4E>ztitle,url,username,passwordTr=zFailed to modify) rr<>r<>r^rrrr r r<>rr?r<>r<>)rr"<00>isSaver<65>rrFs&& r<00> SetPanelInfo<66>config.SetPanelInfo<66>s<><00><00><17><18><18>'<27>"<22>(<28>(<28>)G<><13><19><19>SV<53>SZ<53>SZ<53>[^<5E>[a<>[a<>Hb<48>c<>i<>i<>k<><06> <11>&<26>3<>3<>E<EFBFBD>:]<5D>^<5E>^<5E><18><16>x<EFBFBD>x<EFBFBD><07> <20>&<26>&<26>v<EFBFBD>s<EFBFBD>v<EFBFBD>v<EFBFBD>i<EFBFBD>8<>=<3D>=<3D>>[<5B>]`<60>]f<>]f<>gj<67>gn<67>gn<67>or<6F>o{<7B>o{<7B>|<>}I<02>}I<02>]J<02>K<02><04> <0F><06>1<>1<>$<24>7L<37>M<>M<><15>(<28>(<28><15>/A<>B<>Br%c<08>j<00>\P!R4PRVP34P 4pV'g\P
!RR4#\P!R4PRVP34P 4\P
!RR4#)r<>r<>Fz$Requested panel info does NOT exist!Tr')rr<>r<>rr r r)rr"<00>isExistss&& r<00> DelPanelInfo<66>config.DelPanelInfo<66>s~<00><00><19>8<EFBFBD>8<EFBFBD>G<EFBFBD>$<24>*<2A>*<2A>6<EFBFBD>3<EFBFBD>6<EFBFBD>6<EFBFBD>)<29><<3C>B<>B<>D<><08><17><06> 9<> 9<>%<25>@f<> g<>g<><0E><08><08><17><19><1F><1F><06><03><06><06>y<EFBFBD>1<>8<>8<>:<3A><15>(<28>(<28><14>.D<>E<>Er%c<08><00>\P!R4PRVP34P R4p\P!R4PRVP34P RV^,4R#)r<>r<><00>clickT)rr<>r<>rrr<>)rr"rRs&& r<00>ClickPanelInfo<66>config.ClickPanelInfo<66>sa<00><00><16><08><08><17>!<21>'<27>'<27><06><03><06><06>y<EFBFBD>9<>B<>B<>7<EFBFBD>K<><05><0E><08><08><17><19><1F><1F><06><03><06><06>y<EFBFBD>1<>:<3A>:<3A>7<EFBFBD>5<EFBFBD><11>7<EFBFBD>K<>r%c<08><><00>RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RR R^R\P!R
4/RR R^R\P!R 4/RR R^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/RRR^R\P!R4/.pRVP,R ,p\P!4R!8XdR"P VPVP^,VP^,4p\
P PR#4'dR$VP,R ,p\P!V4pV'g\P!R%R&4#.pVF^pVR,R',p\P!Wt4pV'gK3VP4^,VR(&VPV4K` V#))r<><00>short_open_tagrYr<>zShort tag support<72>asp_tagszASP tag support<72>max_execution_timezMax time of running script<70>max_input_timezMax time of input<75> memory_limitzLimit of script memory<72> post_max_sizezMax size of POST data<74> file_uploadszWhether to allow upload file<6C>upload_max_filesizezMax size of upload file<6C>max_file_uploadsz'Max value of simultaneously upload file<6C>default_socket_timeoutzSocket over time<6D>error_reportingzLevel of error<6F>display_errorsz%Whether to output detailed error info<66>cgi.fix_pathinfozWhether to turn on pathinfo<66> date.timezone<6E>Timezoner<65>r^<00> openlitespeedrlrmrnFzGError reading PHP configuration file, please try to reinstall this PHP!z'\s*=\s*([0-9A-Za-z_&/ ~]+)(\s*;?|\r?\n)<29>value)r<00>get_msg_gettextrarbr<>rrrr<>r r?rArrrB) rr"<00>gets<74> phpini_filer|r<>rrgrus && r<00>
GetPHPConf<EFBFBD>config.GetPHPConf<6E>s<><00><00> <13>%<25>v<EFBFBD>q<EFBFBD>$<24><06>8N<38>8N<38>Ob<4F>8c<38> d<> <13>Z<EFBFBD><16><11>D<EFBFBD>&<26>2H<32>2H<32>IZ<49>2[<5B> \<5C> <13>)<29>6<EFBFBD>1<EFBFBD>d<EFBFBD>F<EFBFBD><R<><R<>So<53><p<> q<> <13>%<25>v<EFBFBD>q<EFBFBD>$<24><06>8N<38>8N<38>Ob<4F>8c<38> d<> <13>^<5E>V<EFBFBD>Q<EFBFBD><04>f<EFBFBD>6L<36>6L<36>Me<4D>6f<36> g<> <13>_<EFBFBD>f<EFBFBD>a<EFBFBD><14>v<EFBFBD>7M<37>7M<37>Ne<4E>7f<37> g<> <13>^<5E>V<EFBFBD>Q<EFBFBD><04>f<EFBFBD>6L<36>6L<36>Mk<4D>6l<36> m<> <13>*<2A>F<EFBFBD>A<EFBFBD>t<EFBFBD>V<EFBFBD>=S<>=S<>Tm<54>=n<> o<> <13>'<27><16><11> <11>6<EFBFBD>)<29>)<29>*S<>T<> V<01> <13>-<2D>v<EFBFBD>q<EFBFBD>$<24><06>@V<>@V<>Wi<57>@j<> k<> <13>&<26><06><01>4<EFBFBD><16>9O<39>9O<39>P`<60>9a<39> b<> <13>%<25>v<EFBFBD>q<EFBFBD> <11>6<EFBFBD>)<29>)<29>*Q<>R<> T<01> <13>'<27><16><11>D<EFBFBD>&<26>:P<>:P<>Qn<51>:o<> p<> <13>_<EFBFBD>f<EFBFBD>a<EFBFBD><14>v<EFBFBD>7M<37>7M<37>j<EFBFBD>7Y<37> Z<>!<12><04>$)<29>3<EFBFBD>;<3B>;<3B>6<><1E>G<> <0B> <11> <1F> <1F> !<21>_<EFBFBD> 4<>S<>Z<>Z<>[^<5E>[f<>[f<>hk<68>hs<68>hs<68>tu<74>hv<68>wz<77>xC<02>xC<02>DE<02>xF<02>G<02>K<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>3<>4<>4<>5<><03> <0B> <0B>C<>n<EFBFBD>T<> <0B><17><1F><1F><1B>-<2D><06><15><19>,<2C>,<2C>U<EFBFBD>3|<7C>}<7D> }<7D><13><06><15>A<EFBFBD><13>F<EFBFBD>)<29>H<>H<>C<EFBFBD><14>)<29>)<29>C<EFBFBD>'<27>C<EFBFBD><16><08><1C><1A><1A><1C>a<EFBFBD><1F>A<EFBFBD>g<EFBFBD>J<EFBFBD> <12>M<EFBFBD>M<EFBFBD>!<21> <1C> <16><16> r%c<08><00>VPPRR4Vn\R,R,VP,R,p\P!4R8XdRP VPVP^,VP^,4p\ PPR4'dRVP,R,p\P!V4p\R,R,VP,R ,p\P!V4p/pR
p\P!Wc4P4pV^,VR &R p\P!Yd4P4pT^,TR&Rp\P!Yc4P4pT^,R8XdRTR&T#RTR&T# R TR &L<>;i ^TR&LY;i RTR&T#;i)rSrx<00> setupPathr]r^rerlrmrnr<>z#upload_max_filesize\s*=\s*([0-9]+)Mrq<00>50r<30><00>maxTimez,\n;*\s*cgi\.fix_pathinfo\s*=\s*([0-9]+)\s*\nruT<>pathinfoF) rar<>rrrbr<>rrrr<>r?rArr)rr"r{r|<00>phpfpmr<6D>rgrus&& r<00>get_php_config<69>config.get_php_config<69>s<><00><00><19>k<EFBFBD>k<EFBFBD>)<29>)<29>#<23>b<EFBFBD>1<><03> <0B><16>{<7B>#<23>g<EFBFBD>-<2D>c<EFBFBD>k<EFBFBD>k<EFBFBD>9<>.<2E>H<><04> <11> <1F> <1F> !<21>_<EFBFBD> 4<>L<>S<>S<>TW<54>T_<54>T_<54>ad<61>al<61>al<61>mn<6D>ao<61>ps<70>p{<7B>p{<7B>|}<7D>p~<7E><>D<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>3<>4<>4<>.<2E><13><1B><1B><<3C>~<7E>M<><04><17><1F><1F><14>&<26><06><16>{<7B>#<23>g<EFBFBD>-<2D>c<EFBFBD>k<EFBFBD>k<EFBFBD>9<>:M<>M<><04><17><1F><1F><14>&<26><06><11><04> <1F>8<>C<EFBFBD><14>)<29>)<29>C<EFBFBD>'<27>.<2E>.<2E>0<>C<EFBFBD><1D>a<EFBFBD>&<26>D<EFBFBD><15>K<EFBFBD> <20>?<3F>C<EFBFBD><14>)<29>)<29>C<EFBFBD>'<27>.<2E>.<2E>0<>C<EFBFBD>!<21>!<21>f<EFBFBD>D<EFBFBD><19>O<EFBFBD> %<25>A<>C<EFBFBD><14>)<29>)<29>C<EFBFBD>'<27>.<2E>.<2E>0<>C<EFBFBD><12>1<EFBFBD>v<EFBFBD><13>}<7D>#'<27><04>Z<EFBFBD> <20> <14> <0B> $)<29><04>Z<EFBFBD> <20><14> <0B><>) <1F><1E>D<EFBFBD><15>K<EFBFBD><4B>
 <20><1F>D<EFBFBD><19>O<EFBFBD><4F> %<25>$<24>D<EFBFBD><1A> <1C><13> <0B>s*<00>2G*<00>42G6<00>'9H<00>"H<00>*G3<03>6G?<03>H c<08>d<00>.ROpRVP,R,pRVP,R,pRPVPVP^,VP^,4p\PP R4'dRVP,R,pRpW53F<>pV'gK \PP V4'gK4\
P !V4pVFAp V R ,p
V R
,W,,R ,p \P!W<>V4pKC \
P!Wx4K<> \
P!V4\
P!V4\
P!R R 4# K<>;i)rar<>r^<00>/etc/init.d/php-fpm-<2D> reloadrlrmrnz$/usr/local/lsws/bin/lswsctrl restartz\s*=\s*(.+)\r?\nz = r_Tr=)rarbrcrVrWrXrYrZr[r\r]r^r_r`) rar<>rrrrr<>r?rdrr@r ) rr"rhrz<00>
reload_strrs<00>reload_ols_strrtr|rrg<00>vals && r<00>
SetPHPConf<EFBFBD>config.SetPHPConf<6E>s]<00><00>I<04><04>%<25><03> <0B> <0B>3<>n<EFBFBD>D<><08>+<2B>c<EFBFBD>k<EFBFBD>k<EFBFBD>9<>I<EFBFBD>E<>
<EFBFBD>P<>W<>W<>X[<5B>Xc<58>Xc<58>eh<65>ep<65>ep<65>qr<71>es<65>tw<74>t<74>t<74>AB<02>uC<02>D<02> <0C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>/<2F> 0<> 0<>2<>S<EFBFBD>[<5B>[<5B>@<40>><3E>Q<>L<EFBFBD>?<3F><0E><1A>(<28>A<EFBFBD><14><18><15>7<EFBFBD>7<EFBFBD>><3E>><3E>!<21>$<24>$<24><18><1B>_<EFBFBD>_<EFBFBD>Q<EFBFBD>'<27>F<EFBFBD><19><01>!<21><1B>1<>1<>C<EFBFBD><1B>E<EFBFBD>'<27>C<EFBFBD>F<EFBFBD>*<2A>T<EFBFBD>1<>C<EFBFBD><1F>V<EFBFBD>V<EFBFBD>C<EFBFBD>F<EFBFBD>3<>F<EFBFBD> <1A> <13> <1C> <1C>Q<EFBFBD> &<26>)<29> <0F><18><18><1A>$<24><0E><18><18><1E>(<28><15>(<28>(<28><14>.C<>D<>D<><44> !<21><08>s <00> =F*<04>*F/c<08><><00>RVP,R,p\P!4R8Xd<>\P!4'gRP VPVP^,VP^,4p\
P PR4'dRVP,R,p\P!V4p\V\4'g'\P!RRP V44#Rp\P!WC4pV'dVP^4pMR pR
pR pR p\P!Wc4p V 'g\P!W<>4p \P!Ws4p
R p V
'dV
P^4p
MR p
V 'd$V P^4p V P^4p MR p RVRV RV
RV /#)r<>r^rerlrmrnFz;Failed to read PHP configuration file, it may not exist: {}z:session.save_handler\s*=\s*([0-9A-Za-z_& ~]+)(\s*;?|\r?\n)r=z:\nsession.save_path\s*=\s*"tcp\:\/\/([\w\.]+):(\d+).*\r?\nz7\nsession.save_path\s*=\s*"tcp://[\w\.\?\:]+=(.*)"\r?\nz+\nsession.save_path\s*=\s*"([\w\.]+):(\d+)"rx<00> save_handler<65> save_path<74>passwdrI)rarrb<00>get_multi_webservice_statusr<73>rrrr<>r<>r<>r r?rA<00>group) rr"rzr|rgr}<00>reppath<74>passrep<65> memcachedr~rrIs && r<00>GetSessionConf<6E>config.GetSessionConfs<><00><00>%<25><03> <0B> <0B>3<>n<EFBFBD>D<><08> <11> <1F> <1F> !<21>_<EFBFBD> 4<>V<EFBFBD>=_<>=_<>=a<>=a<>P<>W<>W<>X[<5B>Xc<58>Xc<58>dg<64>do<64>do<64>pq<70>dr<64>sv<73>s~<7E>s~<7E>@A<02>tB<02>C<02>H<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>3<>4<>4<>2<>S<EFBFBD>[<5B>[<5B>@<40>><3E>Q<><08><17><1F><1F><18>*<2A><06><19>&<26>#<23>&<26>&<26><19>,<2C>,<2C>U<EFBFBD>4q<34>4x<34>4x<34>zB<02>5C<02>D<02> D<02>K<><03><19>y<EFBFBD>y<EFBFBD><13>-<2D> <0C> <17>'<27>-<2D>-<2D>a<EFBFBD>0<>L<EFBFBD>"<22>L<EFBFBD>O<><07>L<><07>B<> <09><16>I<EFBFBD>I<EFBFBD>g<EFBFBD>.<2E> <09><18><1A> <09> <09>)<29>4<>I<EFBFBD><13><19><19>7<EFBFBD>+<2B><06><11><04> <11><1B>\<5C>\<5C>!<21>_<EFBFBD>F<EFBFBD><17>F<EFBFBD> <14><1C>?<3F>?<3F>1<EFBFBD>%<25>D<EFBFBD>!<21><0F><0F><01>*<2A>I<EFBFBD><1B>I<EFBFBD><1E> <0C>k<EFBFBD>9<EFBFBD>h<EFBFBD>PV<50>X^<5E>`d<>e<>er%c<08><00>^RIpVPpVPP4pVPpVP
pVR8wd<>RpRp\ P!Wt4'g;\ P!W<>4'gVR8wd\P!RR4#\V4pVR8<>gV^8d\P!RR 4#R
p \ P!Y<>4'd\P!RR R 4#R VP,R,p
Rp \PPR4p V 'Ed$\P !4'EgRP#VPVP^,VP^,4p \PPR4'dRVP,R,p VPRP#VP44^,p \PPR4'dRP#TP4p \P$!T 4pM.pW<>3EFpV'gK\P&!V4pRpRV,R,p\ P(!VVV4pV 'd\P !4'Ed`VR8Xd<>\ P!RV4'g\P!RRV34u#RpRV: RV: R2p\ P!VV4'd\ P(!VVV4pM\ P(!RRV,V4pVR 8Xd<>\ P!R!V4'g\P!RRV34u#RpR"V: RV: R#2p\ P!VV4'd\ P(!VVV4pM\ P(!RRV,V4pVR$8Xd<>\ P!R%V4'g\P!RRV34u#V'd R&V,pMR'pRpR"V: RV: V: R#2p\ P!VV4pV'd\ P(!VVV4pM\ P(!RRV,V4pVR8Xd[RpR(p\ P!VV4'd\ P(!VVV4pEM;\ P(!RRV,V4pEMVR8Xd<>RV9d\P!RRV34u#RpRV: RV: R2p\ P!VV4'd\ P(!VVV4pM\ P(!RRV,V4pVR 8Xd<>R!V9d\P!RRV34u#RpR"V: RV: R#2p\ P!VV4'd\ P(!VVV4pM\ P(!RRV,V4pVR$8Xd<>R%V9d\P!RRV34u#V'd R&V,pMR'pRpR"V: RV: V: R#2p\ P!VV4pV'd\ P(!VVV4pM\ P(!RRV,V4pVR8XdZRpR(p\ P!VV4'd\ P(!VVV4pM\ P(!RRV,V4p\P*!VV4EK \P,!R)VP,R*,4\P.!4\P!R+R,4# \P!RR 4u#;i Rp EL<>;i)-rNr=z<>(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})z]^(?=^.{3,255}$)[a-zA-Z0-9\_\-][a-zA-Z0-9\_\-]{0,62}(\.[a-zA-Z0-9\_\-][a-zA-Z0-9\_\-]{0,62})+$r,Fz(Please enter the correct [domain or IP]!r$r%z
[\~\`\/\=]z7Please do NOT enter the following special characters {}z " ~ ` / = "r<>r^z/usr/local/lsws/bin/lswsctrlrlrmrnz#/usr/local/lsws/lsphp{}/lib/php/20*z*/usr/local/lsws/lsphp{}/lib64/php/modules/z$session.save_handler\s*=\s*(.+)\r?\nzsession.save_handler = r_r<>z memcached.soz&Please install the {} extension first.z#\nsession.save_path\s*=\s*(.+)\r?\nz\nsession.save_path = "r,z" \nz
;session.save_path = "/tmp"<22>memcachez memcache.soz\nsession.save_path = "tcp://z"\n<>rediszredis.soz?auth=rxz\nsession.save_path = "/tmp"\nrurvTr=)<18>globr}r2r)rIrr?rArr<>r<>r rarrrr<>r<>r<>r<>rdrr@re)rr"r<>rr2rIr<00>iprep<65>
rep_domain<EFBFBD>preprz<00> filename_ols<6C> ols_exist<73>ols_php_os_path<74> ols_so_list<73>fr|rgry<00>ress&& r<00>SetSessionConf<6E>config.SetSessionConf*sr<00><00><13> <0F> <1C> <1C><01> <10>V<EFBFBD>V<EFBFBD>\<5C>\<5C>^<5E><02><12>x<EFBFBD>x<EFBFBD><04><14><1A><1A><06> <0C><07><<3C>z<02>E<EFBFBD>y<>J<EFBFBD><15>9<EFBFBD>9<EFBFBD>U<EFBFBD>'<27>'<27><02> <09> <09>*<2A>0I<30>0I<30><15><1B>$<24>!<21>+<2B>+<2B>E<EFBFBD>3]<5D>^<5E>^<5E> p<01><1A>4<EFBFBD>y<EFBFBD><04><17>5<EFBFBD>=<3D>D<EFBFBD>1<EFBFBD>H<EFBFBD>!<21>4<>4<>U<EFBFBD><r<>s<>s<>%-<2D>!<21>D<EFBFBD><11>y<EFBFBD>y<EFBFBD><14>&<26>&<26><1D>0<>0<><15>8q<38>uB<02>D<02>D<02>%<25><03> <0B> <0B>3<>n<EFBFBD>D<><08><1B> <0C><16>G<EFBFBD>G<EFBFBD>N<EFBFBD>N<EFBFBD>#A<>B<> <09> <14>9<EFBFBD>V<EFBFBD>?<3F>?<3F>A<>A<>T<>[<5B>[<5B>\_<>\g<>\g<>il<69>it<69>it<69>uv<75>iw<69>X[<5B>Xc<58>Xc<58>de<64>Xf<58>h<01>L<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>3<>4<>4<>6<><13><1B><1B>D<>~<7E>U<> <0C> '<27>"&<26>)<29>)<29>,Q<>,X<>,X<>Y\<5C>Yd<59>Yd<59>,e<>"f<>gh<67>"i<><0F><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>3<>4<>4<>"N<>"U<>"U<>VY<56>Va<56>Va<56>"b<><0F><1C>*<2A>*<2A>_<EFBFBD>5<>K<EFBFBD><1C>K<EFBFBD><1A>(<28>A<EFBFBD><14><18><1B>_<EFBFBD>_<EFBFBD>Q<EFBFBD>'<27>F<EFBFBD>9<>C<EFBFBD>,<2C>q<EFBFBD>0<>4<EFBFBD>7<>C<EFBFBD><17>V<EFBFBD>V<EFBFBD>C<EFBFBD><13>f<EFBFBD>-<2D>F<EFBFBD><1C><06> B<> B<> D<> D<><14> <0B>#<23><1D>9<EFBFBD>9<EFBFBD>^<5E>V<EFBFBD><<3C><<3C>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<>@<40>C<EFBFBD>AC<41>D<EFBFBD>I<>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14>
<EFBFBD>?<3F><1D>9<EFBFBD>9<EFBFBD>]<5D>F<EFBFBD>;<3B>;<3B>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<>@<40>C<EFBFBD>FH<46>$<24>O<>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14><07><<3C><1D>9<EFBFBD>9<EFBFBD>Z<EFBFBD><16>8<>8<>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<><1D>!)<29>F<EFBFBD>!2<><06>!#<23><06>@<40>C<EFBFBD>HJ<48>D<EFBFBD>RX<52>Y<>C<EFBFBD><1C>)<29>)<29>C<EFBFBD><16>0<>C<EFBFBD><1A>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14><07><<3C>@<40>C<EFBFBD>;<3B>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><><14> <0B>#<23>%<25>[<5B>8<>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<>@<40>C<EFBFBD>AC<41>D<EFBFBD>I<>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14>
<EFBFBD>?<3F>$<24>K<EFBFBD>7<>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<>@<40>C<EFBFBD>FH<46>$<24>O<>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14><07><<3C>!<21><1B>4<>%<25>8<>8<><15>@h<>kl<6B>jn<6A>o<>o<><1D>!)<29>F<EFBFBD>!2<><06>!#<23><06>@<40>C<EFBFBD>HJ<48>D<EFBFBD>RX<52>Y<>C<EFBFBD><1C>)<29>)<29>C<EFBFBD><16>0<>C<EFBFBD><1A>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06><14><07><<3C>@<40>C<EFBFBD>;<3B>C<EFBFBD><19>y<EFBFBD>y<EFBFBD><13>f<EFBFBD>-<2D>-<2D>!#<23><16><16><03>S<EFBFBD>&<26>!9<><06>!#<23><16><16>(G<>Ih<49>kn<6B>In<49>pv<70>!w<><06> <12> <1C> <1C>Q<EFBFBD><06> '<27>o)<29>p <0F><18><18>/<2F>#<23>+<2B>+<2B>=<3D> <09>I<>J<><0E><1C><1C><1E><15>(<28>(<28><14>/D<>E<>E<><45>a p<01><1D>0<>0<><15>8n<38>o<>o<><6F> '<27>"&<26><0F>s<00>%/_<00>+1_7<00>_4<03>7_>c<08><00>RR.p^pVF<>p\PPV4'g\P!RV,4\P
!V4pVF<>p\PP VR,V,4'dB\P
!VR,V,4pVFpRV9gK V^, pK KwRV9gK<>V^, pK<> K<> Rp \\P!V 4^,PR4^,4p
Rp V
\\P!V 4^,PR4^,4, p
RVR V
/#)
z/tmpz/www/php_sessionz mkdir -p %sr<73><00>sess_z'find /tmp -mtime +1 |grep 'sess_'|wc -lr_z3find /www/php_session -mtime +1 |grep 'sess_'|wc -l<>total<61>oldfile) rrrrr@r<><00>isdirr<72>r<>) rr"<00>dr <00>i<>list<73>l<>l1<6C>llr<6C><00>old_files && r<00>GetSessionCount<6E>config.GetSessionCount<6E>s+<00><00> <11>$<24>
%<25><01><11><05><12>A<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>!<21>$<24>$<24>f<EFBFBD>&6<>&6<>}<7D>Q<EFBFBD><EFBFBD>&G<><15>:<3A>:<3A>a<EFBFBD>=<3D>D<EFBFBD><19><01><15>7<EFBFBD>7<EFBFBD>=<3D>=<3D><11>3<EFBFBD><15>q<EFBFBD><17>)<29>)<29><1B><1A><1A>A<EFBFBD>c<EFBFBD>E<EFBFBD>!<21>G<EFBFBD>,<2C>B<EFBFBD> <20><02>"<22>b<EFBFBD>=<3D>!<21>Q<EFBFBD>J<EFBFBD>E<EFBFBD>!<21><1D><1A>a<EFBFBD><<3C><19>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1A><13> 6<><01><16>v<EFBFBD>'<27>'<27><01>*<2A>1<EFBFBD>-<2D>3<>3<>D<EFBFBD>9<>!<21><<3C>=<3D><08> A<><01><10>C<EFBFBD><06>(<28>(<28><11>+<2B>A<EFBFBD>.<2E>4<>4<>T<EFBFBD>:<3A>1<EFBFBD>=<3D>><3E>><3E><08><17><05>i<EFBFBD><08>1<>1r%c<08><><00>Rp\P!V4Rp\P!V4VPV4R,pV^8Xd\P!RR4#\P!RR4#)z-find /tmp -mtime +1 |grep 'sess_'|xargs rm -fz9find /www/php_session -mtime +1 |grep 'sess_'|xargs rm -fr<66>Tr'<00>Failed to delete)rr@r<>r )rr"r<><00> old_file_confs&& r<00> DelOldSession<6F>config.DelOldSession<6F>so<00><00> ;<3B><01><0E><18><18><11><1B> G<><01><0E><18><18><11><1B><1D>,<2C>,<2C>S<EFBFBD>1<>)<29><<3C> <0A> <18>A<EFBFBD> <1D><19>,<2C>,<2C>T<EFBFBD>3I<33>J<> J<><19>,<2C>,<2C>T<EFBFBD>3E<33>F<> Fr%c<08>&<00>/pRpRp\PPV4'gVP4\P
!V4VR&\P
!V4VR&RVR&/VR&VR,'g RVR&RVR&M<>\P !V4VR&VR,'g*VP4\P !V4VR&VR,'d~VR,R,R 8Xdi\PPR
4'g&\PPR 4'dR VR&\P
!R 4VR&\PPR4VR&V#)r<>r<><00>
privateKey<EFBFBD>certPemF<6D> download_root<6F>inforx<00>issuerr<72>r<>rTr<00> root_passwordrrg)rrrr<>rr<><00> get_cert_data)rr"r<00>key_file<6C> cert_files&& r<00> GetPanelSSL<53>config.GetPanelSSL<53>s;<00><00><11><04>'<27><08>)<29> <09><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27> <10>N<EFBFBD>N<EFBFBD> <1C>#<23>_<EFBFBD>_<EFBFBD>X<EFBFBD>6<><04>\<5C><1A> <20>/<2F>/<2F>)<29>4<><04>Y<EFBFBD><0F> %<25><04>_<EFBFBD><1D><19><04>V<EFBFBD> <0C><13>L<EFBFBD>!<21>!<21>!#<23>D<EFBFBD><1C> <1E> <20>D<EFBFBD><19>O<EFBFBD>!<21>/<2F>/<2F> <09>:<3A>D<EFBFBD><16>L<EFBFBD><17><06><<3C><<3C><14><0E><0E> <20>%<25>3<>3<>I<EFBFBD>><3E><04>V<EFBFBD> <0C><13>F<EFBFBD>|<7C>|<7C><17><06><<3C><08>)<29>^<5E>;<3B><19>w<EFBFBD>w<EFBFBD>~<7E>~<7E>&=<3D>><3E>><3E>"<22>'<27>'<27>.<2E>.<2E>Qe<51>Bf<42>Bf<42>04<30><04>_<EFBFBD>-<2D>06<30><0F><0F>@V<>0W<30><04>_<EFBFBD>-<2D><19>g<EFBFBD>g<EFBFBD>n<EFBFBD>n<EFBFBD>^<5E>4<><04>U<EFBFBD> <0B><13> r%c<08><><00>RpRpRpRpRV9g,\P!R\P!R44#RV9g,\P!R\P!R44#VPP 4VnVP
P 4Vn^R IpVP 4pVPVP
4wrxV'g\P!RV4#\P!WAP
4\P!V4'g.\P!V4\P!RR
4#VP'd!\P!W!P4VP
'd!\P!W1P
4\P!R R 4\PPV4'd\P!R R 4\P!R\P!R44#)r<>r<>z /tmp/cert.plrr<>Fz!The certPem parameter is missing!r<>z$The privateKey parameter is missing!Nz Certificate ERROR, please check!rrtr<>TzCertificate saved!)rr<>rMr<>r)r<><00>ssl_info<66>verify_certificate_chainr<00> CheckCertrr*rr) rr"<00>keyPath<74>certPath<74> checkCert<72>ssl_plr<6C><00>check_chain_flag<61>check_chain_msgs && rr<><00>config.SavePanelSSL<53>s<><00><00>&<26><07>(<28><08>"<22> <09><1E><06><18>C<EFBFBD><1F><06>(8<>(8<><15>v<EFBFBD>{<7B>{<7B>Kn<4B>?o<>(p<>!p<><1B>s<EFBFBD>"<22>6<EFBFBD>+;<3B>+;<3B>E<EFBFBD>6<EFBFBD>;<3B>;<3B>Ou<4F>Cv<43>+w<>$w<><1C><1E><1E>-<2D>-<2D>/<2F><03><0E><19>k<EFBFBD>k<EFBFBD>'<27>'<27>)<29><03> <0B><17><1B>$<24>$<24>&<26><08>-5<>,M<>,M<>c<EFBFBD>k<EFBFBD>k<EFBFBD>,Z<>)<29><18><1F><06>(8<>(8<><15><0F>(P<>!P<><0E><18><18><19>K<EFBFBD>K<EFBFBD>0<><15><1F><1F> <09>*<2A>*<2A> <0E>I<EFBFBD>I<EFBFBD>i<EFBFBD> <20><19>#<23>#<23>E<EFBFBD>+M<>N<> N<> <0E>><3E>><3E>><3E> <12> <1C> <1C>W<EFBFBD>n<EFBFBD>n<EFBFBD> 5<> <0E>;<3B>;<3B>;<3B> <12> <1C> <1C>X<EFBFBD>{<7B>{<7B> 3<><0E><18><18><1E><16>0<> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>&<26> !<21> !<21>6<EFBFBD>#3<>#3<>4D<34>f<EFBFBD>#M<><15><1F><1F><04>f<EFBFBD>k<EFBFBD>k<EFBFBD>2F<32>&G<>H<>Hr%c<08><00>R\9d\R,#^RIp\P!R4R,p\P!V4pRpVP
!WC4P 4^,pT\R&T# RpL;i)rINr[z/pure-ftpd/etc/pure-ftpd.confz6\n#?\s*Bind\s+[0-9]+\.[0-9]+\.[0-9]+\.+[0-9]+,([0-9]+)<29>21)rr?rrcr<>rArr)rr?r{rnrgrIs& r<00> get_ftp_port<72>config.get_ftp_ports|<00><00> <11>W<EFBFBD> <1C>W<EFBFBD>V<EFBFBD>_<EFBFBD>4<><11> <18><19>(<28>(<28><1C>6<>9X<39>X<>D<EFBFBD><19>?<3F>?<3F>4<EFBFBD>(<28>D<EFBFBD>K<>C<EFBFBD><15>9<EFBFBD>9<EFBFBD>S<EFBFBD>'<27>.<2E>.<2E>0<><11>3<>D<EFBFBD><1F><07><06><0F><13> <0B><> <18><17>D<EFBFBD>s <00>AB<00>B c<08><><00>^RIHpV!4P\P!/44/pR\
9dh\P !4\
R,R&\P!4\
R&\
R,\
R,R&\
R,pV'gD\P!R4PRR 4PR4P4p\P!4VR&\P !4VR&VP4VR&VP4VR&VP4pVR ,VR
&VR ,VR &V#)r)<01>mainr <00> distribution<6F> webserverr<72>z2webserver,sites_path,backup_path,status,mysql_root<6F>request_iptype<70> request_type<70>default<6C>language<67> languages<65> language_listr/)<0F>panelModelV2.publicModelr<6C><00>get_public_configr<00> to_dict_objr<00>get_linux_distributionrbr<>r<>r<>r~<00>get_request_iptype<70>get_request_type<70> get_language)rr"r<>r<>rMs&& r<00>
get_config<EFBFBD>config.get_config(s(<00><00>1<> <0C><06> <20> <20><16>!3<>!3<>B<EFBFBD>!7<>8<><11><04> <13>w<EFBFBD> <1E>06<30>0M<30>0M<30>0O<30>G<EFBFBD>H<EFBFBD> <1D>n<EFBFBD> -<2D>#)<29>#7<>#7<>#9<>G<EFBFBD>K<EFBFBD> <20>-4<>[<5B>-A<>G<EFBFBD>H<EFBFBD> <1D>k<EFBFBD> *<2A><1A>8<EFBFBD>$<24>D<EFBFBD><13><19>8<EFBFBD>8<EFBFBD>H<EFBFBD>%<25>+<2B>+<2B>F<EFBFBD>6<EFBFBD>:<3A>@<40>@<40>Au<41>v<>{<7B>{<7B>}<7D>D<EFBFBD>#<23>0<>0<>2<><04>[<5B><19>%<25><<3C><<3C>><3E><04>^<5E><1C>!%<25>!8<>!8<>!:<3A><04> <1D><1E>#<23>4<>4<>6<><04>^<5E><1C><13> <20> <20>"<22><04><1F> <09>?<3F><04>Z<EFBFBD><18> $<24>[<5B> 1<><04>_<EFBFBD><1D><13> r%c<08>0<00>\P!RR4#)<02>logs/error.log<6F><67>)r<00> GetNumLinesr!s&&r<00>get_error_logs<67>config.get_error_logs@s<00><00><15>!<21>!<21>"2<>4<EFBFBD>8<>8r%c<08><><00>^RIp^RIpVP4PR4p\P!R4R,p\P
!WT4pVP !V4pV#)rNr<4E>z/api/panel/is_pro)<07> panelAuthr<00>create_serveridrrcr r)rr"r<>rrrr<00> pluginTmp<6D>
pluginInfos&& r<00>is_pro<72> config.is_proCsV<00><00><1D><19>#<23>#<23>%<25>5<>5<>d<EFBFBD>;<3B><05><14>#<23>#<23>F<EFBFBD>+<2B>.A<>A<><03><1A>O<EFBFBD>O<EFBFBD>C<EFBFBD>.<2E> <09><19>Z<EFBFBD>Z<EFBFBD> <09>*<2A>
<EFBFBD><19>r%c<08>H<00>^RIpVP4PV4#r/)<02>panelApi<70> get_token<65>rr"r<>s&& rr<><00>config.get_tokenK<00><00><00><17><17> <20> <20>"<22>,<2C>,<2C>S<EFBFBD>1<>1r%c<08>H<00>^RIpVP4PV4#r/)r<><00> set_tokenr<6E>s&& rr<><00>config.set_tokenOr<>r%c<08>H<00>^RIpVP4PV4#r/)r<><00> get_tmp_tokenr<6E>s&& rr<><00>config.get_tmp_tokenSs<00><00><17><17> <20> <20>"<22>0<>0<><13>5<>5r%c<08>L<00>\P!4pVP4#r )rZ<00> GetNginxValue<75>rr"<00>ns&& rr<><00>config.GetNginxValueWs<00><00> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><01><10><EFBFBD><EFBFBD> <20> r%c<08>N<00>\P!4pVPV4#r )rZ<00> SetNginxValuer<65>s&& rr<><00>config.SetNginxValue[s<00><00> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><01><10><EFBFBD><EFBFBD>s<EFBFBD>#<23>#r%c<08>L<00>\P!4pVP4#r )<02>apache<68>GetApacheValue<75>rr"<00>as&& rr<><00>config.GetApacheValue_s<00><00> <12>M<EFBFBD>M<EFBFBD>O<EFBFBD><01><10><1F><1F>!<21>!r%c<08>N<00>\P!4pVPV4#r )r<><00>SetApacheValuer<65>s&& rr<><00>config.SetApacheValuecs<00><00> <12>M<EFBFBD>M<EFBFBD>O<EFBFBD><01><10><1F><1F><03>$<24>$r%c<08>N<00>\P!4pVPV4#r )<02>ols<6C> get_valuer<65>s&& r<00> get_ols_value<75>config.get_ols_valueg<00><00><00> <0F>G<EFBFBD>G<EFBFBD>I<EFBFBD><01><10>{<7B>{<7B>3<EFBFBD><1F>r%c<08>N<00>\P!4pVPV4#r )r<00> set_valuer<65>s&& r<00> set_ols_value<75>config.set_ols_valuekrr%c<08>N<00>\P!4pVPV4#r )r<00>get_private_cacher<65>s&& r<00>get_ols_private_cache<68>config.get_ols_private_cacheo<00><00><00> <0F>G<EFBFBD>G<EFBFBD>I<EFBFBD><01><10>"<22>"<22>3<EFBFBD>'<27>'r%c<08>N<00>\P!4pVPV4#r )r<00>get_static_cacher<65>s&& r<00>get_ols_static_cache<68>config.get_ols_static_caches<00><00><00> <0F>G<EFBFBD>G<EFBFBD>I<EFBFBD><01><10>!<21>!<21>#<23>&<26>&r%c<08>N<00>\P!4pVPV4#r )r<00>set_static_cacher<65>s&& r<00>set_ols_static_cache<68>config.set_ols_static_cachewrr%c<08>N<00>\P!4pVPV4#r )r<00>switch_private_cacher<65>s&& r<00>switch_ols_private_cache<68>config.switch_ols_private_cache{s<00><00> <0F>G<EFBFBD>G<EFBFBD>I<EFBFBD><01><10>%<25>%<25>c<EFBFBD>*<2A>*r%c<08>N<00>\P!4pVPV4#r )r<00>set_private_cacher<65>s&& r<00>set_ols_private_cache<68>config.set_ols_private_cacherr%c<08>N<00>\P!4pVPV4#r )r<00>get_private_cache_statusr<73>s&& r<00>get_ols_private_cache_status<75>#config.get_ols_private_cache_status<75>s<00><00> <0F>G<EFBFBD>G<EFBFBD>I<EFBFBD><01><10>)<29>)<29>#<23>.<2E>.r%c<08>@<00>\PPR4#)<01> data/ipv6.pl)rrrr!s&&r<00>get_ipv6_listen<65>config.get_ipv6_listen<65>s<00><00><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>n<EFBFBD>-<2D>-r%c<08>D<00>RpVPV4'd/\P!V4\P!RR4M.\P
!VR4\P!RR4\P !4\P!RR4#)r&<00> Panel settingz(Disable IPv6 compatibility of the panel!rtz'Enable IPv6 compatibility of the panel!Tr=)r'rr*rr<>rrAr )rr"<00> ipv6_files&& r<00>set_ipv6_status<75>config.set_ipv6_status<75>sv<00><00>"<22> <09> <0F> <1F> <1F><03> $<24> $<24> <0E>I<EFBFBD>I<EFBFBD>i<EFBFBD> <20> <12> $<24> $<24>_<EFBFBD>6`<60> a<> <12> <1C> <1C>Y<EFBFBD><06> /<2F> <12> $<24> $<24>_<EFBFBD>6_<36> `<60><0E><1C><1C><1E><15>(<28>(<28><14>/D<>E<>Er%c<08>L<00>^RIpVP4PV4pRVR,R,,p\PP V4'g\
P !RR4#VR,R,VnVPV4VR,#)rN<>/www/server/php/%s/bin/phpraFzPHP is not installedr}) <09> panelSite<74> GetPHPVersionrrrrr <00> php_version<6F>set_cli_php_version)rr"r0<00> php_versions<6E> php_bin_srcs&& r<00>auto_cli_php_version<6F>config.auto_cli_php_version<6F>s<><00><00><18> <20>*<2A>*<2A>,<2C>:<3A>:<3A>3<EFBFBD>?<3F> <0C>2<>\<5C>"<22>5E<35>i<EFBFBD>5P<35>P<> <0B><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>k<EFBFBD>*<2A>*<2A>6<EFBFBD>3L<33>3L<33>U<EFBFBD>Si<53>3j<33>,j<>&<26>r<EFBFBD>*<2A>9<EFBFBD>5<><03><0F> <0C> <20> <20><13>%<25><1B>B<EFBFBD><1F>r%c<08>t<00>Rp\PPV4'd&\PPV4'gVP V4#\P
!V4p\PPV4'gVP V4#^RIpVP 4PV4p\V4^8Xd\P!RR4#V^VF(pVPVR,4R8wgK"RVRV/u# RVP V4RV/#)<08> /usr/bin/phpNFzFailed to get php version!rar<00>versionsr}) rrr<00>islinkr6<00>readlinkr0r1rRrr r~)rr"<00>php_bin<69>link_rer0r4<00>vs&& r<00>get_cli_php_version<6F>config.get_cli_php_version<6F>s<><00><00> <20><07><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>g<EFBFBD>&<26>&<26>b<EFBFBD>g<EFBFBD>g<EFBFBD>n<EFBFBD>n<EFBFBD>W<EFBFBD>.E<>.E<>t<EFBFBD>Oh<4F>Oh<4F>il<69>Om<4F>Hm<48><14>+<2B>+<2B>g<EFBFBD>&<26><07><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>g<EFBFBD>&<26>&<26>t<EFBFBD>/H<>/H<><13>/M<>(M<><18> <20>*<2A>*<2A>,<2C>:<3A>:<3A>3<EFBFBD>?<3F> <0C> <0E>|<7C> <1C>a<EFBFBD> <1F><19>,<2C>,<2C>U<EFBFBD>3O<33>P<> P<> <18><11>O<EFBFBD><1D>A<EFBFBD><16>|<7C>|<7C>A<EFBFBD>i<EFBFBD>L<EFBFBD>)<29>R<EFBFBD>/<2F><18>!<21>J<EFBFBD>|<7C>8\<5C>1\<5C><1E><18><14>2<>2<>3<EFBFBD>7<>
<EFBFBD><<3C>P<>Pr%c<08> <00>RpRVP,pRpRVP,pRpRVP,pRpRVP,p Rp
R VP,p R
p R VP,p \PPV4'g\P
!R R 4#\P !R4^,PR4pVR8wd\P !R4\P !RV,R,V,R,V,R,V,R,V
,R,V ,4\P !RV: RV: 24\P !RV: RV: 24\P !RV: RV: 24\P !RV : RV: 24\P !RV : RV
: 24\P !RV : RV : 24^RIpVP4VR8wd\P !R4\P!RRVP34\P!RR4#)r9r/z/usr/bin/phpizez/www/server/php/%s/bin/phpizez/usr/bin/php-fpmz/www/server/php/%s/sbin/php-fpmz /usr/bin/peclz/www/server/php/%s/bin/peclz /usr/bin/pearz/www/server/php/%s/bin/pearz/etc/php-cli.iniz"/www/server/php/%s/etc/php-cli.iniFz#Specified PHP version not installedzlsattr /usr|grep /usr/binz-i-zchattr -i /usr/binr<6E><00> zln -sf Nzchattr +i /usr/bin<69>Panel settingszSet the PHP-CLI version to: {}Tr=r}) r2rrrr<00>return_messager@r~<00>jobs<62>set_php_cli_envr<76>r )rr"r=r5<00>php_ize<7A> php_ize_src<72>php_fpm<70> php_fpm_src<72>php_pecl<63> php_pecl_src<72>php_pear<61> php_pear_src<72> php_cli_ini<6E>php_cli_ini_src<72> is_chattrrFs&& rr3<00>config.set_cli_php_version<6F>s<><00><00> <20><07>2<>S<EFBFBD>_<EFBFBD>_<EFBFBD>D<> <0B>#<23><07>5<><03><0F><0F>G<> <0B>$<24><07>7<>#<23>/<2F>/<2F>I<> <0B>"<22><08>4<>s<EFBFBD><EFBFBD><EFBFBD>F<> <0C>"<22><08>4<>s<EFBFBD><EFBFBD><EFBFBD>F<> <0C>(<28> <0B>><3E><13><1F><1F>P<><0F><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>k<EFBFBD>*<2A>*<2A>6<EFBFBD>3H<33>3H<33><15>Ot<4F>3u<33>,u<><1A>$<24>$<24>%@<40>A<>!<21>D<>I<>I<>%<25>P<> <09> <14><02>?<3F>F<EFBFBD>,<2C>,<2C>-A<>B<><0E><18><18><18>G<EFBFBD>+<2B>c<EFBFBD>1<>7<EFBFBD>:<3A>S<EFBFBD>@<40>7<EFBFBD>J<>S<EFBFBD>P<>S[<5B>[<5B>^a<>a<>dl<64>l<>or<6F>r<>vA<02>A<02> B<02><0E><18><18>;<3B>w<EFBFBD>?<3F>@<40><0E><18><18>;<3B>w<EFBFBD>?<3F>@<40><0E><18><18>;<3B>w<EFBFBD>?<3F>@<40><0E><18><18><<3C><08>A<>B<><0E><18><18><<3C><08>A<>B<><0E><18><18>?<3F>;<3B>G<>H<><13> <0C><1C><1C><1E> <14><02>?<3F>V<EFBFBD>-<2D>-<2D>.B<>C<><0E> <20> <20>!1<>2R<32>TW<54>Tc<54>Tc<54>Se<53>f<><15>(<28>(<28><14>.C<>D<>Dr%c<08> <00>RpRpRRRRRRRV/p\PPV4'gV#\P!\
P !V44pY5R&T# \P!T4Tu#;i)<08>config/basic_auth.jsonT<6E>
basic_userrx<00> basic_pwd<77>openF<6E>
is_install)rrrrrrr<>r*)rr"rrYr<><00>ba_confs&& r<00>get_basic_auth_stat<61>config.get_basic_auth_stat<61>s{<00><00>'<27><04><19>
<EFBFBD><1E>r<EFBFBD>+<2B>b<EFBFBD><16><05>l<EFBFBD>:<3A>V<><06><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>d<EFBFBD>#<23>#<23>F<EFBFBD>]<5D> <1A><1A>j<EFBFBD>j<EFBFBD><16><1F><1F><14>!6<>7<>G<EFBFBD>!+<2B> <0C><1D><16><0E><>  <1A> <0E>I<EFBFBD>I<EFBFBD>d<EFBFBD>O<EFBFBD><19>M<EFBFBD>s <00>*A'<00>'Bc<08>><00>RpVPR8XdRpRpRpRpV'dXVPP4'd!VPP4'g\P
!RR4#\ PPV4'd,\P!\P!V44pV'gpR\P!VPP4V,4R\P!VPP4V,4R V/pM<>VP'd9\P!VPP4V,4VR&VP'd9\P!VPP4V,4VR&W%R &\P!V\P!V44\ P !VR
4\P"!R R V34\P$!R R V,4\P!RR4\P&!RR4# \ P!T4EL<>;i)FrtTz_capnis.comrUNz?BasicAuth authentication username and password cannot be empty!rVrWrXr<>rDzSet the BasicAuth status to: {}z Set the BasicAuth status to: %sr<73>r=)rXrVr)rWrr<>rrrrrr<>r*r<>rr<00>chmodr<64>r<>r )rr"<00>is_open<65>tipsrrZs&& r<00>set_basic_auth<74>config.set_basic_auth<74>s<><00><00><17><07> <0E>8<EFBFBD>8<EFBFBD>v<EFBFBD> <1D><14>w<EFBFBD><17><04>'<27><04><16><07> <12><16>><3E>><3E>'<27>'<27>)<29>)<29><13><1D><1D>1D<31>1D<31>1F<31>1F<31>v<EFBFBD>O_<4F>O_<4F>`e<>gh<02>Pi<02>Ii<02> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24> <1F> <1F> <20><1E>*<2A>*<2A>V<EFBFBD>_<EFBFBD>_<EFBFBD>T<EFBFBD>%:<3A>;<3B><07><17>#<23>F<EFBFBD>J<EFBFBD>J<EFBFBD>s<EFBFBD>~<7E>~<7E>/C<>/C<>/E<><04>/L<>$M<>k<EFBFBD>Z`<60>Zd<5A>Zd<5A>eh<65>er<65>er<65>ex<65>ex<65>ez<65>~B<02>fB<02>[C<02>DJ<02>KR<02>S<02>G<EFBFBD><12>~<7E>~<7E>~<7E>v<EFBFBD>z<EFBFBD>z<EFBFBD>#<23>.<2E>.<2E>BV<42>BV<42>BX<42>[_<>B_<42>7`<60>w<EFBFBD>|<7C>4<><12>}<7D>}<7D>}<7D>V<EFBFBD>Z<EFBFBD>Z<EFBFBD><03> <0A> <0A>@S<>@S<>@U<>X\<5C>@\<5C>5]<5D>g<EFBFBD>k<EFBFBD>2<>%<25>F<EFBFBD>O<EFBFBD><0E><18><18><14>d<EFBFBD>j<EFBFBD>j<EFBFBD><17>1<>2<>
<EFBFBD><08><08><14>c<EFBFBD><1A><0E> <20> <20>!1<>2S<32>V]<5D>U_<55>`<60><0E> <20> <20>!1<>2T<32>W^<5E>2^<5E>_<><0E><18><18>)<29>&<26>1<><15>(<28>(<28><14>.C<>D<>D<><44> <20><12> <09> <09>$<24><0F>s <00>!*J<00>Jc<08>F<00>VPRR4PRR4#)<04><z&lt;<3B>>z&gt;)r<>)r<00>texts&&r<00>xsssec<65> config.xsssec<65>s <00><00><13>|<7C>|<7C>C<EFBFBD><16>(<28>0<>0<><13>f<EFBFBD>=<3D>=r%c<08><><00>Rp\PPV4'g\P!RR4#\P
!VR4p\P !RVPV44#)r<>Fz Logs emptiedr<64>T)rrrrr r<>r<>rg)rr"rzr<>s&& r<00>get_panel_error_logs<67>config.get_panel_error_logs<67>s[<00><00>#<23><08><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27><06>0I<30>0I<30>%<25>P^<5E>0_<30>)_<><17>#<23>#<23>H<EFBFBD>T<EFBFBD>2<><06><15><1F><1F><04>T<EFBFBD>[<5B>[<5B><16>%8<>9<>9r%c<08><><00>Rp\P!VR4\P!RR4\P!RR4\P!RR4#)r<>rxrDzClearing log infoTzCleared!)rrr<>r<>r r<>s&& r<00>clean_panel_error_logs<67>config.clean_panel_error_logssN<00><00>#<23><08><0E><18><18><18>"<22>%<25><0E> <20> <20>!1<>2E<32>F<><0E> <20> <20>!1<>3F<33>G<><15>(<28>(<28><14>j<EFBFBD>9<>9r%c<08>N<00>^RIpVP4pVP4pV#r/)r<><00>get_cert_source)rr"r<>r<><00>spgs&& rrp<00>config.get_cert_source s&<00><00><1B> <19> &<26> &<26> (<28><02><10> <20> <20>"<22><03><12>
r%c<08>><00>Rp\PPV4'dRp\P!V4MRp\P
!VR4\P !RRV34\P!4\P!RR4#)z data/debug.pl<70>Close<73>Openrtr<>z{} Developer mode(DeBug)Tr=) rrrr*rrr<>rAr )rr"<00>
debug_path<EFBFBD>t_strs&& r<00> set_debug<75>config.set_debugsx<00><00>$<24>
<EFBFBD> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>*<2A> %<25> %<25><1B>E<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>j<EFBFBD> !<21><1A>E<EFBFBD> <12> <1C> <1C>Z<EFBFBD><06> /<2F><0E> <20> <20>!6<>7Q<37>SX<53>RZ<52>[<5B><0E><1C><1C><1E><15>(<28>(<28><14>.C<>D<>Dr%c<08><00>Rp\PPV4'dRp\P!V4MRp\P
!VR4\P !RRV34\P!RR4#)zdata/not_network.plrtrurtr<>z{} Offline modeTr=)rrrr*rrr<>r )rr"<00>d_pathrws&& r<00> set_local<61>config.set_local!sj<00><00>&<26><06> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>&<26> !<21> !<21><1B>E<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>f<EFBFBD> <1D><1A>E<EFBFBD> <12> <1C> <1C>V<EFBFBD>F<EFBFBD> +<2B><0E> <20> <20>!6<>7H<37>%<25><18>R<><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>\P!RPV44\P!V4pVR8Xd3RV9dR#VRPV4,pVR,V,pMCRpRPV4p\P
!VRV4p\P
!VRV4p\P !W4\P!R PV44R
#) z chattr -i {}ru<00>session.save_pathFz:{}/r_z
*session.save_path(.|
)*filesz:{}rx<00> chattr +i {}N)rr@r<>r<>r?rdr)rr{<00>s_conf<6E>act<63> session_pathrnrg<00>rep1s&&&&& r<00>_edit_user_ini<6E>config._edit_user_ini-s<><00><00><0E><18><18><1E>.<2E>.<2E>t<EFBFBD>4<>5<><15><EFBFBD><EFBFBD>t<EFBFBD>$<24><04> <0E>#<23>:<3A>"<22>d<EFBFBD>*<2A><1C><17>&<26>-<2D>-<2D> <0C>5<>5<>D<EFBFBD><17>$<24>;<3B><16>'<27>D<EFBFBD>4<>C<EFBFBD><18><<3C><<3C> <0C>-<2D>D<EFBFBD><15>6<EFBFBD>6<EFBFBD>#<23>b<EFBFBD><14>&<26>D<EFBFBD><15>6<EFBFBD>6<EFBFBD>$<24>r<EFBFBD>$<24>'<27>D<EFBFBD><0E><18><18><14>$<24><0E><18><18><1E>.<2E>.<2E>t<EFBFBD>4<>5r%c <0C><><00>\P!4R8Xd\P!RR4#^RIp\P!R4P RVP 34PR4P4pRPVR ,4p\PPV4'g<\P!V4\P!R
PV44VP4PV4pV'g\P!RR 4#VP!R 4pR PVR,VR7pRPV4pVP"R8Xd<>\PPV4'gS\P$!Wx4\P!RPV44\P!RR4#VP'WxVP"V4\P!RR4#VP'WxVP"V4\P!RR4#)z:
get.id site id
get.act 0/1
:param get:
:return:
reFzLThe current web server is openlitespeed. This function is not supported yet.Nr<r<><00> name,pathz/www/php_session/{}r<>zchown www.www {}z Failed to get site runtime path!<21>runPath<74>{site_path}{run_path}/.user.inir<00><02> site_path<74>run_pathz2session.save_path={}/
session.save_handler = filesrur<>Tr=)rrbr r0r<>r<>rr<>r~r<>rrrr<>r@<00>GetSiteRunPathr"r<>rr<>) rr"r0<00> site_infor<6F><00> run_path_datar<61><00> user_ini_filerns && r<00>set_php_session_path<74>config.set_php_session_path>s<><00><00> <12> <1F> <1F> !<21>_<EFBFBD> 4<><19>,<2C>,<2C>U<EFBFBD>5C<02>D<02> D<02><18><1A>H<EFBFBD>H<EFBFBD>W<EFBFBD>%<25>+<2B>+<2B>F<EFBFBD>S<EFBFBD>V<EFBFBD>V<EFBFBD>I<EFBFBD>><3E>D<>D<>[<5B>Q<>V<>V<>X<> <09>,<2C>3<>3<>I<EFBFBD>f<EFBFBD>4E<34>F<> <0C><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>l<EFBFBD>+<2B>+<2B> <0E>K<EFBFBD>K<EFBFBD> <0C> %<25> <12> <1C> <1C>/<2F>6<>6<>|<7C>D<> E<>!<21>+<2B>+<2B>-<2D><<3C><<3C>S<EFBFBD>A<> <0A><1C><19>,<2C>,<2C>U<EFBFBD>4V<34>W<> W<> <20>$<24>$<24>Y<EFBFBD>/<2F><08>9<>@<40>@<40>9<EFBFBD>U[<5B>K\<5C>go<67>@<40>p<> <0A>D<>K<>K<>L<EFBFBD>Y<><04> <0E>7<EFBFBD>7<EFBFBD>c<EFBFBD>><3E><15>7<EFBFBD>7<EFBFBD>><3E>><3E>-<2D>0<>0<><16> <20> <20><1D>4<><16> <20> <20><1E>!6<>!6<>}<7D>!E<>F<><1D>0<>0<><14>6K<36>L<>L<> <10> <1F> <1F> <0A>3<EFBFBD>7<EFBFBD>7<EFBFBD><<3C> H<><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> I<> <10> <1F> <1F> <0A>3<EFBFBD>7<EFBFBD>7<EFBFBD><<3C> H<><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> Ir%c<08><><00>^RIp\P!R4PRVP34P R4P 4pV'dhVP4PV4R,pRPVR,VR7p\P!V4pV'd
R V9dR
#R #) rNr<r<>r<>r<>r<>rr<>rTF)
r0rr<>r<>rr<>r~r<>r<>r<>)rr"r0r<>r<>r<>rns&& r<00>get_php_session_path<74>config.get_php_session_path`s<><00><00><18><1A>H<EFBFBD>H<EFBFBD>W<EFBFBD>%<25>+<2B>+<2B>F<EFBFBD>S<EFBFBD>V<EFBFBD>V<EFBFBD>I<EFBFBD>><3E>D<>D<>[<5B>Q<>V<>V<>X<> <09> <14> <20>*<2A>*<2A>,<2C>;<3B>;<3B>C<EFBFBD>@<40><19>K<>H<EFBFBD>=<3D>D<>D<>y<EFBFBD>Y_<59>O`<60>ks<6B>D<>t<>M<EFBFBD><19>?<3F>?<3F>=<3D>1<>D<EFBFBD><13>+<2B>t<EFBFBD>3<><1B>r%c<08><><00>\P!4p\P!VPV4VP 4p\P!VP V4R#r )<07>pyotp<74> random_base32rr<00> _key_file<6C>
get_random<EFBFBD>_username_file)rr<>r<>s& r<00> _create_key<65>config._create_keyksF<00><00><19>'<27>'<27>)<29> <09><0E><18><18><14><1E><1E> <09>2<><17>?<3F>?<3F>$<24><08><0E><18><18><14>,<2C>,<2C>h<EFBFBD>7r%c<08>
<00>\P!VP4p\P!VP4pV'g\P!RR4#V'g\P!RR4#RVRV/#)Fz5The key does not exist. Please turn on and try again.z:The username does not exist. Please turn on and try again.rr<>)rr<>r<>r<>r )rr"rr<>s&& r<00>get_key<65>config.get_keyqse<00><00><14>o<EFBFBD>o<EFBFBD>d<EFBFBD>n<EFBFBD>n<EFBFBD>-<2D><03><19>?<3F>?<3F>4<EFBFBD>#6<>#6<>7<><08><12><19>,<2C>,<2C>U<EFBFBD>4k<34>l<> l<><17><19>,<2C>,<2C>U<EFBFBD>4p<34>q<> q<><15>c<EFBFBD>*<2A>X<EFBFBD>.<2E>.r%c<08><><00>^RIpRp.p\^4F#pVPVPV44K% RP V4pV#)rN<>>1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZrx)<05>random<6F>rangerB<00>choicer<65>)rr<><00>seed<65>sa<73>_<>salts& rr<><00>config.get_randomzsD<00><00><15>O<><04> <0F><02><16>q<EFBFBD><18>A<EFBFBD> <0E>I<EFBFBD>I<EFBFBD>f<EFBFBD>m<EFBFBD>m<EFBFBD>D<EFBFBD>)<29> *<2A><1A><11>w<EFBFBD>w<EFBFBD>r<EFBFBD>{<7B><04><13> r%c<08><><00>\VR4'dVP'g\P!RR4#VPR8XEd]\P
P VP4'g!\P!VP4\P!VP4p\P
P VP4'gB\P!VP4pV'd V'gVP4M+\P!VPVP4\P!VP4p\P!VP4p\P!4pV'g+\P!RRVP R,34#\"P$!\P!VP R,44R,p\&P(P+T4P-TR P/YT4R
7p\P0!TPR ,\3T44\P!R R 4#\P
P VP4'd,\P!VPVP4\P!R R 4# RpL<>;i \4d"p\P!RT4uRp?#Rp?ii;i)r<>FzPlease enter the operation moderuz<>Failed to generate key or username. Please check if the hard disk space is insufficient or the directory cannot be written.[ {} ]z/data/z/config/config.jsonr^<00>YakPanelz{}--{})<01> issuer_name<6D> /qrcode.txtTr=N)r>r<>rr rrr<00>_core_fle_pathr<68>r<>r<><00> _bk_key_filer<65>r<><00>renamerr<>rrr<><00>totp<74>TOTP<54>provisioning_urir<69>rr<>r<>)rr"r<><00>
secret_keyr/<00>
panel_namer<EFBFBD>r<>s&& r<00>set_two_step_auth<74>config.set_two_step_auth<74>sT<00><00><16>s<EFBFBD>5<EFBFBD>!<21>!<21><13><17><17><17><19>,<2C>,<2C>U<EFBFBD>4U<34>V<> V<> <0E>7<EFBFBD>7<EFBFBD>c<EFBFBD>><3E><15>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24>"5<>"5<>6<>6<><12> <0B> <0B>D<EFBFBD>/<2F>/<2F>0<><1D><EFBFBD><EFBFBD>t<EFBFBD>':<3A>':<3A>;<3B>H<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24>"3<>"3<>4<>4<>#<23>_<EFBFBD>_<EFBFBD>T<EFBFBD>^<5E>^<5E><<3C>
<EFBFBD>!<21><18><18>$<24>$<24>&<26><><12> <09> <09>$<24>+<2B>+<2B>D<EFBFBD>N<EFBFBD>N<EFBFBD>;<3B><1F><1F><1F><14><1E><1E>8<>J<EFBFBD><1D><EFBFBD><EFBFBD>t<EFBFBD>':<3A>':<3A>;<3B>H<EFBFBD><1D>(<28>(<28>*<2A>H<EFBFBD><1D><1D>0<>0<><15>8{<02>}A<03>}M<03>}M<03>NV<03>}V<03>|X<03>Y<03>Y<03> ;<3B>,<2C>!%<25><1A><1A>F<EFBFBD>O<EFBFBD>O<EFBFBD>D<EFBFBD><L<><L<>Mb<4D><b<>,c<>!d<>el<65>!m<>J<EFBFBD><1D>z<EFBFBD>z<EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>2<>C<>C<>H<EFBFBD>Zb<5A>Zi<5A>Zi<5A>jt<6A>Z~<7E>C<><><04><16> <20> <20><14>!4<>!4<>]<5D>!B<>3<EFBFBD>t<EFBFBD>9<EFBFBD>M<><1D>0<>0<><14>7L<37>M<>M<><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>d<EFBFBD>n<EFBFBD>n<EFBFBD>-<2D>-<2D><12> <09> <09>$<24>.<2E>.<2E><14>):<3A>):<3A>;<3B><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> I<><49>,<2C>!+<2B>J<EFBFBD><4A><1D> ;<3B><1D>0<>0<><15><01>:<3A>:<3A><> ;<3B>s2<00>!AL<00>#BL$<00>L!<03>L$<00>$ M<03>/M <03>M<03> Mc<08><><00>\P!VP4pV'g\P!RR4#\P!RR4#)Fz"Did not open Google authenticationTz(Google authentication has been turned on)rr<>r<>r )rr"r<>s&& r<00>check_two_step<65>config.check_two_step<65>s?<00><00><1B>_<EFBFBD>_<EFBFBD>T<EFBFBD>^<5E>^<5E>4<>
<EFBFBD><19><19>,<2C>,<2C>U<EFBFBD>4X<34>Y<> Y<><15>(<28>(<28><14>/Y<>Z<>Zr%c<08><><00>\P!VPR,4pV'dV#\P!RR4#)r<>TzNo QR code data, please re-open)rr<>r<>r r8s&& r<00>get_qrcode_data<74>config.get_qrcode_data<74>s7<00><00><15><EFBFBD><EFBFBD>t<EFBFBD>2<>2<>]<5D>B<>C<><04> <0F><17>K<EFBFBD><15>(<28>(<28><14>/P<>Q<>Qr%c<08><><00>RV9g\P!RR4#VPR8Xd R\R&M R\R&\P!RR4#)<07> coll_showF<77>Parameter ERROR!rtT<> tmp_loginr=)rr r<>rr!s&&r<00> set_coll_open<65>config.set_coll_open<65>sQ<00><00><1A>c<EFBFBD>!<21>&<26>*C<>*C<>E<EFBFBD>J\<5C>*]<5D>#]<5D> <0E>=<3D>=<3D>F<EFBFBD> "<22>#'<27>G<EFBFBD>K<EFBFBD> <20>#(<28>G<EFBFBD>K<EFBFBD> <20><15>(<28>(<28><14>.C<>D<>Dr%c<08><><00>Rp\PPV4'd\P!V4M\P
!VR4\P !RR4#)zdata/not_recommend.plrtTr=)rrrr*rrr )rr"<00>pfiles&& r<00>show_recommend<6E>config.show_recommend<6E>sJ<00><00>'<27><05> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25> <20> <20> <0E>I<EFBFBD>I<EFBFBD>e<EFBFBD> <1C> <12> <1C> <1C>U<EFBFBD>6<EFBFBD> *<2A><15>(<28>(<28><14>.C<>D<>Dr%c <0C><00>RpRp\P!\P!V44p\P
P V4'g\P!VR4\P!V4pV'g.pM\P!V4p.pVFIp/pVR,VR&VR,VR&VR,V9VR&VR,VR&VPV4KK \VRR 7p V #)
uX
@name 获取菜单列表
@author hwliang<2020-08-31>
@param get<dict_obj>
@return list
zconfig/menu.json<6F>config/hide_menu.json<6F>[]rr^<00>show<6F>sortc<00><00>VR,#)r<>r=<00><01>xs&r<00><lambda><3E>&config.get_menu_list.<locals>.<lambda><3E>s<00><00>Q<EFBFBD>v<EFBFBD>Yr%)r)
rrrrrrrrrB<00>sorted)
rr"<00> menu_file<6C>hide_menu_filer<65><00> hide_menur<75>r<>ru<00>menuss
&& r<00> get_menu_list<73>config.get_menu_list<73>s<><00><00>'<27> <09>0<><0E><13>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>)<29>4<>5<><04><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>n<EFBFBD>-<2D>-<2D> <12> <1C> <1C>^<5E>T<EFBFBD> 2<><1A>O<EFBFBD>O<EFBFBD>N<EFBFBD>3<> <09><18><1A>I<EFBFBD><1C>
<EFBFBD>
<EFBFBD>9<EFBFBD>-<2D>I<EFBFBD><13><06><15>A<EFBFBD><14>C<EFBFBD><19>$<24><07>C<EFBFBD><04>I<EFBFBD><1C>W<EFBFBD>:<3A>C<EFBFBD><07>L<EFBFBD><1F><04>g<EFBFBD><19>2<>C<EFBFBD><06>K<EFBFBD><1B>F<EFBFBD>)<29>C<EFBFBD><06>K<EFBFBD> <12>M<EFBFBD>M<EFBFBD>#<23> <1E> <16><17>v<EFBFBD>#6<>7<><05><14> r%c <0C>H<00>Rp.ROp\P!VP4p.pVFpWc9dK VPV4K \P
!V\P !V44\P!RR4\P!RR4#)u<>
@name 设置隐藏菜单列表
@author hwliang<2020-08-31>
@param get<dict_obj> {
hide_list: json<list> 所有不显示的菜单ID
}
@return dict
r<EFBFBD>r*z/Successfully modify the panel menu display listTr=)<04>dologin<69> memuAconfig<69> memuAsoft<66>memuA) rr<00> hide_listrBrrrr<>r )rr"r<><00> not_hide_idr<64>r<><00>hs&& r<00>set_hide_menu_list<73>config.set_hide_menu_list<73>s<><00><00>1<><0E>F<> <0B><18>J<EFBFBD>J<EFBFBD>s<EFBFBD>}<7D>}<7D>-<2D> <09><16> <09><1A>A<EFBFBD><10><1F><18> <15> <1C> <1C>Q<EFBFBD> <1F><1B> <0F><18><18><1E><14><1A><1A>I<EFBFBD>)><3E>?<3F><0E> <20> <20><1F>2c<32>d<><15>(<28>(<28><14>/D<>E<>Er%c <0C><><00>R\9d\P!RR4#\P!R4P R^\ \ P !4434PRR4RpRV9d VPp^pR V9d\ VP4p^ pR
V9d\ VP4p\P!R4P4p/p\P!WSWB4pVR ,VR &\P!R4PVR ,R ,VR,,4PR4PR4P!4VR&\#\%VR,44FWp\&P(P+RP-VR,V,R,44VR,V,R&KY V#)uH
@name 获取临时登录列表
@author hwliang<2020-09-2>
@return dict
<EFBFBD>tmp_login_expireFr <00>
temp_loginzstate=? and expire<?<3F>staterx<00>tojsrt<00>rows<77>page<67>shiftr<74><00>row<6F>id descz-id,addtime,expire,login_time,login_addr,stater<65><00>data/session/{}r<00> online_stater})rrr r<>r<>r<>r<>r<>r<>rtr<>r <00>get_page<67>limitr>r<>rr<>rRrrrr<>) rr<00>callbackrtr<>r r<><00> page_datar<61>s && r<00>get_temp_login<69>config.get_temp_login<69>s<><00><00> <1E><17> (<28><16>1J<31>1J<31>5<EFBFBD>Rf<52>1g<31>*g<><0E><08><08><1C><1E>$<24>$<24>%;<3B>a<EFBFBD><13>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>[<5B>AQ<41>=R<>S<>\<5C>\<5C>]d<>fh<66>i<><15><08> <11>T<EFBFBD>><3E><1B>y<EFBFBD>y<EFBFBD>H<EFBFBD> <0A><01> <0E>$<24>;<3B><13>D<EFBFBD>F<EFBFBD>F<EFBFBD> <0B>A<EFBFBD><11><04> <11>T<EFBFBD>><3E><16>t<EFBFBD>y<EFBFBD>y<EFBFBD>><3E>D<EFBFBD><16><08><08><1C>&<26>,<2C>,<2C>.<2E><05><11><04><1A>O<EFBFBD>O<EFBFBD>E<EFBFBD>d<EFBFBD>=<3D> <09> <20><16>(<28><04>V<EFBFBD> <0C><1D>x<EFBFBD>x<EFBFBD> <0C>-<2D>3<>3<>I<EFBFBD>g<EFBFBD>4F<34><13>4L<34>y<EFBFBD>Y^<5E>O_<4F>4_<34>`<60>f<>f<>gp<67>q<>w<>w<> ;<3B>=<3D>=C<>V<EFBFBD>X<EFBFBD> <0A>V<EFBFBD> <0C><16>s<EFBFBD>4<EFBFBD><06><<3C>(<28>)<29>A<EFBFBD>.0<EFBFBD>g<EFBFBD>g<EFBFBD>n<EFBFBD>n<EFBFBD>=N<>=U<>=U<>VZ<56>[a<>Vb<56>cd<63>Ve<56>fj<66>Vk<56>=l<>.m<>D<EFBFBD><16>L<EFBFBD><11>O<EFBFBD>N<EFBFBD> +<2B>*<2A><13> r%c <0C>z<00>\\P!44pRV9d VPMVR,pR\9d\P
!RR4#\P !R4PR^V34P4\P!^04p\P!^ 4pR\P!WE,4R VR
^R ^R R R\V4RV/p\P !R4P4'g^eVR&\P !R4PV4'd[\P!RR\P!VR,R734RRR\P!R4RVRVR,/#\P
!RR4#)uB
@name 设置临时登录
@author hwliang<2020-09-2>
@return dict
r<EFBFBD>r<>r<>Fr r<>zstate=? and expire>?r<>r<>r<><00>
login_time<EFBFBD>
login_addrrxr<><00>addtimerr*z2Generate temporary connection, expiration time: {}r<>r|Tr<54>z&Temporary login URL has been generatedz&Failed to generate temporary login URL)r<>r<>r<>rrr r<>r<>rr7r<>r rr<>r<>rM)rr"r<>r<>r<>r<>rs&& r<00>set_temp_login<69>config.set_temp_logins<><00><00> <15>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>[<5B>!<21><06>)6<>#<23>)=<3D>c<EFBFBD>o<EFBFBD>o<EFBFBD>6<EFBFBD>D<EFBFBD>=<3D> <0B> <1D><17> (<28><16>1J<31>1J<31>5<EFBFBD>Rf<52>1g<31>*g<><0E><08><08><1C><1E>$<24>$<24>%;<3B>a<EFBFBD><16>[<5B>I<>P<>P<>R<><16>&<26>&<26>r<EFBFBD>*<2A><05><15>%<25>%<25>b<EFBFBD>)<29><04> <14>V<EFBFBD>Z<EFBFBD>Z<EFBFBD><05> <0C>-<2D> <12>D<EFBFBD> <13>Q<EFBFBD> <18>!<21> <18>"<22> <14>c<EFBFBD>+<2B>&<26> <15>v<EFBFBD>
<EFBFBD><05><16>x<EFBFBD>x<EFBFBD> <0C>%<25>+<2B>+<2B>-<2D>-<2D><1D>E<EFBFBD>$<24>K<EFBFBD> <11>8<EFBFBD>8<EFBFBD>L<EFBFBD> !<21> (<28> (<28><15> /<2F> /<2F> <12> $<24> $<24>_<EFBFBD>6j<36>lr<6C>l~<7E>l~<7E>FK<02>LT<02>FU<02>mV<02>lX<02> Y<02><1C>d<EFBFBD>E<EFBFBD>6<EFBFBD>;<3B>;<3B>7_<37>+`<60>bi<62>kp<6B>rz<72>}B<02>CK<02>}L<02>M<02> M<02><15>(<28>(<28><15>0X<30>Y<>Yr%c <0C>p<00>R\9d\P!RR4#\VP4p\P
!R4P RV34P4'd/\P!RR4\P!RR 4#\P!RR
4#) uw
@name 删除临时登录
@author hwliang<2020-09-2>
@param args<dict_obj>{
id: int<临时登录ID>
}
@return dict
r<EFBFBD>Fr r<>r<>r*zDelete temporary login URLTr'r<>) rrr r<>rr<>r<>rr<>)rrrs&& r<00>remove_temp_login<69>config.remove_temp_login6s<><00><00> <1E><17> (<28><16>1J<31>1J<31>5<EFBFBD>Rf<52>1g<31>*g<> <10><14><17><17>\<5C><02> <11>8<EFBFBD>8<EFBFBD>L<EFBFBD> !<21> '<27> '<27><06><12><05> 6<> =<3D> =<3D> ?<3F> ?<3F> <12> $<24> $<24>_<EFBFBD>6R<36> S<><19>,<2C>,<2C>T<EFBFBD>3I<33>J<> J<><15>(<28>(<28><15>0B<30>C<>Cr%c <0C><><00>R\9d\P!RR4#\VP4pRP V4p\ PPV4'd[\ P!V4\P!RR\V434\P!RR\V434#\P!RR 4R
#) uq
@name 强制登出
@author hwliang<2020-09-2>
@param args<dict_obj>{
id: int<临时登录ID>
}
@return dict
r<EFBFBD>Fr r<>r*z#Force logout of temporary users:{1}Tz.Temporary user has been forcibly logged out:{}z.The specified user is not currently logged in!N) rrr r<>rr<>rrrr*r<>r<>)rrr<00>s_files&& r<00>clear_temp_login<69>config.clear_temp_loginGs<><00><00> <1E><17> (<28><16>1J<31>1J<31>5<EFBFBD>Rf<52>1g<31>*g<> <10><14><17><17>\<5C><02>"<22>)<29>)<29>"<22>-<2D><06> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>&<26> !<21> !<21> <0E>I<EFBFBD>I<EFBFBD>f<EFBFBD> <1D> <12> $<24> $<24>_<EFBFBD>6[<5B>]`<60>ac<61>]d<>\f<> g<><19>,<2C>,<2C>T<EFBFBD>3c<33>eh<65>ik<69>el<65>dn<64>o<> o<><0E>!<21>!<21>%<25>)Y<>Zr%c <0C><><00>R\9d\P!RR4#\VP4p\P
!R4P RV34PR4P4pV#)u<>
@name 查看临时授权操作日志
@author hwliang<2020-09-2>
@param args<dict_obj>{
id: int<临时登录ID>
}
@return dict
r<EFBFBD>Fr <00>logszuid=?r<>) rrr r<>rr<>r<>r>r)rrrr<>s&& r<00>get_temp_login_logs<67>config.get_temp_login_logsZsb<00><00> <1E><17> (<28><16>1J<31>1J<31>5<EFBFBD>Rf<52>1g<31>*g<> <10><14><17><17>\<5C><02><15>x<EFBFBD>x<EFBFBD><06><1F>%<25>%<25>g<EFBFBD><02>u<EFBFBD>5<>;<3B>;<3B>I<EFBFBD>F<>M<>M<>O<><04><13> r%c<08>N<00>\P!4pVPV4#r )rZ<00>add_nginx_access_log_format<61>rrr<>s&& rr <00>"config.add_nginx_access_log_formath<00><00><00> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><01><10>,<2C>,<2C>T<EFBFBD>2<>2r%c<08>N<00>\P!4pVPV4#r )rZ<00>del_nginx_access_log_formatr
s&& rr<00>"config.del_nginx_access_log_formatlr r%c<08>N<00>\P!4pVPV4#r )rZ<00>get_nginx_access_log_formatr
s&& rr<00>"config.get_nginx_access_log_formatpr r%c<08>N<00>\P!4pVPV4#r )rZ<00>set_format_log_to_websiter
s&& rr<00> config.set_format_log_to_websitets<00><00> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><01><10>*<2A>*<2A>4<EFBFBD>0<>0r%c<08>N<00>\P!4pVPV4#r )rZ<00>%get_nginx_access_log_format_parameterr
s&& rr<00>,config.get_nginx_access_log_format_parameterxs<00><00> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD><01><10>6<>6<>t<EFBFBD><<3C><r%c<08>N<00>\P!4pVPV4#r )r<><00>add_httpd_access_log_format<61>rrr<>s&& rr<00>"config.add_httpd_access_log_format|<00><00><00> <12>M<EFBFBD>M<EFBFBD>O<EFBFBD><01><10>,<2C>,<2C>T<EFBFBD>2<>2r%c<08>N<00>\P!4pVPV4#r )r<><00>del_httpd_access_log_formatrs&& rr<00>"config.del_httpd_access_log_format<61>rr%c<08>N<00>\P!4pVPV4#r )r<><00>get_httpd_access_log_formatrs&& rr"<00>"config.get_httpd_access_log_format<61>rr%c<08>N<00>\P!4pVPV4#r )r<><00>set_httpd_format_log_to_websiters&& rr%<00>&config.set_httpd_format_log_to_website<74>s<00><00> <12>M<EFBFBD>M<EFBFBD>O<EFBFBD><01><10>0<>0<><14>6<>6r%c<08>N<00>\P!4pVPV4#r )r<><00>%get_httpd_access_log_format_parameterrs&& rr(<00>,config.get_httpd_access_log_format_parameter<65>s<00><00> <12>M<EFBFBD>M<EFBFBD>O<EFBFBD><01><10>6<>6<>t<EFBFBD><<3C><r%c<08>L<00>^RIpVP4pVPV4#r/)<03>file_execute_deny<6E>FileExecuteDeny<6E> get_file_deny<6E>rrr+rts&& rr-<00>config.get_file_deny<6E><00>"<00><00> <20> <1D> -<2D> -<2D> /<2F><01><10><EFBFBD><EFBFBD>t<EFBFBD>$<24>$r%c<08>L<00>^RIpVP4pVPV4#r/)r+r,<00> set_file_denyr.s&& rr2<00>config.set_file_deny<6E>r0r%c<08>L<00>^RIpVP4pVPV4#r/)r+r,<00> del_file_denyr.s&& rr5<00>config.del_file_deny<6E>r0r%c<08><><00>RpRp\PPV4'd&\P!V4P 4pM<>\PPR4'd\P !R4pMN\PPR4'dRp\PPR4'dRp\P!RV4#)rx<00>*/www/server/panel/data/panel_login_send.pl<70>)/www/server/panel/data/login_send_type.pl<70>)/www/server/panel/data/login_send_mail.plr <00>-/www/server/panel/data/login_send_dingding.plrXT)rrrrrr)r<>r<>)rr"<00> send_type<70>login_send_type_confs&& r<00>get_login_send<6E>config.get_login_send<6E>s<><00><00><16> <09>K<><1C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>.<2E> /<2F> /<2F><1E><0F><0F>(<<3C>=<3D>C<>C<>E<>I<EFBFBD><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>I<>J<>J<>"<22>O<EFBFBD>O<EFBFBD>,W<>X<> <09><15>7<EFBFBD>7<EFBFBD>><3E>><3E>"M<>N<>N<> &<26>I<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>"Q<>R<>R<> *<2A>I<EFBFBD><15><1F><1F><04>i<EFBFBD>0<>0r%c<08>b<00>VPP4pVR8Xd=\PP R4'd\P
!R4MBVR8Xd<\PP R4'd\P
!R4Rp\PP V4'd\P
!V4Rp\PP V4'd\P
!V4\ P!RR4#)r r:rXr;r9r8Tu'Canceling the login alarm succeeded.)rYr)rrrr*rr<>)rr"rYr=s&& r<00>clear_login_send<6E>config.clear_login_send<6E>s<><00><00><12>x<EFBFBD>x<EFBFBD>~<7E>~<7E><1F><04> <0F>6<EFBFBD>><3E><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>I<>J<>J<><12> <09> <09>E<>F<><46> <11>Z<EFBFBD> <1F><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>M<>N<>N<><12> <09> <09>I<>J<>J<><1C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>.<2E> /<2F> /<2F> <0E>I<EFBFBD>I<EFBFBD>*<2A> +<2B>K<><1C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>.<2E> /<2F> /<2F> <0E>I<EFBFBD>I<EFBFBD>*<2A> +<2B><15><1F><1F><04>&O<>P<>Pr%c <0C><00>/pVPV4R,VR&RVR&RP\P!44p\P
P V4'd\P!V4VR&V#)u<>
@获取面板登录告警
@return
login_status 是否开启面板登录告警
login_area 是否开启面板异地登录告警
r<EFBFBD><00> login_statusrx<00>
login_area<EFBFBD>{}/data/panel_login_area.pl<70>login_area_status)r>r<>rr<>rrrr<>)rr"r<><00>sfiles&& r<00>get_login_area<65>config.get_login_area<65>sr<00><00><14><06>!%<25>!4<>!4<>S<EFBFBD>!9<>%<25>!@<40><06>~<7E><1E>!<21><06>|<7C><1C>.<2E>5<>5<>f<EFBFBD>6K<36>6K<36>6M<36>N<><05> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25> <20> <20>*0<>/<2F>/<2F>%<25>*@<40>F<EFBFBD>&<26> '<27><15> r%c <0C>B<00>RP\P!44pVPP 4p\P
!V4pV'g\P !RR4#\P!W#4\P !RR4#)u+
@name 设置异地登录告警
@param get
rFFz"The alarm module is not installed.T<>successfully set)r<>rr<>rYr)<00>init_msgr<67>r)rr"rH<00>set_type<70>objs&& r<00>set_login_area<65>config.set_login_area<65>st<00><00>
/<2F>5<>5<>f<EFBFBD>6K<36>6K<36>6M<36>N<><05><14><18><18><1E><1E>!<21><08><14>o<EFBFBD>o<EFBFBD>h<EFBFBD>'<27><03><12><19>#<23>#<23>E<EFBFBD>+O<>P<> P<><0E><18><18><15>)<29><15><1F><1F><04>&8<>9<>9r%c <0C><<00>/pRP\P!44p\P!\P
!V44p.pTP 4FpTPRTRY%,/4K \TRRR7pT# LI;i)u'
@name 获取面板常用地区登录
<EFBFBD>{}/data/panel_login_area.json<6F>arear c<00><00>VR,#)r r=r<>s&rr<><00>,config.get_login_area_list.<locals>.<lambda><3E>s<00><00>a<EFBFBD><07>jr%T)r<00>reverse) r<>rr<>rrr<>r<>rBr<>)rr"r<>rHr<>rs&& r<00>get_login_area_list<73>config.get_login_area_list<73>s<><00><00>
<12><04>/<2F>6<>6<>v<EFBFBD>7L<37>7L<37>7N<37>O<><05> <14><17>:<3A>:<3A>f<EFBFBD>o<EFBFBD>o<EFBFBD>e<EFBFBD>4<>5<>D<EFBFBD><14><06><17>9<EFBFBD>9<EFBFBD>;<3B>C<EFBFBD> <12>M<EFBFBD>M<EFBFBD>6<EFBFBD>#<23>g<EFBFBD>d<EFBFBD>i<EFBFBD>8<> 9<><1F><18><06>$8<>$<24>G<><06><15> <0A><> <14>t<EFBFBD>s <00>*B<00>Bc <0C><><00>RP\P!44p\PP V4'd\P !V4\P!RR4#)u
@name 清理常用登录地区
rSTzSuccessful operation.)r<>rr<>rrrr*r<>)rr"rHs&& r<00>clear_login_list<73>config.clear_login_list<73>sP<00><00>0<>6<>6<>v<EFBFBD>7L<37>7L<37>7N<37>O<><05> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25> <20> <20> <0E>I<EFBFBD>I<EFBFBD>e<EFBFBD> <1C><15><1F><1F><04>%<<3C>=<3D>=r%c<08><><00>RpVPP4pVPV4pW4P49d\P
!RR4#WC,pRV9gVR,'g\P
!RR4#^RIHpV!4pVPV4pV'g\P
!RR4#\P!W#4\P
!RR4#) r8FzThis send type is not supportedr<64>z4This channel is not configured, please select again.ryz%The message channel is not installed.TrL) rYr)<00>get_msg_configsr<73>rr<>rzr{r) rr"r=rN<00> msg_configs<67>_confrzr<>rOs && r<00>set_login_send<6E>config.set_login_send s<><00><00>K<><1C><14><18><18><1E><1E>!<21><08><1A>*<2A>*<2A>3<EFBFBD>/<2F> <0B> <13>+<2B>+<2B>-<2D> -<2D><19>#<23>#<23>E<EFBFBD>*K<>L<> L<><1B>%<25><05> <11><15> <1E>e<EFBFBD>F<EFBFBD>m<EFBFBD>m<EFBFBD><19>#<23>#<23>E<EFBFBD>+a<>b<> b<>-<2D> <19>^<5E><02><10> <20> <20><18>*<2A><03><12><19>#<23>#<23>E<EFBFBD>+R<>S<> S<><0E><18><18>-<2D>8<><15><1F><1F><04>&8<>9<>9r%c<08><00>\P!4^RIpVP4p\P!R4P RR4P R4P4p^p/pW5R&WER&^VR&\VR4'd\VR,4VR&WR&R VR
&\VR 4'dVPVR
&/pVPVR 4VR &\P!R4P RR4P R4PR4P\VP4R,\VP 4,4P R4P#4VR&V#)rN<>logs2ztype=?z log,addtimer r<>rtr*rx<00> return_jsr<73>z 1,2,3,4,5,8r<38>r<>r<>r<>)zyakpanel login reminder)r<00> create_logsr<73><00>Pager<65>r<>r<>r r>r<>r<><00>GetPager>r<>r<><00>SHIFT<46>ROWr)rr"r<>r r<>r<>r<>s&& r<00> get_login_log<6F>config.get_login_log, sO<00><00><0E><1A><1A><1C><13><13>y<EFBFBD>y<EFBFBD>{<7B><04><16><08><08><17>!<21>'<27>'<27><08>2O<32>P<>V<>V<>Wd<57>e<>k<>k<>m<><05><11><05><11><04><1D>W<EFBFBD> <0A><1B>U<EFBFBD> <0B><15><04>S<EFBFBD> <09> <12>3<EFBFBD><03> <1C> <1C><1B>C<EFBFBD><03>H<EFBFBD> <0A>D<EFBFBD><13>I<EFBFBD><19>U<EFBFBD> <0B><1E><04>[<5B><19> <12>3<EFBFBD><06> <1F> <1F> #<23><08><08>D<EFBFBD><1B> <1D><11><04><1B>|<7C>|<7C>D<EFBFBD>-<2D>8<><04>V<EFBFBD> <0C><1D>x<EFBFBD>x<EFBFBD><07>(<28>.<2E>.<2E>x<EFBFBD>9V<39>W<>]<5D>]<5D>^k<>l<>r<>r<>s|<7C>}<7D>D<02>D<02> <0F><04>
<EFBFBD>
<EFBFBD>O<EFBFBD>c<EFBFBD> !<21>C<EFBFBD><04><08><08>M<EFBFBD> 1<>3<>38<33>5<EFBFBD><1D>3G<33><06><06><08> <0A>V<EFBFBD> <0C><13> r%c<08><><00>VPpVR8XdVPV4#VR8XdVPV4#VR8XdVPV4#VR8XdVP V4#R#)r"rDr<><00>clearN)rY<00>get_login_ipwhite<74>add_login_ipwhite<74>del_login_ipwhite<74>clear_login_ipwhite)rr"rYs&& r<00> login_ipwhite<74>config.login_ipwhiteD sp<00><00> <10>X<EFBFBD>X<EFBFBD><04> <0F><15>;<3B><17>)<29>)<29>#<23>.<2E> .<2E> <0F><15>;<3B><17>)<29>)<29>#<23>.<2E> .<2E> <0F><15>;<3B><17>)<29>)<29>#<23>.<2E> .<2E> <0F><17>=<3D><17>+<2B>+<2B>C<EFBFBD>0<> 0<> r%c<08>2<00>Rp\P!\P!R44pV'g\P!R.4#\P!RV4# \P
!XR4\P!R.4u#;i)<03>,/www/server/panel/data/send_login_white.jsonTr<54>)rrrrr <00> WriteFile)rr"r<00>ip_whites&& rro<00>config.get_login_ipwhiteP sv<00><00> 7<>?<3F>D<EFBFBD><19>Z<EFBFBD>Z<EFBFBD><06><0F><0F>0^<5E> _<>`<60>H<EFBFBD><1C>F<EFBFBD>$=<3D>$=<3D>d<EFBFBD>B<EFBFBD>$G<>G<><19>,<2C>,<2C>T<EFBFBD>8<EFBFBD><<3C> <<3C><> 7<> <12> <1C> <1C>T<EFBFBD>4<EFBFBD> (<28><19>,<2C>,<2C>T<EFBFBD>2<EFBFBD>6<> 6<>s<00>3A$<00>A$<00> A$<00>$0Bc<08><><00>VPP4pRp\P!\P
!R44pW$9g=VP V4\P!V\P!V44\P!RR4# \P!X\P!T.44\P!RR4u#;i)rvTr=)
r2r)rrrrrBrwrr <00>rr"r2rrxs&& rrp<00>config.add_login_ipwhiteZ s<><00><00> <0E>6<EFBFBD>6<EFBFBD><<3C><<3C>><3E><02> J<01>A<>D<EFBFBD><1B>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>2`<60>"a<>b<>H<EFBFBD><15>><3E><18><0F><0F><02>#<23><16> <20> <20><14>t<EFBFBD>z<EFBFBD>z<EFBFBD>(<28>';<3B><<3C><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> I<><49> J<01> <12> <1C> <1C>T<EFBFBD>4<EFBFBD>:<3A>:<3A>r<EFBFBD>d<EFBFBD>#3<> 4<><19>,<2C>,<2C>T<EFBFBD>3H<33>I<> I<>s <00>BB!<00>!AC(c<08><><00>VPP4pRp\P!\P
!R44pW$9d=VP V4\P!V\P!V44\P!RR4# \P!X\P!.44\P!RR4u#;i)rvTzSuccessfully deleted!)
r2r)rrrrr*rwrr r{s&& rrq<00>config.del_login_ipwhiteg s<><00><00> <10>V<EFBFBD>V<EFBFBD>\<5C>\<5C>^<5E><02> L<01>A<>D<EFBFBD><1B>z<EFBFBD>z<EFBFBD>&<26>/<2F>/<2F>2`<60>"a<>b<>H<EFBFBD><12><0E><18><0F><0F><02>#<23><16> <20> <20><14>t<EFBFBD>z<EFBFBD>z<EFBFBD>(<28>';<3B><<3C><19>,<2C>,<2C>T<EFBFBD>3J<33>K<> K<><4B> L<01> <12> <1C> <1C>T<EFBFBD>4<EFBFBD>:<3A>:<3A>b<EFBFBD>><3E> 2<><19>,<2C>,<2C>T<EFBFBD>3J<33>K<> K<>s <00>BB!<00>!AC'c<08><><00>Rp\P!V\P!.44\P!RR4#)rvTzSuccessfully created)rrwrrr )rr"rs&& rrr<00>config.clear_login_ipwhitet s3<00><00>=<3D><04><0E><18><18><14>t<EFBFBD>z<EFBFBD>z<EFBFBD>"<22>~<7E>.<2E><15>(<28>(<28><14>/E<>F<>Fr%c<08><><00>^RIpVPPVPR,4'd\P
!RR4#\P
!RR4#)rNr<4E>T<>successF<73>false)rrrr<>rr )rr"rs&& r<00>get_panel_ssl_status<75>config.get_panel_ssl_statusy sI<00><00><11> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>$<24>*<2A>*<2A>><3E>9<> :<3A> :<3A><19>,<2C>,<2C>T<EFBFBD>)<29><<3C> <<3C><15>(<28>(<28><15>w<EFBFBD>7<>7r%c <0C><00>Rp\VP4pV'dU\PP R4'g\
P !RR4#\
P!VR4M;\PP V4'd\P!V4RV9d<>RV9d<>RpR pVP'd/\
P!WAPP44VP'd/\
P!WQPP44\
P !R
R 4#R pV'gR p\
P !R
RPV44#)u
设置双向认证
<EFBFBD>data/ssl_verify_data.plrFz1The panel SSL function needs to be enabled first!rt<00>crl<72>ca<63> ssl/crl.pem<65>
ssl/ca.pemTz<The panel two-way authentication certificate has been saved!<21>Enable<6C>Disablez*Panel two-way authentication {} succeeded!) r<>r|rrrrr<>rr*r<>r)r<>r<>)rr"r<>r|r<>r<>r<>s&& r<00>set_ssl_verify<66>config.set_ssl_verify s<00><00>,<2C><07><14>S<EFBFBD>Z<EFBFBD>Z<EFBFBD><1F><06> <11><15>7<EFBFBD>7<EFBFBD>><3E>><3E>-<2D>0<>0<><16>9I<39>9I<39>%<25>QD<02>:E<02>3E<02> <12> <1C> <1C>W<EFBFBD>V<EFBFBD> ,<2C><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>g<EFBFBD>&<26>&<26><02> <09> <09>'<27>(:<3A> <10>C<EFBFBD><<3C>D<EFBFBD>C<EFBFBD>K<EFBFBD><1F>C<EFBFBD><1D>B<EFBFBD><12>w<EFBFBD>w<EFBFBD>w<EFBFBD><16> <20> <20><13>W<EFBFBD>W<EFBFBD>]<5D>]<5D>_<EFBFBD>5<><12>v<EFBFBD>v<EFBFBD>v<EFBFBD><16> <20> <20><12>F<EFBFBD>F<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD>3<><19>#<23>#<23>D<EFBFBD>)g<>h<> h<><1A>C<EFBFBD><19> <09>#<23><19>#<23>#<23>D<EFBFBD>)U<>)\<5C>)\<5C>]`<60>)a<>b<> br%c <0C>n<00>RRRRRR/pRp\PPV4'dRVR&RpR p\PPV4'd\P!V4VR&\PPV4'd\P!V4VR&V#)
u
获取双向认证
r|Fr<46>rxr<>r<>Tr<54>r<>)rrrrr<>)rr"r<>r<>r<>r<>s&& r<00>get_ssl_verify<66>config.get_ssl_verify<66> s<><00><00><1B>E<EFBFBD>4<EFBFBD><12>U<EFBFBD>B<EFBFBD>7<><06>+<2B><07> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>'<27> "<22> "<22>t<EFBFBD>F<EFBFBD>8<EFBFBD>$4<> <19><02><1B><03> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>#<23> <1E> <1E>"<22>O<EFBFBD>O<EFBFBD>C<EFBFBD>0<>F<EFBFBD>5<EFBFBD>M<EFBFBD> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>#<23> <1E> <1E>!<21>?<3F>?<3F>2<EFBFBD>.<2E>F<EFBFBD>4<EFBFBD>L<EFBFBD><15> r%c <0C><00>RV9g\P!RR4#\P!RVP4'dC\ VP4pV^8wd&V^d8gVR8<>d\P!RR4#M\P!RR4#\P !RVP4\P!RRPVP44\P!R R
4#) ut
@name 设置未认证时的响应状态
@author hwliang<2021-12-16>
@param status_code<int> 状态码
@return dict
<EFBFBD> status_codeFr<46>z^\d+$i<><00>abortr<74>z*Set the unauthorized response status to:{}Tr=) rr r?r2r<>r<><00> save_configr<67>r<>)rr"r<>s&& r<00>set_not_auth_status<75>config.set_not_auth_status<75> s<><00><00><1D><03>#<23><19>,<2C>,<2C>U<EFBFBD>3E<33>F<> F<> <0A>8<EFBFBD>8<EFBFBD>H<EFBFBD>c<EFBFBD>o<EFBFBD>o<EFBFBD> .<2E> .<2E><1D>c<EFBFBD>o<EFBFBD>o<EFBFBD>.<2E>K<EFBFBD><1A>a<EFBFBD><1F><1E><13>$<24> <0B>c<EFBFBD>(9<>!<21>4<>4<>U<EFBFBD>;M<>N<>N<><4E><19>,<2C>,<2C>U<EFBFBD>3E<33>F<> F<><0E><1A><1A>7<EFBFBD>3<EFBFBD>?<3F>?<3F>3<><0E> <20> <20>!6<>7c<37>7j<37>7j<37>kn<6B>kz<6B>kz<6B>7{<7B>|<7C><15>(<28>(<28><14>.C<>D<>Dr%c <0C>V<00>\\P!R44pV# R#;i)uQ
@name 获取未认证时的响应状态
@author hwliang<2021-12-16>
@return int
r<EFBFBD>i<>)r<>r<00> read_config)rr<>s& r<00>get_not_auth_status<75>config.get_not_auth_status<75> s,<00><00>  <17><1D>f<EFBFBD>0<>0<><17>9<>:<3A>K<EFBFBD><1E> <1E><> <17><16>s<00> #<00>(c <0C>
<00>RP\P!44p\PP V4'gR#\P !V4P4pV'gR#VR8XdR#R#)uS
@name 获取云端请求线路
@author hwliang<2022-02-09>
@return auto/ipv4/ipv6
z {}/data/v4.pl<70>autoz-4<>ipv4<76>ipv6)r<>rr<>rrrr<>r))rr"<00>v4_file<6C>iptypes&& rr<><00>config.get_request_iptype<70> sZ<00><00>"<22>(<28>(<28><16>)><3E>)><3E>)@<40>A<><07><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>g<EFBFBD>&<26>&<26>v<EFBFBD><17><1F><1F><17>)<29>/<2F>/<2F>1<><06><15>f<EFBFBD> <11>T<EFBFBD>><3E>&<26>r%c <0C>$<00>RP\P!44p\PP V4'gR#\P !V4P4pV'g\P!V4R#V#)uT
@name 获取云端请求方式
@author hwliang<2022-02-09>
@return python/curl/php
z{}/data/http_type.pl<70>python) r<>rr<>rrrr<>r)r*)rr"<00>http_type_file<6C> http_types&& rr<><00>config.get_request_type<70> sa<00><00> 0<>6<>6<>v<EFBFBD>7L<37>7L<37>7N<37>O<><0E><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>n<EFBFBD>-<2D>-<2D>h<EFBFBD><1A>O<EFBFBD>O<EFBFBD>N<EFBFBD>3<>9<>9<>;<3B> <09><18> <0E>I<EFBFBD>I<EFBFBD>n<EFBFBD> %<25><1B><18>r%c <0C>J<00>RpRp\PPV4'g<\PPV4'd^RIpVP!W24\
P !\P!V44/p\PPT4'd<>\
P !\P!T44pTFrp/TR&RTR&RTR&TR,p\P!TR,4p T 'd.R TR&T PR4TR&T PR4TR&YuT&Kt T# \PPT4'd\P!T4EL ;i LQ;i)
u
获取消息通道配置列表
<EFBFBD> data/msg.jsonz config/examples/msg.example.jsonNr<4E>F<>setupr<70>r<>T) rrr<00>shutil<69>copyrrrr<>r*rMr<><00>get_version_info)
rr"<00>cpath<74>exampler<65>r<><00>msgsr<73>rrOs
&& rr^<00>config.get_msg_configs<67> sD<00><00> <20><05>5<><07><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>e<EFBFBD>$<24>$<24><12><17><17><1E><1E><07>)@<40>)@<40> <19> <12>K<EFBFBD>K<EFBFBD><07> '<27> 7<> <10>J<EFBFBD>J<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>-<2D> .<2E><12><04> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25> <20> <20><17>:<3A>:<3A>f<EFBFBD>o<EFBFBD>o<EFBFBD>e<EFBFBD>4<>5<>D<EFBFBD><19><01><1E><01>&<26> <09>"<22><01>'<27>
<EFBFBD>!<21><01>&<26> <09><17><06>i<EFBFBD><03><19> <20>/<2F>/<2F>!<21>F<EFBFBD>)<29>4<>C<EFBFBD><1A>%)<29><01>'<27>
<EFBFBD>$'<27>N<EFBFBD>N<EFBFBD>4<EFBFBD>$8<><01>&<26> <09>$'<27>$8<>$8<><14>$><3E><01>&<26> <09><1E>S<EFBFBD> <09><1A><14> <0B><>) 7<><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>e<EFBFBD>$<24>$<24>b<EFBFBD>i<EFBFBD>i<EFBFBD><05>&6<><36> <19><18>s<00>&*E<00>?AF<02>=F<03>F"c <0C>T<00>\P!4pVPpRPW#4p\P
P V4'g\P!RR4#VR9d<>\P!V4pV'dh\P!4pRVn
VPV4p^RI H p\P!V4p \P!RV!W<>R74#R#\P!V4p \P!RV 4#) u
获取模块模板
z{}/class/msg/{}.htmlFz!The template file does not exist.T)<01>render_template_string)r<>N)<01>sms)rr<><00> module_namer<65>rrrr<>rM<00>dict_obj<62>reloadr<64><00>flaskr<6B>r<>)
rr"<00> panelPathr<68>rHrOrr<>r<><00>shtmls
&& r<00>get_module_template<74>config.get_module_template
s<><00><00><1B>)<29>)<29>+<2B> <09><19>o<EFBFBD>o<EFBFBD> <0B>&<26>-<2D>-<2D>i<EFBFBD>E<><05><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>e<EFBFBD>$<24>$<24><19>#<23>#<23>E<EFBFBD>+N<>O<> O<> <16>'<27> !<21><18>/<2F>/<2F>+<2B>.<2E>C<EFBFBD><12><1D><EFBFBD><EFBFBD>(<28><04>"<22><04> <0B><1A>~<7E>~<7E>d<EFBFBD>+<2B><04>8<><1E><0F><0F><05>.<2E><05><1D>'<27>'<27><04>.D<>U<EFBFBD>.V<>W<>W<> <13><1B>O<EFBFBD>O<EFBFBD>E<EFBFBD>*<2A>E<EFBFBD><19>#<23>#<23>D<EFBFBD>%<25>0<> 0r%c <0C>(<00>RpVPpRpRV9d!VPpV'dVR 9dRpMRpRp\PP V4'd\
P !V4pV'd<>^RIHpV!4pVPV4p V 'g'\
P!RRPV44#\
P!W#4V'd'\
P!RRPWc44#\
P!RR PV44#\PP V4'd\P!V4\
P!RR
PV44#) u
设置默认消息通道
z-/www/server/panel/data/default_msg_channel.plFr<46>Trxry<00>#Setup failed, [{}] is not installedz=Successfully changed [{}] to [{}] panel default notification.z.[{}] has been set as the default notification.z4[{}] has been removed as panel default notification.)r<>) r<>r<>rrrrr<>rzr{r<>r<>rr*)
rr"<00>default_channel_pl<70> new_channelr<6C><00>_default<6C>ori_default_channelrzr<>rOs
&& r<00>set_default_channel<65>config.set_default_channel%
sI<00><00>M<01><1A><19>k<EFBFBD>k<EFBFBD> <0B><17><07> <14><03> <1B><1A>{<7B>{<7B>H<EFBFBD><1B>x<EFBFBD>9<EFBFBD>4<><1F><07><1E><07> <20><1B> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>,<2C> -<2D> -<2D>"(<28>/<2F>/<2F>2E<32>"F<> <1F> <12> 1<><1D><1E>B<EFBFBD><15>%<25>%<25>k<EFBFBD>2<>C<EFBFBD><16>v<EFBFBD>/<2F>/<2F><05>7\<5C>7c<37>7c<37>do<64>7p<37>q<>q<> <12> <1C> <1C>/<2F> =<3D>"<22><1D>'<27>'<27><04>.m<>.t<>.t<>vI<02>/W<02>X<02>X<02><1D>'<27>'<27><04>.^<5E>.e<>.e<>fq<66>.r<>s<>s<><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>0<>1<>1<><12> <09> <09>,<2C>-<2D><19>#<23>#<23>D<EFBFBD>*`<60>*g<>*g<>hs<68>*t<>u<> ur%c <0C><><00>^RIHpV!4pVPVP4pV'g1\P!RRP VP44#VP V4#)u
设置消息通道配置
ryFr<46>)rzr{r<>rr<>r<>r)rr"rzr<>rOs&& r<00>set_msg_config<69>config.set_msg_configJ
sY<00><00> .<2E> <19>^<5E><02><11>!<21>!<21>#<23>(<28>(<28>+<2B><03><12>6<EFBFBD>+<2B>+<2B>E<EFBFBD>3X<33>3_<33>3_<33>`c<>`h<>`h<>3i<33>j<>j<><12>~<7E>~<7E>c<EFBFBD>"<22>"r%c <0C><><00>RpVPpRP\P!44p\P
P V4'g\P!V4RPW24p\P
P V4'd'\P!RRPV44#R# \P!RRPT44u#;i) uw
yakpanel 不与面板相同,不删除通道模块
安装/更新消息通道模块
@name 需要安装的模块名称
rxz {}/class/msgz {}/{}_msg.pyTz&[{}] Module is installed successfully.Fz [{}] Module installation failed.N) r<>r<>rr<>rrrr<>r<>)rr"r<><00>
local_path<EFBFBD>sfile1s&& r<00>install_msg_module<6C>config.install_msg_module<6C>
s<><00><00> <19> <0B> c<01><1D>(<28>(<28>K<EFBFBD>'<27>.<2E>.<2E>v<EFBFBD>/D<>/D<>/F<>G<>J<EFBFBD><15>7<EFBFBD>7<EFBFBD>><3E>><3E>*<2A>-<2D>-<2D>r<EFBFBD>{<7B>{<7B>:<3A>/F<>#<23>*<2A>*<2A>:<3A>B<>F<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>f<EFBFBD>%<25>%<25><1D>'<27>'<27><04>.V<>.]<5D>.]<5D>^i<>.j<>k<>k<>&<26><> c<01><19>#<23>#<23>E<EFBFBD>+M<>+T<>+T<>U`<60>+a<>b<> b<>s<00>AC <00>A1C <00> (C7c <0C><><00>VPpVR 9dpRPV4P\P!44p\P
P V4'd\P!V4M<>VR8XdmR
FepRP\P!4V4p\P
P V4'gKO\P!V4Kg MfVR8Xd`RP\P!44p\P
P V4'd\P!V4RP\P!44p\P!V4pV'dWb8Xd\P!V4\P!RRPV44#) up
yakpanel 不与面板相同,不删除通道模块,只删除配置文件
@module_name 是删除配置文件
z{{}}/data/{}.jsonr z{}/data/{}.jsonrmz{}/data/tg_bot.jsonz{}/data/default_msg_channel.plTz#[{}] Module uninstallation succeeds)rX<00>feishurw)<02> stmp_mail<69> mail_list)
r<EFBFBD>r<>rr<>rrrr*r<>r<>)rr"r<><00> msg_conf_file<6C> conf_filer<65><00>default_channels&& r<00>uninstall_msg_module<6C>config.uninstall_msg_module<6C>
sH<00><00>
<1A>h<EFBFBD>h<EFBFBD> <0B>
<17>:<3A> :<3A>/<2F>6<>6<>{<7B>C<>J<>J<>6<EFBFBD>K`<60>K`<60>Kb<4B>c<>M<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C>,<2C>b<EFBFBD>i<EFBFBD>i<EFBFBD> <0A>.F<><46> <18>F<EFBFBD> "<22>7<> <09> 1<> 8<> 8<><16>9N<39>9N<39>9P<39>R[<5B> \<5C> <0A><15>7<EFBFBD>7<EFBFBD>><3E>><3E>-<2D>0<>0<>"<22>)<29>)<29>M<EFBFBD>2J<32>8<><19>D<EFBFBD> <20>1<>8<>8<><16>9N<39>9N<39>9P<39>Q<>M<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C>,<2C>b<EFBFBD>i<EFBFBD>i<EFBFBD> <0A>.F<>><3E>D<>D<>V<EFBFBD>EZ<45>EZ<45>E\<5C>]<5D><1A> <20>/<2F>/<2F>*<<3C>=<3D><0F> <1A><EFBFBD>=<3D> <0E>I<EFBFBD>I<EFBFBD>(<28> )<29><15><1F><1F><04>&K<>&R<>&R<>S^<5E>&_<>`<60>`r%c <0C><><00>VPpVPp\P!V4pV'g'\P!RRP V44#\ WC4!V4#)u<>
@获取消息模块指定方法
@auther: cjxin
@date: 2022-08-16
@param: get.module_name 消息模块名称(如sms,weixin,dingding)
@param: get.fun_name 消息模块方法名称(如send_sms,push_msg)
Fr<EFBFBD>)r<><00>fun_namerrMr<>r<><00>getattr)rr"r<>r<><00>m_objss&& r<00> get_msg_fun<75>config.get_msg_fun<75>
sV<00><00><1A>o<EFBFBD>o<EFBFBD> <0B><16><<3C><<3C><08><17><1F><1F><1B>-<2D><06><15>f<EFBFBD>.<2E>.<2E>u<EFBFBD>6[<5B>6b<36>6b<36>cn<63>6o<36>p<>p<><16>v<EFBFBD>'<27><03>,<2C>,r%c <0C><><00>VPp/p/VR&RVR&RVR&\P!V4pV'd.RVR&VPR4VR&VP R4VR&V# T#;i)u<>
@name 获取单独消息通道配置
@auther: cjxin
@date: 2022-08-16
@param: get.name 消息模块名称(如sms,weixin,dingding)
r<EFBFBD>Fr<46>r<>TN)r<>rrMr<>r<>)rr"r<>r<>rOs&& r<00>get_msg_configs_by<62>config.get_msg_configs_by<62>
s<><00><00><13>x<EFBFBD>x<EFBFBD><04><10><03><18><03>F<EFBFBD> <0B><1C><03>G<EFBFBD> <0C><1B><03>F<EFBFBD> <0B> <15><19>?<3F>?<3F>4<EFBFBD>(<28>C<EFBFBD><12>#<23><03>G<EFBFBD> <0C>!<21>n<EFBFBD>n<EFBFBD>T<EFBFBD>2<><03>F<EFBFBD> <0B>!<21>2<>2<>4<EFBFBD>8<><03>F<EFBFBD> <0B><12>
<EFBFBD><EFBFBD> <15><04><12>
<EFBFBD>s<00>A,<00>-A,<00>,A1c <0C><><00>RpRV9g&\PPV4'gYR\9g\P
!4\R&\P !RP\R,4V4/p\PPT4'd<>\P!\P!T44pTFYpRTR&RTR&TR,p\P!TR,4pT'dR TR&TPR
4TR&YST&K[ T# L<>;i \\P!44L3;i) uG
@name 获取消息通道配置列表
@auther: cjxin
@date: 2022-08-16
r<EFBFBD><00>force<63> download_urlz{}/linux/panel/msg/msg.jsonFr<46>r<>r<>TN)rrrrr<00>get_url<72> downloadFiler<65>rrr<>rMr<>r<>rC)rr"r<>r<>r<>r<>rrOs&& r<00>get_msg_push_list<73>config.get_msg_push_list<73>
s"<00><00>  <20><05> <16><16>#<23>~<7E>R<EFBFBD>W<EFBFBD>W<EFBFBD>^<5E>^<5E>E<EFBFBD>%:<3A>%:<3A>%<25><17>0<>F<EFBFBD>N<EFBFBD>N<EFBFBD>L\<5C>'<27>.<2E>2I<32><16>#<23>#<23>$A<>$H<>$H<><17>Q_<51>I`<60>$a<>bg<62>h<><12><04> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>%<25> <20> <20><17>:<3A>:<3A>f<EFBFBD>o<EFBFBD>o<EFBFBD>e<EFBFBD>4<>5<>D<EFBFBD><19><01>"<22><01>'<27>
<EFBFBD>!<21><01>&<26> <09><17><06>i<EFBFBD><03><19>!<21>?<3F>?<3F>1<EFBFBD>V<EFBFBD>9<EFBFBD>5<>C<EFBFBD><1A>%)<29><01>'<27>
<EFBFBD>$'<27>$8<>$8<><14>$><3E><01>&<26> <09><1E>S<EFBFBD> <09><1A><14> <0B><>% <16><14><><19><19>&<26>/<2F>/<2F>1<>2<><18>s<00>+D:<00>AD:<00>2>E<02>:D><03> E#c <08><><00>RV9d\P!RR4Rp\P!V4pV'dV#RP \P
!44pRVPR^4/p\ P!\P!RP \P!4444pVR,VR&\P!YE4p\ P!T4p\T\4'g R^RRR R/p^p\\P!44p \P P#R
4'd:\%\P!R 44p
\Y<>,
R , 4pM\P&!R R T ,4RTPR^4RTPRR4R RTRTPR R4//p \P(!Y+R4T # ELA;i EL;i \P&!R R T ,4L<>;i)<11> product_typeF<65>Parameter error<6F> check_npsz{}/api/panel/nps/check<63>{}/data/userInfo.json<6F> server_id<69>noncer<65>r<>z(/www/server/panel/data/panel_nps_time.plzdata/panel_nps_time.plr<6C>z%s<>safe_day<61> is_submitr<74>)rr<>rr"r<>r.rrrr<>r r<><00>dictr<74>r<>rrr<00>floatrwr<>) rr"<00>ikeyr<79>rrr<><00> user_infor<6F>r<><00> cur_timestamp<6D>nps_time<6D>datass && rr<><00>config.check_nps s<><00><00> <19><13> $<24> <12> <1C> <1C>U<EFBFBD>$5<> 6<><1A><04><16><19><19>4<EFBFBD><1F><06> <11><19>M<EFBFBD>&<26>-<2D>-<2D>f<EFBFBD>.D<>.D<>.F<>G<><03> <1B>C<EFBFBD>G<EFBFBD>G<EFBFBD>N<EFBFBD>A<EFBFBD>6<>
<EFBFBD><04>
 <11><1C>
<EFBFBD>
<EFBFBD>6<EFBFBD>?<3F>?<3F>3J<33>3Q<33>3Q<33>RX<52>Rg<52>Rg<52>Ri<52>3j<33>#k<>l<>I<EFBFBD> )<29>+<2B> 6<>D<EFBFBD><1B> <1D><15>o<EFBFBD>o<EFBFBD>c<EFBFBD>(<28><03> <11><16>*<2A>*<2A>S<EFBFBD>/<2F>C<EFBFBD>
<1A>#<23>t<EFBFBD>$<24>$<24><17><11><19>5<EFBFBD><15>u<EFBFBD><0E>C<EFBFBD><15><08><1B>D<EFBFBD>I<EFBFBD>I<EFBFBD>K<EFBFBD>(<28> <0A> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>D<> E<> E<> Q<01> <20><16><1F><1F>1I<31>!J<>K<><08><1E> <0A> 8<>E<EFBFBD>A<>B<><08>
<13> <1C> <1C>5<>t<EFBFBD>m<EFBFBD>7K<37> L<><18>#<23>'<27>'<27>'<27>1<EFBFBD>-<2D><1A>C<EFBFBD>G<EFBFBD>G<EFBFBD>I<EFBFBD>u<EFBFBD>5<><16><1F><18> <20>#<23>'<27>'<27>%<25><15>"7<><13><14><05> <0E> <09> <09>$<24>t<EFBFBD>$<24>
<15> <0C><>Y <11> <10><> <11> <10><>* Q<01><16> <20> <20>!9<>4<EFBFBD>-<2D>;O<>P<>s%<00>:AH<00>)H<00>#7H<00>H<03>H<03> Ic <0C><00>RP\P!44pRVPR^4/p\P!W#4p\
P !V4pV# T#;i \P!RR4u#;i)u
获取问卷
z{}/api/panel/nps/questionsr<73>FzFailed to obtain questionnaire)r<>rr.r"r rrr<>)rr"rrr<>r<>s&& r<00> get_nps_new<65>config.get_nps_newY s<><00><00> M<01>.<2E>5<>5<>f<EFBFBD>6L<36>6L<36>6N<36>O<>C<EFBFBD><1E><03><07><07><0E><01> :<3A><0E>D<EFBFBD> <19>/<2F>/<2F>#<23>,<2C>C<EFBFBD> <15><1A>j<EFBFBD>j<EFBFBD><13>o<EFBFBD><03><17>J<EFBFBD><4A> <15><14><16>J<EFBFBD><4A> M<01><19>#<23>#<23>E<EFBFBD>+K<>L<> L<>s*<00>AA1<00>A)<00>'A1<00>)A.<03>+A1<00>.A1<00>1B c  <0C><><00>RV9d\P!RR4RV9d\P!RR4RVPR^4RVPR^4RVR,R\P!4/p/p\P
!\P !RP\P!4444pVR,VR&R R
PVR ,4/pR P\P!44p\TR4'g\P!RR 4#\P
!TP4pTP4F.wrx\T4R8<>gK\P!RR4u# \P!YRTR7p \P
!T 4p \T \ 4'g R^RRRR/p T R,'d\P!RR4#\P!RRT 9dT R,4#R4# ELS;i \P!RR 4u#;i L<>;i)uB
@name nps 提交
@param rate 评分
@param feedback 反馈内容
r<EFBFBD>Fr<46><00>rate<74> questions<6E> panel_versionr<6E>r<><00> authorizationzbt {}r<>z{}/api/panel/nps/submitzquestions Parameter errorizEThe submitted text is too long, please adjust and resubmit (MAX: 512))r<><00>headersr<73>r<>r<>z:The submission failed, please check to connect to the nodeTzSubmitted successfully)rr<>r"rarrrr<>r<>r.r>r<><00>itemsrRr r<>r<>)
rr"r<><00> url_headersr<73>rrr<>r<>r<>r<>s
&& r<00> write_nps_new<65>config.write_nps_newq s,<00><00> <1A><13> $<24> <12> <1C> <1C>U<EFBFBD>$5<> 6<> <12><13> <1C> <12> <1C> <1C>U<EFBFBD>$5<> 6<>" <13>C<EFBFBD>G<EFBFBD>G<EFBFBD>F<EFBFBD>A<EFBFBD>&<26> <1A>C<EFBFBD>G<EFBFBD>G<EFBFBD>N<EFBFBD>A<EFBFBD>6<> <17><13>[<5B>)<29> <1B>V<EFBFBD>^<5E>^<5E>-<2D>
<EFBFBD><04>
<EFBFBD> <0B> <11><1C>
<EFBFBD>
<EFBFBD>6<EFBFBD>?<3F>?<3F>3J<33>3Q<33>3Q<33>RX<52>Rg<52>Rg<52>Ri<52>3j<33>#k<>l<>I<EFBFBD> )<29>+<2B> 6<>D<EFBFBD>+<2B> <1E><1F><17><1E><1E> <09>'<27>0B<30>!C<><0E>K<EFBFBD> (<28>.<2E>.<2E>v<EFBFBD>/E<>/E<>/G<>H<><03><16>s<EFBFBD>K<EFBFBD>(<28>(<28><19>#<23>#<23>E<EFBFBD>+F<>G<> G<> L<01><1E>*<2A>*<2A>S<EFBFBD>]<5D>]<5D>3<><07>#<23>M<EFBFBD>M<EFBFBD>O<EFBFBD>D<EFBFBD>A<EFBFBD><1A>1<EFBFBD>v<EFBFBD><03>|<7C>%<25>/<2F>/<2F><05>7~<7E><><>,<2C>&<15>o<EFBFBD>o<EFBFBD>c<EFBFBD>k<EFBFBD>B<><03> <11><16>*<2A>*<2A>S<EFBFBD>/<2F>C<EFBFBD>
<1A>#<23>t<EFBFBD>$<24>$<24><17><11><19>5<EFBFBD><15>S<><0E>C<EFBFBD> <0F>y<EFBFBD>><3E>><3E><19>#<23>#<23>D<EFBFBD>*B<>C<> C<><15><1F><1F><05>U<EFBFBD>c<EFBFBD>\<5C>s<EFBFBD>5<EFBFBD>z<EFBFBD>E<02> E<02>HD<02>E<02> E<02><>[ <11> <10><> L<01><1D>'<27>'<27><05>/J<>K<>K<><4B>" <11> <10>s2<00>A2I<00>AI <00> I <00>$I <00>?I*<00>I <03> I'<03>*I.c
<08>2<00>RP\P!44pRP\P!44p\P!4p\P!V4pV'g/\P
!V\ P!V44TpM\ P!V4pRp\PPV4'd#\P!V4pV'dWuR&\PPV4'd!VR,PRRRRRR R
R /4V# \ Pd1\P
!T\ P!T44TpL<>i;i) z#{}/YakPanel/languages/settings.json<6F>"{}/YakPanel/static/vite/lang/my-MY<4D>0/www/server/panel/YakPanel/languages/language.plr<6C>r<>r<><00>my<6D>googler^<00>Custom<6F>cnu 自定义)r<>rr<><00>default_languages_configr<67>rrrr<00>JSONDecodeErrorrrrrrB)r<00>settings<67>custom<6F> default_data<74> file_contentr<74><00>setlang<6E>olangs& rr<><00>config.get_language<67> s2<00><00>8<>?<3F>?<3F><06>@U<>@U<>@W<>X<><08>5<><<3C><<3C>V<EFBFBD>=R<>=R<>=T<>U<><06><1D>6<>6<>8<> <0C><1D><EFBFBD><EFBFBD>x<EFBFBD>0<> <0C><1B> <12> <1C> <1C>X<EFBFBD>t<EFBFBD>z<EFBFBD>z<EFBFBD>,<2C>'?<3F> @<40><1F>D<EFBFBD> $<24><1B>z<EFBFBD>z<EFBFBD>,<2C>/<2F><04>
E<01><07> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>'<27> "<22> "<22><1A>O<EFBFBD>O<EFBFBD>G<EFBFBD>,<2C>E<EFBFBD><14>"'<27>Y<EFBFBD><0F> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>&<26> !<21> !<21> <10><1B> <1D> $<24> $<24><16><04><18>$<24><17><18><14>k<EFBFBD> &<0E> <0F><14> <0B><>'<18>'<27>'<27> $<24><16> <20> <20><18>4<EFBFBD>:<3A>:<3A>l<EFBFBD>+C<>D<>#<23><04> $<24>s<00>+E<00>AF<03>Fc<08>.<00>VPp\P!V4Rp\P!W24\P!RR^4\P!RV^4\P
!4\P !RR4#)rr<><00> set_languagez language-infoTzThe setup was successful)r<>r<00>setLangrw<00>set_module_logsrAr<>)rrr<>rs&& rr<00>config.set_language<67> sp<00><00> <14>y<EFBFBD>y<EFBFBD><04><0E><0E><0E>t<EFBFBD><1C>A<><04><0E><18><18><14>$<24><0E><1E><1E>z<EFBFBD>><3E>1<EFBFBD>=<3D><0E><1E><1E><EFBFBD><04>a<EFBFBD>8<><0E><1C><1C><1E><15><1F><1F><04>&@<40>A<>Ar%c <08><><00>\P!V4Uu.uFIp\PP\PP W44'gKGVNKK pp\ V4^8Xd<>\PP W^,4p\P!V4Fup\PP WE4p\PPV4'd\ P!Wa4K_\ P!Wa4Kw \P!V4R#R#uupi)r<>N) rr<>rr<>r<>rRr<><00>move<76>rmdir)r<00>
target_dirr<EFBFBD><00>subdirs<72> top_level_dir<69>item<65> item_paths&& r<00> flatten_unzip<69>config.flatten_unzip s<><00><00> <20>j<EFBFBD>j<EFBFBD><1A>4<>c<>4<><11><02><07><07> <0A> <0A>b<EFBFBD>g<EFBFBD>g<EFBFBD>l<EFBFBD>l<EFBFBD>S]<5D>Fa<46>8b<38>1<EFBFBD>1<EFBFBD>4<><07>c<> <0F>w<EFBFBD><<3C>1<EFBFBD> <1C><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1A>Q<EFBFBD>Z<EFBFBD>@<40>M<EFBFBD><1B>
<EFBFBD>
<EFBFBD>=<3D>1<><04><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1D>=<3D> <09><15>7<EFBFBD>7<EFBFBD>=<3D>=<3D><19>+<2B>+<2B><1A>K<EFBFBD>K<EFBFBD> <09>6<><1A>K<EFBFBD>K<EFBFBD> <09>6<> 2<> <0F>H<EFBFBD>H<EFBFBD>]<5D> #<23> <1D><>ds <00>AE <04>"E c<08><><00>Rp\P!V4R# \P!\P!44R#;i)z1/www/server/panel/YakPanel/static/upload_languageN)r<><00>rmtreerrBrC)rrs& r<00>del_upload_language<67>config.del_upload_language s6<00><00>H<>
<EFBFBD> 6<> <12>M<EFBFBD>M<EFBFBD>*<2A> %<25><> 6<> <12> <1C> <1C>V<EFBFBD>2<>2<>4<> 5<>s <00><00>+A
c<08> <00>VPpRP\P!4V4p\P
P V4'g\P!RR4#RP\P!44p\P!RV,R,V,R,4wrVVPV4VR,p\P
P V4'g(VP4\P!RR4#.p\P!V4Fip VR,V ,p
\P!\P!V
44p VPV 4p V 'dKXVP!V
4Kk \#V4^8<>d7VP4\P!RR PV44#\P!V4F<>p VR,V ,p
\P!\P!V
44p VP%V 4p VR,V ,p\P&!V\P(!V 44K<> R P\P!44p\P
P T4'g\P0!T4MT\P!T4F:p\P
P3TT4p
\P4!T
4K< ^R
Ip\P!T4F&p TR,T ,p
TP8!T
T4K( \P:!4pRTnTP?T4TP4\P!RR4# \*d[pTP4\P,!\P.!44\P!RT4uR
p?#R
p?ii;i \*d)p\P,!R T
R T 24R
p?EKlR
p?ii;i)z%{}/YakPanel/static/upload_language/{}Fz(The uploaded language pack was not foundz"{}/YakPanel/static/upload_languagez
unzip -o "z" -d r<>z
/templatesz(The uploaded language pack is incompletez[The language pack is not standardized, the key lacks the necessary suffix[_], error file:{}Nr<00>Failed to delete <20>
. Reason: rTzAThe upload was successful, and the new language is already in use) rzr<>rr<>rrrr<>r@r"r&r<>rrr<><00>_all_keys_have_suffixrBrR<00>_remove_suffix_from_keysrrr<>rBrCr<>r<>r*r<>rr<>r<>r)rrrz<00>
upload_dir<EFBFBD> upload_pathr<68><00>b<>path_q<5F>err_file<6C>p_name<6D> file_path<74> file_data<74>is_ok<6F> del_file_data<74> del_file_path<74>ex<65>mv_dir_qr<71>r<><00>args1s&& r<00>upload_language<67>config.upload_language+ sm<00><00><17>=<3D>=<3D><08>=<3D>C<>C<>F<EFBFBD>DY<44>DY<44>D[<5B>]e<>f<>
<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>j<EFBFBD>)<29>)<29><19>#<23>#<23>E<EFBFBD>+U<>V<> V<>;<3B>A<>A<>&<26>BW<42>BW<42>BY<42>Z<> <0B><15><1F><1F> <0C>z<EFBFBD> 9<>G<EFBFBD> C<>k<EFBFBD> Q<>TW<54> W<>X<><04><01> <0C><1A><1A>;<3B>'<27><1D>|<7C>+<2B><06><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>f<EFBFBD>%<25>%<25> <10> $<24> $<24> &<26><19>#<23>#<23>E<EFBFBD>+U<>V<> V<> /<2F><19>H<EFBFBD><1C>*<2A>*<2A>V<EFBFBD>,<2C><06>"<22>S<EFBFBD>L<EFBFBD>6<EFBFBD>1<> <09> <20>J<EFBFBD>J<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>'A<>B<> <09><1C>2<>2<>9<EFBFBD>=<3D><05><1C>u<EFBFBD><1C>O<EFBFBD>O<EFBFBD>I<EFBFBD>.<2E> -<2D><13>8<EFBFBD>}<7D>q<EFBFBD> <20><14>(<28>(<28>*<2A><1D>'<27>'<27><05>0M<02>0T<02>0T<02>U]<02>0^<02>_<02>_<02>!<21>j<EFBFBD>j<EFBFBD><16>0<>F<EFBFBD> &<26><13> <0C>v<EFBFBD> 5<>I<EFBFBD> $<24>
<EFBFBD>
<EFBFBD>6<EFBFBD>?<3F>?<3F>9<EFBFBD>+E<> F<>I<EFBFBD>$(<28>$A<>$A<>)<29>$L<>M<EFBFBD>$*<2A>S<EFBFBD>L<EFBFBD>6<EFBFBD>$9<>M<EFBFBD><1A>$<24>$<24>]<5D>D<EFBFBD>J<EFBFBD>J<EFBFBD>}<7D>4M<34>N<> 1<><8<>><3E>><3E>v<EFBFBD>?T<>?T<>?V<>W<><08><12>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27> <0E>K<EFBFBD>K<EFBFBD><08> !<21><1E>J<EFBFBD>J<EFBFBD>x<EFBFBD>0<><08><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><18>8<EFBFBD><<3C> <09>S<01><16>I<EFBFBD>I<EFBFBD>i<EFBFBD>(<28>1<> <16><18>j<EFBFBD>j<EFBFBD><16>(<28>F<EFBFBD><1E><13> <0C>v<EFBFBD>-<2D>I<EFBFBD> <12>K<EFBFBD>K<EFBFBD> <09>8<EFBFBD> ,<2C>)<29>"<17><0F><0F>!<21><05><19><05>
<EFBFBD> <0C><19><19>%<25> <20> <0C> <20> <20>"<22><15><1F><1F><04>&i<>j<>j<><6A>G<19> /<2F> <10> $<24> $<24> &<26> <12> <1C> <1C>V<EFBFBD>2<>2<>4<> 5<><19>#<23>#<23>E<EFBFBD>2<EFBFBD>.<2E> .<2E><> /<2F><>R!<21>S<01><1A>$<24>$<24>'8<><19> <0B>:<3A>a<EFBFBD>S<EFBFBD>%Q<>R<>R<><52>S<01>sF<00>-A+O(<00>AO(<00>8B#O(<00>6Q<02>( Q <03>3AQ<03>Q <03>Q <03> R<05>Q><05>>Rc <08><><00>RP\P!44pVP4R\P!^4,pRP\P!4V4p\
P !V4RPV4p\
P !V4\
P!V4F~p\
PPW&4p\
PPWV4p\
PPV4'gKh\P!Wx4K<> RP\P!4R4p \P!V R\P4;_uu_4p
\
P !V4F}wr<>p V Fqp\
PPW<>4p\
PP#W<>4pV
P%V\
PPRV44Ks K RRR4\P&!V4RV /# +'giL*;i) <09>!{}/YakPanel/static/vite/templates<65> language_z'{}/YakPanel/static/download_language/{}z {}/templatesz language.zip<69>wr<77>Nr)r<>rr<><00>_generate_language_templatesr7rr<>r<>rr<>r<>r<><00>copy2<79>zipfile<6C>ZipFile<6C> ZIP_DEFLATED<45>walk<6C>relpath<74>writer%)rr<00> templates_dirrz<00> download_dir<69>download_tmpdirr{<00>src_file<6C>dst_file<6C>zip_path<74>zipf<70>root<6F>dirsr=<00>full_file_path<74>arcnames&& r<00>download_language<67>config.download_language<67> s<><00><00>;<3B>B<>B<>6<EFBFBD>CX<43>CX<43>CZ<43>[<5B> <0A> <0C>)<29>)<29>+<2B><1F><16>!7<>!7<><01>!:<3A>:<3A><08>@<40>G<>G<><06>H]<5D>H]<5D>H_<48>ai<61>j<> <0C>
<EFBFBD> <0B> <0B>L<EFBFBD>!<21>(<28>/<2F>/<2F> <0C>=<3D><0F>
<EFBFBD> <0B> <0B>O<EFBFBD>$<24><16>J<EFBFBD>J<EFBFBD>}<7D>-<2D>D<EFBFBD><19>w<EFBFBD>w<EFBFBD>|<7C>|<7C>M<EFBFBD>8<>H<EFBFBD><19>w<EFBFBD>w<EFBFBD>|<7C>|<7C>O<EFBFBD>:<3A>H<EFBFBD><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>h<EFBFBD>'<27>'<27><16> <0C> <0C>X<EFBFBD>0<> .<2E>=<3D>C<>C<>F<EFBFBD>DY<44>DY<44>D[<5B>]k<>l<><08> <14>_<EFBFBD>_<EFBFBD>X<EFBFBD>s<EFBFBD>G<EFBFBD>,@<40>,@<40> A<> A<>T<EFBFBD>%'<27>W<EFBFBD>W<EFBFBD>\<5C>%:<3A>!<21><04>E<EFBFBD>!<21>D<EFBFBD>%'<27>W<EFBFBD>W<EFBFBD>\<5C>\<5C>$<24>%=<3D>N<EFBFBD> <20>g<EFBFBD>g<EFBFBD>o<EFBFBD>o<EFBFBD>n<EFBFBD>K<>G<EFBFBD><18>J<EFBFBD>J<EFBFBD>~<7E>r<EFBFBD>w<EFBFBD>w<EFBFBD>|<7C>|<7C>J<EFBFBD><07>/P<>Q<>"<22>&;<3B>B<01> <0F> <0A> <0A>l<EFBFBD>#<23><16><08>!<21>!<21>B<01> A<>s <00>BI<05> I) c <0C><><00>RP\P!44pRP\P!44p\PP V4'g\P !V4MS\P!V4F9p\PPW4p\P!V4K; \P!V4F<>pVR,V,p\P!\P!V44pVPV4pVR,V,p \P !V \P"!V44K<> R# \d)p\P!RT RT 24Rp?EKRp?ii;i \d8p
\P!\P$!44RT
3uRp
?
#Rp
?
ii;i) u4
生成前端模版文件
:return: (bool, err_info)
r>z"{}/YakPanel/static/vite/lang/en-USr)r*Nr<4E>F)TN)r<>rr<>rrrr<>r<>r<>r*r<>rBrrr<><00>_add_suffix_to_keysrrrC) rrI<00>en_dirrzr3r<>r2r4<00>temp_file_data<74>temp_file_pathr8s & rrA<00>#config._generate_language_templates<65> sp<00><00>
<<3C>B<>B<>6<EFBFBD>CX<43>CX<43>CZ<43>[<5B> <0A>5<><<3C><<3C>V<EFBFBD>=R<>=R<>=T<>U<><06><11>w<EFBFBD>w<EFBFBD>~<7E>~<7E>m<EFBFBD>,<2C>,<2C> <0E>K<EFBFBD>K<EFBFBD> <0A> &<26><1F>J<EFBFBD>J<EFBFBD>}<7D>5<><08><1E>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1D>A<> <09>S<01><16>I<EFBFBD>I<EFBFBD>i<EFBFBD>(<28>6<> <1D><1C>*<2A>*<2A>V<EFBFBD>,<2C><06>"<22>S<EFBFBD>L<EFBFBD>6<EFBFBD>1<> <09> <20>J<EFBFBD>J<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>'A<>B<> <09>!%<25>!9<>!9<>)<29>!D<><0E>!.<2E><13>!4<>v<EFBFBD>!=<3D><0E><16> <20> <20><1E><14><1A><1A>N<EFBFBD>1K<31>L<> -<2D><1E> <1D><>!<21>S<01><1A>$<24>$<24>'8<><19> <0B>:<3A>a<EFBFBD>S<EFBFBD>%Q<>R<>R<><52>S<01><><19> <1D> <12> <1C> <1C>V<EFBFBD>2<>2<>4<> 5<><18>"<22>9<EFBFBD> <1C><> <1D>s7<00>>E><02>B$F4<00>> F1<05> F,<05>,F1<05>4 G6<03>?,G1<03>+G6<03>1G6c <0C><><00>RP\P!44p\PP VR4pRP\P!44p\PP V4'd\P!V4\P!V4p\P!RRV4p\P!W44R#)u4
生成后端模版文件
:return: (bool, err_info)
z3{}/YakPanel/static/language/gettext/en/LC_MESSAGES/zen.poz#{}/YakPanel/static/language/temp.poz msgstr ".*"z msgstr ""N) r<>rr<>rrr<>rr*r<>r?rdr)r<00>dir_h<5F> file_name<6D>new_filer<65>s& r<00>_generate_language_temppo<70> config._generate_language_temppo<70> s<><00><00>
F<01>L<>L<>V<EFBFBD>Mb<4D>Mb<4D>Md<4D>e<><05><16>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><15><07>0<> <09>8<>?<3F>?<3F><06>@U<>@U<>@W<>X<><08> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>(<28> #<23> #<23> <0E>I<EFBFBD>I<EFBFBD>h<EFBFBD> <1F><18>/<2F>/<2F>)<29>,<2C><07><15>&<26>&<26><1E><1B>g<EFBFBD>><3E><07>
<0F><18><18><18>+r%c <0C><><00>/pVP4F<wrEWB,p\V\4'dVPWR4W6&K8WSV&K> V#)uc
给任意深度嵌套的字典添加指定后缀
:param d: 处理前 json
:return: 处理后 json
)rr<>r<>rW<00>rr<><00>suffixr<78>rrf<00>new_keys&&& rrW<00>config._add_suffix_to_keys sO<00><00> <14><06><1B>'<27>'<27>)<29>J<EFBFBD>C<EFBFBD><19>l<EFBFBD>G<EFBFBD><19>%<25><14>&<26>&<26>"&<26>":<3A>":<3A>5<EFBFBD>"I<><06><0F>"'<27>w<EFBFBD><0F> $<24> <16> r%c <0C><><00>VP4Fgwr4VPV4'g\P!V4R#\ V\
4'gKMVP WB4'dKfR# R#)uU
检测任意深度嵌套的字典是否有指定后缀
:param d: json
:return: bool
FT)r<00>endswithrrBr<>r<>r+)rr<>rdrrfs&&& rr+<00>config._all_keys_have_suffix s\<00><00> <1C>'<27>'<27>)<29>J<EFBFBD>C<EFBFBD><16><<3C><<3C><06>'<27>'<27><16> <20> <20><13>%<25><1C><19>%<25><14>&<26>&<26><1B>1<>1<>%<25>@<40>@<40> <20> $<24>r%c <0C><><00>/pVP4F\wrEVPV4'dVR\V4)MTp\V\4'dVP WR4W6&KXWSV&K^ V#)u`
删除任意深度嵌套的字典指定后缀
:param d: 处理前 json
:return: 处理后 json
N)rrhrRr<>r<>r,rcs&&& rr,<00>config._remove_suffix_from_keys- sj<00><00> <14><06><1B>'<27>'<27>)<29>J<EFBFBD>C<EFBFBD>,/<2F>L<EFBFBD>L<EFBFBD><16>,@<40>,@<40>c<EFBFBD>-<2D>C<EFBFBD><06>K<EFBFBD><<3C>(<28>c<EFBFBD>G<EFBFBD><19>%<25><14>&<26>&<26>"&<26>"?<3F>"?<3F><05>"N<><06><0F>"'<27>w<EFBFBD><0F>$<24><16> r%c<08>><00>^RIpRp\VR4;_uu_4pVP4pRRR4VP!RRX4p\VR4;_uu_4pVP V4RRR4R# +'giLT;i +'giR#;i)rNz8/www/server/panel/class_v2/projectModelV2/nodejsModel.py<70>rz%public.return_error\((['\"])(.*?)\1\)z(public.return_error(public.lang(\1\2\1))r@) r?rX<00>readrdrHrr<>rhr@rr<>) rrr?r3r{r<00> new_content<6E>dir_pathr<68><00>py_files<65>patterna<6E> pattern2ar^s && r<00> replace_data<74>config.replace_data> s<><00><00><11>N<> <09> <11>)<29>S<EFBFBD> !<21> !<21>T<EFBFBD><1F>9<EFBFBD>9<EFBFBD>;<3B>L<EFBFBD>"<22><19>f<EFBFBD>f<EFBFBD>E<>Gr<47>)<29>+<2B> <0B><12>)<29>S<EFBFBD> !<21> !<21>T<EFBFBD> <10>J<EFBFBD>J<EFBFBD>{<7B> #<23>"<22> <0F>"<22> !<21><>"<22> !<21> <0F>s<00>A8<05>B <05>8 B <09> B c<08><><00>^RIpRp\P!V4Uu.uFqDPR4'gKVNK ppVP!R4pVP!R4pVF<>p\P
P W84p \V R4;_uu_4p
V
P4p RRR4VP!VRX 4p VP!VRV 4p \V R 4;_uu_4p
V
PV 4RRR4K<> R#uupi +'giLq;i +'giK<>;i)
rNz/www/server/panel/plugin/btwaf<61>.pyz?return public.return_message\((-?\d+),\s*0,\s*["\'](.+?)["\']\)zVreturn public.return_message\((-?\d+),\s*0,\s*["\'](.+?)["\']\s*\.\s*format\((.*?)\)\)rmz6return public.return_message(\1, 0, public.lang("\2"))zAreturn public.return_message(\1, 0, public.lang("\2".format(\3)))r@<00> r?rr<>rhr@rr<>rXrnrdrH) rrr?rpr<>rq<00>pattern3<6E> pattern3ar^r3r{rros && r<00>replace_data99<39>config.replace_data99<39> s<00><00><11>4<><08> "<22>z<EFBFBD>z<EFBFBD>(<28>3<>I<>3<>!<21>z<EFBFBD>z<EFBFBD>%<25>7H<37>A<EFBFBD>A<EFBFBD>3<><08>I<><16>:<3A>:<3A>`<60>a<><08><16>J<EFBFBD>J<EFBFBD> e<>g<01> <09>"<22>I<EFBFBD><1A><07><07> <0C> <0C>X<EFBFBD>9<>I<EFBFBD><15>i<EFBFBD><13>%<25>%<25><14>#<23>y<EFBFBD>y<EFBFBD>{<7B> <0C>&<26><1D>&<26>&<26><18>+d<>fr<66>s<>K<EFBFBD><1C>&<26>&<26><19>,p<>!,<2C>.<2E>K<EFBFBD><16>i<EFBFBD><13>%<25>%<25><14><14>
<EFBFBD>
<EFBFBD>;<3B>'<27>&<26>%<25>%"<22><>!J<01>&&<26>%<25><>&<26>%<25>%<25>s"<00>D<04>D<04> D<07>5D-<07> D* <0B>- D> c<08>2<00>^RIpRp\P!V4Uu.uFqDPR4'gKVNK ppVP!R4pVF<>p\P
P W74p\VR4;_uu_4p V P4p
RRR4VPRX
4p \VR4;_uu_4p V PV 4RRR4K<> R#uupi +'giL[;i +'giK<>;i)rNz#/www/server/panel/mod/project/proxyrwz<public\.lang\(\s*["\'](.+?)["\']\s*\.\s*format\((.*?)\)\s*\)rmzpublic.lang("\1", \2)r@rx) rrr?rpr<>rq<00>patternr^r3r{rros && r<00>replace_data223<32>config.replace_data223<32> s<><00><00><11>9<><08>!<21>z<EFBFBD>z<EFBFBD>(<28>3<>I<>3<>!<21>z<EFBFBD>z<EFBFBD>%<25>7H<37>A<EFBFBD>A<EFBFBD>3<><08>I<><14>*<2A>*<2A>\<5C>]<5D><07>!<21>I<EFBFBD><1A><07><07> <0C> <0C>X<EFBFBD>9<>I<EFBFBD><15>i<EFBFBD><13>%<25>%<25><14>#<23>y<EFBFBD>y<EFBFBD>{<7B> <0C>&<26>"<22>+<2B>+<2B>&><3E> <0C>M<>K<EFBFBD><16>i<EFBFBD><13>%<25>%<25><14><14>
<EFBFBD>
<EFBFBD>;<3B>'<27>&<26>%<25>"<22><> J<01>&<26>%<25><>&<26>%<25>%<25>s"<00>C-<04>C-<04>C2<07> D<07>2 D <0B> D c<08>v<00>VPR/4pRV9dRVR&RV9dRVR&RV9dRVR&VPRR4p\P!4R,\\P!44,pWC9dVP VR4pR \P !4R
\P!4R \P!4R \P!4R VPRR4R\P!\V44R\P!\PPR44RTR\PPR4'd\P !R4M\P !4R^eRRP#VP%R4^,P'4VPRR44/ p\P(!VR,4p\P*!V4'g`\P,!4'gE\P.!\P0!RV44\P2!V^R4\P6!RR4# \4d pRp?L'Rp?ii;i)<1E> form_datar<61>z******r<><00>phone<6E>errinforxr,z127.0.0.1:10086<38> REQUEST_DATE<54> PANEL_VERSION<4F>
OS_VERSION<EFBFBD> REMOTE_ADDR<44> REQUEST_URIr*<00> REQUEST_FORM<52>
USER_AGENTz
User-Agent<6E>
ERROR_INFO<EFBFBD> PACK_TIMEz'/www/server/panel/config/update_time.pl<70>TYPE<50>ERROR_IDz{}_{}r_z0https://geterror.yakpanel.com/bt_error/index.phpiNT<4E>OK)r"r<00> get_server_ipr<70><00>get_panel_portr<74><00>getDatera<00>get_os_version<6F> GetClientIprgrrrrrr<>r<>r<>r)r<><00> cache_getr
<00>
run_threadr <00> cache_setr<74>r<>)rr"<00>_form<72>error<6F>
panel_addr<EFBFBD> error_infos<6F>pkeyr<79>s&& r<00>err_collection<6F>config.err_collectionfs+<00><00><13><07><07> <0B>R<EFBFBD>(<28><05> <15><15> <1E>H<EFBFBD><05>j<EFBFBD> 1<> <15><15> <1E>H<EFBFBD><05>j<EFBFBD> 1<> <12>e<EFBFBD> <1B>h<EFBFBD>U<EFBFBD>7<EFBFBD>^<5E><13><07><07> <09>2<EFBFBD>&<26><05><1B>)<29>)<29>+<2B>c<EFBFBD>1<>C<EFBFBD><06>8M<38>8M<38>8O<38>4P<34>P<>
<EFBFBD> <15> <1E><19>M<EFBFBD>M<EFBFBD>*<2A>.?<3F>@<40>E<EFBFBD>
<1B>F<EFBFBD>N<EFBFBD>N<EFBFBD>,<2C> <1B>V<EFBFBD>^<5E>^<5E>-<2D> <18>&<26>/<2F>/<2F>1<> <19>6<EFBFBD>-<2D>-<2D>/<2F> <19>3<EFBFBD>7<EFBFBD>7<EFBFBD>5<EFBFBD>"<22>-<2D> <1A>F<EFBFBD>M<EFBFBD>M<EFBFBD>#<23>e<EFBFBD>*<2A>5<> <18>&<26>-<2D>-<2D><07><0F><0F>(;<3B>(;<3B>L<EFBFBD>(I<>J<> <18>%<25> <17>WY<57>W^<5E>W^<5E>We<57>We<57>gP<02>XQ<02>XQ<02><16><1F><1F>)R<>S<>W]<02>We<02>We<02>Wg<02> <12>C<EFBFBD> <16><07><0E><0E>u<EFBFBD>{<7B>{<7B>4<EFBFBD>'8<><11>';<3B>'A<>'A<>'C<>C<EFBFBD>G<EFBFBD>G<EFBFBD>E<EFBFBD>SU<53>DV<44>W<> 
<EFBFBD> <0B><16>z<EFBFBD>z<EFBFBD>+<2B>l<EFBFBD>3<>4<><04><16><1F><1F><04>%<25>%<25>f<EFBFBD>.C<>.C<>.E<>.E<> <15><16>!<21>!<21>&<26>/<2F>/<2F>2d<32>fq<66>"r<>s<><16> <20> <20><14>q<EFBFBD>$<24>/<2F><16><1F><1F><04>d<EFBFBD>+<2B>+<2B><><1D> <15><14><> <15>s<00> AJ#<00># J8<03>3J8)<02> __mail_listr r )r<>)<29><>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__r<5F>r<>r<>r<>r<>rNrrZr<00>_config__weixin_userrr#r,r3r7rDrOrUr[rbreror<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rrrrrrOrWrhrvr}r<>r<>r<>r<>r6r<>r<>r<>r<>r<>r<>r<>r<>r)r r9r@rGrKrOrSrjrrrzr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rr r rrrrr#r'r,r6r@r3r[rargrjrmrprxr|r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rrr rrrrrrr"r%r(r-r2r5r>rArIrPrXr[rarkrsrorprqrrr<>r<>r<>r<>r<>r<>r<>r^r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rr<>rr"r&r;rTrAr`rWr+r,rtr{rr<><00>__static_attributes__<5F>__classdictcell__)<01> __classdict__s@rr r sF<00><><00><00>%<25>K<EFBFBD><1B>5<>5<>I<EFBFBD><1E>!=<3D>=<3D>L<EFBFBD> <20>#7<>7<>N<EFBFBD> <20>><3E>1<>N<EFBFBD><1F> 6<>6<>M<EFBFBD>"<22>#9<>9<><14>#<23>$9<>9<><15><14>K<EFBFBD><16>M<EFBFBD> <14>A<01>K<01>G<01>G<01>
F<01>S<02>"=<3D> I<01>F<01>&!<21><14>0<>:!<21>
F<01>A<01>'<27> <15>,H<01><14>6^<01>"-<2D>D<01>h<01>< ;<3B>*<14>ZE<01>$ E<01><14>
J<01>(H<01>G<01>(`6<>FF<01>"E<01>8"E<01>JE<01>&#F<01>N,<14>`8F<01>vE<01>> <19>&B<01>RE<01> E<01> B<01> E<01>E<01>
%u<01>z8<15>t
<16><17>&.<2E>
<16>&@<01> C<01>F<01><14> #<16>L$<14>NE<01>8$f<01>N@F<01>F2<>4 G<01><14><#I<01>L <14><14>09<><1A>2<>2<>6<>!<21>$<24>"<22>%<25> <20> <20>(<28>'<27>'<27>+<2B>(<28>/<2F>.<2E> F<01> <20> Q<01>E<01>> <17>E<01>:><3E>:<3A>:<3A><13>
E<01> E<01>6<>"J<01>D <15>8<> /<2F><14>J<01>D[<01>R<01>E<01>E<01><15><F<01>,<14>8Z<01>@D<01>"[<01>& <14>3<>3<>3<>1<>=<3D>3<>3<>3<>7<>=<3D>%<25>
%<25>
%<25> 1<>$Q<01>$<16>" :<3A><16>$><3E><:<3A>2<14>0 1<>7<> J<01> L<01>G<01>
8<> c<01>0<16>"E<01>,
<17> <16> <19>#<14>J1<>4#v<01>J#<23>tc<01>Za<01><-<2D>"<13>.<14>B?<15>BM<01>0[E<02>~ <14>DB<01>2$<24>&6<>uk<01>p("<22>X<1D>J,<2C>2 <16> <14> <16>"F(<28>P+(<28>^(<28>b&,<2C>&,r%r )rrr?rrZr<>rr<>rr<>rCr<>r@r<>rrrrrr r r=r%r<00><module>r<>s\<00><01><0E>.<2E>.<2E>.<2E>.<2E> <0A><0E>,<2C><10>
 <0C>B<>B<><14>u9,<2C>u9,<2C><>,<2C>
<EFBFBD><14><14>*<2A>+<2B><>  <0C>t<EFBFBD>s<00>A<00>A*<00>A'<03>*A.