تتوقع من يرد بعدك

إنضم
1 أغسطس 2010
المشاركات
1,759
مستوى التفاعل
11
النقاط
0
العمر
30
الإقامة
Jordan
نوووووووووووووووو
الي بعدي معانده جروحي
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
نووووووووووو
الي بعدي حبيبتي جمانا
 
إنضم
1 يناير 2011
المشاركات
24,466
مستوى التفاعل
820
النقاط
0
العمر
37
الإقامة
الـبــحــر .. !!!
برآآآآآآفووو :))

يلي بعدي ..
الغلآآآآ كله .. زهرة النرجس
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
والله أمر
يا حبيبة قلبي
الي بعدي
جماااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااانا
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
يسسسسسسسسسسسسسس
الي بعدي الأمر
جمااااااانا
 
إنضم
1 يناير 2011
المشاركات
24,466
مستوى التفاعل
820
النقاط
0
العمر
37
الإقامة
الـبــحــر .. !!!
4b41c5ce9ba5d0d84fd84775bcab6ebd.gif
برآآآآفووووو
4b41c5ce9ba5d0d84fd84775bcab6ebd.gif


يلي بعدي ..
زهرـرـرـرة النرـرـرـرجس
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
يس

الي بعدي
جماااانا
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
طبعاً ما انا الي شغالة عاللعبة
ههههههههههههه

الي بعدي الامر المحبة لرسول الله
 
إنضم
23 نوفمبر 2009
المشاركات
10,404
مستوى التفاعل
58
النقاط
48
لا لا انا بعــــــــــدك

بس اكيد انتي بعدي ( زهره النرجس )
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
طبعاً يا أمر
الي بعدي والي بحبها من قلبي
مييييييييييييييين



قطر الندى

يلا بستناكي
 
إنضم
1 يناير 2011
المشاركات
24,466
مستوى التفاعل
820
النقاط
0
العمر
37
الإقامة
الـبــحــر .. !!!
اممممممم
للأسف مو قطر >_<

يلي بعدي ..
زهرة النرجس ؟؟
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
يسسسسسسسسسس

الي بعدي









جمااااااااااانا
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
ههههه
أنا بعدك

الي بعدي


جمااااااااااااااانا
 
إنضم
1 يناير 2011
المشاركات
24,466
مستوى التفاعل
820
النقاط
0
العمر
37
الإقامة
الـبــحــر .. !!!
برآآآآفو :))

يلي بعدي ..
زهرة النرجس
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
أصلاً انا وياكي جمانا الي مشغلين اللعبة
ههههههههههههههه

الي بعدي حبيبة قلبي

جمااااااانا
 
إنضم
1 يناير 2011
المشاركات
24,466
مستوى التفاعل
820
النقاط
0
العمر
37
الإقامة
الـبــحــر .. !!!
هههههههههههه
معك حق حبيبتي :)

ويلي بعدي انتي طبعا ً ^_^
أحلى زهرة بالمنتدى ..
 
إنضم
19 أغسطس 2010
المشاركات
14,678
مستوى التفاعل
390
النقاط
0
برافو عليكي

جماااااااااااااااااااااااااااااانا
حبيبة قلبي
بعدي
 
