#!/usr/bin/env python3

# PROGRAM SMS2
# Version fuer das faible-Projekt
# Version: 20.5.2024
# Autor: Arno Pasternak
# Das Programm unterliegt der GPL, Version 3

# ==========================================

import os

class SatzKlasse:
    def __init__(self):
        self.satz = "Dies ist ein neuer Satz"
#        print self.satz

    def einlesen(self):
        print ("Bitte Satz eingeben:   ")
        self.satz = input()
        print (self.satz)

    def ausgeben(self):
        print (self.satz)

    def verschluesseln(self, codewort):
        buchstabe = ""
        codebuchstabe = ""
        asciizahl = 0
        codeasciizahl = 0
        codestelle = 0
        verschluesselter_satz = ""
        stelle = 0
        codestelle = 0
        while stelle < len(self.satz):
            buchstabe = self.satz[stelle]
            codebuchstabe = codewort[codestelle]
            asciizahl = ord(buchstabe)
            codeasciizahl = ord(codebuchstabe)
            asciizahl = asciizahl + codeasciizahl - 64
            buchstabe = chr(asciizahl)
            verschluesselter_satz = verschluesselter_satz + buchstabe
            stelle = stelle + 1
            codestelle = codestelle + 1
            if codestelle == len(codewort):
                codestelle = 0
        self.satz = verschluesselter_satz

    def entschluesseln(self, codewort):
        buchstabe = ""
        codebuchstabe = ""
        asciizahl = 0
        codeasciizahl = 0
        codestelle = 0
        entschluesselter_satz = ""
        stelle = 0
        while stelle < len(self.satz):
            buchstabe = self.satz[stelle]
            codebuchstabe = codewort[codestelle]
            asciizahl = ord(buchstabe)
            codeasciizahl = ord(codebuchstabe)
            asciizahl = asciizahl - codeasciizahl + 64
            buchstabe = chr(asciizahl)
            entschluesselter_satz = entschluesselter_satz + buchstabe
            stelle = stelle + 1
            codestelle = codestelle + 1
            if codestelle == len(codewort):
                codestelle = 0
        self.satz = entschluesselter_satz

    def senden(self, dateiname):
        datei = open(dateiname, "w")
        datei.write(self.satz)
        datei.close()

    def holen(self, dateiname):
        if not os.path.exists(dateiname):
            self.satz = "SMS nicht vorhanden"
        else:
            datei = open(dateiname)
            self.satz = datei.readline()
            datei.close()

# Ende Satzklasse


# =========================================================

# BEGINN des Programms

print("")
print("==============================================================")
print("         SMS Programm mit Vigenere-Verschlüsselung")
print("==============================================================")
print("==============================================================")
print("")
print("")


sms = None
codewort = None
teilnehmer = None
absender = None
empfaenger = None
wahl = None

codewort = chr(0)
print("")
print("Bitte gib Deinen Namen an:   ")
teilnehmer = input("")
sms = SatzKlasse()
wahl = ""

while wahl != "Q":
    print("")
    print("==============================================================")
    print("E: Einlesen         **        A: Ausgeben")
    print("S: Senden           **        H: Holen")
    print("V: Verschlüsseln    **        D: Entschlüsseln")
    print("Z: Zeigen alle SMS  **        C: Codewort eingeben")
    print("Q: QUIT")
    print("")
    print("Bitte wählen:   ")
    wahl = input("")
    wahl = wahl.upper()
    print("")
    print("--------------------------------------------------------------")

    if wahl == 'Z':
        import subprocess
        subprocess.call(["./verzeichnis.sh"])

    if wahl == 'C':
        print("Bitte Codewort eingeben:   ")
        codewort = input()

    if wahl == 'E':
        sms.einlesen()

    if wahl == 'A':
        sms.ausgeben()

    if wahl == 'S':
        print("Bitte Empfänger eingeben:   ")
        empfaenger = input()
        sms.senden("%s_%s.sms" % (empfaenger, teilnehmer))
        print("Die SMS wurde versandt.")

    if wahl == 'H':
        print("Bitte Absender eingeben:   ")
        absender = input()
        sms.holen("%s_%s.sms" % (teilnehmer, absender))
        print("Folgende SMS wurde erhalten:")
        sms.ausgeben()

    if wahl == 'V':
        sms.verschluesseln(codewort)
        print("Verschlüsselt:   ")
        sms.ausgeben()

    if wahl == 'D':
        sms.entschluesseln(codewort)
        print("Entschlüsselt:   ")
        sms.ausgeben()

# ENDE des Programmes
