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

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

Есть у либерализации начало, нет у либерализации конца


«О Путине мудром я песню слагаю,
А песня от сердца, а песня такая»

Именно эти строки белорусского классика хочется напеть, если прочитать статью Артема Шрайбмана «Почему Путин может сделать то, что не может Лукашенко», размещенную на портале tut.by.

Кратко: между двумя странам проведен водораздел на основании отношения к сталинским репрессиям, и сделан вывод, что все силы тьмы сгруппировались вокруг Белорусской ССР и лично Александра Григорьевича, в то время как прогрессивная Россия кается за Сталина, не вставая с колен и не вылезая из офшоров, за что ее хвалит автор.

С какими друзьями не надо врагов

«В ночь на 30 октября 80 лет назад сталинские чекисты расстреляли в Минске больше сотни белорусских интеллигентов», – пишет Шрайбман. Эта вводная – обязательная часть, как зачин в детской сказке. О «расстрелянной интеллигенции» сегодня пишут на каждом оппозиционном сайте, проводя неявную аналогию с собою, любимыми.
Однако интеллигенция тридцатых годов, мягко говоря, не села бы за один стол с нынешней «элитой». В основном репрессировались две социальные группы, коммунисты и работники госбезопасности. Думаю, ни к первым, ни ко вторым обозреватель tut.by себя не относит.

Что же касается «расстралянай літаратуры», то все эти товарищи активно писали не только художественные произведения, но и не менее художественные доносы друг на друга.
Один типичный случай недавно разбирали в соцсетях. Например, как сообщал белорусский драматург Пётр Васюченко:

«Тодор Глубокий (А.Дудар) пишет статью-донос «Ветер с Востока» против Дубовки и Пущи. С аналогичной публикацией «Тени на солнце» выступает Андрей Александрович. Эти энергичные меры привели к тому, что «Узвышша» распустили и репрессировали раньше других литературных сообществ. В своей статье-доносе, вышедшей в журнале «Полымя» (1928 год, №4) Дудар инкриминировал Дубовке и Пуще «разлажэньне моладзі буржуазнай паэзіяй».

Угадайте, чем закончился этот междусобойчик? Правильно, репрессировали всех: и бдительных Дударя с Александровичем, и «буржуазных» Дубовку с Пущей.

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

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

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

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

Здесь самое время напомнить о роли Сталина в организации централизованной экономики, о руководстве Ставкой, партизанским движением, о блестящей операции «Багратион» и т.д. Но нет.

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

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

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

«В памяти о СССР проявляется главное различие белорусской и российской власти. Первая — левая, вторая — правая. Эта, казалось бы, мелочь, разница в оттенке, прямо определяет, как до сих пор живет даже экономика двух стран. Здесь — колхозы, любовь к промышленным гигантам, отвращение к слову «приватизация» — а там — олигархический капитализм, дошедший до воистину диковатых форм 20 лет назад и заполнения списка Forbes сегодня», – пишет автор.

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

Занимательная социология

В 2017 у «Левады-центра» в первой пятерке популярных личностей оказались Иосиф Сталин (38%), Владимир Путин и Александр Пушкин (по 34%), Владимир Ленин (32%) и Петр I (29%). А во время аналогичного опроса в 2012 году первые пять мест рейтинга занимали те же личности, но их имена располагались в другом порядке. На первом месте был Сталин (42%), далее следовали Ленин и Петр I (по 37%), Пушкин (29%), Путин (22%).

«Как песня, живет его имя в народе,—
В просторах полей и на каждом заводе;
В колхозные хаты он гостем приходит,
Он с нами повсюду в живом хороводе» – как видим, классик Янка Купала действительно написал пророческие строки и сошелся в оценках с «Левада-центром».

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

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

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

И всё-таки, «Сталин, несмотря на открытие мемориалов жертвам его режима, бьет рекорды общественных симпатий. И не в последнюю очередь благодаря усилиям госСМИ», – считает автор.
Однако внимательный читатель почешет затылок. Как же так? Путин только что ругал Сталина, а теперь Шрайбман пишет, что госСМИ его хвалят. Они что, против Путина? А почему тогда на наших оппозиционных сайтах слюной брызжут про «путинскую пропаганду»?

Отвечаем:
Россия – это дуумвират силового аппарата и финансово-промышленных групп. Говорить со сцены можно что угодно, хвалить Сталина, ругать Сталина, но при этом огромные энергетические и минеральные запасы все равно останутся в правильных руках.
В Беларуси – более жесткая идеологическая риторика, что не нравится Шрайбману, и более централизованная экономика, что тоже не нравится Шрайбману. Он же, кстати, является не только колумнистом tut.by, но и постоянным автором московского отделения фонда Карнеги. Уж там-то знают, какой должна быть экономика с идеологией и как надо любить родину.

