/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Архивы стреляют | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Архивы стреляют

К столетию Октября оппозиционная пресса буквально сорвалась с цепи и заваливает читателя тоннами текстов про «савецкія рэпрэсіі». Все эти сенсационные материалы строятся на неких байках, рассказах очевидцев, которые «мой дед услышал от бабки», а также мемуаристике. При этом любой публикуемый бред оправдывается тем, что «архивы закрыты», «власти скрывают», а цифры репрессий берутся если не с потолка, то, наверно, с показаний электросчетчика в квартире «исследователя», и поэтому постоянно растут.

Некие правозащитные организации ведут переписку с МВД, КГБ и Минюстом на предмет открытия архивов, но все это проходит мимо внимания общественности. Также к Беларуси пытались неоднократно подобраться через украинские архивы – для этого «Радио Свобода», например, искало дела КГБ УССР, связанные с белорусским приграничьем, но таких материалов – кот наплакал.

И вот, наконец, произошло эпохальное событие. Как сообщил tut.by, глава архива СБУ Андрей Когут на IV Белорусском правозащитном форуме в Вильнюсе призвал «открыть общий доступ к архивам белорусского КГБ». Ни название, ни место проведения форума tut.by не смутило.

Поэтому сначала давайте разберемся, кто приехал учить нас работать с архивами. Что такое «Институт национальной памяти» и при чем здесь СБУ?

Как работает «министерство правды» Вятровича

В Германии, Польше, Прибалтике советские архивы изъяты из действующих спецслужб и выделены в отдельные учреждения – «институты национальной памяти», которые выполняют чисто пропагандистские задачи. В Украине эти архивы пока находятся в подчинении СБУ, но там существует внутренняя конкуренция между «декоммунизаторами» – после принятия пакета законов о декоммунизации СБУшников попытался «подмять» под себя местный «институт национальной памяти».

Именно его нынешний директор Владимир Вятрович считается главным обличителем репрессий на Украине – он продавливал открытие архивов еще при Ющенко и являлся главой архива СБУ в 2008-2010 гг.
Владимир Вятрович обрел первоначальную известность в своей сфере как сотрудник «Центра исследований освободительного движения», который был создан для продвижения линии о героизме ОУН-УПА. Работать в этом центре Вятрович начал в 2002 году, а к 2006 стал его директором. За это время он успел опубликовать ряд книг, прославляющих ОУН-УПА, разработал программы, помогающие продвигать националистическую точку зрения, а также стал соединительным мостом с ультранационалистами из диаспоры, которые в основном и финансируют его центр.

В 2008 году бывший тогда президентом Виктор Ющенко назначил Вятровича начальником государственного архива Службы безопасности Украины. Для Ющенко продвижение мифологии ОУН-УПА было политическим вопросом. По его указанию переписывались школьные учебники, переименовывались улицы, а лидеров ОУН-УПА стали чествовать как героев Украины. Будучи ведущим управленцем Ющенко в вопросах национальной памяти, Вятрович как глава «Центра исследований освободительного движения» и архива СБУ стал его правой рукой в этой сфере.

Когда в 2010 году президентом избрали Януковича, Вятрович исчез из поля зрения. В это время историк разъезжал по Северной Америке с серией лекций, а также непродолжительное время работал научным сотрудником в Украинском научном институте Гарвардского университета.

Новый президент Порошенко назначил Вятровича руководителем Украинского института национальной памяти. Непонятно, чем руководствовался Порошенко, принимая такое решение, но прежняя работа Вятровича при Ющенко несомненно прибавила ему авторитета среди националистов, и вполне вероятно, что Порошенко таким способом отблагодарил поддержавших Евромайдан радикалов.

Далее в мае 2015 Порошенко подписал закон о передаче всех национальных архивов «советских репрессивных органов», т.е. КГБ и СБУ (как правопреемника), в распоряжение Института национальной памяти.
Этот институт, отвечающий за «реализацию государственной политики в области восстановления и сохранения национальной памяти украинского народа», получил миллионы документов, в том числе о деятельности украинских националистических организаций, о разведывательной и контрразведывательной работе КГБ и об уголовных делах, с ними связанными. По закону об архивах (а это один из четырех «законов памяти» или «законов о декоммунизации», написанных самим Вятровичем), полномочия института – прикрытие, призванное представить предвзятую и одностороннюю точку зрения на современную украинскую историю.

