import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;

public class Echoserver {
    public static void main(String[] args) {
        int port = 1234;
        String password = System.getenv("KEY_PASSWORD");

        try {
            // KeyStore laden
            KeyStore keyStore = KeyStore.getInstance("PKCS12"); // PKCS12 ist ein gängiges Format für KeyStores
            keyStore.load(new FileInputStream("server-keystore.jks"), password.toCharArray());

            // KeyManagerFactory initialisieren
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
            keyManagerFactory.init(keyStore, password.toCharArray());

            // SSLContext initialisieren
            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(keyManagerFactory.getKeyManagers(), null, null);

            SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
            SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(port);

            System.out.println("EchoServer läuft...");

            try (SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
                 DataInputStream input = new DataInputStream(sslSocket.getInputStream());
                 DataOutputStream output = new DataOutputStream(sslSocket.getOutputStream())) {

                System.out.println("Client verbunden");

                String message;
                while ((message = input.readUTF()) != null) {
                    System.out.println("Empfangen: " + message);
                    String response = message.toUpperCase();
                    output.writeUTF(response);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Server wird beendet");
    }
}