Π‘Π»Π΅Π΄ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Π°ΡΠ°ΠΊΠ° Trojan Source, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠ΅Π΄Π° Π½Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π²ΡΠΏΠΎΡΠΎΡΠ΅Π½ ΡΠ΅ΠΊΡΡ, Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° ΠΎΡΠ΅ Π΅Π΄Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΡΠΈΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π·Π° ΠΊΠΎΠ΄ Π½Π° JavaScript. ΠΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° unicode ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«γ €Β» (ΠΊΠΎΠ΄ 0x3164, Β«HANGUL FILLERΒ»), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ ΠΊΡΠΌ Π³ΡΡΠΏΠ°ΡΠ° Π½Π° Π±ΡΠΊΠ²ΠΈΡΠ΅, Π½ΠΎ Π½ΡΠΌΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅. Unicode ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π° ΡΠΎΠ·ΠΈ ΡΠΈΠΌΠ²ΠΎΠ», Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π° ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ECMAScript 2015 Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° JavaScript, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½Π΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ Π·Π° ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ Notepad++ ΠΈ VS Code.
ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Node.js, Π² ΠΊΠΎΠΉΡΠΎ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΡΡΡΡΠΎΡΡΠ° ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» Β«γ €Β», Π΅ ΡΠΊΡΠΈΡ Π±Π΅ΠΊΠ΄ΠΎΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΡ Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ΄: app.get(β/network_healthβ, async (req, res) => { const { timeout,γ €} = req.query; // Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ Β«const { timeout,γ € \u3164}Β» const checkCommands = [ βping -c 1 google.comβ, βcurl -s http://example.com/β,γ € // ΡΠ»Π΅Π΄ Π·Π°ΠΏΠ΅ΡΠ°ΡΡΠ° ΡΠ»Π΅Π΄Π²Π° ΡΠΈΠΌΠ²ΠΎΠ» \u3164 ];
ΠΠ° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄, ΡΡΠ΅Π· Π²ΡΠ½ΡΠ½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° ΡΠ°ΠΌΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° timeout, Π° ΠΌΠ°ΡΠΈΠ²ΡΡ Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΡΠ΄ΡΡΠΆΠ° Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π΅Π½ ΡΠΈΠΊΡΠΈΡΠ°Π½ ΡΠΏΠΈΡΡΠΊ. ΠΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° timeout, ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΎΡΠ΅ Π΅Π΄Π½Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Ρ ΠΊΠΎΠ΄ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° \u3164, ΠΊΠΎΡΡΠΎ ΡΡΡΠΎ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΠΌΠ°ΡΠΈΠ²Π° Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π’Π°ΠΊΠ°, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΠ°ΠΊΠ°Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΄ΠΎΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π·Π°ΡΠ²ΠΊΠ° ΠΎΡ Π²ΠΈΠ΄Π° "https://host:8080/network_health?=ΠΊΠΎΠΌΠ°Π½Π΄Π°".
ΠΠ°ΡΠΎ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ ΡΠΈΠΌΠ²ΠΎΠ»ΡΡ Β«ΗΒ» (ALVEOLAR CLICK), ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π·Π° ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»Π΅Π½ Π·Π½Π°ΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΡΠ°Π·ΡΡ Β«if(environmentΗ=ENV_PROD){Β» ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² Node.js 14 Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΡΡΠΈΠ½Π΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² Π½Π΅Π³ΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΠ΅, Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Β«environmentΗΒ» Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ENV_PROD. ΠΠ΅ΠΆΠ΄Ρ Π·Π°Π±Π»ΡΠΆΠ΄Π°Π²Π°ΡΠΈΡΠ΅ unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π°Ρ ΡΡΡΠΎ Β«οΌΒ», Β«βΒ», Β«οΌΒ», Β«β©΅Β», Β«β¨Β», Β«β«½Β», Β«κΏΒ» ΠΈ Β«βΒ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
