HEX
Server: Apache/2.4.25
System: Linux ion14 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64
User: (10087)
PHP: 7.4.30
Disabled: 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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,system, exec, shell_exec, passthru, popen, proc_open
Upload Files
File: /home/www/web115/wordpress/wp-content/plugins/digimember/webpush_service_worker.js.php
<?php

define( 'NCORE_IS_AJAX',  false );
define( 'NCORE_IS_IPN',   false );
define( 'WP_USE_THEMES',  false );
define( 'WP_ADMIN',       true  ); // prevent 404 not found errors and redirects
$_SERVER['PHP_SELF'] = '/wp-admin/digimember/webpush_service_worker.js.php'; // prevent php notice message (Undefined offset) in vars.php
define( 'DONOTCACHEPAGE', 1 );


require_once dirname(__FILE__).'/digimember.php';

header( 'content-type: text/javascript; charset=utf-8' );

$api = dm_api();

$get_message_url = $api->link_logic->ajaxUrl( 'ajax/webpush', 'get_message', array( 'key' => '__KEY__', 'token' => '__TOKEN__', 'endpoint' => '__ENDPOINT__' ) );

?>

var target_url = '/';
var service_worker_version = "<?=$api->pluginVersion()?>";

if (typeof digimember_isVersionHigher == 'undefined')
{
    function digimember_isVersionHigher(a, b) {

        if (a === b) {
           return 0;
        }

        var a_components = a.split(".");
        var b_components = b.split(".");

        var len = Math.min(a_components.length, b_components.length);

        for (var i = 0; i < len; i++) {

            if (parseInt(a_components[i]) > parseInt(b_components[i])) {
                return 1;
            }

            if (parseInt(a_components[i]) < parseInt(b_components[i])) {
                return 0;
            }
        }

        if (a_components.length > b_components.length) {
            return 1;
        }

        return 0;
    }
}

self.addEventListener('push', function(event) {
    console.group('digimember sw push');
    console.info('digimember sw push: Received a push message', event);

    if (registration.pushManager)
    {
        registration.pushManager.getSubscription().then( function(subscription)
        {
            console.info('digimember sw push: For subscription', subscription);

            var ajax_url = "<?=$get_message_url?>";

            var key      = subscription.getKey('p256dh');
            var token    = subscription.getKey('auth');
            var endpoint = subscription.endpoint;

            key   = (key   ? btoa(String.fromCharCode.apply(null, new Uint8Array(key)))   : null);
            token = (token ? btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null);

            ajax_url = ajax_url.replace( /__KEY__/, key ).replace( /__TOKEN__/, token ).replace( /__ENDPOINT__/, endpoint );

            console.info( 'digimember sw push: Fetching url: ', ajax_url );

            fetch( ajax_url )
              .then(
                function(response) {
                  if (response.status !== 200) {
                    console.log('digimember sw push: Looks like there was a problem. Status Code: ' +
                      response.status);
                    return;
                  }

                    response.json().then(function(data) {

                        var is_success  = data.status == 'SUCCESS';
                        var new_version = data.service_worker_version;
                        var must_update = digimember_isVersionHigher( new_version, service_worker_version );

                        if (is_success) {
                            target_url = data.url;

                            var title = data.title;

                            delete data.title;
                            delete data.status;
                            delete data.url;
                            delete data.service_worker_version;

                            self.registration.showNotification( title, data ).then(function () {
                                console.info('digimember sw push ok: ',  data);
                            }).catch(function (ex) {
                                console.error('digimember sw push error:', ex);
                            });
                        }
                        else {
                            console.error('digimember sw push: ',  data);
                        }

                        if (must_update)
                        {
                            console.info( 'digimember sw push: Updating service worker from version ' + service_worker_version + ' to version ' + new_version );
                            self.registration.update();
                        }
                  });
                }
              )
              .catch(function(err) {
                console.error('digimember sw push: Fetch Error :-S', err);
              });
         });
     }
    console.groupEnd();
});






self.addEventListener('notificationclick', function(event) {

  console.log('digimember sw click: On notification click: ', event.notification.tag);
  // Android doesn’t close the notification when you click on it
  // See: http://crbug.com/463146
  event.notification.close();

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(clients.matchAll({
    type: 'window'
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url === '/' && 'focus' in client) {
        return client.focus();
      }
    }
    if (clients.openWindow) {
      return clients.openWindow( target_url );
    }
  }));
});