Store
 

VPN Tracker có hỗ trợ SSL VPN không? - KH1655

Câu hỏi thường gặp

VPN Tracker có hỗ trợ SSL VPN không?
 
Một số nhà cung cấp VPN cung cấp "SSL VPN" như một giải pháp thay thế cho IPsec VPN. SSL VPN không phải là một tiêu chuẩn duy nhất, thay vào đó, mỗi nhà cung cấp có loại "SSL VPN" riêng. VPN Tracker 365 cung cấp hỗ trợ đầy đủ chỉ cho các kết nối SonicWALL SSL, nhưng chúng tôi có kế hoạch hỗ trợ một số biến thể SSL VPN phổ biến khác trong tương lai. Nếu bạn có kết nối SSL VPN mà bạn muốn chúng tôi hỗ trợ, vui lòng { element.addEventListener("mousedown", function(event) { if (event.detail > 1) { event.preventDefault(); } }); }); } function refreshCurrentLang(lang) { const url = new URL(window.location.href); url.searchParams.set('lang', lang); url.pathname = url.pathname.replace('/' + initialLang + '/faq', '/' + lang + '/faq'); url.pathname = url.pathname.replace('/us/faq', '/' + lang + '/faq'); url.pathname = url.pathname.replace('/en/faq', '/' + lang + '/faq'); window.history.pushState({}, '', url); window.location.reload(); } function resetFilters() { articleId = null; searchTerm = null; document.getElementById('faq-search').value = ''; } function setupSearchHandler() { const searchInput = document.getElementById('faq-search'); const searchIcon = document.querySelector('.search-icon'); if (!searchInput || !searchIcon) { return; } searchIcon.addEventListener('click', function() { searchInput.focus(); // Focus input when icon is clicked }); searchInput.addEventListener('input', function() { searchTerm = searchInput.value.toLowerCase().trim(); updateFilters(); }); if (initialSearchTerm) { searchInput.value = initialSearchTerm; searchTerm = initialSearchTerm.toLowerCase().trim(); updateFilters(); } } function toggeProductArticleFilter(id) { if (articleId == id) { articleId = null; } else { articleId = id; } updateFilters(); } function updateFilters() { refreshProductArticleFilter(); refreshSearchFilter(); } function refreshProductArticleFilter() { const faqItems = document.querySelectorAll('.faq-item'); if (faqItems.length == 0) { return; } let mode = 'filter'; if (articleId == null) { const productArticles = document.querySelectorAll('.faq-product-article-item'); productArticles.forEach(item => { item.classList.remove('selected'); }); mode = 'reset'; } else { const productArticle = document.getElementById('product-article-' + articleId); if (!productArticle) { return; } productArticle.classList.add('selected'); const productArticles = document.querySelectorAll('.faq-product-article-item'); productArticles.forEach(item => { // only if not the current one if (item.id != productArticle.id) { item.classList.remove('selected'); } }); } faqItems.forEach(item => { let articles = item.getAttribute('data-product-articles'); if (!articles) { articles = ""; } articleTest = articles.split(',').filter(function(e) { return e.trim() != ''; }); const artikels = articles.split(','); item.style.display = (mode == 'reset' || articleTest.length == 0 || artikels.includes(articleId)) ? '' : 'none'; }); } function refreshSearchFilter() { if (!searchTerm) { return; } const searchWords = searchTerm.split(/\s+/); const faqItems = document.querySelectorAll('.faq-item'); faqItems.forEach(item => { const rawData = item.getAttribute('data-search-info'); const searchData = decodeHtmlEntities(rawData).toLowerCase(); const matchesAll = searchWords.every(word => searchData.includes(word)); item.style.display = (matchesAll && item.style.display != 'none') ? '' : 'none'; }); } function decodeHtmlEntities(encodedString) { const textArea = document.createElement('textarea'); textArea.innerHTML = encodedString; return textArea.value; } function jumpToInitial(faqId) { if (faqId) { const faqItem = document.getElementById('faq-item-' + faqId); if (faqItem) { setTimeout(() => { faqItem.scrollIntoView({ behavior: 'instant', block: 'start', inline: 'nearest' }); }, 1); } } } function openInitialFaq(faqId) { if (!faqId) { return; } let faqElement = document.getElementById("faq-answer-" + faqId); if (faqElement) { faqElement.classList.add("show"); } let faqItemPreloaded = document.getElementById('faq-answer-preloaded-' + faqId); if (faqItemPreloaded) { faqItemPreloaded.classList.remove('collapse'); lastFAQIdOpened = faqId; } } var lastFAQIdOpened = null; function toggleFaq(faqId) { let faqElement = document.getElementById("faq-answer-" + faqId); let contentContainer = document.getElementById('faq-answer-content-' + faqId); if (faqElement.classList.contains("show")) { faqElement.classList.remove("show"); let faqItemPreloaded = document.getElementById('faq-answer-preloaded-' + faqId); if (faqItemPreloaded) { faqItemPreloaded.classList.add('collapse'); } if (lastFAQIdOpened == faqId) { lastFAQIdOpened = null; } } else { faqElement.classList.add("show"); let faqItemPreloaded = document.getElementById('faq-answer-preloaded-' + faqId); if (faqItemPreloaded) { faqItemPreloaded.classList.remove('collapse'); } faqDisplayPreActions(faqId); if (lastFAQIdOpened == faqId) { return false; } lastFAQIdOpened = faqId; Livewire.dispatch("loadFAQDetails", { faqId: faqId }); // setTimeout(() => { // Livewire.dispatch("loadFAQDetails", { // faqId: faqId // }); // }, 1); } } window.addEventListener('faqLoaded', function(event) { let faqId = event.detail?.faqId; let content = event.detail?.content; let contentContainer = document.getElementById('faq-answer-content-' + faqId); if (content && contentContainer) { let faqElement = document.getElementById("faq-answer-" + faqId); if (!faqElement.classList.contains("show")) { faqElement.classList.add("show"); } contentContainer.innerHTML = content; let faqItemPreloaded = document.getElementById('faq-answer-preloaded-' + faqId); if (faqItemPreloaded) { faqItemPreloaded.classList.add('collapse'); } faqDisplayPostActions(faqId); } }); function generateSlugLink(faqId, faqItem) { const slug = faqItem.getAttribute('data-slug'); const question = faqItem.querySelector('.faq-question').innerText; const productid = faqItem.getAttribute('data-productid'); return `/vi/faq/${faqId}/${productid}/${slug}/KH${faqId}?identifier=equinux.com`; } function faqDisplayPreActions(faqId) { const faqItem = document.getElementById('faq-item-' + faqId); if (!faqItem) { return; } const newUrl = generateSlugLink(faqId, faqItem); history.pushState(null, '', newUrl); } function faqDisplayPostActions(faqId) { const faqItem = document.getElementById('faq-item-' + faqId); if (!faqItem) { return; } // update all the meta info updateFAQMetaInfo(faqId); // register new handlers setTimeout(() => { updateFilters(); setupRatingHandlers(); }, 1); } function updateFAQMetaInfo(faqId) { const faqItem = document.getElementById('faq-item-' + faqId); if (!faqItem) { return; } // fetch the question and answer aswell as the data-search-info const question = faqItem.querySelector('.faq-question').innerText; const answer = faqItem.querySelector('.faq-answer-content').innerText; const searchInfo = faqItem.getAttribute('data-search-info'); // remove all html tags and newlines from the question and answer const cleanQuestion = question.replace(/<\/?[^>]+(>|$)/g, "").replace(/\n/g, " "); const cleanAnswer = answer.replace(/<\/?[^>]+(>|$)/g, "").replace(/\n/g, " "); // update the canonical URL const hostname = window.location.hostname; const protocol = window.location.protocol; const port = window.location.port ? ':' + window.location.port : ''; const newUrl = generateSlugLink(faqId, faqItem); const canonicalUrl = `${protocol}//${hostname}${port}${newUrl}`; const canonicalLink = document.querySelector('link[rel="canonical"]'); if (canonicalLink) { canonicalLink.setAttribute('href', canonicalUrl); } else { const newCanonicalLink = document.createElement('link'); newCanonicalLink.setAttribute('rel', 'canonical'); newCanonicalLink.setAttribute('href', canonicalUrl); document.head.appendChild(newCanonicalLink); } // also update the document title const title = document.querySelector('title'); if (title) { title.innerText = cleanQuestion; } // update the meta title const metaTitle = document.querySelector('meta[name="title"]'); if (metaTitle) { metaTitle.setAttribute('content', cleanQuestion); } else { const newMetaTitle = document.createElement('meta'); newMetaTitle.setAttribute('name', 'title'); newMetaTitle.setAttribute('content', cleanQuestion); document.head.appendChild(newMetaTitle); } // update the meta description const metaDescription = document.querySelector('meta[name="description"]'); if (metaDescription) { metaDescription.setAttribute('content', cleanQuestion + ' ' + cleanAnswer); } // update the meta keywords const metaKeywords = document.querySelector('meta[name="keywords"]'); if (metaKeywords) { metaKeywords.setAttribute('content', searchInfo); } // update/create the meta og:title const metaOgTitle = document.querySelector('meta[property="og:title"]'); if (metaOgTitle) { metaOgTitle.setAttribute('content', cleanQuestion); } else { const newMetaOgTitle = document.createElement('meta'); newMetaOgTitle.setAttribute('property', 'og:title'); newMetaOgTitle.setAttribute('content', cleanQuestion); document.head.appendChild(newMetaOgTitle); } // update/create the meta og:description const metaOgDescription = document.querySelector('meta[property="og:description"]'); if (metaOgDescription) { metaOgDescription.setAttribute('content', cleanQuestion + ' ' + cleanAnswer); } // update/create the meta og:url const metaOgUrl = document.querySelector('meta[property="og:url"]'); if (metaOgUrl) { metaOgUrl.setAttribute('content', canonicalUrl); } else { const newMetaOgUrl = document.createElement('meta'); newMetaOgUrl.setAttribute('property', 'og:url'); newMetaOgUrl.setAttribute('content', canonicalUrl); document.head.appendChild(newMetaOgUrl); } } let currentProductSelection = null; function setupProductObserver() { const productDropdown = document.getElementById('productDropdown'); if (productDropdown) { productDropdown.addEventListener('click', function() { const dropdownItems = document.querySelectorAll('.dropdown-item'); dropdownItems.forEach(item => { item.addEventListener('click', function() { let newProductSelection = this.textContent.trim(); if (newProductSelection != currentProductSelection) { currentProductSelection = newProductSelection; } resetFilters(); }); }); }); } } function isElementInViewport(el) { const rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } function setupRatingHandlers() { document.querySelectorAll('.rating-star').forEach(star => { if (star.classList.contains('disabled')) { return; } star.addEventListener('mouseover', function() { const faqid = this.getAttribute('data-faq-id'); const rating = parseInt(this.getAttribute('data-rating')); document.querySelectorAll(`.rating-star[data-faq-id="${faqid}"]`).forEach(s => { if (parseInt(s.getAttribute('data-rating')) <= rating) { s.classList.remove('waiting'); s.classList.add('selected'); } else { s.classList.remove('selected'); s.classList.add('waiting'); } }); }); star.addEventListener('mouseout', function() { const faqid = this.getAttribute('data-faq-id'); document.querySelectorAll(`.rating-star[data-faq-id="${faqid}"]`).forEach(s => { if (!s.classList.contains('disabled')) { s.classList.remove('selected'); s.classList.add('waiting'); } }); }); }); document.querySelectorAll('.rating-star').forEach(button => { button.addEventListener('click', function(event) { event.preventDefault(); const faqId = this.getAttribute('data-faq-id'); const rating = this.getAttribute('data-rating'); const url = `/rate/stars/faq/${faqId}/0/vi/${rating}`; const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrfToken, 'X-Requested-With': 'XMLHttpRequest' }, // body: JSON.stringify({ // rating: rating // }) }) .then(response => response.json()) .then(data => { if (data && data === 1) { document.querySelectorAll(`.rating-star[data-faq-id="${faqId}"]`).forEach(btn => { btn.classList.remove('waiting'); btn.classList.add('disabled'); if (parseInt(btn.getAttribute('data-rating')) <= rating) { btn.classList.add('selected'); } else { btn.classList.add('inactive'); } }); // this.classList.add('selected'); } }) .catch(data => console.error('Error:', data)); }); }); document.querySelectorAll('.helpful-btn').forEach(button => { button.addEventListener('click', function(event) { event.preventDefault(); const faqId = this.getAttribute('data-faq-id'); const helpful = this.getAttribute('data-helpful'); const url = `/rate/helpful/faq/${faqId}/0/vi/${helpful}`; const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrfToken, 'X-Requested-With': 'XMLHttpRequest' }, // body: JSON.stringify({ // helpful: helpful // }) }) .then(response => response.json()) .then(data => { if (data && data === 1) { document.querySelectorAll(`.helpful-btn[data-faq-id="${faqId}"]`).forEach(btn => { btn.classList.remove('waiting'); btn.classList.add('inactive'); btn.classList.add('disabled'); }); this.classList.add('selected'); } }) .catch(data => console.error('Error:', data)); }); }); }