Xterm.js: рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ ansi рдмрдЪ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдирд╡ре░ 2017  ┬╖  29рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xtermjs/xterm.js

рдЯрд░реНрдорд┐рдирд▓ рдПрдореБрд▓реЗрдЯрд░ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдХрдИ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ URL рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб-рдХреНрд▓рд┐рдХ рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓-рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд▓рдВрдмреЗ рднрджреНрджреЗ URL рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╡рд╕рдВрдд 2017 рддрдХ рдХреБрдЫ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдиреЗ рд▓рд┐рдВрдХ рдХреА рддрд░рд╣ HTML рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд▓рд┐рдВрдХ рдкрд╛рда рдФрд░ рдЧрдВрддрд╡реНрдп рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

ITerm2 3.1 рд╕реЗ рдЙрджрд╛рд╣рд░рдг:
screen shot 2017-11-28 at 12 08 20

areapi arelinks help wanted typenhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

iTerm2 рдЗрд╕ рддрд░рд╣ URL рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

screen shot 2017-11-28 at 14 50 20

рдпрд╣ рднреА рдЗрд╕реА рддрд░рд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд▓рд┐рдВрдХ рдордБрдЧрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрд░реЛрдо URL рдХреИрд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд╕рднреА 29 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдкреАрдЖрд░ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдпрд╣ рдПрдХ рдорд╛рдирдХ рдмрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛: https://github.com/xtermjs/xterm.js/issues/583

рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд▓рдВрдмреЗ URL рдХреЗ рд╕рд╛рде рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рд╕реНрдкреИрдо рдХрд┐рдП рдмрд┐рдирд╛ рдкрд╛рда рдХреЛ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рд╕реБрдкрд░ рд╡рд░реНрдмреЛрдЬрд╝ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ "login.facebook.com" рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ login.faceboook.com рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреЗрдЬ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдЧрд┐рди рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕рд╣реЗрдЬрдирд╛ред

iTerm2 рдЗрд╕ рддрд░рд╣ URL рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

screen shot 2017-11-28 at 14 50 20

рдпрд╣ рднреА рдЗрд╕реА рддрд░рд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд▓рд┐рдВрдХ рдордБрдЧрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрд░реЛрдо URL рдХреИрд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдпрджрд┐ / рдЬрдм рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╛ PR рдХреЛ supports-hyperlinks , рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред

@jamestalmage рдХреЛ рд╢рд╛рдпрдж TERM_PROGRAM ред

@ рддреАрдпрд░рд╛рд░ - рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╢рд╛рдпрдж supports-hyperlinks рдПрдХ рдРрд╕рд╛ рдХрдорд┐рдЯрдореЗрдВрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдЗрд╕ рднреВрдорд┐ рдХреЛ, рдФрд░ рд╡рд┐рдореЛрдЪрди рдиреЛрдЯреЛрдВ рдореЗрдВ рдЬрдм рдпрд╣ рдЪреМрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП supports-hyperlinks рд╕рдорддреБрд▓реНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд╢рд╛рдпрдж рдЙрдирдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

links.txt

рдЗрд╕рдореЗрдВ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд▓рд┐рдВрдХ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдмрдлрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЦрд┐рдбрд╝рдХреА рдХреЗ рдлрд┐рд░ рд╕реЗ рдЖрдХрд╛рд░ рдореЗрдВ рдЖрдиреЗ рдкрд░ рд╡реЗ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд▓рд┐рдВрдХ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИ MouseZoneManager рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдордВрдЬреВрд░реА рджреЗ рджреА рд╣реИ _mouseZoneManager.clearAll ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрдм рддрдХ рдмрдлрд╝рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рддрдХ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдФрд░ / рдпрд╛ рд╕реЗрд▓ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рд╕реНрдерд┐рд░ рд╣реИред

(рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдХреЛрдб-рдмреЗрд╕ рдореЗрдВ рдирдпрд╛ рд╣реИред)

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрдм рддрдХ рдмрдлрд╝рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рддрдХ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдФрд░ / рдпрд╛ рд╕реЗрд▓ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рд╕реНрдерд┐рд░ рд╣реИред

