/** * 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-х годов прошлого столетия.
27 апреля 1978 года в Афганистане произошла национально-демократическая революция. Афганцы называли ее Великая саурская революция (саур на фарси – апрель). Революция смела эксплуататорский антинародный режим Дауда, выражавший интересы помещиков и баев, реакционного духовенства и буржуазных элементов города. Движущими силами революции выступили трудящиеся массы и прогрессивно настроенные военнослужащие Вооруженных сил. А руководящей и направляющей силой - Народно-демократическая партия Афганистана, возглавляемая известным писателем и прогрессивным политическим деятелем Мухамедом Тараки. Новое руководство объявило страну Демократической Республикой Афганистан и взяло курс на создание общества социалистической ориентации. Идеология НДПА, образованной в 1965 году, была близка к марксистско-ленинской теории. Поэтому не случайно по просьбе руководства ДРА уже в мае 1978 года Советский Союз направил в Афганистан большую группу советников и специалистов, в том числе и в Вооруженные силы.

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

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

Народно-демократическая партия Афганистана была создана в 1965 году после свержения монархии приверженцем буржуаного пути Даудом. Ее основателями называют трех человек: Мухаммеда Тараки, Мир Акбар Хайбара и Бобрака Кармаля.

В конце 1965 года после учебы в США возвратился в страну и был введен в ЦК НДПА Хафизулла Амин, который перессорил руководителей партии, что привело к ее расколу на два крыла: «Хальк» (народ) и «Парчам» (знамя). Оба крыла ставили одну и ту же цель – построение демократического государства социалистической ориентации. Однако несколько отличалась тактика, более радикальная у первых и более либеральная у других. Это вытекало из их социального состава. Среди халькистов большинство составляли выходцы из простонародья: крестян, ремесленников, младших армейских чинов. Среди парчамистов преобладали представители интеллигенции и близких к ней социальных слоев. Крылья то объединялись, то опять расходились, но революцию делали вместе. В стране назревала революционная ситуация, а поводом для народного взрыва стало убийство террористами из исламской экстремистской организации «Братья мусульмане» одного из лидеров НДПА подполковника Вооруженных сил Мир Акбар Хайбара в конце апреля 1978 года. После революции Амину удалось устранить из властных структур представителей партийного крыла «Парчам», а затем развязать террор против них. Утвердившись у власти, он уничтожил лидера страны и апрельской революции М.Тараки, а затем начал заигрывать с американцами. И тем не менее Амин, как ранее и М.Тараки, сам неоднократно обращался к советскому руководству с просьбой о вводе советских войск в страну для спасения Апрельской революции и, конечно, своей власти. Но ему не простили убийство М.Тараки. Возмездие свершилось с прибытием в Кабул советских спецназовцев в первые часы после ввода в страну нашего воинского контингента. В это же время Кабул встретил гонимого Амином в недалеком прошлом лидера парчамистов Бобрака Кармаля, который возглавил правительство Демократической Республики Афганистан и Центральный комитет Народно-демократической партии Афганистана.

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

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

Афганистан был близким соседом, граничащим с Советским Союзом на южных рубежах. Многие годы отношения с Афганистаном были дружественными и взаимовыгодными. Еще до революции и особенно после ее свершения у нас завязались тесные экономические связи. СССР строил там гидроэлектростанцию Наглу, шоссейную дорогу и тоннель Саланг, домостроительный комбинат и другие предприятия в Кабуле, комплекс по добыче и очистке газа в Джаркудуке, вел разведку полезных ископаемых, построил 75-километровый оросительный канал, превративший Джелалабадскую долину в житницу страны и другое. И вот в это подбрюшье нашей державы стремилися агрессивные силы иностранных государств во главе с США, создав тем самым угрозу нашей безопасности. Геополитические интересы СССР диктовали необходимость воспрепятствовать такому развитию событий.

Советские люди, воспитанные в духе интернационализма и неприятия капиталистических порядков, решение советского руководства о вводе в Демократическую Республику Афганистан восприняли с одобрением. Кроме небольшой группы диссидентов, выступавшей против этой акции, в которой активным был А.Сахаров, находившийся под влиянием жены сионистки Е.Бонар. Как и следовало ожидать, в ответ на ввод советских войск в ДРА немедленно отреагировали США и их сателлиты, объявив санкции против СССР.

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

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

Мне довелось быть в качестве военного советника в Вооруженных силах ДРА с февраля 1980 года, когда только разворачивалась ожесточенная схватка с душманами. Вместе с моим подсоветным начальником политотдела корпуса Мухамедом Насимом часто при проведении боевых операций и после них общались с населением, вели разъяснительную работу, интересовались настроением граждан. Как правило, отношение людей к Советскому Союзу и нашей армии было положительным. Но под воздействием вражеской пропаганды и отдельных фактов неправильного поведения наших военнослужащих, о чём сразу становилось известно в любом кишлаке, настроения части населения изменялись не в нашу пользу. Это сказывалось на моральной атмосфере в подразделениях афганских войск. Появились случаи предательства, убийства членов НДПА и ДОМА (Демократическая организация молодёжи Афганистана), и перехода на сторону мятежников военнослужащих и даже отдельных подразделений.

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

Благодаря нашему присутствию Демократическая Республика Афганистан постепенно наращивала свои успехи в укреплении государственного и общественного строя, осуществлялись меры по развитию экономики, образования и здравоохранения. Но натиск империалистических сил был настолько силён, что стоило вывести Советские войска из этого государства, правительство Наджибуллы, продержалось только 3 года. Американцы добились своего, внедрились в страну за тридевять земель от своего порога, но у границ СССР. Опираясь на вскормленных ими талибов и «Аль-Каиду» в уничтожении народно-демократического режима в Афганистане, они фактически выпустили Джина из бутылки и теперь не знают, как с ним справиться. С другой стороны им на руку это как повод для своего вторжения. 13 лет назад они официально ввели свои войска в Афганистан, чтобы никогда оттуда не уйти. И никто не объявлял им санкции. Сейчас, заявив о выводе своих войск с этой страны, они все сделали, чтобы сохранить там своё влияние с помощью уменьшенных контингентов своих и союзных войск. А у Горбачева и его подельников не хватило соображения и воли (а может они уже тогда так задумали?), чтобы не уступать советского присутствия и влияния в Афганистане, равно как и в Европе: ведь шла ожесточенная классовая борьба двух систем. Как показывают события сегодняшнего дня в мире , уступки американцам только усилили их агрессивные аппетиты.

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

Давайте вспомним мудрый вывод В.И.Ленина после поражения революции 1905-7годов. Отвечая одному из своих оппонентов, заявившему: «Не надо было браться за оружие», он разъяснил, что надо было браться за оружие, но действовать более решительно и настойчиво. Так и в нашем случае: если уж ввели войска, то надо было использовать все возможности для достижения поставленной цели. Но разве мог это совершить предатель, который только и делал, что сдавал позиции СССР? Поэтому ошибкой был скорее не ввод, а вывод войск из Афганистана. Если смотреть на это не с обывательских, а с государственных позиций.

Автор: 
Андрей КОВАЛЬ
Номер газеты: 

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

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