Initial commit: get everything rolling
This commit is contained in:
107
index.js
Normal file
107
index.js
Normal file
@@ -0,0 +1,107 @@
|
||||
// SyncTool
|
||||
// Read or modify this code if you dare, it may be unilicense but you'll loose your sanity
|
||||
import { execSync, spawn } from 'node:child_process';
|
||||
import { existsSync, readFileSync, writeFileSync, readdirSync, statSync, openAsBlob } from 'node:fs';
|
||||
import { isMounted,unmountDrive,mountDrive, driveExists } from './usbkey-lifecycle';
|
||||
import { startCopyparty, stopCopyparty } from './services/copyparty'; //Realistically we should just use promise for this to keep things optimized. But, who cares about optimization!
|
||||
import { start }
|
||||
import data from './config.json' with { type: 'json' }
|
||||
import path from 'node:path';
|
||||
import { start } from 'node:repl';
|
||||
import { runRclone, runRsync } from './services/syncjobs';
|
||||
console.log('SyncTool init')
|
||||
console.log("Don't blame me if stuff bursts into flames")
|
||||
console.log("System info:")
|
||||
// Print enabled servers
|
||||
const serverConfigMap = {
|
||||
'Open Notebook': 'openNotebook',
|
||||
'Rclone': 'rclone',
|
||||
'Rsync': 'rsync',
|
||||
'Copyparty': 'copyparty'
|
||||
}
|
||||
Object.entries(serverConfigMap).forEach(([server, configKey]) => {
|
||||
const isEnabled = data[configKey]?.enabled === true
|
||||
console.log(`${isEnabled ? '✓' : '✗'} ${server} ${isEnabled ? '(enabled)' : '(disabled)'}`)
|
||||
})
|
||||
|
||||
|
||||
|
||||
//Check if the Flash Drive is plugged in
|
||||
if (isMounted(config.system.targetUuid, config.system.mountPoint) == true) {
|
||||
console.log("Drive looks mounted.")
|
||||
var USBKeyMounted = true
|
||||
} else {
|
||||
if (driveExists != null) {
|
||||
var FDDevNode = driveExists()
|
||||
var mountAttempts = 0
|
||||
console.debug("Mount attempts: ", mountAttempts)
|
||||
try {
|
||||
mountDrive(FDDevNode, config.mountPoint)
|
||||
} catch (error) {
|
||||
mountAttempts++
|
||||
console.debug("Mount attempts: ", mountAttempts)
|
||||
if (mountAttempts >= config.maxFailedMounts) {
|
||||
console.error("Failed to mount the drive... Did it disconnect?")
|
||||
exit(1)
|
||||
}
|
||||
} // Otherwise the drive exists and we can move on
|
||||
}
|
||||
}
|
||||
//If RSYNC is on, check if the NAS is mounted and empty:
|
||||
if (config.rsync.enabled == true) {
|
||||
const nasPath = config.rsync.nasPath
|
||||
console.log(`Checking NAS at ${nasPath}:`)
|
||||
try {
|
||||
const files = readdirSync(nasPath)
|
||||
if (files.length === 0) {
|
||||
console.warn("NAS is empty!")
|
||||
} else {
|
||||
console.log(`Found ${files.length} items in NAS`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error checking NAS: ${error.message}`)
|
||||
}
|
||||
}
|
||||
// Now it's Loadin time
|
||||
// The best part about index.js was when it said "it's loadin time" and loaded all over the place
|
||||
var copypartyStarted = false
|
||||
var OpenNotebookstarted = false
|
||||
var rcloneStarted = false
|
||||
var rcloneRuns = 0
|
||||
var rSYNcStarted = false
|
||||
var rSYNcRuns = 0
|
||||
function loadintime() {
|
||||
//WELCOME TO if HELL!!!!
|
||||
if (config.copyparty.enabled == true) {
|
||||
console.debug("Copyparty enabled, starting")
|
||||
startCopyparty(config)
|
||||
}
|
||||
if (config.rclone.enabled == true) {
|
||||
// Go ahead and run both once
|
||||
rcloneRuns++
|
||||
console.debug("Starting first run for Rclone...")
|
||||
try {
|
||||
await runRclone(config)
|
||||
var rcloneStarted = true
|
||||
} catch (error) {
|
||||
console.warn("Rclone went up in flames: ", error.message)
|
||||
var rcloneStarted = false
|
||||
}
|
||||
}
|
||||
if (config.rsync.enabled == true) {
|
||||
rSYNcRuns++
|
||||
console.debug("Starting first run for Rsync...")
|
||||
try {
|
||||
await runRsync(config)
|
||||
var rSYNcStarted = true
|
||||
} catch (error) {
|
||||
console.warn("Rsync went up in flames: ", error.message)
|
||||
var rSYNcStarted = false
|
||||
}
|
||||
}
|
||||
if (config.openNotebook.enabled == true) {
|
||||
//do whatever is needed here
|
||||
}
|
||||
console.debug("loadin time complete")
|
||||
}
|
||||
//TODO: Actually do something? idiot
|
||||
Reference in New Issue
Block a user