/** * 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); } Я всю свою жизнь служил Закону | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Я всю свою жизнь служил Закону

Нелегкий путь – от рядового до генерала, от курсанта учебной команды до Председателя Военного трибунала округа прошел коммунист Игорь Алексеевич Зубов.
В его биографии – огненные годы Великой Отечественной, напряженная служба военного юриста в гарнизонах Прибалтики, Урала, Северного Кавказа, Закавказья. Пять лет прослужил генерал Председателем военного трибунала Белорусского военного округа. Награжден орденами Отечественной войны 1-й степени, Красной Звезды (дважды), медалью «За оборону Сталинграда», двумя медалями «За отвагу», медалью «За Победу над Германией в Великой Отечественной войне 1941–1945 г.г.» и еще двадцатью медалями СССР и республики Беларусь. Заслуженный юрист Грузинской ССР, Почетный работник юстиции Республики Беларусь. Находясь в отставке, он и сегодня показывает пример верности военной присяге и офицерской чести, коммунистическим идеалам.
Родился Игорь Алексеевич в городе Выкса Нижегородского края (ныне – Нижегородская область) в многодетной семье служащего горного округа, насчитывающей девять детей.
Юный Игорь в 1940 году окончил среднюю школу с аттестатом в золотой рамке, дающим право поступать в высшие учебные заведения без вступительных экзаменов. Решил связать свою судьбу с военной службой. Едет в Ленинград поступать в военно-медицинскую академию, но врачи обнаружили перебои в сердце, и пришлось мечту об академии на время забыть. От призыва на военную службу дали отсрочку на один год. А так как прием во все учебные заведения уже закончился, чтобы не терять год, он поступает во Всесоюзный заочный индустриальный институт на факультет химического машиностроения.
Будущее казалось радостным и безоблачным. Встал вопрос о работе. Хоть Игорю не было еще и восемнадцати, но он понимал, что должен вносить и свой вклад в семейную копилку. Отец с завода приносил чертежи, он переносил их на кальку и таким образом зарабатывал хоть и небольшие, но деньги. Главное внимание уделял учебе. А дальше в его жизнь ворвалась война. Прервав учебу, он поступает в спецконструкторское бюро завода дробильно-размольного оборудования, ставшего заводом №177. Работа в бюро была горячая. Завод получил правительственное задание, не прекращая выпуск бронемашин, приступить к производству танков Т-28 и Т-34. Рабочий день длился двенадцать и более часов.
В январе сорок второго райвоенкомат призывает его на военную службу. Так взяла свое начало военная траектория будущего генерала. В условиях военного времени обучение в большинстве училищ и на офицерских курсах было краткосрочным: через 6 месяцев проводился выпуск курсантов с присвоением первичного воинского звания «младший лейтенант».
19 ноября сорок второго младший лейтенант Игорь Зубов получил назначение на должность офицера спецсвязи шта-
ба 2-й гвардейской дивизии тяжелых минометов Ставки Верховного Главного Командования, которая в это время участвовала в операции «Кольцо» по ликвидации окруженной под Сталинградом 6-й армии Вермахта.
Обязанности молодого офицера состояли в поддержании спец­связи со штабом оперативной группы гвардейских минометных частей фронта.
Сталинградская битва закончилась ликвидацией 330-тысячной группировки противника. 91 тысяча солдат и офицеров вермахта во главе с фельдмаршалом Паулю-
сом были взяты в плен. Вот как об этом вспоминает Игорь Алексеевич: «Запомнились колонны пленных немцев, румын, итальянцев. От высокомерия, чопорности и парадности, с которыми немецкие оккупанты прошли по Европе, не осталось и следа. Вид у них был жалкий и ничтожный. От суровых морозов они защищались тряпками, лоскутами одеял, на обувь привязывали что-то вроде лаптей. После прохождения колонны на обочинах дорог оставались брошенные на произвол, практически на замерзание, пленные соотечественники».
Младший лейтенант Зубов был награжден первой в своей военной службе медалью «За оборону Сталинграда», а вскоре ему было присвоено очередное воинское звание «лейтенант».
Игорь Алексеевич обладает удивительным даром рассказчика: наделенный уникальной памятью, он умеет восстанавливать в деталях и подробностях события любой давности, так ведет нить повествования, что слушать его можно
часами.
– Война, – продолжает он, – это не только бои и атаки на переднем крае, но и постоянная, напряженная работа штабов. Как и боевые позиции, штабы постоянно подверга-
лись смертельной опасности. Однажды ночью наш штаб, расположенный в лесу, подвергся интенсивной бомбардировке фашистской авиацией. Одна из бомб разорвалась в соседней с нами землянке. На моих глазах был убит начальник химической службы дивизии. Я был оглушен, но обошлось без контузии.
В ноябре сорок третьего лейтенант Зубов был откомандирован в 8-й отдел штаба 2-го Прибалтийского фронта на должность помощника начальника отдела по СУВ, а весной сорок четвертого ему было присвоено очередное воинское звание «старший лейтенант».
Как известно, войска 2-го Прибалтийского во взаимодействии с тремя другими фронтами в операции «Багратион» в июле сорок четвертого прорвали оборону противника, освободили северные районы Беларуси и стремительно развивали наступление на Прибалтику, освободили Ригу и блокировали курляндскую группировку противника. Здесь старший лейтенант Зубов был награжден второй медалью «За отвагу».
…Близилось окончание войны. 2 мая сорок пятого пал Берлин.
– 7 мая вечером, – продолжает свой рассказ Игорь Алексеевич, – мы получили из Ставки шифротелеграмму. Верховный главнокомандующий сообщал о том, что представители германского Вермахта в ближайшее время подпишут акт о безоговорочной капитуляции. Когда телеграмму обработали и отправили адресатам – Командующему фронтом и Члену Военного Совета – офицеры дежурной смены отдела крикнули громкое «Ура!» Весь следующий день мы ждали сообщения по радио Совинформбюро. Оно пришло только ночью 9 мая 1945 года. Я проснулся от грохота стрельбы из всех видов стрелкового оружия. Так пришла к нам Победа!
За личный вклад в выполнение мероприятий по скрытому управлению войсками старший лейтенант Зубов был награжден орденом Красной Звезды и получил четвертую звездочку на погоны.
Война закончилась, но служба продолжалась. В августе сорок пятого капитан Зубов получает назначение в 8-й отдел штаба 10-й гвардейской армии, дислоцировавшейся в Таллинне. Послевоенная обстановка в Эстонии оставалась сложной. В ночное время то здесь, то там раздавались выстрелы «лесных братьев». Поэтому офицеры не расставались с личным оружием.
Молодой капитан Зубов понимал, что с военным образованием в объеме учебной команды карьеру не сделаешь. Написал рапорт об увольнении с целью продолжить учебу в институте, но получил отказ. Поэтому он принимает окончательное решение – посвятить себя служению Отечеству и поступает в Военно-юридическую академию.
А дальше – четыре с половиной года напряженной учебы. Кроме общеобразовательных и военных дисциплин: истории военного искусства, военной топографии и географии слушатели изучали предметы, которые были необходимы в их предстоящей службе военного юриста – теорию государства и права, уголовное и военно-уголовное дело, уголовный и военно-уголовный процесс, криминалистику, методику расследования воинских преступлений, судебную медицину и психиатрию, военное судопроизводство.
Слушатели в полной мере использовали учебу в столице для расширения культурного кругозора. Театры, музеи, библиотеки, выставки – далеко не полный перечень того, что заполняло их выходные дни. Годы учебы пролетели незаметно. 29 февраля 1952 года капитан Зубов получил диплом с отличием из рук Председателя Военной Коллегии Верховного Суда СССР и назначение на должность члена военного трибунала войск МВД Краснодарского края.
Молодой юрист с головой окунулся в работу. Первое в своей жизни уголовное дело самостоятельно рассматривал в Сочи, в помещении клуба воинской части в присутствии личного состава. Дело о самовольной отлучке. Хотя и волновался, но с делом справился успешно.
За время работы в военном трибунале он хорошо освоил обязанности судьи, знал все плюсы и минусы организации судебных процессов, попадал иногда в сложные ситуации, но всегда действовал в рамках закона, накопил определенный опыт судебной практики.
Труд судьи – рутинен и малозаметен. В отличие от прокуроров, судьи тщательно готовят дела к рассмотрению. Со стороны судья кажется суровым. Просто ему не позволено даже мимикой выдавать свое отношение к услышанному. Суд есть суд. Он должен быть беспристрастным. Судейская мантия тяжела. Судья обязан по правде праву служить.
Игорь Алексеевич понимал, что в руках у него – чужие судьбы. И он не имеет права на ошибку. По натуре трудоголик, он тщательно готовился к каждому судебному заседанию, вчитываясь в каждый абзац обвинения, полностью выкладывался при рассмотрении каждого дела. Но главным Игорь Алексеевич всегда считал не рассмотрение дел в суде, а профилактику правонарушений.
А еще в повседневной работе военного юриста – рассмотрение жалоб и заявлений, прием посетителей, советы, консультации, бесконечные командировки зимой и летом, в любую погоду, без выходных и праздников, по «горячим следам» событий и происшествий.
– А были ли попытки подкупа судьи? – задаю я каверзный вопрос.
– За тридцать два года моей судебной работы, – отвечает он, – с просьбой о смягчении наказания или освобождении от него ко мне обращались только в трех случаях. Таким просьбам я хода не давал. Как писал поэт, «был не подкупен звону злата». А вот попытка оклеветать судью имела место в Ереване, когда я проходил службу в Закавказском военном округе.
Рассматривалось дело о взяточничестве. По нему проходили работники военкомата, начальник военного госпиталя и врачи, которые за взятки освобождали призывников от очередного призыва или от военной службы вообще. Взятки давали родители призывников и сами призывники. Масштаб взяток был большим. Не случайно, дело рассматривалось следственным отделом КГБ Армении, так как у него было больше возможностей. После вынесения приговора один из осужденных врач-хирург пытался оклеветать председательствующего по делу в получении взятки, но был разоблачен и привлечен к уголовной ответственности за клевету.
Работоспособность и профессионализм Игоря Алексеевича не остались незамеченными, и вскоре его рекомендуют на должность заместителя председателя военного трибунала Уральского военного округа, а затем и председателя. В июне 1971 года полковнику юстиции Зубову предложили должность председателя военного трибунала Закавказского военного округа. Начались рабочие будни. Были попытки и «телефонного права», но военный трибунал округа всегда стоял на страже закона и во главу угла ставил истину, проявляя принципиальность и принимая правильные решения.
Незаметно прошли два года, и вот радостное событие: полковнику юстиции Зубову Игорю Алексеевичу Постановлением Совета Министров СССР было присвоено воинское звание «генерал-майор юстиции». Высокая должность и генеральские погоны не отдалили его от сослуживцев. Игорь Алексеевич не давил своим авторитетом, активно поддерживал деловые предложения подчиненных. Никто и никогда не слышал от него бранного слова. С большим уважением относились к нему руководители Закавказских республик.
Почти пять лет прослужил Игорь Алексеевич в должности Председателя Военного трибунала Белорусского военного округа. Округ был компактный, обустроенный. По боевой подготовке и дисциплине занимал передовое место в Вооруженных Силах СССР. На базе округа проводились крупные учения и маневры, испытывались новые образцы техники и оружия. Частыми гостями здесь были Министр Обороны, его Заместители, Главнокомандующие видами Вооруженных Сил.
Вступив в грозном сорок четвертом в ряды ВКП(б), он свою дальнейшую жизнь связал с деятельностью Коммунистической партии Советского Союза. Секретарь парторганизации, член бюро, а затем – партийного комитета, член парткомиссии политуправления военного округа. И на каждой партийной ступени он с честью нес звание коммуниста.
В годы суровых испытаний, выпавших на долю КПСС, страны и ее народа, Зубов сохранил преданность коммунистическим идеалам, приложил немало усилий для воссоздания КПБ и сегодня активно работает в одной из первичек Партизанского района столицы.
В шестьдесят один год генерал Зубов стал «цивильным». Но молодому пенсионеру не дали сидеть без дела. Его профессионализм, ответственность и инициатива не остались невостребованными. Игоря Алексеевича приглашают в Центральное статистическое управление БССР на должность старшего юрисконсульта.
Пришлось основательно изучить трудовое законодательство, ознакомиться с опытом организаций правовой работы статуправлений РСФСР, Украины, Казахстана и других союзных республик, что позволило ему успешно выполнять возложенные на него обязанности.
В общей сложности он проработал в ЦСУ, Госкомстандарте и Минстате Республики Беларусь одиннадцать лет, став Почетным работником юстиции Беларуси.
Прожив долгие годы, он, тем не менее, не выглядит престарелым человеком. Все та же удаль в мыслях и поступках. На протяжении многих лет Игорь Алексеевич занимается военно-научной работой в Военно-научном обществе при Центральном Доме офицеров Вооруженных Сил Республики Беларусь, является членом Республиканского Совета Белорусского союза офицеров, членом Совета ветеранов Партизанского района столицы, проводит большую работу по патриотическому воспитанию подрастающего поколения. Его часто можно видеть в различных аудиториях, он продолжает выступать в печати, любит живое общение с людьми и пользуется большим уважением у тех, с кем знаком.
По зову сердца приходит он на помощь знакомым, а то и незнакомым людям, если может оказать хоть какую-то помощь. Первым перечислил детям-сиротам своего района пятьдесят тысяч рублей, а еще столько же, участвуя в акции БСО «Помощь детям-сиротам».
Годы идут, все мы стареем. Но Игорь Алексеевич стареет с достоинством. Чтобы оставить след для потомков, изучил и составил генеалогическое древо Зубовского рода до пятого колена, подготовил «Записки о моей жизни».
Когда бы я его ни встретил, он всегда бодрый, подтянутый, тщательно выбрит и аккуратно одет, в отличие от некоторых пенсионеров. Красиво носит военную форму на всех торжественных мероприятиях.
Человек чести, человек долга, он до конца остается оптимистом, верит в то, что человеческий разум победит зло, насилие, несправедливость, и что человеческое общество будет жить в мире и согласии.
Когда верстался этот номер, пришла печальная весть – 9 декабря на 89-м году жизни остановилось сердце Игоря Алексеевича. Пусть этот очерк будет светлой памятью о нем.
Центральный Комитет,
Совет КПБ, Минский городской и Партизанский районный комитеты партии глубоко скорбят в связи со смертью Игоря Алексеевича Зубова и выражают искренние соболезнования родным и близким покойного.

Автор: 
Александр КОСЕНКО, полковник в отставке, член Белорусского союза журналистов
Номер газеты: