package com.softwaremill.common.conf.encoding.server; import com.google.common.base.Charsets; import com.softwaremill.common.conf.encoding.MasterPasswordStore; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; /** * @author Adam Warski (adam at warski dot org) */ public class MasterPasswordSetterServer implements Runnable { public static final int PORT = 39512; @Override public void run() { try { ServerSocket serverSocket = new ServerSocket(PORT); System.out.println("Bound server to port " + PORT); try { tryAcceptAndReadPassword(serverSocket); } finally { serverSocket.close(); } } catch (IOException e) { System.out.println("Exception in master password listener server"); e.printStackTrace(); } } private void tryAcceptAndReadPassword(ServerSocket serverSocket) throws IOException { Socket clientSocket = serverSocket.accept(); System.out.println("Client connected"); try { readPassword(clientSocket); } finally { clientSocket.close(); } } private void readPassword(Socket clientSocket) throws IOException { String password = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), Charsets.UTF_8)).readLine(); MasterPasswordStore.setMasterPassword(password); System.out.println("Master password read and set successfully"); } }