@PerBothner рд╣рд╛рдБ рддреБрдо рд╢рд╛рдпрдж рд╕рд╣реА рд╣реЛред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ shippable рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдмрд╛рдд рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд URL xterm.js рд╕реЗ рдХреИрд╕реЗ рдЙрдЬрд╛рдЧрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдореНрдмреЗрдбрд░реНрд╕ рдЗрд╕реЗ UI рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╢рд╛рдпрдж рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (рдЪреВрдВрдХрд┐ URL рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЖрдПрдЧрд╛)ред

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкреИрдЪ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛: https://github.com/PerBothner/xterm.js/tree/hyperlinks

рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ - рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡:

export class Terminal {
    /**
     * Adds a handler for the ANSI hyperlink escape `\x1b]8;;url\alabel\x1b]8;;`, you should use
     * this API to display the full URL to the user. Note that ANSI hyperlinks will only work if
     * there is a handler for security reasons.
     * <strong i="6">@param</strong> onHover The callback that fires when the mouse enters a link's zone.
     * <strong i="7">@param</strong> onLeave The callback that fires when the mouse leaves a link's zone.
     * <strong i="8">@return</strong> An IDisposable which can be used to disable the handler.
     */
    addAnsiHyperlinkHandler(onHover: (event: MouseEvent, url: string) => void, onLeave: () => void): IDisposable;
}

рдПрдкреАрдЖрдИ рдЖрдХрд╛рд░ рдкрд░ @mofux @jerch рдлреАрдбрдмреИрдХ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдзрд╛рдЧрд╛ рдЗрди рдХреЗ рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП set рдХреЗ рдмрдЬрд╛рдп add рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ 1 рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ILinkHoverEvent рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

interface ILinkHoverEvent {
  // Maybe the cell the mouse is under is also needed?
  x1: number;
  y1: number;
  x2: number;
  y2: number;
  url: string;
}

export class Terminal {
    addAnsiHyperlinkHandler(onHover: (event: ILinkHoverEvent) => void, onLeave: () => void): IDisposable;
}

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк:

interface ILinkHoverEvent {
  linkStart: Cell;
  linkEnd: Cell;
  mousePosition: Cell;
  url: string
}

@ рдЯрд╛рдпрд░рд┐рдпрд░ IMO рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрднреЛрдХреНрддрд╛ рд╣рдорд╛рд░реЗ рд░реЗрдВрдбрд░рд░ рд╣реЛрдВрдЧреЗ рдЬреЛ рдХрд┐ рдПрдХ рдЯреВрд▓рдЯрд┐рдк рдореЗрдВ url рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдордБрдбрд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдирд╣реАрдВ? рд╢рд╛рдпрдж рдпрд╣ onLinkHover рдФрд░ onLinkLeave рд▓рд┐рдП рдкреВрд░реНрд╡реЛрдХреНрдд рд╣реБрдХ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рд▓рд┐рдВрдХрдлрд╝рд╛рдпрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдЙрди ansi рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдЕрднреА рд╡реЗрдм рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ?

рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрднреЛрдХреНрддрд╛ рд╣рдорд╛рд░реЗ рд░реЗрдВрдбрд░рд░ рд╣реЛрдВрдЧреЗ рдЬреЛ рдПрдХ рдЯреВрд▓рдЯрд┐рдк рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ

@ mofux рдореИрдВ рдЦреЛрдЬ рдПрдбрдСрди рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, ITerminalOptions.enableAnsiHyperlinks рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреНрдпреЛрдВ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рд▓рд┐рдВрдХ рдПрдкреАрдЖрдИ рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдФрд░ рдСрдкреНрдЯ-рдЗрди рдХреЗ рд▓рд┐рдП ITerminalOptions.enableAnsiHyperlinks рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреНрдпреЛрдВ рд╣реИ?

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдмреЗрдбрд░реНрд╕ рдХреА рдХрд╣рд╛рдиреА рдХреИрд╕реА рд╣реЛрдЧреА? рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп (рдЕрджреГрд╢реНрдп) рд▓рд┐рдВрдХ рдЦреЛрд▓рдирд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реИ - рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╣рдо рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП URL рдХреЛ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ

рд▓рдХреНрд╖реНрдп рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдЕрдЬреНрдЮрд╛рдд" URL рдЦреЛрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЪрд╢реНрдорд╛ рдХреЗ рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣рд░ рд╕рдордп "рдЕрдЬреНрдЮрд╛рдд" URL рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдЬреЗрдПрд╕ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рдЕрдЪреНрдЫрд╛" URL рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрд▓реЗрдВред

