hishtory/backend/web/landing/www/index.html
2022-06-04 23:22:07 -07:00

226 lines
12 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Hishtory: Better Shell History</title>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-144207374-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-144207374-1');
</script>
<link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Merriweather+Sans:400,700" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic' rel='stylesheet' type=
'text/css'>
<link href="vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
<link href="css/creative.min.css" rel="stylesheet">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.8/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.8/highlight.min.js"></script>
<style>
li.install-nav-item>:not([active]) {
background-color: #f7f7f9
}
</style>
</head>
<body id="page-top">
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light fixed-top py-3" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">Hishtory</a>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto my-2 my-lg-0">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#setup">Setup & Usage</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#faq">FAQ</a>
</li>
</ul>
</div>
</div>
</nav><!-- Masthead -->
<header class="masthead">
<div class="container h-100">
<div class="row h-100 align-items-center justify-content-center text-center">
<div class="col-lg-12 align-self-end">
<h2 class="text-white font-weight-bold">Your shell history: synced, queryable, and in context</h2>
<hr class="divider my-4">
</div>
<div class="col-lg-8 align-self-baseline">
<script id="asciicast-xW0ddZdZm7Utv1iLATegM4Oe4" src="https://asciinema.org/a/xW0ddZdZm7Utv1iLATegM4Oe4.js" async data-autoplay=
"true" data-speed="1.5"></script>
</div>
</div>
</div>
</header><!-- About Section -->
<section class="page-section bg-primary" id="about">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8 text-center">
<h2 class="text-white mt-0">Shell scripting is powerful, keep track of how you use it</h2>
<hr class="divider light my-4">
<p class="text-white-50 mb-4">Your shell keeps a list of every command you run locally, but this list of commands is devoid of
context (where did I run that command? what was the output of the command? how long did it take to run?) and it is easily
corrupted (open two terminals at once? Say goodbye to your shell history!).<br>
<br>
Hishtory keeps track of the command you ran, how long it took to run, whether it succeeded or failed, where you ran it, and on
what machine. It syncs this information across all your machines, so you can always find that useful shell pipeline you wrote a
month ago.</p>
</div>
</div>
</div>
</section><!-- Setup Section -->
<section class="page-section" id="setup">
<div class="container">
<h2 class="text-center mt-0">Setup Process</h2>
<hr class="divider my-4">
<p class="text-black-50 mb-4"></p>
<div style="border: solid #f7f7f9; border-width: 2px;border-radius:10px;padding:2%">
<ul class="nav nav-tabs nav-pills nav-justified" id="myTab" role="tablist" style="/*border: solid #f7f7f9; border-width: 2px;*/">
<li class="nav-item install-nav-item">
<a class="nav-link active" id="install-first-tab" data-toggle="tab" href="#install-first" role="tab" style="margin: 10px">First
Installation</a>
</li>
<li class="nav-item install-nav-item">
<a class="nav-link" id="install-second-tab" data-toggle="tab" href="#install-second" role="tab" style=
"margin: 10px">Installation on additional computers</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="install-first" role="tabpanel" aria-labelledby="home-tab">
<br>
To install hishtory on your first machine:<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl https://hishtory.dev/install.py | python3 -<br></code>
</div>
<div class="tab-pane" id="install-second" role="tabpanel" aria-labelledby="profile-tab">
<br>
To install hishtory on your second machine, you must first retrieve your secret key from first first machine. To do so, run
<code>hishtory status</code>&nbsp;and copy your "Secret Key". Then to install it on your second machine:<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;curl https://hishtory.dev/install.py | python3 -<br>
&nbsp;&nbsp;&nbsp;&nbsp;hishtory init $YOUR_HISHTORY_SECRET</code>
</div>
</div>
</div><br>
<h2 class="text-center mt-0">Usage</h2>
<ul>
<li>To query your hishtory: <code>hishtory query foo</code> or use the custom search atoms
<code>cwd:/etc/</code>,&nbsp;<code>exit_code:127</code>,&nbsp;<code>hostname:laptop</code>,&nbsp;<code>user:david</code></li>
<li>To dump all hishtory entries to stdout: <code>hishtory export</code></li>
<li>To temporarily turn on/off hishtory recording: <code>hishtory disable</code>&nbsp;/&nbsp;<code>hishtory enable</code></li>
<li>To update to the latest version: <code>hishtory update</code></li>
</ul>
</div>
</section>
<section class="page-section bg-primary" id="faq">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8 text-center">
<h2 class="mt-0">FAQ</h2><!-- FAQ -->
<hr class="divider my-4">
<div class="accordion" id="accordionExample">
<div class="card">
<div class="card-header" id="headingZero">
<h2 class="mb-0"><button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseZero"
aria-expanded="true" aria-controls="collapseZero">How does this work?</button></h2>
</div>
<div id="collapseZero" class="collapse show" aria-labelledby="headingZero" data-parent="#accordionExample">
<div class="card-body">
Hishtory hooks into your shell to record everything you could want to know about your shell history. It saves this data
in a local sqlite DB, and then syncs an encrypted copy of this DB with all your other computers.
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingOne">
<h2 class="mb-0"><button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseOne"
aria-expanded="false" aria-controls="collapseOne">Is this secure?</button></h2>
</div>
<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
<div class="card-body">
This is up to you to judge, but in my opinion: Yes! All data is end-to-end encrypted with a key that never leaves your
computer(s). The code is <a href='https://github.com/ddworken/hishtory'>OSS</a> and verifiably built as <a href=
'https://slsa.dev/'>SLSA Level 3</a> so you can verify that the software you're running is the code on Github, and that
it in fact does not share any of your private data. In addition, the backend server is OSS so you can verify how it
works.
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h2 class="mb-0"><button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo"
aria-expanded="false" aria-controls="collapseTwo">What about `.bash_history`?</button></h2>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionExample">
<div class="card-body">
If it works for you, great! But I find I constantly get annoyed with `.bash_history` either because I lose context (which
directory do I need to run that command from?) or because I full on lose the file (it tends to get corrupted if you open
multiple terminals at the same time).
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingThree">
<h2 class="mb-0"><button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseThree"
aria-expanded="false" aria-controls="collapseThree">Is this free?</button></h2>
</div>
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordionExample">
<div class="card-body">
Yes! This is just a hobby project for me that I use, and I hope other people get some use out of. It is also <a href=
'https://github.com/ddworken/hishtory'>OSS</a>, so feel free to fork it and self-host!
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingFour">
<h2 class="mb-0"><button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseFour"
aria-expanded="false" aria-controls="collapseFour">Who made this?</button></h2>
</div>
<div id="collapseFour" class="collapse" aria-labelledby="headingFour" data-parent="#accordionExample">
<div class="card-body">
Made with ❤️ by <a href="https://daviddworken.com">David Dworken</a>. I'm a Security Engineer who also enjoys creating
software. I built this to solve a problem for myself, and wanted to share it with others who may find it useful.
</div>
</div>
</div>
</div>
<hr class="divider my-4">
<div class="row justify-content-center">
<div class="col-lg-8 text-center">
<p class="mb-3">Feedback, thoughts, ideas, or other questions? Let me know!</p><a class="text-white-50 d-block" href=
"mailto:david@daviddworken.com">david@daviddworken.com</a>
</div>
</div>
</div>
</div>
</div>
</section><!-- Footer -->
<footer class="bg-light py-5">
<div class="container">
<div class="small text-center text-muted">
<a href='https://github.com/ddworken/hishtory'>github.com/ddworken/hishtory</a><br>
Copyright © 2022 - David Dworken
</div>
</div>
</footer><!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script> <!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<script src="vendor/magnific-popup/jquery.magnific-popup.min.js"></script> <!-- Custom scripts for this template -->
<script src="js/creative.min.js"></script>
</body>
</html>