Plugin Directory

Changeset 3386387


Ignore:
Timestamp:
10/29/2025 11:53:39 AM (5 months ago)
Author:
clonable
Message:

Release 2.7.5

Location:
clonable
Files:
123 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • clonable/trunk/clonable-wp.php

    r3385333 r3386387  
    55Description: Official plugin for improving your clones made with Clonable.
    66Plugin URI: https://kb.clonable.net/en/introduction/getting-started/wordpress#de-clonable-plug-in-downloaden
    7 Version: 2.7.4
     7Version: 2.7.5
    88Author: Clonable BV
    99Author URI: https://www.clonable.net
     
    115115
    116116define('CLONABLE_NAME', 'Clonable');
    117 define('CLONABLE_VERSION', '2.7.4');
     117define('CLONABLE_VERSION', '2.7.5');
    118118
    119119if (defined('WP_CLI') && WP_CLI) {
  • clonable/trunk/objects/CurlBuilder.php

    r3384042 r3386387  
    33namespace Clonable\Objects;
    44
     5use Throwable;
     6
    57class CurlBuilder {
    68    private $curl;
     9
     10    const IP_MODE_46 = "ipv4_ipv6";
     11    const IP_MODE_4 = "ipv4";
     12    const IP_MODE_6 = "ipv6";
    713
    814    public function __construct($url) {
     
    2733        curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false);          // don't care about SSL
    2834
    29         if (self::canUseIpv6()) {
    30             curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP . ',[' . ClonableConfig::SERVER_IPV6 . ']']);
    31         } else {
    32             curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP]);
     35        switch (self::ipMode()) {
     36            case self::IP_MODE_46:
     37                curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP . ",[" . ClonableConfig::SERVER_IPV6 . "]"]);
     38                break;
     39            case self::IP_MODE_6:
     40                curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:[" . ClonableConfig::SERVER_IPV6 . "]"]);
     41                break;
     42            case self::IP_MODE_4:
     43            default:
     44                curl_setopt($this->curl, CURLOPT_RESOLVE, ["$site_url:443:" . ClonableConfig::SERVER_IP]);
     45                break;
    3346        }
     47
    3448        return $this;
    3549    }
    3650
    37     private static function canUseIpv6(): bool
    38     {
    39         $version = curl_version();
    40         if ($version) { // Version succeeded
    41             if ($version['features'] & CURL_VERSION_IPV6) { // Version supports IPv6
    42                 if (version_compare($version['version'], '7.34.0', '>=')) { // Version has happy eyeballs
    43                     return true;
     51    private static function ipMode() {
     52        $cached = get_transient("clonable_connection_mode");
     53        if ($cached === false) {
     54            $mode = self::IP_MODE_4;
     55            $version = curl_version();
     56            if ($version) { // Version succeeded
     57                if ($version['features'] & CURL_VERSION_IPV6) { // Version supports IPv6
     58                    if (self::canUseIpv6()) {
     59                        // Only if we know for sure IPv6 works, use it
     60                        $mode =  self::IP_MODE_6;
     61                    }
    4462                }
    4563            }
     64
     65            set_transient("clonable_connection_mode", $mode, 3600);
     66            return $mode;
     67        } else {
     68            return $cached;
    4669        }
     70    }
    4771
    48         return false;
     72    private static function canUseIpv6(): bool{
     73        // This resource is a simple connectivity check, so http is fine
     74        $url='http://ipv6.icanhazip.com/';
     75        return self::canReachUrl($url);
     76    }
     77
     78    private static function canUseIpv4(): bool {
     79        // This resource is a simple connectivity check, so http is fine
     80        $url='http://ipv4.icanhazip.com/';
     81        return self::canReachUrl($url);
     82    }
     83
     84    private static function canReachUrl(string $url): bool {
     85        try {
     86            $ch=curl_init();
     87            $timeout=3;
     88
     89            curl_setopt($ch, CURLOPT_URL, $url);
     90            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
     91            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
     92
     93            $result=curl_exec($ch);
     94            curl_close($ch);
     95
     96            return $result !== false;
     97        } catch (Throwable $e) {
     98            error_log("Clonable failed to check connectivity: " . $e->getMessage());
     99            return false;
     100        }
    49101    }
    50102
  • clonable/trunk/readme-da_DK.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-de_DE.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-es_ES.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-fr_FR.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-it_IT.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-nb_NO.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-nl_NL.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme-sv_SE.txt

    r3385333 r3386387  
    55Tested up to: 6.8.2
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/readme.txt

    r3385333 r3386387  
    55Tested up to: 6.8.3
    66Requires PHP: 7.2
    7 Stable tag: 2.7.4
     7Stable tag: 2.7.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.7.5
     35Add connectivity checks when determining which IP version to use.
     36
    3437v2.7.4
    3538Improved file uploads for subfolder clones.
  • clonable/trunk/services/SyncService.php

    r3302098 r3386387  
    1313class SyncService {
    1414    public function sync_site() {
     15        // Reset connectivity check
     16        delete_transient("clonable_connection_mode");
     17
    1518        if (get_option('clonable_subfolder_clone_origin_domain')) {
    1619            $url_parts = wp_parse_url('https://' . get_option('clonable_subfolder_clone_origin_domain'));
Note: See TracChangeset for help on using the changeset viewer.