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

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

Мир или война...

Выступление Президента Российской Федерации В.В. Путина на итоговой пленарной сессии XII заседания Международного дискуссионного клуба «Валдай».

Уважаемые коллеги, друзья! Дамы и господа!
В этом году наша дискуссия сосредоточена на вопросах
войны и мира. Эта тема, безусловно, волновала человечество на протяжении всей истории. Еще во времена древнего мира, античности шли споры о природе, причинах конфликтов, о справедливом и несправедливом применении силы, о том, будут ли войны всегда сопровождать развитие цивилизации, чередуясь лишь перемириями, либо наступит время, когда споры и противоречия будут разрешаться без войны.
Наши военные на территории Сирии борются с терроризмом и в этом смысле защищают интересы сирийского народа. Но не только. В первую очередь они защищают интересы России и российского народа.
Здесь, безусловно, вспоминали и нашего великого писателя Льва Николаевича Толстого. В своем великом романе «Война и мир» он назвал войну противным человеческому разуму и всей человеческой природе событием, а мир считал благом для людей.
Действительно, мир, мирная жизнь были и остаются идеалом человечества. Государственные деятели, философы, юристы не раз предлагали модели мирного взаимодействия держав. Различные союзы, коалиции провозглашали своей целью обеспечение прочного, как говорили когда‑то, «вечного» мира. Проблема, однако, в том, что выход из накопившихся противоречий часто искали все‑таки через войну. А сама
война служила средством установления новых, послевоенных иерархий в мире.
При этом мир как состояние мировой политики никогда не был устойчивым и не возникал сам по себе. Мирные периоды – и в европейской, и в мировой истории – всегда были основаны на закреплении и поддержании сложившегося баланса сил. Так было в XVII веке, во времена Вестфальского мира, который положил конец Тридцатилетней войне. И в XIX веке, в эпоху Венского конгресса. И 70 лет назад в Ялте, когда победители нацизма принимали решения о создании Организации Объединённых Наций, о принципах взаимоотношений государств.
С появлением ядерного оружия стало понятно, что в глобальном конфликте не может быть победителя. Итог мог быть только один – гарантированное взаимное уничтожение. Получилось так, что человек, в попытках создать все более разрушительное оружие, сделал большую войну бессмысленной.
Кстати, поколение мировых лидеров 50-х, 60-х, 70-х и даже 80-х годов действительно относилось к использованию военной силы как к исключительной мере. И в этом плане они вели себя ответственно, взвешивая все обстоятельства и возможные последствия.
Окончание «холодной войны» положило конец идеологическому противостоянию, но основа для споров и геополитических противоречий вовсе не исчезла. У всех государств всегда есть и будут свои, порой разнонаправленные, интересы. А развитие мировой истории всегда сопровождала конкуренция держав и их союзов. И, на мой взгляд, это абсолютно естественно.
Главное, чтобы такая конкуренция строилась в рамках определенных политических, правовых, моральных норм и правил. Иначе соперничество, столкновение интересов чревато острыми кризисами и драматическими срывами.
Мы не раз наблюдали это в прошлом. И сегодня, к сожалению, вновь сталкиваемся с подобными ситуациями. Попытки любыми средствами продвигать модель одностороннего доминирования – я уже не раз говорил об этом – привели к разбалансировке систем международного права и глобального регулирования, а значит, есть угроза, что конкуренция – политическая, экономическая, военная – может стать неуправляемой.
Что, к примеру, такая неуправляемая конкуренция может означать для сферы международной безопасности? Это рост числа локальных конфликтов, особенно в «пограничных» регионах, где сталкиваются интересы крупных держав или блоков. Это также вероятный закат системы нераспространения оружия массового уничтожения (что я считаю чрезвычайно опасным) и как результат – новый виток гонки вооружений.
Уже появилась концепция так называемого первого обезоруживающего удара, в том числе с использованием высокоточных неядерных средств большого радиуса действия, сопоставимых по своему эффекту с ядерным оружием.
Под предлогом ракетно-ядерной угрозы со стороны Ирана, как мы знаем, разрушена фундаментальная основа современной международной безопасности – Договор об ограничении противоракетной обороны. США в одностороннем порядке из него вышли. Сегодня, кстати, иранская ядерная проблема решена, никакой угрозы со стороны Ирана не было, как мы говорили, и нет. Причина, вроде бы побудившая наших американских партнеров строить систему противоракетной обороны, исчезла. И мы вправе были бы ожидать, что и работа над развитием ПРО США прекратится. А что на самом деле? Ничего подобного не происходит, наоборот – всё продолжается.
На днях проведены первые испытания ПРО США в Европе. Что это значит? Это значит, что мы, когда спорили с нашими американскими партнерами, были правы. Нас, да и весь мир, пытались в очередной раз ввести в заблуждение просто. А сказать совсем попроще – обманывали. Дело не в гипотетической иранской ядерной угрозе, которой и не было никогда. Дело – в попытке разрушить стратегический баланс, изменить соотношение сил в свою пользу таким образом, чтобы не просто доминировать, а иметь возможность диктовать свою волю всем: и своим геополитическим конкурентам, да думаю, и своим союзникам. Это чрезвычайно опасный сценарий развития событий, вредный для всех, включая, на мой взгляд, и сами Соединенные Штаты.
Сдерживающий фактор ядерного оружия стал девальвироваться. У некоторых, возможно, даже возникла иллюзия, что в мировом конфликте вновь достижима реальная победа одной из сторон – без необратимых, неприемлемых, как говорят специалисты, последствий для победителя, если победитель вообще будет.
За последние четверть века порог применения силы уже явно снизился. Приобретенный после двух мировых войн антивоенный иммунитет, который существовал буквально на психологическом, подсознательном уровне, стал ослабевать. Само восприятие войны изменилось: для зрителей у экранов телевизоров она превращалась и превратилась сегодня в зрелищную медийную картинку, как будто в ходе военных действий не гибнут, не страдают люди, не разрушаются города и целые государства.
К сожалению, военная терминология звучит сейчас практически во всех сферах жизни. Так, реальность сегодняшней глобальной экономики – это торговые и санкционные войны, это уже стало штампом средств массовой информации. Причем санкции используются в том числе как инструмент недобросовестной конкуренции, чтобы потеснить или вовсе «выкинуть» соперников с рынков. В качестве примера приведу настоящую эпидемию штрафов в отношении в том числе и европейских компаний со стороны Соединенных Штатов. В ход идут надуманные предлоги, жестко караются те, кто осмелился нарушить односторонние американские санкции.
Вы знаете, это, конечно, может быть, не российское дело, но у нас же с вами дискуссионный клуб, поэтому я все‑таки позволю себе спросить: так с союзниками поступают? Нет, так поступают с вассалами, которые осмелились действовать по своему усмотрению, – их наказывают за плохое поведение.
Вот, только в прошлом году на один из французских банков был наложен штраф почти в 9 миллиардов долларов – 8,9, по‑моему. Toyota заплатила 1,2 миллиарда долларов, немецкий Commerzbank подписал соглашение о выплате в американский бюджет 1,7 миллиарда долларов, и так далее.
Сдерживающий фактор ядерного оружия стал девальвироваться. У некоторых, возможно, даже возникла иллюзия, что в мировом конфликте вновь достижима реальная победа одной из сторон – без необратимых последствий для победителя.
Мы также видим, как разворачивается процесс создания непрозрачных экономических блоков, причем процесс формирования таких структур идет чуть ли не по всем правилам конспирации. Задача понятна – так переформатировать мировую экономику, чтобы извлекать еще большую ренту из своего доминирования и распространения своих стандартов экономического, торгового и технологического регулирования.
Формирование экономических блоков путем навязывания своих условий сильнейшим игрокам, безусловно, не сделает мир безопаснее, а лишь заложит мины замедленного действия, почву для будущих конфликтов. Создали же когда‑то Всемирную торговую организацию. Да, сложно там идет дискуссия, да, Дохийский раунд переговоров зашел, может быть, в тупик, но надо все‑таки искать выходы и компромиссы, потому что только компромиссы могут создать долгосрочную систему отношений в любой сфере, в том числе и в сфере экономики. А если просто сделать вид, что эти озабоченности некоторых стран, участников международного экономического общения, неинтересны, что их можно как‑то обойти, то они ведь никуда не исчезнут, эти противоречия, их же никто не разрешит, они останутся, а значит – дадут о себе когда‑то знать.
Вы знаете, у нас другой подход. Мы в ходе формирования Евразийского экономического союза пытаемся выстроить отношения с нашими партнерами, в том числе выстроить совместную работу в рамках китайской инициативы «Шелкового пути». Мы активно и на абсолютно равноправной основе работаем в рамках БРИКС, АТЭС, в «двадцатке».
Глобальное информационное пространство также сегодня сотрясают войны, условно говоря. Агрессивно навязывается «единственно правильная» точка зрения и трактовка событий, подтасовываются или замалчиваются определенные факты. Мы уже все привыкли к навешиванию ярлыков и созданию образа врага.
Власти стран, которые, казалось бы, всегда апеллировали к ценностям свободы слова, к свободному распространению информации (как часто мы об этом слышали в прежние времена!), теперь пытаются препятствовать распространению объективной информации и любую иную точку зрения, отличную от их собственной, объявляют враждебной пропагандой, с которой нужно бороться, причем явно недемократическими средствами.
К сожалению, все чаще используются слова «война», «конфликт», когда разговор идет и об отношениях людей разных культур, религий, национальностей. Сегодня сотни тысяч мигрантов пытаются интегрироваться в другое общество, причем не имея профессии, не зная языка, традиций, культуры стран, в которые они переселяются. А коренные жители, безусловно, – и надо прямо об этом говорить, не нужно ничего лакировать – коренные жители раздраженно говорят о чужом засилье, об ухудшении криминогенной ситуации, о деньгах, которые тратятся на беженцев из бюджетов соответствующих стран.
Конечно, много людей, большинство людей сочувствуют беженцам, хотят им помочь. Вопрос в том, как это сделать, не ущемляя интересов коренных жителей тех стран, в которые беженцы переселяются. А шоковое, массовое, неуправляемое столкновение разных жизненных укладов может привести и уже ведет к росту национализма и нетерпимости, к возникновению перманентного конфликта в обществе.
Уважаемые коллеги, будем реалистами: военная сила, конечно, остается и, безусловно, еще долгое время будет инструментом международной политики. Хорошо это или плохо, но так есть по факту жизни. Вопрос в другом: будет ли она применяться лишь тогда, когда все другие средства исчерпаны? Когда необходимо противостоять общим угрозам, таким, например, как терроризм, и по известным правилам, изложенным в международном праве? Или кулаки станут пускать в ход по любому поводу, порой просто для того, чтобы напомнить миру, кто в доме хозяин, не задумываясь о легитимности применения силы и о последствиях применения силы, не решая проблемы, а лишь умножая их.
Мы видим, что происходит сегодня на Ближнем Востоке. Десятилетиями, а порой, может быть, и веками здесь, конечно, копились межэтнические, религиозные, политические противоречия, острейшие социальные проблемы. Словом, гремучая смесь нарастала, а попытки тем не менее извне грубо переустроить регион стали той спичкой, которая привела к настоящему взрыву, к разрушению государственности, всплеску терроризма и в конечном счете к росту рисков для всего мира.
Невозможно добиться успеха над терроризмом вообще, если часть террористов использовать как таран для свержения неугодных режимов.
Террористическая организация, так называемое «Исламское государство», взяла под контроль огромные территории. Как это ей удалось? Только вдумайтесь: в случае захвата Дамаска или Багдада террористические банды могли получить статус практически официальной власти, был бы создан плацдарм для глобальной экспансии. Кто‑нибудь думает об этом или нет? Всему международному сообществу пора наконец понять, с чем мы имеем дело. По сути, с врагом цивилизации, человечества и мировой культуры, который несет идеологию ненависти и варварства, попирает мораль, ценности мировых религий, в том числе и ислама, компрометируя его.
И не нужно играть в слова, делить террористов на умеренных и неумеренных. Хотелось бы понять, в чем разница. Наверное, по мнению некоторых специалистов, в том, что умеренные бандиты, что называется, в умеренном количестве или нежным способом обезглавливают людей.
По сути, мы видим сейчас настоящий клубок террористических группировок. Да, порой боевики «Исламского государства», «Джабхат ан-Нусра», другие разного рода наследники и осколки «Аль-Каиды» даже воюют друг с другом, но они воюют за деньги, за дележ денег, за источники доходов, за территорию кормления, вот за что они воюют. Они воюют не по идеологическим соображениям, а суть и методы у них одни: террор, убийства, превращение людей в забитую, запуганную, послушную массу.
В последние годы ситуация всё больше ухудшалась, инфраструктура террористов разрасталась, число боевиков увеличивалось, а оружие, которое передавалось так называемой «умеренной оппозиции», «умеренным оппозиционерам», оказывалось неизбежно в руках террористических организаций. Скажу более, иногда на его сторону переходили сразу целыми бандами, что называется, «под музыку и с оркестром».
Почему усилия, допустим, наших американских партнеров и их союзников по борьбе с «Исламским государством» не давали внятных результатов? Очевидно, что дело не в нехватке военного имущества или потенциала. Безусловно, Соединенные Штаты располагают огромным, самым большим в мире военным потенциалом, просто всегда трудно вести двойную игру. Объявлять о борьбе с террористами и одновременно пытаться использовать часть из них для того, чтобы расставлять фигуры на ближневосточной доске в своих интересах, как кажется, в своих интересах.
Невозможно добиться успеха над терроризмом вообще, если часть террористов использовать как таран для свержения неугодных режимов. Никуда от этих террористов не деться, и это только иллюзия, что удастся потом с ними справиться, отстранить от власти либо как‑то договориться. И лучший пример тому – ситуация в Ливии.
Будем надеяться, что новому правительству удастся стабилизировать ситуацию, но это ещё не факт, хотя, безусловно, надо помогать стабилизации.
Мы хорошо понимаем, что боевики, которые воюют на Ближнем Востоке, представляют угрозу для всех, в том числе для нас, для России. В нашей стране знают, что такое террористическая агрессия, знают, что творили бандиты на Северном Кавказе. Мы помним кровавые террористические акты в Буденновске, в Москве, в Беслане, в Волгограде, в других городах России. Россия всегда боролась с терроризмом во всех его проявлениях, последовательно выступала за реальное объединение усилий мирового сообщества в противостоянии этому злу. Именно этим было продиктовано наше предложение по созданию широкой антитеррористической коалиции, которое прозвучало недавно в моем выступлении в Организации Объединенных Наций.
После обращения официальных властей Сирии о поддержке мы приняли решение о начале российской военной операции в этой стране. Еще раз подчеркну: она является полностью легитимной, ее единственная цель – способствовать установлению мира. И уверен, что действия российских военных окажут необходимое воздействие на ситуацию в позитивном плане, помогут официальным властям создать условия для последующих действий в сфере политического урегулирования, нанести упреждающие удары по террористам, угрожающим и нашей стране, России. Помочь тем самым всем странам и народам, которые, безусловно, находятся в опасности, если эти террористы вернутся по своим домам.
Что, на наш взгляд, необходимо делать, чтобы поддержать долгосрочное урегулирование в регионе, его социальное, экономическое и политическое возрождение? Прежде всего освободить территории Сирии и Ирака от террористов и не дать им переместить свою активность в другие регионы. А для этого нужно объединить все силы: регулярные армии Ирака и Сирии, отряды курдского ополчения, различные оппозиционные группы, готовые действительно внести свой реальный вклад в разгром террористов, скоординировать действия региональных и внерегиональных стран, противостоящих террору. При этом совместная антитеррористическая деятельность должна, безусловно, опираться на международное право.
Второе. Очевидно, что сама по себе военная победа над боевиками не решит всех проблем, но она создаст условия для главного – для начала политического процесса с участием всех здоровых, патриотически настроенных сил сирийского общества. Именно сирийцы должны решать свою судьбу при исключительно корректном, уважительном содействии международного сообщества, а не под давлением извне путем ультиматумов, шантажа и угроз.
Наша цель – победить терроризм и помочь Президенту Асаду одержать победу над террором, и тем самым создать условия для начала и, надеюсь, успешного проведения политического процесса урегулирования.
Хочу напомнить, что Ближний Восток в своей истории часто становился ареной столкновений разных империй и держав. Они перекраивали границы и политическое устройство региона под себя, исходя из своих собственных интересов. И последствия были не всегда приятными и хорошими для людей, которые там проживали. Да, собственно говоря, их, как правило, и не спрашивали. Последними, кто узнавал о том, что происходит в их собственных странах, были как раз люди, которые и проживали на Ближнем Востоке.
Конечно, встает вопрос: не пора ли международному сообществу все свои действия согласовывать с теми людьми, которые живут на этих территориях? Думаю, что давно пора, нужно к этим людям, так же как и ко всем другим, относиться с уважением.
Принципиальное значение имеет вовлечение в процесс политического урегулирования мусульманского духовенства, лидеров ислама, глав мусульманских государств. Мы рассчитываем на их консолидированную позицию и содействие, на их моральный авторитет. Очень важно защитить людей, особенно молодежь, от разрушительного влияния идеологии террористов, которые пытаются использовать их как пушечное мясо, не более. Нужно четко провести грань между истинным исламом, ценности которого – это мир, семья, благие дела, помощь ближнему, уважение к традициям, и той ложью, ненавистью, которую сеют боевики, прикрываясь исламом.
Четвертое. Уже сейчас нам необходимо проработать «дорожные карты» по экономическому и социальному возрождению региона, по воссозданию элементарной инфраструктуры, жилья, больниц, школ. Только такая созидательная работа на месте после устранения терроризма и политического урегулирования может остановить огромный поток беженцев в европейские страны и возвратить на родину тех, кто уже уехал.
Очевидно, что Сирии потребуется масштабная финансовая, экономическая, гуманитарная помощь, для того чтобы залечить раны войны. Нам нужно определить формат, в рамках которого мы могли бы вести эту работу с привлечением стран-доноров, международных финансовых институтов. Сейчас проблемы Сирии обсуждаются на площадке ООН, других международных организаций, в рамках межгосударственных отношений. Да, пока не всегда удаётся добиться понимания, мучительно трудно отказываться от несостоявшихся ожиданий и неоправдавшихся расчетов, тем не менее прогресс есть.
Мы видим, что в рамках антитеррористической операции постепенно, хотя и не так активно и быстро, как нам хотелось бы, но всё же налаживаются контакты по линии военных ведомств. Серьезным шагом стало согласование российско-американского документа об обеспечении безопасности полетов боевых самолетов двух стран над Сирией.
Мы также близки к тому, чтобы начать обмен информацией с нашими западными коллегами о позициях и передвижениях боевиков. Все это, безусловно, шаги в правильном направлении. Главное, воспринимать друг друга как союзника по общей борьбе, вести себя честно и открыто. Только так можно гарантировать победу над террористами.
Сирия при всей драматичности нынешнего положения может стать моделью для партнерства во имя общих интересов, для решения проблем, которые затрагивают всех, для выработки эффективной системы управления рисками. Такой шанс у нас уже был после окончания «холодной войны». К сожалению, мы им не воспользовались. Такая возможность была и в начале 2000-х годов, когда Россия и США, ряд других стран столкнулись с террористической агрессией. Хорошую динамику сотрудничества тогда, к сожалению, также не удалось удержать. Не буду возвращаться к тому, почему не получилось это сделать. Мне кажется, и так всем известно. Сейчас важно извлечь правильные уроки из того, что было в прошлом, и идти вперед.
Уверен, что опыт, который мы накопили, и сама сегодняшняя ситуация позволят нам наконец сделать правильный выбор – выбор в пользу сотрудничества, взаимного уважения и доверия, выбор в пользу мира.
Большое спасибо за внимание.

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