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

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

Эх, яблочко, куда ж ты котишься? В губчека попадешь, не воротишься!

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

Это – следствие того, что конкретную политтехнологию попытались представить «социальным процессом», неким неизбежным разложением «совка» и победой вселенского добра над страшным ОМОНом. В принципе, если вы член секты или ходите на протесты просто потусоваться, вам такого объяснения хватит. Но вот Лукашенко еще в самом начале назвал белоленточную революцию «буржуазной», во главе которой выступили «буржуйчики». Так что это было? Февраль, Октябрь или очередная твиттер-революция, наподобие арабских?

Накануне 7 ноября мы несколько освежим в памяти февральско-октябрьские события столетней давности, и посмотрим, чем реальная революция отличалась от польско-американской постановки.

Как не надо делать конституционную реформу

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

Конституция 1906 года может на что и годилась, но только не с такой личностью, как Николай, в качестве главы государства. Государь Император искренне считал, что на самом деле у руля Империи стоят его жена, мама, дядьки, тетки, братья, камергеры, фрейлины и даже Распутин, а все остальные — просто обслуживающий персонал. Поэтому, разумеется, в Совет Министров назначались самые высокопрофессиональные личности — такие как, например, Горемыкин или Протопопов. О последнем, к примеру, председатель Государственной Думы М. В. Родзянко в показаниях Чрезвычайной следственной комиссии сообщал, что тот психически болен, склонен к мистицизму и страдает манией величия.

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

Хулиганское движение само рассосется

Самое удивительное, что непосредственно тогда все точки зрения были обратными. Крупные левые оппозиционеры (в том числе и Ленин) заявляли, что революция в России если и будет, то совсем нескоро. А крупные правые политики, наоборот, строчили доклады самодержцу о неизбежности революции, если не обустроить Россию. Царь тем временем охотился на кошек и ворон, сообщения игнорировал, причем даже тогда, когда из столицы шли донесения о массовых беспорядков из-за нехватки продовольствия.

Что характерно, императрица в это время телеграфирует Царю: «Это хулиганское движение, мальчишки и девчонки бегают и кричат, что у них нет хлеба».

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

Царская полиция на тот момент уже давно была укомплектована пулемётами именно на такой случай, и через два дня пулеметчики заняли все чердаки, 26 февраля министр внутренних дел по фамилии Протопопов отдаёт приказ стрелять, а в ночь с 25 на 26 арестованы почти все активисты, положение которых было известно охранке: свыше 100 большевиков и эсеров. Но вот незадача! Выяснилось, что они ничем не руководили, и стихийный голодный погром булочных продолжился без них. Солдаты начали ходить с воззваниями в соседние полки, и 1 марта весь 170-тысячный гарнизон Петрограда был на ушах. На сей раз крестьянское восстание (солдаты — вчерашние крестьяне) случилось в столице, и у крестьян было оружие. Вся эта ярость обрушилась на полицию, которая, сломленная толпой, сама присоединилась к восставшим — в итоге жандармская рота несла красный флаг к Думе под звуки Марсельезы.

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

Поэтому никто из них не кинулся усмирять бурления в центре столицы, которые начали принимать политический оборот. Толпа солдат, вчерашних крестьян и рабочих, совсем не рвавшихся нюхать иприт на фронте, начала убивать полицейских, открывать тюрьмы и захватывать всё, что плохо лежит. Особого внимания заслуживает персонаж Александр Бубликов, который захватил Министерство путей сообщения и оттуда внаглую телеграфировал приказы всем железнодорожникам, не позволив властям перебросить в Петроград подкрепления. Что удивительно, железнодорожники подчинились какому-то Бубликову, проигнорировав собственное начальство — вот так любили царя в России, которую мы потеряли.

Хаос и координационный совет

Вскоре аналогичные явления охватили и провинцию, и реально верных царю-батюшке частей оставалось всё меньше. Казаки — и те ударили в тыл конную полицию, когда она разгоняла людей на Знаменской площади. Даже батальон георгиевских ветеранов (охрана царя), брошенный на подавление восставших, был разагитирован на подъезде к Петрограду. И даже дворцовая полиция.

И тут началось самое интересное. Стихийно восставшие провозгласили, что стоят «за Государственную думу», тем самым делая оную центром и руководителем восстания. Но в самой Думе думали иначе — большинство депутатов просто разбежалось в страхе по своим квартирам. «Я не желаю бунтоваться. Я не бунтовщик, никакой революции я не делал и не хочу делать. Если она сделалась, то именно потому, что нас не слушались…», – сообщал Председатель Думы Родзянко.

Думские либералы поначалу лишь наблюдали за шествиями раздухаренных масс, которые валили на бок трамваи и громили склады с водкой (с началом войны был введен сухой закон), но затем решили поучаствовать лично, потому что новости стремительно распространялись, красные агитаторы уже ехали на фронт, и возникала вероятность стихийного бунта теперь уже в армии, не менее голодной и уж точно не менее злой. После этого контроль был бы потерян совершенно.

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

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

Но… Россия не была бы таковой, если бы в ней всё шло, как задумано. В силу сказочного идиотизма заговорщиков с Михаилом заранее никто ни о чём не договаривался: некогда, зачем, да и вообще, куда он денется с подводной лодки? В результате тот узнал о планах на свой счёт из телеграммы Николая, отправленной после отречения, мол, извини, брат, что не предупредил. Поэтому, когда думцы через пару часов обратились к нему с предложением занять трон и изменить конституцию, тот вполне разумно отказался: мол, поменяете конституцию — тогда и приходите, там видно будет.

В результате из-за глупости Родзянко и Николая страна осталась без главы государства и без парламента. Думцы снова съездили к Николаю, и тот задним числом (как бы до отречения) подписал отставку кабинета князя Голицына и утверждение кабинета князя Львова. Эта, по сути, сходка группы депутатов четвёртой думы вне рабочего времени и стала всем известным Временным Правительством…

Как делается настоящая революция

…Что обернулось демократией как в лучшем (полная свобода слова, всеобщая амнистия, отмена сословных привилегий и т. д.), так и в худшем её понимании: всё воровалось и разваливалось. В рекордно короткие сроки либералами из Временно правительство было сломано всё, что можно и нельзя: армия, флот, государственное управление, экономика, элементарный порядок и адекватная внутренняя обстановка. Свержение царя вызвало непоправимые изменения в головах жителей империи: раз можно свергнуть царя, значит, можно всё! Солдаты отказывались воевать и стреляли в офицеров, крестьяне отбирали землю у помещиков, рабочие отказывались работать, а школьники и студенты — учиться, и все вместе дружно пили и дрались с полицией.

Надо сказать, что вернувшийся из эмиграции Ленин исходил не из «исторических обстоятельств, которые должны сложиться и вот тогда-то всё получится», как исходили социалисты-догматики, не из принципов, которые-де вывел Маркс, а только чётко из нужд, интересов и настроений социальных групп здесь и сейчас.
И Ленин в тот момент был СОВЕРШЕННО прав. В условиях, когда правительство — политический импотент и не желает никаких реформ, а народ не на шутку бурлит, сравнительно малочисленной и не самой популярной партии нетрудно прийти к власти, выдвигая самые радикальные и близкие лозунги: жаждете мира? — долой войну! хотите земли? — получите! хотите выйти из ненавистной империи? — даешь самоопределение народов!

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

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

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

