OpenVPN ń ṣiṣẹ́ lórí ìjáde kan ṣoṣo láti inú síkírípù ìwọlé: ipò ìjáde. Gbogbo ohun mìíràn tí síkírípù náà ń ṣe ni ọ̀ṣọ́. Hook lè dé ọ̀dọ̀ olùdánilójú tó tọ́, ṣàyẹ̀wò ìdáhùn náà kí ó sì tẹ ìlà onífẹ̀ẹ́ jáde, ṣùgbọ́n kí ó dá ipò padà tí ó túmọ̀ sí ìdàkejì ohun tí òǹkọ̀wé ní lọ́kàn. Ka àdéhùn náà kọ́kọ́ kí o sì kọ adapata yí i ká, ipò yẹn yóò sì pàrẹ́ gbogbo ẹgbẹ́ àṣìṣe yẹn.

Àdéhùn náà kéré: dámọ̀ àkọsílẹ̀ tí a fi ránṣẹ́, béèrè ìbéèrè tí a ní lọ́kàn lọ́wọ́ olùdánilójú tí a fọwọ́ sí, kí o sì gba èsì rere tí a kọ sílẹ̀ ti olùdánilójú yẹn nìkan fún ìbéèrè yẹn. Gbogbo ohun mìíràn ni ìpìlẹ̀.

Àwọn ipò mẹ́ta tí hook lè dá padà

Fún auth-user-pass-verify, ìwé ìtọ́sọ́nà OpenVPN 2.6 ń ṣàlàyé kóòdù ìjáde 0 gẹ́gẹ́ bí gbígbà, 1 gẹ́gẹ́ bí kíkọ̀, àti 2 gẹ́gẹ́ bí ìjẹ́rìí tí a dúró. Àwọn ni ìdáhùn mẹ́ta kan ṣoṣo tí olùpín ń yé, kíkún kan sì ní àbájáde ọ̀tọ̀ọ̀tọ̀ fún ìsopọ̀. Síkírípù tí ó jáde pẹ̀lú ipò pàṣẹ ìkẹyìn rẹ̀ ti jẹ́ kí ìpè log tàbí ìgbésẹ̀ ìmọ́tótó dìbò. Kọ ipò náà ní gbangba nínú gbogbo ẹ̀ka, pẹ̀lú àwọn ẹ̀ka tí kò tíì dé ọ̀dọ̀ olùdánilójú.

Àṣeyọrí HTTP àti àṣeyọrí ìjẹ́rìí jẹ́ ìpele ọ̀tọ̀ọ̀tọ̀, dídà wọ́n pọ̀ ni ọ̀nà tó wọ́pọ̀ jùlọ tí hook yìí fi ń ṣe àṣìṣe. Ìdáhùn 202 túmọ̀ sí pé a gba ìbéèrè náà fún ṣíṣe, kì í ṣe pé a ti jẹ́rìí ọ̀rọ̀ ìpamọ́. Ṣàlàyé ipò tí a ń retí, ìrísí ìdáhùn àti ìdájọ́ ìkẹyìn láti inú àdéhùn API tí a fún ọ, kí o má sì ṣe dá orúkọ pápá kan sílẹ̀ nítorí pé ó dàbí ohun tó tọ́.

Tí ìdáhùn náà bá dé ní àkókò tó tẹ̀lé, ìyẹn ni ọ̀nà tí a dúró, a sì gbọ́dọ̀ kọ́ ọ bẹ́ẹ̀. Ìgbìyànjú tí a dúró tí kò tíì parí rí máa ń dá àwọn ohun àmúṣọrọ̀ dúró títí àkókò ìparí yóò fi kọjá.

Ka fáìlì ẹ̀rí gẹ́gẹ́ bí a ti kọ ọ́

Nínú ọ̀nà nípasẹ̀ fáìlì tí a kọ sílẹ̀, olùpín ń kọ orúkọ aṣàmúlò àti ọ̀rọ̀ ìpamọ́ gẹ́gẹ́ bí ìlà méjì àkọ́kọ́ ti fáìlì àkókò, ó ń fi ọ̀nà yẹn fún síkírípù, ó sì ń yọ fáìlì náà kúrò nígbà tí síkírípù bá padà. Ka àwọn ìlà méjì yẹn gẹ́gẹ́ bí dátà: má ṣe source fáìlì náà rí, má ṣe gbé e wò rí, kí o má sì lẹ̀wù àkóónú rẹ̀ mọ́ ìlà àṣẹ kan tí tábìlì ìlànà lè rí i. Pa ọ̀rọ̀ ìpamọ́ mọ́ ní báìtì báìtì, nítorí pípín ipa rẹ̀ bí o ṣe ń pín orúkọ aṣàmúlò ń yí ẹ̀rí náà pada ní ìdákẹ́jẹ́. Àkójọ fáìlì fún fáìlì àkókò yẹn jẹ́ ìpinnu ìgbékalẹ̀, nítorí náà jẹ́rìí pé ó wà, àti pé gbogbo ènìyàn lórí ẹ̀rọ kò lè kà á.

Ya ẹ̀rí olùdánilójú fúnra rẹ̀ sọ́tọ̀ kúrò nínú ti aṣàmúlò: ó jẹ́ ti ìsopọ̀ ẹnubodè, ó ń gbé inú ilé ìkọ̀kọ̀ pẹpẹ, ó sì nílò àṣẹ ìjẹ́rìí nìkan, nítorí náà kì í ṣe ẹ̀rí pé ènìyàn pàtó kan ti jẹ́rìí. Má ṣe jẹ́ kí hook di olùdánilójú ọ̀rọ̀ ìpamọ́ kejì pẹ̀lú. Kíkọ ìfiwéra hash lọ́wọ́ kò di àìléwu nípasẹ̀ mímú ìlúgà náà dára, olùdánilójú tí a ń tọ́jú sì ti yé ètò iyọ̀ àti ìnáwó ilé àkọsílẹ̀.

Pinnu ohun tí ìdáhùn tí kò lè pín sí ẹgbẹ́ túmọ̀ sí

Àwọn àkókò ìparí, àṣìṣe ìgbékalẹ̀, àwọn ìdáhùn tí kò tọ́ àti backend tí kò sí ló pín ìwà kan: kò sí ọ̀kan nínú wọn tó jẹ́ ìjẹ́rìí rere. Hook gbọ́dọ̀ kùnà ní ìdúró fún ọ̀kọ̀ọ̀kan wọn kí ó sì kọ ìdí tí olùṣiṣẹ́ lè gbé ìgbésẹ̀ lé. Ìdí yẹn jẹ́ ti log tí a dáàbò bo, kì í ṣe ti ìfiránṣẹ́ tí a dá padà fún ẹni tí ń gbìyànjú láti sopọ̀.

Ṣọ́ra bákan náà pẹ̀lú àwọn ọ̀nà tí kò dé ọ̀dọ̀ olùdánilójú rárá. Iye ìṣètò tí ó sọnù, àṣírí tí kò lè kà tàbí ìgbẹ́kẹ̀lé tí a kò gbé sórí gbọ́dọ̀ mú kíkọ̀ jáde pẹ̀lú àmì ìṣiṣẹ́ tó yàtọ̀ dípò gbígbà láìròtẹ́lẹ̀. Dán àwọn ẹ̀ka yẹn wò nípasẹ̀ yíyọ ìgbẹ́kẹ̀lé kúrò nínú yàrá ìdánwò dípò ríronú nípa wọn. Níbi tí ìkùnà láti kọ log lè yí ipò ìjáde padà, kíkọ log ti di apá kan ìpinnu, a sì gbọ́dọ̀ mú un di aláìléwu.

Ìṣètò olùpín ṣe pàtàkì níbí pẹ̀lú: a ń bọ̀wọ̀ fún àwọn síkírípù tí aṣàmúlò ṣàlàyé nìkan nígbà tí ìṣètò tí ń ṣiṣẹ́ bá gbà wọ́n ní ìpele ààbò tí a béèrè, ìṣètò yẹn sì jẹ́ yíyàn mọ̀ọ́mọ̀ kì í ṣe iye àkọ́kọ́ tí a ó gbé sókè.

Jẹ́rìí ìdájọ́ náà, kì í ṣe ìlà tí a tẹ̀ jáde

Kọ ìdánwò kan tí ó ń ṣàyẹ̀wò ipò ìjáde tààrà. Kọ fáìlì ẹ̀rí àpẹẹrẹ kan, ṣe hook náà lórí rẹ̀ pẹ̀lú àkọsílẹ̀ tí a mọ̀ pé ó dára àti èyí tí a mọ̀ pé ó burú, kí o sì ka ipò tí shell ń sọ dípò ọ̀rọ̀ tí síkírípù tẹ̀ jáde. Ìṣàyẹ̀wò kan náà yẹn máa ń mú ọ̀pọ̀lọpọ̀ àṣìṣe àdéhùn kí ẹ̀rọ ìbánisọ̀rọ̀ tó sopọ̀.

Lẹ́yìn náà ṣe àwọn ọ̀ràn kan náà nípasẹ̀ ẹ̀rọ ìbánisọ̀rọ̀ gidi lórí olùgbọ́ tí kì í ṣe ti ìgbékalẹ̀sórí, kí o sì jẹ́rìí ohun tí olùpín kọ sílẹ̀: gbà, kọ̀, tàbí dúró. Bo àkọsílẹ̀ tí a pa, ọ̀rọ̀ ìpamọ́ tí kò tọ́, ìdáhùn olùdánilójú tí kò tọ́, àkókò ìparí àti olùdánilójú tí kò lè dé. Tí ọ̀ràn kankan bá ṣubú sí ipò tí o kò lè dárúkọ, adapata kò tíì parí.

Pa àfihàn láti inú èsì olùdánilójú dé ipò ìjáde mọ́ lẹ́gbẹ̀ẹ́ síkírípù nínú ilé ìkójọ, kí onímọ̀-ẹ̀rọ tó kàn lè ka àdéhùn náà láìṣe ìmúpadà ẹ̀rọ lórí kóòdù.

Àwọn àpilẹ̀kọ tó jọra