HEX
Server: nginx/1.28.1
System: Linux iZgw8b5bpgd4jyptfmmmxgZ 6.6.102-5.2.alnx4.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Nov 27 23:11:10 CST 2025 x86_64
User: www (1000)
PHP: 8.2.28
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.scdc-marine.com/wp-content/plugins/Static-Html-Output/plugin/deployers/Netlify.php
<?php

class WP2Static_Netlify extends WP2Static_SitePublisher {
    public function __construct() {
        $this->loadSettings( 'netlify' );
        $this->settings[ 'netlifySiteID' ];
        $this->settings[ 'netlifyPersonalAccessToken' ];
        $this->base_url = 'https://api.netlify.com';
        $this->detectSiteID();
        if ( defined( 'WP_CLI' ) ) {
            return;
        }
        switch ( $_POST[ 'ajax_action' ] ) {
            case 'test_netlify': $this->loadArchive();
            $this->test_netlify();
            break;
            case 'netlify_do_export': $this->bootstrap();
            $this->loadArchive();
            $this->deploy();
            break;
        }
    }

    public function detectSiteID() {
        $this->site_id = $this->settings[ 'netlifySiteID' ];
        if ( strpos( $this->site_id, 'netlify.com' ) !== false ) {
            return;
        } elseif ( strpos( $this->site_id, '.' ) !== false ) {
            return;
        } elseif ( strlen( $this->site_id ) === 37 ) {
            return;
        } else {
            $this->site_id .= '.netlify.com';
        }
    }

    public function deploy() {
        $this->zip_archive_path = $this->settings[ 'wp_uploads_path' ] . '/' . $this->archive->name . '.zip';
        $zip_deploy_endpoint = $this->base_url . '/api/v1/sites/' . $this->site_id . '/deploys';
        try {
            $headers = array( 'Authorization: Bearer ' . $this->settings[ 'netlifyPersonalAccessToken' ], 'Content-Type: application/zip', );
            require_once dirname( __FILE__ ) . '/../WP2Static/Request.php';
            $this->client = new WP2Static_Request();
            $this->client->postWithFileStreamAndHeaders( $zip_deploy_endpoint, $this->zip_archive_path, $headers );
            $this->checkForValidResponses( $this->client->status_code, array( '200', '201', '301', '302', '304' ) );
            $this->finalizeDeployment();
        } catch ( Exception $e ) {
            $this->handleException( $e );
        }
    }

    public function test_netlify() {
        $this->zip_archive_path = $this->settings[ 'wp_uploads_path' ] . '/' . $this->archive->name . '.zip';
        $site_info_endpoint = $this->base_url . '/api/v1/sites/' . $this->site_id;
        try {
            $headers = array( 'Authorization: Bearer ' . $this->settings[ 'netlifyPersonalAccessToken' ], );
            require_once dirname( __FILE__ ) . '/../WP2Static/Request.php';
            $this->client = new WP2Static_Request();
            $this->client->getWithCustomHeaders( $site_info_endpoint, $headers );
            if ( isset( $this->client->headers[ 'x-ratelimit-limit' ] ) ) {
                if ( ! defined( 'WP_CLI' ) ) {
                    echo 'SUCCESS';
                }
            } else {
                $code = 404;
                require_once dirname( __FILE__ ) . '/../WP2Static/WsLog.php';
                WsLog::l( 'BAD RESPONSE STATUS FROM API (' . $code . ')' );
                http_response_code( $code );
                echo 'Netlify test error';
            }
        } catch ( Exception $e ) {
            $this->handleException( $e );
        }
    }
}
$netlify = new WP2Static_Netlify();