/** * 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); } Почему истерит фальсификатор истории? | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Почему истерит фальсификатор истории?

Заявление Игоря Карпенко, первого секретаря Компартии Беларуси, о необходимости введения ответственности за фальсификацию истории, вызвало истерику в «незалежных» СМИ. Более того, по данному поводу высказался Игорь Кузнецов, руководитель новорожденного «антисталинского трибунала». На сайте «Еврорадио» Кузнецов возмущается инициативой Первого секретаря и, более того, обвиняет в фальсификациях истории самих коммунистов.

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

Борьба с фальсификацией направлена (в первую очередь!) против героизации Белорусской краевой обороны и прочих прогитлеровских формирований. Мы выступаем против нездорового интереса к Акинчицу, Ганько, Рагуле, Витушке, Ермаченко, Кушелю, Островскому - имена предателей-коллаборацинистов пытаются откапывать из исторической могилы и использовать в грязной политической игре.

К примеру, в 2008 г. в Интернет был выброшен «документальный» фильм «Беларускі рэзістанс», якобы основанный на одноименной книге неких С. Ерша и С. Горбика, изданной в 2006 году в Киеве. В аннотации к фильму сказано: «Фильм рассчитан на европейскую (увлеченную националистическими идеями) аудиторию. Авторы стремятся дать прямое толкование: кто же эти коллаборационисты, изобилующие на страницах учебника по истории Беларуси, - враги или герои? По мнению авторов – герои». Сие кино посвящено белорусской коллаборации, более того, антисоветскому подполью, которое якобы действовало в Западной Беларуси аж до 1957 (тихо пряталось в лесах от НКВД). Однако фильм изобилует героизацией «лесных братьев», оправданием убийств мирных жителей и советских работников, а также идеей «излечения от красной чумы». Авторы - белорусские эмигранты, проживающие в Киеве. Само собой, на человека, знакомого с отечественной историей, откровенная ложь и сомнительные интерпретации не подействуют. Данная пропагандистская поделка рассчитан на школьника, который никогда в глаза не видел ни «Карателей» Алеся Адамовича, ни документальной книги «Я з вогненнай вёскі», ни хотя бы фильма «Иди и смотри» Климова.

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

«Концепция истории в школьных учебниках моего поколения и сегодняшних практически ничем не отличается», - утверждает Кузнецов. А как иначе? Школьник вообще не склонен критически воспринимать факты. Нам интересно, что именно хотел бы увидеть в школьном учебнике сам Кузнецов. Описание «технологий» работы полицейских батальонов и белозубые портреты в черной форме?
Нынешнее подрастающее поколение барахтается в потоке информации: и если двадцать лет назад сведения о белорусах-пособниках нацизма лежали в архивах госбезопасности, то теперь любой школьник в интернете может за две минуты найти всю биографию того же Радослава Островского, председателя марионеточной Белорусской центральной рады.

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

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

Антисталинский трибунал
Антикоммунизм, Куропаты и белорусская мова - священная триада каждого националиста разлива девяностых годов. Однако сколько можно подсовывать избирателю одни и те же битые карты? Руководство БНФ до сих пор с придыханием вспоминает, как в 1989 году на «Дзяды» собирались стотысячные акции - и записывает это себе в заслугу. Но люди выходили не ради «памяти расстрелянных» и «мортиролога» (как наивно считают доморощенные националисты), а из-за сигарет, водки и носков по талонам, простаивающих заводов и невыплаченных пенсий - стихийный рабочий протест. Закономерно, что Позняк и компания в итоге здорово просчиталась с национальной риторикой. Исторические драмы простого белоруса не очень интересовали (как того, из далекого 1989 г., так и нынешнего школьника: спросите его про так называемые Куропаты - что он вам сможет рассказать?). И тем более цинично выглядела установка в 1994 году «американского подарка» - мемориальной лавки – чтобы посидеть на костях. (Лавка впоследствии была взорвана - по слухам, членами РНЕ. Ныне же вместо мраморной скамейки стоит сиротский бетонный кубик). А тогда «мемориальную лавку» «ад народа Злучаных Штатаў» приехал открывать сам Клинтон, который на тот момент авиационными ударами разрушал «во имя демократии» столицу Югославии - Белград. Скажите, господин Кузнецов, это тоже проявление исторической памяти? Или грязная, циничная политика, попытка спекулировать на трупах?

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

Но Кузнецову и прочим борцам за правду, видимо, этого мало. Подсунуть белорусам выдуманную проблему «десталинизации»? Легко! И даже если Игорь Кузнецов считает, что сейчас в Беларуси нет более насущных проблем, чем борьба со Сталиным, то он должен понимать, что раскалывать белорусское общество в момент, когда совсем рядом, за южной границей, идет война и мощнейшее идеологическое противостояние - просто преступно. Если вы историк, и претендуете на то, чтобы почтить память убитых - то выясните, кто реально проводил расстрелы - НКВД или немецкая СД. И сколько было реальных жертв: 7 000 или 70 000 (разброс на целый порядок, по разным оценкам!) А не занимайтесь политическим фарсом и не пытайтесь заработать политический капитал на костях.

Хотя допускаем и другой вариант - «антисталинский трибунал» втемную используют в чужой политической игре. «Трибуналом», в который входит историк, по какому-то странному совпадению педалируется проблема т.н. «белорусского катынского списка». Кузнецов даже заявил в интервью БелаПАН, что тема и дата первой встречи в рамках инициативы были выбраны не случайно: «75 лет назад в этот день, 5 марта, в политбюро ЦК ВКП(б) за подписью Сталина было принято решение об уничтожении на территории СССР около 22 тысяч офицеров польской армии».

С чего бы репрессии против поляков стали интересовать нынешнего белорусского историка, а в недавнем прошлом коммуниста и бывшего политработника Советской Армии (в 1977 г. окончил Донецкое высшее военно-политическое училище инженерных войск и войск связи, в 1988 г. - военно-политическую Академию им. Ленина)? Вероятно, разгадка «пропольских» мотивов «трибунала» кроется в европейской грантовой системе. Не секрет, что в Беларуси за любыми неправительственными «инициативами», «движениями», «кампаниями» и «трибуналами» стоят иностранные деньги.

Представляется, что польские спонсоры легко повелись на слова «Катынь», «Сталин», «репрессии», да еще и в предвыборный 2015 год. Но тогда спекуляции на костях выглядят кощунством вдвойне. В некотором смысле, современная оппозиция превзошла своего крестного отца, Зянона Позняка. Если Зянон «всего лишь» ввел традицию подставлять людей «на Дзяды» под дубинки ОМОНа и «черемуху», то его преемники пошли дальше и научились зарабатывать на костях.

Освобождение от «химер»
В интервью БелаПАН Кузнецов сетует, что «белорусский катынский список» не рассекречен, и «3870 фамилий остаются неизвестными» - архивы госбезопасности до сих пор закрыты. Видимо, виноват в этом «просталинский» белорусский режим? Однако закрытыми архивами Запад не удивишь: мы можем посоветовать Кузнецову съездить, например, в свободный и демократичный Лондон, и попытаться узнать из архивов британской разведки цель полета Рудольфа Гесса в Великобританию в 1941 году, а также предмет его договоренностей с британским правительством. Достойная задача для историка, не правда ли? Вот только польский грант под нее вряд ли получишь: западные режимы в развязывании войны замараны ничуть не меньше, чем нацистская Германия (вспомним Мюнхенский сговор, «странную войну» и попытку направить агрессию Гитлера на Восток) - и об этих щекотливых темах Запад предпочитает скромно помалкивать. В «катынском инциденте» волюнтаристски в угоду «лучшим друзьям» с Запада и политической конъюнктуре «сознался» иуда Горбачев – и с тех пор не стихает вой о «развязывании войны Союзом» и якобы «советской агрессии».

Превознесение гитлеровских пособников до чина «героев» (что мы сейчас видим на Украине) - это только одна, явная сторона грандиозной фальсификации. Вторая ее задача - переложить ответственность за развязывание войны на Советский Союз, признать режим «преступным» и уровнять его с нацизмом в глазах всего человечества. Запад не признает ни какой кроме «неолиберальной» моделями, права на существование - и потому любые «социальные», «социалистические», «советские» режимы он топит в крови (если дотягивается), либо во лжи и грязи (если руки коротки). Ничего нового в «антисталинских трибуналах» нет - с них начинал Позняк и ему подобные, и Запад охотно давал деньги под такие проекты.

Самое отвратительное, что память о «расстрелянных» при этом используется в качестве политического козыря - достойно ли это историка? Господин Кузнецов (в прошлом товарищ, офицер-политработник Советской Армии), как вам удалось поменять мировоззрение и превратиться в антисоветчика? Храните ли вы свой партбилет? И чему вы сейчас учите студентов БГУ, которые на четвертом курсе в письменных работах рассуждают о «советской агрессии в период Второй мировой войны», которую якобы «не смогла остановить Лига наций»? Как всё это соотносится с тем, чему вы учили в ходе политической учебы и марксистско-ленинской подготовки, будучи высоко подготовленным пропагандистом войсковой части знаменитой (сформированной в Сибири) 120 гвардейской дивизии, стойко защищавшей Сталинград? Не пятнают ли такие идеологические «метания» честь офицерского мундира? Знают ли ваши коллеги по «антисталинскому трибуналу» о вашем примерном коммунистическом прошлом?

Видимо, ни в каких архивах ответы на эти вопросы не сыщешь. На ум приходит только цитата самого главного и известного антисталиниста Адольфа Гитлера о том, что совесть и мораль - это химеры.

Автор: 
Петр ВЕРХОВЕНСКИЙ, член инициативной группы по созданию общественного объединения «СоцАвангард Молодежи»
Номер газеты: 

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
4 + 4 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.