mirror of
https://github.com/empayre/fleet.git
synced 2024-11-07 17:28:54 +00:00
25d79c921e
* Adding Meta pixel and GA4 property * update indentation and fix failing lint test * add meta pixel to customer and landing page layouts Co-authored-by: eashaw <caglc@live.com>
440 lines
35 KiB
Plaintext
Vendored
440 lines
35 KiB
Plaintext
Vendored
<%
|
|
// In case we're displaying the 404 or 500 page and relevant code in the "custom" hook was not able to run,
|
|
// we make sure certain view locals exist that are commonly used in this layout.ejs file. This ensures we
|
|
// don't have to do `typeof` checks below.
|
|
var me;
|
|
var isHomepage;
|
|
%><!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title><%= typeof pageTitleForMeta !== 'undefined' ? pageTitleForMeta : 'Fleet for osquery | Open source device management' %></title>
|
|
<meta name="description" content="<%= typeof pageDescriptionForMeta !== 'undefined' ? pageDescriptionForMeta : 'Open source software, built on osquery. With Fleet you can ask important questions about your devices. Whatever operating system, wherever they live.' %>" />
|
|
|
|
<% /* Viewport tag for sensible mobile support */ %>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
<meta name="twitter:card" content="summary" />
|
|
<meta name="twitter:site" content="https://fleetdm.com" />
|
|
<meta name="twitter:title" content="<%= typeof pageTitleForMeta !== 'undefined' ? pageTitleForMeta : 'Open source device management' %>" />
|
|
<meta name="twitter:description" content="<%= typeof pageDescriptionForMeta !== 'undefined' ? pageDescriptionForMeta : 'Open source software, built on osquery. With Fleet you can ask important questions about your devices. Whatever operating system, wherever they live.' %>" />
|
|
<meta name="twitter:image" content="https://fleetdm.com/images/fleet-logo-square@2x.png" />
|
|
<% /* Script tags should normally be included further down the page- but any
|
|
scripts that load fonts (e.g. Fontawesome ≥v5) are special exceptions to the
|
|
rule. (Include them up here along with any hard-coded «link» tags for Typekit,
|
|
Google Fonts, etc. - above the «body» to prevent the page flickering when fonts
|
|
load.) */ %>
|
|
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,900;1,200;1,300;1,400;1,500;1,600;1,700;1,900&display=swap" rel="stylesheet">
|
|
<% /* Certain scripts, normally analytics tools like Google Tag Manager and
|
|
Google Analytics, should only be included in production: */
|
|
if (sails.config.environment === 'production') { %>
|
|
<% /* Google Analytics, Google Tag Manager, Snitcher etc. */ %>
|
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-JC3DRNY1GV"></script>
|
|
<script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-JC3DRNY1GV');
|
|
</script>
|
|
<%/* Meta pixel code */%>
|
|
<script>
|
|
!function(f,b,e,v,n,t,s)
|
|
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
|
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
|
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
|
n.queue=[];t=b.createElement(e);t.async=!0;
|
|
t.src=v;s=b.getElementsByTagName(e)[0];
|
|
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
|
'https://connect.facebook.net/en_US/fbevents.js');
|
|
fbq('init', '673041690615149');
|
|
fbq('track', 'PageView');
|
|
</script>
|
|
<noscript>
|
|
<img alt="Meta pixel" height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=673041690615149&ev=PageView&noscript=1"/>
|
|
</noscript>
|
|
<%/* Snitcher analytics code */%>
|
|
<script>
|
|
!function(i,s,o,g,r,a,m){i.Ip2cObject=o;i[o]||(i[o]=function(){
|
|
(i[o].q=i[o].q||[]).push(arguments)});i[o].l=+new Date;r=s.createElement(g);
|
|
a=s.getElementsByTagName(g)[0];r.src='//reveal.ip2c.net/8416878.js';
|
|
a.parentNode.insertBefore(r,a)}(window,document,'ip2c','script');
|
|
ip2c('verify', '8416878');
|
|
</script>
|
|
<% }
|
|
/* Otherwise, any such scripts are excluded, and we instead inject a
|
|
robots/noindex meta tag to help prevent any unwanted visits from search engines. */
|
|
else { %>
|
|
<meta name="robots" content="noindex">
|
|
<% } %>
|
|
<% /*
|
|
Stylesheets
|
|
========================
|
|
|
|
Stylesheets can be hard-coded as «link» tags, automatically injected
|
|
by the asset pipeline between "STYLES" and "STYLES END", or both.
|
|
(https://sailsjs.com/docs/concepts/assets/task-automation)
|
|
*/ %>
|
|
|
|
<% /* Auto-injected «link» tags: */ %>
|
|
<!--STYLES-->
|
|
<link rel="stylesheet" href="/dependencies/bootstrap-4/bootstrap-4.css">
|
|
<link rel="stylesheet" href="/dependencies/fontawesome.css">
|
|
<link rel="stylesheet" href="/dependencies/nunito-webfonts.css">
|
|
<link rel="stylesheet" href="/styles/importer.css">
|
|
<!--STYLES END-->
|
|
</head>
|
|
<body>
|
|
<div purpose="page-wrap">
|
|
<div class="<%= isHomepage ? 'homepage-header' : 'header' %>" purpose="page-header">
|
|
<div style="max-width: 1248px; height: 94px;" class="container-fluid d-flex justify-content-between align-items-center pt-3 pb-3 px-3 px-md-4">
|
|
<a href="/" style="max-width: 118px;">
|
|
<% /* The homepage-header on the homepage has a white fleet logo */ %>
|
|
<% if (isHomepage) { %>
|
|
<img alt="Fleet logo" src="/images/logo-white-118x48@2x.png" style="width: 118px; height: 48px;"/>
|
|
<% } else { %>
|
|
<img alt="Fleet logo" src="/images/logo-blue-162x92@2x.png" style="height: 92px; width: 162px;"/>
|
|
<% } %>
|
|
</a>
|
|
<div class="d-flex d-lg-none">
|
|
<button purpose="header-btn" style="font-size: 16px; text-decoration: none;" class="btn btn-link d-flex align-items-center" data-toggle="collapse" data-target="#navbarToggleExternalContent">
|
|
<span class="mr-2">Menu</span>
|
|
<% /* The hamburger icon on the homepage is white */ %>
|
|
<% if (isHomepage) { %>
|
|
<img alt="An icon indicating that interacting with this button will open the navigation menu." src="/images/icon-hamburger-16x14@2x.png" style="width: 16px;" />
|
|
<% } else { %>
|
|
<img alt="An icon indicating that interacting with this button will open the navigation menu." src="/images/icon-hamburger-blue-16x14@2x.png" style="width: 16px;" />
|
|
<% } %>
|
|
</button>
|
|
</div>
|
|
<%/* Mobile Navigation menu */%>
|
|
<div purpose="mobile-nav" class="collapse px-4 px-sm-5" id="navbarToggleExternalContent">
|
|
<div class="d-flex justify-content-between">
|
|
<a href="/">
|
|
<img alt="Fleet logo" src="/images/logo-blue-162x92@2x.png" style="height: 92px; width: 162px;" class="mt-3"/>
|
|
</a>
|
|
<button style="font-size: 16px; text-decoration: none;" class="btn btn-link d-flex align-items-center" data-toggle="collapse" data-target="#navbarToggleExternalContent">
|
|
<img alt="An 'X' icon indicating that this can be interacted with to close the navigation menu." src="/images/icon-close-16x16@2x.png" style="width: 16px;" />
|
|
</button>
|
|
</div>
|
|
<div id="mobileDropdowns" class="py-2">
|
|
<a purpose="mobile-dropdown-toggle" class="d-flex align-items-center collapsed" data-toggle="collapse" data-target="#mobileNavbarToggleUseCases" aria-haspopup="true" aria-expanded="false">Use cases</a>
|
|
<div class="d-block">
|
|
<div id="mobileNavbarToggleUseCases" purpose="mobile-dropdown" class="collapse align-items-start" data-parent="#mobileDropdowns">
|
|
<a href="/platform">How it works</a>
|
|
<span>SUCCESS STORIES</span>
|
|
<a class="pl-3" href="https://blog.fleetdm.com/fleet-user-stories-e492a08cebfc">Wayfair</a>
|
|
<a class="pl-3" href="https://blog.fleetdm.com/fleet-user-stories-200c94ca8a10">Schrödinger</a>
|
|
<a class="pl-3" href="https://blog.fleetdm.com/fleet-user-stories-e5dc300b9e1c">F100 security & networking co.</a>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<a purpose="mobile-dropdown-toggle" class="d-flex align-items-center mr-4 collapsed" data-toggle="collapse" data-target="#mobileNavbarToggleDocumentation" aria-haspopup="true" aria-expanded="false">Documentation</a>
|
|
<div class="d-block">
|
|
<div id="mobileNavbarToggleDocumentation" purpose="mobile-dropdown" class="collapse" data-parent="#mobileDropdowns">
|
|
<a href="/docs">Docs</a>
|
|
<a href="https://github.com/fleetdm/fleet/releases">Releases</a>
|
|
<a href="/queries">Query library</a>
|
|
<span>GUIDES</span>
|
|
<a class="pl-3" href="https://blog.fleetdm.com/deploying-fleet-on-aws-with-terraform-a58a908e8d40">Deploy on AWS with Terraform</a>
|
|
<a class="pl-3" href="https://blog.fleetdm.com/deploying-fleet-on-render-2d743aed213f">Deploy on Render</a>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<a purpose="mobile-dropdown-toggle" class="d-flex align-items-center mr-4 collapsed" data-toggle="collapse" data-target="#mobileNavbarToggleCommunity">Community</a>
|
|
<div class="d-block">
|
|
<div id="mobileNavbarToggleCommunity" purpose="mobile-dropdown" class="collapse" data-parent="#mobileDropdowns">
|
|
<a href="/slack">Chat</a>
|
|
<a href="/docs/contributing">Contribute</a>
|
|
<a href="/blog">Blog</a>
|
|
<a href="/handbook">Handbook</a>
|
|
<a href="/logos">Logos & artwork</a>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<a href="/pricing" class="d-flex align-items-center mb-2 pb-3" style="text-decoration: none; font-weight: 700;">Pricing</a>
|
|
<a style="padding: 4px 16px; line-height: 24px; width: 100px" class="btn btn-sm btn-primary align-items-center d-flex " href="/get-started?tryitnow" >Try it out</a>
|
|
</div>
|
|
</div>
|
|
<%/* Desktop Navigation bar */%>
|
|
<div purpose="header-nav" class="d-none d-lg-flex align-items-center">
|
|
<div purpose="dropdown-button" class="btn-group">
|
|
<a class="dropdown-toggle d-flex align-items-center py-2 px-3" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Use cases</a>
|
|
<div purpose="header-dropdown" class="dropdown-menu">
|
|
<a class="dropdown-item mb-1" href="/platform">How it works</a>
|
|
<div class="dropdown-divider"></div>
|
|
<h6 class="muted dropdown-header">SUCCESS STORIES</h6>
|
|
<a class="dropdown-item mb-1" href="https://blog.fleetdm.com/fleet-user-stories-e492a08cebfc">Wayfair</a>
|
|
<a class="dropdown-item mb-1" href="https://blog.fleetdm.com/fleet-user-stories-200c94ca8a10">Schrödinger</a>
|
|
<a class="dropdown-item" href="https://blog.fleetdm.com/fleet-user-stories-e5dc300b9e1c">F100 security & networking co.</a>
|
|
</div>
|
|
</div>
|
|
<div purpose="dropdown-button" class="btn-group">
|
|
<a class="dropdown-toggle d-flex align-items-center py-2 px-3" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a>
|
|
<div purpose="header-dropdown" class="dropdown-menu">
|
|
<a class="dropdown-item mb-1" href="/docs">Docs</a>
|
|
<a class="dropdown-item mb-1" href="https://github.com/fleetdm/fleet/releases">Releases</a>
|
|
<a class="dropdown-item mb-1" href="/queries">Query library</a>
|
|
<div class="dropdown-divider"></div>
|
|
<span class="muted dropdown-header">GUIDES</span>
|
|
<a class="dropdown-item mb-1" href="https://blog.fleetdm.com/deploying-fleet-on-aws-with-terraform-a58a908e8d40">Deploy on AWS with Terraform</a>
|
|
<a class="dropdown-item" href="https://blog.fleetdm.com/deploying-fleet-on-render-2d743aed213f">Deploy on Render</a>
|
|
</div>
|
|
</div>
|
|
<div purpose="dropdown-button" class="btn-group">
|
|
<a class="dropdown-toggle d-flex align-items-center py-2 px-3" data-toggle="dropdown">Community</a>
|
|
<div purpose="header-dropdown" class="dropdown-menu">
|
|
<a class="dropdown-item mb-1" href="/slack">Chat</a>
|
|
<a class="dropdown-item mb-1" href="/docs/contributing">Contribute</a>
|
|
<a class="dropdown-item mb-1" href="/blog">Blog</a>
|
|
<a class="dropdown-item mb-1" href="/handbook">Handbook</a>
|
|
<a class="dropdown-item" href="/logos">Logos & artwork</a>
|
|
</div>
|
|
</div>
|
|
<a href="/pricing" class="d-flex align-items-center py-2 px-3" style="text-decoration: none; line-height: 23px;">Pricing</a>
|
|
<span class="d-flex align-items-center px-3">
|
|
<iframe src="//ghbtns.com/github-btn.html?user=fleetdm&repo=fleet&type=watch&count=true"
|
|
allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
|
|
</span>
|
|
<a style="padding: 4px 16px; line-height: 24px; color: #FFFFFF" class="btn btn-sm btn-primary align-items-center d-flex" href="/get-started?tryitnow" >Try it out</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<%- body %>
|
|
|
|
<%/* Note: footer is hidden until the page is loaded. See «script» tag at the bottom of this file. */%>
|
|
<div style="background-color: #182147;" class="invisible" purpose="page-footer" data-hide-until-rendered>
|
|
<div style="max-width: 1248px;" purpose="footer-container" class="container-fluid d-flex flex-column flex-sm-row align-items-sm-end justify-content-center justify-content-sm-between">
|
|
<div class="d-flex flex-column order-first justify-content-start">
|
|
<div class="d-flex pb-4 pr-4">
|
|
<a class="pb-3" href="/">
|
|
<img alt="Fleet logo" src="/images/logo-white-118x48@2x.png" style="width: 118px; height: 48px;" />
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex flex-grow-1 flex-column">
|
|
<div purpose="footer-nav" class="justify-content-between justify-content-sm-end order-l pb-xl-2 px-lg-0">
|
|
<div class="flex-column">
|
|
<a href="/get-started" class="d-block pr-md-5 pr-sm-3 pb-2">Get started</a>
|
|
<a href="/docs" class="d-block pr-md-5 pr-sm-3 pb-2">Docs</a>
|
|
<a href="/queries" class="d-block pr-md-5 pr-sm-3 pb-2">Query library</a>
|
|
<a href="/transparency" class="d-block pr-md-5 pr-sm-3 pb-2 pb-xl-0">Transparency</a>
|
|
</div>
|
|
<div class="flex-column">
|
|
<a href="/pricing" class="d-block px-md-5 px-sm-3 pb-2">Pricing</a>
|
|
<a href="/customers/dashboard" class="d-block px-md-5 px-sm-3 pb-2">Customers</a>
|
|
<a href="/handbook" class="d-block px-md-5 px-sm-3 pb-2">Handbook</a>
|
|
<a href="/logos" class="d-block px-md-5 px-sm-3 pb-2 pb-xl-0">Logos/artwork</a>
|
|
</div>
|
|
<div class="flex-column">
|
|
<a href="/apply" class="d-block pr-lg-2 pl-md-5 pl-sm-3 pb-2">Jobs</a>
|
|
<a href="/blog" class="d-block pr-lg-2 pl-md-5 pl-sm-3 pb-2">Blog</a>
|
|
<a href="/docs/contributing" class="d-block pr-lg-2 pl-md-5 pl-sm-3 pb-2">Contribute</a>
|
|
<a href="/hall-of-fame" class="d-block pr-lg-2 pl-md-5 pl-sm-3 pb-2 pb-xl-0">Hall of fame</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div purpose="footer-bottom" style="background-color: #101639;">
|
|
<div style="max-width: 1248px;" class="container-fluid d-flex px-0 flex-md-row flex-column align-items-md-center justify-content-md-between pb-4 pr-3 pb-md-0">
|
|
|
|
<div style="font-size: 11px; line-height: 18px;" class="d-flex flex-column justify-content-start flex-sm-row pr-sm-0">
|
|
<img alt="Creative Commons Licence CC BY-SA 4.0" src="/images/logo-creative-commons-160x30@2x.png" style="width: 80px; height: 15px;" />
|
|
<div class="pl-sm-3 pt-sm-0 pt-1 pl-0 text-sm-nowrap d-block d-sm-inline">
|
|
© 2022 Fleet Device Management Inc.
|
|
<span purpose="legal-nav">
|
|
<a style="text-decoration: underline;" href="/legal/privacy">Privacy</a>
|
|
<a style="text-decoration: underline;" class="pl-3" target="_blank" href="https://osquery.io">What is osquery?</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="font-size: 14px;" class="flex-row d-inline-flex font-weight-bold order-first order-md-last justify-content-start justify-content-md-end pl-md-3 py-3">
|
|
<a href="https://twitter.com/fleetctl">
|
|
<img alt="Twitter logo" src="/images/logo-twitter-50x44@2x.png" style="height: 20px; width: auto; margin-top:2px" class="pr-4" />
|
|
</a>
|
|
<a href="https://www.youtube.com/channel/UCZyoqZ4exJvoibmTKJrQ-dQ">
|
|
<img alt="Youtube logo" src="/images/logo-youtube-57x40@2x.png" style="height: 20px; width: auto; margin-top:2px" class="pr-4" />
|
|
</a>
|
|
<a href="/slack">
|
|
<img alt="Slack logo" src="/images/logo-slack-24x24@2x.png" style="height: 20px; width: auto; margin-top:2px" class="pr-4" />
|
|
</a>
|
|
<a href="https://github.com/fleetdm/fleet">
|
|
<img alt="GitHub logo" src="/images/github-mark-white-24x24@2x.png" style="height: 20px; width: auto; margin-top:2px" />
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<% /*
|
|
Client-side JavaScript
|
|
========================
|
|
|
|
Scripts can be hard-coded as «script» tags, automatically injected
|
|
by the asset pipeline between "SCRIPTS" and "SCRIPTS END", or both.
|
|
(https://sailsjs.com/docs/concepts/assets/task-automation)
|
|
*/ %>
|
|
<% /* Cookie consent banner */ %>
|
|
<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/71bcdd51b166ceeb18bd0d28/script.js"></script>
|
|
<% /* Chat (Papercups) */ %>
|
|
<script>window.Papercups = { config: { accountId: '5b59eeac-1578-4fdb-b946-e17c1dca0c51', primaryColor:'#6A67FE', requireEmailUpfront: true } };</script>
|
|
<script type="text/javascript" async defer src="https://app.papercups.io/widget.js"></script>
|
|
|
|
<%/* Stripe.js */%>
|
|
<script src="https://js.stripe.com/v3/"></script>
|
|
|
|
<% /* Delete the global `self` to help avoid client-side bugs.
|
|
(see https://developer.mozilla.org/en-US/docs/Web/API/Window/self) */ %>
|
|
<script>delete window.self;</script>
|
|
|
|
<%/* bowser.js (for browser detection) -- included inline to avoid issues with minification that could affect the unsupported browser overlay */%>
|
|
<script>!function(e,i,s){if("undefined"!=typeof module&&module.exports)module.exports=s();else if("function"==typeof define&&define.amd)define(i,s);else e[i]=s()}(this,"bowser",function(){var e=true;function i(i){function s(e){var s=i.match(e);return s&&s.length>1&&s[1]||""}function o(e){var s=i.match(e);return s&&s.length>1&&s[2]||""}var r=s(/(ipod|iphone|ipad)/i).toLowerCase(),n=/like android/i.test(i),t=!n&&/android/i.test(i),a=/nexus\s*[0-6]\s*/i.test(i),d=!a&&/nexus\s*[0-9]+/i.test(i),l=/CrOS/.test(i),f=/silk/i.test(i),m=/sailfish/i.test(i),v=/tizen/i.test(i),p=/(web|hpw)os/i.test(i),c=/windows phone/i.test(i),u=/SamsungBrowser/i.test(i),h=!c&&/windows/i.test(i),w=!r&&!f&&/macintosh/i.test(i),b=!t&&!m&&!v&&!p&&/linux/i.test(i),g=o(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),k=s(/version\/(\d+(\.\d+)?)/i),x=/tablet/i.test(i)&&!/tablet pc/i.test(i),y=!x&&/[^-]mobi/i.test(i),S=/xbox/i.test(i),B;if(/opera/i.test(i))B={name:"Opera",opera:e,version:k||s(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)};else if(/opr\/|opios/i.test(i))B={name:"Opera",opera:e,version:s(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||k};else if(/SamsungBrowser/i.test(i))B={name:"Samsung Internet for Android",samsungBrowser:e,version:k||s(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)};else if(/coast/i.test(i))B={name:"Opera Coast",coast:e,version:k||s(/(?:coast)[\s\/](\d+(\.\d+)?)/i)};else if(/yabrowser/i.test(i))B={name:"Yandex Browser",yandexbrowser:e,version:k||s(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)};else if(/ucbrowser/i.test(i))B={name:"UC Browser",ucbrowser:e,version:s(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)};else if(/mxios/i.test(i))B={name:"Maxthon",maxthon:e,version:s(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)};else if(/epiphany/i.test(i))B={name:"Epiphany",epiphany:e,version:s(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)};else if(/puffin/i.test(i))B={name:"Puffin",puffin:e,version:s(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)};else if(/sleipnir/i.test(i))B={name:"Sleipnir",sleipnir:e,version:s(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)};else if(/k-meleon/i.test(i))B={name:"K-Meleon",kMeleon:e,version:s(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)};else if(c){B={name:"Windows Phone",osname:"Windows Phone",windowsphone:e};if(g){B.msedge=e;B.version=g}else{B.msie=e;B.version=s(/iemobile\/(\d+(\.\d+)?)/i)}}else if(/msie|trident/i.test(i))B={name:"Internet Explorer",msie:e,version:s(/(?:msie |rv:)(\d+(\.\d+)?)/i)};else if(l)B={name:"Chrome",osname:"Chrome OS",chromeos:e,chromeBook:e,chrome:e,version:s(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)};else if(/edg([ea]|ios)/i.test(i))B={name:"Microsoft Edge",msedge:e,version:g};else if(/vivaldi/i.test(i))B={name:"Vivaldi",vivaldi:e,version:s(/vivaldi\/(\d+(\.\d+)?)/i)||k};else if(m)B={name:"Sailfish",osname:"Sailfish OS",sailfish:e,version:s(/sailfish\s?browser\/(\d+(\.\d+)?)/i)};else if(/seamonkey\//i.test(i))B={name:"SeaMonkey",seamonkey:e,version:s(/seamonkey\/(\d+(\.\d+)?)/i)};else if(/firefox|iceweasel|fxios/i.test(i)){B={name:"Firefox",firefox:e,version:s(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)};if(/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(i)){B.firefoxos=e;B.osname="Firefox OS"}}else if(f)B={name:"Amazon Silk",silk:e,version:s(/silk\/(\d+(\.\d+)?)/i)};else if(/phantom/i.test(i))B={name:"PhantomJS",phantom:e,version:s(/phantomjs\/(\d+(\.\d+)?)/i)};else if(/slimerjs/i.test(i))B={name:"SlimerJS",slimer:e,version:s(/slimerjs\/(\d+(\.\d+)?)/i)};else if(/blackberry|\bbb\d+/i.test(i)||/rim\stablet/i.test(i))B={name:"BlackBerry",osname:"BlackBerry OS",blackberry:e,version:k||s(/blackberry[\d]+\/(\d+(\.\d+)?)/i)};else if(p){B={name:"WebOS",osname:"WebOS",webos:e,version:k||s(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)};/touchpad\//i.test(i)&&(B.touchpad=e)}else if(/bada/i.test(i))B={name:"Bada",osname:"Bada",bada:e,version:s(/dolfin\/(\d+(\.\d+)?)/i)};else if(v)B={name:"Tizen",osname:"Tizen",tizen:e,version:s(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||k};else if(/qupzilla/i.test(i))B={name:"QupZilla",qupzilla:e,version:s(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||k};else if(/chromium/i.test(i))B={name:"Chromium",chromium:e,version:s(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||k};else if(/chrome|crios|crmo/i.test(i))B={name:"Chrome",chrome:e,version:s(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)};else if(t)B={name:"Android",version:k};else if(/safari|applewebkit/i.test(i)){B={name:"Safari",safari:e};if(k)B.version=k}else if(r){B={name:"iphone"==r?"iPhone":"ipad"==r?"iPad":"iPod"};if(k)B.version=k}else if(/googlebot/i.test(i))B={name:"Googlebot",googlebot:e,version:s(/googlebot\/(\d+(\.\d+))/i)||k};else B={name:s(/^(.*)\/(.*) /),version:o(/^(.*)\/(.*) /)};if(!B.msedge&&/(apple)?webkit/i.test(i)){if(/(apple)?webkit\/537\.36/i.test(i)){B.name=B.name||"Blink";B.blink=e}else{B.name=B.name||"Webkit";B.webkit=e}if(!B.version&&k)B.version=k}else if(!B.opera&&/gecko\//i.test(i)){B.name=B.name||"Gecko";B.gecko=e;B.version=B.version||s(/gecko\/(\d+(\.\d+)?)/i)}if(!B.windowsphone&&(t||B.silk)){B.android=e;B.osname="Android"}else if(!B.windowsphone&&r){B[r]=e;B.ios=e;B.osname="iOS"}else if(w){B.mac=e;B.osname="macOS"}else if(S){B.xbox=e;B.osname="Xbox"}else if(h){B.windows=e;B.osname="Windows"}else if(b){B.linux=e;B.osname="Linux"}function O(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return undefined}}var T="";if(B.windows)T=O(s(/Windows ((NT|XP)( \d\d?.\d)?)/i));else if(B.windowsphone)T=s(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i);else if(B.mac){T=s(/Mac OS X (\d+([_\.\s]\d+)*)/i);T=T.replace(/[_\s]/g,".")}else if(r){T=s(/os (\d+([_\s]\d+)*) like mac os x/i);T=T.replace(/[_\s]/g,".")}else if(t)T=s(/android[ \/-](\d+(\.\d+)*)/i);else if(B.webos)T=s(/(?:web|hpw)os\/(\d+(\.\d+)*)/i);else if(B.blackberry)T=s(/rim\stablet\sos\s(\d+(\.\d+)*)/i);else if(B.bada)T=s(/bada\/(\d+(\.\d+)*)/i);else if(B.tizen)T=s(/tizen[\/\s](\d+(\.\d+)*)/i);if(T)B.osversion=T;var P=!B.windows&&T.split(".")[0];if(x||d||"ipad"==r||t&&(3==P||P>=4&&!y)||B.silk)B.tablet=e;else if(y||"iphone"==r||"ipod"==r||t||a||B.blackberry||B.webos||B.bada)B.mobile=e;if(B.msedge||B.msie&&B.version>=10||B.yandexbrowser&&B.version>=15||B.vivaldi&&B.version>=1||B.chrome&&B.version>=20||B.samsungBrowser&&B.version>=4||B.firefox&&B.version>=20||B.safari&&B.version>=6||B.opera&&B.version>=10||B.ios&&B.osversion&&B.osversion.split(".")[0]>=6||B.blackberry&&B.version>=10.1||B.chromium&&B.version>=20)B.a=e;else if(B.msie&&B.version<10||B.chrome&&B.version<20||B.firefox&&B.version<20||B.safari&&B.version<6||B.opera&&B.version<10||B.ios&&B.osversion&&B.osversion.split(".")[0]<6||B.chromium&&B.version<20)B.c=e;else B.x=e;return B}var s=i("undefined"!==typeof navigator?navigator.userAgent||"":"");s.test=function(e){for(var i=0;i<e.length;++i){var o=e[i];if("string"===typeof o)if(o in s)return true}return false};function o(e){return e.split(".").length}function r(e,i){var s=[],o;if(Array.prototype.map)return Array.prototype.map.call(e,i);for(o=0;o<e.length;o++)s.push(i(e[o]));return s}function n(e){var i=Math.max(o(e[0]),o(e[1]));var s=r(e,function(e){var s=i-o(e);e+=new Array(s+1).join(".0");return r(e.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});while(--i>=0)if(s[0][i]>s[1][i])return 1;else if(s[0][i]===s[1][i]){if(0===i)return 0}else return-1}function t(e,o,r){var t=s;if("string"===typeof o){r=o;o=void 0}if(void 0===o)o=false;if(r)t=i(r);var a=""+t.version;for(var d in e)if(e.hasOwnProperty(d))if(t[d]){if("string"!==typeof e[d])throw new Error("Browser version in the minVersion map should be a string: "+d+": "+String(e));return n([a,e[d]])<0}return o}function a(e,i,s){return!t(e,i,s)}s.isUnsupportedBrowser=t;s.compareVersions=n;s.check=a;s._detect=i;s.detect=i;return s});</script>
|
|
|
|
<% /* Auto-injected «script» tags: */ %>
|
|
<!--SCRIPTS-->
|
|
<script src="/dependencies/sails.io.js"></script>
|
|
<script src="/dependencies/lodash.js"></script>
|
|
<script src="/dependencies/jquery.min.js"></script>
|
|
<script src="/dependencies/vue.js"></script>
|
|
<script src="/dependencies/vue-router.js"></script>
|
|
<script src="/dependencies/bootstrap-4/bootstrap-4.bundle.js"></script>
|
|
<script src="/dependencies/cloud.js"></script>
|
|
<script src="/dependencies/docsearch.min.js"></script>
|
|
<script src="/dependencies/highlight.min.js"></script>
|
|
<script src="/dependencies/mermaid.min.js"></script>
|
|
<script src="/dependencies/moment.js"></script>
|
|
<script src="/dependencies/parasails.js"></script>
|
|
<script src="/js/cloud.setup.js"></script>
|
|
<script src="/js/components/ajax-button.component.js"></script>
|
|
<script src="/js/components/ajax-form.component.js"></script>
|
|
<script src="/js/components/cloud-error.component.js"></script>
|
|
<script src="/js/components/js-timestamp.component.js"></script>
|
|
<script src="/js/components/modal.component.js"></script>
|
|
<script src="/js/components/stripe-card-element.component.js"></script>
|
|
<script src="/js/utilities/open-stripe-checkout.js"></script>
|
|
<script src="/js/pages/account/account-overview.page.js"></script>
|
|
<script src="/js/pages/account/edit-password.page.js"></script>
|
|
<script src="/js/pages/account/edit-profile.page.js"></script>
|
|
<script src="/js/pages/contact.page.js"></script>
|
|
<script src="/js/pages/customers/dashboard.page.js"></script>
|
|
<script src="/js/pages/customers/new-license.page.js"></script>
|
|
<script src="/js/pages/dashboard/welcome.page.js"></script>
|
|
<script src="/js/pages/docs/basic-documentation.page.js"></script>
|
|
<script src="/js/pages/entrance/confirmed-email.page.js"></script>
|
|
<script src="/js/pages/entrance/forgot-password.page.js"></script>
|
|
<script src="/js/pages/entrance/login.page.js"></script>
|
|
<script src="/js/pages/entrance/new-password.page.js"></script>
|
|
<script src="/js/pages/entrance/signup.page.js"></script>
|
|
<script src="/js/pages/faq.page.js"></script>
|
|
<script src="/js/pages/get-started.page.js"></script>
|
|
<script src="/js/pages/handbook/basic-handbook.page.js"></script>
|
|
<script src="/js/pages/homepage.page.js"></script>
|
|
<script src="/js/pages/landing.page.js"></script>
|
|
<script src="/js/pages/legal/privacy.page.js"></script>
|
|
<script src="/js/pages/legal/terms.page.js"></script>
|
|
<script src="/js/pages/platform.page.js"></script>
|
|
<script src="/js/pages/press-kit.page.js"></script>
|
|
<script src="/js/pages/pricing.page.js"></script>
|
|
<script src="/js/pages/query-detail.page.js"></script>
|
|
<script src="/js/pages/query-library.page.js"></script>
|
|
<script src="/js/pages/transparency.page.js"></script>
|
|
<!--SCRIPTS END-->
|
|
|
|
<% /* Display an overlay if the current browser is not supported.
|
|
(Relies on `bowser`, which is loaded inline above.) */ %>
|
|
<script>
|
|
(function(){
|
|
if (typeof bowser !== 'undefined') {
|
|
// --------------------------------------------------------------------
|
|
// Additional compatibility tips:
|
|
//
|
|
// • The browser/OS compatibility below is determined by the needs of Vue.js and Bootstrap.js.
|
|
// • All browsers on Windows XP are probably unsupported (because of compatibility issues with modern SSL certs)
|
|
// • See https://getbootstrap.com/docs/4.0/getting-started/browsers-devices/
|
|
// • See also https://github.com/vuejs/vue/tree/0e5306658ad7b83c553a6a3eeedb15f9066ab063#browser-compatibility
|
|
// • For more info, see:
|
|
// - https://github.com/lancedikson/bowser/blob/1fb99ced0e8834fd9662604bad7e0f0c3eba2786/test/test.js#L110-L123
|
|
// - https://github.com/lancedikson/bowser/tree/1fb99ced0e8834fd9662604bad7e0f0c3eba2786#rendering-engine-flags
|
|
// --------------------------------------------------------------------
|
|
var LATEST_SUPPORTED_VERSION_BY_OS = {
|
|
iOS: '10',//« earliest version to eliminate rare bug where `window.location` doesn't exist momentarily after doing a server-side redirect
|
|
Android: '6'
|
|
};
|
|
var LATEST_SUPPORTED_VERSION_BY_USER_AGENT = {
|
|
msedge: '16',
|
|
// msie: '11',
|
|
safari: '10',//« earliest version to eliminate rare bug where `window.location` doesn't exist momentarily after doing a server-side redirect
|
|
firefox: '28',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4)
|
|
chrome: '29',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4)
|
|
opera: '17',//« earliest version to support both ES5 (for Vue.js) and unprefixed flexbox (for Bootstrap 4)
|
|
};
|
|
var LATEST_SUPPORTED_VERSION_BY_BROWSER_NAME = {
|
|
'microsoft edge': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.msedge,
|
|
// 'internet explorer': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.msie,
|
|
'safari': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.safari,
|
|
'firefox': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.firefox,
|
|
'chrome': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.chrome,
|
|
'opera': LATEST_SUPPORTED_VERSION_BY_USER_AGENT.opera
|
|
};
|
|
var isUnsupportedBrowser = (
|
|
bowser.isUnsupportedBrowser(LATEST_SUPPORTED_VERSION_BY_USER_AGENT, window.navigator.userAgent) || bowser.msie
|
|
);
|
|
var isUnsupportedOS = (
|
|
LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname] &&
|
|
bowser.compareVersions([bowser.osversion, LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname]]) < 0
|
|
);
|
|
if (isUnsupportedBrowser || isUnsupportedOS) {
|
|
document.body.innerHTML =
|
|
'<div class="container browser-warning-message text-center">'+
|
|
' <a href="https://fleetdm.com/company/contact">'+
|
|
'<img style="display: block; height: 40px; width: auto; margin: 0 auto 32px;" alt="Logo" src="/images/fleet-logo-black-118x40@2x.png"/>'+
|
|
'</a>'+
|
|
' <h5 class="card-title">This '+(isUnsupportedBrowser ? 'browser' : 'operating system')+' is not supported.</h5>'+
|
|
' <p style="max-width: 500px; margin: 0 auto 24px;">'+
|
|
' This app does not currently support '+(
|
|
isUnsupportedBrowser?
|
|
(bowser.msie?
|
|
'<strong>'+bowser.name+'</strong><br>'+ 'To continue, please use a supported browser, or download the <a href="https://www.google.com/chrome">latest version of Google Chrome</a>.'+
|
|
' </p>'+
|
|
' <a class="btn btn-primary" style="padding: 5px 10px" href="https://www.google.com/chrome">Download Chrome</a>'
|
|
:
|
|
'<strong>'+bowser.name+'</strong> for versions lower than <strong>v'+ LATEST_SUPPORTED_VERSION_BY_BROWSER_NAME[bowser.name.toLowerCase()]+'</strong>. '+
|
|
'To continue, please upgrade your browser to the newest version, or download the <a href="https://www.google.com/chrome">latest version of Google Chrome</a>.'+
|
|
' </p>'+
|
|
' <a class="btn btn-sm btn-primary" style="padding: 5px 10px" href="https://www.google.com/chrome">Download Chrome</a>'
|
|
)
|
|
:
|
|
'<strong>'+bowser.osname+'</strong> for versions lower than <strong>v'+ LATEST_SUPPORTED_VERSION_BY_OS[bowser.osname]+'</strong>. '+
|
|
'To continue, please use a different device, or <a href="'+(bowser.osname === 'iOS' ? 'https://support.apple.com/en-us/HT204204' : 'https://support.google.com/android/?hl=en#topic=7313011')+'">upgrade this device\'s software</a> to the latest compatible version.'+
|
|
' </p>'+
|
|
' <a class="btn btn-primary" style="padding: 5px 10px" href="/contact">Need help?</a>'
|
|
)+
|
|
'</div>';
|
|
document.body.style.padding = '75px 0';
|
|
}
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
<% /* Keep footer hidden until the document is ready (prevents flicker that is especially unattractive on mobile) */ %>
|
|
<script>
|
|
$(function() {
|
|
$('[data-hide-until-rendered]').removeClass('invisible'); // Note: invisible is a bootstrap 4 class
|
|
});
|
|
<%/* Adding hover events to header dropdown menus*/%>
|
|
$(function(){
|
|
$('[purpose=dropdown-button]').hover(
|
|
function() {
|
|
$(this).children('.dropdown-menu').addClass('show');
|
|
$(this).children('.dropdown-toggle').attr('aria-expanded', true);
|
|
},
|
|
function() {
|
|
$(this).children('.dropdown-menu').removeClass('show');
|
|
$(this).children('.dropdown-toggle').attr('aria-expanded', false);
|
|
});
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|