commit 83c01fd6617ff4a5fdc31f111c6c0dadb4b25cda Author: Anton Livaja Date: Wed Jun 26 11:57:15 2024 -0400 initial commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..37748c5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +Dockerfile +Makefile +_site diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..84d3c25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor +.DS_Store +questions.md \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0c28120 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "_vendor/jekyll-theme-console"] + path = _vendor/jekyll-theme-console + url = https://github.com/b2a3e8/jekyll-theme-console diff --git a/404.html b/404.html new file mode 100644 index 0000000..52f1c88 --- /dev/null +++ b/404.html @@ -0,0 +1,11 @@ +--- +permalink: /404.html +layout: home +--- + +
+

404

+ +

You're in the wrong place. Go /home.

+

:wq

+
diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2749dfa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM ruby:3.2.2-alpine AS builder +LABEL stage=distrust-co-builder +RUN apk update && apk add g++ make git git-lfs +RUN mkdir -p /home +COPY Gemfile /home +COPY Gemfile.lock /home +COPY _vendor /home/_vendor +WORKDIR /home +RUN bundle install +COPY . /home +RUN jekyll build + +FROM debian:bookworm AS mime-types +RUN apt-get update && apt-get install -y media-types + +RUN echo 'types {' > /tmp/mime.types +RUN sed -e '/^$/d' -e 's/$/;/' /etc/mime.types >> /tmp/mime.types +RUN echo '}' >> /tmp/mime.types + +FROM nginx +COPY --from=builder /home/_site /usr/share/nginx/html +COPY --from=mime-types /tmp/mime.types /etc/nginx/mime.types diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..c98b092 --- /dev/null +++ b/Gemfile @@ -0,0 +1,2 @@ +source "https://rubygems.org" +gem "jekyll-theme-console", path: "./_vendor/jekyll-theme-console" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..ecba5d4 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,79 @@ +PATH + remote: _vendor/jekyll-theme-console + specs: + jekyll-theme-console (0.4.0) + jekyll (>= 3.5) + jekyll-seo-tag + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) + colorator (1.1.0) + concurrent-ruby (1.2.2) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.15.5) + forwardable-extended (2.6.0) + google-protobuf (3.23.4-x86_64-linux) + http_parser.rb (0.8.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jekyll (4.3.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.3) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (4.1.2) + safe_yaml (1.0.5) + sass-embedded (1.64.1-x86_64-linux-musl) + google-protobuf (~> 3.23) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.4.2) + webrick (1.8.1) + +PLATFORMS + x86_64-linux-musl + +DEPENDENCIES + jekyll-theme-console! + +BUNDLED WITH + 2.4.10 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b98f88d --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2023 Distrust, LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..404edc5 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +.PHONY: build +build: + # Build Docker image + docker build -t distrust-co . + +.PHONY: fullclean +fullclean: clean + docker rmi distrust-co || true + docker image prune -f --filter label=stage=distrust-co-builder || true + +.PHONY: clean +clean: + rm -r _site || true + +_site: build + mkdir -p _site + docker run distrust-co tar c -C /usr/share/nginx/html . | tar x -C _site + +.PHONY: serve +serve: build + # Run Docker container with listener for current dir and port mapping + docker run --rm -p 0.0.0.0:4000:80 -it distrust-co diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b8ff67 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# [distrust.co](https://distrust.co) + +Web page source. + +## Instructions + +0. If the repo was not cloned with submodules: +```shell +$ git submodule update --init --recursive +``` + +1. Install `make`. +2. Install `docker` +3. Build (export) site to `_site` directory: + +```shell +$ make build +``` + +4. Serve site at `0.0.0.0:4000`: + +```shell +$ make serve +``` + +### Generate Static Files + +1. Output static files in `_site` directory: + +```shell +$ make _site +``` + +### Cleanup + +1. Remove all build artifacts: + +```shell +$ make fullclean +``` diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..048bf69 --- /dev/null +++ b/_config.yml @@ -0,0 +1,60 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: Distrust +email: lance@distrust.co +description: >- # this means to ignore newlines until "baseurl:" + Trust Nothing +baseurl: "" # the subpath of your site, e.g. /blog +url: "https://distrust.co" # the base hostname & protocol for your site, e.g. http://example.com + +header_pages: +- index.md +- about.md +- pricing.md +- contact.md + +style: dark # dark (default), light or hacker +listen_for_clients_preferred_style: false # false (default) or true + +footer: '2024 Distrust, LLC' + +# Build settings +theme: jekyll-theme-console + +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..bc21f99 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,4 @@ + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..bf56233 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,40 @@ + + + + + + + + {{ page.title }} + + {% if page.robots %} + + {% endif %} + + + + + + + + + + + + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..5049dcb --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,32 @@ +{%- assign page_paths = site.header_pages | default: default_paths -%} +
+ +
diff --git a/_layouts/about.html b/_layouts/about.html new file mode 100644 index 0000000..d332721 --- /dev/null +++ b/_layouts/about.html @@ -0,0 +1,40 @@ + + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+
+
+

Our Story

+

Distrust was founded by technologists who sought challenging problems in the applied cryptography, operating + system, supply chain, infrastructure hardening, and other security areas. Through this, they ended up drawn + to problems of managing systems in a way where no single individual can compromise them.

+ +

This methodical approach to building systems which are resilient to single points of failure was appealing to + blockchain companies, so they started to work closely with companies which managed large sums of digital + assets and wanted to be sure that they are taking a first principles approach to building their security + posture.

+ +

From these interactions with many large protocols, blockchain labs, funds and other clients managing large + amounts of funds - they learned how to build systems which are resilient to the most adversarial threat + landscapes.

+ +

Distrust Disaster Recovery is the result of years of collaboration and implementing real world systems + in a way that doesn't compromise on security, and relies of sound principles rather than gimmicky marketing + jargon and claims which can not be independently verified.

+
+
+
+ + {%- include footer.html -%} + +
+ + + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..9fc60c2 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,20 @@ + + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+ {{ content }} +
+ + {%- include footer.html -%} + +
+ + + diff --git a/_layouts/home.html b/_layouts/home.html new file mode 100644 index 0000000..801acaa --- /dev/null +++ b/_layouts/home.html @@ -0,0 +1,7 @@ +--- +layout: default +--- + +{{ content }} +{% assign contentwonl = content | strip_newlines %} {% unless contentwonl == "" %}
{% endunless %} +{%- assign date_format = "%Y-%m-%d" -%} diff --git a/_layouts/landing.html b/_layouts/landing.html new file mode 100644 index 0000000..e7b8cb2 --- /dev/null +++ b/_layouts/landing.html @@ -0,0 +1,154 @@ + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+
+
+

Distrust Disaster Recovery

+

The only fully open source, technology agnostic disaster recovery system.

+

While there are solutions offering disaster recovery services, Distrust Disaster Recovery takes a fully transparent and no-compromise approach which is unparalleled in the industry. We challenge you to find someone who has the same level of rigor in eliminating single points of failure and provides visibility into how their systems work.

+
+ Documentation + Join Waitlist +
+
+
+ +
+ +
+
+

Features

+

Air-Gapped

+

This is meant in the strictest sense, where machines specially provisioned only for managing cryptographic material, which had their radio cards (bluetooth, wifi etc.) removed, and networking capabilities disabled are used in order to always keep the cryptographic material used as the backbone for the system in secure environments.

+ +

Agnostic

+

While most disaster recovery systems only support specific digital assets, our solution can be used for backing up any data. This of course includes digital assets, but can also include other sensitive data.

+ +

Open Source

+

You can verify that the process matches or exceeds the desired threat model you are interested in. Of course, one may use the open source documentation to set up their own system as well, which we encourage.

+
+
+ +
+
+

The Approach

+

Distrust Disaster Recovery has been designed with the utmost care to eliminate single points of failure to ensure that your backups are inaccessible by any single individual, under any circumstances.

+ This may seem like a big claim, but all our processes and software are fully open source - so you can verify for yourself. + +

Most, if not all current commercial backup/disaster recovery systems have many single points of failure and sell a service which is simply not suited for many contexts - especially for backing up digital asset wallets.

+

Often times, companies need to ensure that they can recovery data while ensuring that no single party can access it independently. This type of necessity is especially pronounced when dealing with contexts such as blockchains, where we often deal with cryptographic material which is able to move large quantities of digital assets.

+
+
+ +
+
+
+

We specialize in working with high risk clients.

+

If you protect valuable assets or data, or provide software to others that do, your adversaries will not play fair. We want to help you protect your team and users, and remove single points of failure in your stack.

