/** * 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); } Роль И.В. Сталина в подготовке СССр к отпору фашистской германии | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Роль И.В. Сталина в подготовке СССр к отпору фашистской германии

Хочу на страницах нашей партийной газеты оценить роль Иосифа Виссарионовича Сталина накануне Великой Отечественной войны и в ее начальном периоде, отделить вымыслы от правды.

И.В.Сталин, безусловно, готовил страну к отпору фашистской Германии на Западе и милитаристской Японии на Востоке. Это в достаточной мере подтверждается следующими фактами и показателями.
Первый и второй пятилетние планы были перевыполнены в промышленности. Это выразилось в увеличении в 2 раза в первой и в 2,2 раза во второй пятилетке. К июню 1941 года валовая продукция промышленности составила уже 86% от спланированного роста, а грузооборот железнодорожного транспорта на 90% от уровня, намеченного на конец 1942 года. К началу войны в восточных районах страны было введено в эксплуатацию 2900 но¬вых заводов, фабрик, шахт, рудников и других промышленных предприятий, в том числе и предприятий-дублёров. Здесь сооружались три четверти всех новых доменных печей, вторая мощная нефтяная база, металлургические за¬воды, предприятия тяжёлой индустрии, автомобильные и тракторные заводы, предприятия оборонного комплекса.
Если к 1939 году в Красной Армии было 2 млн. человек, то к ноябрю 1942 года 6030 тыс. человек, в т.ч. на Ленинградском направлении – 1100 тыс., на Минско-Московском – 1050 тыс., на Юго-Западном и Сталинградском 850 тыс., на Закавказском – 1млн человек. Если к 1939 году Красная Армия не имела танков Т-34, то к июню 1941 года их было 1465 единиц. Только в 1940 году было сформировано 42 военных училища. Численность курсантов с 30 тыс. человек была доведена до 108 тыс. человек. К началу Великой Отечественной войны численность многих стрелковых дивизий с 5-6 тыс. человек была доведена до 8-9 тыс. человек. Что же касается стрелковых дивизий Западного Особого военного округа, то их численность к 22 июня 1941 года была доведена до 10 и более тысяч человек.
К 1942 году на советско-германском фронте действовало 12 фронтов, одна оборонительная зона и одна отдельная армия; орудий и миномётов 77180 единиц, танков – 7350 единиц; самолётов – 3032 единиц. Что касается приграничных военных округов, то в их составе к 22 июня 1941 года насчитывалось 2,9 млн. человек в 170 дивизиях (стрелковых – 103, танковых – 40, моторизованных – 20, кавалерийских – 7), 38,5 тыс. орудий и миномётов, 6 тыс.танков, в т.ч. 1475 новых (Т-34 и КВ), 7 тыс. самолётов, в т.ч. 1590 новых.
Освободительные походы Красной Армии в 1939-1940 годах с целью освобождения западных областей, насильственно отторгнутых у СССР, также способствовали подготовке страны к отражению агрессии со стороны Германии. Освобождение западных областей Белоруссии, Украины, Бессарабии и Северной Буковины отодвинуло границу СССР на Западе на 200-250км. Нетрудно себе представить, что было бы, если бы войска Вермахта начали вторжение в СССР с рубежей старой государственной границы?
Политическим элементом подготовки страны к отражению агрессии со стороны Германии, явился и удар СССР по Финляндии в период с 30 ноября 1939 года по 13 марта 1940 года. Граница между СССР и Финляндией отодвинулась от 40 до 140 км, был предотвращён обстрел тяжёлой артиллерии немцев Ленинграда, что позволило городу выдержать блокаду.
В плане подготовки страны к отражению агрессии со стороны фашистской Германии под руководством Сталина были осуществлены и другие не¬обходимые мероприятия.
В своей книге «Воспоминания и размышления» (том 1, стр.194) Маршал Советского Союза Г.К.Жуков писал: «И.В.Сталин сам вёл большую работу с оборонными предприятиями, хорошо знал десятки директоров заводов, парторгов, главных инженеров, встречался с ними, добиваясь с присущей ему настойчивостью выполнения намеченных планов».
В плане подготовки страны к отражению агрессии недостатки и недоработки со стороны Сталина – это результат отсутствия времени на подготовку страны к отражению агрессии со стороны фашистской Германии.
Оценка «Договора о ненападении между Германией и Советским Союзом» от 23 августа 1939 года
Основной инициатор и разработчик этого документа – министр иностранных дел СССР В.М.Молотов, имевший встречи и беседы с руководством Германии. Активное участие в подготовке этого документа принимали советский поверенный в делах в Германии Г.А.Астахов и полномочный представитель СССР в Англии И.М.Майский, который вели активные переговоры с должностными лицами Германии и Великобритании на этапе подготовки договора. По уполномочию Правительства СССР «Договор о ненападении между Германией и Советским Союзом» подписал В.М.Молотов, а за Правительство Германии И.Риббентроп. В обиходе этот документ был назван как «Пакт Молотова-Риббентропа».
С момента окончания Второй мировой войны и по день настоящий этот договор подвергается оценке и различной трактовке в зависимости от конъюнктуры дня. Одним словом, всё «вокруг да около». Следует сказать, что оценки этого документа как положительные, так и отрицательные.
Положительные моменты договора и его преимущества состоят в следующем. Обе стороны обязались воздерживаться от всякого насилия в отношении друг друга, как отдельно, так и совместно с другими державами. СССР и Германия обязались в случае возникновения споров или конфликтов разрешать их исключительно мирным путём в порядке дружественного обмена мнениями или работой созданной комиссии по урегулированию конфликта. Договор позволил решить вопросы, связанные с освобождением западных районов Украины, Белоруссии, Бессарабии и Северной Буковины, присоединить к территории СССР Прибалтику, а также упорядочить западную границу СССР с Польшей, что имело важное политическое значение. Договор кладет конец вражде между Германией и СССР, устраняет угрозу войны с Германией, а в случае её угрозы даёт СССР передышку и время на подготовку страны к отражению агрессора.
Советско-германский пакт имел много отрицательных сторон. Он нанёс, по мнению Запада и некоторых руководителей и политических кругов в СССР, огромный урон международному престижу Советского государства, развязал руки Германии для агрессии против западных стран и Англии. Эти же силы осудили секретный протокол к договору. Утверждалось и утверждается, что СССР, заключив договор с фашистской Германией, нарушил нормы международного права, в секретном порядке поделил с Германией «сферы интересов», осуществил территориально-политическое переустройство областей, входивших в состав других государств. Эти и другие отрицательные стороны договора стали, я бы сказал, общепризнанными такими деятелями, как М.Горбачёв, Б.Ельцин, общественностью государств постсоветского пространства и, конечно же, Запада и фальсификаторов советской историографии Второй мировой и Великой Отечественной войн.
В этой связи хотелось бы обратить внимание читателя на следующие моменты:
Первый. Почему И.В.Сталин, не являясь инициатором «Договора о ненападении между Германией и Советским Союзом» от 23 августа 1939 года согласился на его заключение и санкционировал В.М.Молотову его подписание?
Второй. Почему И.В.Сталин, зная, что заключение договора вызовет отрицательную реакцию со стороны государств бывшей Антанты, пошел на его заключение и заключение секретного протокола?
Отвечая на первый вопрос, хотел бы отметить, безусловно, «не влезая в душу и голову Сталина», что к моменту подписания договора позиции Англии, Франции, Италии, Японии, США и других государств не были ясны. Руководители этих государств не проясняли своих позиций, проявляли беспомощность и слабость, шли на многократные уступки фашистской Германии, тем самым усиливая её мощь и агрессивность. В этих усло¬виях И.В.Сталин не мог положиться на Англию, Францию, Польшу, считал, что на данном этапе СССР в союзе с ними не сможет вернуть отторгнутые от Советского государства западные области, не сможет обеспечить себе передышку между миром и войной.
Германия в Европе до 1940 года была сильным противником. Сталин боялся Германии, предвидя, что рано или поздно Германия нападёт на СССР. Необходимо было выиграть время. Сталин шёл на союз с сильным, агрессивным противником, чтобы хотя бы на время его нейтрализовать.
Отвечая на второй вопрос, считаю, что к началу 1940 года Сталин сделал правильный вывод. Англия и Франция стремились направить фашистскую агрессию на Восток, против СССР, считая, что «там видно будет, что делать». В этих условиях Сталин принял правильное и политически выверенное решение: направить германскую агрессию на Запад. Я так пишу без всякого трепета и ужаса. Сталин – умница. Спрашивается, почему он должен был проявлять заботу о «дерущихся империалистических странах», готовых со «звериной ненавистью» перегрызть друг другу глотки. Эти обстоятельства диктовали Сталину основные цели и задачи для страны: выиграть время, оттянуть неизбежную войну или даже сделать невозможное - избежать войны.
В начале 1939 года правительство Великобритании заявило, что окажет Польше в случае нападения на нее Германии «всю поддержку, которая в его силах». Но, после того, как Гитлер 1-го сентября начал наступление на Польшу, Великобритания, кроме заявления о вступлении в войну не предприняла ничего, чтобы оказать военную помощь Польше в борьбе с фашистской агрессией и воспротивиться дальнейшему продвижению войск Вермахта к границам СССР. По этому поводу крупный английский военный историк и теоретик Б.Лиден Гарт в своей книге «Вторая Мировая война» (Воениздат МО СССР, Москва, 1976, стр. 19) писал: «В действительности гарантии Польше были преднамеренно обманными, провоцировали нападение гитлеровцев на Польшу, служили целям тех реакционных кругов западных держав, которые стремились таким путём вывести Вермахт на рубежи советских границ, столкнуть Германию и СССР». Вот она – основополагающая оценка обстановки, являвшаяся базовой для принятия Сталиным единственно верного решения. Другого выбора для СССР было не дано. Любым способом оттянуть войну или по возможности её предотвратить – вот главная политическая и военная цель подписания «Договора о ненападении между Германией и Советским Союзом» от 23 августа 1939 года.
О мобилизации
Сталина обвиняют в том, что он не провел в стране заблаговременно мобилизацию. Я бы несколько сгладил это обвинение. Вспомним теорию этого вопроса. «Мобилизация – комплекс мероприятий по переводу на военное положение Вооруженных Сил, экономики и государственных институтов страны (общая мобилизация) или какой-либо их части (частичная мобилизация). Может проводиться открытым или скрытым способом...» («Военный энциклопедический словарь» - Москва, Военное издательство, 1983, стр. 452).
Оценим решения и действия И.В. Сталина исходя из требований теории мобилизации.
Первое. Сталин провёл частичную открытую мобилизацию. Обратимся к мемуарам Г.К, Жукова: «В середине марта 1941 года С.К. Тимошенко и я просили разрешения И.В, Сталина призвать приписной состав запаса для стрелковых дивизий... В конце марта было решено призвать пятьсот тысяч солдат и сержантов и направить их в приграничные военные округа для до-укомплектования с тем, чтобы довести численность стрелковых дивизий хотя бы до 8 тысяч человек». И далее Маршал пишет: «Несколькими днями позднее было разрешено призвать триста тысяч приписного состава для уком-плектования специалистами укрепрайонов и других родов войск Вооруженных Сил. Итак, накануне войны Красная армия получила дополнительно около 800 тысяч человек. Сборы планировалось провести в мае-октябре 1941 года. В итоге... из ста семидесяти дивизий и двух бригад – девятнадцать дивизий были укомплектованы до 5-6 тысяч человек, 144-й дивизии имели численность по 8-9 тысяч человек». ( Г«К. Жуков «Воспоминания и размышления», том 1, стр.199) Как видим, Маршал Жуков подтверждает факт проведения в стране частичной открытой мобилизации.
Что касается Белорусского Особого военного округа, то здесь численность стрелковых дивизий в ходе частичной мобилизации была доведена до 10 и более тысяч личного состава (13 дивизий из 24-х имеющихся в округе по состоянию на 22 июня 1941 года -Авт.)
Накануне войны правительство СССР, Наркомат обороны и Генеральный Штаб под руководством И.В. Сталина провели ряд важнейших мероприятий общей, скрытой мобилизации.
Второе. В восточных районах страны создавались предприятия-дублёры по ряду отраслей машиностроения, создавалась вторая мощная нефтяная база между Волгой и Уралом, вводились в строй металлургические заводы в Забайкалье, на Амуре, на Урале крупнейшие предприятия металлургии в Средней Азии, тяжёлой индустрии на Дальнем Востоке, автосборочные заводы, алюминиевые комбинаты и трубопрокатные предприятия.
Третье. Из глубины страны в скрытом порядке по плану штатного переподчинения в приграничные военные округа выдвигались войска. Решение и выдвижение глубинных дивизий к государственной границе СССР на Западе И.В.Сталиным было принято в первой половине мая 1941 года. С Урала в район Великих Лук (в подчинение командующего Киевским Особым военным округом) выделялась 22-я армия. Из Приволжского военного округа в район Гомеля (в подчинение командующего Белорусским военным округом) выдвигалась 21-я армия. Из Северо-Кавказского военного округа в район Белой Церкви выдвигалась 19-я армия. Из Забайкальского военного округа на Украину в район Шепетовки выдвигалась 16-я армия. Из Орловского военного округа на территорию Белоруссии выдвигалась 20-я армия. Всего к 22 июня 1941 года в полосе приграничных фронтов (Прибалтийский, Западный, Юго-Западный фронты – Авт.) было выдвинуто 28 дивизий. Как отмечал в своих мемуарах Маршал Г.К.Жуков, «во внутренних округах большинство дивизий содержались по сокращенным штатам, а многие стрелковые дивизии только формировались и начинали боевую подготовку».
Хотел бы отметить, что не вина Сталина в том, что ряд соединений войск некоторых приграничных военных округов и некоторых тех, которые я указал выше (глубинные дивизии) к 22 июня 1941 года не вышли в районы прикрытия (в полосы) на государственной границе и территории приграничных республик. Так, например, Маршал И.Х.Баграмян в книге «Так начиналась война» (Воениздат МО, Москва, 1977, стр.76-77) приводит такой факт: «15 июня мы подучили приказ начать с 17 июня выдвижение всех пяти стрелковых корпусов второго эшелона фронта к границе (речь идет о командовании войск Киевского Особого военного округа, в котором Баграмян в то время был начальником оперативного отдела)». Чтобы не цитировать далее Маршала, скажу, что выход этих корпусов был спланирован штабом округа для 31-го стрелкового корпуса из района Коростеня к границе к утру 28 июня; 36-го стрелкового корпуса к 27 июня; 37-го - к утру 25-го июня; 55-го - к 26 июня; 49-го - к 30 июня. По плану округа стрелковые корпуса второго эшелона, расстояние от 300-400 км до границы, должны были пройти в течение 10-15 суток. Мне думается, что командованию и штабу округа нужно было спланировать марши соединений в более сжатые сроки, с тем, чтобы в течение 5-7 суток выйти к государственной границе, т.е. к 22 июня 1941 года. Такая же ситуация с выдвижение глубинных дивизий к границе сложилась и в других приграничных военных округах. И в этом вина не Сталина, а в первую очередь вина командования этими округами.
Гитлер и Сталин:
кто начнет первым?
Гитлер целенаправленно и заблаговременно готовился к войне против СССР, к осуществлению агрессии. План агрессивной войны под кодовым на-званием «Барбаросса» был утверждён Гитлером 18 декабря 1940 года, а его разработка Генеральным Штабом Вермахта началась в июле 1940 года. План «Барбаросса» предусматривал нанести поражение СССР в быстротечной компании, готовность удара намечалась 15 мая 1941 года.
Говоря об агрессивном характере политики фашистской Германии, хотел бы также отметить и другие заблаговременные планы нападения фашистской Германии: на Чехословакию - «План Грюн» («Зеленый план»); на Францию – «Желтый план» в двух вариантах; на Скандинавские страны – план «Учения на Везере»; на Грецию и Югославию – планы «Феликс» и «Морита»; а также планы нападения на другие страны Европы. Все они были утверждены Гитлером заранее и имели значительный промежуток времени для подготовки войск Вермахта к вторжению в эти страны.
Вынашивая агрессивные планы захвата всей Европы, Гитлер одновременно заигрывал с Англией. Против нее был разработан план отвлекающей операции «Морской лев», имитирующий вторжение в Англию. Это было сделано для того, чтобы скрытно сосредоточить войска Германии на Востоке для своевременного, уже в 1941 году, начала агрессивного вторжения в СССР.
Что касается Советского Союза, то в Наркомате обороны, в Генеральном Штабе до начала Второй мировой войны не было ни одного плана захвата стран Европы. Никаких подобных планов Сталин не утверждал. Утверждения ряда авторов книг, статей, кинофильмов, фальсификаторов всех мастей – чистейшей воды выдумки.
Заблаговременно готовя планы агрессии против СССР Гитлер очень желал, чтобы первым напал Сталин. Об этом он неоднократно говорил своим генералам. Даже более, Гитлер ожидал, когда Сталин нарушит «Договор о ненападении между Германией и Советским Союзом» и спровоцирует германскую агрессию. По этом поводу Уинстон Черчилль после окончания Второй мировой войны писал, что «Германия начала войну на Востоке, неспровоцированную Советским Союзом».
Здесь я хочу вернуться к указанному выше договору. В статье 1 «Договора о ненападении между Германией и Советским Союзом» от 23 августа 1939 года было записано: «Обе Договаривающиеся Стороны обязуются воздерживаться от всякого насилия, от всякого агрессивного действия и всякого нападения в отношении друг друга как отдельно, так и совместно с другими державами» («Канун и начало войны» – Минск, БЕЛТА, 2006, стр.213 – подчеркнуто мной – Авт.) Выделенные мною слова «от всякого агрессивного действия» означают, что Советский Союз и Красная Армия не могли провести мобилизационных мероприятий, не могли осуществить передислокацию войск из глубины страны к государственной границе, начать эвакуацию заводов из приграничной зоны, провести крупномасштабные учения вблизи западной границы СССР, вывести штабы на полевые пункты управления, поднять войска по боевой тревоге и вывести их в районы прикрытия на государственной границе, а также провести целый ряд других мероприятий. Поскольку все эти меры Германией и некоторыми другими странами Запада могли бы быть восприняты как провоцирующие действия, а это в свою очередь было бы на руку Гитлеру... Он очень ждал таких действий со стороны Сталина и СССР.
Сталин, проводя ряд скрытных мобилизационных мероприятий в стране и в армии, сильно рисковал. Он понимал, что первое в мире социалистическое государство, верное учению Ленина о ведении только справедливых, освободительных войн, не могло пойти на нарушение договора с Германией, не могло совершать действий, провоцирующих Вторую мировую войну, а тем более напасть на Германию. В этих условиях Запад заявил бы, что Гитлер начал войну, спровоцированную Советским Союзом или даже обвинить СССР в развязывании Второй мировой войны, поставив Сталина на одни весы с Гитлером, что, к сожалению, сейчас и делается. Сталин, безусловно, понимал, что война с Германией неизбежна. Предполагал, что она начнётся в конце июня - начале июля 1941 года. Это подтверждается его решением с середины мая начать выдвижение на территорию приграничных военных округов армий из глубины страны. Сталин понимал, что страна должна всесторонне, форсировано готовиться к войне. Он сознавал, что обстановка с одной стороны требовала проведения мобилизационных мероприятий, о которых я писал выше. Но должен ли был Сталин провести их в полном объеме? Сталин оценил, что полностью отмобилизованные войска приграничных военных округов потерпят поражение в первой стратегической наступательной операции Вермахта, при этом мобилизационные ресурсы будут исчерпаны. Всё это сдерживало Сталина в принятии решения о проведении войск приграничных военных округов в полную боевую готовность до 22 июня 1941 года.
Маршал Советского Союза А.М.Василевский по вопросу приведения войск в боевую готовность писал: «Не буду подробно останавливаться на крайностях. Скажу лишь, что преждевременная боевая готовность Вооруженных Сил могла принести не меньше вреда, чем запоздание с ней» («Дело всей жизни» – Москва, Военное издательство, 1989, стр.94). Очевидно, Сталин сознательно ограничивал как степень боевой готовности войск приграничных военных округов, так и их задачи в начальном периоде войны.
Генерал армии В. И. Варенников в книге «Неповторимое» (т.7,стр.З0З) пишет: «Сталин, жертвуя первым стратегическим эшелоном Красной Армии, решил судьбоносную задачу для страны: сохранил военно-экономический потенциал, который смог затем обеспечить всем необходимым главные силы Красной Армии и тем самым обеспечить победу».
В совокупности все это подтверждает вывод о том, что Сталин перед лицом неминуемой агрессии Германии против СССР в самый последний момент мучительных раздумий решил, что пусть первым нападает Гитлер, та¬кое рискованное, выстраданное решение Сталин принял на основе веры в то, что в конечном итоге «Враг будет разбит!», «Победа будет за нами!»

Автор: 
Владимир Аванесов, член Белорусского Союза офицеров, член Совета Военно-научного общества, ветеран боевых действий.
Номер газеты: