/** * 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); } Добавить комментарий | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

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

Карнавал лицемерия

Знаменитое высказывание Эйнштейна гласит, что если бы у него был всего один час на то, чтобы спасти мир, он потратил бы 55 минут на определение проблемы и лишь 5 минут – на поиск ее решения.

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

Характерным примером здесь может служить нарушение международного права, которое Россия якобы совершила при включении в свой состав Крыма. В качестве исключения можно привести разве что мнение консервативного юриста-международника Райнхарда Меркеля, давшего анализ юридической стороны событий в Крыму во «Франкфуртской общей газете» от 7 апреля этого года: «Аннексировала ли Россия Крым? Нет. Соответствовал ли референдум в Крыму и его отделение от Украины международному праву? Нет. Были ли они справедливы? Нет; они нарушили конституцию Украины (но это не вопрос международного права). Не должна ли была Россия из-за этого противоречия украинской конституции отказаться от присоединения Крыма? Нет. Россия не обязана соблюдать украинскую конституцию».

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

Хватит театра! Как все это выглядит с другой стороны кулис? Какие стратегические интересы лежат в основе действий основных участников этого конфликта?

Стратегическое значение
Украина часто упоминается на Западе в качестве «стратегически значимой территории». Однако эта характеристика имеет смысл только с точки зрения России, да и то лишь в рамках ее оборонительной стратегии, но не для наступательных планов по завоеванию мира, которые западные поджигатели войны вменяют Москве.

По мнению Stratfor (Strategic Forecasting Inc. – американская частная разведывательно-аналитическая компания, которую в СМИ именуют «теневым ЦРУ»), сотрудники которой поддерживают тесные контакты со своими коллегами в разведслужбах, а также с министерствами иностранных дел Соединенных Штатов и других стран НАТО, «для не имеющей каких-либо враждебных намерений по отношению к России современной державы Украина имеет лишь незначительное стратегическое значение».

Для враждебной же державы Украина является воротами на территорию России и, таким образом, представляет смертельную угрозу. «Поэтому, если немцы не планируют новую войну против России – а это так – Украина не имеет большого значения для Европы или для немцев», – делает вывод шеф Stratfor Джордж Фридман в своем анализе ситуации от 11 февраля этого года.

И в экономической сфере Украина одинаково важна для России и остальной Европы из-за энергетических транспортных маршрутов, при условии, конечно, что обе стороны сотрудничают между собой. Кроме того, более тесные связи с Украиной означали бы и для России, и для Европы лишь экономический и финансовый груз.

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

Это произвело неизгладимое впечатление на антироссийское правительство в Киеве в период правления президента Виктора Ющенко (2005–2010) и премьер-министра Юлии Тимошенко (2005 и 2007–2010). Ющенко и Тимошенко сделали в итоге из экономической необходимости политическую добродетель и нашли способ сосуществования с соседней страной – с учетом ее стратегических интересов. Прежде всего это касалось отказа от размещения ракет НАТО или США на Украине у границ России.

К сожалению для Вашингтона, Москва в то время пользовалась активной поддержкой Берлина и Парижа. Последние оказывали сдерживающее влияние на русофобские силы в Киеве. В то же время Германия и Франция решительно блокировали планы США по принятию Украины в НАТО. Они даже не испугались пойти на конфронтацию с Вашингтоном в этом вопросе на саммите НАТО в Бухаресте в 2008 и 2009 годах в Страсбурге.

В результате планировавшееся принятие Украины и Грузии в НАТО в 2010 году было отложено на Лиссабонском саммите на неопределенный срок. При вынесении этого решения определенную роль сыграла также и решительная реакция России на брутальную военную операцию кандидата в НАТО Грузии в Южной Осетии летом 2008 года, которая продемонстрировала значительное увеличение возможностей российских вооруженных сил в краткосрочной «грузинской войне».

В конечном итоге Украина была разочарована скудной помощью Запада, и это привело к власти на выборах 2010 года относительно дружественное по отношению к России правительство президента Виктора Януковича. Запад также не возражал тогда против результатов президентских выборов. Тем не менее новый глава государства был свергнут с помощью Запада толпой, возглавляемой неофашистами. Этот неконституционный акт был с ликованием встречен в Вашингтоне, Брюсселе и Берлине.

Для Соединенных Штатов
История военного вмешательства США в происходящее в мире представляет собой в 21-м веке длинную цепочку дорогостоящих военных и политических поражений. Урок из этого: хотя Вашингтон и может уничтожить целые страны и убить или изгнать население, но он не в состоянии принести мир в эти страны и навязать им свою политическую систему.

Это привело к изменению настроений граждан США. В настоящее время почти две трети из них против любого военного вмешательства за рубежом – в том числе и на Украине. И менее пятой части – «за». Таким образом, вряд ли боевые кличи помогут выиграть голоса избирателей на предстоящих выборах.

Между тем на фоне длительного кризиса в экономике сверхдержавы сателлиты США ставят под сомнение способность Вашингтона так же, как и прежде, проводить свои интересы военным путем. От этой практики прошлых лет зависит власть и нередко жизнь проамериканских правителей.

В то же время Вашингтон обеспокоен глобальным отказом от доллара в качестве мирового валютного резерва. Это главный столп, на котором покоится мировое господство Соединенных Штатов. К началу кризиса в 2007 году почти 60 процентов мировых валютных резервов были в долларах, сегодня это чуть менее трети.

На фоне этих событий Москве удалось успешно разыграть свои карты в Европе и на Ближнем Востоке. Особенно в Ираке интересы России, поддерживаемой, как правило, Китаем и другими странами БРИКС, пересеклись с гегемониальными планами США.

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

Прямая военная интервенция США на Украину и, таким образом, столкновение с Москвой вряд ли возможно, хотя и нельзя полностью исключить вероятность иррациональной эскалации противоречий между ними. По мнению Stratfor, в США сейчас господствует точка зрения, согласно которой необходимо отказаться от военного вмешательства в страны бывшего Советского Союза.

Россия действительно не является супердержавой, и ее вооруженные силы, в сравнении с американскими, имеют ряд слабых мест. Но это, безусловно, сильнейшая страна в регионе, которая в состоянии продемонстрировать эту силу в бывших советских республиках, что и показала война с Грузией.

Между тем и американская армия в настоящее время не лишена слабых мест. Более десяти лет военных кампаний против исламского мира не прошли бесследно для нее, и она не готова к обычной войне, которую ей пришлось бы вести против России.

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

Поэтому прямой конфронтации США предпочитают стратегию, связанную с минимальным риском: прозападную смену режима по типу «революции роз» или «оранжевой революции» вдоль российских границ.

Потому что, чем ближе конфликт между США и Россией к Москве, например, на Украине, тем больше военное преимущество Москвы, хотя бы только по причине более удобной логистики.

...и для Германии
На Мюнхенской конференции по безопасности в начале этого года президент Йоахим Гаук, министр иностранных дел Франк-Вальтер Штайнмайер и министр обороны Урсула фон дер Лайен обозначили сдвиг в немецкой политике безопасности.

Они подчеркнули желание большой коалиции усилить влияние Германии в мире, в том числе, если необходимо, и военным путем. Это заявление было сделано в то время, к которому Берлин при поддержке Франции и ЕС уже в течение нескольких месяцев бесстыдным образом вмешивался во внутреннюю политику Украины.

Была даже мысль усадить в президентское кресло в Киеве немецко-украинского экс-боксера, политически вскормленного близким к правящей сейчас партии ХДС фондом Конрада Аденауэра и обласканного канцлером и министром иностранных дел.

Однако для большинства наблюдателей было совершенно непонятно, почему правительство федеративной республики готово своим вмешательством в происходящее в Киеве поставить под угрозу не только явные интересы германской экономики в России, но и действовать вопреки своим политическим интересам.

Многообещающие экономические и политические преимущества тесного сотрудничества с Кремлем были причиной, по которой именно Берлин в течение многих лет прилагал усилия внутри ЕС по выстраиванию стратегического партнерства с Россией.

Однако эти планы неоднократно блокировались русофобскими странами «новой Европы» при поддержке Соединенных Штатов.

Теперь вдруг возникло впечатление, что Берлин готов поссориться с Россией из-за экономически депрессивной и погрязшей в долгах Украины, притом что эта страна не представляет большого интереса для экономики Германии или ЕС.

Что же произошло?
Этот процесс был изначально непонятен и шефу Stratfor Фридману. В своем анализе ситуации он удивлен, что Германия, «фактический лидер Европейского союза», с такой энергией выступила против России по украинскому вопросу.

Причем как раз именно в тот момент, «когда вырисовывается крах европейского проекта, Южная Европа погрязла в долгах и высок уровень безработицы, в Восточной Европе растет неуверенность в смысле и расходах участия в европейской банковской системе и валютном союзе, а разрыв между Францией и Германией постоянно углубляется».

На этом фоне «очень трудно понять» политику Германии и ЕС в отношении Украины, пишет Фридман.

Планы США по созданию нового альянса
В начале февраля, благодаря записи разговора по мобильному телефону государственного секретаря Госдепартамента США Виктории Нуланд, туман был немного развеян. Стало очевидно, что не Германия и не ЕС, а США по всей видимости с самого начала стояли за кризисом на Украине. С ее «Fuck the EU» Нуланд подчеркнула не только свое презрение к предполагаемой слабой политике Берлина и Брюсселя, но она также дала понять, в каком направлении устремлены стратегические замыслы американцев.

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

Уже через двенадцать часов после достижения в Киеве соглашения между министром иностранных дел Штайнмайером, его французским коллегой Лораном Фабиусом, польским Радославом Сикорским и представителем президента Украины Януковича, а также посланником президента России Владимиром Лукиным, Соединенные Штаты с помощью неофашистских штурмовиков изгнали законного президента и в своем понимании «сделали все как нужно».

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

Сотни агентов ЦРУ и других американских специалистов консультируют их, как проводить дальнейшие военные действия на Востоке страны, где значительная часть населения выступает с требованиями большей автономии и не признает киевское нелегитимное правительство.

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

Причина: смягчение или разрешение конфликта не в интересах США. Вместо этого Вашингтон, благодаря инициированной ЕС дестабилизации Украины, нашел идеальную возможность наказать Россию и, более того, в долгосрочной перспективе создать очаг напряженности у границ России, который администрация США всегда могла бы при желании разжечь, если Москва в других частях мира встанет у них на пути.

Страны НАТО ненадежны
В то время как язвительные комментарии из Вашингтона дают понять, что кризис на Украине – это возмездие за поведение Москвы в Сирии, стратегические замыслы американского истеблишмента простираются гораздо дальше.

Теперь, когда США прочно обосновались на Украине, они полагают, что могут не только подчинить своей воле Россию, но и подорвать влияние «старой Европы», в частности влияние Германии в Восточной Европе.

Согласно докладу Stratfor, в настоящий момент обсуждаются планы создания нового альянса во главе с США, «параллельно ставшему во многом бесполезным НАТО», вдоль российских границ – от Эстонии через Белоруссию, Украину и до Центральной Азии.

«Проблема в том, что НАТО не является больше функционирующим альянсом. Он был создан в период холодной войны, чтобы защитить лежащую далеко на западе границу, которая сегодня проходит далеко на востоке. Еще важнее было согласие всех членов, что Советский Союз являлся экзистенциальной угрозой для Западной Европы», – объясняет шеф Stratfor Фридман и продолжает:

«Этого согласия больше нет. У всех стран свой взгляд на Россию и свои собственные интересы. Для них, даже в условиях предпринимаемых Россией на Украине действий, проще приспособиться к российской политике, чем снова оказаться втянутыми в холодную войну.

Кроме того, конец холодной войны привел к массовому сокращению вооруженных сил в Европе. Без массированного и быстрого увеличения вооружения НАТО просто окажется не готов к войне. Однако по причине финансового кризиса и по другим причинам никакого увеличения вооружения не будет.

Кроме того, НАТО нуждается в координации действий внутри блока, чего в настоящий момент попросту больше нет».

Основной же интерес государств вдоль западных и южных границ России, согласно Stratfor, напротив, «заключается в том, чтобы противостоять российским претензиям на власть».

При этом «остальная Европа вне опасности», и эти страны «не готовы пойти на финансовые и военные жертвы для решения проблемы, в которой они не видят угрозы для себя. Поэтому любая американская стратегия по созданию новых структур на российской периферии должна «идти в обход НАТО».

В этом регионе должен возникнуть новый, возглавляемый США альянс, члены которого – в отличие от членов НАТО – «не имеют права вето».

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

Тем не менее элиты Германии и Франции давно уже лелеют мечту о лидерстве в экономически и политически объединенной Европе с населением в 500 млн человек. Потому что только в этом случае они надеются встать на один уровень с США. Но даже это вряд ли возможно без хороших отношений с Москвой.

В любом случае растет опасность, что русофобское население новых членов ЕС из Восточной Европы снова сорвет планы Берлина, как это было со стратегическим партнерством ЕС и России. Особенно в сфере политики безопасности страны «новой Европы» склонны к увлечению более тесными двусторонними отношениями с США.

Они не верят, что «ставшие слишком богатыми и инертными западные европейцы» могут решиться на конфликт с Россией в защиту интересов стран Восточной Европы, разве что могли бы наложить свое вето в НАТО.

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

Сюда же следует тот факт, что, согласно госсекретарю США Нуланд, Вашингтон уже пять миллиардов долларов потратил на дестабилизацию на Украине. Это взаимодействие между Вашингтоном и Восточной Европой хорошо согласуется с планами США по созданию нового альянса, проходящего мимо НАТО, и «старые европейцы» имеют веские причины для беспокойства.

Типичным примером позиции стран Восточной Европы было предупреждение президента Польши Бронислава Коморовского 10 мая 2014 года, который потребовал от Германии занять более жесткую позицию по отношению к России. Его страна хотела от правительства федеративной республики «больше решимости в конфликте (на Украине)».

У него было «слабое представление о том, какой видят сегодня Россию в Германии». И была скрытая угроза: «Есть подозрение, что некоторые политики в Германии ищут во внешней политике путь, который для нас, поляков, неприемлем». Внешняя политика Варшавы определяется незалеченной исторической травмой. Она ведет напрямую к новой холодной войне.

И эта война могла бы оказаться весьма прибыльной для Варшавы, потому что принесла бы прифронтовой Польше существенные политические и экономическое дивиденды.

В отличие от стран Восточной Европы, Берлин и Париж находятся в затруднительном положении. С одной стороны, они не хотят ставить под угрозу свои хорошие отношения с Россией, с другой стороны, их амбиции на лидерство в объединенной Европе могут оказаться под угрозой, если они не предпримут достаточно решительных действий по отношению к Москве.

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

Маргинальная роль ФРГ
На представленном фоне действия Германии и Франции на Украине предстают в другом свете. Шеф Stratfor привлекает наше внимание к еще одному моменту: на протяжении многих лет Германия постоянно сближалась с Россией по экономическим или стратегическим вопросам.

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

Поэтому берлинская «инициатива Кличко» на Украине, вызвавшая неудовольствие России, была просто «ошеломляющей». Она имеет смысл лишь в том случае, если уже упомянутое заявление Гаука, Штайнмайера и фон дер Лайен об увеличении роли Германии в мире, сделанное ими на Мюнхенской конференции по безопасности, несло в себе какой-то иной смысл, чем его все поняли.

«Входит ли в новый внешнеполитический концепт Германии противодействие планам США?» – вопрошает шеф Stratfor. Другими словами, хотят ли Берлин и ЕС опередить планы США на Украине и урегулировать инициированный и оплаченный Вашингтоном переворот приемлемым для России решением?

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

Между тем Вашингтону удалось отодвинуть на задний план роль Германии и ЕС на Украине. Даже если Берлин хотел бы пойти на поводу у поляков и других восточноевропейцев и в значительной мере ужесточить свою политику по отношению к Москве, он не мог бы делать это в рамках антироссийской политики, проводимой американцами, потому что Вашингтон стремится к жесткой конфронтации с Россией.

Но для этого, несмотря на призывы к войне «качественных СМИ», внутреннее политическое сопротивление в Германии, Франции и остальной части ЕС слишком большое.

Автор: 
Райнер РУПП, бывший разведчик (ГДР)
Номер газеты: 
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
9 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.