/** * 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); } Социализм и мировые перспективы | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Социализм и мировые перспективы

В середине 2010-ых годов мировая капиталистическая система дает один сбой за другим: или, по крайней мере, так может показаться. Войны на Ближнем Востоке, украинский кризис, дальнейшее обнищание народов стран Третьего мира, усиление националистических настроений в Европе – все это части одной головоломки. Историческая форма капитализма, во время которой нам посчастливилось жить, перестала отвечать экономическим и политическим потребностям правящих классов, и тем более не в состоянии сделать хоть что-то с растущим уровнем бедности и неравенства в мире.

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

Социализм XXI века: старые новые реформисты

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

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

В начале 1990ы-х годов господствующий класс ликовал: их «конец истории» наконец-таки настал. Капиталисты обещали новый мир, мир благоденствия и мира, без каких-либо кризисов.

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

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

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

На деле все эти призывы к «обновлению» есть ни что иное как старый добрый реформизм. И все аргументы «социалистов XXI века» сводятся к идеям утопистов вроде Оуэна и Прудона, которых уже давно разоблачили сами Маркс и Энгельс.

Все эти «новые социализмы» без классовой борьбы и необходимости экспроприации на поверку оказываются идеями утопистов в новой обертке. И если в начале XIX века идеи утопистов действительно были прогрессивными, то для новоявленных «социалистов XXI века» повторять уже много раз опровергнутые историей мантры как минимум нечистоплотно.

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

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

Классовое самосознание: последствия кризиса

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

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

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

Нынешний кризис поставил крест на идеологическом наступлении буржуазии, на неолиберальной теории. Ведь, согласно этой теории, кризис 2007-2008 годов не мог произойти. И теперь буржуазные идеологи (так же известные, как «экономисты») прямо говорят, что им нечего предложить. Буржуазия паникует: они не понимают причины кризиса и не видят способов выхода из него. Одни говорят: «нужно уменьшить уровень дефицита, только так можно выйти из кризиса», другие – «мы должны уменьшить госрасходы, так мы сможем запустить рост экономики».

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

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

Идеи: возможны ли альтернативы марксизму?

Идеи Маркса буржуазные идеологи (и их союзники из стана ревизионистов) подвергают сомнению со всех сторон. Ирония состоит в том, что Фридрих Энгельс уже ответил на большую часть аргументов критиков в Анти-Дюринге. Более того, несмотря на потуги этих идеологов, в мире нарастают опасные для буржуазии настроения: разочарованные в буржуазной политэкономии люди все чаще присматриваются к марксизму как к реальной альтернативе. И действительно, только марксизм может дать необходимые ответы на комплексные вопросы современности.

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

Марксизм – это мощнейший инструментарий, сумма знаний, посредством которой можно объяснять взаимосвязь событий и процессов в обществе. Ни один комплекс идей еще не смог превзойти марксизм. Без теории, адекватной реальности, дать ответы и, что гораздо важнее, руководство к действию нельзя. И реформистская демагогия, несмотря ни на что, не сможет предложить адекватной альтернативы.

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

После СССР: белорусский вариант

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

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

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

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

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

Россия и ЕС: неизбежность конфликта

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

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

Европа также претерпела серьезные изменения. Еврооптимизм 1990-ых и начала 2000-ых годов сменился ростом национализма и евроскептицизма; экономические проблемы европейского юга и провал интеграции Румынии, Болгарии и Прибалтики (провал для населения этих стран, европейские элиты получили то, что хотели – рабочую силу, рынки сбыта) изменил реальное положение дел в ЕС. Германия стала неоспоримым гегемоном, и интересы немецкой буржуазии уже сейчас вполне можно отождествлять с интересами ЕС. И в интересах Германии нет места нынешней России, которая пытается оспаривать роль, уготованную ей европейской буржуазией.

Коммунисты: революцию не отменить не получиться

Марксизм не нужно каким-то образом менять, переделывать и реформировать. Им нужно пользоваться. Да, ситуация серьезнейшим образом изменилась со времен Ленина или Маркса, но сегодняшняя ситуация по своей сути до боли похожа на начало XX века. Противоборство империалистов принимает разные формы, но ее основа не меняется. Государство всеобщего благоденствия в Европе мертво, СССР больше нет, Китай является социалистической страной настолько же, насколько и США. Буржуазия, теперь уже в форме транснациональных корпораций и международных институтов, продолжает эксплуатацию рабочих всего мира. Колониализм остался на месте – теперь вместо белых колонизаторов богатства народов распродают местные элиты. Тайная дипломатия вершит судьбы мира, а гласность и демократия является лишь ширмой для народных масс. В попытках перетянуть одеяло на себя капиталисты раз за разом выпускают из бутылки джинов, с которыми они могут и не справиться: фашизм, шовинизм, разжигание конфликтов.

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

Пора начать прямо говорить о мировых противоречиях и их причинах. Не пытаться находить новые полумеры и открещиваться (хоть часто и не на словах) от уже давно предложенных классиками решений. Бескомпромиссно заявлять: да, нужна революция. Не очередная отсрочка неминуемой катастрофы, а реальные перемены.

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

Нужны не призывы к пацифизму и взаимопониманию: да, возможно мы сможем лечить таким образом симптомы болезни – но что будет дальше?

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

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

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

Александр Кратковский

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

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