ΠΠ·Π΄Π°Π΄Π΅Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅Π½ HTTP ΡΡΡΠ²ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π»Π΅Π²ΠΈ proxy ΡΡΡΠ²ΡΡ Angie 1.11.0, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°Ρ ΠΎΡ Nginx, ΠΎΡ Π³ΡΡΠΏΠ° Π±ΠΈΠ²ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΡΠ½Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° F5 Network. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Angie Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ BSD. ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΏΠΎΠ»ΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΡΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π Π΅Π΄ ΠΠ‘, Astra Linux Special Edition, Π ΠΎΡΠ° Π₯ΡΠΎΠΌ Π‘Π΅ΡΠ²Π΅Ρ, ΠΠ»Ρ ΠΈ Π€Π‘Π’ΠΠ-Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΠ»Ρ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΡΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π° ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° βΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρβ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° ΠΏΡΠ΅Π· Π΅ΡΠ΅Π½ΡΠ° Π½Π° 2022 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ Π² ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° 1 ΠΌΠ»Π½. Π΄ΠΎΠ»Π°ΡΠ°. ΠΠ΅ΠΆΠ΄Ρ ΡΡΠ΄ΡΡΠΆΠ½ΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°: ΠΠ°Π»Π΅Π½ΡΠΈΠ½ ΠΠ°ΡΡΠ΅Π½Π΅Π² (Π»ΠΈΠ΄Π΅Ρ Π½Π° Π΅ΠΊΠΈΠΏΠ°, ΡΠ°Π·Π²ΠΈΠ²Π°Π» ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Nginx Unit), ΠΠ²Π°Π½ ΠΠΎΠ»ΡΡΠ½ΠΎΠ² (Π±ΠΈΠ²Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² Rambler ΠΈ Mail.Ru), ΠΠ»Π΅Π³ ΠΠ°ΠΌΠΎΠ½ΡΠΎΠ² (ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° Π΅ΠΊΠΈΠΏΠ° Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π² NGINX Inc) ΠΈ Π ΡΡΠ»Π°Π½ ΠΡΠΌΠΈΠ»ΠΎΠ² (ru@FreeBSD.org).
ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² Angie 1.11.0:
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΌΠΎΠ΄ΡΠ» "http-metric", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ HTTP ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Π΄Π° ΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ (Π±ΡΠΎΡΡΠΈ, Ρ ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΏΠ»ΡΠ·Π³Π°ΡΠΈ ΡΠ΅ ΡΡΠ΅Π΄Π½ΠΈ ΠΈ Π΄Ρ.). ΠΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΡΡΠ±ΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π² ΡΠΎΡΠΌΠ°ΡΠΈ JSON ΠΈ Prometheus ΡΡΠ΅Π· HTTP API (\/status\/http\/metric_zones\/), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ACME: Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ALPN Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΡΡΠ° Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π² HTTP API \/status\/http\/acme_clients\/ (Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Prometheus), ΠΎΠΏΡΠΎΡΡΠ΅Π½Π° Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° HTTP ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈΡ ΠΈ Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΎΡ Π±Π»ΠΎΠΊΠ° stream. HTTP Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² ACME ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· Π±Π»ΠΎΠΊΠΎΠ²Π΅ server Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° listen 80 Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° (Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ»ΡΡΠ°ΡΠΈΡ ΠΏΠΎΡΡ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° acme_http_port). ΠΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΌΠΈΠ½Π΅ Π±Π΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° max_cert_size Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° acme_client). ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° ΠΎΡ ACME ΡΡΡΠ²ΡΡΠ° ΡΠ΅Π³Π° Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° acme_max_response_size.
- Π ΠΌΠΎΠ΄ΡΠ»Π° http_image_filter Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈ AVIF ΠΈ HEIC. Π Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° image_filter Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ convert Π·Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° TLS ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ECH (Encrypted ClientHello), ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ESNI (Encrypted Server Name Indication) ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° TLS ΡΠ΅ΡΠΈΠΈΡΠ΅, ΠΊΠ°ΡΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΈΡ Π΄ΠΎΠΌΠ΅ΠΉΠ½. Π€Π°ΠΉΠ»ΡΡ Ρ ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π·Π° ECH ΡΠ΅ Π·Π°Π΄Π°Π²Π° ΡΡΠ΅Π· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° ssl_encrypted_hello_key, Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ECH Π΅ Π½Π°Π»ΠΈΡΠ½Π° ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $ssl_encrypted_hello.
- Π ΠΌΠΎΠ΄ΡΠ»Π° stream Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° PROXYv2 ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. ΡΡΡΠ²ΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π±ΡΠΎΠ΅Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² ΡΠΏΠΈΡΡΡΠΈ ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΏΡΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ Prometheus (ΠΏΡΡΠΈΡΠ°, Π·Π°Π²ΡΡΡΠ²Π°ΡΠΈ Π½Π° ΠΊΠΎΡΠ° ΡΠ΅ΡΡΠ°, Π²Π΅ΡΠ΅ Π²ΡΡΡΠ°Ρ Π±ΡΠΎΡ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ API).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $sent_body, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° ΡΡΠ»ΠΎΡΠΎ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° ΠΎΡ ΠΏΠΎΠ΄Π·Π°ΡΠ²ΠΊΠ° ΠΈΠ»ΠΈ Π·Π°ΡΠ²ΠΊΠ° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΌΠΎΠ΄ΡΠ».
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $upstream_cache_key, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΠΊΠ»ΡΡ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅.
- Π ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ XOAUTH2 ΠΈ OAUTHBEARER.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° AWS-LC, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π° ΠΎΡ Amazon.
- Π Π΅ΡΠ΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π² NetBSD 10.0.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΠΊΡΠΈΡΠ½Π΅ΡΠΎ ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ GET ΠΈ HEAD.
- ΠΠΎΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ HTTP/3, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π²Π»ΠΎΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ reload ΠΈ ΡΡΠΈΠ² ΡΠ»Π΅Π΄ Π±ΠΈΠ½Π°ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅; ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° QUIC ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΠ΅Π· Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° BPF ΠΊΠΎΠ΄Π°.
- ΠΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° nginx ΡΠ° ΠΏΡΠ΅Π½Π΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Π²Π΅ΡΡΠΈΡ nginx 1.29.3, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ add_header_inherit ΠΈ add_trailer_inherit. ΠΡΠ΅Π½Π΅ΡΠ΅Π½ΠΈ ΡΠ° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ FreeNginx.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