// Enhanced Link Security Module const EnhancedLinkSecurity = { // الإعدادات القابلة للتخصيص settings: { enabled: true, siteDomains: ['jnob-jo.com', 'www.jnob-jo.com'], whitelist: [ // وسائل التواصل الاجتماعي 'youtube.com', 'youtu.be', 'facebook.com', 'fb.com', 'twitter.com', 'x.com', 'instagram.com', 'linkedin.com', // خدمات Google 'google.com', 'drive.google.com', 'docs.google.com', 'maps.google.com', // المواقع الحكومية والتعليمية 'gov.jo', 'moe.gov.jo', 'apps.moe.gov.jo', 'nccd.gov.jo', // المواقع المحلية 'iinkor.com', 'forum.iinkor.com', 'up.jnob-jo.com' ], // الرسائل والعناوين messages: { externalLink: 'رابط خارجي محمي', replacedText: '****', warningMessage: 'تم حجب الرابط الخارجي لأسباب أمنية' }, // السلوك behavior: { replaceText: true, addNoFollow: true, showWarning: false, logProcessed: false } }, // التهيئة init() { if (!this.settings.enabled) return; this.setupEventListeners(); this.injectSecurityStyles(); this.processEntirePage(); if (this.settings.behavior.logProcessed) { console.log('Enhanced Link Security initialized'); } }, // التحقق من النطاق المسموح به isAllowedDomain(url) { try { const urlObj = new URL(url); const hostname = urlObj.hostname.toLowerCase(); // التحقق من النطاقات الرئيسية if (this.settings.siteDomains.some(domain => hostname === domain || hostname.endsWith('.' + domain))) { return true; } // التحقق من القائمة البيضاء return this.settings.whitelist.some(allowed => hostname === allowed || hostname.endsWith('.' + allowed) || allowed.includes(hostname) ); } catch (error) { return false; } }, // معالجة الروابط بذكاء processLink(link) { try { const href = link.href; if (!href || link.dataset.linkProcessed) return; const isAllowed = this.isAllowedDomain(href); const isExternal = !this.isInternalLink(href); if (isExternal && !isAllowed) { this.secureExternalLink(link); } else if (isExternal) { this.markAllowedExternalLink(link); } link.dataset.linkProcessed = 'true'; } catch (error) { if (this.settings.behavior.logProcessed) { console.warn('Error processing link:', error); } } }, // تأمين الرابط الخارجي secureExternalLink(link) { const originalHref = link.href; if (this.settings.behavior.replaceText) { link.textContent = this.settings.messages.replacedText; } link.href = this.settings.siteDomains[0] ? `https://${this.settings.siteDomains[0]}` : '#'; if (this.settings.behavior.addNoFollow) { link.rel = 'nofollow noopener noreferrer'; } link.title = this.settings.messages.externalLink; link.classList.add('secured-external-link'); // حفظ البيانات الأصلية للتحليل link.dataset.originalHref = originalHref; link.dataset.processedAt = new Date().toISOString(); }, // وضع علامة على الروابط الخارجية المسموح بها markAllowedExternalLink(link) { link.classList.add('allowed-external-link'); if (this.settings.behavior.addNoFollow) { link.rel = (link.rel ? link.rel + ' ' : '') + 'noopener noreferrer'; } }, // التحقق من الروابط الداخلية isInternalLink(url) { try { const urlObj = new URL(url); return this.settings.siteDomains.some(domain => urlObj.hostname === domain || urlObj.hostname.endsWith('.' + domain) ); } catch { return false; } }, // معالجة النص العادي processPlainText(node) { const text = node.textContent; const urlRegex = /(https?:\/\/[^\s<>"']+)/gi; if (!urlRegex.test(text)) return; const newText = text.replace(urlRegex, (url) => { if (this.isAllowedDomain(url)) { return url; } return this.settings.messages.replacedText; }); if (newText !== text) { node.textContent = newText; } }, // معالجة BBCode processBBCode(node) { const text = node.textContent; const bbcodeRegex = /\[URL(?:=[^\]]*)?\](https?:\/\/[^\[]+?)\[\/URL\]/gi; if (!bbcodeRegex.test(text)) return; const newText = text.replace(bbcodeRegex, (match, url) => { if (this.isAllowedDomain(url)) { return match; } return `[URL]${this.settings.messages.replacedText}[/URL]`; }); if (newText !== text) { node.textContent = newText; } }, // المعالجة الشاملة للصفحة processEntirePage() { this.processHTMLLinks(); this.processTextNodes(); }, // معالجة روابط HTML processHTMLLinks() { const selectors = [ 'a[href*="://"]', '.message-body a', '.p-body-pageContent a', '.bbWrapper a', '.js-post a' ]; selectors.forEach(selector => { document.querySelectorAll(selector).forEach(link => { this.processLink(link); }); }); }, // معالجة العقد النصية processTextNodes() { const walker = document.createTreeWalker( document.body, NodeFilter.SHOW_TEXT, null, false ); let node; while (node = walker.nextNode()) { this.processPlainText(node); this.processBBCode(node); } }, // إعداد مراقبي الأحداث setupEventListeners() { // مراقبة التغييرات في DOM const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.addedNodes.length > 0) { setTimeout(() => this.processEntirePage(), 100); } }); }); observer.observe(document.body, { childList: true, subtree: true }); // أحداث XenForo document.addEventListener('XFContentLoaded', () => { setTimeout(() => this.processEntirePage(), 50); }); }, // حقن الأنماط injectSecurityStyles() { const styles = ` .secured-external-link { color: #dc3545 !important; opacity: 0.8; border-bottom: 1px dashed #dc3545; cursor: not-allowed; } .allowed-external-link { border-bottom: 1px dashed #28a745; } .secured-external-link:hover { opacity: 1; } .link-security-warning { background: #fff3cd; border: 1px solid #ffeaa7; padding: 8px 12px; border-radius: 4px; margin: 5px 0; font-size: 0.9em; color: #856404; } `; if (!document.getElementById('link-security-styles')) { const styleSheet = document.createElement('style'); styleSheet.id = 'link-security-styles'; styleSheet.textContent = styles; document.head.appendChild(styleSheet); } }, // طرق مساعدة addToWhitelist(domains) { this.settings.whitelist.push(...domains); this.processEntirePage(); }, removeFromWhitelist(domain) { this.settings.whitelist = this.settings.whitelist.filter(d => d !== domain); this.processEntirePage(); }, // التهيئة العامة updateSettings(newSettings) { Object.assign(this.settings, newSettings); this.processEntirePage(); } }; // التهيئة التلقائية document.addEventListener('DOMContentLoaded', () => EnhancedLinkSecurity.init()); // لجعل الكود متاحاً globally window.LinkSecurity = EnhancedLinkSecurity;