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

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

Вместо диалога – санкции и ультиматумы

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

Польский премьер-министр М. Моравецкий заявил, что его правительство выделит 50 млн злотых для поддержки «репрессированных» и «покалеченных жертв диктатуры», предоставит «угнетённой» молодёжи дополнительные места в вузах. Литовский президент Г. Науседа отвёл своей стране роль беспристрастного посредника в диалоге между «нелегитимным» А. Лукашенко и «легитимной» С. Тихановской, тайно надеясь, что новая власть наконец прикроет БелАЭС под боком у Вильнюса. Латвия готова приютить ИТ-компании, чтобы хоть как-то оживить свою экономику. Украинские власти во всём поддерживают Польшу и страны Балтии из-за общего жуткого страха перед Россией, которая якобы спит и видит, как расширить свою империю за счёт их территорий.

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

Говоря о стабилизации ситуации в Белоруссии, западные политики вносят весомый вклад в её дестабилизацию в виде санкций и ультиматумов. Так, глава внешнеполитической службы ЕС Ж. Боррель заявил на сессии Европарламента, что считает выборы в Белоруссии сфальсифицированными, а Лукашенко нелегитимным президентом. Выходом из кризиса политик видит диалог властей и общества при посредничестве наблюдательной миссии ОБСЕ. Однако, по словам Ж. Борреля, белорусские власти отказываются от него.

Это не соответствует действительности. А. Лукашенко неоднократно говорил, что готов вести диалог, но не с улицей и самопровозглашённым Координационным советом оппозиции, а с представителями трудовых коллективов. Кроме того, уже анонсирована конституционная реформа.

Министр иностранных дел Белоруссии В. Макей назвал оценки Ж. Боррелем ситуации в республике категоричными и тенденциозными, а навязчивые «требования повторных выборов – не наилучшим решением, поскольку такие решения далеко не всегда приводят к наилучшим результатам».

В. Макей отметил, что ЕС не вправе определять легитимность или нелегитимность президента: «У нас прошли выборы, пусть по некоторым высоким канонам и не идеально, однако народ своим большинством (это сегодня сложно поставить под сомнение) определил их победителя. Хотелось бы понять, на каком основании представители ЕС ставят себя вровень с белорусским народом и считают себя вправе единолично выносить вердикты о приемлемости для белорусов результатов выборов… К чему придёт мир, если каждый внешний игрок начнёт прямо оспаривать результаты выборного процесса в других странах?»

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

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

Позицию Ж. Борреля поддержала и «дружественная» Украина. Верховная рада приняла заявление о ситуации в Белоруссии, в котором отметила, что «президентские выборы не были ни свободными, ни честными, прошли в условиях полного отсутствия состязательности между кандидатами, свободных СМИ, а также авторитетных наблюдателей от международных организаций» типа ОБСЕ и Совета Европы. Всё это дало украинским парламентариям основания считать «официально обнародованные результаты выборов не отражающими реального волеизъявления белорусских граждан».

Подпевая «западным друзьям», депутаты предостерегли от «любых намерений привлечь силы РФ и ОДКБ для урегулирования ситуации в Белоруссии: «Будем считать такой шаг прямой угрозой для общеевропейской безопасности и безопасности Украины».

Для мирного выхода их кризиса Верховная рада предложила «новые, свободные и демократические выборы с участием независимых международных наблюдателей от ведущих европейских институтов». За постановление проголосовали 228 депутатов из 345.

Показательным примером лицемерия стало заявление офиса президента В. Зеленского о том, что Украина занимает нейтральную позицию относительно политического кризиса в Белоруссии.

Следом за ЕС и Украиной очередную порцию глупостей наговорила экс-кандидат в президенты С. Тихановская. На правах «переходного президента» она поведала миру о «гарантиях безопасности Лукашенко» и подготовке оппозицией списка лиц, в отношении которых следует ввести санкции за сидящих по тюрьмам «политзаключённых».

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

Это подтверждают слова директора Службы внешней разведки России С. Нарышкина, заявившего о западном следе в белорусском протестном движении: «В нынешних событиях в Белоруссии США играют ключевую роль. Хотя в публичном пространстве Вашингтон пытается держаться в тени, после начала массовых уличных выступлений американцы кратно нарастили финансирование белорусских антиправительственных сил. Его объёмы исчисляются десятками миллионов долларов. Протестные акции с самого начала носят хорошо организованный характер и координируются из-за рубежа. Запад начал подготовку протестов задолго до выборов. Только США в 2019 году и начале 2020 года по линии различных неправительственных организаций направили на организацию антиправительственных выступлений порядка 20 млн долларов».

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

