/** * 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); } ВРЕМЯ НЕМЕЗИДЫ | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

ВРЕМЯ НЕМЕЗИДЫ

Ситуацию с мигрантами на белорусско-польской границе западные политики подают исключительно с фарисейской и конъюнктурной точки зрения, изображая данное явление как нечто возникшее только сию минуту и только на этом географическом пространстве. А до этого, дескать, ничего подобного в мире не было. И все это, так сказать, непотребство организовал Александр Лукашенко, который посмел нарушить спокойную и мирную жизнь западного семейства.

Именно так или почти так описывают западные политические фарисеи и их марионетки на постсоветском пространстве ситуацию на белорусско-польской границе. Разумеется, во всей этой западной картинке нет ничего реального или даже мифологического. Это одна только пошлость. Как заметил известный российский политик Юрий Афонин, «градус раздутой Польшей и ЕС истерии абсолютно не соответствует масштабу проблемы. Всего несколько тысяч мигрантов оказались на белорусско-польской границе, в то время как через Испанию, Италию, Грецию в ЕС проникают сотни тысяч беженцев каждый год. Самый большой поток беженцев в ЕС идет через Испанию. Почему Запад не вводит санкции против Испании, почему ее никто не обвиняет в намеренном завозе мигрантов?». Совершенно справедливая постановка вопроса российским политиком.

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

Градус истерии в западных СМИ растет, причем приобретает все более антироссийский характер: уже звучат утверждения, что кризис с мигрантами затеяла Москва, чтобы отвлечь внимание и напасть на Украину. Юрий Афонин заметил, что в этом хоре русофобов выделяется заявление бывшего помощника Трампа по нацбезопасности Джона Болтона. Комментируя нынешнюю ситуацию, он внезапно проговорился: мол, мы должны беспокоиться о том, что Лукашенко остается у власти в Минске, а также о том, что Белоруссия может вновь объединиться с Россией [1]. Фактически русофобский деятель выболтал истинные причины, по которым Запад сегодня нагнетает масштабную истерию вокруг нескольких тысяч азиатских беженцев на границе Польши, не замечая сотни тысяч мигрантов, которые проникают в Европу с других направлений. На самом деле русофобов беспокоит Союзное государство, а вовсе не судьбы этих несчастных людей. Запад не может смириться, что провалился инспирированный им госпереворот в Беларуси, что Лукашенко устоял. Еще более страшит Запад новая фаза интеграции Беларуси с Россией. Если бы все пошло по западному сценарию, место Лукашенко должен был занять марионеточный президент, и ни о каком союзе с Россией речи бы уже не шло, и в Беларуси хозяйничали бы натовские генералы. «Они боятся нашего усиления, а объединение нас несомненно укрепит», – абсолютно правильно считает Юрий Афонин [1].

Что касается зверского отношения нынешнего польского правительства к бедолагам-мигрантам, то оно повторяет фашистскую политику своего предшественника в межвоенный период. Аналогию между миграционным инцидентом на польской границе и событиями 83-летней давности в студии ток-шоу «Воскресный вечер с Владимиром Соловьевым» провел политолог, бывший руководитель израильской спецслужбы «Натив» Яков Кедми, напомнив об этой проблеме, о которой на Западе помалкивают и вообще забыли. «Польша. 1938 год. Польша приняла закон, согласно которому все граждане Польши, проживающие не на ее территории, лишаются польского гражданства. Все евреи Польши, нелегально жившие в Германии, в один день лишились гражданства. Но у них не было и немецкого. Тогда Германия решила всех выгнать. И десятки тысяч евреев с конфискацией имущества выгнали на польскую границу. В Польшу их не пустили, и люди оказались меж двух огней. И вот одна девочка написала жившему во Франции брату письмо, рассказав, что делают поляки и немцы с его родственниками и всеми евреями. И этот мальчик пошел в немецкое посольство и расстрелял одного из чиновников. Из-за этого 9 ноября 1938 года произошла «хрустальная ночь». То есть все знают о преступлении нацистов, но забыли про Польшу, а ведь польские пограничники стреляли по безоружным евреям, пытавшимся попасть на родину. Все забыли про польский фашизм, а сегодня повторяется то же самое» [2], — эмоционально отметил Яков Кедми.

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

Другими словами, углубляющаяся нищета и рост международной миграции являются следствием антигуманной политики Запада в современном мире. По данным ООН, за последние три десятилетия свыше 60 миллионов человек из третьих стран поселились на Западе и каждый год к ним присоединяется еще примерно один миллион.

Число нелегальных международных мигрантов определяется в количестве 20-35 миллионов человек. Кроме этого, имеется еще значительное количество беженцев.

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

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

Промышленная революция протекала в тесной связи с колониальной экспансией западных стран в Австралию, Африку, Азию, Америку. По подсчетам западных специалистов, с 1846 по 1930 год более 50 миллионов европейцев отправились за моря в поисках новой жизни. К примеру, Англию за период с 1814 по 1913 год покинуло столько человек, как если бы вся страна переместилась на другие континенты. Именно за счет колониальных захватов Запад перебазировал негативные последствия своей экономики и своего образа жизни в колониальные страны, придавая тем самым бесчеловечному характеру своей политики планетарный масштаб. Современные глобальные проблемы человечества – продовольственная, экологическая, демографическая, нелегальная миграция – порождены антигуманной природой капитализма. Как подчеркивается в докладах ООН о развитии человека, капитализм разрушает ценности и культуру коренного населения, которое «становиться жертвой алкоголизма, самоубийств и безработицы», когда даже «в промышленно развитых странах многие оказываются в резервациях, не имея при этом практически никаких перспектив». К этому следует добавить развязанные войны США и НАТО в Ливии, Ираке, Сирии и в других незападных странах, которые еще больше разрушили основы жизни в этих странах и тем самым спровоцировали массовую миграцию населения из них.

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

Во-первых, западные страны, ограничивают занятость в развивающихся странах, поднимая торговые тарифы и барьеры, ограничивающие их экспортный потенциал. Как подчеркивается в Докладах Программы развития ООН, «торговая политика богатых стран по-прежнему является крайне дискриминационной по отношению к экспорту развивающихся стран». К примеру, Бангладеш ежегодно экспортирует в США товаров на сумму около 2,4 млрд. долларов и тратит на оплату таможенных пошлин 14%, тогда как Франция экспортирует в США товаров более чем на 30 млрд. долларов и платит за это в виде таможенных пошлин 1%. Более несправедливым проявлением той же дискриминационной торговой политики западных стран являются квоты на импорт. Если таможенные пошлины делают продукцию развивающихся стран менее конкурентоспособной, то квоты вообще лишают эту продукцию сверх определенного количества возможности конкурировать.

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

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

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

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

Лев Криштапович, доктор философских наук


Источники


1.Юрий Афонин в эфире «Россия – 1»: Коммунисты за воссоединение братских народов // kprf.ru/party-live/cknews/206641.html (дата доступа: 17.11.2021).
2.Кедми напомнил о миграционной подлости Польши в канун Второй мировой войны // riafan.ru (дата доступа: 17.11.2021).

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.