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

Все пути ведут в Лондон: российская и белорусская оппозиции - близнецы-братья

На первый взгляд, российские «болотные» оппозиционеры и белорусские «борцы» с Лукашенко никак не связаны между собой. Однако нельзя не увидеть и определенные параллели. У «болотных» главная цель - смещение Путина и «демократизация» России (которая почти наверняка обернется новыми потрясениями, чревата дальнейшим ослаблением и даже распадом страны), а у белорусских «борцов» - смещение Лукашенко и такая же «демократизация» Беларуси (которая направлена на установление контроля над республикой со стороны Евросоюза и США, отрыв Беларуси от России).
Когда все так похоже, это чаще всего свидетельствует о том, что процессы генерируются и направляются из одного и того же источника…
Безусловно, вряд ли кто станет утверждать, что уважительное и внимательное отношение к своим гражданам, забота об их благосостоянии, возможность свободно высказать свои предложения по улучшению жизни общества, обратить внимание на негативные и даже преступные проявления во власти чужды и неприемлемы как для россиян, так и для белорусов. Или же настаивать, что все граждане России и Беларуси напрочь отвергают демократию, как таковую и желают жить лишь под неизменными царственными скипетрами В.Путина и А.Лукашенко, и не видят проблем или бездействия в ряде вопросов как со стороны высших должностных лиц России и Беларуси, так и власти в обоих государствах в целом.
Абсолютное большинство граждан России и Беларуси - против бесконечного вмешательства в дела своих стран из-за рубежа, экспорта «демократии» в виде регистрации противоестественных однополых браков и усыновления детей людьми, которые не могут построить нормальные семейные отношения с противоположным полом. «Холодная война» формально закончилась, но несомненно следующее: победители в США и Евросоюзе полагают, что под предлогом «демократизации» вполне можно попытаться толкнуть Россию и Беларусь по очередному «оранжевому» или «весеннеарабскому» пути, чтобы в создавшейся неразберихе, если и не уничтожить совсем, то надолго ослабить потенциального конкурента в виде вырисовывающегося Евразийского Союза. Стержнем этого Союза, безусловно, является Союзное государство России и Беларуси, в связи с чем у противников Путина и Лукашенко немало общего.
Неслучайно именно с Лондоном у России наиболее непростые отношения в Европе - будучи ближайшим стратегическим союзником США, Великобритания наряду с Вашингтоном последовательно поддерживает российскую оппозицию. Именно в Лондоне нашли прибежище наиболее одиозные политические фигуры, по тем или иным причинам покинувшие Россию в последнее десятилетие.
Вряд ли на этом фоне является случайностью тот факт, что именно Лондон в октябре 2012 года предоставил политическое убежище и одному из противников А.Лукашенко, бывшему кандидату в президенты Беларуси Андрею Санникову.
Последний, оказавшись в британской столице, тут же начал активную деятельность по созданию прообраза некоего «правительства в изгнании» Беларуси в Лондоне. Но об этом мы поговорим позже, а пока несколько слов о самом Санникове.
Андрей Олегович родился в Минске в 1954 году, закончил в 1977 году переводческий факультет Минского института иностранных языков, что и предопределило его работу на дипломатическом поприще, так как он свободно владеет английским и французским языками. Будучи еще совсем молодым человеком, он успел поработать в Пакистане, Египте, Обществе Дружбы с зарубежными странами. С 1982 по 1987 год трудился в Нью-Йорке в секретариате ООН, переводчик Службы письменного перевода. В 1989 году закончил дипломатическую академию МИД СССР.
После распада СССР его карьера пошла в гору. В 1992-1995 годах он возглавлял делегацию Беларуси на переговорах по обычному и ядерному разоружению с правом подписи и одновременно работал советником представительства Беларуси в Швейцарии. В 1995-1996 годах (уже при А. Лукашенко) был заместителем министра иностранных дел Беларуси.
Все вроде бы хорошо и красиво. Но перестроечное время выдвинуло, к сожалению, на первый план целый слой таких людей, которые, получив прекрасное образование и сделав карьеру, сосредоточились не столько на деятельности во благо своей страны, сколько на «дружбе с зарубежными странами». Ничего плохого в такой дружбе нет, если она направлена на пользу своей стране, но вот почему-то гораздо чаще такая «дружба» становилась однобокой, направленной прежде всего на отстаивание на родине чужих интересов, чем, собственно говоря, длительное время и занимаются в Беларуси господин А.Санников и его жена Ирина Халип.
Чтобы не быть голословными, обратимся к фактам. Уже в ноябре 1996 года А.Санников демонстративно подал в отставку, протестуя против итогов референдума 1995 года о придании статуса государственного русскому языку и движения в сторону российско-белорусской интеграции, инициированного А.Г. Лукашенко. Его поддержали более чем 3/4 участвовавших в голосовании белорусов. Санников выступил также одним из инициаторов создания оппозиционного движения «Хартия’97», финансируемого из-за рубежа (как, впрочем, и вся нынешняя белорусская оппозиция). Санников, как и нынешние лидеры Болотной, отметился организацией в течение ряда лет различных шествий, направленных как против А.Г.Лукашенко, так и против российско-белорусской интеграции.
Довольно показательны и названия этих мероприятий: «Так жить нельзя!», «За лучшую жизнь» и особенно - «Раздавим фашистскую гадину!».
И.Халип по мере сил старалась помогать мужу, освещая все эти действия на страницах прессы - как белорусской, так и российской, зарубежной. Для этого у нее были все возможности: в прошлом она корреспондент газеты «Чырвоная змена», журнала «Парус», в 1991 году - финалистка конкурса «Мисс пресса СССР», уже после распада Советского Союза работала в центральной газете страны «Советская Белоруссия». Ирина также ушла в оппозицию, работала в изданиях «Имя», «Белорусская деловая газета». Значительное внимание уделяла сотрудничеству с «Радио «Свобода».
Все это пишется для того, чтобы читатель, объективно оценил те расхожие штампы о «страшной диктатуре» в Беларуси, якобы устроенной А.Г.Лукашенко. И Санников, и Халип годами поддерживали тесные связи с зарубежьем и активно боролись против существующей в Беларуси власти. Одна акция «Раздавим фашистскую гадину!» чего стоит. И эти люди годами делали это легально и, по большому счету, безнаказанно. Может быть, Лукашенко нужно было пригласить их к себе в администрацию, чтобы выглядеть не так «авторитарно»?
Следует отметить, что «Белорусская деловая газета» отличалась крайней непримиримостью. А любая безнаказанность, как известно, у подобной либеральной публики часто порождает пьянящее ощущение вседозволенности. 11 апреля 2005 года после проигранного «Белорусской деловой газетой» скандального судебного процесса с гражданином США А. Маром, оскорбленным комментариями И.Халип по поводу его интервью с А.Г. Лукашенко, и ряда других публикаций «БДГ» была закрыта.
Впрочем, И.Халип продолжила свое сотрудничество с «Радио «Свобода», а также стала собственным корреспондентом московской «Новой газеты». Именно «Новая газета» в № 74 от 6 октября 2005 года поведала миру, что И.Халип получила премию журнала «Тайм» «Герой Европы» в номинации «Храброе сердце». Напрямую об этом не говорилось, но
сопоставив даты, понимаешь, что премия явилась наградой за «борьбу с последним диктатором Европы».
Интересно, что супруга Санникова получила финансовую поддержку в России, хотя вся ее деятельность в Беларуси направлена против интеграционных усилий двух стран, а значит и против интересов той же России.
Это достаточно показательный, но далеко не единичный случай, когда противники российско-белорусской интеграции становятся корреспондентами российских СМИ и представителями российских структур в Беларуси, тогда как лидеры пророссийских неправительственных организаций в Беларуси практически лишены подобной помощи.
В этом смысле любопытно посмотреть, что представляет собой сама «Новая газета» - один из рупоров российских либеральных сил. 51% акций принадлежит коллективу издания, 10% - Михаилу Горбачеву и 39% - бизнесмену Александру Лебедеву. С Горбачевым, «лучшим немцем» и «другом Маргарет Тэтчер» все и так, в общем-то, понятно. Куда любопытнее фигура предпринимателя А.Лебедева. Он в 1982 году закончил экономический факультет МГИМО, изучал проблематику международных долговых обязательств, функционирование мировой валютно-финансовой системы, в 1984 году закончил Краснознаменный институт КГБ СССР.
В восьмидесятых - начале девяностых А.Лебедев, как и А.Санников, работал на дипломатической службе, во 2-м Европейском отделе МИД, где занимался, в том числе, вопросами предотвращения утечки капитала за рубеж. В Лондоне тесно сошелся с банкиром А.Костиным. В 1991 году, как и положено, вышел из КПСС (вступил в 1979 году). Занялся коммерцией, в 2000 году защитил кандидатскую, а в 2003 году - докторскую диссертации. Опять, как и в случае с А.Санниковым, блестящее образование, карьера, будни в рядах службы внешней разведки на страже «предотвращения утечки капитала». В итоге - состояние в 1,1 миллиарда долларов и 89 место по версии Forbes среди богатейших людей России, скупка лондонских газет «The Evening Standard» и «The Independent», приобретенных за символическую сумму в 1 фунт стерлингов каждая.
В 2012 году Национальный резервный банк А.Лебедева выдвинул в совет директоров «Аэрофлота» (НРБ владеет 15% акций) не кого-нибудь, а А. Навального.
В 2012 году А.Лебедев заявил о намерении свернуть бизнес в России.
С Лебедевым имеет давние контакты и еще один яркий лидер Болотной - Дмитрий Быков, который также тесно
сотрудничает с «Новой газетой».
В любом случае белорусская оппозиция нашла в среде своих российских коллег «родственные души».
Получив такую поддержку по всем фронтам - в Европе и среди либеральной российской общественности, супружеская чета А.Санников - И.Халип перешла к более активным действиям. В 2008 году Санников вместе с другими белорусскими оппозиционерами стал инициатором гражданской кампании «Европейская Беларусь», целью которой было воспрепятствовать российско-белорусской интеграции и добиться вступления Беларуси в Евросоюз. Практически с этими же лозунгами семейная чета А.Санников – И.Халип пришла и к президентским выборам 2010 года, Санников стал одним из оппозиционных кандидатов.
Понимая, что у действующего белорусского президента все равно не выиграть, кандидаты от оппозиции боролись за «серебро» и право возглавить эту самую оппозицию.
Общая предвыборная риторика Санникова и других оппозиционных кандидатов сводилась к тому, что Лукашенко, навязав Беларуси союзные соглашения с Россией, едва не привел Беларусь к полной потере суверенитета. К России, дескать, изначально нужно было относиться с подозрением и выстраивать отношения с Евросоюзом и НАТО по примеру Прибалтики и Польши. Тогда бы не было потерянных 15 лет, а белорусы уже были бы на пороге вхождения в «общеевропейскую семью» и имели бы гораздо более высокий уровень жизни. Осложнение российско-белорусских отношений, по мнению националистических сил, закономерно, так как стратегическая цель России - аннексия Беларуси. И здесь (в ситуации противостояния с Россией) А.Лукашенко вынужденно выступает защитником суверенитета, так как боится утратить личную власть. И в этом смысле его позиция является положительной для белорусского народа, но опять же – именно его политика едва и не привела Беларусь к полному краху. Санников, записанный рядом российских обозревателей в “пророссийские кандидаты”, прямо ратовал за вступление в течение 5-7 лет в состав Евросоюза с одновременным сохранением “стратегического партнерства” с Россией.
19 декабря 2010 года произошло то, о чем и так дружно говорили в один голос все аналитики: Александр Лукашенко с почти 80% голосов «за» при явке в 90% избирателей предсказуемо победил в первом же туре президентских выборов и сохранил свои властные полномочия. Довольно беспомощные попытки оппозиционных кандидатов вывести людей на улицы и взять штурмом здание правительства, где заседал Центризбирком в тот же вечер, когда завершилось голосование, но еще не были объявлены его официальные итоги, ни к чему путному не привели. В итоге наиболее активные участники и вдохновители погрома оказались за решеткой.
Как водится, 11 января 2011 года правозащитная организация Amnesty International признала Андрея Санникова и Ирину Халип вместе с еще 14 белорусскими активистами и журналистами узниками совести. Несмотря на это давление, 14 мая 2011 года Партизанский районный суд Минска признал Андрея Санникова виновным в организации беспорядков и приговорил его к 5 годам лишения свободы в колонии усиленного режима.
Тема политзаключенных долго муссировалась в отношениях Евросоюза и Беларуси. Лукашенко не возражал против помилования Санникова, однако для этого требовалось его прошение, которое Санников (понимая, что такие варианты, как с Луценко и Януковичем в Украине, с Лукашенко просто не проходят) написал, и 14 апреля 2012 года был помилован и отпущен на свободу. В октябре 2012 года Санников получил политическое убежище в Великобритании и переехал в Лондон - как раз туда, где ведет сейчас свою экономическую деятельность А.Лебедев.
Именно в Лондон стали стекаться и другие белорусские оппозиционеры. В воздухе стала витать идея формирования «правительства в изгнании».
Отмечу, что именно таким путем действовали в Лондоне и во время Второй мировой войны, когда сформировали в пику Сталину и СССР польское «правительство в изгнании».
Ирина Халип за участие в беспорядках была осуждена на два года лишения свободы с отсрочкой исполнения наказания на два года - у нее ограничен выезд за пределы Минска, за ней осуществляется профилактический надзор. Халип также обязана находиться дома после 22.00 и ежедневно отмечаться в милиции. К слову, это не какие-то специальные меры по отношению именно к Халип – точно такие же требования предъявляются к любому гражданину Беларуси, получившему условный срок.
21 июля 2013 года завершается срок условного наказания и ожидается повторный суд, который и определит дальнейшую судьбу И.Халип, поэтому данная тема получила новое развитие.
Следует отметить, что А.Г.Лукашенко подвергался атаке британских СМИ еще в 2012 году и заявлял журналистам из Лондона о том, что он готов предоставить возможность И.Халип выехать за пределы Беларуси. По этому же поводу во время пресс-конференции он так ответил на вопрос журналиста «БелаПАН»: «Если вы хотите ее куда-то повезти, завтра идите к генеральному прокурору. У меня есть соответствующие полномочия, вы ее заберете и повезете. Но она не поедет… Ирина - неглупая женщина, она прекрасно понимает: сегодня она жертва режима, завтра о ней забудут».
За всем этим внимательно следили как в Лондоне, так и в либеральных кругах Москвы. Чтобы организовать приезд Халип в Москву на 20-летие издания, главным редактором «Новой газеты» Дмитрием Муратовым была проведена целая операция по получению официального разрешения на выезд журналистки за пределы страны. О значительной роли совладельца «Новой газеты» олигарха Александра Лебедева и его сына Евгения Лебедева, и, естественно, самого Дмитрия Муратова И.Халип призналась в недавнем интервью российскому телеканалу «Дождь». В октябре 2012 года, по словам Халип, именно с Евгения Лебедева, который приехал к Александру Лукашенко за интервью для своей газеты «Индепендент», собственно и началась вся эта история. Президента Беларуси спрашивали про судьбу Ирины Халип и раньше, но когда Евгений Лебедев спросил, почему она не может выехать в Москву в свою редакцию, Лукашенко пожал плечами и ответил: «Я думал, она в Москве. Отправьте сегодня же с вечерней лошадью… Я первый раз слышу, что она там не может выехать в Москву, подлечиться и так далее… Вы хотите ее в Москву - везите. Первый раз вообще слышу, что ей запрещено выехать в Москву…»
В итоге после многочисленных консультаций И.Халип приняла решение подать заявление на выезд в Великобританию для встречи с мужем и в Москву для участия в мероприятиях по случаю 20-летия «Новой газеты», корреспондентом которой она является до сих пор. 13 февраля уголовно-исправительная инспекция Партизанского РУВД Минска разрешила ей сразу оба выезда.
С 6 по 12 марта И.Халип находилась в Варшаве, где встретилась с мужем. После консультаций с ним и другими «заинтересованными лицами» она выехала в Москву, где в числе прочего обратилась за медицинской помощью. Московские медики выявили у Ирины Халип серьезное заболевание невротического характера. Этот диагноз был поставлен после консультационного обследования в Институте высшей нервной деятельности Российской Академии наук. Основной причиной болезни специалисты считают сильный стресс, полученный журналисткой во время пребывания в СИЗО белорусского КГБ. После задержания она провела там около двух месяцев. Медики советовали ей незамедлительно пройти курс реабилитации.
Данная ситуация в чем-то напоминает то действо, которое уже длительное время разворачивается на Украине вокруг находящейся в заключении Юлии Тимошенко. Впрочем, сравнение вряд ли корректное - масштаб у И.Халип явно не тот.
Московская «Новая газета» и ее главный редактор Дмитрий Муратов, забрасывая официальными письмами администрацию А.Г. Лукашенко и МИД Беларуси, постоянно просили учесть особые обстоятельства здоровья Халип, которая помимо нервного расстройства начала заметно злоупотреблять курением и не только им. Однако И.Халип пока предпочла вернуться в Беларусь, где, очевидно, продолжит раскачивать лодку белорусской государственности. Не приходится сомневаться, что белорусские власти готовы пойти ей навстречу и отпустить подлечиться куда-нибудь на морское побережье, так как дома властям она ничего кроме головной боли не доставляет, и никакого большого желания ее удерживать официальный Минск не испытывает. Однако И.Халип, видимо, решила дожидаться суда, предварительно согласовав свои действия как с лидерами Болотной, так и с мужем и Лондоном.
В любом случае вся эта история наглядно продемонстрировала, что российская либеральная и белорусская оппозиция тесно связаны между собой, а их деятельность координируется и контролируется из-за рубежа, и в первую очередь – из Лондона.

Автор: 
Алексей ПОЛОЗОВ
Номер газеты: