/** * 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); } Сколько «правд» у белорусской оппозиции? | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Сколько «правд» у белорусской оппозиции?

Одной из предвыборных оппозиционных фишек нынешнего политического сезона стал призыв говорить правду. И говорят что-то, вещают без умолку, а за границей – с особым пылом. Но тот, кто возьмется анализировать словеса, выдаваемые на-гора тутэйшыми правдорубами, не без удивления обнаружит, что «правд» у оппозиции немало. И что, к примеру, «минская правда» оппозиции и ее «московская правда» похожи друг на друга не больше, чем выпуски новостей радио «Маяк» и «Голос Америки» в начале 80-х.
В наибольшей активности на московском информационном фронте замечены трое – Некляев, Санников и Романчук. Вот только лукавить они начинают уже на стадии представления российской публике, позиционируя себя как кандидаты в президенты Беларуси: по законодательству этот статус имеют лица, зарегистрированные Центризбиркомом и собравшие в свою поддержку не менее 100 тысяч подписей белорусских граждан. Далеко не факт, что обласканным московскими СМИ претендентам это удастся. Да и старт избирательной кампании был объявлен только несколько дней назад. Так что пока речь идет разве что о кандидатах в кандидаты. Но чтобы придать себе солидности и недостающего политического веса, почему бы и не подправить правду?
«Оппозиционные кандидаты в президенты Беларуси готовы предложить России новый сценарий развития двусторонних отношений, основанный на добрососедстве и прагматизме…Белорусские оппозиционные политики, в прошлом ориентировавшиеся только на Евросоюз, сегодня примирительно рассуждают о России как о главном партнере», – огорошило на днях экспертов федеральное информагентство РИА «Новости». «Господа Некляев, Санников и Романчук занимают схожие и весьма благосклонные позиции по вопросу об отношениях с Россией», – уверяет своих читателей «Коммерсант».
Что ж, давайте разберемся, есть ли основания принимать на веру такие заверения белорусской оппозиции?

«Новые концепции наших взаимоотношений»

8 сентября 2010-го интернет-ресурс «Газета.Ru» размещает интервью с Некляевым. Журналист интересуется, является ли означенный господин пророссийским кандидатом? «Если иметь в виду мое понимание будущего Беларуси, ее экономического развития, развития свободного гражданского общества, то это непредставимо без взаимодействия с Россией», – отвечает Некляев. «Мне говорят, что у России один интерес – проглотить Беларусь; российский капитал мечтает подмять под себя белорусскую промышленность, что никаких иных интересов Россия в Беларуси не имеет. Я с этим категорически не согласен… Российская власть сосредоточена на поисках новых концепций наших взаимоотношений. И мы предлагаем эти новые концепции. Касательно России мы выработали концепцию ответственного соседства. И я думаю, что достаточно понятно, что за этим термином стоит».
Неделю спустя уже «опполюбивый» «Коммерсант» внимает заверениям Некляева, «что в случае прихода к власти его команда приступит к реализации программы «перезагрузка отношений с РФ» с тем, чтобы «полностью изменить их философию».
Все бы ничего, только заниматься перезагрузкой российско-белорусских отношений Некляеву придется с тандемом Путин-Медведев, о котором он, прямо скажем, далеко не лестного мнения. «Рокировка Путин - Медведев – это не только демонстрация коррупции на самой вершине власти. Это свидетельство полной победы аморальности над моралью, ибо в «армии», с которой двигался Путин к своей «победе», было и российское чиновничество, и духовенство, весь сегодняшний российский истеблишмент. Включая тех (за немногими исключениями), кто называет себя русской интеллигенцией», – изливал свое возмущение Некляев в газете «Наша нива».
Нетрудно предсказать, какая новая концепция взаимоотношений и ответственное соседство возможны для автора этих пламенных строк с «аморальными» российским руководством, чиновничеством, духовенством, интеллигенцией и прочим охаянным им истеблишментом всея Руси.

«Россия всегда будет нашим стратегическим партнером»

«Россия всегда будет нашим стратегическим партнером», – заявляет в интервью BBC Санников. «Я хочу, чтобы Москва открыла глаза и увидела, что при этом режиме у них нет никакой поддержки». В устах Санникова такие заявления выглядят, мягко говоря, нетрадиционными. Помнится, пять лет назад на «Радио «Свобода» он заявлял недвусмысленно, что «на официальном уровне никогда не ждал и не ждет поддержки демократии со стороны России».
После президентских выборов 2006-го он разразился резкими заявлениями в адрес Москвы: «С высоты своего положения председателя «Большой восьмерки» и будущего председателя Комитета Министров Совета Европы МИД России подкидывает белорусским подсобникам подсказки: во всем виноваты ОБСЕ, Евросоюз и Штаты… Российский МИД с удовольствием откликается и распространяет заведомую ложь об агрессивных намерениях мирных демонстрантов. …Это уже за пределами не только компетенции МИДов, но и за гранью морали». В заключение экс-дипломат Санников весьма недипломатично отозвался лично о министре иностранных дел РФ Сергее Лаврове.
В январе 2007-го Санников заявляет в эфире «Радио «Свобода», что «предложенное Россией введение единого визового режима в рамках так называемого Союзного государства угрожает независимости Беларуси». В апреле того же года – осуждает введенный Россией мораторий на выполнение Договора об обычных вооруженных силах в Европе (ДОВСЕ). «Заявления, прозвучавшие из уст Путина, довольно опасны», – предостерегает он. В августе, в продолжение военной тематики, Санников разразился гневной отповедью послу РФ в Минске Александру Сурикову в связи с заявлением о возможности размещения в Беларуси новых российских вооружений: «Посол Суриков, вероятно, забыл, что он находится не где-нибудь в Алтайском крае, а в независимой Беларуси. Такие заявления, во-первых, не приличествуют дипломатам, а, во-вторых, их можно расценивать как покушение на суверенитет государства… Становится очевидным, что найти гарантии безопасности можно только в европейском контексте, точнее, в евроатлантическом. Россия в очередной раз подтверждает, что является для независимого государства источником снижения безопасности, как энергетической, так и военной». Санников предложил реагировать весьма серьезно «вплоть до пересмотра статуса российских военных объектов на территории Беларуси». Фактически, российские базы – вон, Беларусь – в евроатлантические структуры (читай – в НАТО). Такое вот «стратегическое партнерство» с Россией.
Не отставали от Санникова и его соратники. Так бээнэфовец Виктор Ивашкевич (недавно вошедший в предвыборный штаб Санникова), комментируя визит в Минск Владимира Путина в декабре 2007-го, заявлял: «Иначе как политическим шантажом это не назовешь. Впервые за последние годы угроза независимости Беларуси приобретает целиком реальные черты. Поэтому сегодня белорусское общество должно консолидироваться, чтобы защитить свою независимость… Уже в начале года было понятно, что Россия посредством экономических рычагов будет вынуждать Беларусь если не к простому включению в ее состав, то через так называемое Союзное государство. Буквально завтра на съезде мы обсудим эту ситуацию и примем решение по нашим действиям на ближайшие дни. Среди главного – подготовка массовых акций протеста во время визита Путина», – сообщил Ивашкевич сайту Хартии’97.
Кстати, этот сайт отличается давней «любовью» к России. Еще в 2000-м другой соратник Санникова, Николай Халезин, заявлял на нем: «Россия маленькая и бедная страна. Она насчитывает 12 миллионов москвичей. Все остальное – это неизведанные москвичами земли…». А с новостями о белорусско-российских отношениях на этом сайте традиционно происходит интересные метаморфозы. Например, вполне невинная новость, взятая, кстати, с ленты «Интерфакса», «Россия при переговорах по вступлению во Всемирную торговую организацию «не всегда готова учитывать интересы Беларуси» вдруг получает заголовок «России на интересы Беларуси наплевать».
Сайт Хартии’97 систематически публикует не просто негативные, а прямо-таки одиозные материалы о нашей восточной соседке: «В России пытки применяются к каждому пятому россиянину», «Врачи: россияне год за годом становятся ниже и слабее», «Половина мужчин в России умирает от употребления одеколона и лосьона», – и на полном серьезе задается вопросом «насколько фашистская современная Россия?».
Отдельный привет от Хартии’97 Владимиру Путину: «Бывший посол Эстонии в России: Путин ведет себя как Гитлер», «Путин нуждается в длительном лечении» («Один из гостей саммита, российский президент Владимир Путин, ведет себя так, как будто нуждается в длительном лечении…»), «Мировые СМИ: главная ошибка Ельцина – Путин», «The Times: Путин – задиристый молодчик, ведущий Россию к фашизму», «Путин: вошь, которая зарычала».
По поводу намеков на фашизм Владимиру Владимировичу на сайт обижаться не стоит: ведь трактовка фашизма идеологами Хартии’97 серьезно отличается от общепринятой в Беларуси и России. Иначе вряд ли по случаю Дня Победы там разместили бы статью Валерии Новодворской «Знамя поражения», где разъясняется, что «красный фашизм не лучше черного, и если бы в Мавзолее лежал не Ленин, а Гитлер, над Кремлем торчали бы не звезды, а свастики…не было бы хуже».
Но, быть может, Санников позиции сайта Хартии’ 97 не разделяет? Свою точку зрения он пояснил во время недавней онлайн-конференции на Lenta.ru: «Искренне считаю коллектив сайта своими единомышленниками, которые не изменяют принципам свободы слова в самых сложных условиях и на протяжении многих лет». Таким образом, мысли Санникова о России ясны как день, а, вернее, черны как ночь…
«Я и есть самый удобный
кандидат для Москвы»
А вот Романчук без ложной скромности заявляет интернет-ресурсу Infox.ru: «Я и есть самый удобный кандидат для Москвы». Что думает о России столь удобный ей кандидат, можно узнать из его статей на сайте известного в узких кругах центра, которым он руководит.
Возьмем, например, статью за июль нынешнего года «Чему Россия может научить Беларусь?»: «Без новых дорог и транспортной инфраструктуры, качественной связи и энергетических сетей, тепло- и водоснабжения жить по-новому сложно. Смотрим на качество российских дорог, на работу энергосектора и ЖКХ. Анализируем производительность, эффективность и доходность – и совсем не хочется копировать российский опыт. Это желание усиливает всеохватывающая коррупция в этих секторах… По индексу защиты прав собственности в 2010 году Россия заняла 88-е место из 125 стран. Раз сам у себя не сделал, значит, едва ли можешь научить соседа… Смотрим на качество бюджетно-налоговой политики в России – и полностью пропадает желание унифицировать Беларусь под российский опыт в этой сфере. В 2009 году дефицит бюджета РФ составил 6,2%, а расходы – 40,6% ВВП. От налогов все стонут. Их администрирование порождает коррупцию. Бюджет сделан так, что его «распил» превратился чуть ли не в самый доходный бизнес в стране… Можно ли, скопировав российские законы и практику их исполнения, провести в Беларуси честную, открытую приватизацию? «Что угодно, только не это!» – предостерегают сами российские экономисты и обыкновенные люди. Действительно, не нужна Беларуси олигархическая власть и безнаказанность оборотней в погонах и без них. Может, Кремль может научить Беларусь, как создавать качественный деловой климат?.. «Кошмарить» бизнес в России не перестали…Правила торговли в России тоже с душком. Из 183 стран мира Россия по легкости перемещения товаров через границу занимает 162-е место. Протекционизм прет. Санитарные врачи на высоких должностях защищают не столько потребителей, сколько транслируют волю вертикали власти. Таможня часто берет чужое добро, но закрывает глаза на контрабанду… Копировать российский опыт в социальной сфере может только человек, который до этого побывал разве только в Гватемале, Вьетнаме или Индии… Система здравоохранения больно бьет по генофонду. Университеты как бы учат, а учителям как бы платят…».
Таможенный союз на том же сайте заслужил характеристику «таможенного месива» и «подарка тщеславия Назарбаеву».
Сжатое видение российско-белорусских отношений изложено Романчуком в материале «Рука Москвы в экономике» (17 августа 2009 года): «Малого и слабого легко обидеть. Особенно в этом преуспевают большие и наглые…». В развернутом виде – в материале «Беларусь – Россия: перезагрузка» (7 июля 2009 года): «В оборонной сфере мы выступаем за установление партнерских отношений с НАТО (участие в программе «Партнерство во имя мира» и других проектах) при четкой позиции невступления в данную организацию в обозримом будущем (выделено мной. – А.М.)», «Россия и Беларусь самостоятельно принимают решение о вступлении в ВТО. Вступление якобы единым таможенным пространством России, Беларуси и Казахстана представляется нам бесперспективным», «Стратегическая цель Беларуси – членство в Европейском союзе»…
У вдумчивого читателя возникнут сомнения, насколько такие идеи могут стать основой для диалога с московским истеблишментом. Зато у Романчука таковых не возникает, свой диагноз российской элите он выставил еще четыре года назад (в статье «Российский синдром: новый свинтопрульный аппарат для союзного государства»): «Действительно концептуальная ограниченность российской элиты уже видна даже плохо вооруженным взглядом. Что это? Зрение стало ухудшаться? Нанюхались нефтяных паров и все остальное в экономической и политической сфере стало малозначительным? Сами собой загордились на фоне золотых рек от экспорта? Кстати, вообще нет у России ни одной поистине дружественной страны. Такова ее судьба и ее нынешняя геополитическая данность…Пора честно сказать следующее: более глупых партнеров среди дружественных стран, чем славянские, трудно найти»…
 
С широко закрытыми глазами…

Задумываются ли в Москве об идейно-политическом багаже новоявленных «стратегических партнеров»? Российским СМИ придется либо превзойти самих себя, доказывая искреннюю пророссийскость воззрений Некляева, Санникова и Романчука, либо закрыть глаза на очевидное. Скорее всего, в Москве именно так и сделают. Пренебрежительные отзывы упомянутых господ о России и ее элите не рассматриваются как серьезная проблема, поскольку серьезных политических ставок на них и не делают. Им уготована «почетная роль» массовки в информационном давлении Кремля на белорусское руководство. Это вынуждены признать и сами вечные кандидаты в кандидаты.
«Мы вчера провели вторую конференцию по обсуждению белорусско-российской проблематики. Мы приглашали и думу, и администрацию президента, Совет Федерации, всех тех людей, которые так или иначе завязаны на внешнюю политику… К сожалению, потому что очевидно не было приказа из Кремля, событие было по большому счету проигнорировано властными структурами», – признался недавно Романчук в эфире «Эха Москвы».
Кстати, материалы этой конференции, опубликованные в российских СМИ, в очередной раз демонстрируют обилье «правд» у нашей оппозиции. Если в белорусском информационном поле она гордо твердит о скором крахе режима и решающей роли Москвы, то в московских кулуарах смиренно признает, и что с рейтингом все в порядке у действующей власти, и что информационная война вызывает у белорусских граждан оскомину по отношению не к своему руководству, а к российским СМИ, и что у Кремля нет реального выбора, с кем сегодня строить отношения в Беларуси…
Вот такая она, горькая правда о «правдах» белорусской оппозиции.
 
Алексей МАЦЕВИЛО,
БЕЛТА
 

Автор: 
Алексей МАЦЕВИЛО
Номер газеты: