import std/[times, os] import strutils # ./deadswitch 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 " " 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 "" # 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)