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

ЛЕНИН – ИМЯ – ЗНАМЯ

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

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

ПОЧЕМУ ТАК ПРОИСХОДИТ? Чтобы лучше понять смысл основных противоречий и зигзагов современности, читайте Ленина.

Кого-то пугает своей строгостью как будто одетый в форму тёмно-синий строй томов его Полного собрания сочинений. Пока не преодолена эта оторопь, ищите тоненькие брошюры с ленинскими статьями. Абсолютное большинство работ В.И. Ленин предназначал не учёным, а рабочим, солдатам, крестьянам, имевшим к тому же весьма скромное образование. Это позднее его творчество упаковали в замечательные тома, а писал-то он чаще всего газетные статьи и брошюры. Они были предназначены для вдумчивого чтения, но чтения миллионов.

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

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

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

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

И мы находим у него ответы.

В самом начале своей деятельности он писал, что дело не в том, чтобы «повторять по памяти прежние выводы», сделанные классиками, а в том, чтобы «воспользоваться приёмами марксистского исследования для анализа новой политической ситуации» (Ленин В.И. Полн. собр. соч., Т. 7. – С. 237). В этом ключ к пониманию тех крупных поворотов, которые совершал Ленин в переломные моменты исторического развития.

«…Когда появляются большие планы, на много лет рассчитанные, находятся нередко скептики, которые говорят: где уж там нам на много лет рассчитывать, дай бог сделать и то, что нужно сейчас. Товарищи, нужно уметь соединять и то и другое; нельзя работать, не имея плана, рассчитанного на длительный период и на серьёзный успех», – так говорит нам Ленин.

В ходе политической борьбы Ленин ставил проблемы временами весьма резко, но в его полемике не было ничего личного. Приходилось бороться не только с самим собой, не только с политическими противниками, но и испытывать сильнейшее давление со стороны товарищей по партии, упрекавших Владимира Ильича то в «забвении принципов», то даже в «отходе от марксизма». Отвечая им, Ленин писал: «Если ход истории сложился иначе, чем мы ожидали, оригинальнее, своеобразнее, пестрее, то не надо «уподобляться тем «старым большевикам» которые не раз уже играли печальную роль в истории нашей партии, повторяя бессмысленно заученную формулу вместо изучения своеобразия новой живой действительности» (Там же, Т. 31. – С. 133). Таких, добавлял Ленин, «надо сдать в архив «большевистских» дореволюционных редкостей (можно назвать: архив «старых большевиков») (Там же, С. 134). «Партиец тот, – читаем мы у Владимира Ильича, – кто на деле ведёт тактическую линию партии…».

Саркастически сокрушая самовлюблённость нарциссов от революции, Ленин предупреждал: «…Погибла бы безнадёжно (и вполне заслуженно) революция, берущая всерьёз таких людей» (Там же, Т. 36. – С. 301). Он творчески подходил к решению насущных вопросов, уделяя большое внимание людям, внимательно выслушивал их мнение, выделяя при этом всё положительное и полезное для дела социализма. Ему были чужды зависть, тщеславие и индивидуализм.

При всей своей любви к теории Ленин, когда жизнь требовала перемены точки зрения, не считался ни с какими постулатами и, казалось бы, священными догмами, а руководствовался тем, что по его словам, составляет «живую душу марксизма – конкретный анализ конкретной ситуации» (Там же, Т. 41. – С. 136).

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

Сегодня нередко приходится слышать – а нужна ли была вообще Октябрьская революция? Не лучше ли было бы для России «остановиться» на Феврале. Такие рассуждения, абсурдные в отношении прошлого, имеют в идейно-политической борьбе, как правило, демагогическую цель. И противоядие против них – факты.

Несомненно, Февральская революция – крупнейшее событие в нашей отечественной истории. Но ведь это факт, что буржуазно-меньшевистское правительство не решило главных вопросов российской революции – но о мире, ни о хлебе, ни о земле. Страна скатывалась к общенациональной катастрофе. Позднее, отвергая обвинения о том, что большевики преднамеренно «залили страну кровью», Ленин говорил: «Нашёлся ли бы на свете хоть один дурак, который пошёл бы на революцию, если бы вы (т.е. меньшевики и эсеры) действительно начали социальную реформу? Почему же вы этого не сделали?» – спрашивал Ленин (Там же, Т. 40. – С. 179).

Ленин всячески стремился избежать Гражданской войны. Вскоре после корниловского мятежа большевики предложили другим социалистическим партиям компромисс: большевики не претендуют на участие в правительстве и отказались бы «от выставления немедленного требования перехода власти к пролетариату и беднейшим крестьянам, от революционных методов борьбы за это, требование». А меньшевики и эсеры составили бы без буржуазных партии правительство, «целиком и исключительно ответственное перед Советами…», и это обеспечило бы «мирное движение революции вперёд, мирное изживание партийной борьбы внутри Советов» (Там же, Т. 34. – С. 135).

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

Вильямсу принадлежат вот эти слова:

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

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

