class Akismet_REST_API { /** * Register the REST API routes. */ public static function init() { if ( ! function_exists( 'register_rest_route' ) ) { // The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now). return false; } register_rest_route( 'akismet/v1', '/key', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_key' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_key' ), 'args' => array( 'key' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_key' ), ) ) ); register_rest_route( 'akismet/v1', '/settings/', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_settings' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ), 'args' => array( 'akismet_strictness' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ), ), 'akismet_show_user_comments_approved' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ), ), ), ) ) ); register_rest_route( 'akismet/v1', '/stats', array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), 'args' => array( 'interval' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ), 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'default' => 'all', ), ), ) ); register_rest_route( 'akismet/v1', '/stats/(?P[\w+])', array( 'args' => array( 'interval' => array( 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), ) ) ); register_rest_route( 'akismet/v1', '/alert', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ) ) ); } /** * Get the current Akismet API key. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_key( $request = null ) { return rest_ensure_response( Akismet::get_api_key() ); } /** * Set the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status'=> 409 ) ) ); } $new_api_key = $request->get_param( 'key' ); if ( ! self::key_is_valid( $new_api_key ) ) { return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) ); } update_option( 'wordpress_api_key', $new_api_key ); return self::get_key(); } /** * Unset the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status'=> 409 ) ) ); } delete_option( 'wordpress_api_key' ); return rest_ensure_response( true ); } /** * Get the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_settings( $request = null ) { return rest_ensure_response( array( 'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ), 'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ), ) ); } /** * Update the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_boolean_settings( $request ) { foreach ( array( 'akismet_strictness', 'akismet_show_user_comments_approved', ) as $setting_key ) { $setting_value = $request->get_param( $setting_key ); if ( is_null( $setting_value ) ) { // This setting was not specified. continue; } // From 4.7+, WP core will ensure that these are always boolean // values because they are registered with 'type' => 'boolean', // but we need to do this ourselves for prior versions. $setting_value = Akismet_REST_API::parse_boolean( $setting_value ); update_option( $setting_key, $setting_value ? '1' : '0' ); } return self::get_settings(); } /** * Parse a numeric or string boolean value into a boolean. * * @param mixed $value The value to convert into a boolean. * @return bool The converted value. */ public static function parse_boolean( $value ) { switch ( $value ) { case true: case 'true': case '1': case 1: return true; case false: case 'false': case '0': case 0: return false; default: return (bool) $value; } } /** * Get the Akismet stats for a given time period. * * Possible `interval` values: * - all * - 60-days * - 6-months * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_stats( $request ) { $api_key = Akismet::get_api_key(); $interval = $request->get_param( 'interval' ); $stat_totals = array(); $response = Akismet::http_post( Akismet::build_query( array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' ); if ( ! empty( $response[1] ) ) { $stat_totals[$interval] = json_decode( $response[1] ); } return rest_ensure_response( $stat_totals ); } /** * Get the current alert code and message. Alert codes are used to notify the site owner * if there's a problem, like a connection issue between their site and the Akismet API, * invalid requests being sent, etc. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_alert( $request ) { return rest_ensure_response( array( 'code' => get_option( 'akismet_alert_code' ), 'message' => get_option( 'akismet_alert_msg' ), ) ); } /** * Update the current alert code and message by triggering a call to the Akismet server. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); // Make a request so the most recent alert code and message are retrieved. Akismet::verify_key( Akismet::get_api_key() ); return self::get_alert( $request ); } /** * Clear the current alert code and message. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); return self::get_alert( $request ); } private static function key_is_valid( $key ) { $response = Akismet::http_post( Akismet::build_query( array( 'key' => $key, 'blog' => get_option( 'home' ) ) ), 'verify-key' ); if ( $response[1] == 'valid' ) { return true; } return false; } public static function privileged_permission_callback() { return current_user_can( 'manage_options' ); } /** * For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization. */ public static function remote_call_permission_callback( $request ) { $local_key = Akismet::get_api_key(); return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) ); } public static function sanitize_interval( $interval, $request, $param ) { $interval = trim( $interval ); $valid_intervals = array( '60-days', '6-months', 'all', ); if ( ! in_array( $interval, $valid_intervals ) ) { $interval = 'all'; } return $interval; } public static function sanitize_key( $key, $request, $param ) { return trim( $key ); } } How Russia’s Offensive Damaged Critical Donbas Water Infrastructure - Novichok (Moscow) Times
Saturday, December 13, 2025
  • Login
No Result
View All Result
NEWSLETTER
Novichok (Moscow) Times
Social icon element need JNews Essential plugin to be activated.
  • Home
  • CARTOONS
  • UKRAINE
    • KYIV POST
    • Pravda
  • BELLINGCAT
  • THE INSIDER
  • NAVALNY
  • Home
  • CARTOONS
  • UKRAINE
    • KYIV POST
    • Pravda
  • BELLINGCAT
  • THE INSIDER
  • NAVALNY
No Result
View All Result
Novichok (Moscow) Times

How Russia’s Offensive Damaged Critical Donbas Water Infrastructure

by novichoktimes
June 24, 2022
in News
0
How Russia’s Offensive Damaged Critical Donbas Water Infrastructure

[ad_1]

On May 5, 2022, the Russian nationalist news outlet Russkaya Vesna (‘Russian Spring’) published a brief article stating that the Russian air force had destroyed Ukrainian soldiers’ barracks near Bilohorivka, a town in the Luhansk Region. The article, citing a Russian military source, claimed that the Russian air force used unguided bombs to destroy the facility. The article was accompanied by a video showing the attack, which was also uploaded to the publication’s Telegram account.

The video was made up of drone footage taken from two different angles. One, taken from directly above, observed unidentified persons walking through the grounds of the facility. The other, geolocated as to areas which were behind the Russian lines at the time, observed explosions from bombs hitting the area. The stationary nature of the drone suggested that a quadcopter type drone was used in both videos, likely commercial.

But Russkaya Vesna neglected to mention one key fact — this was a facility which provides drinking water to approximately one million people in the region.

The structure depicted was the water intake facility and first lift of the Popasna Water Pipeline, which pumps water from the Siverskyi Donets towards several settlements in the north of the Luhansk Region.

Drone footage of Russian strike on a Ukrainian water facility near Bilohorivka. (Source: RusVesna)

It’s not the first time that armed conflict has jeopardised the water infrastructure of eastern Ukraine. Water infrastructure in the Donbas, which was often shared by territories under Russian occupation and those under Ukrainian government control, was in a state of disrepair and in need of a massive overhaul prior to Russia’s full-scale invasion in February 2022.

As experts told Bellingcat, Russia’s full-scale invasion has exacerbated that trend, adding yet another dimension to the humanitarian catastrophe in the Donbas.

Map of the Donbas frontline as of 23 June, 2022, showing water infrastructure facilities mentioned in this article. Russian-occupied areas are shaded in red. Image by Michael Sheldon / MapCreator.

“The water situation is the Donbas region has been complicated by war since 2014. The region has few resources given the intense consumption of the water-hungry metals and coking industries and the densely populated areas. With few exceptions, the water stems from a small river the Siverskyi Donets flowing in the north”, said Dr. Sophie Lambroschini, a researcher on Eastern Europe, now working on economics in wartime in Ukraine at the Centre Marc Bloch in Berlin.

Dr. Lambroschini added that these large-scale pipeline and canal networks are part of a holistic system which requires electricity and chemical treatment; any disruption can cause humanitarian consequences hundreds of miles away: “When a critical node on that journey is cut, all the settlements downstream are affected.”

The Siverskyi Donets: A Frontline River

The Siverskyi Donets river is one of the most important waterways of the Donbas Region, flowing through cities such as Izyum, Lysychansk and Donetsk into Russia, where it meets the Don River.

It is also of great strategic significance; Russian forces have fought to establish bridgeheads across the river as they push deeper into the Donbas.

On May 8 Russia attempted a river crossing north of the water facility. After heavy fighting, these Russian forces were destroyed by the Ukrainian military which widely publicised its success.

Open source imagery shows that the pumping station and first lift of the Popasna Water Pipeline sustained heavy damage on further occasions after the May 5 attack.

Imagery from a PlanetScope Super Dove satellite showed a change which suggested additional damage to the facility on May 8 that was not visible the previous day. It is unclear whether the facility was functional at this time, but the additional damage appeared severe and would likely complicate reconstruction.

PlanetScope Super Dove imagery showing damage to a water facility near Bilohorivka from May 7 to May 8. (Source: Planet Labs)

In the above imagery, a white blob to the right of the pumping station (seen under the arrow) depicts debris from an explosion at the facility. This was later confirmed with higher resolution imagery (as will be detailed  later).

On May 8, the head of the Luhansk regional military administration and Governor of Luhansk Oblast, Serhiy Haidai, announced that at one of the filter stations, a power substation, and open switchgear with transformers were damaged. He added that due to shelling of the Popasna water pipeline, one million people would be without water. The Ukrainian Ministry of Reintegration of the Temporarily Occupied Territories clarified in a press release that this was in reference to the May 8 attack.

Online maps show the presence of a filtration station in the area at coordinates 48.9179925, 38.2670593, about 3.5 kilometres from the water intake station on the Siverskyi Donets River, on the other side of the town of Bilohorivka. It is not known whether this is the facility to which Haidai referred. Bellingcat was unable to establish whether there is a filter at the aforementioned intake station itself.

High-resolution imagery from this main filtration station (and second lift) near Bilohorivka did show potential artillery impacts near and on the facility grounds on June 3, 2022. However it was not possible to determine the extent of the damage.

Skysat footage from Planet Labs, taken June 3, showing damage to a water filtration facility near Bilohorivka. (Source: Planet Labs)

Returning to the water intake facility on the riverbank, satellite imagery collected by Planet Labs Skysat on May 17, 2022, showed the true extent of the damage to the structure. Several craters (highlighted with stippled circles) were visible throughout the territory of this water pumping facility.

Skysat footage from Planet Labs, taken May 17, showing damage at the aforementioned water facility near Bilohorivka. (Source: Planet Labs)

The May 17 imagery showed craters surrounding the electrical substation and open switchgear (the collection of transformers circled to the left of the building) as well as a completely destroyed pumping station (centre). Haidai wrote in his May 8 announcement that it will not be possible to restore the facility to working condition during wartime. Whichever of the two facilities he may have referred to, the extent of damage seen on images of both makes his prediction plausible.

It is unclear who was responsible for the damage to the water facility on May 8. The area was subject to additional attempted crossings by the Russian military, and imagery from the ground showed evidence of heavy fighting.

Picture showing water intake facility near Bilohorivka destroyed. (Source: Yuriy Butusov / Censor.UA, republished with permission)

On May 14, editor of censor.net Yuriy Butusov posted pictures of the aftermaths of the battles which raged in the area between May 5 and 13, 2022. One of the images showed the water facility in the background, having taken considerable damage. The buildings were geolocated by Twitter user @RedIntelPanda, and the location confirmed by the @GeoConfirmed Twitter account, which specialises in geolocation.

The Southern Canals

Further upstream, the Siverskyi Donets also intersects with a series of canals and pipelines which carry water into the Donetsk Region.

A large portion of the region directly south of the Siverskyi Donets river relies on these for water supply. Ever since the war in the Donbas broke out in 2014, the already ageing water infrastructure has found itself snaking in and out of front lines. The Siverskyi-Donets – Donbas canal (SDD), possibly the most significant water infrastructure in the region which flows into most of Donetsk Oblast, intersects at a critical point near Horlivka. In  2020, it was also reported as frequently damaged by exchanges of fire by the warring parties.

Similarly, on the outskirts of Donetsk, the Donetsk Filtration Station (DFS) lies wedged between Ukrainian and Russian positions near the Yasynuvata industrial zone. Due to its position on the front lines, the DFS has been subject to shutdowns as a result of skirmishes and shelling several times throughout the years.

With Russia’s full-scale invasion those front lines have moved forward — putting the SDD at further risk.

On May 17, 2022, regional water provider Voda Donbasu issued a statement that its most important facilities remain ‘de-energised’ as a result of the war. This means that a lack of electricity hindered their operation, whether the facilities themselves had been attacked or not.

This included the DFS, as well as the third lift of the SDD canal, located near the front lines of Horlivka.

The Voda Donbasu statement also mentioned that the pump stations of the first and second lift of the South Donbas Water Way (SDWW), both located near Donetsk, were de-energised.

Bellingcat analysed Planet satellite imagery of the second lift pump station from March 29, April 7, and April 25. The imagery showed no apparent damage on March 29. By April 7, burn marks and possible artillery impacts were visible nearby.

Planet satellite imagery showing damage to a water facility in Donetsk Region. (map link)

By April 25, the fields surrounding the facility were visibly covered in dark specks, suggesting a high amount of artillery impacts.

Planet satellite imagery showing damage to a water facility in Donetsk Region. (map link)

The SDWW carries water down to Mariupol from the SDD in Donetsk, and has long been jeopardised due to the first lift’s precarious position on the front lines near Avdiivka. Before Russia’s full-scale invasion, the second lift lay within Ukrainian government-held territory.

As long as the war continues, experts say, the outlook for water security in the Donbas remains bleak.

“At present the extensive water supply system that was supplying drinking water to four million people and supplying industry has stopped operating”, said Dr. Lambroschini. “The canal and pipeline system is damaged by months of shelling. Also water can’t flow without electricity to operate pumps and filters. Power lines have been cut, power stations bombed. As a result the whole region under the impact of the Russian advance into Ukrainian territory in most of Luhansk and Donetsk Oblast has been cut off from essential utilities (power, water, sewage).”

“At this point the water situation will remain critical because repairs would require de-mining and re-establishing power lines.”


Bellingcat is a non-profit and the ability to carry out our work is dependent on the kind support of individual donors. If you would like to support our work, you can do so here. You can also subscribe to our Patreon channel here. Subscribe to our Newsletter and follow us on Twitter here.



[ad_2]

Source link

novichoktimes

novichoktimes

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Usefull Links

  • Home
  • CARTOONS
  • UKRAINE
    • KYIV POST
    • Pravda
  • BELLINGCAT
  • THE INSIDER
  • NAVALNY

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
  • UKRAINE
  • CARTOONS
  • News

© 2021-2023 Novichok (Moscow) Times

No Result
View All Result
  • Home
  • CARTOONS
  • UKRAINE
    • KYIV POST
    • Pravda
  • BELLINGCAT
  • THE INSIDER
  • NAVALNY

© 2021-2023 Novichok (Moscow) Times

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In