+
+
+ +
+ +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+ +
+ + + +
+
+
+
+
+ {%- include footer.html -%} +
+ + + \ No newline at end of file diff --git a/_layouts/pricing.html b/_layouts/pricing.html new file mode 100644 index 0000000..4a9c994 --- /dev/null +++ b/_layouts/pricing.html @@ -0,0 +1,32 @@ + + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+ +
+
+

Pricing

+

USD $10,000/yr base subscription

+

USD $25,000 for a recovery ceremony within 72h

+

USD $50,000 for a recovery ceremony within 48h

+

USD $100,000 for a recovery ceremony within 24h

+ +

Ceremony recoveries are only performed in person, in a secure location, with the client present.

+

Storage of the encrypted data is always the responsibility of the client. Refer to this document to learn more.

+

The encrypted data is not available to Distrust except for during the ceremony.

+
+
+ +
+ {%- include footer.html -%} +
+ + + \ No newline at end of file diff --git a/_sass/_dark.scss b/_sass/_dark.scss new file mode 100644 index 0000000..cddd08f --- /dev/null +++ b/_sass/_dark.scss @@ -0,0 +1,32 @@ +/** + * Dark theme variables + */ + +:root { + --base-color: #FFFFFF; + --border: solid 2px rgba(219, 219, 219, 0.9); + --selection-background: rgba(219, 219, 219, 0.99); + --selection-text: #000; + --background-color: #04355d; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #b38aff; + --code-color-6: #5ba711; + --code-color-7: #e4e477; + --code-color-8: #000080; + --code-color-9: #05ca05; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00d4d4; + --code-color-14: #00c1c1; + --code-color-15: #ed9d13; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_sass/_light.scss b/_sass/_light.scss new file mode 100644 index 0000000..3515c95 --- /dev/null +++ b/_sass/_light.scss @@ -0,0 +1,32 @@ +/** + * Base variables + */ + +:root { + --base-color: #000; + --border: dashed 1px rgba(0, 0, 0, 1); + --selection-background: rgba(0, 0, 0, 0.99); + --selection-text: #FFF; + --background-color: #FFF; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #0000aa; + --code-color-6: #4c8317; + --code-color-7: #aa0000; + --code-color-8: #000080; + --code-color-9: #00aa00; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00aaaa; + --code-color-14: #009999; + --code-color-15: #aa5500; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_sass/base.scss b/_sass/base.scss new file mode 100644 index 0000000..ba495ef --- /dev/null +++ b/_sass/base.scss @@ -0,0 +1,973 @@ +@charset "utf-8"; +// @import url('https://fonts.googleapis.com/css?family=Rubik:400,700'); +// @import url('Rubik-VariableFont_wght.ttf'); + +@font-face { + font-family: 'Rubik'; + src: url('fonts/Rubik-VariableFont_wght.ttf') format('truetype'); +} + +/** + * Style variables + */ +$base-font-family: 'Rubik', monospace !default; +$base-font-size: 1.125rem !default; +$mobile-font-size: 1.125rem !default; +$base-line-height: 1.5 !default; +$container-width: 90% !default; +$container-max-width: 1000px !default; + +/** + * Global + */ +body { + background-color: var(--background-color); + margin: 0 auto; + padding: 0; + font-family: $base-font-family; + font-size: $base-font-size; + color: var(--text-color); + text-align: left; + line-height: $base-line-height !important; +} + +h1 { + font-size: 32px; +} + +h2 { + font-size: 28px; +} + +h3 { + font-size: 24px; +} + +h4 { + font-size: 20px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0px; + margin-top: 0px; + margin-bottom: 12px; + font-weight: bold; + color: var(--text-color); +} + +p, +ul, +ol { + margin: 0px; + color: var(--text-color); +} + +a { + text-decoration: underline; + color: var(--link-color); +} + +a:hover { + color: var(--background-color); + background-color: var(--base-color); + transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out; +} + +@media only screen and (max-device-width: 500px) { + * { + font-size: $mobile-font-size; + } +} + +/** + * Layout + */ +.container { + width: $container-width; + max-width: $container-max-width; + margin-right: auto; + margin-left: auto; +} + +p { + /* + word-wrap: break-word; + word-break: break-word; + white-space: pre-wrap; + */ + margin-top: 16px; + margin-bottom: 16px; +} + +footer { + color: var(--text-color); + border-top: var(--border); + margin-top: 24px; + padding-top: 12px; + text-align: right; +} + +header { + margin-top: 24px; + margin-bottom: 24px; +} + +header p { + text-align: left; + margin: 0; +} + +footer { + margin-bottom: 20px; +} + +hr { + margin-top: 20px; +} + +/** + * Navbar + */ +.menu-logo { + height: 60px; +} + +#home-link:hover { + background: none; + text-decoration: none; +} + +.header-page-links li:before { + content: '' +} + +.header-page-links a { + margin: 0px 4px; + font-size: 1.1rem; + text-decoration: none; +} + +.header-page-links a:hover { + background-color: transparent; + color: lightgrey; +} + +.right-menu { + width: 74%; + display: flex; + justify-content: flex-end; + align-items: center; +} + +.menu-button-container { + display: none; + width: 50px; + height: 50px; + cursor: pointer; + flex-direction: column; + justify-content: center; + align-items: center; +} + +#menu-toggle { + display: none; +} + +.menu-button, +.menu-button::before, +.menu-button::after { + display: block; + background-color: #fff; + position: absolute; + height: 4px; + width: 30px; + transition: transform 400ms cubic-bezier(0.23, 1, 0.32, 1); + border-radius: 2px; +} + +.menu-button::before { + content: ''; + margin-top: -8px; +} + +.menu-button::after { + content: ''; + margin-top: 8px; +} + +#menu-toggle:checked+.menu-button-container .menu-button::before { + margin-top: 0px; + transform: rotate(405deg); +} + +#menu-toggle:checked+.menu-button-container .menu-button { + background: rgba(255, 255, 255, 0); +} + +#menu-toggle:checked+.menu-button-container .menu-button::after { + margin-top: 0px; + transform: rotate(-405deg); +} + +.menu-content { + position: absolute; + display: none; + background: #282828; + text-align: right; + margin-top: 100px; + width: 100%; + z-index: 2; +} + +.inner-menu-content { + border-bottom: 1px solid white; +} + +.menu-content div { + margin: 50px 30px 50px 30px; +} + +@media (max-width: 1020px) { + .right-menu { + width: 40px; + height: 40px; + } + + .menu-button-container { + display: flex; + } + + #menu-toggle~.menu li { + height: 0; + margin: 0; + padding: 0; + border: 0; + transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1); + } + + #menu-toggle:checked~.menu li { + border: 1px solid #333; + height: 2.5em; + padding: 0.5em; + transition: height 400ms cubic-bezier(0.23, 1, 0.32, 1); + } + + .menu>li { + display: flex; + justify-content: center; + margin: 0; + padding: 0.5em 0; + width: 100%; + color: white; + background-color: #222; + } + + .menu>li:not(:last-child) { + border-bottom: 1px solid #444; + } +} + +/** + * Buttons + */ +.action-button { + display: inline-block; + padding: 10px 20px 9px 20px; + margin-top: 10px; + border-color: white; + border: solid 1px; + color: black; + background-color: white; + text-decoration: none; +} + +.action-button:hover { + background-color: transparent; + border-color: white; + border: solid 1px; + color: white; +} + +.button-container { + padding: 30px 0px; +} + +/** + * Highlight/Markup + */ +::selection { + background: var(--selection-background); + color: var(--selection-text); +} + +::-moz-selection { + background: var(--selection-background); + color: var(--selection-text); +} + +/** + * Lists + */ +:not(.menu)>ul { + list-style: none; +} + +:not(.menu)>ul { + list-style-type: none; +} + +:not(.menu)>ul>li:before { + content: "-"; + margin-right: 9px; +} + +.right-menu>ul>li:before { + content: "" !important; + margin-right: 4px; +} + + +/** + * Header/Navigation + */ +.menu { + border-bottom: var(--border); + margin-bottom: 20px; + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 25px; +} + +.menu ul { + margin-top: 12px; + margin-bottom: 12px; + padding-left: 0px; + list-style-type: none; + text-align: right; +} + +.menu ul li { + display: inline; + margin-left: 10px; +} + + +/** + * Form + */ +input, +select, +textarea { + padding: 0; + margin: 0; + -webkit-appearance: none; + -webkit-border-radius: 0; + border: none; +} + +input[type=text], +select, +textarea { + width: 100%; + resize: none; + background-color: var(--background-color); + color: var(--text-color); + caret-color: var(--text-color); + font-size: $base-font-size; + font-family: $base-font-family; + line-height: $base-line-height; +} + +input, +select, +textarea, +textarea::-webkit-input-placeholder { + text-indent: 0px; +} + +::placeholder { + color: var(--placeholder-color); + opacity: 1; +} + +:-ms-input-placeholder { + color: var(--placeholder-color); +} + +::-ms-input-placeholder { + color: var(--placeholder-color); +} + +input[type=submit] { + font-size: $base-font-size; + font-family: $base-font-family; + line-height: $base-line-height; + cursor: pointer; + color: var(--link-color); + background-color: var(--background-color); +} + +input[type=submit]:hover { + color: var(--background-color); + background-color: var(--base-color); +} + +*:focus { + outline: none; +} + +textarea { + vertical-align: top; +} + +/** + * Homepage + */ +.particles-wrapper { + background-color: #222; + width: 100%; + height: 100%; + padding: 0; + margin: 0; + overflow: hidden; +} + +.flex-container { + display: flex; + justify-content: space-between; + align-items: flex-start; +} + +.flex-container-inner { + width: 100%; +} + +section { + margin-top: 24px; + margin-bottom: 24px; +} + +.extra-spacing { + margin-top: 70px; + margin-bottom: 70px; +} + +.companies { + display: flex; + justify-content: space-between; + align-items: center; + margin: 30px 0px; +} + +.companies div { + width: 27%; + text-align: center; + display: flex; + align-items: center; + justify-content: center; + height: 120px; + border-bottom: 1px solid; +} + +.companies a img { + height: 45px; + filter: grayscale(100%); + text-align: center; +} + +.companies a:hover { + background-color: none; + background: none; + text-decoration: none; +} + +.text-well { + max-width: 600px; + padding-right: 35px; +} + +/** + * Code and syntax highlighting + */ +.lineno { + color: var(--code-color-1); + margin-right: 15px; +} + +figure.highlight { + margin: 5px 0; +} + +pre { + background-color: var(--background-color); + border: none; + padding: 0; + margin: 0; + overflow: auto; + font-size: $base-font-size; + color: var(--text-color); + line-height: 1.7 !important; + font-family: $base-font-family !important; +} + +.highlight .hll { + background-color: var(--code-color-2); +} + +.highlight .c { + color: var(--code-color-1); + font-style: italic +} + +/* Comment */ +.highlight .err { + color: var(--code-color-3); + background-color: var(--code-color-4); +} + +/* Error */ +.highlight .k { + color: var(--code-color-5); +} + +/* Keyword */ +.highlight .cm { + color: var(--code-color-1); + font-style: italic +} + +/* Comment.Multiline */ +.highlight .cp { + color: var(--code-color-6); +} + +/* Comment.Preproc */ +.highlight .c1 { + color: var(--code-color-1); + font-style: italic +} + +/* Comment.Single */ +.highlight .cs { + color: var(--code-color-5); + font-style: italic +} + +/* Comment.Special */ +.highlight .gd { + color: var(--code-color-7); +} + +/* Generic.Deleted */ +.highlight .ge { + font-style: italic +} + +/* Generic.Emph */ +.highlight .gr { + color: var(--code-color-7); +} + +/* Generic.Error */ +.highlight .gh { + color: var(--code-color-8); + font-weight: bold +} + +/* Generic.Heading */ +.highlight .gi { + color: var(--code-color-9); +} + +/* Generic.Inserted */ +.highlight .go { + color: var(--code-color-10); +} + +/* Generic.Output */ +.highlight .gp { + color: var(--code-color-11); +} + +/* Generic.Prompt */ +.highlight .gs { + font-weight: bold +} + +/* Generic.Strong */ +.highlight .gu { + color: var(--code-color-12); + font-weight: bold +} + +/* Generic.Subheading */ +.highlight .gt { + color: var(--code-color-7); +} + +/* Generic.Traceback */ +.highlight .kc { + color: var(--code-color-5); +} + +/* Keyword.Constant */ +.highlight .kd { + color: var(--code-color-5); +} + +/* Keyword.Declaration */ +.highlight .kn { + color: var(--code-color-5); +} + +/* Keyword.Namespace */ +.highlight .kp { + color: var(--code-color-5); +} + +/* Keyword.Pseudo */ +.highlight .kr { + color: var(--code-color-5); +} + +/* Keyword.Reserved */ +.highlight .kt { + color: var(--code-color-13); +} + +/* Keyword.Type */ +.highlight .m { + color: var(--code-color-14); +} + +/* Literal.Number */ +.highlight .s { + color: var(--code-color-15); +} + +/* Literal.String */ +.highlight .na { + color: var(--code-color-16); +} + +/* Name.Attribute */ +.highlight .nb { + color: var(--code-color-13); +} + +/* Name.Builtin */ +.highlight .nc { + color: var(--code-color-9); + text-decoration: underline +} + +/* Name.Class */ +.highlight .no { + color: var(--code-color-7); +} + +/* Name.Constant */ +.highlight .nd { + color: var(--code-color-10); +} + +/* Name.Decorator */ +.highlight .ni { + color: var(--code-color-17); + font-weight: bold +} + +/* Name.Entity */ +.highlight .nf { + color: var(--code-color-9); +} + +/* Name.Function */ +.highlight .nn { + color: var(--code-color-13); + text-decoration: underline +} + +/* Name.Namespace */ +.highlight .nt { + color: var(--code-color-16); + font-weight: bold +} + +/* Name.Tag */ +.highlight .nv { + color: var(--code-color-7); +} + +/* Name.Variable */ +.highlight .ow { + color: var(--code-color-5); +} + +/* Operator.Word */ +.highlight .w { + color: var(--code-color-18); +} + +/* Text.Whitespace */ +.highlight .mf { + color: var(--code-color-14); +} + +/* Literal.Number.Float */ +.highlight .mh { + color: var(--code-color-14); +} + +/* Literal.Number.Hex */ +.highlight .mi { + color: var(--code-color-14); +} + +/* Literal.Number.Integer */ +.highlight .mo { + color: var(--code-color-14); +} + +/* Literal.Number.Oct */ +.highlight .sb { + color: var(--code-color-15); +} + +/* Literal.String.Backtick */ +.highlight .sc { + color: var(--code-color-15); +} + +/* Literal.String.Char */ +.highlight .sd { + color: var(--code-color-15); +} + +/* Literal.String.Doc */ +.highlight .s2 { + color: var(--code-color-15); +} + +/* Literal.String.Double */ +.highlight .se { + color: var(--code-color-15); +} + +/* Literal.String.Escape */ +.highlight .sh { + color: var(--code-color-15); +} + +/* Literal.String.Heredoc */ +.highlight .si { + color: var(--code-color-15); +} + +/* Literal.String.Interpol */ +.highlight .sx { + color: var(--code-color-15); +} + +/* Literal.String.Other */ +.highlight .sr { + color: var(--code-color-14); +} + +/* Literal.String.Regex */ +.highlight .s1 { + color: var(--code-color-15); +} + +/* Literal.String.Single */ +.highlight .ss { + color: var(--code-color-5); +} + +/* Literal.String.Symbol */ +.highlight .bp { + color: var(--code-color-13); +} + +/* Name.Builtin.Pseudo */ +.highlight .vc { + color: var(--code-color-7); +} + +/* Name.Variable.Class */ +.highlight .vg { + color: var(--code-color-7); +} + +/* Name.Variable.Global */ +.highlight .vi { + color: var(--code-color-7); +} + +/* Name.Variable.Instance */ +.highlight .il { + color: var(--code-color-14); +} + +/* Literal.Number.Integer.Long */ + + +.hide { + display: none; + width: 100%; +} + +.show { + display: inline-block; +} + + +/** + * Carousel + */ + +.carousel-container { + padding-left: 80px; +} + +#carousel { + display: flex; + flex-direction: column; + align-items: center; + overflow: hidden; + height: 320px; + padding-left: 100px; + position: relative; +} + +.carousel-item { + display: flex; + justify-content: center; + align-items: center; + max-width: 400px; + height: 80px; + width: 100%; + font-size: 16px; + opacity: 0.5; + margin: 5px 0; + position: absolute; + left: 0; + right: 0; + transition: transform 1s ease, font-size 1s ease, opacity 1s ease; + transform-origin: center; + visibility: hidden; + overflow: hidden; +} + +.carousel-link { + text-align: left; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.2; + max-height: 2.4em; + width: 100%; + margin: 0 10px; + white-space: normal; +} + +.carousel-item.active { + transform: translateY(0) scale(1.2); + font-size: 20px; + opacity: 1; + visibility: visible; +} +/** end carousel */ + +/** + * Blog + */ +.post img { + max-width: 100%; +} + +#lp-post-img { + max-width: 100%; +} + +/** end blog */ + +*, +*::before, +*::after { + box-sizing: border-box; +} + +body { + font-family: 'Work Sans', sans-serif; + font-weight: 400; + width: 100%; +} + +.wrapper { + background: linear-gradient(60deg, #420285, #08BDBD); + height: 100%; + width: 100%; + display: flex; + justify-content: center; +} + +.title { + text-transform: uppercase; + font-size: 20px; + margin-top: 10px; +} + +/** + * media queries + */ +@media (max-width: 1020px) { + .flex-container-inner { + width: 100% !important; + } + + .flex-container { + display: inline-block; + } + + .hide { + display: inline-block; + } + + .show { + display: none; + } +} + +@media (max-width: 600px) { + .companies { + flex-wrap: wrap; + } + + .companies div { + width: 100%; + height: 170px; + border-bottom: none; + } + + .carousel-container { + padding-top: 50px; + padding-left: 10px; + } +} diff --git a/_vendor/jekyll-theme-console/.gitignore b/_vendor/jekyll-theme-console/.gitignore new file mode 100644 index 0000000..867d379 --- /dev/null +++ b/_vendor/jekyll-theme-console/.gitignore @@ -0,0 +1,5 @@ +*.gem +.bundle +.sass-cache +_site +Gemfile.lock diff --git a/_vendor/jekyll-theme-console/404.md b/_vendor/jekyll-theme-console/404.md new file mode 100644 index 0000000..a47786d --- /dev/null +++ b/_vendor/jekyll-theme-console/404.md @@ -0,0 +1,7 @@ +--- +layout: default +permalink: /404.html +--- + +# 404 +Page not found :( diff --git a/_vendor/jekyll-theme-console/Gemfile b/_vendor/jekyll-theme-console/Gemfile new file mode 100644 index 0000000..748c92f --- /dev/null +++ b/_vendor/jekyll-theme-console/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source "https://rubygems.org" +gemspec + + +gem 'jekyll-seo-tag' diff --git a/_vendor/jekyll-theme-console/LICENSE.txt b/_vendor/jekyll-theme-console/LICENSE.txt new file mode 100644 index 0000000..e4476f3 --- /dev/null +++ b/_vendor/jekyll-theme-console/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 b2a3e8 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/_vendor/jekyll-theme-console/README.md b/_vendor/jekyll-theme-console/README.md new file mode 100644 index 0000000..4893a12 --- /dev/null +++ b/_vendor/jekyll-theme-console/README.md @@ -0,0 +1,121 @@ +# jekyll-theme-console + +A jekyll theme with inspiration from linux consoles for hackers, developers and script kiddies. + + + +## Demo + +[dark style](https://b2a3e8.github.io/jekyll-theme-console-demo-dark/) ([source code](https://github.com/b2a3e8/jekyll-theme-console-demo-dark)): + +[](https://b2a3e8.github.io/jekyll-theme-console-demo-dark/) + + +[light style](https://b2a3e8.github.io/jekyll-theme-console-demo-light/) ([source code](https://github.com/b2a3e8/jekyll-theme-console-demo-light)): + +[](https://b2a3e8.github.io/jekyll-theme-console-demo-light/) + + +[hacker style](https://b2a3e8.github.io/jekyll-theme-console-demo-hacker/) ([source code](https://github.com/b2a3e8/jekyll-theme-console-demo-hacker)): + +[](https://b2a3e8.github.io/jekyll-theme-console-demo-hacker/) + + +## Installation + +First, follow the steps in [this Quickstart Guide](https://jekyllrb.com/docs/) if you're starting with Jekyll from scratch. Skip this if you already have an existing jekyll project. + +**_You can also use the [demo site's source code](https://b2a3e8.github.io/jekyll-theme-console-demo-dark/) as template for an easy start._** + +### Remote theme method for GitHub Pages + +Use this method for sites hosted with GitHub Pages only. To install: + +1. Set `remote_theme` in your project's Jekyll `_config.yml` file: + + ```yaml + remote_theme: b2a3e8/jekyll-theme-console + ``` + +### Gem-based method + +With Gem-based themes, directories such as the `assets`, `_layouts`, `_includes`, and `_sass` are stored in the theme’s gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll’s build process. + +This allows for easier installation and updating as you don't have to manage any of the theme files. To install: + +1. Add this line to your Jekyll site's `Gemfile`: + + ```ruby + gem "jekyll-theme-console" + ``` + +2. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: + + ```bash + bundle + ``` + +3. Set `theme` in your project's Jekyll `_config.yml` file: + + ```yaml + theme: jekyll-theme-console + ``` + +To update the theme run `bundle update`. + +## Usage + +### _config.yaml + +In addition to jekyll's default configuration options, you can provide: +- `header_pages` to specify which pages should be displayed in navbar +- `footer` string, which will be inserted on the end of the page (doesn't support markup, but html) +- `google_analytics` tracking id (tracking will be enabled only in production environments and only if you set this option, no Google Analytics code will be loaded if you don't set this option) +- `listen_for_clients_preferred_style` boolean, used to allow users to choose light or dark style based on their preferences (mostly affected by OS dark or light theme, details see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme) +- `style` to specify which predefined style (colors) should be used + +```yaml +header_pages: + - index.md + - about.md + +style: dark # dark (default), light or hacker +listen_for_clients_preferred_style: true # false (default) or true + +footer: 'follow us on twitter' + +google_analytics: UA-NNNNNNNN-N +``` + +### front matter variables + +Besides the predefined [front matter](https://jekyllrb.com/docs/front-matter/) variables from jekyll this theme also supports following variables: +- `title` to set a title for the page +- `lang` to specify the language, defaults to 'en' +- `robots` to control the robot meta tag ([details](http://longqian.me/2017/02/12/jekyll-robots-configuration/)) - this may be useful for example to set `NOINDEX` to tag pages + +## Customization + +If you want to customize this theme, follow this steps: +1. Fork this repository (you can use the fork as your own theme or directly as your website) +2. Create or modify files in `_layouts` directory for html-based changes +3. Create or modify files in `_sass` and `assets` for css-based changes + - You can change things which are used in light and dark theme (like font-size) in `_sass/base.scss`. You'll find style variables at the top. + - Style-specific definitions are in `_sass/_dark.scss` respectively in `_sass/_light.scss`. You can change things like background-color there. + +## Contributing + +Bug reports and pull requests are welcome on GitHub at https://github.com/b2a3e8/jekyll-theme-console. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. + +## Development + +To set up your environment to develop this theme, run `bundle install`. + +Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal. + +When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled. +To add a custom directory to your theme-gem, please edit the regexp in `jekyll-theme-console.gemspec` accordingly. + +## License + +The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). diff --git a/_vendor/jekyll-theme-console/_config.yml b/_vendor/jekyll-theme-console/_config.yml new file mode 100644 index 0000000..1b28bf0 --- /dev/null +++ b/_vendor/jekyll-theme-console/_config.yml @@ -0,0 +1,15 @@ +# Example Site settings + +#google_analytics: UA-NNNNNNNN-N + +#header_pages: +# - index.md +# - about.md + +#footer: 'follow us on twitter' + +#style: light # dark (default) or light +#listen_for_clients_preferred_style: true # true or false (default) + +plugins: + - jekyll-seo-tag diff --git a/_vendor/jekyll-theme-console/_includes/footer.html b/_vendor/jekyll-theme-console/_includes/footer.html new file mode 100644 index 0000000..c0ef312 --- /dev/null +++ b/_vendor/jekyll-theme-console/_includes/footer.html @@ -0,0 +1,3 @@ + diff --git a/_vendor/jekyll-theme-console/_includes/google-analytics.html b/_vendor/jekyll-theme-console/_includes/google-analytics.html new file mode 100644 index 0000000..0f85f73 --- /dev/null +++ b/_vendor/jekyll-theme-console/_includes/google-analytics.html @@ -0,0 +1,8 @@ + + diff --git a/_vendor/jekyll-theme-console/_includes/head.html b/_vendor/jekyll-theme-console/_includes/head.html new file mode 100644 index 0000000..b1061ab --- /dev/null +++ b/_vendor/jekyll-theme-console/_includes/head.html @@ -0,0 +1,27 @@ + + + + + {{ page.title }} + {%- seo title=false -%} + + {% if page.robots %} + + {% endif %} + + {%- if site.listen_for_clients_preferred_style -%} + + {%- else -%} + {%- if site.style == 'light' -%} + + {%- elsif site.style == 'hacker' -%} + + {%- else -%} + + {%- endif -%} + {%- endif -%} + + {%- if jekyll.environment == 'production' and site.google_analytics -%} + {%- include google-analytics.html -%} + {%- endif -%} + diff --git a/_vendor/jekyll-theme-console/_includes/header.html b/_vendor/jekyll-theme-console/_includes/header.html new file mode 100644 index 0000000..618e8df --- /dev/null +++ b/_vendor/jekyll-theme-console/_includes/header.html @@ -0,0 +1,13 @@ +{%- assign page_paths = site.header_pages | default: default_paths -%} +
+ +
diff --git a/_vendor/jekyll-theme-console/_layouts/default.html b/_vendor/jekyll-theme-console/_layouts/default.html new file mode 100644 index 0000000..93e1f94 --- /dev/null +++ b/_vendor/jekyll-theme-console/_layouts/default.html @@ -0,0 +1,22 @@ + + + + + + + {%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+ {{ content }} +
+ + {%- include footer.html -%} + +
+ + diff --git a/_vendor/jekyll-theme-console/_layouts/home.html b/_vendor/jekyll-theme-console/_layouts/home.html new file mode 100644 index 0000000..9e050fe --- /dev/null +++ b/_vendor/jekyll-theme-console/_layouts/home.html @@ -0,0 +1,17 @@ +--- +layout: default +--- + +{{ content }} +{% assign contentwonl = content | strip_newlines %} {% unless contentwonl == "" %}
{% endunless %} + +{%- if site.posts.size > 0 -%} + +{%- endif -%} diff --git a/_vendor/jekyll-theme-console/_layouts/page.html b/_vendor/jekyll-theme-console/_layouts/page.html new file mode 100644 index 0000000..5e71126 --- /dev/null +++ b/_vendor/jekyll-theme-console/_layouts/page.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/_vendor/jekyll-theme-console/_layouts/post.html b/_vendor/jekyll-theme-console/_layouts/post.html new file mode 100644 index 0000000..5e71126 --- /dev/null +++ b/_vendor/jekyll-theme-console/_layouts/post.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{{ content }} diff --git a/_vendor/jekyll-theme-console/_sass/_dark.scss b/_vendor/jekyll-theme-console/_sass/_dark.scss new file mode 100644 index 0000000..59893dd --- /dev/null +++ b/_vendor/jekyll-theme-console/_sass/_dark.scss @@ -0,0 +1,32 @@ +/** + * Dark theme variables + */ + +:root { + --base-color: #DBDBDB; + --border: dashed 1px rgba(219, 219, 219, 0.9); + --selection-background: rgba(219, 219, 219, 0.99); + --selection-text: #000; + --background-color: #000; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #b38aff; + --code-color-6: #5ba711; + --code-color-7: #e4e477; + --code-color-8: #000080; + --code-color-9: #05ca05; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00d4d4; + --code-color-14: #00c1c1; + --code-color-15: #ed9d13; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_vendor/jekyll-theme-console/_sass/_hacker.scss b/_vendor/jekyll-theme-console/_sass/_hacker.scss new file mode 100644 index 0000000..29a26bb --- /dev/null +++ b/_vendor/jekyll-theme-console/_sass/_hacker.scss @@ -0,0 +1,32 @@ +/** + * Hacker theme variables + */ + +:root { + --base-color: #00ff00; + --border: dashed 1px rgba(0, 255, 0, 0.9); + --selection-background: rgba(0, 255, 0, 0.99); + --selection-text: #000; + --background-color: #000; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #b38aff; + --code-color-6: #5ba711; + --code-color-7: #e4e477; + --code-color-8: #000080; + --code-color-9: #05ca05; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00d4d4; + --code-color-14: #00c1c1; + --code-color-15: #ed9d13; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_vendor/jekyll-theme-console/_sass/_light.scss b/_vendor/jekyll-theme-console/_sass/_light.scss new file mode 100644 index 0000000..be7b64b --- /dev/null +++ b/_vendor/jekyll-theme-console/_sass/_light.scss @@ -0,0 +1,32 @@ +/** + * Light theme variables + */ + +:root { + --base-color: #000; + --border: dashed 1px rgba(0, 0, 0, 1); + --selection-background: rgba(0, 0, 0, 0.99); + --selection-text: #FFF; + --background-color: #FFF; + --text-color: var(--base-color); + --placeholder-color: var(--base-color); + --link-color: var(--base-color); + --code-color-1: #aaaaaa; + --code-color-2: #ffffcc; + --code-color-3: #F00000; + --code-color-4: #F0A0A0; + --code-color-5: #0000aa; + --code-color-6: #4c8317; + --code-color-7: #aa0000; + --code-color-8: #000080; + --code-color-9: #00aa00; + --code-color-10: #888888; + --code-color-11: #555555; + --code-color-12: #800080; + --code-color-13: #00aaaa; + --code-color-14: #009999; + --code-color-15: #aa5500; + --code-color-16: #1e90ff; + --code-color-17: #800000; + --code-color-18: #bbbbbb; +} diff --git a/_vendor/jekyll-theme-console/_sass/base.scss b/_vendor/jekyll-theme-console/_sass/base.scss new file mode 100644 index 0000000..8f59cd1 --- /dev/null +++ b/_vendor/jekyll-theme-console/_sass/base.scss @@ -0,0 +1,133 @@ +@charset "utf-8"; +@import url('https://fonts.googleapis.com/css?family=Source+Code+Pro:400,700'); + +/** + * Style variables + */ +$base-font-family: 'Source Code Pro', monospace !default; +$base-font-size: 12.5px !default; +$mobile-font-size: 12px !default; +$base-line-height: 1.5 !default; +$container-width: 90% !default; +$container-max-width: 600px !default; + +/** + * Global + */ +body { background-color: var(--background-color); margin: 0 auto; padding: 0; font-family: $base-font-family; font-size: $base-font-size; color: var(--text-color); text-align: left; line-height: $base-line-height !important; } +h1, h2, h3, h4, h5, h6 { font-size: $base-font-size; margin: 0px; margin-top: 22px; font-weight: bold; color: var(--text-color); } +p, ul, ol { margin: 0px; color: var(--text-color); } +a { text-decoration: underline; color: var(--link-color); } +a:hover { color: var(--background-color); background-color: var(--base-color); } +@media only screen and (max-device-width: 500px) { * { font-size: $mobile-font-size !important; } } + +/** + * Layout + */ +.container { width: $container-width; max-width: $container-max-width; margin-right: auto; margin-left: auto; } +p { word-wrap: break-word; word-break: break-word; white-space: pre-wrap; margin-bottom: 15px; } +footer { color: var(--text-color); border-top: var(--border); margin: 20px auto 15px; padding-top: 10px; text-align: right; } +header { margin-top: 25px; margin-bottom: 10px; } +header p { text-align: left; margin: 0; } +footer { margin-bottom: 20px; } + +/** + * Highlight/Markup + */ +::selection { background: var(--selection-background); color: var(--selection-text); } +::-moz-selection { background: var(--selection-background); color: var(--selection-text); } + +/** + * Lists + */ +:not(.menu) > ul { list-style: none; padding-left: 0; } +:not(.menu) > ul { list-style-type: none; } +:not(.menu) > ul > li:before { content: "-"; margin-right: 9px; } + +/** + * Header/Navigation + */ +.menu { border-top: var(--border); border-bottom: var(--border); margin-bottom: 25px; } +.menu ul { margin-top: 12px; margin-bottom: 12px; padding-left: 0px; list-style-type: none; text-align: right; } +.menu ul li { display: inline; margin-left: 10px; } +.menu ul li a { text-decoration: none; color: var(--text-color); } +.menu ul li a:hover { text-decoration: none; color: var(--background-color); background-color: var(--base-color); } + +/** + * Form + */ +input, select, textarea { padding: 0; margin: 0; -webkit-appearance: none; -webkit-border-radius: 0; border: none; } +input[type=text], select, textarea { width: 100%; resize: none; background-color: var(--background-color); color: var(--text-color); caret-color: var(--text-color); font-size: $base-font-size; font-family: $base-font-family; line-height: $base-line-height; } +input, select, textarea, textarea::-webkit-input-placeholder { text-indent: 0px; } +::placeholder { color: var(--placeholder-color); opacity: 1; } +:-ms-input-placeholder { color: var(--placeholder-color); } +::-ms-input-placeholder { color: var(--placeholder-color); } +input[type=submit] { font-size: $base-font-size; font-family: $base-font-family; line-height: $base-line-height; cursor: pointer; color: var(--link-color); background-color: var(--background-color); } +input[type=submit]:hover { color: var(--background-color); background-color: var(--base-color); } +*:focus { outline: none; } +textarea { vertical-align: top; } + +/** + * Code and syntax highlighting + */ +.lineno { color: var(--code-color-1); margin-right: 15px; } +figure.highlight { margin: 5px 0; } +pre { background-color: var(--background-color); border: none; padding: 0; margin: 0; overflow:auto; font-size: $base-font-size; color: var(--text-color); line-height: 1.7 !important; font-family: $base-font-family !important; } +.highlight .hll { background-color: var(--code-color-2); } +.highlight .c { color: var(--code-color-1); font-style: italic } /* Comment */ +.highlight .err { color: var(--code-color-3); background-color: var(--code-color-4); } /* Error */ +.highlight .k { color: var(--code-color-5); } /* Keyword */ +.highlight .cm { color: var(--code-color-1); font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: var(--code-color-6); } /* Comment.Preproc */ +.highlight .c1 { color: var(--code-color-1); font-style: italic } /* Comment.Single */ +.highlight .cs { color: var(--code-color-5); font-style: italic } /* Comment.Special */ +.highlight .gd { color: var(--code-color-7); } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: var(--code-color-7); } /* Generic.Error */ +.highlight .gh { color: var(--code-color-8); font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: var(--code-color-9); } /* Generic.Inserted */ +.highlight .go { color: var(--code-color-10); } /* Generic.Output */ +.highlight .gp { color: var(--code-color-11); } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: var(--code-color-12); font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: var(--code-color-7); } /* Generic.Traceback */ +.highlight .kc { color: var(--code-color-5); } /* Keyword.Constant */ +.highlight .kd { color: var(--code-color-5); } /* Keyword.Declaration */ +.highlight .kn { color: var(--code-color-5); } /* Keyword.Namespace */ +.highlight .kp { color: var(--code-color-5); } /* Keyword.Pseudo */ +.highlight .kr { color: var(--code-color-5); } /* Keyword.Reserved */ +.highlight .kt { color: var(--code-color-13); } /* Keyword.Type */ +.highlight .m { color: var(--code-color-14); } /* Literal.Number */ +.highlight .s { color: var(--code-color-15); } /* Literal.String */ +.highlight .na { color: var(--code-color-16); } /* Name.Attribute */ +.highlight .nb { color: var(--code-color-13); } /* Name.Builtin */ +.highlight .nc { color: var(--code-color-9); text-decoration: underline } /* Name.Class */ +.highlight .no { color: var(--code-color-7); } /* Name.Constant */ +.highlight .nd { color: var(--code-color-10); } /* Name.Decorator */ +.highlight .ni { color: var(--code-color-17); font-weight: bold } /* Name.Entity */ +.highlight .nf { color: var(--code-color-9); } /* Name.Function */ +.highlight .nn { color: var(--code-color-13); text-decoration: underline } /* Name.Namespace */ +.highlight .nt { color: var(--code-color-16); font-weight: bold } /* Name.Tag */ +.highlight .nv { color: var(--code-color-7); } /* Name.Variable */ +.highlight .ow { color: var(--code-color-5); } /* Operator.Word */ +.highlight .w { color: var(--code-color-18); } /* Text.Whitespace */ +.highlight .mf { color: var(--code-color-14); } /* Literal.Number.Float */ +.highlight .mh { color: var(--code-color-14); } /* Literal.Number.Hex */ +.highlight .mi { color: var(--code-color-14); } /* Literal.Number.Integer */ +.highlight .mo { color: var(--code-color-14); } /* Literal.Number.Oct */ +.highlight .sb { color: var(--code-color-15); } /* Literal.String.Backtick */ +.highlight .sc { color: var(--code-color-15); } /* Literal.String.Char */ +.highlight .sd { color: var(--code-color-15); } /* Literal.String.Doc */ +.highlight .s2 { color: var(--code-color-15); } /* Literal.String.Double */ +.highlight .se { color: var(--code-color-15); } /* Literal.String.Escape */ +.highlight .sh { color: var(--code-color-15); } /* Literal.String.Heredoc */ +.highlight .si { color: var(--code-color-15); } /* Literal.String.Interpol */ +.highlight .sx { color: var(--code-color-15); } /* Literal.String.Other */ +.highlight .sr { color: var(--code-color-14); } /* Literal.String.Regex */ +.highlight .s1 { color: var(--code-color-15); } /* Literal.String.Single */ +.highlight .ss { color: var(--code-color-5); } /* Literal.String.Symbol */ +.highlight .bp { color: var(--code-color-13); } /* Name.Builtin.Pseudo */ +.highlight .vc { color: var(--code-color-7); } /* Name.Variable.Class */ +.highlight .vg { color: var(--code-color-7); } /* Name.Variable.Global */ +.highlight .vi { color: var(--code-color-7); } /* Name.Variable.Instance */ +.highlight .il { color: var(--code-color-14); } /* Literal.Number.Integer.Long */ diff --git a/_vendor/jekyll-theme-console/assets/main-dark.scss b/_vendor/jekyll-theme-console/assets/main-dark.scss new file mode 100644 index 0000000..64c0632 --- /dev/null +++ b/_vendor/jekyll-theme-console/assets/main-dark.scss @@ -0,0 +1,6 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "dark"; +@import "base"; diff --git a/_vendor/jekyll-theme-console/assets/main-hacker.scss b/_vendor/jekyll-theme-console/assets/main-hacker.scss new file mode 100644 index 0000000..3cc37f3 --- /dev/null +++ b/_vendor/jekyll-theme-console/assets/main-hacker.scss @@ -0,0 +1,6 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "hacker"; +@import "base"; diff --git a/_vendor/jekyll-theme-console/assets/main-light.scss b/_vendor/jekyll-theme-console/assets/main-light.scss new file mode 100644 index 0000000..8edca09 --- /dev/null +++ b/_vendor/jekyll-theme-console/assets/main-light.scss @@ -0,0 +1,6 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "light"; +@import "base"; diff --git a/_vendor/jekyll-theme-console/assets/main.scss b/_vendor/jekyll-theme-console/assets/main.scss new file mode 100644 index 0000000..502a8ec --- /dev/null +++ b/_vendor/jekyll-theme-console/assets/main.scss @@ -0,0 +1,10 @@ +--- +# Only the main Sass file needs front matter (the dashes are enough) +--- + +@import "light"; +@import "base"; + +@media (prefers-color-scheme: dark) { + @import "dark"; +} diff --git a/_vendor/jekyll-theme-console/index.md b/_vendor/jekyll-theme-console/index.md new file mode 100644 index 0000000..94e4231 --- /dev/null +++ b/_vendor/jekyll-theme-console/index.md @@ -0,0 +1,9 @@ +--- +title: / +layout: home +permalink: / +--- + +# Lorem ipsum + +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 nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/_vendor/jekyll-theme-console/jekyll-theme-console.gemspec b/_vendor/jekyll-theme-console/jekyll-theme-console.gemspec new file mode 100644 index 0000000..746fd4b --- /dev/null +++ b/_vendor/jekyll-theme-console/jekyll-theme-console.gemspec @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +Gem::Specification.new do |spec| + spec.name = "jekyll-theme-console" + spec.version = "0.4.0" + spec.authors = ["b2a3e8"] + spec.email = ["31370519+b2a3e8@users.noreply.github.com"] + + spec.summary = "A jekyll theme with inspiration from linux consoles for hackers, developers and script kiddies." + spec.homepage = "https://github.com/b2a3e8/jekyll-theme-console" + spec.license = "MIT" + + spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r!^(assets|_layouts|_includes|_sass|LICENSE|README)!i) } + + spec.add_runtime_dependency "jekyll", ">= 3.5" + spec.add_runtime_dependency "jekyll-seo-tag" + spec.add_development_dependency "bundler" + spec.add_development_dependency "rake" +end diff --git a/_vendor/jekyll-theme-console/screenrec-dark.gif b/_vendor/jekyll-theme-console/screenrec-dark.gif new file mode 100644 index 0000000..332bc58 Binary files /dev/null and b/_vendor/jekyll-theme-console/screenrec-dark.gif differ diff --git a/_vendor/jekyll-theme-console/screenshot-dark.png b/_vendor/jekyll-theme-console/screenshot-dark.png new file mode 100644 index 0000000..da65d1b Binary files /dev/null and b/_vendor/jekyll-theme-console/screenshot-dark.png differ diff --git a/_vendor/jekyll-theme-console/screenshot-hacker.png b/_vendor/jekyll-theme-console/screenshot-hacker.png new file mode 100644 index 0000000..cbad7cc Binary files /dev/null and b/_vendor/jekyll-theme-console/screenshot-hacker.png differ diff --git a/_vendor/jekyll-theme-console/screenshot-light.png b/_vendor/jekyll-theme-console/screenshot-light.png new file mode 100644 index 0000000..9fbd54b Binary files /dev/null and b/_vendor/jekyll-theme-console/screenshot-light.png differ diff --git a/about.md b/about.md new file mode 100644 index 0000000..3224d2c --- /dev/null +++ b/about.md @@ -0,0 +1,5 @@ +--- +title: About +layout: about +permalink: /about.html +--- diff --git a/assets/base/companies/ankr.png b/assets/base/companies/ankr.png new file mode 100644 index 0000000..77fe455 Binary files /dev/null and b/assets/base/companies/ankr.png differ diff --git a/assets/base/companies/bishop-fox-dark.png b/assets/base/companies/bishop-fox-dark.png new file mode 100644 index 0000000..c0e931f Binary files /dev/null and b/assets/base/companies/bishop-fox-dark.png differ diff --git a/assets/base/companies/bitgo-logo-white.svg b/assets/base/companies/bitgo-logo-white.svg new file mode 100644 index 0000000..6d676cc --- /dev/null +++ b/assets/base/companies/bitgo-logo-white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/base/companies/block-one-dark.svg b/assets/base/companies/block-one-dark.svg new file mode 100644 index 0000000..15460fe --- /dev/null +++ b/assets/base/companies/block-one-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/base/companies/coinbase-white.svg b/assets/base/companies/coinbase-white.svg new file mode 100644 index 0000000..2f9b6d5 --- /dev/null +++ b/assets/base/companies/coinbase-white.svg @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/assets/base/companies/dfns-color.png b/assets/base/companies/dfns-color.png new file mode 100644 index 0000000..afebab8 Binary files /dev/null and b/assets/base/companies/dfns-color.png differ diff --git a/assets/base/companies/exodus-white.svg b/assets/base/companies/exodus-white.svg new file mode 100644 index 0000000..3a54e5e --- /dev/null +++ b/assets/base/companies/exodus-white.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/base/companies/falconx-white.svg b/assets/base/companies/falconx-white.svg new file mode 100644 index 0000000..95e6bdb --- /dev/null +++ b/assets/base/companies/falconx-white.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/base/companies/fitbit-white.png b/assets/base/companies/fitbit-white.png new file mode 100644 index 0000000..19b9f28 Binary files /dev/null and b/assets/base/companies/fitbit-white.png differ diff --git a/assets/base/companies/hashicorp-white.png b/assets/base/companies/hashicorp-white.png new file mode 100644 index 0000000..276f25d Binary files /dev/null and b/assets/base/companies/hashicorp-white.png differ diff --git a/assets/base/companies/ledn-white.svg b/assets/base/companies/ledn-white.svg new file mode 100644 index 0000000..1d239d5 --- /dev/null +++ b/assets/base/companies/ledn-white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/base/companies/mysten-labs-white.svg b/assets/base/companies/mysten-labs-white.svg new file mode 100644 index 0000000..560ee71 --- /dev/null +++ b/assets/base/companies/mysten-labs-white.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/base/companies/sidero-labs-white.png b/assets/base/companies/sidero-labs-white.png new file mode 100644 index 0000000..bfde3bc Binary files /dev/null and b/assets/base/companies/sidero-labs-white.png differ diff --git a/assets/base/companies/turnkey-black.svg b/assets/base/companies/turnkey-black.svg new file mode 100644 index 0000000..a9f7361 --- /dev/null +++ b/assets/base/companies/turnkey-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/base/companies/zoom-white.png b/assets/base/companies/zoom-white.png new file mode 100644 index 0000000..473752a Binary files /dev/null and b/assets/base/companies/zoom-white.png differ diff --git a/assets/base/distrust-text-white.svg b/assets/base/distrust-text-white.svg new file mode 100644 index 0000000..ccbab5c --- /dev/null +++ b/assets/base/distrust-text-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/base/distrust-white.svg b/assets/base/distrust-white.svg new file mode 100644 index 0000000..ab90aaf --- /dev/null +++ b/assets/base/distrust-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/favicons/favicon-16x16.png b/assets/favicons/favicon-16x16.png new file mode 100644 index 0000000..eac272b Binary files /dev/null and b/assets/favicons/favicon-16x16.png differ diff --git a/assets/favicons/favicon-32x32.png b/assets/favicons/favicon-32x32.png new file mode 100644 index 0000000..34b293b Binary files /dev/null and b/assets/favicons/favicon-32x32.png differ diff --git a/assets/favicons/favicon-96x96.png b/assets/favicons/favicon-96x96.png new file mode 100644 index 0000000..f01b752 Binary files /dev/null and b/assets/favicons/favicon-96x96.png differ diff --git a/assets/favicons/favicon.ico b/assets/favicons/favicon.ico new file mode 100644 index 0000000..2212c75 Binary files /dev/null and b/assets/favicons/favicon.ico differ diff --git a/assets/fonts/Rubik-VariableFont_wght.ttf b/assets/fonts/Rubik-VariableFont_wght.ttf new file mode 100644 index 0000000..fa161b9 Binary files /dev/null and b/assets/fonts/Rubik-VariableFont_wght.ttf differ diff --git a/assets/js/carousel-items.json b/assets/js/carousel-items.json new file mode 100644 index 0000000..b20e831 --- /dev/null +++ b/assets/js/carousel-items.json @@ -0,0 +1,122 @@ +[ + { + "link": "https://www.wired.com/story/the-untold-story-of-solarwinds-the-boldest-supply-chain-hack-ever/", + "description": "SolarWind: The Untold Story of the Boldest Supply-Chain Hack Ever" + }, + { + "link": "https://www.theverge.com/2018/4/24/17275982/myetherwallet-hack-bgp-dns-hijacking-stolen-ethereum", + "description": "Hackers emptied Ethereum wallets by breaking the basic infrastructure of the internet" + }, + { + "link": "https://milksad.info/", + "description": "A practical explanation of how weak entropy can ruin your day - and your savings." + }, + { + "link": "https://thehackerblog.com/zero-days-without-incident-compromising-angular-via-expired-npm-publisher-email-domains-7kZplW4x/", + "description": "Compromising Angular via Expired npm Publisher Email Domains" + }, + { + "link": "https://blog.ryotak.net/post/homebrew-security-incident-en/", + "description": "Remote code execution in Homebrew by compromising the official Cask repository" + }, + { + "link": "https://gizmodo.com/u-s-federal-investigators-are-reportedly-looking-into-1846707144link4", + "description": "U.S. Federal Investigators Are Reportedly Looking Into Codecov Security Breach, Undetected for Months" + }, + { + "link": "https://www.bleepingcomputer.com/news/security/big-sabotage-famous-npm-package-deletes-files-to-protest-ukraine-war/", + "description": "BIG sabotage: Famous npm package deletes files to protest Ukraine war" + }, + { + "link": "https://certitude.consulting/blog/en/invisible-backdoor/", + "description": "The Invisible JavaScript Backdoor" + }, + { + "link": "https://thehackernews.com/2022/06/multiple-backdoored-python-libraries.html?m=1", + "description": "Multiple Backdoored Python Libraries Caught Stealing AWS Secrets and Keys" + }, + { + "link": "https://www.wired.com/story/3cx-supply-chain-attack-times-two/", + "description": "The Huge 3CX Breach Was Actually 2 Linked Supply Chain Attacks" + }, + { + "link": "https://www.zdnet.com/article/iota-cryptocurrency-shuts-down-entire-network-after-wallet-hack/", + "description": "IOTA cryptocurrency shuts down entire network after wallet hack " + }, + { + "link": "https://arstechnica.com/information-technology/2021/02/supply-chain-attack-that-fooled-apple-and-microsoft-is-attracting-copycats/", + "description": "New type of supply-chain attack hit Apple, Microsoft and 33 other companies" + }, + { + "link": "https://www.bankinfosecurity.com/crypto-exchange-klayswap-loses-19m-after-bgp-hijack-a-18518", + "description": "Crypto Exchange KLAYswap Loses $1.9M After BGP Hijack" + }, + { + "link": "https://www.businessinsider.com/kidnapped-crypto-exec-released-after-paying-1-million-bitcoin-ransom-2017-12", + "description": "A kidnapped crypto executive was reportedly released after paying a $1 million bitcoin ransom" + }, + { + "link": "https://www.independent.co.uk/tech/bitcoin-robbery-torture-cryptocurrency-netherlands-a8807986.html", + "description": "Bitcoin trader brutally tortured with drill in cryptocurrency robbery" + }, + { + "link": "https://www.vice.com/en/article/ne4pvg/police-in-ottawa-canada-charged-a-teen-with-armed-bitcoin-robbery-are-hunting-two-suspects", + "description": "Three Armed Men Attempted to Rob a Bitcoin Exchange In Canada" + }, + { + "link": "https://www.birminghammail.co.uk/news/midlands-news/watch-masked-raiders-hold-up-16599570", + "description": "Watch - Masked raiders hold up Bitcoin Exchange store in Sparkhill in front of dozens of witnesses" + }, + { + "link": "https://www.nzherald.co.nz/nz/crypto-heist-raiders-steal-safe-containing-4m-in-cryptocurrency-from-westmere-home/PI3L5LMS6PCSVABJDYSW5O4YGA/", + "description": "Crypto heist: Raiders steal safe containing $4m in cryptocurrency from Westmere home" + }, + { + "link": "https://www.computerworld.com/article/2538534/data-center-robbery-leads-to-new-thinking-on-security.html", + "description": "Data center robbery leads to new thinking on security" + }, + { + "link": "https://www.thirdsector.co.uk/plan-uk-alerts-supporters-theft-computer-servers-its-offices/management/article/1375208", + "description": "Plan UK alerts supporters to theft of computer servers from its offices" + }, + { + "link": "https://www.pcmag.com/news/vudu-resets-passwords-after-user-data-stolen-in-burglary", + "description": "Vudu Resets Passwords After User Data Stolen in Burglary" + }, + { + "link": "https://finance.yahoo.com/news/hackers-scored-data-center-logins-020028440.html", + "description": "Hackers Scored Data Center Logins for Some of the World's Biggest Companies" + }, + { + "link": "https://www.cbsnews.com/news/nsa-broke-into-yahoo-and-google-data-centers-around-world-report-says/", + "description": "NSA broke into Yahoo and Google data centers around world, report says" + }, + { + "link": "https://www.vice.com/en/article/3kxy4k/high-tech-japanese-hotel-service-robots-easily-hackable", + "description": "High-Tech Japanese Hotel Finds Out Its Service Robots Are Easily Hackable" + }, + { + "link": "https://www.washingtonpost.com/news/innovations/wp/2017/07/21/how-a-fish-tank-helped-hack-a-casino/", + "description": "How a fish tank helped hack a casino" + }, + { + "link": "https://www.wsj.com/articles/fraudsters-use-ai-to-mimic-ceos-voice-in-unusual-cybercrime-case-11567157402", + "description": "Fraudsters Used AI to Mimic CEO's Voice in Unusual Cybercrime Case" + }, + { + "link": "https://www.forbes.com/sites/iainmartin/2023/08/21/blockchain-capitals-bart-stephens-lost-63-million-in-sim-swap-crypto-hack/?sh=6cc4576bf74c", + "description": "Blockchain Capital's Bart Stephens Lost $6.3 Million In SIM-Swap Crypto Hack" + }, + { + "link": "https://www.wsj.com/articles/he-thought-his-phone-was-secure-then-he-lost-24-million-to-hackers-11573221600", + "description": "He Thought His Phone Was Secure; Then He Lost $24 Million to Hackers" + }, + { + "link": "https://arstechnica.com/information-technology/2018/02/tesla-cloud-resources-are-hacked-to-run-cryptocurrency-mining-malware/", + "description": "Tesla cloud resources are hacked to run cryptocurrency-mining malware" + }, + { + "link": "https://www.wired.com/story/sea-turtle-dns-hijacking/", + "description": "Cyberspies Hijacked the Internet Domains of Entire Countries" + } +] diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..c99fe57 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,65 @@ +const collapsibleButton = document.querySelector("#hamburger-menu"); +const menuContent = document.querySelector(".menu-content"); +collapsibleButton.addEventListener("click", function () { + menuContent.classList.toggle("active"); + if (menuContent.style.display === "block") { + menuContent.style.display = "none"; + } else { + menuContent.style.display = "block"; + } +}); + +document.addEventListener('DOMContentLoaded', function () { + fetch('../assets/js/carousel-items.json') + .then(response => response.json()) + .then(data => { + createCarouselItems(data); + initializeCarousel(); + }) + .catch(error => console.error('Error loading JSON:', error)); +}); + +function createCarouselItems(items) { + const carousel = document.querySelector('#carousel'); + items.forEach(item => { + const itemDiv = document.createElement('div'); + itemDiv.className = 'carousel-item' + + const link = document.createElement('a'); + link.className = 'carousel-link'; + link.href = item.link; + link.target = '_blank'; + link.rel = 'noopener noreferrer'; + const linkText = document.createTextNode(item.description); + + link.appendChild(linkText); + itemDiv.appendChild(link); + carousel.appendChild(itemDiv); + }); +} + +function initializeCarousel() { + const carousel = document.querySelector('#carousel'); + const items = Array.from(carousel.children); + const totalItems = items.length; + const middleIndex = Math.floor(totalItems / 2); + let currentIndex = -middleIndex; + + function cycleItems() { + currentIndex = (currentIndex - 1 + totalItems) % totalItems; + updateCarouselItems(); + } + + function updateCarouselItems() { + items.forEach((item, index) => { + let positionIndex = (currentIndex + index + totalItems) % totalItems; + let offset = positionIndex - middleIndex; + item.style.transform = `translateY(${offset * 100}%)`; + item.classList.toggle('active', positionIndex === middleIndex); + item.style.visibility = 'visible'; + }); + } + + updateCarouselItems(); + setInterval(cycleItems, 7000); +} \ No newline at end of file diff --git a/contact.md b/contact.md new file mode 100644 index 0000000..f26c094 --- /dev/null +++ b/contact.md @@ -0,0 +1,15 @@ +--- +title: Contact +layout: home +permalink: /contact.html +--- + +TODO: insert form + +Email: + +Company Name: + +Type of Data: + +Current Disaster Recovery Provider: \ No newline at end of file diff --git a/files/lrvick.vcf b/files/lrvick.vcf new file mode 100644 index 0000000..772963b --- /dev/null +++ b/files/lrvick.vcf @@ -0,0 +1,21 @@ +BEGIN:VCARD +VERSION:3.0 +FN:Lance R Vick +N:Vick;Lance ;R;; +NICKNAME:lrvick +EMAIL;type=WORK,INTERNET:lance@distrust.co +EMAIL;type=HOME,INTERNET:lance@vick.house +TEL;type=WORK,VOICE:650.999.0755 +ORG:Distrust; +URL;type=WORK;type=pref:https://distrust.co +TITLE:Founder +ROLE:Security Engineer +ADR;type=WORK;type=pref:;;2085 E Bayshore Rd Unit #51687;East Palo Alto;CA;94303;USA +URL:https://lance.dev +SOCIALPROFILE;type=mastodon:https://mastodon.social/@lrvick +SOCIALPROFILE;type=matrix:https://matrix.to/#/@lrvick:distrust.co +SOCIALPROFILE;type=keyoxide:https://keyoxide.org/6b61ecd76088748c70590d55e90a401336c8aaa9 +SOCIALPROFILE;type=git:https://git.distrust.co/lrvick +PHOTO;JPEG;ENCODING=BASE64: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 +REV:20230804T201239 +END:VCARD diff --git a/index.md b/index.md new file mode 100644 index 0000000..2caec4f --- /dev/null +++ b/index.md @@ -0,0 +1,5 @@ +--- +title: Home +layout: landing +permalink: /index.html +--- diff --git a/pricing.md b/pricing.md new file mode 100644 index 0000000..2acf4de --- /dev/null +++ b/pricing.md @@ -0,0 +1,5 @@ +--- +title: Pricing +layout: pricing +permalink: /pricing.html +--- \ No newline at end of file