diff --git a/README.md b/README.md new file mode 100644 index 0000000..3bdf506 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +TODO diff --git a/checkin.sh b/checkin.sh new file mode 100755 index 0000000..1f6a1a4 --- /dev/null +++ b/checkin.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Save the current timestamp to your checkin file +date +%s > ./checkin_file.txt +echo "Checked in" diff --git a/checkin_file.txt b/checkin_file.txt new file mode 100644 index 0000000..24155af --- /dev/null +++ b/checkin_file.txt @@ -0,0 +1 @@ +1696179353 diff --git a/checking.py b/checking.py new file mode 100644 index 0000000..a1f68ab --- /dev/null +++ b/checking.py @@ -0,0 +1,113 @@ +import time +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders + +# Necessary files. You should create these. +checkin_file = "./checkin_file.txt" # replace with your checkin file path +counter_file = "./counter_file.txt" # this is needed to stop spamming mails to the loved ones +count_sent_mail = 7 + +DAYS_REMINDER = 25 # Modify these as per your need +DAYS_DEADMAN = 30 # Modify these as per your need +SECONDS_IN_A_DAY = 86400 # No need to modify this + +# Replace these with your SMTP settings and email +smtp_host = 'your_smpt_server' +smtp_port = 587 +smtp_user = 'username' +smtp_password = 'password' + +# Reminder message +from_email = 'coming_from' +to_email = 'going_to' + +#Dead man message +family_members = ['mail@example.com'] # You can specify multiple email ids separated by commas +message = "I'm dead" +files_to_attach = ['file.gpg'] # specify your files +dead_man_subject = "I Am Gone" + +def send_email(subject, message): + # Setup smtp + s = smtplib.SMTP(host=smtp_host, port=smtp_port) + s.starttls() + s.login(smtp_user, smtp_password) + + # Create message + msg = MIMEMultipart() + msg['From'] = from_email + msg['To'] = to_email + msg['Subject'] = subject + + # Add in the message body + msg.attach(MIMEText(message, 'plain')) + + # Send the email + s.send_message(msg) + del msg + + s.quit() + + +def execute_deadman_switch(): + # check if counter file exists + try: + with open(counter_file, "r") as file: + counter = int(file.read()) + except FileNotFoundError: + counter = 0 + + if counter < count_sent_mail: + s = smtplib.SMTP(host=smtp_host, port=smtp_port) + s.starttls() + s.login(smtp_user, smtp_password) + + msg = MIMEMultipart() + + msg['From'] = from_email + msg['To'] = ', '.join(family_members) + msg['Subject'] = dead_man_subject + + msg.attach(MIMEText(message, 'plain')) + + # Attach multiple files + for file in files_to_attach: + with open(file, 'rb') as file_in: + part = MIMEBase('application', 'octet-stream') + part.set_payload(file_in.read()) + + encoders.encode_base64(part) + part.add_header('Content-Disposition', f"attachment; filename= {file}") + msg.attach(part) + + # Send the email + s.send_message(msg) + del msg + + s.quit() + + # increment counter and write to file + with open(counter_file, "w") as file: + file.write(str(counter + 1)) + +def check_deadman(): + with open(checkin_file, "r") as file: + last_checkin_time = float(file.read().strip()) + + time_difference = time.time() - last_checkin_time + + if time_difference > DAYS_REMINDER * SECONDS_IN_A_DAY: + + if time_difference > DAYS_DEADMAN * SECONDS_IN_A_DAY: + send_email("Dead Man's Switch Activated", "You forgot to check-in") + execute_deadman_switch() + + else: + send_email("REMINDER", "Please check-in") + + +if __name__ == '__main__': + check_deadman() diff --git a/counter_file.txt b/counter_file.txt new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/counter_file.txt @@ -0,0 +1 @@ +2 \ No newline at end of file