chore(site): scaffold astro project, remove legacy SPA
4
site/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
dist/
|
||||
.astro/
|
||||
node_modules/
|
||||
src/content/man/
|
||||
15
site/astro.config.mjs
Normal file
@@ -0,0 +1,15 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from "astro/config";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
|
||||
export default defineConfig({
|
||||
site: "https://termscp.rs",
|
||||
i18n: {
|
||||
defaultLocale: "en",
|
||||
locales: ["en", "zh-CN", "it", "fr", "es"],
|
||||
routing: { prefixDefaultLocale: false },
|
||||
},
|
||||
integrations: [sitemap()],
|
||||
vite: { plugins: [tailwindcss()] },
|
||||
});
|
||||
@@ -1,74 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en_US" class="dark">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV | termscp
|
||||
</title>
|
||||
<meta property="og:description"
|
||||
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/Kube/S3/WebDAV. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" />
|
||||
<meta name="description"
|
||||
content="termscp is a feature rich terminal file transfer and explorer, with support for SCP/SFTP/FTP/Kube/S3/WebDAV. It is Linux, MacOS, FreeBSD, NetBSD and Windows compatible" />
|
||||
<meta property="og:title" content="termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/Kube/S3/WebDAV | termscp" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1280" />
|
||||
<meta property="og:image:height" content="640" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="termscp" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous" />
|
||||
<!-- tailwind -->
|
||||
<link href="output.css" rel="stylesheet" />
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout" class="dark:bg-brand dark:text-gray-100">
|
||||
<!-- Menu -->
|
||||
<header id="menu"></header>
|
||||
<main>
|
||||
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
|
||||
</main>
|
||||
<footer id="footer"></footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw("veeso", {
|
||||
type: "floating-chat",
|
||||
"floating-chat.donateButton.text": "Support me",
|
||||
"floating-chat.donateButton.background-color": "#31363b",
|
||||
"floating-chat.donateButton.text-color": "#fff",
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,87 +0,0 @@
|
||||
.markdown {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.markdown a {
|
||||
color: dodgerblue;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.markdown img {
|
||||
display: block;
|
||||
width: 60%;
|
||||
margin-left: 20%;
|
||||
}
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
border-left: 0.25em solid #ccc;
|
||||
font-size: 90%;
|
||||
padding: 0.1em;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.markdown pre code {
|
||||
background-color: inherit;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
background-color: #eee;
|
||||
border-radius: 6px;
|
||||
font-size: 85%;
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
|
||||
:is(.dark) .markdown code {
|
||||
background-color: #404040;
|
||||
}
|
||||
|
||||
.markdown table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
display: block;
|
||||
height: fit-content;
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.markdown table tr {
|
||||
border-top: 1px solid #c6cbd1;
|
||||
}
|
||||
|
||||
.markdown table td,
|
||||
.markdown table th {
|
||||
border: 1px solid #c6cbd1;
|
||||
padding: 6px 13px;
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en_US" class="dark">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
get started with termscp | termscp
|
||||
</title>
|
||||
<meta property="og:description"
|
||||
content="Install termscp within a couple of minutes with the shell script" />
|
||||
<meta name="description"
|
||||
content="Install termscp within a couple of minutes with the shell script" />
|
||||
<meta property="og:title" content="get started with termscp | termscp" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1280" />
|
||||
<meta property="og:image:height" content="640" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="termscp" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous" />
|
||||
<!-- tailwind -->
|
||||
<link href="output.css" rel="stylesheet" />
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout" class="dark:bg-brand dark:text-gray-100">
|
||||
|
||||
<!-- Menu -->
|
||||
<header id="menu"></header>
|
||||
<main>
|
||||
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
|
||||
</main>
|
||||
<footer id="footer"></footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw("veeso", {
|
||||
type: "floating-chat",
|
||||
"floating-chat.donateButton.text": "Support me",
|
||||
"floating-chat.donateButton.background-color": "#31363b",
|
||||
"floating-chat.donateButton.text-color": "#fff",
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<div class="flex flex-col bg-brand text-gray-200 justify-around items-center gap-12 p-8 sm:pb-24">
|
||||
<div class="flex flex-row justify-around items-center gap-16 w-3/6 sm:w-full">
|
||||
<div>
|
||||
<a href="https://github.com/veeso/termscp" class="text-3xl sm:text-xl no-underline" target="_blank"><i
|
||||
class="devicon-github-original"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://crates.io/crates/termscp" class="text-3xl sm:text-xl no-underline" target="_blank"><i
|
||||
class="devicon-rust-plain"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://community.chocolatey.org/packages/termscp" class="text-3xl sm:text-xl no-underline"
|
||||
target="_blank"><i class="devicon-windows8-plain"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://ko-fi.com/veeso" target="_blank" class="text-3xl sm:text-xl no-underline"><i
|
||||
class="fa fa-coffee"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col justify-around gap-1 items-center w-full">
|
||||
<!-- vat number -->
|
||||
<p class="text-sm font-thin">
|
||||
<span>P.IVA IT03104140300 </span>
|
||||
</p>
|
||||
<p class="text-xs font-thin">
|
||||
<span>Via Antonio Marangoni 33, 33100, Udine (UD)</span>
|
||||
</p>
|
||||
<!-- Copyright -->
|
||||
<p class="text-xs font-thin">
|
||||
<span>Christian Visintin © </span><span resolve-copyright></span>
|
||||
<span> | </span>
|
||||
<a class="text-xs font-thin" href="https://veeso.me/en/privacy" target="_blank">Privacy policy</a>
|
||||
<span> | </span>
|
||||
<a class="text-xs font-thin" href="https://veeso.me/en/cookie-policy" target="_blank">Cookie policy</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,97 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<div
|
||||
class="flex flex-row fixed bg-gray-100 dark:bg-brand text-brand dark:text-gray-100 border-b border-gray-400 dark:border-gray-800 items-center justify-between w-screen h-auto py-4 px-8">
|
||||
<!-- Desktop menu-->
|
||||
<div class="sm:hidden flex flex-row justify-start items-center gap-12 w-full">
|
||||
<h2 class="lg:text-xl md:text-lg dark:text-gray-100">
|
||||
<a href="/">
|
||||
<img class="w-[32px] h-auto m-auto inline-block mr-2 hover:underline" alt="logo"
|
||||
src="assets/images/termscp.webp" /> termscp
|
||||
</a>
|
||||
</h2>
|
||||
<h2 class="lg:text-xl md:text-lg dark:text-gray-100 hover:underline">
|
||||
<a translate="menu.getStarted" href="/get-started.html"></a>
|
||||
</h2>
|
||||
<h2 class="lg:text-xl md:text-lg dark:text-gray-100 hover:underline">
|
||||
<a translate="menu.updates" href="/updates.html"></a>
|
||||
</h2>
|
||||
<h2 class="lg:text-xl md:text-lg dark:text-gray-100 hover:underline">
|
||||
<a translate="menu.manual" href="/user-manual.html"></a>
|
||||
</h2>
|
||||
<h2 class="lg:text-xl md:text-lg dark:text-gray-100 hover:underline">
|
||||
<a translate="menu.changelog" href="/changelog.html"></a>
|
||||
</h2>
|
||||
<!-- End region -->
|
||||
<div class="flex flex-row self-end justify-end items-center gap-8 flex-1">
|
||||
<!-- Dark/light theme toggle -->
|
||||
<button id="theme-toggle" type="button" onclick="toggleTheme()"
|
||||
class="text-brand dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg lg:text-2xl md:text-lg p-2.5">
|
||||
<svg id="theme-toggle-dark-icon" class="w-5 h-5 hidden" fill="currentColor" viewBox="0 0 20 20"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="w-5 h-5 hidden" fill="currentColor" viewBox="0 0 20 20"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<!-- Socials -->
|
||||
<div>
|
||||
<a href="https://github.com/veeso/termscp" class="lg:text-2xl md:text-lg dark:text-gray-100" target="_blank"><i
|
||||
class="devicon-github-original"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://crates.io/crates/termscp" class="lg:text-2xl md:text-lg dark:text-gray-100" target="_blank"><i
|
||||
class="devicon-rust-plain"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://www.linkedin.com/in/christian-visintin/" class="lg:text-2xl md:text-lg dark:text-gray-100"
|
||||
target="_blank"><i class="devicon-linkedin-plain"></i></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://twitter.com/veeso_dev" target="_blank" class="lg:text-2xl md:text-lg dark:text-gray-100"><i
|
||||
class="devicon-twitter-plain"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Mobile topbar -->
|
||||
<div class="sm:flex hidden flex-row justify-start items-center gap-8 w-full">
|
||||
<h2 class="text-2xl dark:text-gray-100">
|
||||
<a href="/">
|
||||
<img class="w-[32px] h-auto m-auto inline-block mr-2" alt="logo"
|
||||
src="assets/images/termscp.webp" /> termscp
|
||||
</a>
|
||||
</h2>
|
||||
<div id="menu-icon" class="justify-self-end flex-1 flex justify-end">
|
||||
<i onclick="onToggleMenu()" class="fa fa-bars text-2xl cursor-pointer"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Mobile menu -->
|
||||
<div id="mobile-menu"
|
||||
class="hidden transition-all fixed top-0 left-0 h-screen bg-brand text-white w-screen flex-col justify-start items-center p-8">
|
||||
<div class="flex flex-row justify-end items-end w-full">
|
||||
<div id="menu-icon" class="justify-self-end flex-1 flex justify-end">
|
||||
<i onclick="onToggleMenu()" class="fa fa-bars text-2xl cursor-pointer"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col justify-start items-center w-full gap-4 hover:underline">
|
||||
<h2 class="text-2xl text-white">
|
||||
<a translate="menu.intro" href="/"></a>
|
||||
</h2>
|
||||
<h2 class="text-2xl text-white hover:underline">
|
||||
<a translate="menu.getStarted" href="/get-started.html"></a>
|
||||
</h2>
|
||||
<h2 class="text-2xl text-white hover:underline">
|
||||
<a translate="menu.updates" href="/updates.html"></a>
|
||||
</h2>
|
||||
<h2 class="text-2xl text-white hover:underline">
|
||||
<a translate="menu.manual" href="/user-manual.html"></a>
|
||||
</h2>
|
||||
<h2 class="text-2xl text-white hover:underline">
|
||||
<a translate="menu.changelog" href="/changelog.html"></a>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,164 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<body>
|
||||
<section id="start" class="flex flex-col mx-auto items-center justify-center w-full px-12 gap-8 dark:text-gray-100">
|
||||
<h1 translate="getStarted.title" class="text-3xl font-thin">Get started</h1>
|
||||
<section class="w-full">
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="fa fa-rocket"></i> <span translate="getStarted.quickSetup">Quick setup</span>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="p-4 my-4 text-sm text-blue-800 rounded-lg bg-blue-50">
|
||||
<p class="text-lg">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
<span translate="getStarted.suggested">We strongly suggest this method to install termscp</span>
|
||||
</p>
|
||||
</div>
|
||||
<p translate="getStarted.posixUsers">
|
||||
If you are a Linux, a FreeBSD or a MacOS user, you can install termscp
|
||||
via this simple command , which will use a shell script installer:
|
||||
</p>
|
||||
<pre><span class="function">curl</span> --proto <span class="string">'=https'</span> --tlsv1.2 -sSLf <span class="string">"https://git.io/JBhDb"</span> | sh</pre>
|
||||
</div>
|
||||
</section>
|
||||
<section class="w-full">
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="devicon-windows8-plain"></i> <span translate="getStarted.windows.title">Windows users</span>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<p>
|
||||
<span translate="getStarted.windows.intro">You can install termscp on Windows via</span>
|
||||
<a href="https://community.chocolatey.org/packages/termscp" target="_blank">Chocolatey</a>
|
||||
</p>
|
||||
<pre><span class="function">choco</span> install <span class="string">termscp</span></pre>
|
||||
<p>
|
||||
<span translate="getStarted.windows.moderation">Consider that Chocolatey moderation can take up to a few weeks
|
||||
since last release, so if the latest version is not available yet,
|
||||
you can install it downloading the ZIP file from</span>
|
||||
<a href="https://github.com/veeso/termscp/releases/latest/download/termscp.1.0.0.nupkg"
|
||||
target="_blank">Github</a>
|
||||
<span translate="getStarted.windows.then">and then, from the ZIP directory, install it via</span>
|
||||
</p>
|
||||
<pre><span class="function">choco</span> install <span class="string">termscp</span> -s .</pre>
|
||||
</div>
|
||||
</section>
|
||||
<section class="w-full">
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="devicon-linux-plain"></i> <span translate="getStarted.linuxUsers">Linux users</span>
|
||||
</h2>
|
||||
<div class="sub-system">
|
||||
<div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
|
||||
<p class="text-lg">
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.notConfident">Opt for these methods instead if you don't feel confident using
|
||||
the shell script</span>
|
||||
</p>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-linux-plain"></i> <span translate="getStarted.arch.title">Arch derived users</span>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p>
|
||||
<span translate="getStarted.arch.intro">On Arch Linux based distros, you can install termscp using</span>
|
||||
<a href="https://wiki.archlinux.org/title/pacman" target="_blank">pacman</a>
|
||||
<span translate="getStarted.arch.then">then run:</span>
|
||||
</p>
|
||||
<pre><span class="function">pacman</span> -S <span class="string">termscp</span></pre>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-debian-plain"></i> <span translate="getStarted.debian.title">Debian derived
|
||||
users</span>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p translate="getStarted.debian.body">
|
||||
On Debian based distros, you can install termscp using the Deb
|
||||
package via:
|
||||
</p>
|
||||
<pre><span class="function">wget</span> -O termscp.deb <span class="string">https://github.com/veeso/termscp/releases/latest/download/termscp_1.0.0_amd64.deb</span>
|
||||
sudo <span class="function">dpkg</span> -i <span class="string">termscp.deb</span></pre>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-redhat-plain"></i> <span translate="getStarted.redhat.title">Redhat derived
|
||||
users</span>
|
||||
</h3>
|
||||
<h3>
|
||||
<span>Brew</span>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p>
|
||||
<span translate="getStarted.macos.install">Install termscp via</span>
|
||||
<a href="https://brew.sh/" target="_blank">Brew</a>
|
||||
</p>
|
||||
<pre><span class="function">brew</span> install <span class="string">veeso/termscp/termscp</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="w-full">
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="devicon-apple-plain"></i> <span translate="getStarted.macos.title">MacOS users</span>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
|
||||
<p class="text-lg">
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.notConfident">Opt for these methods instead if you don't feel confident using
|
||||
the shell script</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span translate="getStarted.macos.install">Install termscp via</span>
|
||||
<a href="https://brew.sh/" target="_blank">Brew</a>
|
||||
</p>
|
||||
<pre><span class="function">brew</span> install <span class="string">veeso/termscp/termscp</span></pre>
|
||||
</div>
|
||||
</section>
|
||||
<section class="w-full">
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="devicon-rust-plain"></i> <span translate="getStarted.cargo.title">Install with Cargo</span>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
|
||||
<p class="text-lg">
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.noBinary">Opt for this method instead if binaries for your platform are not
|
||||
available</span>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span translate="getStarted.cargo.body">If a package is not available for your system, you can opt to
|
||||
install termscp via</span>
|
||||
<a href="https://www.rust-lang.org/tools/install" target="_blank">Cargo</a>.
|
||||
<span translate="getStarted.cargo.requirements">To install termscp via Cargo, these requirements must be
|
||||
satisfied:</span>
|
||||
</p>
|
||||
<ul class="list-disc px-8">
|
||||
<li>
|
||||
Linux:
|
||||
<ul class="list-disc px-12">
|
||||
<li>pkg-config</li>
|
||||
<li>libdbus-1</li>
|
||||
<li>libsmbclient</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
FreeBSD:
|
||||
<ul class="list-disc px-12">
|
||||
<li>dbus</li>
|
||||
<li>pkg-conf</li>
|
||||
<li>gcc</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p translate="getStarted.cargo.install">Then you can install it via</p>
|
||||
<pre><span class="function">cargo</span> install --locked <span class="string">termscp</span></pre>
|
||||
<p translate="getStarted.cargo.noKeyring" class="pt-4 pb-2">
|
||||
Or if you don't want to have support for keyring or you're building on
|
||||
*BSD:
|
||||
</p>
|
||||
<pre><span class="function">cargo</span> install --locked --no-default-features --features smb <span class="string">termscp</span></pre>
|
||||
<p translate="getStarted.cargo.noSMB" class="pt-4 pb-2"></p>
|
||||
<pre><span class="function">cargo</span> install --locked --no-default-features --features keyring <span class="string">termscp</span></pre>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</body>
|
||||
@@ -1,86 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<section id="intro"
|
||||
class="flex flex-col mx-auto items-center justify-center w-full px-4 dark:bg-brand dark:text-gray-100">
|
||||
<h1 class="text-3xl text-center font-thin">termscp</h1>
|
||||
<img class="w-[256px] h-auto m-auto" alt="logo" src="assets/images/termscp.webp" />
|
||||
<h2 class="text-xl font-thin text-center py-6" translate="intro.caption">
|
||||
A feature rich terminal UI file transfer and explorer with support for
|
||||
SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV
|
||||
</h2>
|
||||
<button class="bg-brand hover:bg-gray-800 text-white font-thin text-xl py-2 px-4 rounded-xl max-w-fit">
|
||||
<a href="/get-started.html" class="no-underline" translate="intro.getStarted">Get started →</a>
|
||||
</button>
|
||||
<div class="p-4 my-4 text-sm text-green-800 rounded-lg bg-green-50">
|
||||
<p class="text-lg">
|
||||
<span translate="intro.versionAlert">termscp 1.0.0 is NOW out! Download it from</span>
|
||||
<a href="/get-started.html" translate="intro.here">here!</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="grid grid-cols-3 sm:grid-cols-1 gap-8 py-8 w-4/6 sm:w-full">
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.handy.title" class="text-center text-lg">Handy UI</h3>
|
||||
<p translate="intro.features.handy.body" class="text-center">
|
||||
Explore and operate on the remote and on the local machine file system
|
||||
with a handy UI.
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.crossPlatform.title" class="text-center text-lg">Cross platform</h3>
|
||||
<p translate="intro.features.crossPlatform.body" class="text-center">
|
||||
Runs on Windows, MacOS, Linux and BSD
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.customizable.title" class="text-center text-lg">Customizable</h3>
|
||||
<p translate="intro.features.customizable.body" class="text-center">
|
||||
Customize the file explorer, the text editor to use and default
|
||||
options
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.bookmarks.title" class="text-center text-lg">Bookmarks</h3>
|
||||
<p translate="intro.features.bookmarks.body" class="text-center">
|
||||
Connect to your favourite hosts through built-in bookmarks and recent
|
||||
connections support
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.security.title" class="text-center text-lg">Security first</h3>
|
||||
<p translate="intro.features.security.body" class="text-center">
|
||||
Save your password into your operating system key vault
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.performance.title" class="text-center text-lg">Eye on performance</h3>
|
||||
<p translate="intro.features.performance.body" class="text-center">
|
||||
termscp has been developed keeping an eye on performance to prevent
|
||||
cpu usage
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-4/6 sm:w-5/6">
|
||||
<video autoplay muted loop>
|
||||
<source src="assets/videos/explorer.mp4" type="video/mp4" resolve-video-fallback="assets/images/explorer.gif" />
|
||||
</video>
|
||||
</div>
|
||||
<hr class="h-px my-8 bg-gray-800 border-0" />
|
||||
<div class="flex flex-row sm:flex-col justify-around gap-12">
|
||||
<div class="hook">
|
||||
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
|
||||
<a href="/get-started.html" class="no-underline hover:underline" translate="intro.footer.getStarted">Get
|
||||
started</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="hook">
|
||||
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
|
||||
<a href="/user-manual.html" class="no-underline hover:underline" translate="intro.footer.manual">User manual</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="hook">
|
||||
<h3 class="text-center text-gray-500 dark:text-gray-100 font-light text-xl">
|
||||
<a href="/updates.html" class="no-underline hover:underline" translate="intro.footer.updates">Install
|
||||
updates</a>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1,100 +0,0 @@
|
||||
<head>
|
||||
<link rel="stylesheet" href="css/updates.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<section id="updates" class="flex flex-col mx-auto items-center justify-center w-full px-12 gap-8 dark:text-gray-100">
|
||||
<h1 translate="updates.title" class="text-3xl font-thin">Keeping termscp up to date</h1>
|
||||
<!-- Reasons -->
|
||||
<section>
|
||||
<h2 class="text-2xl font-thin">
|
||||
<i class="fa fa-question-circle"></i> <span translate="updates.reasons.title">Why should you install
|
||||
updates</span>
|
||||
</h2>
|
||||
<div class="wall-of-text">
|
||||
<p translate="updates.reasons.wallOfText" class="text-gray-700 dark:text-gray-300">
|
||||
Termscp is an application that is still in its early stage of
|
||||
development, the first version has been released in december in 2020
|
||||
and practically there's only one
|
||||
<a href="https://termscp.veeso.dev/" target="_blank">guy</a> working on
|
||||
it and there's still a lot of work to do in order to improve it and
|
||||
make it fast and reliable. Along to this, you should also consider
|
||||
that since it's an application which works with network protocols and
|
||||
is intended to manipulate secrets and credentials there may always be
|
||||
a security issue. I can't guarantee there's no security issues in the
|
||||
versions I've released in these months, and if there are they might
|
||||
not be even my fault, but they might be contained in the libraries
|
||||
termscp relies on. Because of this, it's always VERY important to keep
|
||||
termscp up to date. To prove how much I care about it, just consider
|
||||
that I've implemented something that many other open source
|
||||
applications won't do: the update check. Whenever you start termscp
|
||||
(unless if deactivated in configuration) termscp will always check if
|
||||
there's a new version available and will notify you immediately. In
|
||||
addition to security concerns, each major update will bring many
|
||||
awesome features 🦄 you can't miss and the application is getting more
|
||||
reliable and stable after each update 😄
|
||||
</p>
|
||||
<p class="italic text-xl text-gray-700 dark:text-gray-300">
|
||||
<span>TL;DR</span>
|
||||
<span translate="updates.reasons.tldr"></span>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Gui method -->
|
||||
<section>
|
||||
<h2 class="text-2xl font-thin"><i class="fa fa-desktop"></i> <span translate="updates.gui.title">GUI
|
||||
method</span></h2>
|
||||
<div class="installation">
|
||||
<p translate="updates.gui.body" class="text-gray-700 dark:text-gray-300">
|
||||
The GUI method just consists in starting termscp with no options, you
|
||||
then should be in front of the authentication form. If there's an
|
||||
update available a message like "termscp x.y.z is OUT! Update and read
|
||||
release notes with CTRL+R". All you have to do at this point to update
|
||||
termscp, is:
|
||||
</p>
|
||||
<ol class="list-decimal px-8 text-gray-700 dark:text-gray-300">
|
||||
<li translate="updates.gui.steps.st">press CTRL+R. The release notes should now be displayed.</li>
|
||||
<li translate="updates.gui.steps.nd">Select "YES" in the "Install update?" radio input</li>
|
||||
<li translate="updates.gui.steps.rd">Press "ENTER"</li>
|
||||
</ol>
|
||||
<p translate="updates.gui.then" class="text-gray-700 dark:text-gray-300">
|
||||
If everything worked correctly a green message "termscp x.y.z has been
|
||||
installed!" will be displayed. Just restart termscp and enjoy the
|
||||
update 😄
|
||||
</p>
|
||||
<div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="updates.gui.pex">
|
||||
If you have previously installed termscp via Deb package, you
|
||||
may need to use the CLI method running termscp with sudo
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- CLI method -->
|
||||
<section>
|
||||
<h2 class="text-2xl font-thin"><i class="fa fa-glasses"></i> <span translate="updates.cli.title">CLI
|
||||
method</span></h2>
|
||||
<div class="installation">
|
||||
<p translate="updates.cli.body" class="text-gray-700 dark:text-gray-300">
|
||||
If you prefer, you can install a new update just using the dedicated
|
||||
CLI option:
|
||||
</p>
|
||||
<pre><span class="function">termscp</span> --update</pre>
|
||||
<div class="p-4 my-4 text-sm text-yellow-800 rounded-lg bg-yellow-50">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="updates.cli.pex">Run with sudo if necessary (Debian/FreeBSD/RedHat users)</span>
|
||||
</p>
|
||||
</div>
|
||||
<p translate="updates.cli.then" class="text-gray-700 dark:text-gray-300">
|
||||
Once started, you will be prompted whether to install or not the
|
||||
update. Confirm the installation and ta-dah, the new version of
|
||||
termscp should now be available on your machine
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</body>
|
||||
@@ -1,76 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en_US" class="dark">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV | termscp
|
||||
</title>
|
||||
<meta property="og:description"
|
||||
content="a WinSCP alternative for Linux and MacOS with support for SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV. Command line file transfer with user interface compatible with all the operating systems." />
|
||||
<meta name="description"
|
||||
content="a WinSCP alternative for Linux and MacOS with support for SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV. Command line file transfer with user interface compatible with all the operating systems." />
|
||||
<meta property="og:title"
|
||||
content="termscp is a terminal file transfer and explorer for SCP/SFTP/FTP/Kube/S3/WebDAV/SMB/WebDAV | termscp" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1280" />
|
||||
<meta property="og:image:height" content="640" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="termscp" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous" />
|
||||
<!-- tailwind -->
|
||||
<link href="output.css" rel="stylesheet" />
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout" class="dark:bg-brand dark:text-gray-100">
|
||||
|
||||
<!-- Menu -->
|
||||
<header id="menu"></header>
|
||||
<main>
|
||||
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
|
||||
</main>
|
||||
<footer id="footer"></footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw("veeso", {
|
||||
type: "floating-chat",
|
||||
"floating-chat.donateButton.text": "Support me",
|
||||
"floating-chat.donateButton.background-color": "#31363b",
|
||||
"floating-chat.donateButton.text-color": "#fff",
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
132
site/input.css
@@ -1,132 +0,0 @@
|
||||
@import "css/markdown.css";
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@font-face {
|
||||
font-family: "Sora";
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwWa-xsaQ.woff2)
|
||||
format("woff2");
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
|
||||
U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: "Sora";
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwV6-x.woff2)
|
||||
format("woff2");
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
|
||||
U+FEFF, U+FFFD;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: "Sora";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwWa-xsaQ.woff2)
|
||||
format("woff2");
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
|
||||
U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: "Sora";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url(https://fonts.gstatic.com/s/sora/v11/xMQ9uFFYT72X5wkB_18qmnndmSdSnx2BAfO5mnuyOo1l_iMwV6-x.woff2)
|
||||
format("woff2");
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
|
||||
U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Sora", sans-serif;
|
||||
margin: 0;
|
||||
min-width: 100vw;
|
||||
overflow-x: hidden;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
main {
|
||||
padding-top: 5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
input {
|
||||
font-family: "Sora", sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-family: "Sora", sans-serif;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
button {
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
color: #d0d0d0;
|
||||
background-color: #222629;
|
||||
border-radius: 3px;
|
||||
word-wrap: normal;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
pre .function {
|
||||
color: #f08d49;
|
||||
}
|
||||
|
||||
pre .string {
|
||||
color: #7ec699;
|
||||
}
|
||||
131
site/js/core.js
@@ -1,131 +0,0 @@
|
||||
/**
|
||||
* @description return navigator language. If language is not supported default will be returned
|
||||
* @returns {string}
|
||||
*/
|
||||
|
||||
function getNavigatorLanguage() {
|
||||
let lang = navigator.language;
|
||||
// Complete lang
|
||||
if (languageSupported(lang)) {
|
||||
return lang;
|
||||
}
|
||||
// Reduced lang
|
||||
lang = lang.split(/[-_]/)[0] || "en";
|
||||
if (!languageSupported(lang)) {
|
||||
return "en";
|
||||
}
|
||||
return lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description check whether provided language is supported by the website
|
||||
* @param {string} lang
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function languageSupported(lang) {
|
||||
return ["en", "zh-CN", "it", "fr", "es"].includes(lang);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update website language
|
||||
* @param {string} lang
|
||||
*/
|
||||
function setSiteLanguage(lang) {
|
||||
setLanguage(lang);
|
||||
}
|
||||
|
||||
const converter = new showdown.Converter({ tables: true });
|
||||
|
||||
/**
|
||||
* @description load page associated to hash
|
||||
* @param {string} hash
|
||||
*/
|
||||
function loadPage(path) {
|
||||
switch (path) {
|
||||
case "/":
|
||||
case "/index.html":
|
||||
loadHtml("home.html");
|
||||
break;
|
||||
case "/get-started.html":
|
||||
loadHtml("get-started.html");
|
||||
break;
|
||||
case "/user-manual.html":
|
||||
loadUserManual();
|
||||
break;
|
||||
case "/updates.html":
|
||||
loadHtml("updates.html");
|
||||
break;
|
||||
case "/changelog.html":
|
||||
loadMarkdown(
|
||||
"https://raw.githubusercontent.com/veeso/termscp/main/CHANGELOG.md"
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function loadHtml(page) {
|
||||
const url = "html/" + page;
|
||||
$("#main").load(url, function () {
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
function loadMenu() {
|
||||
$("#menu").load("html/components/menu.html", function () {
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
function loadFooter() {
|
||||
$("#footer").load("html/components/footer.html", function () {
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
function loadMarkdown(page) {
|
||||
getMarkdown(page, function (md) {
|
||||
const div = jQuery("<div/>", {
|
||||
id: page,
|
||||
class: "container markdown",
|
||||
});
|
||||
div.html(converter.makeHtml(md));
|
||||
$("#main").empty();
|
||||
$("#main").append(div);
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get markdown and pass result to onLoaded
|
||||
* @param {string} url
|
||||
* @param {function} onLoaded
|
||||
*/
|
||||
function getMarkdown(url, onLoaded) {
|
||||
$.ajax({
|
||||
url,
|
||||
type: "GET",
|
||||
dataType: "text",
|
||||
success: onLoaded,
|
||||
});
|
||||
}
|
||||
|
||||
function loadUserManual() {
|
||||
// Load language
|
||||
const lang = getNavigatorLanguage();
|
||||
if (lang === "en") {
|
||||
loadMarkdown(
|
||||
`https://raw.githubusercontent.com/veeso/termscp/main/docs/man.md`
|
||||
);
|
||||
} else {
|
||||
loadMarkdown(
|
||||
`https://raw.githubusercontent.com/veeso/termscp/main/docs/${lang}/man.md`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// startup
|
||||
$(function () {
|
||||
loadPage(window.location.pathname);
|
||||
loadMenu();
|
||||
loadFooter();
|
||||
});
|
||||
@@ -1,81 +0,0 @@
|
||||
function onPageLoaded() {
|
||||
reloadTranslations();
|
||||
setThemeToggle();
|
||||
setTheme(getTheme());
|
||||
}
|
||||
|
||||
function onToggleMenu() {
|
||||
const mobileMenu = $("#mobile-menu");
|
||||
let wasVisible = false;
|
||||
// if not visible set flex and slide in, otherwise slide out
|
||||
if (!mobileMenu.is(":visible")) {
|
||||
mobileMenu.css("display", "flex");
|
||||
mobileMenu.addClass("animate__animated animate__slideInLeft");
|
||||
} else {
|
||||
mobileMenu.addClass("animate__animated animate__slideOutLeft");
|
||||
wasVisible = true;
|
||||
}
|
||||
|
||||
// on animation end remove animation, if visible set hidden
|
||||
mobileMenu.on("animationend", () => {
|
||||
mobileMenu.removeClass(
|
||||
"animate__animated animate__slideOutLeft animate__slideInLeft"
|
||||
);
|
||||
if (wasVisible) {
|
||||
mobileMenu.css("display", "none");
|
||||
}
|
||||
mobileMenu.off("animationend");
|
||||
});
|
||||
}
|
||||
|
||||
function getTheme() {
|
||||
const theme = localStorage.getItem("theme");
|
||||
|
||||
if (!theme) {
|
||||
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
? "theme-dark"
|
||||
: "theme-light";
|
||||
}
|
||||
|
||||
return theme;
|
||||
}
|
||||
|
||||
function setThemeToggle() {
|
||||
if (getTheme() === "theme-dark") {
|
||||
$("#theme-toggle-dark-icon").css("display", "block");
|
||||
$("#theme-toggle-light-icon").css("display", "none");
|
||||
} else {
|
||||
$("#theme-toggle-dark-icon").css("display", "none");
|
||||
$("#theme-toggle-light-icon").css("display", "block");
|
||||
}
|
||||
}
|
||||
|
||||
// function to set a given theme/color-scheme
|
||||
function setTheme(themeName) {
|
||||
localStorage.setItem("theme", themeName);
|
||||
if (themeName === "theme-dark") {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
setThemeToggle();
|
||||
}
|
||||
|
||||
// function to toggle between light and dark theme
|
||||
function toggleTheme() {
|
||||
console.log("theme", getTheme());
|
||||
if (getTheme() === "theme-dark") {
|
||||
setTheme("theme-light");
|
||||
} else {
|
||||
setTheme("theme-dark");
|
||||
}
|
||||
}
|
||||
|
||||
// Startup
|
||||
$(function () {
|
||||
// Init language
|
||||
setSiteLanguage(getNavigatorLanguage());
|
||||
|
||||
// init theme
|
||||
setTheme(getTheme());
|
||||
});
|
||||
1
site/js/lang.min.js
vendored
@@ -1 +0,0 @@
|
||||
var currentLanguage=null;var languagePath="lang/";var currentLanguageDict=null;function setLanguage(lang){currentLanguage=lang;const jsonFile=languagePath+currentLanguage+".json";$.getJSON(jsonFile,function(langData){currentLanguageDict=flatDict(langData);reloadTranslations()})}function reloadTranslations(){$("[translate]").each(function(){const translationAttr=$(this).attr("translate");$(this).text(getInstantTranslation(translationAttr))})}function getInstantTranslation(key){if(currentLanguageDict!==null&&key in currentLanguageDict){return currentLanguageDict[key]}else{return"{{ "+key+" }}"}}function flatDict(dict){const iterNode=(flatten,path,node)=>{for(const key of Object.keys(node)){const child=node[key];const childKey=path?path+"."+key:key;if(typeof child==="object"){flatten=iterNode(flatten,childKey,child)}else{flatten[childKey]=child}}return flatten};return iterNode({},null,dict)}
|
||||
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* @description resolve copyright year
|
||||
*/
|
||||
|
||||
function resolveCopyright() {
|
||||
const year = new Date().getFullYear();
|
||||
$("[resolve-copyright]").each(function () {
|
||||
$(this).text(year);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description resolve video fallback source in case fails. Uses an image instead
|
||||
*/
|
||||
function resolveVideoFallback() {
|
||||
$("[resolve-video-fallback]").each(function () {
|
||||
const fallback = $(this).attr("resolve-video-fallback");
|
||||
// Add listener
|
||||
$(this).on("error", function () {
|
||||
const image = document.createElement("img");
|
||||
image.src = fallback;
|
||||
image.classList = ["preview"];
|
||||
$(this).parent().replaceWith(image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// init
|
||||
$(function () {
|
||||
resolveCopyright();
|
||||
resolveVideoFallback();
|
||||
});
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "A feature rich terminal UI file transfer",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Get started",
|
||||
"updates": "Install updates",
|
||||
"manual": "User manual",
|
||||
"changelog": "Release history",
|
||||
"author": "About the author",
|
||||
"support": "Support me"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/Kube/S3/WebDAV",
|
||||
"getStarted": "Get started →",
|
||||
"versionAlert": "termscp 1.0.0 is NOW out! Download it from",
|
||||
"here": "here",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Handy UI",
|
||||
"body": "Explore and operate on the remote and on the local machine file system with a handy UI."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Cross platform",
|
||||
"body": "Runs on Windows, MacOS, Linux and FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Customizable",
|
||||
"body": "Customize the file explorer, the UI and many other parameters..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Bookmarks",
|
||||
"body": "Connect to your favourite hosts through built-in bookmarks and recent connections"
|
||||
},
|
||||
"security": {
|
||||
"title": "Security first",
|
||||
"body": "Save your passwords into your operating system key vault"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Eye on performance",
|
||||
"body": "termscp has been developed keeping an eye on performance to prevent high cpu usage"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Get started",
|
||||
"manual": "User manual",
|
||||
"updates": "Install updates"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Get started",
|
||||
"quickSetup": "Quick setup",
|
||||
"suggested": "We strongly suggest this method to install termscp",
|
||||
"posixUsers": "If you are a Linux, a FreeBSD or a MacOS user, you can install termscp via this simple command , which will use a shell script installer:",
|
||||
"windows": {
|
||||
"title": "Windows users",
|
||||
"intro": "You can install termscp on Windows via",
|
||||
"moderation": "Consider that Chocolatey moderation can take up to a few weeks since last release, so if the latest version is not available yet, you can install it downloading the ZIP file from",
|
||||
"then": "and then, from the ZIP directory, install it via"
|
||||
},
|
||||
"linuxUsers": "Linux users",
|
||||
"notConfident": "Opt for these methods instead if you don't feel confident using the shell script",
|
||||
"noBinary": "Opt for this method instead if binaries for your platform are not available or you want to select features",
|
||||
"arch": {
|
||||
"title": "Arch derived users",
|
||||
"intro": "On Arch Linux based distros, you can install termscp using",
|
||||
"then": "then run"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Debian derived users",
|
||||
"body": "On Debian based distros, you can install termscp using the Deb package via:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Redhat derived users",
|
||||
"body": "On RedHat based distros, you can install termscp using the RPM package via:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "MacOS users",
|
||||
"install": "Install termscp via"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Install with Cargo",
|
||||
"body": "If a package is not available for your system, you can opt to install termscp via",
|
||||
"requirements": "To install termscp via Cargo, these requirements must be satisfied",
|
||||
"install": "Then you can install termscp via",
|
||||
"noKeyring": "Or if you don't want to have support for keyring or you're building on *BSD:",
|
||||
"noSMB": "Or if you want to disable SMB:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Keeping termscp up to date",
|
||||
"disclaimer": " Updating termscp with this method is only available for 0.7.x versions or higher. If you have an older version, you have to install updates using the",
|
||||
"reasons": {
|
||||
"title": "Why you should install updates",
|
||||
"wallOfText": "Termscp is an application that is still in its early stage of development, the first version has been released in december in 2020 and practically there's only one guy working on it and there's still a lot of work to do in order to improve it and make it fast and reliable. Along to this, you should also consider that since it's an application which works with network protocols and is intended to manipulate secrets and credentials there may always be a security issue. I can't guarantee there's no security issues in the versions I've released in these months, and if there are they might not be even my fault, but they might be contained in the libraries termscp relies on. Because of this, it's always VERY important to keep termscp up to date. To prove how much I care about it, just consider that I've implemented something that many other open source applications won't do: the update check. Whenever you start termscp (unless if deactivated in configuration) termscp will always check if there's a new version available and will notify you immediately. In addition to security concerns, each major update will bring many awesome features 🦄 you can't miss and the application is getting more reliable and stable after each update 😄",
|
||||
"tldr": "Possible security issues; new awesome features; performance and stability; Bugfixes"
|
||||
},
|
||||
"gui": {
|
||||
"title": "GUI method",
|
||||
"body": "The GUI method just consists in starting termscp with no options, you then should be in front of the authentication form. If there's an update available a message like \"termscp x.y.z is OUT! Update and read release notes with CTRL+R\". All you have to do at this point to update termscp, is:",
|
||||
"steps": {
|
||||
"st": "press CTRL+R. The release notes should now be displayed",
|
||||
"nd": "Select \"YES\" in the \"Install update?\" radio input",
|
||||
"rd": "Press \"Enter\""
|
||||
},
|
||||
"then": "If everything worked correctly a green message \"termscp x.y.z has been installed!\" will be displayed. Just restart termscp and enjoy the update 😄",
|
||||
"pex": " If you have previously installed termscp via Deb/RPM package, you may need to use the CLI method running termscp with sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "CLI method",
|
||||
"body": "If you prefer, you can install a new update just using the dedicated CLI option:",
|
||||
"pex": "Run with sudo if necessary (installed with RPM/DEB)",
|
||||
"then": "Once started, you will be prompted whether to install or not the update. Confirm the installation and ta-dah, the new version of termscp should now be available on your machine"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Una transferencia de archivos de terminal rica en funciones",
|
||||
"intro": "Sobre termscp",
|
||||
"getStarted": "Para iniciar",
|
||||
"updates": "Actualizaciones",
|
||||
"manual": "Manual de usuario",
|
||||
"changelog": "Historial de versiones",
|
||||
"author": "Sobre el autor",
|
||||
"support": "Apoyame"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un explorador y transferencia de archivos de terminal rico en funciones, con apoyo para SCP/SFTP/FTP/Kube/S3/WebDAV",
|
||||
"getStarted": "Para iniciar →",
|
||||
"versionAlert": "termscp 1.0.0 ya está disponible! Descárgalo desde",
|
||||
"here": "aquì",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Interfaz de usuario práctica",
|
||||
"body": "Explore y opere en el sistema de archivos de la máquina local y remota con una interfaz de usuario práctica."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multiplataforma",
|
||||
"body": "Funciona en Windows, MacOS, Linux y FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personalizable",
|
||||
"body": "Personalice el explorador de archivos, la interfaz de usuario y muchos otros parámetros ..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Marcadores",
|
||||
"body": "Conéctese a sus hosts favoritos a través de marcadores integrados y conexiones recientes"
|
||||
},
|
||||
"security": {
|
||||
"title": "Seguridad primero",
|
||||
"body": "Guarde sus contraseñas en la bóveda de claves de su sistema operativo"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Ojo en el rendimiento",
|
||||
"body": "termscp se ha desarrollado teniendo en cuenta el rendimiento para evitar un uso elevado de la CPU"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Para iniciar",
|
||||
"manual": "Manual de usuario",
|
||||
"updates": "Actualizaciones"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Para iniciar",
|
||||
"quickSetup": "Configuración rápida",
|
||||
"suggested": "Recomendamos encarecidamente este método para instalar termscp",
|
||||
"posixUsers": "Si es un usuario de Linux, FreeBSD o MacOS, puede instalar termscp a través de este sencillo comando, que utilizará un instalador de scripts de shell:",
|
||||
"windows": {
|
||||
"title": "Usuarios Windows",
|
||||
"intro": "Puede instalar termscp en Windows a través de",
|
||||
"moderation": "Tenga en cuenta que la moderación de Chocolatey puede tardar hasta algunas semanas desde la última versión, por lo que si la última versión aún no está disponible, puede instalarla descargando el archivo ZIP de",
|
||||
"then": "y luego, desde el directorio ZIP, instálelo a través de"
|
||||
},
|
||||
"linuxUsers": "Usuarios Linux",
|
||||
"notConfident": "En su lugar, opte por estos métodos si no se siente seguro al usar el script de shell",
|
||||
"noBinary": "Opte por este método en su lugar si los binarios para su plataforma no están disponibles",
|
||||
"arch": {
|
||||
"title": "Usuarios derivadas Arch",
|
||||
"intro": "En las distribuciones basadas en Arch Linux, puede instalar termscp usando un administrador de paquetes AUR como",
|
||||
"then": "then run"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Usuarios derivadas Debian",
|
||||
"body": "En las distribuciones basadas en Debian, puede instalar termscp usando el paquete Deb a través de:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Usuarios derivadas RedHat",
|
||||
"body": "En las distribuciones basadas en RedHat, puede instalar termscp usando el paquete RPM a través de:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Usuarios MacOS",
|
||||
"install": "Instalar termscp a través de"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Instalar con Cargo",
|
||||
"body": "Si un paquete no está disponible para su sistema, puede optar por instalar termscp a través de",
|
||||
"requirements": "Para instalar termscp a través de Cargo, se deben cumplir estos requisitos",
|
||||
"install": "Entonces puedes instalar termscp a través de",
|
||||
"noKeyring": "O si no desea tener soporte para llavero o está construyendo sobre *BSD:",
|
||||
"noSMB": "O si no desea tener soporte para SMB:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Mantener termscp actualizado",
|
||||
"disclaimer": " La actualización de termscp con este método solo está disponible para las versiones 0.7.xo superiores. Si tiene una versión anterior, debe instalar actualizaciones utilizando el",
|
||||
"reasons": {
|
||||
"title": "Why you should install updates",
|
||||
"wallOfText": "Termscp es una aplicación que aún se encuentra en su etapa inicial de desarrollo, la primera versión se lanzó en diciembre de 2020 y prácticamente solo hay un chico trabajando en ella y aún hay mucho trabajo por hacer para mejorarla y hacerla. rápido y confiable. Junto con esto, también debe considerar que, dado que es una aplicación que funciona con protocolos de red y está destinada a manipular secretos y credenciales, siempre puede haber un problema de seguridad. No puedo garantizar que no haya problemas de seguridad en las versiones que lancé en estos meses, y si los hay, puede que ni siquiera sea mi culpa, pero pueden estar contenidos en las bibliotecas en las que se basa termscp. Debido a esto, siempre es MUY importante mantener el termcp actualizado. Para demostrar cuánto me importa, solo considere que he implementado algo que muchas otras aplicaciones de código abierto no harán: la verificación de actualizaciones. Siempre que inicie termscp (a menos que esté desactivado en la configuración), termscp siempre comprobará si hay una nueva versión disponible y le notificará inmediatamente. Además de las preocupaciones de seguridad, cada actualización importante traerá muchas características increíbles 🦄 no puede perderse y la aplicación se vuelve más confiable y estable después de cada actualización 😄",
|
||||
"tldr": "Posibles problemas de seguridad; nuevas funciones asombrosas; rendimiento y estabilidad; Corrección de errores"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Método GUI",
|
||||
"body": "El método GUI solo consiste en iniciar termscp sin opciones, luego debe estar frente al formulario de autenticación. Si hay una actualización disponible, aparecerá un mensaje como \"termscp x.y.z is OUT! Install update and read release notes with <CTRL + R>\". Todo lo que tiene que hacer en este punto para actualizar termscp es:",
|
||||
"steps": {
|
||||
"st": "presione CTRL + R. Las notas de la versión deberían mostrarse ahora",
|
||||
"nd": "Seleccione \"Yes\" en la entrada de radio \"Install update? \"",
|
||||
"rd": "presione \"Enter\""
|
||||
},
|
||||
"then": "If everything worked correctly a green message \"termscp x.y.z has been installed!\" will be displayed. Just restart termscp and enjoy the update 😄",
|
||||
"pex": " Si ha instalado previamente termscp a través del paquete Deb / RPM, es posible que deba utilizar el método CLI ejecutando termscp con sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "Método CLI",
|
||||
"body": "Si lo prefiere, puede instalar una nueva actualización simplemente usando la opción CLI dedicada:",
|
||||
"pex": "Ejecute con sudo si es necesario (instalado con RPM / DEB)",
|
||||
"then": "Una vez iniciado, se le preguntará si desea instalar o no la actualización. Confirme la instalación y ta-dah, la nueva versión de termscp ahora debería estar disponible en su máquina"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Un file transfer de terminal riche en fonctionnalités",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Pour commencer",
|
||||
"updates": "Mise à jours",
|
||||
"manual": "Manuel utilisateur",
|
||||
"changelog": "Changelog",
|
||||
"author": "A propos de l'auteur",
|
||||
"support": "Me soutenir"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un file transfer et navigateur de terminal riche en fonctionnalités avec support pour SCP/SFTP/FTP/Kube/S3/WebDAV",
|
||||
"getStarted": "Pour commencer →",
|
||||
"versionAlert": "termscp 1.0.0 est maintenant sorti! Télécharge-le depuis",
|
||||
"here": "ici",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Interface utilisateur pratique",
|
||||
"body": "Explorez et utilisez le système de fichiers distant et local avec une interface utilisateur pratique."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multi-plateforme",
|
||||
"body": "Fonctionne sur Windows, MacOS, Linux et FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personnalisable",
|
||||
"body": "Personnalisez l'explorateur de fichiers, l'interface utilisateur et bien d'autres paramètres..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Signets",
|
||||
"body": "Connectez-vous à vos hôtes préférés via des signets intégrés et des connexions récentes"
|
||||
},
|
||||
"security": {
|
||||
"title": "Sécurité avant tout",
|
||||
"body": "Enregistrez vos mots de passe dans le coffre-fort de votre système"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Regard sur les performances",
|
||||
"body": "termscp a été développé en gardant un œil sur les performances pour éviter une utilisation élevée du processeur"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Pour commencer",
|
||||
"manual": "Manuel d'utilisateur",
|
||||
"updates": "Mise à jour"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Pour commencer",
|
||||
"quickSetup": "Installation rapide",
|
||||
"suggested": "Nous suggérons fortement cette méthode pour installer termscp",
|
||||
"posixUsers": "Si vous êtes un utilisateur Linux, FreeBSD ou MacOS, vous pouvez installer termscp via cette simple commande , qui utilisera un installateur de script shell :",
|
||||
"windows": {
|
||||
"title": "Utilisateurs Windows",
|
||||
"intro": "Vous pouvez installer termscp sur Windows via",
|
||||
"moderation": "Considérez que la modération Chocolatey peut prendre jusqu'à quelques semaines depuis la dernière version, donc si la dernière version n'est pas encore disponible, vous pouvez l'installer en téléchargeant le fichier ZIP depuis",
|
||||
"then": "puis, depuis le répertoire ZIP, installez-le via"
|
||||
},
|
||||
"linuxUsers": "Utilisateurs Linux",
|
||||
"notConfident": "Optez plutôt pour ces méthodes si vous ne vous sentez pas à l'aise avec le script shell",
|
||||
"noBinary": "Optez plutôt pour cette méthode si les binaires pour votre plate-forme ne sont pas disponibles",
|
||||
"arch": {
|
||||
"title": "Utilisateurs dérivés Arch",
|
||||
"intro": "Sur les distributions basées sur Arch Linux, vous pouvez installer termscp à l'aide d'un gestionnaire de packages AUR tel que",
|
||||
"then": "puis, installez-le via"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Utilisateurs dérivés Debian",
|
||||
"body": "Sur les distributions basées sur Debian, vous pouvez installer termscp en utilisant le paquet Deb via :"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Utilisateurs dérivés RedHat",
|
||||
"body": "Sur les distributions basées sur RedHat, vous pouvez installer termscp à l'aide du package RPM via :"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Utilisateurs MacOS",
|
||||
"install": "Installez termscp via"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Installer avec Cargo",
|
||||
"body": "Si un package n'est pas disponible pour votre système, vous pouvez choisir d'installer Termscp via",
|
||||
"requirements": "Pour installer termscp via Cargo, ces conditions doivent être remplies",
|
||||
"install": "Ensuite, vous pouvez installer termscp via",
|
||||
"noKeyring": "Ou si vous ne voulez pas avoir de support pour le trousseau de clés ou si vous construisez sur *BSD :",
|
||||
"noSMB": "Ou si vous ne voulez pas avoir de support pour SMB:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Tenir à jour termscp",
|
||||
"disclaimer": " La mise à jour de termscp avec cette méthode n'est disponible que pour les versions 0.7.x ou supérieures. Si vous avez une ancienne version, vous devez installer les mises à jour en utilisant le",
|
||||
"reasons": {
|
||||
"title": "Pourquoi devriez-vous installer les mises à jour",
|
||||
"wallOfText": "termscp est une application qui est encore à ses débuts de développement, la première version est sortie en décembre 2020 et pratiquement il n'y a qu'un seul gars qui travaille dessus et il y a encore beaucoup de travail à faire pour l'améliorer et le faire rapide et fiable. Parallèlement à cela, vous devez également considérer que, puisqu'il s'agit d'une application qui fonctionne avec des protocoles réseau et est destinée à manipuler des secrets et des informations d'identification, il peut toujours y avoir un problème de sécurité. Je ne peux pas garantir qu'il n'y ait pas de problèmes de sécurité dans les versions que j'ai publiées au cours de ces mois, et s'il y en a, ce n'est peut-être même pas de ma faute, mais ils pourraient être contenus dans les bibliothèques sur lesquelles s'appuie Termscp. Pour cette raison, il est toujours TRÈS important de maintenir termscp à jour. Pour prouver à quel point j'y tiens, considérez simplement que j'ai implémenté quelque chose que de nombreuses autres applications open source ne feront pas : la vérification des mises à jour. Chaque fois que vous démarrez termscp (sauf s'il est désactivé dans la configuration), termscp vérifiera toujours si une nouvelle version est disponible et vous en informera immédiatement. En plus des problèmes de sécurité, chaque mise à jour majeure apportera de nombreuses fonctionnalités impressionnantes 🦄 vous ne pouvez pas manquer et l'application devient plus fiable et stable après chaque mise à jour 😄",
|
||||
"tldr": "Problèmes de sécurité possibles ; de nouvelles fonctionnalités impressionnantes ; performances et stabilité; Corrections de bugs"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Méthode GUI",
|
||||
"body": "La méthode GUI consiste simplement à démarrer termscp sans options, vous devriez alors être devant le formulaire d'authentification. S'il y a une mise à jour disponible, un message comme \"termscp x.y.z is now OUT ! Install updated and read the release notes with CTRL+R\". Tout ce que vous avez à faire à ce stade pour mettre à jour termscp, c'est :",
|
||||
"steps": {
|
||||
"st": "appuyez sur CTRL+R. Les notes de version devraient maintenant être affichées",
|
||||
"nd": "Sélectionnez \"YES\" dans l'entrée radio \"Install update?\"",
|
||||
"rd": "appuyez \"Enter\""
|
||||
},
|
||||
"then": "Si tout a fonctionné correctement, un message vert \"termscp x.y.z has been installed!\" s'affichera. Redémarrez simplement Termscp et profitez de la mise à jour",
|
||||
"pex": " Si vous avez déjà installé termscp via le package Deb/RPM, vous devrez peut-être utiliser la méthode CLI exécutant termscp avec sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "Méthode CLI",
|
||||
"body": "Si vous préférez, vous pouvez installer le mise à jour avec l'option CLI dédié :",
|
||||
"pex": "Exécuter avec sudo si nécessaire (installé avec RPM/DEB)",
|
||||
"then": "Une fois démarré, vous serez invité à installer ou non la mise à jour. Confirmez l'installation et ta-dah, la nouvelle version de termscp devrait maintenant être disponible sur votre machine"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Un file transfer ricco di funzionalità",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Per iniziare",
|
||||
"updates": "Aggiornamenti",
|
||||
"manual": "Manuale",
|
||||
"changelog": "Rilasci",
|
||||
"author": "Sull'autore",
|
||||
"support": "Supportami"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un file transfer ed explorer ricco di funzionalità con supporto per SFTP/SCP/FTP/S3",
|
||||
"getStarted": "Installa termscp →",
|
||||
"versionAlert": "termscp 1.0.0 è ORA disponbile! Scaricalo da",
|
||||
"here": "qui",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "UI ergonomica",
|
||||
"body": "Naviga e lavora sulla macchina remote e locale attraverso una UI di facile utilizzo"
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multi piattaforma",
|
||||
"body": "Gira su Windows, MacOS, Linux e FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personalizzabile",
|
||||
"body": "Personalizza l'explorer, l'interfaccia e molto altro..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Preferiti",
|
||||
"body": "Connetitit ai tuoi host preferiti e accedi in velocemente alle tue ultime sessioni"
|
||||
},
|
||||
"security": {
|
||||
"title": "Sicurezza in prima classe",
|
||||
"body": "Salva le tue password nel vault del tuo sistema operativo"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Focus sulle performance",
|
||||
"body": "termscp è stato sviluppato tenendo conto delle performance, per garantirti il minor consumo di risore possibile"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Per iniziare",
|
||||
"manual": "Manuale utente",
|
||||
"updates": "Aggiornamenti"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Installazione",
|
||||
"quickSetup": "Installazione veloce",
|
||||
"suggested": "Suggeriamo questo metodo per installare termscp",
|
||||
"posixUsers": "Se sei un utente Linux, MacOS o *BSD puoi installare termscp con questo semplice comando, che utilizzerà un semplice script per installare l'applicazione;",
|
||||
"windows": {
|
||||
"title": "Utenti Windows",
|
||||
"intro": "Puoi installare termscp su Windows tramite",
|
||||
"moderation": "Attenzione che i moderatori di chocolatey potrebbero metterci qualche settimana ad approvare l'ultima versione, quindi se l'ultima versione non fosse ancora disponibile, puoi installarla tramite il file ZIP da",
|
||||
"then": "e poi, dalla directory dello ZIP, lo installi con"
|
||||
},
|
||||
"linuxUsers": "Utenti Linux",
|
||||
"notConfident": "Opta per questi metodi nel caso non ti fidi dello script install.sh",
|
||||
"noBinary": "Opta per questo metodo nel caso non fosse disponibile un binario per la tua piattaforma",
|
||||
"arch": {
|
||||
"title": "Utenti derivate Arch",
|
||||
"intro": "Sulle distro derivate da Arch puoi installare termscp tramite un package manager AUR come",
|
||||
"then": "e poi lanciare"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Utenti derivate Debian",
|
||||
"body": "Sulle distro derivate Debian puoi installare termscp tramite il pacchetto Deb, con:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Utenti derivate RedHat",
|
||||
"body": "Sulle distro derivate RedHat puoi installare termscp tramite il pacchetto RPM, con:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Utenti MacOS",
|
||||
"install": "Installa termscp con"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Installa con Cargo",
|
||||
"body": "Se un pacchetto non è disponibile per il tuo sistema, puoi installare termscp con cargo con",
|
||||
"requirements": "Per installare con Cargo, questi requisiti di sistema devono essere soddisfatti",
|
||||
"install": "Infine puoi installare termscp con",
|
||||
"noKeyring": "O se non hai il supporto a DBUS o sei un utente *BSD:",
|
||||
"noSMB": "O se vuoi disabilitare il supporto per SMB:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Mantenere termscp all'ultima versione",
|
||||
"disclaimer": "L'aggiornamento di termscp con il metodo descritto è disponibile solo per le versioni suaccessive o uguali alla 0.7.x. Nel caso tu abbia una versione precedente, puoi aggiornare termscp tramite il",
|
||||
"reasons": {
|
||||
"title": "Perché dovresti aggiornare termscp",
|
||||
"wallOfText": "Termscp è un'applicazione che è ancora all'inizio del suo ciclo di vita, la prima versione è infatti risalente a dicembre 2020 e praticamente c'è solo una persona che ci lavora. C'è ancora molto da fare prima di renderlo veloce, sicuro al 100% ed affidabile. Oltre a questo devi considerare che lavorando con protocolli di rete che utilizzano autenticazione ci potrebbero sempre essere delle falle di sicurezza nelle librerie su cui ci appoggiamo e non ho modo ad oggi di garantire che non ce ne siano. Per questo motivo è sempre importante mantenere termscp all'ultima versione e leggere i changelog del progetto. Tanto per capirci su quanto ci tenga a mantenere le versioni all'ultima versione, questo è uno dei pochi progetti CLI ad avere la possibilità di installarlo direttamente dall'applicazione Comunque oltre a possibili falle di sicurezza e bug, ad ogni aggiornamento introdurrò nuove fantastiche funzionalità 🦄 da non perdere 😄",
|
||||
"tldr": "Possibili problemi di sicurezza; nuove features; performance e stabilità; bug fix"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Metodo da interfaccia grafica",
|
||||
"body": "Il metodo da interfaccia grafica richiede di lanciare termscp senza argomenti, a questo punto nella pagina dell'autenticazione dovresti essere notificato di una nuova versione disponibile, tramite un messaggio tipo \"termscp x.y.z is OUT! Update and read release notes with CTRL+R\". A questo punto ti basterà:",
|
||||
"steps": {
|
||||
"st": "Premere CTRL+R. Le note di rilascio saranno visualizzate in un popup",
|
||||
"nd": "Seleziona \"YES\" nel dialogo radio \"Install update?\"",
|
||||
"rd": "Premi \"Invio\""
|
||||
},
|
||||
"then": "Se tutto è andato a buon fine un messaggio con scritto \"termscp x.y.z has been installed!\" sarà visualizzato. A questo punto riavvia termscp e goditi le novità 😄",
|
||||
"pex": " Se in precedenza hai installato termscp con pacchetto Deb/RPM, dovresti aver bisogno di lanciare termscp da utente sudo. Nel caso ti consiglio il metodo CLI."
|
||||
},
|
||||
"cli": {
|
||||
"title": "Metodo da linea di comando",
|
||||
"body": "Se preferisci o devi installare con sudo, puoi installare termscp lanciandolo con l'opzione da linea di comando:",
|
||||
"pex": "Lancialo con sudo se necessario (tipo se l'hai installato con pacchetto RPM/DEB)",
|
||||
"then": "Una volta lanciato, se c'è un aggiornamento disponibile ti chiederà se procedere. Conferma e a questo punto dovrebbe installarlo. Se tutto è andato a buon fine, riavviando termscp dovrebbe essere l'ultima versione."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "功能丰富的终端文件传输",
|
||||
"intro": "介绍",
|
||||
"getStarted": "开始",
|
||||
"updates": "安装更新",
|
||||
"manual": "用户手册",
|
||||
"changelog": "发布历史",
|
||||
"author": "关于作者",
|
||||
"support": "支持我"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "功能丰富的终端 UI 文件传输和浏览器,支持 SCP/SFTP/FTP/Kube/S3/WebDAV",
|
||||
"getStarted": "开始 →",
|
||||
"versionAlert": "termscp 1.0.0 现已发布! 从下载",
|
||||
"here": "这里",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "方便的用户界面",
|
||||
"body": "使用方便的 UI 在远程和本地机器文件系统上探索和操作。"
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "跨平台",
|
||||
"body": "在 Windows、MacOS、Linux 和 FreeBSD 上运行"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "可定制",
|
||||
"body": "自定义文件浏览器、UI 和许多其他参数..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "书签",
|
||||
"body": "通过内置书签和最近的连接连接到您最喜欢的主机"
|
||||
},
|
||||
"security": {
|
||||
"title": "安全第一",
|
||||
"body": "将您的密码保存到您的操作系统密钥保管库中"
|
||||
},
|
||||
"performance": {
|
||||
"title": "关注性能",
|
||||
"body": "已经开发了 termscp 关注性能以防止高 CPU 使用率"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "开始",
|
||||
"manual": "用户手册",
|
||||
"updates": "安装更新"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "开始",
|
||||
"quickSetup": "快速设置",
|
||||
"suggested": "我们强烈建议使用这种方法来安装termscp",
|
||||
"posixUsers": "如果您是 Linux、FreeBSD 或 MacOS 用户,您可以通过这个简单的命令安装 termscp,它将使用 shell 脚本安装程序:",
|
||||
"windows": {
|
||||
"title": "Windows 用户",
|
||||
"intro": "安装",
|
||||
"moderation": "考虑到 Chocolatey 审核自上次发布以来可能需要长达数周的时间,因此如果最新版本尚不可用,您可以从以下位置下载 ZIP 文件进行安装",
|
||||
"then": "然后,从 ZIP 目录,安装它"
|
||||
},
|
||||
"linuxUsers": "Linux 用户",
|
||||
"notConfident": "如果您对使用 shell 脚本没有信心,请选择这些方法",
|
||||
"noBinary": "如果您的平台的二进制文件不可用,请改用此方法",
|
||||
"arch": {
|
||||
"title": "Arch派生用户",
|
||||
"intro": "在基于 Arch Linux 的发行版上,您可以使用 AUR 包管理器安装 termscp,例如",
|
||||
"then": "然后运行"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Debian派生用户",
|
||||
"body": "在基于 Debian 的发行版上,您可以通过以下方式使用 Deb 包安装 termscp:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Redhat派生用户",
|
||||
"body": "在基于 RedHat 的发行版上,您可以通过以下方式使用 RPM 包安装 termscp:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "MacOS 用户",
|
||||
"install": "通过以下方式安装termscp:"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "使用“Cargo”安装",
|
||||
"body": "如果您的系统没有可用的软件包,您可以选择通过以下方式安装 termscp:",
|
||||
"requirements": "要通过 Cargo 安装termscp,必须满足这些要求",
|
||||
"install": "然后你可以通过安装termscp",
|
||||
"noKeyring": "或者,如果您不想支持密钥环,或者您正在构建 *BSD:",
|
||||
"noSMB": "或者如果你想禁用 SMB :"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "使termscp保持最新",
|
||||
"disclaimer": " 使用此方法更新 termscp 仅适用于 0.7.x 版本或更高版本。 如果您有旧版本,则必须使用",
|
||||
"reasons": {
|
||||
"title": "为什么要安装更新",
|
||||
"wallOfText": "termscp 是一个仍处于早期开发阶段的应用程序,第一个版本已于 2020 年 12 月发布,实际上只有一个人在开发它,为了改进它并使其成功,还有很多工作要做快速可靠。除此之外,您还应该考虑到,由于它是一个使用网络协议的应用程序,旨在操纵机密和凭据,因此可能始终存在安全问题。我不能保证我这几个月发布的版本没有安全问题,如果有,它们甚至可能不是我的错,但它们可能包含在 termscp 依赖的库中。因此,保持termscp 最新总是非常重要的。为了证明我有多关心它,请考虑一下我已经实现了许多其他开源应用程序不会做的事情:更新检查。每当您启动termscp(除非在配置中停用)termscp 将始终检查是否有新版本可用并立即通知您。除了安全问题,每次重大更新都会带来许多很棒的功能🦄你不能错过,每次更新后应用程序都变得更加可靠和稳定😄",
|
||||
"tldr": "可能的安全问题; 新的很棒的功能; 性能和稳定性; Bug修复"
|
||||
},
|
||||
"gui": {
|
||||
"title": "图形用户界面方式",
|
||||
"body": "GUI 方法只包括启动没有选项的 termscp,然后您应该位于身份验证表单的前面。 如果有可用更新,则会显示类似\"termscp x.y.z is OUT! Update and read release notes with CTRL+R\"之类的消息。 此时更新termscp所需要做的就是:",
|
||||
"steps": {
|
||||
"st": "按 CTRL+R。 现在应该显示发行说明",
|
||||
"nd": "在 \"Install update?\" 单选输入中选择 \"YES\"",
|
||||
"rd": "按 \"Enter\""
|
||||
},
|
||||
"then": "termscp x.y.z has been installed!”。 只需重新启动termscp并享受更新😄",
|
||||
"pex": " 如果您之前已经通过 Deb/RPM 包安装了 termscp,您可能需要使用 CLI 方法通过 sudo 运行 termscp"
|
||||
},
|
||||
"cli": {
|
||||
"title": "命令行方式",
|
||||
"body": "如果您愿意,可以仅使用专用 CLI 选项安装新更新:",
|
||||
"pex": "如有必要,使用 sudo 运行(使用 RPM/DEB 安装)",
|
||||
"then": "启动后,系统将提示您是否安装更新。 确认安装和 ta-dah,新版本的termscp 现在应该可以在你的机器上使用了"
|
||||
}
|
||||
}
|
||||
}
|
||||
7169
site/package-lock.json
generated
Normal file
24
site/package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "termscp-site",
|
||||
"type": "module",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"prebuild": "node scripts/fetch-man.mjs",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"check": "astro check",
|
||||
"test": "vitest run"
|
||||
},
|
||||
"dependencies": {
|
||||
"astro": "^5.0.0",
|
||||
"@astrojs/sitemap": "^3.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/vite": "^4.0.0",
|
||||
"tailwindcss": "^4.0.0",
|
||||
"typescript": "^5.6.0",
|
||||
"vitest": "^2.1.0"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 879 B After Width: | Height: | Size: 879 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -1,2 +0,0 @@
|
||||
User-Agent: *
|
||||
Allow: /
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>https://termscp.veeso.dev/</loc>
|
||||
<lastmod>2023-07-05</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://termscp.veeso.dev/get-started.html</loc>
|
||||
<lastmod>2023-07-05</lastmod>
|
||||
<priority>0.95</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://termscp.veeso.dev/updates.html</loc>
|
||||
<lastmod>2023-07-05</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://termscp.veeso.dev/user-manual.html</loc>
|
||||
<lastmod>2023-07-05</lastmod>
|
||||
<priority>0.90</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://termscp.veeso.dev/changelog.html</loc>
|
||||
<lastmod>2023-07-05</lastmod>
|
||||
<priority>0.50</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
5
site/tsconfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "astro/tsconfigs/strict",
|
||||
"include": [".astro/types.d.ts", "**/*"],
|
||||
"exclude": ["dist"]
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en_US" class="dark">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
Install termscp updates | termscp
|
||||
</title>
|
||||
<meta property="og:description"
|
||||
content="How to update termscp. Keep termscp up to date with the built-in command." />
|
||||
<meta name="description"
|
||||
content="How to update termscp. Keep termscp up to date with the built-in command." />
|
||||
<meta property="og:title" content="Install termscp updates | termscp" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1280" />
|
||||
<meta property="og:image:height" content="640" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="termscp" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous" />
|
||||
<!-- tailwind -->
|
||||
<link href="output.css" rel="stylesheet" />
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout" class="dark:bg-brand dark:text-gray-100">
|
||||
|
||||
<!-- Menu -->
|
||||
<header id="menu"></header>
|
||||
<main>
|
||||
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
|
||||
</main>
|
||||
<footer id="footer"></footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw("veeso", {
|
||||
type: "floating-chat",
|
||||
"floating-chat.donateButton.text": "Support me",
|
||||
"floating-chat.donateButton.background-color": "#31363b",
|
||||
"floating-chat.donateButton.text-color": "#fff",
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,75 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en_US" class="dark">
|
||||
|
||||
<head>
|
||||
<title>
|
||||
termscp user manual | termscp
|
||||
</title>
|
||||
<meta property="og:description"
|
||||
content="How to use termscp. User manual for termscp. How to setup ssh keys in termscp? How to set color themes in termscp?" />
|
||||
<meta name="description"
|
||||
content="How to use termscp. User manual for termscp. How to setup ssh keys in termscp? How to set color themes in termscp?" />
|
||||
<meta property="og:title" content="termscp user manual | termscp" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta property="og:image" content="https://termscp.veeso.dev/assets/images/og_preview.jpg" />
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1280" />
|
||||
<meta property="og:image:height" content="640" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:site_name" content="termscp" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous" />
|
||||
<!-- tailwind -->
|
||||
<link href="output.css" rel="stylesheet" />
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="assets/images/favicon-96x96.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon-16x16.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout" class="dark:bg-brand dark:text-gray-100">
|
||||
|
||||
<!-- Menu -->
|
||||
<header id="menu"></header>
|
||||
<main>
|
||||
<div id="main" class="w-8/12 sm:w-full mx-auto pt-4 pb-8"></div>
|
||||
</main>
|
||||
<footer id="footer"></footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src="https://storage.ko-fi.com/cdn/scripts/overlay-widget.js"></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw("veeso", {
|
||||
type: "floating-chat",
|
||||
"floating-chat.donateButton.text": "Support me",
|
||||
"floating-chat.donateButton.background-color": "#31363b",
|
||||
"floating-chat.donateButton.text-color": "#fff",
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||