Add deadswitch nim script
This commit is contained in:
parent
3a97d5a6c1
commit
6a3d62f30b
|
@ -0,0 +1,65 @@
|
||||||
|
import std/[times, os]
|
||||||
|
import strutils
|
||||||
|
|
||||||
|
# ./deadswitch <file> <yyyy-MM-dd> <HH:mm> <path>
|
||||||
|
|
||||||
|
var DATE = ""
|
||||||
|
var TIME = ""
|
||||||
|
var FILE = ""
|
||||||
|
var PATH = ""
|
||||||
|
|
||||||
|
proc read_args() =
|
||||||
|
try:
|
||||||
|
DATE = paramStr(2)
|
||||||
|
TIME = paramStr(3)
|
||||||
|
FILE = paramStr(1)
|
||||||
|
PATH = paramStr(4)
|
||||||
|
except:
|
||||||
|
echo "Please provide commandline arguments in the format:"
|
||||||
|
echo "<file> <yyyy-MM-dd> <HH:mm> <path>"
|
||||||
|
quit(QuitFailure)
|
||||||
|
|
||||||
|
type PayloadType = enum Plaintext, Encrypted
|
||||||
|
type Payload = tuple
|
||||||
|
filename: string
|
||||||
|
contents: string
|
||||||
|
|
||||||
|
proc release_payload(p_type: PayloadType, payload: Payload) =
|
||||||
|
echo "Releasing payload..."
|
||||||
|
sleep(1000)
|
||||||
|
if p_type == PayloadType.Plaintext:
|
||||||
|
echo payload.filename
|
||||||
|
echo payload.contents
|
||||||
|
else:
|
||||||
|
echo payload.filename
|
||||||
|
echo "<Encrypted file>"
|
||||||
|
|
||||||
|
# copy the file contents
|
||||||
|
writeFile(PATH & payload.filename, payload.contents)
|
||||||
|
|
||||||
|
while true:
|
||||||
|
read_args()
|
||||||
|
|
||||||
|
writeFile(PATH & FILE, DATE) # temp file
|
||||||
|
let now = now() # get current localtime
|
||||||
|
let now_date = now.format("yyyy-MM-dd") # extract the date
|
||||||
|
let now_time = now.format("HH:mm") # extract the time
|
||||||
|
|
||||||
|
let file = readFile(FILE) # read in the contents of the payload file
|
||||||
|
let format = FILE.split('.') # get the format of the file
|
||||||
|
|
||||||
|
# check the file type based on it's format
|
||||||
|
var p_type = PayloadType.Plaintext
|
||||||
|
case format[high(format)]:
|
||||||
|
of "age", "pgp", "gpg":
|
||||||
|
p_type = PayloadType.Encrypted
|
||||||
|
else:
|
||||||
|
p_type = PayloadType.Plaintext
|
||||||
|
|
||||||
|
if now_date == DATE: #and now_time == TIME: # check if both date & time are the same
|
||||||
|
let payload: Payload = (filename: FILE, contents: file) # create a new payload object
|
||||||
|
release_payload(p_type, payload) # release it!
|
||||||
|
break
|
||||||
|
|
||||||
|
echo "Not now :c"
|
||||||
|
sleep(10000) # wait 10 seconds (10000 milliseconds)
|
Reference in New Issue