рд╕реНрдХрд╛рдЗрдк рдЪреИрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Nagios рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬреЗрдВ

рдЗрд╕рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рд╕реНрдХрд╛рдЗрдк рдореЗрдВ рдирд╛рдЧрд┐рдпреЛрд╕ рд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рд╣рдо Skype4Py рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддреЗ рд╣реИрдВред
рдмреЛрд▓реНрдб рдорд╛рдЗрдирд╕: рд╕реНрдХрд╛рдЗрдк рдПрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкреНрд▓рд╕: рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрдоред

рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред

Googling рдиреЗ Skype рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди Zabbix рдХреЗ рд▓рд┐рдП ред
рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рд╕рдВрднрд╡ рд╣реИ!

рдЗрд╕рд▓рд┐рдП, рдЧреЗрдВрдЯреВ рдХреЗ рддрд╣рдд рдЖрдЧреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд┐рддрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рдЬрдирди рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рдПрдХреНрд╕
# emerge x11-apps/xdm x11-apps/xsm x11-base/xorg-drivers x11-base/xorg-server x11-base/xorg-x11 -pv

- рд╕реНрдХрд╛рдЗрдк рдФрд░ Skype4Py, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
# emerge skype skype4py -pv

рд╕реНрдХрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдореЗрдХ.рдХреЙрди рдореЗрдВ ACCEPT_LICENSE рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо 64-рдмрд┐рдЯ рд╣реИ, рддреЛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ CONFIG_IA32_EMULATION = y рд╡рд┐рдХрд▓реНрдк рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ 32-рдмрд┐рдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 32-рдмрд┐рдЯ рд╕реНрдХрд╛рдЗрдк рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ X рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде udv рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:
USE="X" emerge udev -pv

рдЬрдм рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╣рдмрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЫреБрдЯреНрдЯреА рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдШрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкреЗрдбрд╝ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмреЗрдЯрд╛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рд╣реБрд░реНрд░реЗ! рд╣рдо рд╡рд╣рд╛рдВ рдЖрдзреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВред
рдЕрдм рдордЬрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдирд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ : рдпрд╣рд╛рдВ ред

рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк рдкрд░) рдкрд░ рдПрдХ рд╕реНрдХрд╛рдЗрдк рдЦрд╛рддрд╛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ nagios рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ ~ / .Skype / рдХреЙрдкреА рдХрд░реЗрдВред
рдХреНрдпрд╛ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ:
- рд╕реНрдХрд╛рдЗрдк рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ;
- рд╕рднреА рдкреЙрдк-рдЕрдк рдФрд░ рдзреНрд╡рдирд┐ рдШрдЯрдирд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ;
- рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪреИрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ "рдЦреБрд╢реА рдХреЗ рдкрддреНрд░" рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ Skype4Py рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП
1) рд░рди python2.7;
2) рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕реНрдХрд╛рдЗрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдПрдХ рдирдЧрд┐рдпреЛрд╕ рдХреЗ рд▓реЙрдЧ рдЗрди рдХреЗ рд╕рд╛рде
>>> import Skype4Py <br>
>>> import sys <br>
>>> skype = Skype4Py.Skype(Transport='x11')
>>> skype.Attach()

рджрд┐рдЦрд╛рдИ рдЧрдИ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рд╣рдо Skype4Py рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдЕрдм рди рдкреВрдЫреЗрдВ;
3) рдкрд╣рд▓реА рдЪреИрдЯ рдЬрд┐рд╕реЗ рд╣рдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рд╡рд╣ рд╕реНрдХрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ редрдЪреИрдЯ [0] - рдЪрд▓реЛ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
>>> msg = "Ololo"
>>> skype.Chats[0].SendMessage(msg)

рдЖ рдЧрдП? рдЙрддреНрдХреГрд╖реНрдЯ, рддрдм рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ, Skype4Py рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗрд╡рд▓ рдЪреИрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

Nagios рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, nagios рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдкрд░ Skype, рдХреЙрдкреА ~ / .Skype / рдмрдВрдж рдХрд░реЗрдВред

рдиреЛрдЯ: рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ x11vnc рдЪрд▓рд╛рдХрд░ рд╕рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рд╣рд▓реНрдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ x11vnc, xterm, twm рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╢реБрд░реВ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд╣реИрдВ рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
# su - nagios
$ export DISPLAY=:0
$ Xvfb :0 -screen 0 800x600x16 &
$ skype &

рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ Xvfb рдФрд░ рд╕реНрдХрд╛рдЗрдк рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЧрдИ рд╣реИ - рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЙрдирдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдо рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХрдиреЗрдХреНрд╢рди рдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛) рдФрд░ рдЦрд╛рддрд╛ рдСрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдСрдЯреЛрд▓реЙрдЧрд┐рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ nagios рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ ~ / .Skype / рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рддреЛ, рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реНрдХрд╛рдЗрдк рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдирд╛рдЧ рдХреЛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред
рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ 2 рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, / var / nagios / home /):
alert.sh:
#!/bin/bash
export DISPLAY=:0
/usr/bin/python2.7 /var/nagios/home/alert.py "$*"

рдФрд░
alert.py:
#!/usr/bin/python2.7
import Skype4Py
import sys
skype = Skype4Py.Skype(Transport='x11')
skype.Attach()
msg=' '.join(sys.argv[1:])
skype.Chats[0].SendMessage(msg)

рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ (chmod + x alert.sh) рдФрд░ рдирд╛рдЧреЛрдВ рдХреА рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред
/Etc/nagios/contacts.cfg рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдЬреЛрдбрд╝реЗрдВ:
define contact{
contact_name skype
alias Skype
use generic-contact
service_notification_commands notify-service-by-skype
host_notification_commands notify-host-by-skype
}

рд╣рдо рдкреНрд░рд╡реЗрд╢ рд╕рдореВрд╣ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдЕрдкрдирд╛ рд╕рдВрдкрд░реНрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдирд╛рдЧреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдФрд░ рд╣рдо рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - * - by-skype рдХрдорд╛рдВрдб / inetc/nagios/objects/commands.cfg
# 'notify-host-by-skype'
define command{
command_name notify-host-by-skype
command_line /var/nagios/home/alert.sh "$NOTIFICATIONTYPE$ Host: $HOSTNAME$ State: $HOSTSTATE$ Info: $HOSTOUTPUT$"
}

# 'notify-service-by-skype'
define command{
command_name notify-service-by-skype
command_line /var/nagios/home/alert.sh "$NOTIFICATIONTYPE$ Host: $HOSTNAME$ Service: $SERVICEDESC$ Info: $SERVICEOUTPUT$"
}

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрдЬрдмрд╛рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдирдЧрд┐рдУрд╕ рдХреЙрдиреНрдлрд┐рдЧреНрд░реЗрд╢рди (/etc/init.d/nagios reload) рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝рдирд╛ рди рднреВрд▓реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:

1. Nagios рдкреНрд░рд▓реЗрдЦрди: www.nagios.org/documentation
2. Skype4Py рдкреНрд░рд▓реЗрдЦрди: skype4py.sourceforge.net/doc/html

Source: https://habr.com/ru/post/In147495/


All Articles