Вся королевская рать

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

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

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

Просим этот негласный договор в студию. Приведенные автором цифры поддержки КПРФ (19-20%) таковы, потому что в отдельных округах проводятся грязные выборы, созданы партии-спойлеры, а патриотическая риторика размывается на фоне внешней политики.

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

«Сталин героизируется не как коммунист или левый политик, а как победитель и строитель мощной империи. Это снова-таки правая, националистическая идея величия России, ностальгия по временам, когда «нас все боялись». Поэтому в Беларуси память о войне — ритуал с явным оттенком скорби и трагедии, а в России все чаще на плакатах 9 мая можно увидеть невообразимое для нас и откровенно жуткое «Можем повторить».

Ох, ах. Судя по плакатам, которые не так давно таскал «Молодой фронт», у нас тоже хотят повторить, только за другую сторону. Каб была вольная ад бальшавікоў Беларусь у складзе Новай Эўропы.
Кроме того, когда вы читаете, что СССР называют «империей» – надо понимать, что это клише штатовской пропаганды, призванное увести от сущности: принципиально иной экономической системы и иной национальной политики.

Но все это была идеология. А потом вдруг у Шрайбмана начинается экономика:
«Все более очевидно становится, что именно советское наследие тянет вниз и экономику сегодняшней Беларуси».

Ага, перейдем на мову, напишем сотню грязных книжек про советское прошлое, и экономика взлетит. В 90-х уже проходили, не взлетела.
И тянет ее вниз не «советское прошлое», а низкая производительность труда, падение российского рынка, но больше всего – износ материальной базы. Чтобы ее обновить, нужен инвестор, но вот только наша оппозиция готова обивать любые пороги, чтобы стране не давали кредитов. Так в коммунистах ли проблема, спросим у Шрайбмана?

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

Производственная артель, существовавшая в CCCР при Сталине, была таким же коллективным хозяйством, как и колхоз (сельскохозяйственная артель), только в промышленности. Этот тип собственности носил черты переходного, и рано или поздно кооперативный сектор должен был быть преобразован в общенародный – об этом можно почитать в сталинских «Экономических проблемах социализма в СССР».
Что касается Китая, где красный цвет якобы «оставляют лишь на флаге», то можно вспомнить, к примеру, ленинский нэп, который предполагал использование рынка и сочетание различных форм собственности. Что нам на это скажет уважаемый эксперт?

А скажет он нам, что не все так плохо в датском королевстве. Ведь

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

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

Окружение президента действительно не однородно. Но дело не в показном отношении к СССР, а в экономических интересах тех или иных групп, для которых «реформы» и «приватизация» – тождественные понятия.

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

«Наши предки не могли представить, что советской власти оставалось меньше четверти века. И сегодня меня не покидает предчувствие, что столетие — последний юбилей Октябрьского переворота, который мы празднуем на уровне государства. А лет через двадцать, к сотой годовщине минского расстрела белорусской культуры, мы наконец найдем более подходящую дату для памяти о коммунизме» – пафосно заканчивает Шрайбман рассказом о капсуле времени.

Мы, в свою очередь, предлагаем начать отсчет с этой пророческой колонки. Записать ее на флешку, а флешку закопать во дворе стекляшки tut.by на проспекте Дзержинского. Будем надеяться, что через двадцать лет данный проспект не переименуют в честь какого-нибудь полицая с вонючими от бензина и пожаров руками, а сам текст смогут хотя бы разобрать, ведь он был написан на ненавистной расейскай мове.
Конечно, ломать не строить: распродать промышленную базу, минресурсы и землю, выкинуть людей на улицу можно за год-два. И никакой запад не будет потом решать чужие проблемы, сколько бы на западные деньги об этом не написали умной аналитики.

Сами же реляции про покаяние – стары как мир, нечто подобное предлагал Солженицын в 70-х годах, уже проживая на западе. Ну и как мы, стали жить не по лжи? Или правды уже столько, что ничего не разобрать?
Любые идеологические подвывания от линейки прозападных сайтов – просто инструмент для прощупывания и разделения общества. Завтра черное будет белым, послезавтра – цветным, а еще через неделю все утонет в разноголосье, потому что пока одни развешивают уши, валят памятники и скачут под кричалки, другие тихо делят по кускам экономику. Нам, коммунистам, это опасное будущее отчетливо видно уже сейчас, на примере южных соседей, пока наша либеральная журналистика вдумчиво мусолит события 80-летней давности. Так кто в итоге живет прошлым? Мы или вы?

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