Нет нужды всем присоединяться сегодня к их точке зрения. Но и не учитывать её нельзя.
Обо всем этом ныне стоит напомнить, ибо сегодня – одни по незнанию, другие до умыслу – выхватывают из цепи событий эпизоды, факты, документы и приписывают Ленину склонность к насилию. Ленин всегда стремился до предела исчерпать возможности политических решении. «В нашем идеале нет места насилию над людьми» (Там же, Т. 30. – С. 122).Это – ленинские слова. В это надо вникнуть всем, кто по-настоящему хочет понять Ленина.

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

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

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

Ленинский стиль – это прежде всего деловитость. Как ненавидел Ильич мастеров пышных фраз, прикрывающих болтовнёй «в духе времени» свою бездеятельность! Как яростно боролся он против бюрократов и волокитчиков, что душат бумагой и параграфом всякую светлую идею, любое живое начинание! А разве перевелись такие сегодня?

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

…В своё время у меня сложились такие строки:

Я хотел бы увидеть Ленина –
Не сквозь годы, не вдалеке,
Вне спокойствия мавзолейного,
С кепкой, стиснутой в кулаке!

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

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

«За нами дело справедливости», – писал Ленин непосредственно после победы Октября. Речь идёт прежде всего об усилении внимания к человеку, условиям его труда, быта, досуга.
Любое решение, любой шаг в практической деятельности должны оцениваться в первую очередь с точки зрения того, что они дают людям, каковы их социальные последствия. Никакие ссылки на объективные обстоятельства не могут служить оправданием невнимания к нуждам людей. Нет и не может быть интересов дела, чуждых интересам человека труда.

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

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

Ныне исключительно важно действовать, как учил Ленин, действовать силой авторитета, силой энергии, бόльшей опытности, бόльшей разносторонности и талантливости. Компетентность, чувство нового, принципиальность, честность, справедливость – главная мера оценки кадров – суть требований к стилю и методам работы. Этот стиль мы называем ленинским. Вспомним, каким был сам Ленин. Пример Ленина – это лучший пример. «Необыкновенный народный вождь» – так писал о Владимире Ильиче Ленине в октябрьские дни 1917 года Джон Рид. И сегодня Ленин с нами.

***

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

Господа «реформаторы», наберитесь мужества хотя бы на один миг, оглянитесь на ХХ век. Ведь это следуя замыслам и предначертаниям Ленина Россия превратилась в сверхдержаву.
Благодаря социализму в стране удалось разрешить наиболее сложные социальные и национальные проблемы. Социализм сумел обеспечить всем гражданам страны право на труд, жильё, бесплатное образование и здравоохранение. Какие достижения вы предъявите будущим поколениям соотечественников? Господа провокаторы, неужели вы не понимаете, что убрав тело Ленина из Мавзолея, уничтожив символ социализма, вам не удастся уничтожить идею социализма и вычеркнуть образ Ленина из сердец миллионов россиян и нероссиян.

Обращение, к ленинскому наследию как источнику научного обобщения в теории и системе ориентиров, а также внимательное и глубокое изучение ленинского политического опыта помогают правильно понять современный мир. Как предвидел Ленин, в будущем «дело пойдёт сложнее и быстрее, темп развития будет более бешеным, и повороты будут более сложными». Автор новейшей британской биографии В.И. Ленина профессор Роберт Сервис утверждает: «Сегодня мы живём в эпоху глобального капиталистического триумфализма. Людям кажется, что это теперь уже постоянная и вечная система, что она – навсегда. Но в действительности капитализм, при всех своих заявках на массовую популярность, так и не смог преодолеть того, что критиковалось и Марксом, и Лениным, – порочной цикличности мирового экономического развития. Через несколько лет мир рискует столкнуться с ужасающей депрессией. Вполне возможно, что те, кто беззаботно голосует сегодня за правые силы, переместят свои симпатии на левый фланг. Вот тогда-то мы, возможно, и увидим, что кажущееся спокойствие постиндустриального образца – отнюдь не финал всеобщей истории» (См.: «Правда», 2000, 20 апреля). Но где гарантия, что в момент «интернетовско-биржевого краха» не найдутся, как и прежде, псевдоаналитики, которые заголосят, что резкий поворот миллиардов землян к идеям социализма – ничем не обоснованный абсурд и массовое помешательство? Заговорят, иными словами, о «случайном капризе истории» – точно так же, как в своё время в откликах на «большевистский переворот» (?!).

Глубинная мотивация ленинских действий была подчас не беспристрастно-расчётливой, а личностной, эмоциональной. Вот что говорит о Владимире Ильиче его идейный противник Николай Бердяев: «Революционность Ленина имела моральный источник, он не мог вынести несправедливости угнетения, эксплуатации. Он был бескорыстный человек».

Лев Кассиль сказал когда-то: «С именем Ленина надо обращаться очень бережно, не поминать его по поводу дел пустяковых, несерьёзных. Ленин – это ведь наше знамя. И потому как знамя хранится на самом почётном месте, имя-знамя Ленин мы бережём в самом заветном уголке своего сердца».

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

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

***

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

Дискуссии вокруг Ленина – явления нормальные.

Устраивать же крикливые потасовки вокруг Ленина – нелепо.

У Ленина были ошибки и грехи.

Историю не перепишешь.

Ленин был.

Ленин есть.

И вовсе нелишне обратиться к нему как его убеждённым последователям, так и не менее рьяным ниспровергателям.
Historia est magistra vitae!

Владимир ЕГОРЫЧЕВ

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

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