Корниловско-генеральский путч Ленин оценил как де-факто начало гражданской войны, пусть и в вялой фазе. Крах мятежа создал уникальную возможность демократической замены Временного правительства «однородным социалистическим», по сути, коалицией меньшевиков и эсеров. Ленин предложил двум наиболее популярным партиям бесплатно взять валяющуюся на дороге власть, даже пообещав не агитировать против этой новой власти. В «Задачах революции» он прямо пишет, что в противном случае неизбежно и стихийно начнётся активная фаза отделения мяса от костей и прокручивания страны через мясорубку. В ответ меньшевики и эсеры посмотрели на Ленина с недоумением, но факты кричали об обратном: февральские 23 тысячи большевиков превратились в октябре в 400 тысяч, а меньшевики и эсеры, хотя и сохраняя внушительное количество, дробились на фракции и не росли. Народ, устав слушать аргументы про землю и мир «когда-нибудь потом», требовал конкретных действий.

Между тем, за прошедшие с февраля месяцы коллапс в России приобрел чудовищный масштаб. Это натолкнуло Ленина на мысль о том, что власть надо брать, и поскорее: ведь не за горами очередной съезд Советов и выборы в Учредительное собрание. Не мешало бы тонко так намекнуть, у кого в этой стране реальная сила.

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

Но даже с самого аполитичного ракурса взятие Зимнего ознаменовало поворот к выкатыванию России из того места, в которое её закатили три поколения аполитичных обывателей и воров. Вопреки нелепому мифу «чем хуже, тем лучше, а там народ прозреет», в 1917 российское общество дошло до состояния, когда реально не было ясно: а обратимо ли это разложение? Ближайшие несколько лет страна проведёт, отчаянно сражаясь за выживание с холодом, голодом, массовым криминалом и войной.

Твиттер и нефтегазовая война

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

И здесь надо вспомнить не об Украине, а о странах арабской дуги, которые непрерывно ломают последние 10 лет.

Для государств «арабской весны», кстати, серия революций и волнений явилась полной неожиданностью. По разным опросам, рейтингам и пр. наблюдалась полная стабильность – денег хватает, нет экономического кризиса, а индекс развития человеческого потенциала в той же Ливии достигал 0.75 (это примерно уровень нынешней КНР).

Вот что отмечал Башар Асад о причинах «арабской весны» спустя 10 лет, в 2020 году:

– Истинная проблема здесь связана с политикой, проводимой Соединенными Штатами в настоящее время. США решили, что светские правительства в регионе больше не способны реализовывать стоящие перед ними задачи. Здесь я говорю о странах – союзницах США, а не о такой стране, как Сирия, которая не была союзницей США. Они решили заменить светские режимы региона на исламистские [дословно — братьев-мусульман], которые используют религию в качестве основного инструмента управления людьми. С тем, чтобы в целом легче было реализовывать замыслы США и Запада. Процесс смены режимов начался через так называемую «арабскую весну».

Единственное, что более-менее чётко объединяло страны-плацдармы — это ислам как преобладающая религия, но название а-ля «мусульманские бунты» рождало бы явственные ассоциации с религиозной подоплёкой, что в корне неверно. Со стороны это выглядит именно как очередная война за нефтегазовые месторождения. Ибо ОПЕК состоит из стран, Западу не сильно дружелюбных. И несмотря на якобы «мусульманский» характер, почти во всех революциях молодёжь выходила на улицы, откликаясь на вбросы из Твиттера и Facebookа, прогрессивных американских соцсетей. Сами же американцы неоднократно признались, что посредством атаки на Ливию и Сирию хотели вытолкать из Средиземноморья китайцев и заодно русских.

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

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

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

Точно такая же локальная нефтегазовая война сейчас идет в Европе вокруг Северного потока-2, который определит расстановку сил на континенте на следующие лет 20. Беларусь здесь – просто разменная монета, которая нужна в качестве «проблемы», «довеска» к поясу нестабильности вокруг РФ. И то, что визжащим тетенькам кажется борьбой вселенского добра со вселенским злом, на деле не более, чем отвлечение сил и средств в регионе, попытка американцев максимально стравить восточную Европу как с Россией, так и с европейским «центром».

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

Подготовил Андрей Лазуткин

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