Please login to your equinux account
If you can not see the login window (or if you did close it by accident), please disable your popup blocker and click on the link below.
Open Login Window
|
Cancel login
We have detected that you do not have enabled JavaScript. To use all functions on this website (and most other websites), please enable JavaScript in your browser settings.
About equinux
Products
Support
Store
About equinux
Support
Store
VPN Tracker
(Mac)
VPN Tracker World Connect
(Mac, iOS)
Mail Designer 365
(Mac)
tizi
TV Pro
(iOS, Apple TV, Android)
Live TV
(Mac, iOS, Apple TV)
TV Pro Mediathek
(iOS, Apple TV)
TV Pro
(iOS, Apple TV, Android)
Live TV
(Mac, iOS, Apple TV)
VPN Tracker (Mac)
VPN Tracker World Connect (Mac, iOS)
Mail Designer Pro 365 (Mac)
tizi
VPN Tracker 是否支援 SSL VPN? - KH1655
FAQ
聯絡人
常見問題
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
Lorem ipsum dolor sit amet,
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
VPN Tracker 是否支援 SSL VPN?
有些 VPN 供應商提供「SSL VPN」,作為 IPsec VPN 的替代方案。SSL VPN 並不是一個單一的標準,而是每個供應商都有自己特定的「SSL VPN」。 VPN Tracker 365 僅提供對 SonicWALL SSL 連接的完整支援,但我們計畫在未來支援其他一些流行的 SSL VPN 變體。 如果您有希望我們提供支援的 SSL VPN 連接,請
{ 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 `/zh-Hant/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/zh-Hant/${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/zh-Hant/${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)); }); }); }