/** * 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-летие восстановления Советской власти в Прибалтике и 65-летие начала Нюрнбергского процесса до сих пор вызывают неоднозначную реакцию в Литве, Латвии и Эстонии. Суть первого из этих событий — в свержении буржуазных порядков и победе принципов социальной справедливости. А суд в Нюрнберге ознаменовал торжество международного права над произволом нацизма. Между тем нынешние правящие круги прибалтийских стран стараются очернить события 1940 года и забыть о решениях международного трибунала. Об этом шла речь на международной конференции «Уроки истории: взгляд в глубь десятилетий», состоявшейся в ноябре 2010 года в Вильнюсе.
Прибалтика 70 лет назад
Ныне публичное обсуждение событий 1939 – 1940 годов и истории пребывания Литвы в составе СССР может стать причиной для… уголовного преследования. В соответствии со статьей 170(а) уголовного кодекса Литовской Республики, всякого, кто сомневается в том, что заключение советско-германского договора о ненападении 1939 года привело к «советской оккупации Литвы», и выражает свое мнение «угрожающим, оскорбляющим или обидным способом», ждут санкции. Это – либо «штраф, либо ограничение свободы, либо арест, либо лишение свободы на срок до двух лет».
Поэтому надо отдать должное смелости организаторов конференции во главе с руководителем литовской партии «Социалистический народный фронт» Альгирдасом Палецкисом. Конференция проходила в одной из наиболее фешенебельных гостиниц литовской столицы «Бест Вестерн Вильнюс», расположенной в центре делового квартала города. На стенах зала для конференций были размещены фотографии, взятые из Литовского государственного архива. На них – массовые демонстрации в Каунасе и других городах, участники которых приветствовали вступление частей Красной Армии на территорию прибалтийских стран в июле 1940 года. Здесь же – фотоснимки, отразившие мирное голосование на выборах 1940 года, крестьян, получивших землю в ходе аграрной реформы, рабочие коллективы Советской Литвы.
Перед началом обсуждения вопроса «События 1940 года в Прибалтике» был показан документальный фильм о радостной встрече советских войск в Литве в 1940 году, о борьбе литовских партизан и воинов в составе Красной Армии против немецко-фашистских оккупантов, о трудовой жизни рабочих Литовской ССР.
В своих выступлениях на конференции ее участники показывали, что события 1940 года были следствием развязанной Второй мировой войны, а действия Советского правительства обусловлены заботой об обеспечении безопасности границ СССР. Хотя официальная пропаганда в Литве и других странах Европы утверждает, что пакт Молотова – Риббентропа 1939 года передал Прибалтику Советскому Союзу, в действительности после его подписания были заключены договоры о взаимопомощи между СССР и тремя республиками, законность которых была признана Лигой Наций. В соответствии с договорами, Советский Союз разместил небольшие контингенты своих войск на ряде военных и военно-морских баз.
СССР старательно выполнял условия договоров. Поэтому предложение советского полпреда в Эстонии К.Н.Никитина провести торжественное собрание и концерт по случаю годовщины Октябрьской революции вызвало суровую отповедь со стороны В.М.Молотова. Председатель Совнаркома СССР писал в Таллинн: «Вас ветром понесло по линии настроений советизации Эстонии, что в корне противоречит нашей политике». В это же время нарком обороны СССР К.Е.Ворошилов приказывал красноармейцам, находившимся в Эстонии: «Настроения и разговоры о «советизации», если бы они имели место среди военнослужащих, нужно в корне ликвидировать и всячески пресекать самым беспощадным образом, ибо они на руку врагам Советского Союза и Эстонии». Такую же политику Советское правительство проводило в Латвии и Литве.
Полуфашистские режимы Эстонии, Латвии и Литвы сохранялись в неприкосновенности. Коммунистические партии были запрещены, а многие коммунисты и сторонники левых взглядов находились в тюрьмах. Более того, видя успехи германского оружия в Европе, правители трех стран стали готовиться ко вступлению вермахта в Прибалтику. По их приглашению в эти страны часто приезжали военные делегации Германии. Три республики не скрывали своей поддержки Финляндии в ходе «зимней войны». В Латвии даже возник дефицит полотна, которое огромными партиями направлялось для маскхалатов финским солдатам. Правительства прибалтийских стран реанимировали созданную еще в 20-е годы «Прибалтийскую Антанту». Одновременно осуществлялась тайная подготовка к участию в операциях германских войск против Красной Армии.
В середине июня 1940 года, когда гитлеровская Германия завершала свой победный блицкриг во Франции, Советское правительство потребовало от трех республик соблюдения договоров о взаимопомощи, изменений в составе правительств, чтобы они были лояльны по отношению к принятым этими государствами международным обязательствам. Был также поставлен вопрос об увеличении контингента советских войск в Литве, Латвии и Эстонии.
Прибывшие в Прибалтику представители СССР – член Политбюро, секретарь ЦК ВКП(б) А.А.Жданов, заместитель Председателя Совнаркома СССР А.Я.Вышинский и заместитель наркома иностранных дел СССР В.Г.Деканозов добивались исключения из составов правительств ярых антисоветчиков и замены их теми, кто был настроен на сотрудничество с Советским Союзом. Однако представители Москвы не стремились добиваться преобладания коммунистов в составе правительств. В это время руководство СССР не собиралось включать три республики в состав Союза. В конце июня, уже после ввода дополнительных войск в Прибалтику, заместитель главы Советского правительства А.Я.Вышинский критиковал тех, кто ставил вопрос о присоединении Латвии к Союзу. Свое публичное выступление в Риге он завершил призывом к дружбе между СССР и Латвией.
Под напором
народных настроений
Однако в трех республиках совершались события, которые стали неожиданными для руководства СССР. Мирное вступление советских войск на территорию прибалтийских государств приветствовала значительная часть их населения. В красноармейцах, которые маршировали по городам Эстонии, Латвии и Литвы, распевая «Тачанку», «Катюшу», «Москву майскую», она видела спасителей от неминуемых ужасов гитлеровской оккупации. Ведь Германией уже были захвачены Польша, Дания, Норвегия, Голландия, Бельгия, Люксембург и Франция. Вывод же прогерманских политиканов из состава правительств вызвал подъем революционных настроений. Массовые митинги в поддержку перемен были резким контрастом по сравнению с репрессиями, обрушившимися на оккупированные гитлеровцами страны Европы.
В этой новой обстановке развертывавшихся народных революций Советское правительство изменило свою позицию. Представители СССР перестали сдерживать местные компартии, которые требовали проведения новых выборов и создавали широкие избирательные объединения. В ходе выборов в сеймы Литвы и Латвии, а также в Государственную Думу Эстонии победили кандидаты «Союзов трудового народа». (Надо заметить, что все попытки обнаружить признаки фальсификации итогов выборов, предпринятые антисоветскими силами Прибалтики в конце 80-х годов, успеха не имели). На своих сессиях парламенты трех республик приняли решения об установлении Советской власти и обратились с просьбой о приеме в состав СССР. На седьмой сессии Верховного Совета СССР в начале августа 1940 года три прибалтийские республики и Молдавия были приняты в состав Советского Союза.
Кому неугодна история
Эти факты истории, о которых говорили директор Балтийского центра исторических и социально-экономических исследований Виктор Гущин и другие выступавшие, ныне отрицаются властями прибалтийских стран. Более того, информирование населения о них приравнено к уголовному преступлению. Говоря об абсурдности такой официальной позиции, представитель эстонского отделения организации «Мир без нацизма» Максим Реве указал на целый ряд обстоятельств. Во-первых, не было никакой оккупации, потому что советские войска вошли на территорию трех республик мирно, с ведома и согласия их правительств. Во-вторых, в течение последующих 50 лет не было никакого геноцида местного населения, чем всегда сопровождаются современные оккупации. М.Реве и другие исследователи опровергали пропагандистские измышления о запрете на изучение родного языка и подавлении культуры Эстонии, Латвии и Литвы в советское время.
А вот германские оккупанты, подчеркивали ораторы, действительно грабили и разоряли Прибалтику, тогда как в ходе так называемой советской оккупации экономика трех республик так успешно развивалась, что уровень жизни в трех прибалтийских республиках был выше, чем в остальных республиках Советского Союза.
Почему же правящие верхи прибалтийских стран так упорно поддерживают абсурдное утверждение о «советской оккупации», несмотря на то, что оно противоречит фактам истории? М.Реве подчеркивал, что миф об оккупации является идейной основой современных режимов трех республик. Он оправдывает дискриминацию «неграждан» и подавление любой оппозиции. «Если ты против нас, то ты – за оккупантов!» – твердят власти Эстонии. О схожести политической ситуации говорили и ораторы из Литвы и Латвии.
Этот миф позволяет скрывать вопиющие провалы в социально-экономической жизни, допущенные властью в последние 20 лет. Оратор обратил внимание на сходство обстановки в Эстонии в 1939 – 1940 годов и ныне. Тогда 40% ее населения было должно шведским банкам (они освободились от долгового бремени лишь благодаря вступлению в СССР). Ныне опять 40% населения республики должно шведским банкирам. Теперь, как и в 1940 году, высок уровень безработицы, а население массово мигрирует за рубеж.
Против нацизма
Искажение истории, которое лежит в основе официальной политики трех республик, неразрывно связано с антикоммунистической идеологией. Не случайно правительства этих республик внесли немалый вклад в сочинительство антикоммунистических резолюций ПАСЕ и других европейских организаций. «Как можно ставить знак равенства между СССР и гитлеровской Германией?!» – возмущались участники конференции. Ведь это означает, что якобы нет разницы между армией, построившей печи Освенцима, и армией, погасившей эти печи, говорил один из выступавших.
Но знает ли современная молодежь правду о нацизме и гитлеровской оккупации? Эта тема доминировала на конференции при обсуждении вопроса «65-летие Нюрнбергского процесса – уроки истории». Перед началом дискуссии были показаны отрывки из документального фильма о Нюрнбергском процессе. Профессор А.Левченков из Российского государственного гуманитарного университета, как и ораторы из прибалтийских стран, выражал беспокойство тем, что нынешняя молодежь почти ничего не знает о Нюрнбергском процессе и, следовательно, не осознает актуальности его решений для современной жизни.
Главный редактор газеты «Литовский Иерусалим» Милан Херсонский зачитал фрагменты, посвященные 1941 году, из учебника по истории для пятого класса. В учебнике превозносится роль литовских пособников Гитлера, ударивших в спину Красной Армии в июне 1941 года. В то же время в нем ничего не говорится об их участии в массовых расправах над еврейским населением и теми литовцами, которые поддержали Советскую власть.
Забвение правды о нацизме благоприятствует распространению мифов о «благородной» борьбе гитлеровских наймитов за «освобождение Прибалтики от советской оккупации». Подобная фальсификация истории служит возрождению тех идейных основ, на которых держался нацизм. Следствием исторического беспамятства становятся преследования коммунистов и «инородцев», как это было во времена гитлеровской оккупации.
В республиках Прибалтики запрещены не только коммунистические партии и пропаганда коммунистической идеологии, но и коммунистическая, советская символика. Этот запрет не позволяет ветерану Великой Отечественной войны появиться с советскими орденами на своей гражданской одежде, так как для их ношения требуется та военная форма, которую имел ветеран в годы войны. В Прибалтике свастику используют как «древний культовый символ» в различных ультраправых экстремистских организациях. Когда по Клайпеде прошла демонстрация, участники которой несли свастику, суд не наказал демонстрантов и тем самым фактически легализовал нацистский символ.
В своих выступлениях ораторы подчеркивали важность отпора возрождению нацизма. Они говорили о необходимости усиления пропаганды подлинных исторических фактов через Интернет. Было поддержано предложение А.Палецкиса о создании организации «Литва без нацизма», которая могла бы стать филиалом активно действующего в Прибалтике движения «Мир без нацизма». Это решение конференции стало важным событием в общественно-политической жизни Литвы.

Автор: 
Юрий ЕМЕЛЬЯНОВ, газета «Правда», №139 (29626), 17-20 декабря 2010 года
Номер газеты: