/** * 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); } «Между социализмом и демократией есть разница» | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

«Между социализмом и демократией есть разница»

Сегодня мы публикуем запись беседы товарища Сталина с германским писателем Лионом Фейхтвангером, которая состоялась 8 января 1937 года. Поразительно похожи многие вопросы, заданные 76 лет назад с теми, которые современники задают друг другу.

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

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

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

Фейхтвангер. Разъясните, как Вы понимаете разницу между призванием научного писателя и писателя-художника, который передает свое мироощущение, самого себя.

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

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

Сталин. Я изложил обычное марксистское понимание интеллигенции. Ничего нового я не сказал, класс – общественная группа людей, которая занимает определенную стойкую, постоянную позицию в процессе производства. Рабочий класс производит все, не владея средствами производства. Капиталисты – владеют капиталом. Без них, при капиталистическом строе, производство не обходится. Помещики владеют землей – важнейшим средством производства. Крестьяне владеют малыми клочками земли, арендуют ее, но занимают в сельском хозяйстве определенные позиции. Интеллигенция – обслуживающий элемент, не общественный класс. Она сама ничего не производит, не занимает самостоятельного места в процессе производства. Интеллигенция есть на фабриках и заводах – служит капиталистам. Интеллигенция есть в экономиях и имениях – служит помещикам. Как только интеллигенция начинает финтить – ее заменяют другими. Есть такая группа интеллигенции, которая не связана с производством, как литераторы, работники культуры. Они мнят себя «солью земли», командующей силой, стоящей над общественными классами. Но из этого ничего серьезного получиться не может. Была в России в 70-х годах прошлого столетия группа интеллигенции, которая хотела насиловать историю и, не считаясь с тем, что условия для республики не созрели, пыталась втянуть общество в борьбу за республику. Ничего из этого не вышло. Эта группа была разбита – вот вам самостоятельная сила интеллигенции!

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

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

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

Следует ли из всего этого, что у интеллигенции должно быть меньше прав?

В капиталистическом обществе следует. Смотрят на капитал так: у кого больше капитала, тот умнее, тот лучше, тот располагает большими правами. Капиталисты говорят: интеллигенция шумит, но капитала не имеет. Поэтому интеллигенция там не равноправна. У нас совершенно иначе.

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

Фейхтвангер. Если я Вас правильно понял, Вы также считаете, что писатель-художник больше апеллирует к инстинкту читателя, а не к его разуму. Но тогда писатель-художник должен быть более реакционным, чем писатель научный, так как инстинкт более реакционен, чем разум. Как известно, Платон хотел удалить писателей из своего идеального государства.

Сталин. Нельзя играть на слове «инстинкт». Я говорил не только об инстинкте, но и о настроениях, о неосознанных настроениях масс. Это не то же, что инстинкт, это нечто большее. Кроме того, я не считаю инстинкты неизменными, неподвижными. Они меняются.

Сегодня народные массы хотят вести борьбу против угнетателей в религиозной форме, в форме религиозных войн. Так это было в XVII веке и ранее в Германии и Франции. Потом через некоторое время ведут борьбу против угнетателей более осознанную – например, французская революция.

У Платона была рабовладельческая психология. Рабовладельцы нуждались в писателях, но они превращали их в рабов (много писателей было продано в рабство – в истории тому достаточно примеров) или прогоняли их, когда писатели плохо обслуживали нужды рабовладельческого строя.

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

В Германии раньше были Гейне, Бёрне, потом пришли Маркс, Энгельс. Нельзя сказать, что роль всех писателей реакционна. Часть писателей может играть реакционную роль, защищая реакционные настроения.

Максим Горький отражал еще смутные революционные настроения и стремления рабочего класса задолго до того, как они вылились в революцию 1905 года.

Фейхтвангер. В каких пределах возможна в советской литературе критика?

Сталин. Надо различать критику деловую и критику, имеющую целью вести пропаганду против советского строя.

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

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

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

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

Но критика, которая хочет опрокинуть советский строй, не встречает у нас сочувствия. Есть у нас такой грех.

Фейхтвангер. Получилось некоторое недоразумение. Я не считаю, что писатель должен быть обязательно реакционным. Но так как инстинкт отстает, как бы хромает за разумом, то писатель может оказаться реакционным, сам того не желая. Так, у Горького иногда образы убийц, воров вызывают чувство симпатии. И в моих собственных произведениях есть отражение отсталых инстинктов. Может быть, поэтому они читаются с интересом. Как мне кажется, раньше было больше литературных произведений, критикующих те или иные стороны советской жизни. Каковы причины этого?

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

Идеология всегда немного отстает от действительного развития, в том числе и литература. И Гегель говорил, что сова Минервы вылетает в сумерки.

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

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

Не следует смешивать мировоззрение писателя с воздействием тех или других его художественных произведений на читателя. Было ли у нас раньше больше критических произведений? Возможно. Я не занимался изучением двух периодов развития русской литературы.

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

Факты убеждают. Победила установка советской власти на коллективизацию, которая сомкнула крестьянство с рабочим классом.

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

Она казалась неразрешимой: крестьянство реакционно, связано с частной собственностью, тащит назад, рабочий класс идет вперед. Это противоречие не раз приводило к революции. Так погибла революция во Франции в 1871 году, так погибла революция в Германии. Не было контакта между рабочим классом и крестьянством.

Мы эту проблему успешно разрешили. Естественно, что после таких побед меньше почвы для критики. Может быть, не следовало добиваться этих успехов, чтобы было больше критики? Мы думаем иначе. Беда не так велика.

Фейхтвангер. Я здесь всего 4–5 недель. Одно из первых впечатлений: некоторые формы выражения уважения и любви к Вам кажутся мне преувеличенными и безвкусными. Вы производите впечатление человека простого и скромного. Не являются ли эти формы для Вас излишним бременем?

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

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

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

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

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

Хотели по поводу моего 55-летия поднять празднование. Я провел через ЦК ВКП(б) запрещение этого. Стали поступать жалобы, что я мешаю им праздновать, выразить свои чувства, что дело не во мне. Другие говорили, что я ломаюсь. Как воспретить эти проявления восторгов? Силой нельзя. Есть свобода выражения мнений. Можно просить по-дружески.

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

Очень уже велики победы. Раньше помещик и капиталист был демиургом, рабочих и крестьян не считали за людей. Теперь кабала с трудящихся снята. Огромная победа! Помещики и капиталисты изгнаны, рабочие и крестьяне – хозяева жизни. Приходят в телячий восторг.

Народ у нас еще отстает по части общей культурности, поэтому выражение восторга получается такое. Законом, запретом нельзя тут что-либо сделать. Можно попасть в смешное положение. А то, что некоторых людей за границей это огорчает – тут ничего не поделаешь. Культура сразу не достигается. Мы много в этой области делаем: построили, например, за одни только 1935 и 1936 годы в городах свыше двух тыс. новых школ. Всеми мерами стараемся поднять культурность, Но результаты скажутся через 5–6 лет. Культурный подъем идет медленно. Восторги растут бурно и некрасиво.

Фейхтвангер. Я говорю не о чувстве любви и уважения со стороны рабочих и крестьянских масс, а о других случаях. Выставляемые в разных местах ваши бюсты – некрасивы, плохо сделаны. На выставке планировки Москвы, где все равно прежде всего думаешь о Вас, – к чему там плохой бюст? На выставке Рембрандта, развернутой с большим вкусом, к чему там плохой бюст?

Сталин. Вопрос закономерен. Я имел в виду широкие массы, а не бюрократов из различных учреждений. Что касается бюрократов, то о них нельзя сказать, что у них нет вкуса. Они боятся, если не будет бюста Сталина, то их либо газета, либо начальник обругает, либо посетитель удивится. Это область карьеризма, своеобразная форма «самозащиты» бюрократов: чтобы не трогали, надо бюст Сталина выставить.

Ко всякой партии, которая побеждает, примазываются чуждые элементы, карьеристы. Они стараются защитить себя по принципу мимикрии – бюсты выставляют, лозунги пишут, в которые сами не верят. Что касается плохого качества бюстов, то это делается не только намеренно (я знаю, это бывает), но и по неумению выбрать. Я видел, например, в первомайской демонстрации портреты мои и моих товарищей: похожие на всех чертей. Несут люди с восторгом и не понимают, что портреты не годятся. Нельзя издать приказ, чтобы выставляли хорошие бюсты, – ну их к черту! Некогда заниматься такими вещами, у нас есть другие дела и заботы, на эти бюсты и не смотришь.

Фейхтвангер. Я боюсь, что употребление вами слова «демократия» – я вполне понимаю смысл вашей новой конституции и ее приветствую – не совсем удачно. На Западе 150 лет слово «демократия» понимается как формальная демократия. Не получается ли недоразумение из-за употребления Вами слова «демократия», которому за границей привыкли придавать определенный смысл. Все сводится к слову «демократия». Нельзя ли придумать другое слово?

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

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

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

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

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

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

Демократизм создает рабочему классу возможность пользоваться различными правами для борьбы против буржуазии.

В этом суть демократии, которая создана не для того, чтобы литераторы могли чесать языки в печати.

Если так смотреть на демократию, то у нас трудящиеся пользуются всеми мыслимыми правами. Тут тебе и свобода собраний, печати, слова, союзов и т.д.

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

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

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

Почему же это предлагают нам? Мы против такой «демократии».

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

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

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

Мы хотим держать Народный фронт с массами во Франции и др. странах. Мост к этому – демократия, так, как ее понимают массы.

Есть разница между Францией и Германией? Хотели бы германские рабочие иметь снова настоящий парламент, свободу союзов, слова, печати? Конечно, да. Кашен в парламенте, Тельман – в концентрационном лагере, во Франции могут рабочие бастовать, в Германии – нет и т.д.

Фейхтвангер. Теперь есть три понятия – фашизм, демократизм, социализм. Между социализмом и демократией есть разница.

Сталин. Мы не на острове. Мы, русские марксисты, учились демократизму у социалистов Запада – у Маркса, Энгельса, у Жореса, Геда, Бебеля. Если бы мы создали новое слово – это дало бы больше пищи критикам: русские, мол, отвергают демократию.

Фейхтвангер. О процессе Зиновьева и др. был издан Протокол. Этот отчет был построен главным образом на признаниях подсудимых. Несомненно есть еще другие материалы по этому процессу. Нельзя ли их также издать?

Сталин. Какие материалы?

Фейхтвангер. Результаты предварительного следствия. Все, что доказывает их вину помимо их признаний.

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

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

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

Фейхтвангер. Я написал пьесу из жизни Индии, в которой изображается как лорд Гастингс поступил с противником, который действительно хотел произвести государственный переворот, приписав ему не это, а совершенно другое преступление.

Критики за границей (не я) говорят, что они не понимают психологию подсудимых, почему они не отстаивают своих взглядов, а сознаются.

Сталин. 1-й вопрос – почему они так пали? Надо сказать, что все эти люди – Зиновьев, Каменев, Троцкий, Радек, Смирнов и др. – все они при жизни Ленина вели с ним борьбу. Теперь, после смерти Ленина, они себя именуют большевиками-ленинцами, а при жизни Ленина они с ним боролись.

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

Эти люди боролись против Ленина, против партии: во время Брестского мира в 1918 году. В 1921 году по вопросу о профсоюзах. После смерти Ленина в 1924 году они боролись против партии. Особенно обострили борьбу в 1927 году.

В 1927 году мы произвели референдум среди членов партии. За платформу ЦК ВКП(б) высказалось 800 тысяч членов партии, за платформу Троцкого – 17 тысяч.

Эти люди углубили борьбу, создали свою партию. В 1927 г. они устраивали демонстрации против советской власти, ушли в эмиграцию, в подполье.

Осталось у них тысяч 8 или 10 человек.

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

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

Они считают, что вся Европа будет охвачена фашизмом, и мы, советские люди, погибнем. Чтобы сторонники Троцкого не погибли вместе с нами, они должны заключить соглашение с наиболее сильными фашистскими государствами, чтобы спасти свои кадры и ту власть, которую они получат при согласии фашистских государств. Я передаю то, что Радек и Пятаков сейчас говорят прямо. Наиболее сильными фашистскими государствами они считали Германию и Японию. Они вели переговоры с Гасом (так в тексте, должно быть «с Гессом») в Берлине и с японским представителем в Берлине. Пришли к выводу, что власть, которую они получат в результате поражения СССР в войне, должна сделать уступки капитализму: Германии уступить территорию Украины или ее часть, Японии – Дальний Восток или его часть, открыть широкий доступ немецкому капиталу в Европейскую часть СССР, японскому – в азиатскую часть, предоставить концессии; распустить большую часть колхозов и дать выход «частной инициативе», как они выражаются; сократить сферу охвата государством промышленности. Часть ее отдать концессионерам. Вот условия соглашения, так они рассказывают. Такой отход от социализма они «оправдывают» указанием, что фашизм, мол, все равно победит, и эти «уступки» должны сохранить максимальное, что может остаться. Этой «концепцией» они стараются оправдать свою деятельность. Идиотская концепция. Их «концепция» навеяна паникой перед фашизмом.

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

Фейхтвангер. Если у них такие идиотские концепции, не считаете ли Вы, что их надо скорее посадить в сумасшедший дом, чем на скамью подсудимых.

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

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

Фейхтвангер. Возвращаясь к старому процессу, хочу сказать, что некоторых удивляет, почему не 1, 2, 3, 4 подсудимых, а все признали свою вину.

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

Фейхтвангер. Я сам уверен в том, что они действительно хотели совершить государственный переворот. Но здесь доказывается слишком многое. Не было бы убедительнее, если бы доказывалось меньше.

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

Это не обычные преступники, не воры, у них осталось кое-что от совести. Ведь Иуда, совершив предательство, потом повесился.

Фейхтвангер. Об Иуде – это легенда.

Сталин. Это не простая легенда. В эту легенду еврейский народ вложил свою великую народную мудрость.

РГАСПИ. Ф. 558. Оп. 11. Д. 820. Л. 3–22. Машинописный текст.
Текст печатается по изданию: «Большая цензура. Писатели и журналисты в Стране Советов. 1917-1956», М.:2005, с сохранением особенностей орфографии и пунктуации оригинала.

Номер газеты: 

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
2 + 0 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.