| NSC by orhanergun.net
    • Courses
    • Subscription
    • Guides
    • About
    • Contact
  • Login/Register
    • Login
    • Register
    • Login
    • Register
 | NSC

Advance Your Career with NSC's Comprehensive Online Training in Networking, Security, and Cloud Technologies.

  • [email protected]
  • +1 530 567 4539
  • Courses
  • Subscription
  • Guides
  • About
  • Contact
Troubleshooting Common Issues with Cisco vSmart Controllers
  • Home
  • Guides
  • SD-WAN
  • Ethan Tucker
    Ethan Tucker
  • Fri, 26 Jul 2024

Troubleshooting Common Issues with Cisco vSmart Controllers

Troubleshooting Common Issues with Cisco vSmart Controllers<//title> <h1>Troubleshooting Common Issues with Cisco vSmart Controllers</h1> <p>Deploying Cisco vSmart Controllers in an SD-WAN architecture enhances network management and efficiency but can also introduce some technical challenges. Identifying and resolving these issues promptly ensures that your network remains robust and reliable. This article explores the most common problems encountered with Cisco vSmart Controllers and provides clear, actionable solutions to help you maintain optimal network performance.</p> <h2>Understanding Cisco vSmart Controllers</h2> <p>Cisco vSmart Controllers play a crucial role in the management of SD-WAN networks, responsible for facilitating intelligent path control, policy-based routing, and the orchestration of secure data traffic across complex networks. Before diving into troubleshooting, it's essential to understand the critical functions of these devices and their importance in a Cisco SD-WAN solution. This foundation will aid in diagnosing and correcting issues more efficiently.</p> <h3>Connectivity Issues and Solutions</h3> <p>One of the most common issues faced by network administrators is connectivity disruptions. These can be caused by misconfigurations, faulty hardware, or software glitches. To tackle connectivity problems:</p> <ul> <li>Verify the physical connections: Ensure all cables and ports are secure and undamaged.</li> <li>Check the configuration settings: Misconfiguration of IP addresses, gateway settings, or DNS configurations can lead to connectivity failures.</li> <li>Update firmware and software: Regular updates can resolve known bugs that may affect connectivity.</li> </ul> <h3>Policy Configuration Complications</h3> <p>Incorrect policy settings can severely disrupt network performance and traffic flow. To manage policy configuration challenges:</p> <ul> <li>Review policy configurations: Regular audits of policy settings can help avoid mismatches and improper configurations.</li> <li>Utilize logging and monitoring tools: These tools can provide insights into where policies may be conflicting or not behaving as expected.</li> <li>Reset to default settings: If issues persist, resetting your vSmart controller to default settings can serve as a baseline to reconfigure policies accurately.</> </ul> <h3>Security and Authentication Errors</h3> <p>Security is a critical pillar in any network, and errors in authentication protocols can expose your network to vulnerabilities. Here are strategies to mitigate these risks:</p> <ul> <li>Confirm certificate validity: Ensure that all certificates used for device authentication are valid and have not expired.</li> <li>Double-check encryption settings: Proper encryption settings prevent unauthorized access and ensure data integrity.</li> <li>Implement multi-factor authentication: Adding layers of security helps prevent unauthorized access even if one barrier fails.</li> </ul> <p>For a deep dive into configuring and managing Cisco SD-WAN using vSmart controllers, consider enrolling in the <a href="https://netseccloud.com/courses/cisco/cisco-sd-wan-by-navid-yahyapour">Cisco SD-WAN course by Navid Yahyapour</a> at NetSecCloud.com. This course offers detailed insights and hands-on experience critical for any aspiring network administrator.</p> <h3>Performance Optimization</h3> <p>Finally, maintaining optimal performance is crucial. Performance issues can often be subtle and gradually impact network efficiency. To ensure your Cisco vSmart Controllers are operating at their best:</p> <ul> <li>Regularly monitor network traffic: This can help identify bottlenecks or unusual activity that may be impacting performance.</li> <li>Optimize traffic routing: Intelligent path selection ensures efficient data flow across your network.</li> <li>Conduct regular network audits: These audits help identify and rectify inefficiencies or potential improvements in your network configuration.</li> </ul> <p>A deep understanding of these issues and proactive troubleshooting can significantly enhance the stability and efficiency of networks managed by Cisco vSmart Controllers. This article provides the foundation needed to tackle the most common issues effectively.</p> <h4>Best Practices for Maintaining Cisco vSmart Controllers</h4> <p>Ensuring the ongoing health and performance of your Cisco vSmart Controllers involves adhering to several best practices. These proactive measures not only help in preventing many issues but also simplify the troubleshooting process when problems arise. By maintaining your controllers appropriately, you can significantly extend their operational lifespan and efficiency.</p> <h3>Regular System Updates</h3> <p>Keeping your vSmart Controllers updated with the latest software versions is critical. Cisco frequently releases updates to enhance functionality and patch security vulnerabilities. To maintain your system effectively:</p> <ul> <li>Schedule regular update checks: This ensures you are aware of available updates.</li> <li>Implement updates during low-traffic periods: To minimize disruption to network operations.</li> </ul> <h3>Comprehensive Network Monitoring</h3> <p>Continuous monitoring of your network allows for the early detection of potential issues before they escalate into serious problems. Integrating a robust monitoring system offers several benefits:</p> <ul> <li>Detailed traffic analysis: Helps in understanding traffic behavior and spotting anomalies.</li> <li>Real-time alerts: Provides instantaneous notifications about network health issues, allowing for swift action.</li> <li>Performance benchmarks: Establishes normal operating parameters to more easily identify deviations that may indicate problems.</li> </ul> <h3>Effective Configuration Management</h3> <p>Good configuration management practices are key to ensuring that your network environment remains stable and predictable. Some effective strategies include:</p> <ul> <li>Use of configuration backups: Regular backups of your current configurations can be lifesavers in the event of a malfunction or corruption.</li> <li>Change management processes: Document all changes to configurations to help track what modifications have been made, simplifying troubleshooting and rollback if necessary.</li> <li>Network configuration audits: Periodic reviews and audits of your network configuration help maintain alignment with best practices and compliance requirements.</li> </ul> <p>By following these best practices for maintaining your Cisco vSmart Controllers, you can ensure a more efficient, secure, and stable network, reducing the likelihood and impact of common problems. Staying proactive is key in the dynamic realm of network administration.</p> <h4>Conclusion</h4> <p>This section wraps up our discussion on the troubleshooting and maintenance of Cisco vSmart Controllers. By understanding common issues, adopting best practices, and utilizing effective troubleshooting techniques, you can enhance the reliability, security, and efficiency of your SD-WAN architecture. Continually advancing your knowledge and skills in these areas is crucial for modern network management, ensuring that your network keeps pace with evolving business needs and technology advancements.</p><h4>Conclusion</h4> <p>Mastering the troubleshooting of Cisco vSmart Controllers is essential for maintaining a robust and efficient SD-WAN network. Throughout this discussion, we've explored the common issues that can arise, as well as the best practices for preventing and resolving these challenges efficiently. By understanding not only the practical steps required but also embracing a proactive approach to network management, network administrators can significantly enhance network reliability and performance. Remember, the key to successful network management lies in continuous learning and staying updated with the latest technological advancements and updates provided by Cisco. Ensuring that your technical skills and knowledge are current will empower you and your organization to leverage the full capabilities of your SD-WAN infrastructure.</p> </div> <!-- Blog Author --> <div class="about-author"> <div class="media"> <div class="thumbnail"> <a href="https://netseccloud.com/instructors/ethan-tucker""> <img src="https://netseccloud.com/uploads/user_image/97c727daef9e364ad6a711617b748c72.jpg" alt="Ethan Tucker"> </a> </div> <div class="media-body"> <div class="author-info"> <h2 class="rbt-title-style-3 border-none"> <a class="hover-flip-item-wrapper" href="https://netseccloud.com/instructors/ethan-tucker"> Ethan Tucker </a> </h2> <span class="b3 subtitle"></span> </div> <div class="content"> <p class="description"><p>Hi this is Ethan. I'm a computer engineer who works 9 years for network security. Through my blogs you can learn about network security.</p></p> </div> </div> </div> </div> </div> </div> </div> </div> <!-- Start newsletter Area --> <aside class="rbt-newsletter-area newsletter-style-2 bg-color-primary rbt-section-gap"> <div class="container"> <div class="row row--15 align-items-center"> <div class="col-lg-12"> <div class="inner text-center"> <div class="section-title text-center"> <span class="subtitle bg-white-opacity">Get Latest informations</span> <h2 class="title color-white"><strong>Subscribe</strong> Our Free Newsletter</h2> <p class="description color-white mt--20">for the Latest in Technology Trends and Exclusive Offers!</p> </div> <form action="#" class="newsletter-form-1 mt--40"> <input type="email" name="email" placeholder="Enter Your E-Email"> <button type="submit" class="rbt-btn btn-md btn-gradient hover-icon-reverse"> <span class="icon-reverse-wrapper"> <span class="btn-text">Subscribe</span> <span class="btn-icon"><i class="feather-arrow-right"></i></span> <span class="btn-icon"><i class="feather-arrow-right"></i></span> </span> </button> </form> <div class="row row--15 mt--50"> <!-- Start Single Counter --> <div class="col-lg-3 offset-lg-3 col-md-6 col-sm-6 single-counter"> <div class="rbt-counterup rbt-hover-03 style-2 text-color-white"> <div class="inner"> <div class="content"> <p class="counter color-white"><span class="odometer" data-count="20000">00</span> </p> <p class="title color-white">Subscribers</p> </div> </div> </div> </div> <!-- End Single Counter --> <!-- Start Single Counter --> <div class="col-lg-3 col-md-6 col-sm-6 single-counter mt_mobile--30"> <div class="rbt-counterup rbt-hover-03 style-2 text-color-white"> <div class="inner"> <div class="content"> <p class="counter color-white"><span class="odometer" data-count="2000">00</span> </p> <p class="title color-white">Certificated Students</p> </div> </div> </div> </div> <!-- End Single Counter --> </div> </div> </div> </div> </div> </aside> <!-- End newsletter Area --> <script> $(document).on("scroll", function () { if ($(document).scrollTop() > 500) { $(".newsBlock").addClass("small"); } else { $(".newsBlock").removeClass("small"); } }); </script> <script> var c = function() { return({ log: function(msg) { consoleDiv = document.getElementById('console'); para = document.createElement('p'); text = document.createTextNode(msg); para.appendChild(text); consoleDiv.appendChild(para); } }); }(); window.onload = function () { var toc = ""; var level = 0; var i = 0; var maxLevel = 1; console.log(document.getElementById("contents").innerHTML); document.getElementById("contents").innerHTML = document.getElementById("contents").innerHTML.replace( /<h([\d])>([^<]+)<\/h([\d])>/gi, function (str, openLevel, titleText, closeLevel) { i++; if (openLevel != closeLevel) { c.log(openLevel) return str + ' - ' + openLevel; } if (openLevel > level && openLevel - level == 1) { toc += (new Array(openLevel - level + 1)).join("<ul>"); } else if (openLevel < level && level - openLevel >= 1) { toc += (new Array(level - openLevel + 1)).join("</ul>"); } level = parseInt(openLevel); var anchor = titleText.replace(/ /g, "_"); //toc += "<li><a href=\"#" + anchor + "\">" +i.toString()+". " + titleText toc += "<li><a href=\"#" + anchor + "\">" + titleText + "</a></li>"; return "<h" + openLevel + "><a name=\"" + anchor + "\">" + titleText + "</a></h" + closeLevel + ">"; } ); if (level) { toc += (new Array(level + 1)).join(""); } document.getElementById("palette").innerHTML += toc; document.getElementById("palette2").innerHTML += toc; }; </script><!-- Start Footer aera --> <footer class="rbt-footer footer-style-1 bg-color-white overflow-hidden"> <div class="footer-top"> <div class="container"> <div class="row g-5"> <div class="col-lg-3 col-md-6 col-sm-6 col-12"> <div class="footer-widget"> <div class="logo"> <a href="https://netseccloud.com/"> <img src="https://netseccloud.com/uploads/system/45a4872a507c6460ebe446fef39c31fe.png" alt=""> </a> </div> <p class="description mt--20">Advance Your Career with NSC's Comprehensive Online Training in Networking, Security, and Cloud Technologies</p> <ul class="social-icon social-default justify-content-start"> <li><a href="https://twitter.com/netseccloud"> <i class="feather-twitter"></i> </a> </li> <li><a href="https://www.instagram.com/netseccloud/"> <i class="feather-instagram"></i> </a> </li> <li><a href="https://www.linkedin.com/company/netseccloud"> <i class="feather-linkedin"></i> </a> </li> </ul> </div> </div> <div class="col-lg-3 col-md-6 col-sm-6 col-12"> <div class="footer-widget"> <p class="ft-title">Useful Links</p> <ul class="ft-link"> <li> <a href="https://netseccloud.com/about_us">About</a> </li> <li> <a href="https://netseccloud.com/become-instructor">Become an Instructor</a> </li> <li> <a href="https://netseccloud.com/affiliate">Become a Partner</a> </li> <li> <a href="https://netseccloud.com/contact">Contact</a> </li> </ul> </div> </div> <div class="col-lg-3 col-md-6 col-sm-6 col-12"> <div class="footer-widget"> <p class="ft-title">Get Contact</p> <ul class="ft-link"> <li><span>Whatsapp: </span><a href="https://wa.me/+97433950241" target="_blank">+974 3395 0241</a></li> <li><span>E-mail: </span>sales@netseccloud.com</li> </ul> </div> </div> <div class="col-lg-3 col-md-6 col-sm-6 col-12 newsletter-form"> <p class="ft-title">Newsletter</p> <div class="form-group right-icon icon-email mb--20"> <label for="email">Enter your Email here</label> <input id="newsemail" type="email"> </div> <div class="form-group mb--0"> <button class="rbt-btn rbt-switch-btn btn-gradient radius-round btn-sm" id="newsletter_button"> <span data-text="Submit Now">Subscribe</span> </button> </div> </div> </div> </div> </div> <div class="rbt-separator-mid"> <div class="container"> <hr class="rbt-separator m-0"> </div> </div> <!-- Start Copyright Area --> <div class="copyright-area copyright-style-1 ptb--20"> <div class="container"> <div class="row align-items-center"> <div class="col-xxl-6 col-xl-6 col-lg-6 col-md-12 col-12"> <p class="rbt-link-hover text-center text-lg-start">Copyright © 2014-2023 NSC All rights reserved</p> </div> <div class="col-xxl-6 col-xl-6 col-lg-6 col-md-12 col-12"> <ul class="copyright-link rbt-link-hover justify-content-center justify-content-lg-end mt_sm--10 mt_md--10"> <li><a href="https://netseccloud.com/terms_and_condition">Terms & Conditions</a></li> <li><a href="https://netseccloud.com/privacy_policy">Privacy policy</a></li> <li><a href="https://netseccloud.com/refund_policy">Refund policy</a></li> </ul> </div> </div> </div> </div> <!-- End Copyright Area --> </footer> <!-- End Footer aera --> <!-- End Page Wrapper Area --> <div class="rbt-progress-parent" style="bottom: 90px;"> <svg class="rbt-back-circle svg-inner" width="100%" height="100%" viewBox="-1 -1 102 102"> <path d="M50,1 a49,49 0 0,1 0,98 a49,49 0 0,1 0,-98" /> </svg> </div> <!-- JS ============================================ --> <!-- Modernizer JS --> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/modernizr.min.js"></script> <!-- Bootstrap JS --> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/bootstrap.min.js"></script> <!-- sal.js --> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/sal.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/swiper.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/magnify.min.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/jquery-appear.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/odometer.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/backtotop.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/isotop.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/imageloaded.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/wow.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/waypoint.min.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/easypie.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/text-type.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/jquery-one-page-nav.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/bootstrap-select.min.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/jquery-ui.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/magnify-popup.min.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/paralax-scroll.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/paralax.min.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/countdown.js"></script> <script src="https://netseccloud.com/assets/frontend/default/new/js/vendor/plyr.js"></script> <script src="https://netseccloud.com/assets/global/toastr/toastr.min.js"></script> <!-- Main JS --> <script src="https://netseccloud.com/assets/frontend/default/new/js/main.js"></script> <script src="https://netseccloud.com/assets/frontend/default/js/jquery.webui-popover.min.js" defer></script> <script type="text/javascript"> $(function() { setInterval(function(){ }, 40000); }); </script> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v14.0&appId=407174788128680&autoLogAppEvents=1" nonce="A8rg5ZuO"></script> <script type="text/javascript"> </script> <script> jQuery.event.special.touchstart = { setup: function( _, ns, handle ) { this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") }); } }; </script> <!-- SHOW TOASTR NOTIFIVATION --> <!-- <script type="text/javascript"> $(function () { $('[data-bs-toggle="tooltip"]').tooltip() }); if($('.tagify').height()){ $('.tagify').tagify(); } </script> --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.min.js" defer></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script> <script type="text/javascript"> jQuery(document).ready(function () { $('#download_pdf').click(function () { html2canvas(document.querySelector('#pdf_content')).then((canvas) => { let base64image = canvas.toDataURL('image/png'); // console.log(base64image); let pdf = new jsPDF('l', 'px', [1600, 1131]); pdf.addImage(base64image, 'PNG', 15, 15, 1340, 740); pdf.save('orhanergun_net_invoice.pdf'); }); }); $('#ebook_download_pdf').click(function () { html2canvas(document.querySelector('#ebook_pdf_content')).then((canvas) => { let base64image = canvas.toDataURL('image/png'); // console.log(base64image); let pdf = new jsPDF('p', 'px', [1400, 1131]); pdf.addImage(base64image, 'PNG', 15, 15, 1040, 440); pdf.save('orhanergun_net_invoice.pdf'); }); }); $('#invoice_download_pdf').click(function () { html2canvas(document.querySelector('#pdf_content')).then((canvas) => { let base64image = canvas.toDataURL('image/png'); // console.log(base64image); let pdf = new jsPDF('p', 'px', [1400, 1131]); pdf.addImage(base64image, 'PNG', 15, 15, 1040, 440); pdf.save('orhanergun_net_invoice.pdf'); }); }); }); </script> <script type="text/javascript"> function showAjaxModal(url) { // SHOWING AJAX PRELOADER IMAGE jQuery('#modal_ajax .modal-body').html('<div class="w-100 text-center pt-5"><img class="mt-5 mb-5" width="80px" src="https://netseccloud.com/assets/global/gif/page-loader-2.gif"></div>'); // LOADING THE AJAX MODAL jQuery('#modal_ajax').modal('show', {backdrop: 'true'}); // SHOW AJAX RESPONSE ON REQUEST SUCCESS $.ajax({ url: url, success: function(response) { jQuery('#modal_ajax .modal-body').html(response); } }); } function lesson_preview(url, title){ // SHOWING AJAX PRELOADER IMAGE jQuery('.lesson_preview_header').html(title); jQuery('#lesson_preview .modal-body').html('<div class="w-100 text-center pt-5"><img class="mt-5 mb-5" width="80px" src="https://netseccloud.com/assets/global/gif/page-loader-2.gif"></div>'); // LOADING THE AJAX MODAL jQuery('#lesson_preview').modal('show', {backdrop: 'true'}); // SHOW AJAX RESPONSE ON REQUEST SUCCESS $.ajax({ url: url, success: function(response) { jQuery('#lesson_preview .modal-body').html(response); } }); } </script> <!-- (Ajax Modal)--> <div class="modal fade" id="modal_ajax"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-bs-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body" style="overflow:auto;"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-bs-dismiss="modal">Close</button> </div> </div> </div> </div> <div class="modal fade" id="lesson_preview" tabindex="-1" role="dialog" aria-hidden="true" data-keyboard="false" data-backdrop="static"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content course-preview-modal"> <div class="modal-header"> <span class="lesson_preview_header"></span> <button type="button" class="close" data-bs-dismiss="modal" onclick="window.location.reload()"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> </div> </div> </div> </div> <script type="text/javascript"> function confirm_modal(delete_url) { jQuery('#modal-4').modal('show', {backdrop: 'static'}); document.getElementById('delete_link').setAttribute('href' , delete_url); } </script> <script type="text/javascript"> function async_modal() { const asyncModal = new Promise(function(resolve, reject){ $('#modal-4').modal('show'); $('#modal-4 .btn-yes').click(function(){ resolve(true); }); $('#modal-4 .btn-cancel').click(function(){ resolve(false); }); }); return asyncModal; } </script> <script> $(document).on('click','#newsletter_button',function(){ let email = $('#newsemail').val(); if(email == ''){ alert('Please enter your email'); }else{ $.ajax({ type : 'POST', url : 'https://netseccloud.com/home/newsletter', data : {email : email}, dataType : 'json', success : function(response) { if(response['status'] == 'success'){ toastr.success(response['message']); }else{ toastr.error(response['message']); } } }); } }) </script> <script> $(document).on('click','#newsletter_button2',function(){ let email = $('#newsemail2').val(); if(email == ''){ alert('Please enter your email'); }else{ $.ajax({ type : 'POST', url : 'https://netseccloud.com/home/newsletter', data : {email : email}, dataType : 'json', success : function(response) { if(response['status'] == 'success'){ toastr.success(response['message']); }else{ toastr.error(response['message']); } } }); } }) </script> <script type="text/javascript"> function toggleRatingView(course_id) { $('#course_info_view_'+course_id).toggle(); $('#course_rating_view_'+course_id).toggle(); $('#edit_rating_btn_'+course_id).toggle(); $('#cancel_rating_btn_'+course_id).toggle(); } $('#sign_up').submit(function() { // we stoped it event.stopPropagation(); event.preventDefault(); var th = $(this); // needs for recaptacha ready grecaptcha.ready(function() { // do request for recaptcha token // response is promise with passed token grecaptcha.execute('6Ld2pP8jAAAAAO_ZmDrEmaczZwTM5Gk31A0IoobZ', {action: 'create_comment'}).then(function(token) { // add token to form $('#comment_form').prepend('<input type="hidden" name="g-recaptcha-response" value="' + token + '">'); $.post("https://netseccloud.com/home/captcha",{token: token}, function(result) { console.log(result); if(result.success) { th.submit(); } else { alert('Dont spam please !') } }); });; }); }); function publishRating(course_id) { var review = $('#review_of_a_course_'+course_id).val(); var starRating = 0; starRating = $('#star_rating_of_course_'+course_id).val(); if (starRating > 0) { $.ajax({ type : 'POST', url : 'https://netseccloud.com/rate_course', data : {course_id : course_id, review : review, starRating : starRating}, success : function(response) { location.reload(); } }); }else{ } } function isTouchDevice() { return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)); } function viewMore(element, visibility) { if (visibility == "hide") { $(element).parent(".view-more-parent").addClass("expanded"); $(element).remove(); } else if ($(element).hasClass("view-more")) { $(element).parent(".view-more-parent").addClass("expanded has-hide"); $(element) .removeClass("view-more") .addClass("view-less") .html("- View less"); } else if ($(element).hasClass("view-less")) { $(element).parent(".view-more-parent").removeClass("expanded has-hide"); $(element) .removeClass("view-less") .addClass("view-more") .html("+ View more"); } } function redirect_to(url){ if(!isTouchDevice() && $(window).width() > 767){ window.location.replace(url); } } //Event call after loading page document.addEventListener('DOMContentLoaded', function() { setTimeout(function(){ $('.animated-loader').hide(); $('.shown-after-loading').show(); }); }, false); function check_action(e, url){ var tag = $(e).prop("tagName").toLowerCase(); if(tag == 'a'){ return true; }else if(tag != 'a' && url){ $(location).attr('href', url); return false; }else{ return true; } } </script> </body> </html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>