рдмреЛрд▓реЗ рдХрд┐ ... рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ рдЕрднреА рддрдХ рдореЗрд░реЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ ...

рдпрджрд┐ xterm.js рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдЯреИрдм рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Reterer рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ xterm.js рдХрд╛ URL рд▓реАрдХ рдХрд░рдирд╛ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред Rel = "noreferrer" рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣реЛрд╡рд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдЗрд╕ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░реНрдЪрд╛ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣ рдореБрджреНрджрд╛ "рдЯреВрд▓-рдЯреЙрдкреНрд╕" рдФрд░ рдЕрдиреНрдп рдорд╛рдЙрд╕-рдУрд╡рд░ рдкреЙрдкрдЕрдк рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдПрдиреЛрдЯреЗрдЯрд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рд▓рд┐рдВрдХ рдкрд░ рд╣реЛрд╡рд░ рдХрд░рддреЗ рд╕рдордп URL рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреЛрдиреЛрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛрд╡рд░ рдкрд╛рда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рд╢рд╛рдпрдж MouseZoneManager ред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдПрдХреНрд╕рдПрд╕рдПрд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ рдЬреЛ рдШреВрдо рд░рд╣реЗ рд╣реИрдВ? рд╢рд╛рдпрдж рд╣рдореЗрдВ рдПрдХ рдСрдбрд┐рдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпреЛрдЧреНрдпред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╕реАрдорд┐рдд рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП xterm.js рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╣рдорд▓рд╛ рд╡реЗрдХреНрдЯрд░ рдЯрд░реНрдорд┐рдирд▓ / рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рд╣реИ:

  • рдЯрд░реНрдорд┐рдирд▓ (рдбреЗрдЯрд╛) рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдЬреЗрдПрд╕) рд╕реЗ XSS
    рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдПрдХреАрдХрд░рдгрдХрд░реНрддрд╛ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ (xterm.js рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рдЕрдВрдЧреВрдареЗ рдХрд╛ рдирд┐рдпрдо - рдХрднреА рднреА рдЯрд░реНрдорд┐рдирд▓ рдкреЗрдЬ рдпрд╛ рдкреАрдЯреАрдЖрдИ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрд╡рд┐рд╢реНрд╡рд╛рд╕рд┐рдд рд╕реНрд░реЛрдд рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдпрд╛рдд рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЬреЛ рдХрд┐ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЦреЛ рдЧрдпрд╛ рд╣реИред рди рдЕрдирдлрд╝рд┐рд▓реНрдЯрд░реНрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреГрд╖реНрда рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдФрд░ рдЬреИрд╕реЗ - рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ XSS рдЪреАрдЬреЗрдВ, рдпрд╛ рдкреЗрдВрдЯреА рдЦреЛ рдЬрд╛рддреА рд╣реИрдВред
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ (рдбреЗрдЯрд╛) рд╕реЗ XSS (JS)
    Thats рдПрдХ рдирдИ рдЧреБрдгрд╡рддреНрддрд╛ рдЬрд┐рд╕реЗ рд╣рдо URL рдХреЗ рд╕рд╛рде рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд░реНрдорд┐рдирд▓ рдбреЗрдЯрд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреЗрдЬ рдХреЗ рдЬреЗрдПрд╕ рд╕рдВрджрд░реНрдн (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЯрд░реНрдорд┐рдирд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдпрдВ) рддрдХ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧрд╛ред рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ (рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП) рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреЗрдЬ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ (рдбреЗрдЯрд╛) - рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдЬреЗрдПрд╕) - рдЯрд░реНрдорд┐рдирд▓ (рдбреЗрдЯрд╛) рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдЧреЗ рдЪрд▓рдХрд░ xterm.js рдХреЛ рдХреНрд▓рд╛рдЙрдб рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд┐рдВрдЧ рд╕рд░реНрд╡рд┐рд╕ рдкреЛрд░реНрдЯрд▓реНрд╕ рдореЗрдВ рдЕрд▓реЙрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдбрдорд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╢реАрдиреЛрдВ рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗрд╢рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИред рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдЕрдЯреИрдХрд░ рдмреНрд░рд╛рдЙрдЬрд░ рдкреЗрдЬ рдкреЗрдЬ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдПрдВ рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИрдВ, рдЦрддрд░реЗ рдореЗрдВ рдкрдбрд╝ рдЬрд╛рддреА рд╣реИрдВред

рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╕рд╛рде рдЯрд░реНрдорд┐рдирд▓ (рдбреЗрдЯрд╛) - рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдЬреЗрдПрд╕) рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ? рдлрд┐рд░ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рд╕реАрдорд┐рдд рдЬреНрдЮрд╛рди рдпрд╣рд╛рдБ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкрд░рд┐рджреГрд╢реНрдп рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдмреБрдХрдорд╛рд░реНрдХ рд╣реИрдВ рдЬреЛ рдкреЗрдЬ рдХреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЦреБрдж рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ / рдЯреИрдм рдореЗрдВ рдХреЗрд╡рд▓ рдЦреБрд▓реЗ рд╕рд╛рдорд╛рди рд╕реЗ рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрдиреБрдорд╛рди рдХрд░реЗрдВ рдХрд┐ рд╕рддреНрд░ рдЕрднреА рднреА рд▓реАрдХ рд╣реЛрдЧрд╛, рдЕрдЧрд░ httpOnly рдирд╣реАрдВ? рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?) рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ URL рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИ? рдФрд░ рдХрд┐рд╕реА рднреА "рдЬреЗрдПрд╕ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА", рдУрд╣ рдкреНрд░рд┐рдп ...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рди рдореВрд▓ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд▓реЛрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЕрдЬрд╛рдХреНрд╕ рд▓рдВрдмреЗ рдорддрджрд╛рди рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ)ред рд╣рдореНрдо ...

рдмреБрдХрдорд╛рд░реНрдХ [...] рдХрд┐рд╕реА рднреА "рдЬреЗрдПрд╕ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА" рдкрдЯреНрдЯреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ "http: //", "https: //", рд╢рд╛рдпрдж "ftp: //" рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо рд╕реНрдХреАрдо рдХреА рдХрдореА рдХреЗ рд╕рд╛рде рд╣реА "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:"ред

рдЕрдкрдиреА рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдХреНрд▓рд┐рдХ рдкрд░ рдПрдХ рд╕реЗрдЯрд▓ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ https://github.com/PerBothner/xterm.js/commit/b2647b90d301c52229d01720800865a0d39f4bff рдЬреЛрдбрд╝рд╛ред рдпрд╣ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм DOMTerm рдХреЛ ls --hyperlink=auto рдмрд╛рдж рдореЗрд░реА xterm.js рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓реЗрдВрдЧреАред

(рдЪреЗрддрд╛рд╡рдиреА рджреЗрдВ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреБрдЫ рдкрд░рддрджрд╛рд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдбреЛрдордЯрд░реНрдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред)

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣рд░ рд╕рдордп "рдЕрдЬреНрдЮрд╛рдд" URL рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдЬреЗрдПрд╕ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рдЕрдЪреНрдЫрд╛" URL рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрд▓реЗрдВред

@egmontkob рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреА рддрд░рд╣ рдХрд╣реАрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдХрдм рд╣реИред рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд░рд┐рдореЛрдЯ рдХрдВрдЯреЗрдВрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рднреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд▓рд┐рдВрдХ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рдЬреЛрдЦрд┐рдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдкрд╢рдорди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

рдЕрдкрдиреА рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдХреНрд▓рд┐рдХ рдкрд░ рдПрдХ рд╕реЗрдЯрд▓ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ

@PerBothner рд╡реЗрдмрд▓рд┐рдВрдХ рдХреЗ рдРрдбрдСрди рдореЗрдВ рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реИ: https://github.com/xtermjs/xterm.js/blob/509ce5fa3a698ee7847411117e9dd6b979b105bf/src/addons/webLink/webLink/webLink/ рд╕реЗрдЯрдЕрдк 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрдм рд▓рд┐рдВрдХ рд╣реИрдВрдбрд▓рд░ред

(рдмреЗрд▓реНрдЯреЗрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ - рдореИрдВ рд╕рд╛рдЗрдб-рдЯреНрд░реИрдХ рд╣реЛ рдЧрдпрд╛ред)

