{"id":165441,"date":"2013-01-11T13:39:03","date_gmt":"2013-01-11T09:39:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=165441"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=165441","title":{"rendered":"<span class=\"post_title\">\u041e\u043f\u044b\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u043f\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0438\u0437 1\u0421 \u043d\u0430 \u0441\u0430\u0439\u0442<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ef4\/1f6\/858\/ef41f685849609f7e48de15b9fc7155c.png\"\/><br \/>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 B2B-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2 \u0441 web \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 1\u0421 \u0432 web. <br \/>  \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b SFTP, \u043a\u0430\u043a \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.<br \/>  \u0412\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/SFTP\">SFTP<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430. <a name=\"habracut\"><\/a> \u041d\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e 1\u0421, \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f freeware \u0443\u0442\u0438\u043b\u0438\u0442 \u0442\u0438\u043f\u0430 <a href=\"http:\/\/winscp.net\/eng\/index.php\">WinSCP<\/a>. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 1\u0421 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. <\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u044b WinCSP \u0438\u0437 1\u0421:<\/p>\n<pre><code>\u041a\u043e\u043c\u0430\u043d\u0434\u0430\u0412\u044b\u0433\u0440\u0443\u0437\u043a\u0438 = \u0421\u0438\u043c\u0432\u043e\u043b(34)+\u0421\u0442\u0440\u043e\u043a\u0430(\u041f\u0443\u0442\u044c\u041a\u041f\u0430\u043f\u043a\u0435\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0424\u0422\u041f\u0424\u0430\u0439\u043b\u043e\u0432)+&quot;\\&quot;+ &quot;WinSCP.com&quot;+\u0421\u0438\u043c\u0432\u043e\u043b(34)+&quot;\/script=&quot;+\u0421\u0438\u043c\u0432\u043e\u043b(34)+\u0421\u0442\u0440\u043e\u043a\u0430(\u041f\u0443\u0442\u044c\u041a\u041f\u0430\u043f\u043a\u0435\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0424\u0422\u041f\u0424\u0430\u0439\u043b\u043e\u0432)+\u0421\u0438\u043c\u0432\u043e\u043b(34)+&quot;\\script.txt &quot;+&quot;\/parameter &quot;+\u0421\u0438\u043c\u0432\u043e\u043b(34)+\u0410\u0434\u0440\u0435\u0441+\u0421\u0438\u043c\u0432\u043e\u043b(34)+&quot; &quot;+ \u0421\u0438\u043c\u0432\u043e\u043b(34)+\u041a\u043b\u044e\u0447+\u0421\u0438\u043c\u0432\u043e\u043b(34)+&quot; &quot;+\u0421\u0438\u043c\u0432\u043e\u043b(34) + \u041f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 + \u0421\u0438\u043c\u0432\u043e\u043b(34) + &quot; &quot; +  \u0421\u0438\u043c\u0432\u043e\u043b(34) + \u0418\u043c\u044f\u0424\u0430\u0439\u043b\u0430\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 + \u0421\u0438\u043c\u0432\u043e\u043b(34);<\/code><\/pre>\n<p>  \u041c\u0438\u043d\u0443\u0441\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 1\u0421. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e DLL \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0434\u043b\u044f 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2. <\/p>\n<p>  \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Native API \u0438 COM. \u0412\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 Native API, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 1\u0421. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u0438\u0441\u043a\u0430 \u0418\u0422\u0421 \u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 open source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0421++, \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0444\u0430\u0439\u043b SftpExtension.dll (\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/centrobit.ru\/download\/1ckomponent\/source.zip\">\u0442\u0443\u0442<\/a>).<\/p>\n<p>  <b>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b DLL<\/b><\/p>\n<p>  1. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 SFTP \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<br \/>   \u2014 libssh <a href=\"http:\/\/www.libssh2.org\/\">http:\/\/www.libssh2.org\/<\/a> (\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u201cgit clone git:\/\/git.libssh2.org\/libssh2.git\u201d)<br \/>   \u2014 openssl <a href=\"http:\/\/www.openssl.org\/\">http:\/\/www.openssl.org\/<\/a> (\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 openssl-1.0.1c.tar.gz \u043e\u0442 <a href=\"http:\/\/www.openssl.org\/\">\u0441\u044e\u0434\u0430<\/a>)<br \/>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443.<\/p>\n<p>  2. \u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 IcomponentBase \u0438 IlanguageInterface.   <\/p>\n<ul>\n<li>IcomponentBase \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b.<\/li>\n<li>IlanguageInterface \u2014 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 1\u0421 \u0438 \u0421++ \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0430\u043a\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 GetMethodName, GetPropName.<\/li>\n<\/ul>\n<p>  \u0427\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0421++ \u0438\u0437 1\u0421 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435: <br \/>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438.<\/p>\n<pre><code>static wchar_t *g_MethodNames[] = { L&quot;SendFile&quot;,L&quot;StartSession&quot;, L&quot;EndSession&quot;, L&quot;IsSessionStart&quot;,L&quot;SetSshHost&quot;,L&quot;SetSshLogin&quot;,L&quot;SetSshPass&quot;,L&quot;SetSftpPath&quot;,L&quot;SetLocalPath&quot;};   static wchar_t *g_MethodNamesRu[] = {  L&quot;\u041f\u043e\u0441\u043b\u0430\u0442\u044c\u0424\u0430\u0439\u043b&quot;,L&quot;\u041d\u0430\u0447\u0430\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e&quot;,L&quot;\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e&quot;,L&quot;\u0415\u0441\u043b\u0438\u0421\u0435\u0441\u0441\u0438\u044f\u041d\u0430\u0447\u0430\u0442\u0430&quot;, \t\tL&quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0425\u043e\u0441\u0442&quot;,L&quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u041b\u043e\u0433\u0438\u043d&quot;,L&quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u041f\u0430\u0440\u043e\u043b\u044c&quot;, L&quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u041f\u0443\u0442\u044c&quot;,L&quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439\u041f\u0443\u0442\u044c&quot;};    const WCHAR_T* SftpExtension::GetMethodName(const long lMethodNum, const long lMethodAlias) {      if (lMethodNum &gt;= eMethLast)         return NULL;      wchar_t *wsCurrentName = NULL;     WCHAR_T *wsMethodName = NULL;     int iActualSize = 0;      switch(lMethodAlias)     {     case 0: \/\/ First language         wsCurrentName = g_MethodNames[lMethodNum];         break;        case 1: \/\/ Second language         wsCurrentName = g_MethodNamesRu[lMethodNum];         break;     default:          return 0;    }      iActualSize = wcslen(wsCurrentName)+1;      if (m_iMemory && wsCurrentName)     {         if(m_iMemory-&gt;AllocMemory((void**)&wsMethodName, iActualSize * sizeof(WCHAR_T)))             ::convToShortWchar(&wsMethodName, wsCurrentName, iActualSize);     }      return wsMethodName; }<\/code><\/pre>\n<p>  3. \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 CallAsFunc \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 IcomponentBase. \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b 1\u0421, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u0421++ \u043c\u0435\u0442\u043e\u0434. <\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f:   <\/p>\n<ul>\n<li>lMethodNum \u2013 \u043d\u043e\u043c\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439.<\/li>\n<li>pvarRetValue \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. <\/li>\n<li>paParams \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 1\u0421.<\/li>\n<li>lSizeArray \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0435\u0441\u043b\u0438 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u0430\u0441\u0441\u0438\u0432.<\/li>\n<\/ul>\n<pre><code>bool SftpExtension::CallAsFunc(const long lMethodNum,                 tVariant* pvarRetValue,tVariant* paParams, const long lSizeArray){  switch(lMethodNum){  \t\tcase eMethSendFile:  \t\t{\t \t\t \t\t\tif (!lSizeArray || !paParams) \t\t\t\t\treturn false;  \t\t\tthis-&gt;local_path = toChar(paParams);\t\t\t \t\t\tWriteToServer(status, this-&gt;local_path); \/\/ \t\t\tpvarRetValue-&gt;pstrVal = status; \/\/status  \t\t\tpvarRetValue-&gt;strLen = strlen(pvarRetValue-&gt;pstrVal); \t\t\tTV_VT(pvarRetValue) = VTYPE_PSTR; \t             \t\t\tret = true; \t\t\tbreak; \t\t}\t} return ret; }<\/code><\/pre>\n<p>  4. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0437 1\u0421 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c 4 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0421++ \u043c\u0435\u0442\u043e\u0434\u044b \u0432 DLL \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435.<\/p>\n<table>\n<tr>\n<th>1\u0421 (\u043c\u0435\u0442\u043e\u0434\u044b)<\/th>\n<th>\u0421++ \u043c\u0435\u0442\u043e\u0434\u044b<\/th>\n<\/tr>\n<tr>\n<td>\u041d\u0430\u0447\u0430\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e()<br \/>  \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438(\u0445\u043e\u0441\u0442, \u0441\u0432\u044f\u0437\u043a\u0443 \u043b\u043e\u0433\u0438\u043d, \u043f\u0430\u0440\u043e\u043b\u044c \u2013 \u043b\u0438\u0431\u043e rsa \u043a\u043b\u044e\u0447\u0438, \u043f\u0443\u0442\u044c \u043d\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435). <br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u041d\u0430\u0447\u0430\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e \u043e\u0431\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438: \u0425\u043e\u0441\u0442, \u041b\u043e\u0433\u0438\u043d, \u041f\u0430\u0440\u043e\u043b\u044c, \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u041f\u0443\u0442\u044c  <\/td>\n<td>StartSSHSession(status,this-&gt;ssh_host,this-&gt;ssh_login,this-&gt;ssh_pass);<br \/>  StartSftpSession(status,this-&gt;sftp_path)  <\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043e\u0441\u043b\u0430\u0442\u044c\u0424\u0430\u0439\u043b(\u201c\u041f\u0443\u0442\u044c \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435\u201d)  <\/td>\n<td>WriteToServer(const char * &#038;status, const char *loclfile)  <\/td>\n<\/tr>\n<tr>\n<td>\u0415\u0441\u043b\u0438\u0421\u0435\u0441\u0441\u0438\u044f\u041d\u0430\u0447\u0430\u0442\u0430()<\/td>\n<td>isSessionStart()<\/td>\n<\/tr>\n<tr>\n<td>\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e()<\/td>\n<td>endSession() \u2013 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 SFTP \u0441\u0435\u0430\u043d\u0441 \u0438 SSH \u0441\u0435\u0430\u043d\u0441<\/td>\n<\/tr>\n<\/table>\n<p>  5. \u0412 \u0421++ \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430(\u0447\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c) \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 IsPropReadable \u0438 IsPropWritable.<\/p>\n<pre><code>bool SftpExtension::IsPropReadable(const long lPropNum) { \tswitch(lPropNum) \t{    \tcase ePropSshHost:         \treturn true;  \tdefault:     \treturn false; \t}  \treturn false;} <\/code><\/pre>\n<p>  \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 1\u0421 \u0438 \u0421++  <\/p>\n<table>\n<tr>\n<th>1\u0421(\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430)<\/th>\n<th>\u0421++ \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/th>\n<\/tr>\n<tr>\n<td>\u0425\u043e\u0441\u0442<\/td>\n<td>ssh_host<\/td>\n<\/tr>\n<tr>\n<td>\u041b\u043e\u0433\u0438\u043d<\/td>\n<td>ssh_login<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u0430\u0440\u043e\u043b\u044c<\/td>\n<td>ssh_pass<\/td>\n<\/tr>\n<tr>\n<td>\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u041f\u0443\u0442\u044c<\/td>\n<td>Sftp_path<\/td>\n<\/tr>\n<\/table>\n<p>  \u0413\u043e\u0442\u043e\u0432\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/centrobit.ru\/download\/1ckomponent\/dll.zip\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <b>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0439 \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 1\u0421<\/b><\/p>\n<p>  1. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 1\u0421.<\/p>\n<pre><code>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0412\u043d\u0435\u0448\u043d\u044e\u044e\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443(&quot;C:\\SftpExtension\\SftpExtension.dll&quot;,&quot;\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430&quot;,\u0422\u0438\u043f\u0412\u043d\u0435\u0448\u043d\u0435\u0439\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b.Native); \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 = \u041d\u043e\u0432\u044b\u0439(&quot;AddIn.\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.SftpExtension&quot;); <\/code><\/pre>\n<p>  2. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c 4 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0425\u043e\u0441\u0442, \u041b\u043e\u0433\u0438\u043d, \u041f\u0430\u0440\u043e\u043b\u044c, \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u041f\u0443\u0442\u044c.  <\/p>\n<pre><code>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u0425\u043e\u0441\u0442 = &quot;192.168.0.1&quot;; \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041b\u043e\u0433\u0438\u043d = &quot;root&quot;; \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041f\u0430\u0440\u043e\u043b\u044c = &quot;123&quot;; \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439\u041f\u0443\u0442\u044c = &quot;\/var\/www\/company\/data\/www\/import\/data.xml&quot;; <\/code><\/pre>\n<p>  3. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0441\u0441\u0438\u044e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f  <\/p>\n<pre><code>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041d\u0430\u0447\u0430\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e();<\/code><\/pre>\n<p>  4. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b  <\/p>\n<pre><code>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041f\u043e\u0441\u043b\u0430\u0442\u044c\u0424\u0430\u0439\u043b(&quot;C:\\data.xml&quot;);<\/code><\/pre>\n<p>  5. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b, \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f.  <\/p>\n<pre><code>\u0415\u0441\u043b\u0438 \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u0421\u0435\u0441\u0441\u0438\u044f\u041d\u0430\u0447\u0430\u0442\u0430() \u0422\u043e\u0433\u0434\u0430       \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041f\u043e\u0441\u043b\u0430\u0442\u044c\u0424\u0430\u0439\u043b(&quot;C:\\data2.xml&quot;); \u0418\u043d\u0430\u0447\u0435    \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041d\u0430\u0447\u0430\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e();    \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u041f\u043e\u0441\u043b\u0430\u0442\u044c\u0424\u0430\u0439\u043b(&quot;C:\\data2.xml&quot;); \u041a\u043e\u043d\u0435\u0446\u0415\u0441\u043b\u0438; <\/code><\/pre>\n<p>  6. \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0441\u0441\u0438\u044e  <\/p>\n<pre><code>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430.\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0421\u0435\u0441\u0441\u0438\u044e();<\/code><\/pre>\n<blockquote><p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u0444\u0430\u0439\u043b \u0441 C:\\data2.xml \u0432 \/var\/www\/company\/data\/www\/import\/data.xml.<\/p><\/blockquote>\n<p>  <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/b><br \/>  \u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430:<br \/>  <a href=\"http:\/\/st.free-lance.ru\/projects\/upload\/f_4d5118dcf1abb.pdf\">\u041c\u0430\u043d\u0443\u0430\u043b \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/a><br \/>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e SFTP:  <\/p>\n<ul>\n<li>libssh <a href=\"http:\/\/www.libssh2.org\/\">http:\/\/www.libssh2.org\/ <\/a><\/li>\n<li>openssl <a href=\"http:\/\/www.openssl.org\/\">http:\/\/www.openssl.org\/<\/a><\/li>\n<\/ul>\n<p>  <b>\u0412\u044b\u0432\u043e\u0434: <\/b>\u0434\u0430\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2. \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 SFTP. \u041f\u043b\u044e\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0438\u0437 1\u0421 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443, \u0447\u0442\u043e \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 1\u0421 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/Centrobit\/blog\/165441\/\"> http:\/\/habrahabr.ru\/company\/Centrobit\/blog\/165441\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ef4\/1f6\/858\/ef41f685849609f7e48de15b9fc7155c.png\"\/><br \/>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 B2B-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2 \u0441 web \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 1\u0421 \u0432 web. <br \/>  \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b SFTP, \u043a\u0430\u043a \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.<br \/>  \u0412\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.2 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/SFTP\">SFTP<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-165441","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/165441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=165441"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/165441\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=165441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=165441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=165441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}