Глава СВР отметил, что в контактах с европейскими союзниками Вашингтон настаивает на необходимости усиления нажима на Минск для побуждения законного руководства страны к запуску диалога с так называемым Координационным советом по вопросам «передачи власти».
«Фактически речь идёт о плохо завуалированной попытке организовать очередную цветную революцию и антиконституционный переворот, цели и задачи которых не имеют ничего общего с интересами белорусских граждан», - подытожил С. Нарышкин.

Об этом и не только шёл разговор на недавней встрече А. Лукашенко с политическим активом страны. Президент подробно рассказал о семи этапах сценария по уничтожению страны, который готовился странами Запада на протяжении последних десяти лет: «Чтобы сразу снять все маски, назовём этих игроков поимённо. На уровне глобальных центров это прежде всего США, конкретнее – их сеть фондов по поддержке так называемой демократии. На европейском континенте активно действовали американские сателлиты: Польша, Литва, Чехия и, к сожалению, наша Украина».

У каждого из этих государств своя роль: Чехия используется как ресурсный хаб, Польша – как инкубатор медиаканалов («Белсат», NEXTA и др.) и площадка для альтернативных органов в изгнании, Литва, уязвлённая темой БелАЭС, - как таран белорусско-европейских отношений, Украина – как форпост политических провокаций.

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

После неудавшихся попыток цветных революций 2006 и 2010 годов оппоненты власти «нацелились на железный президентский электорат: жителей регионов, трудящихся, бюджетников, пенсионеров». В предвыборный период «зарубежные стратеги создавали «героев» для разных целевых аудиторий». Для городов и сёл это блогер С. Тихановский, для бизнеса и новых слоёв – банкир В. Бабарико, под которого создавались крупные интернет-площадки. Выдвижением экс-руководителя Парка высоких технологий В. Цепкало попытались «внести раздрай в настроения государственной элиты и прощупать её лояльность президенту».

Во время избирательной кампании был использован «целый набор цветных политтехнологий, заимствованных из арабского, армянского, польского, гонконгского и других протестов». А далее «в ход пошли современные политтехнологии, превращающие политику в шоу, рассчитанное на массового зрителя». Так, объединённый штаб оппозиции построил свою тактику на эксплуатации женского образа, традиционно почитаемого белорусами, но в балаганной форме. Параллельно были запущены фейки о мифических миллионах президента на зарубежных счетах и различные мемы.

«Все силы были брошены на завоевание виртуального большинства за счёт фейкового контента в СМИ и создание уверенности в том, что результаты выборов будут сфальсифицированы, а власть проиграет», - отметил А. Лукашенко.

День выборов «стал часом Х для попытки реализации «майданного» блицкрига». Недоверие к результатам кампании стимулировалось заблаговременно. По призывам объединённого штаба на участках ко времени их закрытия создавались искусственные очереди, ажиотаж и нагнеталась атмосфера. Планировалось одномоментно вывести на улицы городов тысячи протестующих и захватить административные здания, культовые места. При этом в режиме онлайн поступали инструкции от зарубежных координаторов.

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

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

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

«Очевидна ставка на масштаб и длительность протестов, изматывание сил и истощение ресурсов», - подчеркнул президент.

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

Как будто в подтверждение слов президента депутаты Европарламента проголосовали за принятие резолюции по ситуации в Белоруссии, в которой отвергли результаты выборов, заявили о «непризнании А. Лукашенко президентом по истечении нынешнего срока полномочий» и призвали Совет ЕС безотлагательно ввести санкции против ряда должностных лиц, в том числе против российских граждан, «причастных к поддержке режима Лукашенко».

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

Европарламент «предупредил, что А. Лукашенко не имеет политического или морального мандата на заключение каких-либо дальнейших соглашений от имени Белоруссии, в том числе с российскими властями, которые могут угрожать её суверенитету и территориальной целостности». Помимо этого, Европарламент назвал самопровозглашённый Координационный совет «временным представительством народа», поддержал новые выборы по «международным стандартам», а также призвал Еврокомиссию и Совет ЕС «оказать содействие белорусской демократической оппозиции, в том числе Координационному совету во главе с Тихановской».

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

Белорусский МИД ответил, что «резолюция носит агрессивный характер и не содержит ни одного конструктивного либо взвешенного тезиса», а президент подчеркнул, что его страна не нуждается в одобрении итогов выборов со стороны Европарламента.

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

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

Вслед за этим М. Моравецкий рассказал о создании стабилизационного фонда для помощи Белоруссии в сумме 1 млрд евро, позволящих «оправдать ожидания инвесторов».

Всё вышесказанное в очередной раз подтверждает, что Запад собирается вести «диалог» с действующими властями исключительно путём санкций и ультиматумов. Белоруссии к этому не привыкать. За годы своей независимости страна пережила немало санкций. Переживёт и эти.

Сергей ГРИШКЕВИЧ,
член КПБ.

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