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

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

Этот день мы приближали, как могли

В дни подготовки к 70-летию Великой Победы у меня состоялась встреча с членом Компартии Беларуси Героем Советского Союза полковником в отставке Мичуриным Василием Сергеевичем. Разговор шел о сражениях Великой Отечественной войны, в которой он участвовал с первого до последнего дня.

- Василий Сергеевич, с каким настроением вы встречаете это историческое событие?
- Настроение двоякое. С одной стороны, это радость и гордость за триумф советского народа, его Красной Армии и Флота. Ведь единственной силой, способной бросить реальный вызов фашизму оказалась только наша социалистическая Родина и ее коммунистическая идеология, позволившая мобилизовать силы и средства, вдохновить народ на отпор коварному врагу и обеспечить Победу. 1418 дней и ночей продолжалась кровопролитная схватка противоположных социально-экономических систем и враждебных друг другу идеологий. Мы долго воевали один на один с нацистами, не жалели ни крови, ни самой жизни для разгрома коричневой чумы. Союзники открыли второй фронт только летом 1944 года, когда стало ясно, что Советский Союз справится с гитлеровской Германией без их помощи. И вот сейчас находятся в мире силы, прежде всего в США и Евросоюзе, которые пытаются принизить роль СССР в разгроме фашизма, фактически вознамерились украсть у нас Победу. Особое беспокойство вызывает оживление фашистских проявлений, как это происходит на Украине, в Прибалтике и в других местах при попустительстве руководства так называемых цивилизованных государств. Можно ли спокойно наблюдать, как бандеровские недобитки и прибалтийские эсэсовцы объявляют победителей фашизма оккупантами? Разве такая действительность не может не
испортить праздничное настроение? Когда все меньше остается тех, кто свернул шею фашистскому зверю и способен отстоять нашу Победу, нам остается надеяться, что потомки победителей не допустят торжества фальсификаторов.
- А как для вас начиналась война, где вы ее встретили? Как произошло боевое крещение?
- Я был призван в Красную Армию еще в 1939 году. Когда началась война, я учился в Минском военно-политическом училище. 22 июня мы прослушали заявление Советского Правительства, с которым выступил по радио
В. М. Молотов. Вероломство гитлеровской Германии вызвало гнев и возмущение курсантов. На второй день войны нас подняли по тревоге для ликвидации воздушного десанта немцев восточнее деревни Уручье. Почему-то разведданные не подтвердились: вражеский десант не выбрасывался. Через три дня мы получили задачу выдвинуться под Березино, чтобы не дать взорвать мост, задерживать одиночных отступающих
военнослужащих и формировать из них подразделения. Здесь мы попали под бомбардировку немецкой авиации. Появились первые потери. После выполнения задачи мы на трех автомобилях направились на Буйничское поле у Могилева, где должно было располагаться политуправление Западного фронта, но не застали его.
Поскольку офицеров отозвали в боевые части, возглавить группу курсантов пришлось мне. Тяжело давила неразбериха, отсутствие связи и неизвестность в обстановке, а также недостаток горючего и продовольствия. С трудом добрались до Орши, где нас обеспечил всем необходимым настоящий советский патриот директор предприятия общественного питания. Пережив еще одну бомбежку, мы, наконец, нашли политуправление фронта южнее Смоленска в Гнездово. Здесь мы узнали о выступлении по радио Иосифа Сталина, которое произвело на нас сильное впечатление, вселило уверенность, что выстоим и победим. Здесь же курсантам сообщили о произведенном досрочном выпуске, присвоении нам воинского звания младший политрук. Одновременно мы получили назначение в войска, я был направлен в 288 стрелковый полк 64 стрелковой дивизии на должность политрука пулеметной роты. Так что, до средины июля о реальном боевом крещении можно утверждать весьма условно. Оно произошло после, когда стал политруком пулеметной роты. Но если говорить о боевом крещении, то я принял его еще в войне с союзником Германии маннергеймовской Финляндией в феврале 1940 года.
- Это будет интересно нашим читателям, расскажите?
- Наш 241 стрелковый полк в начале февраля 1940 года в упорной схватке с белофиннами на Карельском перешейке, при прорыве укреплений на реке Пинус-Йоке, овладел господствовавшей над местностью высотой. Дабы воспрепятствовать противнику вернуть ее, командование решило устроить у высоты засаду силой нашего пулеметного взвода. Под вечер мы выдвинулись на указанную местность. При продвижении нас встретил шквальный огонь противника. Вышел из строя командир взвода лейтенант Саренков и ряд бойцов. Цели достигли с пулеметами и боеприпасами три расчета, одним из которых командовал я. Мне, как комсоргу роты, пришлось взять командование на себя. Три пулемета заняли полукруговую оборону. Белофинам, видимо, нужна была высота. Они всю ночь атаковали, в ход пошли гранаты. Два расчета погибли, ранен был второй номер моего расчета. Я остался один, передвигался по ходам сообщения от пулемета к пулемету и пресекал попытки противника продвинуться. После каждой пулеметной очереди на снегу оставались белые бугорки: сраженные финны в маскхалатах. Как после выяснилось, финны думали, что обороняется целое подразделение. К утру закончились боеприпасы, но тут с рассветом в действие вступила полковая артиллерия, накрывшая атакующих. Вскоре позицию заняли новые бойцы. Этим же вечером мне снова пришлось отражать нападение белофиннов, прорвавшихся на командный пункт. Пулеметные очереди сделали свое дело. Вот за это боевое крещение я и был удостоен звания Героя Советского Союза.
- Так что в Великую Отечественную войну вступили обстрелянным воином. Итак, в средине июля вы приняли должность политрука пулеметной роты 288 стрелкового полка. Как дальше развивались события?
- Можно сказать, что сразу же пришлось участвовать в боях. Ожесточенной была схватка с фашистами у Соловьевской переправы в Смоленской области В этом месте переправлялись отступавшие и выходившие из окружения советские подразделения и немцы всеми силами пытались помешать им, нанести как можно больший урон, для чего использовались не только атаки солдат, но артиллерия и авиация. Мы сдерживали натиск фашистов несколько дней. Полк понес большие потери. По приказу командования организованно отступили. После этого дивизию влили в группу генерал-лейтенанта К. К. Рокоссовского.
Мы заняли оборону в междуречье рек Вопь и Царевич у совхоза Зайцево, там же, на Смоленщине. Немцы рвались к Москве. Опьяненные успехами, они дрались особенно ожесточенно. Припоминаю психическую атаку гитлеровцев, взбодренных шнапсом. Они атаковали нагло, двигались на нас как стадо обезумевших кабанов. Но мы не дрогнули и здорово их потрепали. Бои были кровопролитные и продолжались около двух месяцев. Хочу подчеркнуть, что советский патриотизм, преданность своей социалистической Родине, убежденность в правоте нашего дела и в Победе умножали силы, стойкость и боевой дух бойцов и командиров. Они стояли насмерть. Мне приходилось не раз ложиться за пулемет, подменяя погибших или раненных бойцов. Трижды был ранен, но оставался в строю. Тогда так поступали многие. Только после последнего ранения в сентябре я оказался в Саранском эвакогоспитале, где лечился почти три месяца.
- А как складывалась ваша служба после излечения?
- Сначала меня направили политруком роты охраны штаба Московского военного округа, а через несколько месяцев - помощником начальника политотдела окружных курсов младших лейтенантов. Перед назначением со мной беседовал Начальник Главного Политуправления Красной Армии и Военно-Морского Флота генерал-полковник А. С. Щербаков. Я высказал просьбу направить меня на фронт, но получил разъяснение, что подготовка кадров офицеров не менее важное дело, чем воевать на передовой. Учли, видимо, и то, что я до войны активно участвовал в комсомольской жизни и в 1940 году во время учебы в МВПУ был избран членом ЦК комсомола Беларуси. Потом я подавал рапорты о направлении на фронт, но только в апреле 1944 года был назначен помощником начальника политотдела по комсомолу 128 стрелкового корпуса 28 армии, входившей в 1-й Белорусский фронт, которым командовал генерал армии Константин Рокоссовский. А во главе корпуса стоял генерал-майор П. Ф. Батицкий.
- Между прочим, в вашем личном деле имеется подписанная генералом П. Ф. Батицким аттестация, где есть такие слова: «В боях т. Мичурин бесстрашен, в работе принципиален. Умеет в любой обстановке влиять на массы и увлекать их на подвиги».
- Участвовал в операции «Багратион», в боях за освобождение Беларуси. Особенно запомнилось сражение у Барановичей. По поручению начальника политотдела я прибыл для участия в подготовке наступления на город. Работал в одном из полков с комсомольскими организациями, а с началом штурма железнодорожной станции был в атакующих цепях. Задача была выполнена успешно. Из станции и города Барановичи немцы были выбиты с большими для них потерями. Было взято много пленных и трофеев. Меня за этот бой наградили орденом Красной Звезды.
После освобождения БССР нашу армию передали в состав 3-го Белорусского фронта, которым командовал легендарный Дважды Герой Советского Союза генерал армии И. Д. Черняховский. К несчастью, в начале 1945 года он погиб. Фронт возглавил авторитетный военачальник Маршал Советского Союза А. М. Василевский. Наш корпус участвовал в Восточно-Прусской операции. Фашисты оказывали упорное сопротивление. Из-за этого наши части несли серьезные потери, но боевой дух и наступательный порыв советских войск был настолько высок, что немцы уже не могли нас сдержать. Армия постоянно пополнялась молодыми, свежими силами и мне как комсомольскому работнику приходилось постоянно находиться в частях и соединениях корпуса, формировать и восстанавливать комсомольские организации и организовывать их деятельность по созданию среди членов ВЛКСМ и несоюзной молодежи высокого боевого духа и наступательного порыва. Операция прошла успешно, мы овладели цитаделью тевтонов Кенигсбергом и всей Восточной Пруссией.
В начале апреля 1945 года 28-ю армию передали в состав 1-го Украинского фронта под командование талантливого военачальника Маршала Советского Союза И. С. Конева. В составе этого фронта пришлось участвовать в Берлинской операции. В штурме нацистской столицы я действовал с мотострелковым батальоном, который имел задачу помочь нашим танкистам перерезать железную дорогу в городе и выйти на установленный рубеж. Уличные бои были сложными. Немцы отчаянно сопротивлялись, взрывы мин, снарядов, фаустпатронов, огонь стрелкового оружия, пожары, дым и пыль от разрушения снарядами кирпичных зданий, завалы, искореженные рельсы, разрушения – все это отложилось в памяти. И наши войска все это преодолели и подняли знамя Победы над поверженным Берлином. Затем пришлось идти на помощь восставшей Праге.
- А что можно сказать о роли партийных и комсомольских организаций в поднятии боевого духа войск, в достижении успеха в сражениях с врагом?
- Эту роль трудно переоценить. Я коммунистом стал еще до войны. Большинство командиров, особенно звена командир роты и выше, а также политработники были коммунистами. Они учили и воспитывали своих подчиненных в духе преданности Отечеству, умело руководили боевыми действиями. Клич «За Родину, за Сталина», «Коммунисты, вперед!» были обычным явлением. Коммунисты личным примером влияли на бойцов, первыми поднимались в атаку, показывали образцы стойкости и самоотверженности в самых сложных боевых ситуациях. Их примеру следовали и комсомольцы. Накануне выполнения боевых задач проводились партийные и комсомольские собрания, на которых обращалось внимание на смелые и решительные действия, обеспечивающие выполнение задачи с наименьшими потерями, на необходимость личным примером вести за собой остальных бойцов. И это мобилизовало людей, вселяло в них мужество и отвагу, стремление преодолевать трудности.
- Где и как встретили вы известие о капитуляции Германии?
- Это радостное известие застало нас в Чехословакии, в городе Чешска Липа севернее Праги. Встретили его с большим подъемом, но было не до торжественных мероприятий. Дело в том, что многие немецкие части в Чехословакии не подчинились капитуляции, не сложили оружие и упорно пробивались с боями на Запад, чтобы сдаться нашим союзникам. Фашисты боялись мести за свои преступления против советского народа и надеялись, что американцы или англичане будут к ним более снисходительны. Нам пришлось вести ожесточенные сражения с этими обозленными гитлеровцами. Обидно, что мы из-за них продолжали терять людей уже после Победы. Таким образом, для нашего корпуса война завершилась только 13 мая 1945 года. Вот тогда-то мы и отпраздновали нашу победу. Кстати, в Чехословакии наша 28-я армия отловила предателя Власова и отдала его в руки советского правосудия.
- Расскажите, как были отмечены государством ваши заслуги в Великой Отечественной войне?
- В годы войны я трижды награждался боевыми орденами. Кроме ордена Красной Звезды, о чем я упоминал, был награжден двумя орденами Отечественной войны II степени. А после войны, естественно, с учетом участия в боях против фашистов, я был награжден вторым орденом Красной Звезды и орденом Отечественной войны I степени. А вообще-то мы защищали наше социалистическое Отечество не ради наград. Мы добывали Победу для своего народа, не щадя своей крови и самой жизни, как точно сказал поэт: «Этот день мы приближали, как могли».
- А как сложилась ваша служба после войны?
- Вся моя служба после Великой Отечественной войны связана в основном с Белорусским военным округом, если не считать нескольких лет в ГСВГ. После войны 28-я армия была выведена в БССР. Я был назначен замполитом артиллерийского дивизиона, а затем дивизиона гвардейских минометов, то есть «Катюш», в Брестском гарнизоне. Во время службы в ГСВГ стал замполитом зенитно-артиллерийского полка. Потом служил в 120-й гвардейской мотострелковой дивизии замполитом 310-артиллерийского полка и секретарем партийной комиссии при политотделе. Завершал службу секретарем партийной комиссии при политотделе спецчастей Минского гарнизона. Уволился из Вооруженных сил в 1973 году.
- Коммунисты города знают вас как одного из активных участников общественной жизни. Вы трудились и в руководящих органах ветеранской организации и Белорусского союза офицеров, и в Военно-научном обществе, и возглавляли первичную парторганизацию КПБ. И как фронтовик проводили большую работу по формированию у молодежи патриотизма и любви к своему Отечеству, готовности к ее защите. Почтенный возраст и состояние здоровья, видимо, сказываются на вашей активности?
- Да, было время, когда я активно участвовал в работе партийной и общественных организаций, безотказно откликался на приглашения воинских и трудовых коллективов, образовательных учреждений, музеев, ДОСААФ и других организаций, выступал перед молодежью о Великой Отечественной войне, подвигах советских воинов. Сейчас выступаю значительно реже. Совсем недавно, в прошлом месяце, встречался с учащимися средней школы №47. Пока есть силы, постараюсь быть полезным нашей партии в воспитании молодежи.

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