diff --git a/website/api/controllers/imagine/view-defcon-31.js b/website/api/controllers/imagine/view-defcon-31.js new file mode 100644 index 0000000000..751931488f --- /dev/null +++ b/website/api/controllers/imagine/view-defcon-31.js @@ -0,0 +1,27 @@ +module.exports = { + + + friendlyName: 'View defcon 31', + + + description: 'Display "Defcon 31" page.', + + + exits: { + + success: { + viewTemplatePath: 'pages/imagine/defcon-31' + } + + }, + + + fn: async function () { + + // Respond with view. + return {}; + + } + + +}; diff --git a/website/assets/images/defcon-alex.png b/website/assets/images/defcon-alex.png new file mode 100644 index 0000000000..462f14b80c Binary files /dev/null and b/website/assets/images/defcon-alex.png differ diff --git a/website/assets/images/defcon-beerpark-map.png b/website/assets/images/defcon-beerpark-map.png new file mode 100644 index 0000000000..5c447ca72b Binary files /dev/null and b/website/assets/images/defcon-beerpark-map.png differ diff --git a/website/assets/images/defcon-event-floor.png b/website/assets/images/defcon-event-floor.png new file mode 100644 index 0000000000..e416c433a3 Binary files /dev/null and b/website/assets/images/defcon-event-floor.png differ diff --git a/website/assets/images/defcon-hero.png b/website/assets/images/defcon-hero.png new file mode 100644 index 0000000000..77594a8ba4 Binary files /dev/null and b/website/assets/images/defcon-hero.png differ diff --git a/website/assets/images/defcon-jarod.png b/website/assets/images/defcon-jarod.png new file mode 100644 index 0000000000..8eb373acb8 Binary files /dev/null and b/website/assets/images/defcon-jarod.png differ diff --git a/website/assets/images/defcon-zach.png b/website/assets/images/defcon-zach.png new file mode 100644 index 0000000000..f35b8ac2bf Binary files /dev/null and b/website/assets/images/defcon-zach.png differ diff --git a/website/assets/js/pages/imagine/defcon-31.page.js b/website/assets/js/pages/imagine/defcon-31.page.js new file mode 100644 index 0000000000..0c5d7bcc8c --- /dev/null +++ b/website/assets/js/pages/imagine/defcon-31.page.js @@ -0,0 +1,29 @@ +parasails.registerPage('defcon-31', { + // ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗ + // ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣ + // ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝ + data: { + //… + }, + + // ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗ + // ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣ + // ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝ + beforeMount: function() { + //… + }, + mounted: async function() { + //… + }, + + // ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ + // ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗ + // ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝ + methods: { + clickOpenChatWidget: function() { + if(window.HubSpotConversations && window.HubSpotConversations.widget){ + window.HubSpotConversations.widget.open(); + } + }, + } +}); diff --git a/website/assets/styles/importer.less b/website/assets/styles/importer.less index 6000f28d3f..0d9fe7339a 100644 --- a/website/assets/styles/importer.less +++ b/website/assets/styles/importer.less @@ -82,3 +82,4 @@ @import 'pages/imagine/unused-software.less'; @import 'pages/imagine/higher-education.less'; @import 'pages/imagine/rapid-7-alternative.less'; +@import 'pages/imagine/defcon-31.less'; diff --git a/website/assets/styles/pages/imagine/defcon-31.less b/website/assets/styles/pages/imagine/defcon-31.less new file mode 100644 index 0000000000..1886c22b4c --- /dev/null +++ b/website/assets/styles/pages/imagine/defcon-31.less @@ -0,0 +1,356 @@ +#defcon-31 { + + h1 { + font-weight: 800; + font-size: 64px; + line-height: 76px; + } + h2 { + font-weight: 800; + font-size: 32px; + line-height: 38px; + margin-bottom: 40px; + } + h3 { + font-weight: 800; + font-size: 24px; + line-height: 32px; + } + h4 { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 24px; + color: @core-fleet-black-75; + margin-bottom: 4px; + } + p { + font-size: 16px; + line-height: 24px; + } + [purpose='hero'] { + background-image: url('/images/defcon-hero.png'); + height: 530px; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + width: 100%; + margin-bottom: 40px; + border-radius: 8px; + } + [purpose='hero-background'] { + background: linear-gradient(180deg, #E8F1F7 3.37%, #FFFFFF 60%); + padding-top: 120px; + padding-bottom: 40px; + } + [purpose='hero-container'] { + max-width: 1200px; + } + [purpose='hero-text'] { + text-align: center; + max-width: 940px; + padding: 0 40px; + h1 { + margin-bottom: 32px; + } + p { + font-size: 18px; + line-height: 27px; + max-width: 640px; + margin: 0 auto 32px; + } + } + + [purpose='button-row'] { + a { + font-weight: 700; + font-size: 16px; + line-height: 24px; + } + [purpose='cta-button'] { + cursor: pointer; + margin-right: 32px; + background: @core-vibrant-red; + border-radius: 8px; + padding-left: 32px; + padding-right: 32px; + height: 48px; + display: flex; + justify-content: center; + align-items: center; + color: #FFF; + position: relative; + text-decoration: none; + } + [purpose='cta-button']::before { + background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%); + opacity: 1; + content: ' '; + position: absolute; + top: 0; + left: -5px; + width: 50%; + height: 100%; + transform: skew(-10deg); + transition: left 0.5s ease-in, opacity 0.50s ease-in, width 0.5s ease-in; + } + [purpose='cta-button']:hover:before { + opacity: 0; + left: 160px; + width: 110%; + } + + [purpose='animated-arrow-button-red'] { + display: inline; + padding-right: 40px; + cursor: pointer; + position: relative; + width: fit-content; + min-width: 125px; + font-weight: bold; + user-select: none; + transition: 0.2s ease-in-out; + -o-transition: 0.2s ease-in-out; + -ms-transition: 0.2s ease-in-out; + -moz-transition: 0.2s ease-in-out; + -webkit-transition: 0.2s ease-in-out; + color: @core-fleet-black; + text-decoration: none; + &:after { + content: url('/images/arrow-right-red-16x16@2x.png'); + transform: scale(0.5); + position: absolute; + top: -5px; + left: 80%; // <--- here + transition: 0.2s ease-in-out; + -o-transition: 0.2s ease-in-out; + -ms-transition: 0.2s ease-in-out; + -moz-transition: 0.2s ease-in-out; + -webkit-transition: 0.2s ease-in-out; + /* opacity: 0; */ + } + &:hover:after { + left: 82%; // <--- here + transition: 0.2s ease-in-out; + -o-transition: 0.2s ease-in-out; + -ms-transition: 0.2s ease-in-out; + -moz-transition: 0.2s ease-in-out; + -webkit-transition: 0.2s ease-in-out; + /* opacity:1; */ + } + } + } + + [purpose='page-container'] { + padding-left: 40px; + padding-right: 40px; + padding-bottom: 120px; + } + + [purpose='feature'] { + margin-top: 120px; + max-width: 960px; + h3 { + margin-bottom: 24px; + } + div { + max-width: 480px; + } + } + + [purpose='feature-image'] { + img { + max-height: 300px; + } + } + [purpose='large-feature-image'] { + img { + max-height: 250px; + } + } + + [purpose='checklists'] { + margin-top: 40px; + margin-bottom: 80px; + } + [purpose='checklist'] { + p { + padding-left: 28px; + text-indent: -28px; + } + p::before { + content: ' '; + background-image: url('/images/icon-checkmark-circle.svg'); + background-size: 16px 16px; + display: inline-block; + position: relative; + top: 2px; + margin-right: 12px; + width: 16px; + height: 16px; + } + } + + [purpose='tweets-container'] { + padding-top: 120px; + padding-bottom: 120px; + } + + [purpose='bottom-gradient'] { + background: linear-gradient(180deg, #FFFFFF 0%, #E9F4F4 100%); + } + [purpose='bottom-cloud-city-banner'] { + background: linear-gradient(180deg, #E9F4F4 0%, #FFFFFF 100%); + img { + width: 100%; + } + } + + @media (min-width: 1200px) { + [purpose='page-container'] { + padding-left: 120px; + padding-right: 120px; + } + } + + @media (max-width: 1200px) { + [purpose='logos'] { + height: 58px; + margin-left: auto; + margin-right: auto; + img { + margin-top: 23.5px; + margin-bottom: 23.5px; + padding-left: 25px; + padding-right: 25px; + } + [purpose='snowflake-logo'] { + height: 21px; + } + [purpose='wayfair-logo'] { + height: 23px; + } + [purpose='uber-logo'] { + height: 20px; + } + [purpose='atlassian-logo'] { + height: 16px; + } + [purpose='segment-logo'] { + height: 22px; + } + } + } + + @media (max-width: 991px) { + + [purpose='button-row'] { + margin-right: auto; + margin-left: auto; + } + + [purpose='hero-background'] { + padding-top: 120px; + padding-bottom: 80px; + padding-left: 0px; + padding-right: 0px; + } + + [purpose='logos'] { + height: 58px; + margin-left: 20px; + margin-right: 20px; + img { + margin-top: 17.5px; + margin-bottom: 17.5px; + padding-left: 10px; + padding-right: 10px; + } + } + } + + @media (max-width: 768px) { + + h1 { + font-size: 48px; + line-height: 54px; + } + + [purpose='page-container'] { + padding-left: 40px; + padding-right: 40px; + } + + [purpose='checklists'] { + margin-bottom: 40px; + } + + [purpose='feature'] { + margin-top: 80px; + } + + [purpose='feature-image'], [purpose='large-feature-image'] { + margin-bottom: 40px; + img { + max-height: 100%; + max-width: 100%; + } + } + + [purpose='hero-background'] { + padding-top: 60px; + padding-bottom: 60px; + padding-left: 20px; + padding-right: 20px; + } + + [purpose='hero-text'] { + text-align: center; + max-width: 480px; + } + + [purpose='tweets-container'] { + padding-top: 80px; + padding-bottom: 80px; + padding-left: 40px; + padding-right: 40px; + } + + [purpose='logos'] { + height: auto; + } + } + + @media (max-width: 575px) { + + [purpose='button-row'] { + max-width: 100%; + [purpose='cta-button'] { + margin-right: 0px; + width: 100%; + margin-bottom: 24px; + } + } + + [purpose='feature'] { + margin-top: 60px; + } + + [purpose='page-container'] { + padding-left: 20px; + padding-right: 20px; + } + + [purpose='tweets-container'] { + padding-left: 20px; + padding-right: 20px; + } + + [parasails-component='scrollable-tweets'] [purpose='tweets'] { + margin-top: 40px; + } + + } + +} diff --git a/website/config/routes.js b/website/config/routes.js index ffdd81269c..97b5c8e9b4 100644 --- a/website/config/routes.js +++ b/website/config/routes.js @@ -313,6 +313,13 @@ module.exports.routes = { pageDescriptionForMeta: 'Simplify vulnerability management with Fleet, an open-source platform with superior visibility.', } }, + 'GET /imagine/defcon-31': { + action: 'imagine/view-defcon-31', + locals: { + pageTitleForMeta: 'Fleet at DefCon 31', + pageDescriptionForMeta: 'Find Fleet at DefCon and get a custom tee shirt.', + } + }, // ╦ ╔═╗╔═╗╔═╗╔═╗╦ ╦ ╦═╗╔═╗╔╦╗╦╦═╗╔═╗╔═╗╔╦╗╔═╗ // ║ ║╣ ║ ╦╠═╣║ ╚╦╝ ╠╦╝║╣ ║║║╠╦╝║╣ ║ ║ ╚═╗ diff --git a/website/views/layouts/layout-customer.ejs b/website/views/layouts/layout-customer.ejs index bd6072616e..7ec178077e 100644 --- a/website/views/layouts/layout-customer.ejs +++ b/website/views/layouts/layout-customer.ejs @@ -250,6 +250,7 @@ + diff --git a/website/views/layouts/layout-landing.ejs b/website/views/layouts/layout-landing.ejs index 8a450fbe1a..3eee45a469 100644 --- a/website/views/layouts/layout-landing.ejs +++ b/website/views/layouts/layout-landing.ejs @@ -250,6 +250,7 @@ + diff --git a/website/views/layouts/layout-sandbox.ejs b/website/views/layouts/layout-sandbox.ejs index 4636bbdc45..ce8c88d8f9 100644 --- a/website/views/layouts/layout-sandbox.ejs +++ b/website/views/layouts/layout-sandbox.ejs @@ -377,6 +377,7 @@ + diff --git a/website/views/layouts/layout.ejs b/website/views/layouts/layout.ejs index fc8e63f6fe..d816c7d716 100644 --- a/website/views/layouts/layout.ejs +++ b/website/views/layouts/layout.ejs @@ -450,6 +450,7 @@ + diff --git a/website/views/pages/imagine/defcon-31.ejs b/website/views/pages/imagine/defcon-31.ejs new file mode 100644 index 0000000000..eda84addbf --- /dev/null +++ b/website/views/pages/imagine/defcon-31.ejs @@ -0,0 +1,67 @@ +
+
+
+
+
+
+
+

Grab drinks with the Fleet technical team

+
+ Alex Mitchell - CRO & Software Engineer + Zach Wasserman - Co-founder, CTO Fleet & Co-creator, osquery + Jarod Reyes - VP of Marketing & Software Engineer +
+
+
+

Fleet happy hour at Beer Park

+
+ A map showing the location of Beer Park +
+
+ Easy walking distance from DefCon & Black Hat +
+
+
+

Join us at Beer Park

+

Aug 9, 2023 | 6 - 9pm PT

+ RSVP here +
+
+
+ An illustration of the room where Fleet's workshop will be +

Fleet Workshop at Wall of Sheep

+

Aug 10-12, 2023 | 9am - 8pm PT

+

In the "Wall of Sheep" Packet-Hacking Village at Caesar's Palace.

+
+

The future and present rely on your ability to decode the mess in the machines.

+
+

The lore

+

In the year 2057, Earth was shrouded in a cloudy opaque darkness, not by the forces of nature but by an artificial plague. Words lost their meanings, syntax tangled like a complex web, and conversations turned into garbled chaos. The culprit? Advanced AI bots, an unfathomable force that had manipulated the global linguistic network, turning our life's lexicon into a cryptic enigma.

+ +

This was no ordinary darkness. It was an intangible blight, a dark nebula woven from chaotic words and scrambled semantics. Entire societies were locked in incomprehension. Economies collapsed as contracts became gibberish, international diplomacy failed as treaties turned into nonsensical paragraphs. Even simple, everyday communication became impossible.

+ +

In this time of despair, emerged an unlikely hero, Jules Morse.

+ +

Your job as our hero Jules, is to plunge into the depths of these machines under your stewardship and find the words that were hidden there by past oracles, those who would show us the way out of this miasma.

+ +
+

Learn how to use Fleet

+

Learn how to query machines using osquery

+

Learn how to break queries

+

Learn how to spot vulnerabilities in hosts

+

Learn how to find active processies on machines by user

+

Discover env variables on a remote machine

+

Inspect user activity remotely

+

Inspect installed software remotely

+
+
+ + +
+ Fleet logo + Follow Fleet on Twitter + Join the osquery Slack community +
+
+
+<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>