Условно, в изложении Вятровича перед нами предстает история партизан, которые отважно сражались за независимость Украины против всеподавляющей советской власти.

Основная ревизия касается двух украинских националистических группировок: Организации украинских националистов (ОУН) и Украинской повстанческой армии (УПА. Во время войны бойцы из этих организаций уничтожили десятки тысяч евреев и провели жестокую кампанию этнических чисток, убив 100 тысяч поляков. Так, ОУН, созданная в 1929 году для освобождения Украины от советской власти, приняла на вооружение идеи этнически чистоты украинской нации. Когда Германия в 1941 году напала на СССР, ОУН и ее лидер Степан Бандера приветствовали вторжение, назвав его «шагом к независимости Украины». Члены этой организации устроили в городе Львове погром, убив пять тысяч евреев, а бойцы ОУН сыграли важную роль в насилии против еврейского населения западной Украины, уничтожив до 35 тысяч евреев.

Достоверность и честность Вятровича как историка подверглась мощной критике со стороны западных стран, а также со стороны авторитетных украинских ученых. Отмечается, что используется целая серия сомнительных процедур: опровергаются компрометирующие ОУН источники, безо всякой критики принимаются на веру источники из эмигрантских кругов ОУН и не признается антисемитизм, присутствующий в документах ОУН.

Еще большую обеспокоенность за неприкосновенность украинских архивов при Вятровиче вызывает его дурная слава среди западных историков, считающих, что он игнорирует или даже фальсифицирует исторические документы.

В частности, когда Вятрович был главным архивариусом в СБУ, он создал цифровой архив, открытый как для украинских граждан, так и для иностранцев. При этом он со своей командой исключил из этого архива все документы, которые в негативном свете представляют ОУН-УПА, в том числе их причастности к холокосту и прочим военным преступлениям.

Сотни переживших холокост евреев подтверждают, что УПА в массовом порядке уничтожала тех евреев, которые еще оставались на западе Украины к 1943 году. Более того, хотя Вятрович называет убийство от 70 000 до 100 000 поляков в 1943-1944 годах побочным эффектом «польско-украинской войны», исторические документы полностью опровергают его заявления. Доклады УПА подтверждают, что эта организация уничтожала поляков систематически, действуя теми же методами, какими нацисты истребляли евреев. Верховный командующий УПА Дмитрий Клячкивский открыто заявлял: «Мы должны проводить крупномасштабные акции по ликвидации поляков. Во время эвакуации немецкой армии мы должны найти удобный момент для ликвидации всего мужского населения в возрасте от 16 до 60 лет». Учитывая то, что более 70 процентов руководящего звена УПА в свое время сотрудничали с нацистами, все это не вызывает удивления.

Националисты добрались и до средней школы. В июне 2015 года Министерство образования Сергея Квита (бывшее правительство Яценюка) издало директиву для учителей о необходимости «подчеркивать патриотизм и высокую нравственность активистов освободительного движения», представляя УПА в качестве «символа патриотизма и самопожертвования в борьбе за независимость Украины», а Бандеру называть «выдающимся представителем» украинского народа.

Так что «Институт национальной памяти» – это, скорее, институт беспамятства.

Архивы они, конечно, откроют, но уничтожат то, что им невыгодно публиковать. Националисты, а также их коллеги из СБУ заметают следы, причем не только о военных преступлениях ОУН-УПА, но и руководителях «Новой Краины».

Напомним, в 2017 году произошло целых два характерных разоблачения: оказалось, Лех Валенса являлся агентом госбезопасности ПНР и сотрудничал со службой в 1970-х годах. Аналогичное расследование было проведено литовской журналисткой Рутой Янутене в отношении Ландсбергиса и сделан вывод о сотрудничестве последнего с КГБ. Характерно, что в обоих случаях информация была изъята из архивов служб безопасности. В современной Украине тоже есть что прятать, особенно с такими надежными «архивариусами».
Что касается экс-главы СБУ Наливайченко, при котором происходило «реформирование», то, к примеру, в сентябре появилась информация о том, что во время конфликта он летал в Белгород вместе с главным «переговорщиком» Виктором Медведчуком.

Если руководитель спецслужбы втайне от Порошенко летает в «страну-агрессор», то можно понять, какой бардак в этой службе творится. И не им учить нас, как работать – тем более, что сейчас на украинскую спецслужбу плотно сели ЦРУшники, для которых СБУ превратилась в проходной двор и придаток.

Что делали «выдающиеся представители украинского народа» в Беларуси

Выступая 23 марта 2014 в Минске Александр Лукашенко отметил, что после антиконституционного переворота на Украине пришли к власти «разные люди», многие из них считают себя наследниками идей Степана Бандеры и традиций его идейных последователей из «Украинской повстанческой армии» (УПА), о которых у белорусов и украинцев остались самые плохие воспоминания.
Лукашенко тогда сообщил, что ещё до 1917 года были созданы ячейки украинских националистов и боевые отряды УПА, которые проявили себя в годы Великой Отечественной войны как гитлеровские прислужники, выполнявшие задания по уничтожению мирного населения в Беларуси и на Украине.

«Я в последнее время запросил для этого материалы, чтобы не выглядеть каким-то абсолютно дилетантом и человеком, который поддался советской пропаганде в своё время. Некоторые из политиков так называемых, которые сегодня около власти и у власти на Украине, называют себя «наследниками Бандеры», УНА-УНСО, УПА «Украинской повстанческой армии, «Организации украинских националистов», которые действовали до революции. Оказывается, они были созданы, эти ячейки – «Организации украинских националистов», а затем боевой отряд - УПА, в 1929 году, на Полесье, на севере украинского Полесья. Затем они распространили своё влияние на всё Полесье и к концу войны боевиков этой организации, оказывается, у нас действовало до 15 тыс. Это уже приличная армия, и не одна. Как они себя вели - вы тоже знаете. Я только приведу один пример – Хатынь».

«Да, в советские времена это не принято было обсуждать, исследовать - кто там, как, но потом-то мы разобрались, что грязными делами, и не только в Хатыни, занимались представители вот этих "повстанцев", которые были в своё время сформированы на Украине. Они сожгли немало людей наших - в том числе и Хатынь, на территории Беларуси, и не только - наверное, и Украине хватило. Но больше всего они бесчинствовали на территории Беларуси. И ликвидировали это отребье, оказывается, только в 50-х годах, 1952-1953 год, последних убрали, которые действовали на Полесье уже как одиночки. Они уничтожили тысячи наших людей!», - подчеркнул Лукашенко.

«Скажите: если люди, которые сегодня во власти на Украине ассоциируют себя с этими нелюдями, какое у нас - у белорусов, к этому должно быть отношение, да не только белорусов? Соответствующее», - добавил он.

Хатынь и украинская полиция

Хатынь вошла в память человечества как дело рук немецких карателей. В действительности ее вместе с жителями сожгли не немцы, а сотрудники 118-го батальона, укомплектованного в основном полицейскими украинского происхождения.

Расстреливал Хатынь 118 батальон Украинской вспомогательной полиции, именно так он официально именовался. Командиром данного батальона был немец Эрих Кёрнер и заместителем – Константин Смольский. По поводу Смольского известно следующее — он служил артиллеристом в царской армии, а после революции стал полковником в войсках УНР (Украинская Народная Республика). Войска УНР по имени своего главнокомандующего, назывались «петлюровцы» и были разбиты Красной Армией. После этого Смольский жил в эмиграции.

Начштаба 118 батальона был Григорий Васюра, украинец, уроженец Черкасской области, старший лейтенант Советской армии, который в первые же дни войны добровольно перешел на службу к противнику.
На допросе после войны сам Васюра рассказал, что «будучи офицером Красной Армии и оказавшись в плену у гитлеровцев, изменил Родине — в феврале 1942 года дал согласие на сотрудничество с немцами и тогда же добровольно поступил немецкую школу пропагандистов, которая готовила кадры из числа советских военнопленных для ведения антисоветской пропагандистской работы на оккупированной территории Украины. После окончания школы в октябре 1942 года меня в группе в количестве не менее 50 человек в сопровождении немецкого офицера направили в гор. Киев. Там всех нас зачислили в местную полицию. В ноябре 1942 года я добровольно поступил на службу в 118-й украинский полицейский батальон».

На момент расстрела Хатыни Васюра имел звание лейтенанта в 118 Schutzmannschaft Battalion Ukrainische Hilfspolizei. Главным режиссером зверства в Хатыни, когда были расстреляны и сожжены живьём 149 человек, из них 43 женщины и 79 детей, был именно Григорий Васюра.

Вскрылось это спустя много лет после окончания войны при рассмотрении трибуналом Белорусского военного округа уголовного дела по обвинению некоего Мелешко в измене Родине. За этим лейтенантом немецкой армии, командиром роты 118-го батальона, тянулся шлейф кровавых преступлений против мирных жителей БССР, за которые его приговорили к высшей мере наказания. Он ретиво исполнял жестокие приказы, которые ему отдавал Васюра. Эта фамилия, неожиданно всплывшая в ходе следствия, вынудила подключиться к расследованию органы госбезопасности. Они быстро нашли Васюру. Будучи старшим лейтенантом, начальником связи укрепрайона стрелковой дивизии, этот уроженец Черкасской области в первые дни войны попал в плен и добровольно перешел на службу к фашистам.

Дело Васюры было рассекречено КГБ Беларуси, он нем был также снят видеосюжет АТН. В нем рассказывается, как Васюра лично допрашивал, пытал и расстреливал партизан и жителей.

Однако нынешние свядомые украинофильские историки все равно считают, что убийц Хатыни следует называть не «украинцами», а «бывшими советскими офицерами», «перебежчиками» и т.д. Понятно почему – Украина у них теперь ходит в лучших друзьях.

Но советским офицером делала не национальность, а присяга Родине. И вовсе не национальность сделала Смольского, Васюру и других полицаев украинскими офицерами, а присяга, которую они добровольно приняли, поступив на службу в украинский полицейский батальон. Изменив советской присяге, Васюра, как и другие каратели, перестали быть советскими офицерами.

Деятельность ОУН и УПА в Беларуси

В 2017 КГБ Беларуси был рассекречен архив госбезопасности о зверствах украинских националистов и сформированных из них карательных полицейских батальонов. Приведем некоторые «украинские» данные из материалов сотрудника ИНБ, историка спецслужб Игоря Валахановича о деятельности ОУН-УПА на территории южных районов БССР.

Организационными звеньями ОУН руководили так называемые проводы, которые подразделялись (по возрастающей субординации) на подрайонные, районные, надрайонные и окружные.
Три подрайона образовывали районный провод (район), три района объединялись в надрайонный провод (надрайон), три надрайона – в окружной провод (округ). Во главе проводов стояли проводники. Окружные проводы подчинялись краевым, а те, в свою очередь, Центральному проводу ОУН в «крае».

Проводы, начиная с районного, имели в своем составе несколько референтур во главе с референтами: организационную (занималась вербовкой и подготовкой кадров); службы безопасности (выполняла функции контрразведки); пропаганды (отвечала за информационное сопровождение деятельности); военную (занималась военной подготовкой оуновцев, разработкой диверсий и терактов). В подчинении у каждого референта, как правило, была специальная вооруженная группа («боёвка»).

К моменту полного освобождения от германских оккупантов на территории БССР действовал Брестский окружной провод ОУН («Кричевский», «100») во главе с Зиновием Савчуком («Шварц», «Александр»). «Кричевский» входил в состав краевого провода на северо-западных украинских землях (ПЗУЗ), включавшего, помимо территории Белорусского Полесья, Волынскую, Ровенскую, Житомирскую и Винницкую области Украины. Руководили проводом Микола Козак («Смок»), затем Иван Литвинчук («Дубовой»). В 1948 году Брестский окружной провод был переименован в Белорусский («Нива», «1042»), объединявший до 1952 года три надрайонных провода: Брестский, Кобринский и Пинский. В 1948–1952 годах Белорусский окружной провод возглавлял Александр Степанюк («Мефодий», «Богун»).

Организационно-территориальное построение антисоветского украинского подполья не совпадало с административно-территориальным делением в стране. Это было сделано специально для того, чтобы затруднить советским органам безопасности работу по нейтрализации подпольных структур ОУН.

На территории Брестской, Пинской и частично Полесской областей Беларуси, помимо подпольных структур ОУН, действовали подчинявшиеся им вооруженные формирования УПА. Первые отряды УПА были созданы бандеровцами в конце 1942 года на территории Волыни. В 1943 году сложилась подпольная военная структура УПА, подчинявшаяся ОУН(б). Руководили УПА главное командование и штаб во главе с Клячковским («Клим Савур»), а затем Р. Шухевичем («Тур»). УПА включала Северную, Южную, Западную и Восточные группы.

В 1939-1941 годах германские спецслужбы использовали кадры украинских и белорусских националистов для создания в приграничных советских районах агентурной сети. Также они задействовались кураторами для контроля за деятельностью друг друга. Например, весной 1941 года в Кракове был завербован абвером под псевдонимом «Рак» будущий руководитель так называемой «Белорусской партии независимости» Всеволод Родько. По заданию абвера «Рак» выяснял, какими связями располагает ОУН на советской территории, какая практическая работа проводится организацией.

Оперативная разработка и нейтрализация оуновского подполья в военный период осуществлялись главным образом через возможности специальных разведывательно- диверсионных групп, действовавших на оккупированной территории по линии органов госбезопасности. В целом в ходе оперативной деятельности, в том числе благодаря сведениям, полученным спецгруппами НКГБ БССР, органы государственной безопасности выявили организационную структуру подполья ОУН–УПА на оккупированной территории республики, а также его примерную численность в 12–14 тыс. участников. Полученные данные позволили чекистам развернуть эффективную работу по нейтрализации и окончательной ликвидации украинского антисоветского подполья в Белорусской ССР сразу после ее полного освобождения от немецко-фашистской оккупации.

Третий период охватывал 1944–1952 годы. В означенный отрезок времени подпольные структуры ОУН–УПА действовали в интересах спецслужб стран Запада и использовались ими для дестабилизации внутриполитической ситуации в Советском Союзе в годы холодной войны.

Всего в 1944–1946 годах украинские антисоветские подпольные группы и нелегальные вооруженные формирования на территории БССР совершили 2384 диверсии и теракта, в результате которых погибли 1012 человек (из них 50 сотрудников НКВД, 8 офицеров и 28 солдат и сержантов Красной армии, 171 советский партийный работник – остальные, как можно догадаться, гражданские лица).
В 1947–1949 годах произошло изменение тактики действий подпольных антисоветских украинских формирований. После разгрома основных сил УПА открытые вооруженные выступления уступили место терактам, сбору разведданных в пользу западных спецслужб.

В итоге по состоянию на апрель 1953 года в розыске значились 159 лиц, принадлежавших ранее к подполью ОУН–УПА. Всего органы госбезопасности Беларуси с октября 1943 по апрель 1953 года арестовали 1282 украинских националистов.

Антисоветское подполье ОУН–УПА на территории Белорусской ССР представляло собой многочисленную и многоуровневую структуру, оказывавшую крайне негативное влияние на внутриполитическую ситуацию не только республики, но и Советского Союза в целом. Формы и методы деятельности участников антисоветского украинского подполья основывались на принципах националистической идеологии и отличались крайним радикализмом и экстремизмом. Конечные цели борьбы структур ОУН–УПА шли вразрез с интересами белорусского народа, хотя и были умело закамуфлированы под «благородные» посылы о необходимости противодействия «сталинскому империализму» и построения «демократического» государства.

Деятельность органов государственной безопасности по нейтрализации антисоветского подполья ОУН–УПА в БССР в рассмотренный период объективно была направлена на сохранение территориальной целостности союзной республики. Противодействие структурам антисоветского украинского подполья по формам и методам было адекватным и достаточно эффективным.
В силу объективных обстоятельств, таких, например, как последствия германской оккупационной политики на захваченной нацистами территории Советского Союза, активная поддержка действий подполья ОУН–УПА спецслужбами Германии накануне и в годы Второй мировой войны и спецслужбами США и Великобритании в период холодной войны, лишь к началу 1950-х годов нейтрализация деятельности подполья ОУН–УПА на территории Белорусской ССР органами государственной безопасности была завершена.

***
После всех военных преступлений украинский национализм долгое время был, мягко говоря, непопулярен. Но сегодня он опять выгоден власть предержащим, накачан иностранными деньгами, реабилитирован и поставлен на службу антисоветской пропаганды, в том числе с помощью фальсификаций, замалчивания и уничтожения архивных документов. Так какую правду они хотят теперь искать в белорусских архивах? Спасибо, сами разберемся.

И особенно уродливо выглядит, когда в хоре украинских друзей появляются голоса белорусских националистов и даже крупнейшего интернет-портала, которые не имеют ни малейшего представления ни о собственной недавней истории, ни о тех грязных политических комбинациях, которые разыгрываются в соседнем государстве.


Андрей Лазуткин
По материалам открытых источников

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.