MediaWiki:Common.js: Perbedaan antara revisi
Tidak ada ringkasan suntingan Tanda: Pengembalian manual Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 1.322: | Baris 1.322: | ||
}).done(function() { location.reload(); }); | }).done(function() { location.reload(); }); | ||
} | } | ||
} | |||
}); | |||
}); | |||
/* ========================================================== | |||
🛡️ MIPPEDIA LINK-SENTRY V3 - THE IRON WALL | |||
Fitur: Blokir Global Link Luar (Kecuali Admin & Patroli) | |||
Hanya mengizinkan domain yang ada di Whitelist. | |||
========================================================== */ | |||
mw.hook('editPage.setup').add(function() { | |||
var userGroups = mw.config.get('wgUserGroups'); | |||
// 1. IZINKAN: Admin (sysop) dan Patroli (patroller) | |||
// Mereka bebas memasukkan link apa saja. | |||
if (userGroups.indexOf('sysop') !== -1 || userGroups.indexOf('patroller') !== -1) return; | |||
$('#editform').on('submit', function(e) { | |||
var content = $('#wpTextbox1').val(); | |||
// Regex untuk menangkap domain dari URL (http/https) | |||
var urlRegex = /https?:\/\/([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})/gi; | |||
var match; | |||
var unauthorizedLinks = []; | |||
// 2. DAFTAR DOMAIN "JALUR HIJAU" (WHITELIST) | |||
// Silakan tambah di sini jika ada domain baru yang dipercaya. | |||
var trustedDomains = [ | |||
'mippedia.org', 'id.mippedia.org', 'en.mippedia.org', | |||
'concise.mippedia.org', 'data.mippedia.org', | |||
'mippediacommunity.site', // Project Network | |||
'kompas.com', 'cnnindonesia.com', 'detik.com', 'tempo.co', | |||
'antaranews.com', 'liputan6.com', 'republika.co.id', // Berita Indo | |||
'reuters.com', 'apnews.com', 'bbc.com', 'nytimes.com', 'theguardian.com', // Berita Global | |||
'wikipedia.org', 'wikimedia.org', 'wikidata.org' // Edukasi & Wiki Network | |||
]; | |||
while ((match = urlRegex.exec(content)) !== null) { | |||
var domainFound = match[1].toLowerCase(); | |||
var isTrusted = false; | |||
// Cek apakah domain cocok dengan whitelist atau merupakan subdomainnya | |||
for (var i = 0; i < trustedDomains.length; i++) { | |||
if (domainFound === trustedDomains[i] || domainFound.endsWith('.' + trustedDomains[i])) { | |||
isTrusted = true; | |||
break; | |||
} | |||
} | |||
if (!isTrusted) { | |||
unauthorizedLinks.push(domainFound); | |||
} | |||
} | |||
// 3. EKSEKUSI PENYEKATAN | |||
if (unauthorizedLinks.length > 0) { | |||
e.preventDefault(); | |||
// Ambil daftar unik domain yang diblokir | |||
var uniqueUnauthorized = [...new Set(unauthorizedLinks)]; | |||
alert( | |||
"❌ AKSES DITOLAK: DOMAIN TIDAK DIIZINKAN ❌\n\n" + | |||
"Mippedia hanya mengizinkan referensi dari sumber berita kredibel dan internal network.\n\n" + | |||
"Domain berikut dilarang untuk disimpan:\n- " + uniqueUnauthorized.join('\n- ') + "\n\n" + | |||
"Harap gunakan sumber terpercaya atau hubungi Admin jika Anda merasa domain ini penting." | |||
); | |||
return false; | |||
} | } | ||
}); | }); | ||
}); | }); | ||