Ang na-edit na mac.py na walang binabago ay ang karaniwang unang sintomas. Ang file sa disk ay hindi ang pinapatakbo ng Access Server; kinakarga ng serbisyo ng pagpapatotoo ang script mula sa database ng configuration ng server, at ang nakaimbak na kopya ang nagpapasya sa isang pag-login. Hanggang hindi napapalitan ang nakaimbak na halaga, pinatutunayan lang ng bawat pagsubok na gumagana pa ang lumang script.

Tatlong kondisyon ang nagpapasya sa gawain: kung nailagay kailanman ang halaga sa database ng configuration, kung inutusan ang serbisyo na i-load itong muli, at kung talagang tumatakbo ang binago mong code sa bawat koneksyon. Iba ang sintomas ng bawat isa, at ang pag-aayos ng mali ay nagsasayang ng window ng maintenance.

Ang file ay pinagmulan, hindi ang tumatakbong kopya

Hinihawak ng Access Server ang post-auth script sa ilalim ng key na auth.module.post_auth_script. Ang pag-edit ng file ay nag-a-update lamang ng iyong working copy. Binabasa ng daemon ang nakaimbak na halaga, kaya nananatiling hindi nakikita ang pagbabago hanggang burahin mo ang lumang entry at ilagay ang bagong file sa puwesto nito. Ang nakaimbak na halaga ang tanging kopya na tinitingnan ng serbisyo ng pagpapatotoo.

Basahin ito bago mo baguhin. Kung tumutugma na ito sa file na in-edit mo, wala ang problema sa imbakan at lumipat sa tanong ng saklaw. Kung nagpapakita ito ng lumang bersyon, hindi umabot ang pagbabago sa serbisyo.

./sacli -k auth.module.post_auth_script ConfigGet

Palitan ang nakaimbak na kopya, saka ilapat

Ang pagbura bago magsulat ay hindi palamuti. Pinapalitan ng ConfigPut kasama ang --value_file ang halaga sa isang hakbang, at ang ConfigDel muna ay ginagawang imposibleng maiwan ang isang luma o sirang entry. Magtabi ng kopya ng gumaganang script sa labas ng folder ng mga script bago magsimula.

./sacli -k auth.module.post_auth_script ConfigDel
# store the file, then apply it
./sacli -k auth.module.post_auth_script --value_file=/root/post_auth.py ConfigPut
./sacli start

Inilalapat ng sacli start ang binagong configuration sa mga panloob na serbisyo, at iyon ang nagpapairal sa bagong script. Hindi ito katulad ng pag-restart ng buong makina o ng daemon, at hindi ito dapat palitan niyon maliban kung kailangan ito ng binabago mo.

Gumamit ng absolute path para sa value file at tiyakin na mababasa ito ng root. Ang path na nalulutas mula sa shell mo ngunit hindi mula sa service account ay gumagawa ng nakaimbak na halaga na mukhang tama sa ConfigGet at nabigo sa unang pag-login. Suriin muli ang nakaimbak na resulta pagkatapos ng sacli start, hindi bago.

Saklaw ng module o bawat koneksyon: saan dapat ang query

Isinasagawa ng Python ang mga pahayag sa antas ng module nang isang beses, kapag kinakarga ang script. Kaya ang query sa database na nakasulat sa itaas ng file ay nagbabasa ng talahanayan sa oras ng pagkarga at pinapanatili ang sagot na iyon para sa bawat susunod na koneksyon. Ito ang ikalawang dahilan kung bakit ang isang pagbabago ay mukhang walang ginagawa: tumatakbo ang code, ngunit hindi sa oras na inaasahan mo.

Ilagay ang query sa loob ng handler na post_auth upang tumakbo ito sa bawat pagpapatotoo. Panatilihin ang dokumentadong pirma, iakma ang resultang pagpapatotoo na tinatanggap ng handler, at ibalik ang parehong bagay sa halip na hubad na numero.

Panatilihin din ang paghawak ng koneksyon sa loob ng handler. Ang koneksyong binuksan sa pag-import ay maaaring isara ng server bago pa mag-login ang unang user, at ang nagresultang error ay mukhang tinanggihang kredensyal kaysa sirang script.

Dalawang landas ng pagtanggi, isang may-ari

Kung ang desisyon ay lokal na query, hawak ng Python handler ang resulta. Kung ito ay panlabas na HTTP check, hayaang ang exit status ng utos ang magdala ng sagot: ang wrapper na lumalabas na may di-zero na code ay tumatanggi sa pag-login, at ang status ng huling utos ay nagiging status ng script nang walang tahasang exit.

Itago ang lihim sa labas ng listahan ng proseso. Ang file na mababasa ng root o halagang environment na ipinapasa ng serbisyo ay mas ligtas kaysa argument na mababasa ng kahit sinong lokal na user mula sa ps. I-pin ang endpoint sa isang variable bago ang tawag, upang ang maling tipo ay mabigo sa configuration at hindi habang nag-login ang isang tao. Paikutin ang lihim na iyon tulad ng anumang kredensyal.

Pumili ng isang may-ari sa bawat pagsusuri. Ang script na nagtatanong sa database at tumatawag ng HTTP service ay kailangan ng inihayag na tuntunin sa priyoridad para sa kaso na hindi sila magkasundo, kung hindi ay hindi tutugma ang dahilan ng pagtanggi sa log sa sinabi sa user.

Ilapat ito nang hindi nakakandado ang administrator

Dalawang pananggalang ang gumagawa sa pagbabago na maibabalik: pangalawang admin account na hindi umaasa sa script, at kilalang mabuting kopya na itinago sa labas ng folder ng mga script. Ilapat ang pagbabago sa window ng maintenance, pagkatapos ay panoorin ang isang test login at isang sinadyang pagtanggi bago ka humiwalay. Kung ang log ay nagpapakita ng syntax error sa halip na desisyon sa pagpapatotoo, sira ang nakaimbak na script at lahat ng pag-login ay mabibigo.

Dalawang kondisyon ang nagsasabing maghintay: hindi mo mabasa ang value file bilang root, o wala kang ikalawang daan papasok sa admin interface. Ginagawa ng dalawa ang maliit na pagbabago na pagkakandado, at wala sa kanila ang sulit na subukan sa production server sa dulo ng araw. Sinasaklaw ng dokumentasyon ng Access Server ang post-auth interface at ang mga sinusuportahang field nito.

Kaugnay na mga artikulo