@Tyriar рдиреЗ рд▓рд┐рдЦрд╛ "рд╡реЗрдмрд▓рд┐рдВрдХреНрд╕ рдХреЗ рдРрдбрдСрди рдореЗрдВ рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реИ"ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ WebLinksInit рдПрдХ ILinkMatcher рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджрд┐рдП рдЧрдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ ILinkMatcher рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП regexes рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ-рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рдореИрдЪ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ? рдЙрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрд┐рд╕реА рднреА ILinkMatcher рдпрд╛ regex рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рдЕрд░реНрде рдореЗрдВ "рд╡реИрд╢реНрд╡рд┐рдХ" рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред WebLinksInit рдпрд╛ Terminal.registerLinkMatcher рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ / рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдХреА рдЬрд░реВрд░рдд рд╣реИ linkHandler рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреНрд╖реЗрддреНрд░ - рдПрдХ рд╣реЛрдиреЗ handler рдореЗрдВ рдХреНрд╖реЗрддреНрд░ ILinkMatcher рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ linkHandler рдлрд╝реАрд▓реНрдб рдореЗрдВ Terminal рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рд░рдЬрд┐рд╕реНрдЯрд░рд▓рд┐рдВрдХрдореИрдЪрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВред рдпрд╣ рдореЗрд░рд╛ рдкреИрдЪ рд╣реИред

рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ URL рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдВрдХ рди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдВрднрд╡рдд: рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдПрдХ рд╣реБрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рддрд╛рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдПрдХ рдкреЙрдкрдЕрдк рджрд┐рдЦрд╛ рд╕рдХреЗрдВред
  • рдХрд┐рд╕реА рд▓рд┐рдВрдХ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рджреЗрдЦреЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдВрдХ рдорд┐рд▓рд╛рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
  • рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рддрд░реНрдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рд╢рд╛рдпрдж IMarker s рдХреЗ рд░реВрдк рдореЗрдВ?

рдореЗрд░реА рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХ рд╢рд╛рдЦрд╛ https://github.com/PerBothner/xterm.js/tree/hyperlinks рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддреА рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)

рдЙрдкрд░реЛрдХреНрдд рд╢рд╛рдЦрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ?
@Tyriar рдиреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрджрдо рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@ Jma353 рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдЯреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

@ рдЯрд╛рдпрд░рд┐рдпрд░ рдореИрдВрдиреЗ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐ рдирд╣реАрдВ рдкрдврд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдкрд╛рд░реНрд╕рд░ рд╣реИрдВрдбрд▓рд░ рдХрд░рддрдм рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ, рдПрд╕реНрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдПрдХ рдЕрд╕реНрдерд╛рдпреА InputHandler.print рдЕрдзрд┐рднрд╛рд░ рдХреА рддрд░рд╣ рдХреБрдЫред рдХрд┐рдиреНрджрд╛ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдПрдХ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рддрдХ рдХреЛрдИ рдЕрдиреНрдп рднрд╛рдЧрдиреЗ рдХрд╛ рдХреНрд░рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдмреАрдЪ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ рдЬрд╛рд░реНрдЪ рд╣рд╛рдБ, рдпрд╣ рдХреБрдЫ parser рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓рд┐рдкрдЯреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

VS рдХреЛрдб рдореЗрдВ рдЕрдм рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рд╣реЛрд╡рд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╣реБрдХ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА:

image

рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЬреАрдм рд╕реАрдХреНрд╡реЗрдВрд╕ рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд░реНрд╕рд░ рд╣реБрдХ рдЗрд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рд╣реБрдХ, рдорд╛рд░реНрдХрд░ рдФрд░ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рддрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдРрдбрдСрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ рддреАрдпрд░ рднреА # 2751 рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд

рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЬреАрдм рд╕реАрдХреНрд╡реЗрдВрд╕ рдХрд╛ рдПрдХ рд╕рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд░реНрд╕рд░ рд╣реБрдХ рдЗрд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рд╣реБрдХ, рдорд╛рд░реНрдХрд░ рдФрд░ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рддрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдРрдбрдСрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд╣рдо рдПрдХ рдкреНрд░рд┐рдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╣реБрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рддреЛ рднреА рдПрдбреЛрди рд╕реНрддрд░ рдкрд░ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реАрдзреЗ рдХреЛрдбрдмреЗрд╕ рдФрд░ рдХреБрдЫ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдЧреИрд░ рдкреНрд░рд┐рдВрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ URL рдЕрдВрдХрди рдХреЛ рддреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