Àṣìṣe Python OpenVPN 3: tún irinṣẹ́ náà ṣe, kì í ṣe Python ẹ̀rọ
Traceback dárúkọ atúmọ̀-èdè tí ó ṣiṣẹ́ frontend, kì í ṣe iṣẹ́ tí ó ní tunnel. Fi àwọn méjèèjì wé ara wọn kí o tó yí nǹkan èyíkéyìí padà káàkiri ẹ̀rọ.
Traceback máa ń farahàn nígbà tí àṣẹ ìṣàkóso VPN bá bẹ̀rẹ̀, àti ìmọ̀lára àkọ́kọ́ máa ń sáré lọ sí fífi Python mìíràn sórí ẹ̀rọ tàbí yíyí àkọ́kọ́ ẹ̀rọ padà sí ibòmíì. Ìmọ̀lára yẹn ń dàpọ̀ runtime méjì tí kò ní ìbáṣepọ̀ pẹ̀lú ara wọn. Ọ̀kan jẹ́ ti ẹ̀rọ ìṣiṣẹ́ àti àwọn irinṣẹ́ rẹ̀ tí a pín; èkejì jẹ́ ti iṣẹ́ èyíkéyìí tí o ń kọ́. Yíyí èkínní padà kí èkejì lè tẹ́lọ́rùn ni ọ̀nà tí desktop tí ń ṣiṣẹ́ fi ń pàdánù olùṣàkóso àpò rẹ̀.
Ìfiwéra tí ó yẹ kí a ṣe wà láàrin ẹ̀yà tí ó kùnà ní tòótọ́ àti runtime tí o ní ẹ̀tọ́ láti yí padà. Wọn kì í fẹ́rẹ̀ẹ́ jẹ́ ohun kan náà rárá.
Ìbéèrè Python méjì tí ó dà bí ọ̀kan
Ìbéèrè àkọ́kọ́ ni: atúmọ̀-èdè wo ni ó ṣiṣẹ́ ètò tí ó tẹ Traceback jáde? Èkejì ni: atúmọ̀-èdè wo ni iṣẹ́ mi yẹ kí ó lò? Nínú terminal wọ́n dà bí ẹni pé wọ́n jẹ́ ọ̀kan, nítorí a ń dáhùn àwọn méjèèjì nípa títẹ python3, ṣùgbọ́n wọ́n ní olówó ọ̀tọ̀ọ̀tọ̀, ọ̀nà ìgbéga ọ̀tọ̀ọ̀tọ̀ àti agbègbè ipa ọ̀tọ̀ọ̀tọ̀.
Irinṣẹ́ ẹ̀rọ kan so mọ́ atúmọ̀-èdè tí ìpín rẹ̀ fi ránṣẹ́ pẹ̀lú rẹ̀, pẹ̀lú àwọn mọ́dùùlù tí a kọ́ fún ABI atúmọ̀-èdè yẹn. Iṣẹ́ kan so mọ́ àyíká èyíkéyìí tí o bá dá fún un. Gbígbé àkọ́kọ́ ẹ̀rọ lọ yóò yí èkínní padà fún gbogbo irinṣẹ́ lórí ẹ̀rọ ní ẹ̀ẹ̀kan; dídá àyíká kan yóò yí èkejì padà fún àpò kan ṣoṣo.
Ọ̀kan ṣoṣo nínú àwọn ìgbésẹ̀ yẹn ni a lè yí padà ní ìṣẹ́jú kan. Kì í ṣe èkínní.
Ẹ̀yà wo ni ó dá àṣìṣe náà
Ka ìlà àkọ́kọ́ ti Traceback àti fáìlì ìṣiṣẹ́ tí ó dá a kí o tó ka ohunkóhun mìíràn. Frontend ìlà àṣẹ, iṣẹ́ aláṣẹ àti àwọn ìsopọ̀ API jẹ́ ẹ̀yà ọ̀tọ̀ọ̀tọ̀, àti pé díẹ̀ nínú wọn ni Python.
command -v openvpn3
head -n 1 "$(command -v openvpn3)"
dpkg -S "$(command -v openvpn3)" 2>/dev/null
systemctl status openvpn3-service-client --no-pagerÌlà àkọ́kọ́ script kan dárúkọ atúmọ̀-èdè tí yóò lò, àti pé Traceback wá láti inú atúmọ̀-èdè yẹn. Ìbéèrè àpò sọ fún ọ pé ẹni wo ni ó ní fáìlì náà, èyí tí ó pinnu ẹni tí a gbà láàyè láti yí i padà. Ipò iṣẹ́ ń dáhùn ìbéèrè mìíràn pátápátá: bóyá backend aláṣẹ tí ó ń ṣí àwọn ìpàdé ní tòótọ́ ń ṣiṣẹ́.
Àṣìṣe gbígbé mọ́dùùlù wọlé, kíkọ̀ ìmúṣiṣẹ́ D-Bus àti ẹ̀rí tí a kọ̀ jẹ́ ìpele mẹ́ta ọ̀tọ̀ọ̀tọ̀. Àṣìṣe gbígbé wọlé máa ń ṣẹlẹ̀ kí ìpàdé èyíkéyìí tó wà, nítorí náà kò sí ìwọ̀n ìṣètò VPN tí yóò tún un ṣe, iṣẹ́ tí ń ṣiṣẹ́ pẹ̀lú kò ní tún un ṣe. Pípín ìfiránṣẹ́ sí ọ̀kan nínú àwọn ìpele mẹ́ta yẹn ni ìgbésẹ̀ àkọ́kọ́ gidi.
Kí ni àyíká iṣẹ́ lè tún ṣe àti kí ni kò lè tún ṣe
Àyíká iṣẹ́ ń yanjú ìṣòro iṣẹ́: àwọn ẹ̀yà ilé-ìkàwé tí ó péye tí ètò kan nílò, tí a ya sọ́tọ̀ kúrò nínú gbogbo ohun mìíràn. Ìyẹn wúlò ní tòótọ́, àti pé òun ni irinṣẹ́ tí ó tọ́ nígbà tí ètò tí ń kùnà bá jẹ́ script tìrẹ.
uv run --python 3.11 app.py
python3 -c 'import openvpn3; print(openvpn3.__file__)'Àṣẹ èkejì fi hàn pé irú kópì àwọn ìsopọ̀ wo ni atúmọ̀-èdè pàtó kan lè rí, àti pé òun ni ọ̀nà tí ó yára jù láti yà àpò tí ó sọnù kúrò nínú àpò tí a fi bò. Ṣe é pẹ̀lú atúmọ̀-èdè tí script tí ń kùnà ń lò, kì í ṣe pẹ̀lú òmíràn tí ó ń ṣiṣẹ́ lásán.
Ohun tí àyíká iṣẹ́ kò lè ṣe ni títún frontend tí ìpín ti pín ṣe. Àwọn ìdálẹ́kọ̀ọ́ ètò yẹn ni a kọ́ fún atúmọ̀-èdè tí olùṣàkóso àpò yàn, àti pé ṣíṣe é nínú àyíká iṣẹ́ rẹ yóò kùnà tàbí dá àdàpọ̀ tí kò sí ẹni tí ó ṣètìlẹ́yìn fún. Fífi àwọn ọ̀nà wọlé sínú rẹ̀ pẹ̀lú àyípadà àyíká ni àṣìṣe kan náà pẹ̀lú àwọn ìgbésẹ̀ àfikún: o ti yí ohun tí irinṣẹ́ ń gbé wọlé padà láìyí ohun tí a dán wò pé kí ó lòdì sí. Ìpàṣípààrọ̀ yẹn dà bí àtúnṣe fún ìgbà tí ó pé títí dé ìmúwọlé tí ó tẹ̀lé.
Ìdí tí yíyí atúmọ̀-èdè ẹ̀rọ padà fi jẹ́ ìdẹkùn
Yíyí atúmọ̀-èdè àkọ́kọ́ padà wuni nítorí ó dà bí ẹni pé ó tún Traceback ṣe pẹ̀lú àṣẹ kan. Ó tún fọ́ àbá tí gbogbo irinṣẹ́ Python tí a pín lórí ẹ̀rọ-ìgbàlejò dá lórí, àwọn àìkúnà yóò sì farahàn nígbà tí ó tọ́ àti ní àwọn ibi tí kò ní ìbáṣepọ̀.
Àwọn ọ̀nà yíyan àfidípò ni a ṣe láti yí padà láàrin àwọn ìmúṣẹ tí ó dọ́gba, kì í ṣe láti fi èdè tuntun sórí àwọn mọ́dùùlù àtijọ́ tí a kọ́. Àwọn ìmúgbòòrò tí a kọ́ ni a kọ́ fún ABI pàtó kan, nítorí náà mọ́dùùlù tí a gbé wọlé lánàá lè kùnà láti gbé wọlé lónìí láìsí àpò kan tí a yọ kúrò.
Ìdẹkùn orúkọ kan tún wà nínú àwọn ìmọ̀ràn tí àwọn ènìyàn ń rí. Àṣẹ python tí kò ní ẹ̀yà kò ní ìtumọ̀ àgbáyé kan láàrin àwọn ìpín àti àyíká, àti pé gbígbà á gẹ́gẹ́ bí ẹ̀dà àkàwé tí ó dúró ṣinṣin fún ẹ̀yà pàtàkì kan yóò dá àwọn àtúnṣe tí ó ń ṣiṣẹ́ lórí ẹ̀rọ tí a kọ wọ́n nínú nìkan. Ka ìlànà ẹ̀rọ tí ó wà níwájú rẹ, kì í ṣe èyí tí ó wà nínú àkọsílẹ̀ blog.
Àwọn ìdánwò ìtẹ́wọ́gbà ọ̀tọ̀ọ̀tọ̀
Ní ìparí, ìdánwò méjì yẹ kí ó wà, àti pé kíkọjá ọ̀kan kò sọ ohunkóhun nípa èkejì. Èkínní ni pé àṣẹ oníbàárà tí a ṣètìlẹ́yìn fún ń ṣiṣẹ́ pẹ̀lú atúmọ̀-èdè tí a pín fún. Èkejì ni pé iṣẹ́ aláṣẹ ń dá ìpàdé kan àti pé tunnel ń gbé ìrìnàjò.
openvpn3 sessions-list
openvpn3-service-client --help 2>/dev/null | head -n 3
ip -4 addr show tun0Nígbà tí o ń ṣiṣẹ́, pa ọ̀nà àtilẹ̀sẹ̀ mọ́ láti wọ ẹ̀rọ, pàápàá bí VPN bá ń gbé àǹfààní ìṣàkóso kan ṣoṣo rẹ. Yíyí atúmọ̀-èdè ẹ̀rọ padà ni irú àtúnṣe tí ó lè gbà á lọ́wọ́ ní àárín ọ̀nà.
Bí àìkúnà bá jẹ́ mọ́dùùlù tí ó sọnù fún irinṣẹ́ ẹ̀rọ, àtúnṣe ni ìgbésẹ̀ àpò nípasẹ̀ ìlànà iṣẹ́ tí a ṣètìlẹ́yìn fún. Bí àìkúnà bá jẹ́ ìforígbárí ẹ̀yà nínú iṣẹ́ rẹ fúnra rẹ, àtúnṣe ni àyíká. Yíyan láàrin àwọn méjèèjì ni gbogbo ìpinnu, àti pé irú ètò tí ó tẹ Traceback jáde ni ó ń pinnu rẹ̀.