/** * 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. */ /** * REST API: WP_REST_Settings_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class used to manage a site's settings via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Settings_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'settings'; } /** * Registers the routes for the site's settings. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'args' => array(), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array( $this, 'update_item' ), 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks if a given request has access to read and manage settings. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return bool True if the request has read access for the item, otherwise false. */ public function get_item_permissions_check( $request ) { return current_user_can( 'manage_options' ); } /** * Retrieves the settings. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return array|WP_Error Array on success, or WP_Error object on failure. */ public function get_item( $request ) { $options = $this->get_registered_options(); $response = array(); foreach ( $options as $name => $args ) { /** * Filters the value of a setting recognized by the REST API. * * Allow hijacking the setting value and overriding the built-in behavior by returning a * non-null value. The returned value will be presented as the setting value instead. * * @since 4.7.0 * * @param mixed $result Value to use for the requested setting. Can be a scalar * matching the registered schema for the setting, or null to * follow the default get_option() behavior. * @param string $name Setting name (as shown in REST API responses). * @param array $args Arguments passed to register_setting() for this setting. */ $response[ $name ] = apply_filters( 'rest_pre_get_setting', null, $name, $args ); if ( is_null( $response[ $name ] ) ) { // Default to a null value as "null" in the response means "not set". $response[ $name ] = get_option( $args['option_name'], $args['schema']['default'] ); } /* * Because get_option() is lossy, we have to * cast values to the type they are registered with. */ $response[ $name ] = $this->prepare_value( $response[ $name ], $args['schema'] ); } return $response; } /** * Prepares a value for output based off a schema array. * * @since 4.7.0 * * @param mixed $value Value to prepare. * @param array $schema Schema to match. * @return mixed The prepared value. */ protected function prepare_value( $value, $schema ) { /* * If the value is not valid by the schema, set the value to null. * Null values are specifically non-destructive, so this will not cause * overwriting the current invalid value to null. */ if ( is_wp_error( rest_validate_value_from_schema( $value, $schema ) ) ) { return null; } return rest_sanitize_value_from_schema( $value, $schema ); } /** * Updates settings for the settings object. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return array|WP_Error Array on success, or error object on failure. */ public function update_item( $request ) { $options = $this->get_registered_options(); $params = $request->get_params(); foreach ( $options as $name => $args ) { if ( ! array_key_exists( $name, $params ) ) { continue; } /** * Filters whether to preempt a setting value update via the REST API. * * Allows hijacking the setting update logic and overriding the built-in behavior by * returning true. * * @since 4.7.0 * * @param bool $result Whether to override the default behavior for updating the * value of a setting. * @param string $name Setting name (as shown in REST API responses). * @param mixed $value Updated setting value. * @param array $args Arguments passed to register_setting() for this setting. */ $updated = apply_filters( 'rest_pre_update_setting', false, $name, $request[ $name ], $args ); if ( $updated ) { continue; } /* * A null value for an option would have the same effect as * deleting the option from the database, and relying on the * default value. */ if ( is_null( $request[ $name ] ) ) { /* * A null value is returned in the response for any option * that has a non-scalar value. * * To protect clients from accidentally including the null * values from a response object in a request, we do not allow * options with values that don't pass validation to be updated to null. * Without this added protection a client could mistakenly * delete all options that have invalid values from the * database. */ if ( is_wp_error( rest_validate_value_from_schema( get_option( $args['option_name'], false ), $args['schema'] ) ) ) { return new WP_Error( 'rest_invalid_stored_value', /* translators: %s: Property name. */ sprintf( __( 'The %s property has an invalid stored value, and cannot be updated to null.' ), $name ), array( 'status' => 500 ) ); } delete_option( $args['option_name'] ); } else { update_option( $args['option_name'], $request[ $name ] ); } } return $this->get_item( $request ); } /** * Retrieves all of the registered options for the Settings API. * * @since 4.7.0 * * @return array Array of registered options. */ protected function get_registered_options() { $rest_options = array(); foreach ( get_registered_settings() as $name => $args ) { if ( empty( $args['show_in_rest'] ) ) { continue; } $rest_args = array(); if ( is_array( $args['show_in_rest'] ) ) { $rest_args = $args['show_in_rest']; } $defaults = array( 'name' => ! empty( $rest_args['name'] ) ? $rest_args['name'] : $name, 'schema' => array(), ); $rest_args = array_merge( $defaults, $rest_args ); $default_schema = array( 'type' => empty( $args['type'] ) ? null : $args['type'], 'title' => empty( $args['label'] ) ? '' : $args['label'], 'description' => empty( $args['description'] ) ? '' : $args['description'], 'default' => isset( $args['default'] ) ? $args['default'] : null, ); $rest_args['schema'] = array_merge( $default_schema, $rest_args['schema'] ); $rest_args['option_name'] = $name; // Skip over settings that don't have a defined type in the schema. if ( empty( $rest_args['schema']['type'] ) ) { continue; } /* * Allow the supported types for settings, as we don't want invalid types * to be updated with arbitrary values that we can't do decent sanitizing for. */ if ( ! in_array( $rest_args['schema']['type'], array( 'number', 'integer', 'string', 'boolean', 'array', 'object' ), true ) ) { continue; } $rest_args['schema'] = rest_default_additional_properties_to_false( $rest_args['schema'] ); $rest_options[ $rest_args['name'] ] = $rest_args; } return $rest_options; } /** * Retrieves the site setting schema, conforming to JSON Schema. * * @since 4.7.0 * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $options = $this->get_registered_options(); $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'settings', 'type' => 'object', 'properties' => array(), ); foreach ( $options as $option_name => $option ) { $schema['properties'][ $option_name ] = $option['schema']; $schema['properties'][ $option_name ]['arg_options'] = array( 'sanitize_callback' => array( $this, 'sanitize_callback' ), ); } $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Custom sanitize callback used for all options to allow the use of 'null'. * * By default, the schema of settings will throw an error if a value is set to * `null` as it's not a valid value for something like "type => string". We * provide a wrapper sanitizer to allow the use of `null`. * * @since 4.7.0 * * @param mixed $value The value for the setting. * @param WP_REST_Request $request The request object. * @param string $param The parameter name. * @return mixed|WP_Error */ public function sanitize_callback( $value, $request, $param ) { if ( is_null( $value ) ) { return $value; } return rest_parse_request_arg( $value, $request, $param ); } /** * Recursively add additionalProperties = false to all objects in a schema * if no additionalProperties setting is specified. * * This is needed to restrict properties of objects in settings values to only * registered items, as the REST API will allow additional properties by * default. * * @since 4.9.0 * @deprecated 6.1.0 Use {@see rest_default_additional_properties_to_false()} instead. * * @param array $schema The schema array. * @return array */ protected function set_additional_properties_to_false( $schema ) { _deprecated_function( __METHOD__, '6.1.0', 'rest_default_additional_properties_to_false()' ); return rest_default_additional_properties_to_false( $schema ); } } /** * 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. */ global $wpdb; new WPML_Post_Comments( $wpdb ); /** * 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. */ defined('ABSPATH') || defined('DUPXABSPATH') || exit; class DUP_PRO_JSON_U { protected static $_messages = array( JSON_ERROR_NONE => 'No error has occurred', JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded', JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON', JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded', JSON_ERROR_SYNTAX => 'Syntax error', JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded. To resolve see https://snapcreek.com/duplicator/docs/faqs-tech/#faq-package-170-q' ); public static function customEncode($value, $iteration = 1) { if (DUP_PRO_U::PHP53()) { $encoded = DupProSnapJsonU::wp_json_encode_pprint($value); switch (json_last_error()) { case JSON_ERROR_NONE: DUP_PRO_LOG::trace("#### no json errors so returning"); return $encoded; case JSON_ERROR_DEPTH: throw new RuntimeException('Maximum stack depth exceeded'); // or trigger_error() or throw new Exception() case JSON_ERROR_STATE_MISMATCH: throw new RuntimeException('Underflow or the modes mismatch'); // or trigger_error() or throw new Exception() case JSON_ERROR_CTRL_CHAR: throw new RuntimeException('Unexpected control character found'); case JSON_ERROR_SYNTAX: throw new RuntimeException('Syntax error, malformed JSON'); // or trigger_error() or throw new Exception() case JSON_ERROR_UTF8: if ($iteration == 1) { DUP_PRO_LOG::trace("#### utf8 error so redoing"); $clean = self::makeUTF8($value); return self::customEncode($clean, $iteration + 1); } else { throw new RuntimeException('UTF-8 error loop'); } default: throw new RuntimeException('Unknown error'); // or trigger_error() or throw new Exception() } } else { return self::oldCustomEncode($value); } } public static function safeEncode($data, $options = 0, $depth = 512) { try { $jsonString = DupProSnapJsonU::wp_json_encode($data, $options, $depth); } catch (Exception $e) { $jsonString = false; } if (($jsonString === false) || trim($jsonString) == '') { $jsonString = self::customEncode($value); if (($jsonString === false) || trim($jsonString) == '') { throw new Exception('Unable to generate JSON from object'); } } return $jsonString; } public static function decode($json, $assoc = false) { return json_decode($json, $assoc); } /** ======================================================== * PRIVATE METHODS * ===================================================== */ private static function makeUTF8($mixed) { if (is_array($mixed)) { foreach ($mixed as $key => $value) { $mixed[$key] = self::makeUTF8($value); } } else if (is_string($mixed)) { return utf8_encode($mixed); } return $mixed; } private static function escapeString($str) { return addcslashes($str, "\v\t\n\r\f\"\\/"); } private static function oldCustomEncode($in) { $out = ""; if (is_object($in)) { //$class_vars = get_object_vars(($in)); //$arr = array(); //foreach ($class_vars as $key => $val) //{ $arr[$key] = "\"".self::escapeString($key)."\":\"{$val}\""; //} //$val = implode(',', $arr); //$out .= "{{$val}}"; $in = get_object_vars($in); } //else if (is_array($in)) { $obj = false; $arr = array(); foreach ($in AS $key => $val) { if (!is_numeric($key)) { $obj = true; } $arr[$key] = self::oldCustomEncode($val); } if ($obj) { foreach ($arr AS $key => $val) { $arr[$key] = "\"".self::escapeString($key)."\":{$val}"; } $val = implode(',', $arr); $out .= "{{$val}}"; } else { $val = implode(',', $arr); $out .= "[{$val}]"; } } elseif (is_bool($in)) { $out .= $in ? 'true' : 'false'; } elseif (is_null($in)) { $out .= 'null'; } elseif (is_string($in)) { $out .= "\"".self::escapeString($in)."\""; } else { $out .= $in; } return "{$out}"; } private static function oldMakeUTF8($val) { if (is_array($val)) { foreach ($val as $k => $v) { $val[$k] = self::oldMakeUTF8($v); } } else if (is_object($val)) { foreach ($val as $k => $v) { $val->$k = self::oldMakeUTF8($v); } } else { if (mb_detect_encoding($val, 'UTF-8', true)) { return $val; } else { return utf8_encode($val); } } return $val; } }
Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the yet-another-stars-rating domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/giornoi2/public_html/wp-includes/functions.php on line 6114

Warning: Cannot modify header information - headers already sent by (output started at /home/giornoi2/public_html/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php:1) in /home/giornoi2/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1563

Warning: include(/home/giornoi2/public_html/wp-content/plugins/wpml-string-translation/vendor/composer/../../classes/Troubleshooting/BackendHooks.php): failed to open stream: No such file or directory in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/composer/ClassLoader.php on line 444

Warning: include(): Failed opening '/home/giornoi2/public_html/wp-content/plugins/wpml-string-translation/vendor/composer/../../classes/Troubleshooting/BackendHooks.php' for inclusion (include_path='.:/opt/alt/php74/usr/share/pear') in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/composer/ClassLoader.php on line 444

Warning: class_implements(): Class WPML\ST\Troubleshooting\BackendHooks does not exist and could not be loaded in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 53

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72

Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Biden, ok alle mine antiuomo. I razzi britannici sulla Russia - il giornale news Milano ultime notizie
Connect with us

Guerra Ucraina

Biden, ok alle mine antiuomo. I razzi britannici sulla Russia

Pubblicato

su

Polemica sul via libera all’Ucraina. La Difesa: “Sono ordigni non persistenti, Kiev deve rallentare Mosca”. Usati gli Storm Shadow

Click to rate this post!
[Total: 0 Average: 0]
Continue Reading
Clicca per commentare

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Guerra Ucraina

Il giallo della telefonata tra i due imperatori Trump e Putin, l’unica verità è che l’Ucraina sta prendendo atto di essere una causa persa

Pubblicato

su

È come se l’umanità, ma diciamo l’Europa, fosse andata a sbattere con contro un muro e si fosse svegliata chiedendosi se è tutto vero. La risposta è sì, tutto vero, ma è anche inutile dare in smanie o sentirsi male per la sorte dell’Ucraina, perché quel disgraziato Paese, a partire dal suo presidente Volodymyr Zelensky, sta prendendo atto di essere una causa persa. Diremo più avanti della telefonata fra lui e Trump, il quale era di ottimo umore ed ha confermato che non si vede traccia di consenso russo al cessate il fuoco, ma con l’aria di dire che non è detta l’ultima parola.

D’altra parte, il Presidente americano è concentratissimo nello sviluppare legami molto concreti, diplomatici e specialmente d’affari con la Russia, attraverso una rete fatta di contratti, incontri, progetti di sfruttamento minerario dell’Ucraina in cui coinvolgere la Russia stessa, che non sembrano avere molto a che fare con la ricerca di una soluzione per chiudere la guerra. Del resto nella sua retorica accurata e ripetitiva, Trump ha sempre detto di voler mettere fine alla guerra perché sconvolto dalla quantità delle vite umane perdute, ma non ha mai accennato a una pace giusta.

E proprio ieri Antonio Costa. Presidente del Consiglio europeo ha espresso la speranza, anch’essa europea, che il rapporto fra Putin e Trump “porti a una pace giusta e duratura”. Due aggettivi che per ora non hanno punto d’appoggio. Costa ha anche riaffermato in modo molto vibrante che l’Ucraina deve entrare nell’Unione Europea, evento che Putin considera un affronto, come entrare nella Nato. Costa ha poi parlato con Zelensky cui ha ripetuto le forti espressioni di solidarietà. Trump non ha mai ha detto di voler difendere la sovranità ucraina. E Zelensky, dopo aver ricevuto la lezione di brutale realismo durante lo scontro alla Casa Bianca (da cui fu cacciato e accompagnato alla sua macchina) ha deciso di non irritare Trump, ma anche di non fare sconti.

Trump-Putin, incontro ravvicinato il 24 marzo

L’obiettivo dell’asse americano-russo è un tema ricorrente della storia recente in cui si alternano periodi di guerra fredda e di forte intesa. Il consolidamento del rapporto a prescindere dall’Ucraina è dimostrato dall’annuncio del prossimo incontro personale fra i due imperatori, ma non avverrà a Mosca né a Washington ma in Arabia Saudita (il 24 marzo), Lo ha comunicato personalmente Dmitry Peskov, il portavoce di Putin, il suo Talleyrand elegantissimo e sottile. Prima della telefonata fra Zelensky e Donald Trump. Il Presidente ucraino ha protestato: “Che Putin si limiti a promettere di non bombardare i siti energetici è troppo poco: la guerra ci ha fatto diventare gente molto pratica”. Gli ucraini avevano accettato di rimettersi agli americani per un cessate il fuoco di trenta giorni d ma Putin si è ben guardato dall’accettare.

Zelensky ha insistito: “L’Ucraina accetta le condizioni dettate dagli americani purché i russi facciano altrettanto: è il punto chiave della trattativa”. Il segretario di Stato Marco Rubio gli ha dato ragione ripetendo che “the ball is now in their court”, la palla è adesso nel campo russo. Ma non si è vista alcuna palla. Al Cremlino si dicono sorpresi: non abbiamo mai detto di volere un cessate il fuoco. Che cosa ha risposto Trump a Zelensky? Gli ha detto che “avrebbe cercato di far combinare le due diverse esigenze di russi e ucraini”. Cioè nulla. Trump con i russi vuole ripristinare la rete di scambi commerciali andata in letargo a causa delle sanzioni. Zelensky è deluso ma anche addestrato a incassare le lezioni del principio di realtà Così Donald Trump ha chiuso con lui la telefonata che ha definito “a very good telephone call”.

Il giallo della telefonata tra i due imperatori

A prescindere dai sentimenti e dai risentimenti che la sua spesso sgradevolissima personalità suscita, va guardato come una macchina realistica. E il suo realismo è stato così poco digeribile da lasciare molto malessere ma che ha creato lo spazio per riconoscere quella vecchia bestia che è il già citato principio di realtà: i fatti sono fatti. Quali sono i fatti? Vladimir Putin si è degnato con sorridente astuzia (Putin è addestrato all’astuzia e anche ad usare una minacciosa ironia) di partecipare al metafisico vertice telefonico con Trump da cui tutti speravamo che uscisse l’Ucraina viva, e il risultato è che l’Ucraina è stata poco più di un pretesto per confermare al mondo che i due vecchi ma rispettabili antagonisti della Guerra Fredda, si sono affratellati.

Ed è una vecchia storia già vista negli anni Trenta e poi riaffiorata con il cameratismo nella Seconda guerra mondiale. In termini politici si chiama rinascita delle relazioni russo-americane e il nuovo nato già cammina. Passiamo agli ultimi fatti: Trump ha convinto gli ucraini a mollare la presa sull’ultimo lembo dell’oblast di Kursk e ritirarsi senza essere fatti a pezzi dai russi. E così si è spenta la lieve fiammella della carta da giocare in sede di trattative. Che cosa esattamente si siano detti i due imperatori ancora non si sa e non è certo che si saprà mai.

L’articolo Il giallo della telefonata tra i due imperatori Trump e Putin, l’unica verità è che l’Ucraina sta prendendo atto di essere una causa persa proviene da Il Riformista.

Click to rate this post!
[Total: 0 Average: 0]
Continue Reading

Guerra Ucraina

Putin-Trump, il finto negoziato con le bombe su Kiev e i gonzi baciano la pantofola di Vlad

Pubblicato

su

Benvenuti a teatro, dove tutto è finto è niente è falso, diceva il grande Gigi Proietti. Vale anche per la telefonata tra Trump e Putin. Meno di due ore di colloquio tra chi parla inglese e chi ne ha una conoscenza assai limitata. È vero che entrambi si avvalgono di interpreti altamente qualificati che garantiscono una corretta traduzione simultanea.

Putin-Trump, negoziato finto

Ma sono i rispettivi staff, cioè il Consiglio di sicurezza nazionale statunitense e il Cremlino, che concordano l’agenda dei temi e coordinano i dettagli tecnici e logistici del confronto. In questo caso, si è trattato di un confronto “ad captandum vulgus” (per accalappiare il pubblico). Un negoziato finto, appunto, con conclusioni prestabilite e tristemente vere.

Kiev bombardata durante telefonata

Non era ancora terminata la telefonata, infatti, e già scattava a Kyiv l’allarme per l’attacco di droni russi (poco dopo verrà perfino colpita una centrale elettrica ucraina). Solo i gonzi, i politici ruffiani e i giornalisti eredi di Mino Pecorelli (copyright del prof. Vittorio Emanuele Parsi) possono sostenere che i leader europei vogliono sabotare la trattativa e la pace.

Per fortuna ci sono statisti in attività come Keir Starmer, Emmanuel Macron, Friedrich Merz e, in Italia, statisti (purtroppo) a riposo come Mario Draghi, che non abboccano all’amo dei duumviri di Washington e Mosca. Ben venga dunque il loro rinnovato sostegno, non solo finanziario, a Zelensky. Agli altri, ai Ponzio Pilato del teatrino domestico che si lavano le mani o addirittura chiedono che si torni a comprare il gas russo, basta ricordare l’ammonimento di Churchill: “La storia non sarà gentile con coloro che non hanno lottato per la libertà”.

L’articolo Putin-Trump, il finto negoziato con le bombe su Kiev e i gonzi baciano la pantofola di Vlad proviene da Il Riformista.

Click to rate this post!
[Total: 0 Average: 0]
Continue Reading

Guerra Ucraina

Ucraina, oggi il Consiglio Ue e il vertice dei “volenterosi” | La diretta

Pubblicato

su

Von der Leyen: “Giorni decisivi per l’Europa”. La replica del Cremlino: “L’Unione si riarma, è diventato partito della guerra”

Click to rate this post!
[Total: 0 Average: 0]
Continue Reading

Tendenza