This commit is contained in:
msnie
2024-02-03 11:58:42 +01:00
parent 17ca1c805f
commit 5b0b5f548c
706 changed files with 135245 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
REMOTE_HOST=mir.whatbox.ca
REMOTE_USER=invalid
SSH_KEY_FILE_NAME=id_sprattle
SSH_PRIVATE_KEY='-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA335F6fDCS6a1+agXMlIpf3F1VMs7d1FS7zRdCJWIoWNtVQ+oDLGv
YWsbAhkW2J2ifaHwoskogK9Bqju3vKqPb7k8AlXIriHVH04u5NKWBpWdhyRFcgKti+NHlp
F6ODRYeLXrNOkJh4HPWMhip9UUWz46khxhznoBeRqUa/6JBe5nFN14QpRSKi6HZiBsU+9k
MfMLcRklGVfLa8Ou4BawPtLNvTo1FT4Ry5TJz1gqRUGc/LnDeGrvF80PtCyDaaW5JfElkV
m7Du0UPTd2mlrwd+f1S9VVYBGxm/fiHBn6BDcsM+/LWhn+ZhpQEIhtznWlm2IDGdYLS7Py
RZ0zVRT5+QAAA8A917pJPde6SQAAAAdzc2gtcnNhAAABAQDffkXp8MJLprX5qBcyUil/cX
VUyzt3UVLvNF0IlYihY21VD6gMsa9haxsCGRbYnaJ9ofCiySiAr0GqO7e8qo9vuTwCVciu
IdUfTi7k0pYGlZ2HJEVyAq2L40eWkXo4NFh4tes06QmHgc9YyGKn1RRbPjqSHGHOegF5Gp
Rr/okF7mcU3XhClFIqLodmIGxT72Qx8wtxGSUZV8trw67gFrA+0s29OjUVPhHLlMnPWCpF
QZz8ucN4au8XzQ+0LINppbkl8SWRWbsO7RQ9N3aaWvB35/VL1VVgEbGb9+IcGfoENywz78
taGf5mGlAQiG3OdaWbYgMZ1gtLs/JFnTNVFPn5AAAAAwEAAQAAAQANLkKYs79jVcwsRdqq
xMfrJ7mLP2DDWAAwclUJ5Hb5fN/3h2Pz7hpeGcJ7thev8JZvzit43KzViUB+qTH1xjtaYM
EzKnSahg1H+ngiiT1NQYKkwNT423aS8vVt+46ka1XlnJkBqe+LCdlWlTU+suVJJYGvzBod
yS1DQ3fwaV0S0Xd3BiI8ER9AcnYUNyMTKvs6LNvhCrafgqWOaXXcbWewNr+PKW5zUoXd5w
g9njvIpIT0t9H/T2kSxqk97SyfFN1osOe1ncyME+JrgYpU9iA0fV0eWbjP3k20q6IVZl1+
YpTfC6F0I52eDCK2r73gtOFyhSdXCCjlV/722KI2+utHAAAAgQCYJGt5zBU4ibiWEs84l0
uh8eVT81QAvRNIUAe2U4Qd0pwugQ3K37HLmOmd5L+lN3BF6OMNJobdRGXCKyoYNXbrtlTN
I+GCN1ZyWvoniD/+K/qnFZpcBzWaDDuWBghQk4FcOK6U6rGX2IPel8j501tv3SJpTmnJl4
hcmte51woohwAAAIEA98WbIr00Pm+9EIxt2NtQMO88wLk/4lCHiXEFmHjQ0Aiswof4j2Xe
cKKdUYwRKOJNZoeJiIFGRLi9i3/rS3mFYxjaMky260xOM+YZlcDkJHLjdhgXUEsaJFl/GI
ZzjGPezYRzgXtgTeyPVQizUKUKeYDyMChvE3CzFhAEaGLdRu8AAACBAObqRBk/jfgcYdaG
zGGhRb0Yir8H+o8T1qUWddJZXAesHXYwJoKrm0spFE/MGs651tMtc8SSEe3YMyfV23yojh
e6ZVnh8nkpQsxgyhp3UKlrBrVjEfk9bZvHodXlLisGZldpRxHfFBMlRt5PaFjlEXSCiv01
Kn0C9MI+MbInag2XAAAACHNwcmF0dGxlAQI=
-----END OPENSSH PRIVATE KEY-----
'
+49
View File
@@ -0,0 +1,49 @@
# https://hub.docker.com/_/alpine
ARG alpine_ver=3.18
FROM alpine:${alpine_ver}
ARG build_rev=0
# ARG SSH_PRIVATE_KEY
# ARG REMOTE_HOST
# Install Rsync and SSH.
RUN apk update \
&& apk upgrade \
&& apk add --no-cache \
rsync \
bash \
openssh-client-default \
sshpass \
nodejs-current \
npm \
ca-certificates tzdata \
&& update-ca-certificates \
&& rm -rf /var/cache/apk/*
# RUN addgroup -S node && adduser -S node -G node
# USER node
# RUN mkdir /home/node/.ssh
RUN mkdir sprattle
# RUN mkdir -p -m 0700 /home/node/.ssh && ssh-keyscan $REMOTE_HOST >> /home/node/.ssh/known_hosts
# RUN chown -R node:node /home/node/.ssh
WORKDIR /sprattle
COPY package*.json ./
COPY . .
RUN ls -la
RUN npm install
# COPY --chown=node:node . .
CMD ["node", "srv.js"]
+4
View File
@@ -0,0 +1,4 @@
# Sprattle
Using ssh, rsync and cron to sync directories.
1. On the host
+14
View File
@@ -0,0 +1,14 @@
version: '3.2'
services:
sprattle:
build:
context: .
dockerfile: ./Dockerfile
environment:
- REMOTE_HOST=$REMOTE_HOST
- REMOTE_USER=$REMOTE_USER
- SSH_KEY_FILE_NAME=$SSH_KEY_FILE_NAME
- SSH_PRIVATE_KEY=${SSH_PRIVATE_KEY}
volumes:
- ~/.ssh/id_sprattle:/root/.ssh/id_sprattle
+1308
View File
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
{
"name": "sprattle",
"version": "1.0.0",
"description": "An rsync / ssh / cron file sync server",
"main": "srv.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "knast",
"license": "ISC",
"dependencies": {
"express": "^4.18.2",
"node-ssh": "^13.1.0"
}
}
+73
View File
@@ -0,0 +1,73 @@
const express = require('express')
const { exec, execSync, spawn } = require("child_process");
const { NodeSSH } = require('node-ssh')
const crypto = require('crypto');
const node_ssh = new NodeSSH()
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log("REMOTE_HOST: ", process.env.REMOTE_HOST);
console.log("REMOTE_USER: ", process.env.REMOTE_USER);
console.log("SSH_KEY_FILE_NAME: ", process.env.SSH_KEY_FILE_NAME);
const sync_cmd = `ssh -i /root/.ssh/${process.env.SSH_KEY_FILE_NAME} ${process.env.REMOTE_USER}@${process.env.REMOTE_HOST}`
// I DONT NEED TO SSH. ONLY RSYNC OVER PROTOCOL
node_ssh.connect({
host: `${process.env.REMOTE_HOST}`,
username: `${process.env.REMOTE_USER}`,
privateKeyPath: `/root/.ssh/${process.env.SSH_KEY_FILE_NAME}`
})
.then((data) => {
console.log('after ssh connect');
console.log('data ', data);
})
// const ls = spawn(sync_cmd, ["ls", "-la"]);
// ls.stdout.on("data", data => {
// console.log(`stdout: ${data}`);
// });
// ls.stderr.on("data", data => {
// console.log(`stderr: ${data}`);
// });
// ls.on('error', (error) => {
// console.log(`error: ${error.message}`);
// });
// ls.on("close", code => {
// console.log(`child process exited with code ${code}`);
// });
// exec(`ssh-keyscan ${process.env.REMOTE_HOST} >> /root/.ssh/known_hosts`, (error, stdout, stderr) => {
// if (error) {
// console.error(`exec error: ${error}`);
// return;
// }
// console.log(`stdout: ${stdout}`);
// console.error(`stderr: ${stderr}`);
// });
// exec(sync_cmd, (error, stdout, stderr) => {
// if (error) {
// console.error(`exec error: ${error}`);
// return;
// }
// console.log(`stdout: ${stdout}`);
// console.error(`stderr: ${stderr}`);
// });
console.log(`sprattle running on port ${port}`)
})