test commit

This commit is contained in:
hendrik 2018-03-29 19:51:34 +02:00
parent d9e84b899d
commit a460c751cf
10 changed files with 523 additions and 356 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,72 +1,91 @@
package application; package application;
import java.sql.Connection;
import java.sql.DriverManager; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.ArrayList; import java.util.ArrayList;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
class DBController { class DBController
{
private Connection connection;
private Connection connection;
private String DB_PATH_Win = "C:/ProgramData/PWMaster/datenbank.db"; private String DB_PATH_Win = "C:/ProgramData/PWMaster/datenbank.db";
private String DB_PATH_Linux = System.getProperty("user.home") + "/bin/PWMaster/datenbank.db";
private String DB_PATH_Linux = System.getProperty("user.home")
+ "/bin/PWMaster/datenbank.db";
private Main main; private Main main;
//private Cryption crypo = new Cryption();
private String schluessel; //Für Ver-/Entschlüsselung // private Cryption crypo = new Cryption();
private String schluessel; // Für Ver-/Entschlüsselung
public void main() {
public void main()
{
try { try {
if(System.getProperty("os.name").equals("Linux")) { if (System.getProperty("os.name").equals("Linux")) {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux); connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
} else { } else {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win); connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Win);
} }
} catch (SQLException e) { } catch (SQLException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
DBController(Main main){
DBController(Main main)
{
this.main = main; this.main = main;
} }
public void verbindeDatenbank() { //Verbinde mit der Datenbank-Datei
try { public void verbindeDatenbank()
if (connection != null) { // Verbinde mit der Datenbank-Datei
return; try {
if(System.getProperty("os.name").equals("Linux")) { if (connection != null)
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Linux); return;
if (System.getProperty("os.name").equals("Linux")) {
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Linux);
} else { } else {
connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH_Win); connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH_Win);
} }
if (!connection.isClosed()) if (!connection.isClosed())
System.out.println(); System.out.println();
} catch (SQLException e) { } catch (SQLException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Runtime.getRuntime().addShutdownHook(new Thread() { Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() { public void run()
try { {
if (!connection.isClosed() && connection != null) { try {
connection.close(); if (!connection.isClosed() && connection != null) {
if (connection.isClosed()) connection.close();
System.out.println(); if (connection.isClosed())
} System.out.println();
} catch (SQLException e) { }
e.printStackTrace(); } catch (SQLException e) {
} e.printStackTrace();
} }
}); }
} });
public void fuellenDatenbank(int pID, String pDatum, String pKonto, String pNutzername, String pEmail, String pPasswort) { //Neuen Eintrag erstellen }
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO konten VALUES (?, ?, ?, ?, ?, ?);"); public void fuellenDatenbank(int pID, String pDatum, String pKonto,
ps.setInt(1, pID); //Primärschlässel String pNutzername, String pEmail, String pPasswort)
{ // Neuen Eintrag erstellen
try {
PreparedStatement ps = connection.prepareStatement(
"INSERT INTO konten VALUES (?, ?, ?, ?, ?, ?);");
ps.setInt(1, pID); // Primärschlässel
ps.setString(2, pDatum); ps.setString(2, pDatum);
ps.setString(3, pKonto); ps.setString(3, pKonto);
ps.setString(4, pNutzername); ps.setString(4, pNutzername);
@ -74,230 +93,277 @@ class DBController {
ps.setString(6, pPasswort); ps.setString(6, pPasswort);
ps.addBatch(); ps.addBatch();
connection.setAutoCommit(false); connection.setAutoCommit(false);
ps.executeBatch(); //SQL ausführen ps.executeBatch(); // SQL ausführen
connection.setAutoCommit(true); connection.setAutoCommit(true);
//connection.close(); // connection.close();
} catch (SQLException e) { } catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void erstelleDatenbank(){ //Erstelle Tabelle mit Reihen
try { public void erstelleDatenbank()
Statement stmt = connection.createStatement(); { // Erstelle Tabelle mit Reihen
stmt.executeUpdate("DROP TABLE IF EXISTS konten;"); try {
stmt.executeUpdate("CREATE TABLE konten (id, datum, konto, nutzername, email, passwort);"); Statement stmt = connection.createStatement();
} catch (SQLException e) { stmt.executeUpdate("DROP TABLE IF EXISTS konten;");
System.err.println("Couldn't handle DB-Query"); stmt.executeUpdate(
e.printStackTrace(); "CREATE TABLE konten (id, datum, konto, nutzername, email, passwort);");
} } catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
} }
public boolean existiertDatenbank(String pPfad){ //Prüft ob die Datenbank existiert
public boolean existiertDatenbank(String pPfad)
{ // Prüft ob die Datenbank existiert
File varTmpDir = new File(pPfad); File varTmpDir = new File(pPfad);
if(!varTmpDir.exists()){ if (!varTmpDir.exists()) {
return false; return false;
}else{ } else {
return true; return true;
} }
} }
private void ausgebenSyso(){ //Debugging Ausgabe der kompletten Datenbank
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
while (rs.next()) {
System.out.println("Datum = " + rs.getString("datum"));
System.out.println("Konto = " + rs.getString("konto"));
System.out.println("Nutzername = " + rs.getString("nutzername"));
System.out.println("E-Mail = " + rs.getString("email"));
System.out.println("Passwort = " + rs.getString("passwort"));
System.out.println(" ");
}
} catch (SQLException e) { private void ausgebenSyso()
System.err.println("Couldn't handle DB-Query"); { // Debugging Ausgabe der kompletten Datenbank
e.printStackTrace();
}
}
public String getDatum(int pID){ //Gibt das Datum zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, datum FROM konten WHERE id = "+pID+";" );
return rs.getString("datum");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getKonto(int pID){ //Gibt das Konto zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, konto FROM konten WHERE id = "+pID+";" );
return rs.getString("konto");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getNutzername(int pID){ //Gibt den Nutzernamen zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, nutzername FROM konten WHERE id = "+pID+";" );
return rs.getString("nutzername");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getEmail(int pID){ //Gibt die Email zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, email FROM konten WHERE id = "+pID+";" );
return rs.getString("email");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getPasswort(int pID){ //Gibt das Passwort zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, passwort FROM konten WHERE id = "+pID+";" );
return rs.getString("passwort");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public void setDatum(int pID, String pDatum){ //Setzt das Datum
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET datum = '"+pDatum+"'WHERE id ="+pID+";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setKonto(int pID, String pKonto){ //Setzt das Konto
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET konto = '"+pKonto+"'WHERE id ="+pID+";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setNutername(int pID, String pNutername){ //Setzt den Nutzername
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET nutzername = '"+pNutername+"'WHERE id ="+pID+";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setEmail(int pID, String pEmail){ //Setzt die Email
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET email = '"+pEmail+"'WHERE id ="+pID+";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setPasswort(int pID, String pPasswort){ //Setzt das Passwort
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET passwort = '"+pPasswort+"'WHERE id ="+pID+";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void loeschenEintrag(int pID){ //Löscht den Eintrag
int alteOrdnung = getNeueID(); //Speichert die ID des letzten Eintrags
try { try {
if(pID == getNeueID() -1){ //Falls letzter Eintrag gelöscht werden soll Statement stmt = connection.createStatement();
PreparedStatement ps = connection.prepareStatement("DELETE FROM konten WHERE id=?"); ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
while (rs.next()) {
System.out.println("Datum = " + rs.getString("datum"));
System.out.println("Konto = " + rs.getString("konto"));
System.out.println("Nutzername = " + rs.getString("nutzername"));
System.out.println("E-Mail = " + rs.getString("email"));
System.out.println("Passwort = " + rs.getString("passwort"));
System.out.println(" ");
}
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public String getDatum(int pID)
{ // Gibt das Datum zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT id, datum FROM konten WHERE id = " + pID + ";");
return rs.getString("datum");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getKonto(int pID)
{ // Gibt das Konto zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT id, konto FROM konten WHERE id = " + pID + ";");
return rs.getString("konto");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getNutzername(int pID)
{ // Gibt den Nutzernamen zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT id, nutzername FROM konten WHERE id = " + pID + ";");
return rs.getString("nutzername");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getEmail(int pID)
{ // Gibt die Email zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT id, email FROM konten WHERE id = " + pID + ";");
return rs.getString("email");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public String getPasswort(int pID)
{ // Gibt das Passwort zurück
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT id, passwort FROM konten WHERE id = " + pID + ";");
return rs.getString("passwort");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "Error 404";
}
}
public void setDatum(int pID, String pDatum)
{ // Setzt das Datum
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET datum = '" + pDatum
+ "'WHERE id =" + pID + ";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setKonto(int pID, String pKonto)
{ // Setzt das Konto
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET konto = '" + pKonto
+ "'WHERE id =" + pID + ";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setNutername(int pID, String pNutername)
{ // Setzt den Nutzername
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET nutzername = '" + pNutername
+ "'WHERE id =" + pID + ";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setEmail(int pID, String pEmail)
{ // Setzt die Email
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET email = '" + pEmail
+ "'WHERE id =" + pID + ";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void setPasswort(int pID, String pPasswort)
{ // Setzt das Passwort
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE konten SET passwort = '" + pPasswort
+ "'WHERE id =" + pID + ";");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
}
}
public void loeschenEintrag(int pID)
{ // Löscht den Eintrag
int alteOrdnung = getNeueID(); // Speichert die ID des letzten Eintrags
try {
if (pID == getNeueID() - 1) { // Falls letzter Eintrag gelöscht werden
// soll
PreparedStatement ps = connection
.prepareStatement("DELETE FROM konten WHERE id=?");
ps.setInt(1, pID); ps.setInt(1, pID);
ps.executeUpdate(); ps.executeUpdate();
}else{ // Wenn ein Eintrag in mitten der DB gelöscht wird, dann wird hochkopiert } else { // Wenn ein Eintrag in mitten der DB gelöscht wird, dann wird
while(!(pID+1 == alteOrdnung -1)){ // hochkopiert
while (!(pID + 1 == alteOrdnung - 1)) {
int pIDneu = pID + 1; int pIDneu = pID + 1;
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, datum, konto, nutzername, email, passwort FROM konten WHERE id = "+pIDneu+";" ); ResultSet rs = stmt.executeQuery(
"SELECT id, datum, konto, nutzername, email, passwort FROM konten WHERE id = "
+ pIDneu + ";");
String pDatum = rs.getString("datum"); String pDatum = rs.getString("datum");
String pKonto = rs.getString("konto"); String pKonto = rs.getString("konto");
String pNutzername = rs.getString("nutzername"); String pNutzername = rs.getString("nutzername");
String pEmail = rs.getString("email"); String pEmail = rs.getString("email");
String pPasswort = rs.getString("passwort"); String pPasswort = rs.getString("passwort");
stmt.executeUpdate("UPDATE konten SET datum = '"+pDatum+"', konto = '"+pKonto+"', nutzername = '"+pNutzername+"', email = '"+pEmail+"', passwort = '"+pPasswort+"'WHERE id ="+pID+";"); stmt.executeUpdate("UPDATE konten SET datum = '" + pDatum
+ "', konto = '" + pKonto + "', nutzername = '"
+ pNutzername + "', email = '" + pEmail + "', passwort = '"
+ pPasswort + "'WHERE id =" + pID + ";");
pID = pID + 1; pID = pID + 1;
} }
PreparedStatement ps = connection.prepareStatement("DELETE FROM konten WHERE id=?"); PreparedStatement ps = connection
ps.setInt(1, alteOrdnung -1); .prepareStatement("DELETE FROM konten WHERE id=?");
ps.setInt(1, alteOrdnung - 1);
ps.executeUpdate(); ps.executeUpdate();
} }
} catch (SQLException e) { } catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public int getNeueID(){ //Gibt die ID des nächsten Eintrags zurück public int getNeueID()
{ // Gibt die ID des nächsten Eintrags zurück
int neueID = 0; int neueID = 0;
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;"); ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
while (rs.next()) { while (rs.next()) {
neueID = rs.getInt("id") + 1; neueID = rs.getInt("id") + 1;
} }
rs.close(); rs.close();
} catch (SQLException e) { } catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
return neueID; return neueID;
} }
public ArrayList<tableData> ladeTabelle(){ //Gibt ein Objekt daten mit allen Einträgen der DB zurück public ArrayList<tableData> ladeTabelle()
{ // Gibt ein Objekt daten mit allen Einträgen der DB zurück
ArrayList<tableData> daten = new ArrayList<>(); ArrayList<tableData> daten = new ArrayList<>();
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM konten;"); ResultSet rs = stmt.executeQuery("SELECT * FROM konten;");
while (rs.next()) { while (rs.next()) {
try { try {
// Entschlüsselte Daten werden als Datenobjekt gespeichert // Entschlüsselte Daten werden als Datenobjekt gespeichert
//daten.add(new tableData(rs.getInt("id"), crypo.entschluesseln(rs.getString("datum"), schluessel), crypo.entschluesseln(rs.getString("konto"),schluessel))); // daten.add(new tableData(rs.getInt("id"),
// crypo.entschluesseln(rs.getString("datum"), schluessel),
// crypo.entschluesseln(rs.getString("konto"),schluessel)));
} catch (Exception e) { } catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
return daten; return daten;
} }
public void setSchluessel(String pSchluessel){ //Setzt den Schlüssel für die Ver-/Entschlüsslung public void setSchluessel(String pSchluessel)
{ // Setzt den Schlüssel für die Ver-/Entschlüsslung
schluessel = pSchluessel; schluessel = pSchluessel;
} }

View File

@ -1,11 +1,11 @@
package application; package application;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.Optional; import java.util.Optional;
import java.util.Random; import java.util.Random;
import com.j256.twofactorauth.TimeBasedOneTimePasswordUtil;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
@ -27,69 +27,86 @@ import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
public class Main extends Application { public class Main extends Application
{
private MainWindowController mwc; private MainWindowController mwc;
private DBController dbc = new DBController(this); private DBController dbc = new DBController(this);
private String schluesselNutzer; //Passwort des Nutzers
private String schluesselNutzer; // Passwort des Nutzers
private Stage primaryStage; private Stage primaryStage;
@Override @Override
public void start(Stage primaryStage) { public void start(Stage primaryStage)
{
this.primaryStage = primaryStage; this.primaryStage = primaryStage;
mainWindow(); mainWindow();
} }
private void mainWindow(){
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainWindow.fxml"));
AnchorPane pane = loader.load();
//primaryStage.setWidth(1536); private void mainWindow()
//primaryStage.setHeight(864); {
primaryStage.setTitle("jFxKasse"); //Title der Stage try {
FXMLLoader loader = new FXMLLoader(
getClass().getResource("MainWindow.fxml"));
AnchorPane pane = loader.load();
// Test
// primaryStage.setWidth(1536);
// primaryStage.setHeight(864);
primaryStage.setTitle("jFxKasse"); // Title der Stage
mwc = loader.getController(); mwc = loader.getController();
mwc.setMain(this, dbc); mwc.setMain(this, dbc);
firstStart(); //Prüft ob das Programm zuvor gestartet wurde firstStart(); // Prüft ob das Programm zuvor gestartet wurde
dbc.main(); //Startet die Datenbank dbc.main(); // Startet die Datenbank
mwc.initUI(); //Startet die UI mwc.initUI(); // Startet die UI
mwc.fuelleTablle(); //Ladt die Einträge in die Tabelle mwc.fuelleTablle(); // Ladt die Einträge in die Tabelle
Scene scene = new Scene(pane); Scene scene = new Scene(pane);
scene.getStylesheets().add(Main.class.getResource("application.css").toExternalForm()); scene.getStylesheets()
primaryStage.setScene(scene); .add(Main.class.getResource("application.css").toExternalForm());
primaryStage.show(); //zeigt die Stage an primaryStage.setScene(scene);
} catch(Exception e) { primaryStage.show(); // zeigt die Stage an
} catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static void main(String[] args) {
public static void main(String[] args)
{
launch(args); launch(args);
} }
private void firstStart() throws Exception{
if(mwc.loadSettings()){ //Wenn XML gefunden
dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei
}else{ //Wenn keine XML gefunden --> erster Start private void firstStart() throws Exception
{
if (mwc.loadSettings()) { // Wenn XML gefunden
dbc.verbindeDatenbank(); // Verbindet mit der Datenbank-Datei
} else { // Wenn keine XML gefunden --> erster Start
System.out.println("keine XML gefunden!"); System.out.println("keine XML gefunden!");
if(System.getProperty("os.name").equals("Linux")) { if (System.getProperty("os.name").equals("Linux")) {
File dir = new File(System.getProperty("user.home") + "/bin/PWMaster"); //Erstellt den Unterordner File dir = new File(
dir.mkdir(); //Erstellt den Unterordner System.getProperty("user.home") + "/bin/PWMaster"); // Erstellt
// den
// Unterordner
dir.mkdir(); // Erstellt den Unterordner
} else { } else {
File dir = new File("C:/ProgramData/PWMaster/"); //Erstellt den Unterordner File dir = new File("C:/ProgramData/PWMaster/"); // Erstellt den
dir.mkdir(); //Erstellt den Unterordner // Unterordner
dir.mkdir(); // Erstellt den Unterordner
} }
mwc.saveSettings(schluesselNutzer, "dd"); // speichert das Passwort und den Individueller Schlüssel für die API in der XML mwc.saveSettings(schluesselNutzer, "dd"); // speichert das Passwort und
dbc.verbindeDatenbank(); //Verbindet mit der Datenbank-Datei // den Individueller
// Schlüssel für die API in
// der XML
dbc.verbindeDatenbank(); // Verbindet mit der Datenbank-Datei
dbc.erstelleDatenbank(); // Neue Datenbank-Datei wird erstellt dbc.erstelleDatenbank(); // Neue Datenbank-Datei wird erstellt
System.exit(0); //Programm wird beendet System.exit(0); // Programm wird beendet
} }
} }
} }

View File

@ -38,40 +38,62 @@ import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.util.Pair; import javafx.util.Pair;
public class MainWindowController { public class MainWindowController
{
private static final String String = null; private static final String String = null;
Toolkit toolkit = Toolkit.getDefaultToolkit(); Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard(); Clipboard clipboard = toolkit.getSystemClipboard();
@FXML @FXML
private AnchorPane mainAnchorpane; private AnchorPane mainAnchorpane;
@FXML @FXML
private TreeTableView<tableData> mainTreeTable; private TreeTableView<tableData> mainTreeTable;
@FXML @FXML
private TreeTableColumn<tableData, String> datumSpalte; private TreeTableColumn<tableData, String> datumSpalte;
@FXML @FXML
private TreeTableColumn<tableData, String> kontoSpalte; private TreeTableColumn<tableData, String> kontoSpalte;
@FXML @FXML
private TreeTableColumn<tableData, Integer> idSpalte = new TreeTableColumn<>(""); private TreeTableColumn<tableData, Integer> idSpalte = new TreeTableColumn<>(
"");
@FXML @FXML
private Button ueberbtn; private Button ueberbtn;
private Main main; private Main main;
private DBController dbc; private DBController dbc;
private String filepathXMLWin = "C:/ProgramData/PWMaster/config.xml"; //Pfad wo die XML liegt
private String filepathXMLLinux = System.getProperty("user.home") + "/bin/PWMaster/config.xml"; //Pfad wo die XML liegt private String filepathXMLWin = "C:/ProgramData/PWMaster/config.xml"; // Pfad
// wo
// die
// XML
// liegt
private String filepathXMLLinux = System.getProperty("user.home")
+ "/bin/PWMaster/config.xml"; // Pfad wo die XML liegt
private boolean showPasswort = false; private boolean showPasswort = false;
private String schluessel; private String schluessel;
private String base32Secret; private String base32Secret;
private int id; private int id;
@FXML @FXML
TreeItem<tableData> root = new TreeItem<>(new tableData(0, "0", "0")); TreeItem<tableData> root = new TreeItem<>(new tableData(0, "0", "0"));
Properties props = new Properties();
Properties props = new Properties();
@FXML @FXML
public void ueberbtnAction(ActionEvent event) { //Öffnet den Über-Dialog public void ueberbtnAction(ActionEvent event)
{ // Öffnet den Über-Dialog
// Erstellt einen Dialog // Erstellt einen Dialog
Dialog<Pair<String, String>> dialog = new Dialog<>(); Dialog<Pair<String, String>> dialog = new Dialog<>();
@ -87,97 +109,129 @@ public class MainWindowController {
grid.setVgap(10); grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10)); grid.setPadding(new Insets(20, 150, 10, 10));
grid.add(new Label("Datenbank: sqlite.org - Public Domain" grid.add(new Label("Datenbank: sqlite.org - Public Domain"
+"\nBASE64Decoder: java2s.com/Code/Jar/s/DownloadsunmiscBASE64Decoderjar.htm - GPLv2" + "\nBASE64Decoder: java2s.com/Code/Jar/s/DownloadsunmiscBASE64Decoderjar.htm - GPLv2"
+"\nCrypo: blog.axxg.de/ - Copyright 2013 AxxG Alexander Grösel" + "\nCrypo: blog.axxg.de/ - Copyright 2013 AxxG Alexander Grösel"
+" \nzwei Faktoren: github.com/j256/two-factor-auth - ISC License" + " \nzwei Faktoren: github.com/j256/two-factor-auth - ISC License"
+" \nUI Design: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0" + " \nUI Design: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0"
+" \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n" + " \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n"
+" \nMaintainer: hendrik.schutter@icloud.com" + " \nMaintainer: hendrik.schutter@icloud.com"
+" \n(c) 2017 Hendrik Schutter"), 0, 0); + " \n(c) 2017 Hendrik Schutter"), 0, 0);
dialog.getDialogPane().setContent(grid); //Setzt die GridPane auf die DialogPane dialog.getDialogPane().setContent(grid); // Setzt die GridPane auf die
// DialogPane
dialog.showAndWait(); dialog.showAndWait();
} }
@FXML @FXML
public void fuelleTablle(){ //Lädt die Datenbank in die Tabelle public void fuelleTablle()
{ // Lädt die Datenbank in die Tabelle
dbc.setSchluessel(schluessel); dbc.setSchluessel(schluessel);
for(int i = 0; i < dbc.ladeTabelle().size(); i++){ for (int i = 0; i < dbc.ladeTabelle().size(); i++) {
tableData helpTableData = new tableData(dbc.ladeTabelle().get(i).getID(), tableData helpTableData = new tableData(
dbc.ladeTabelle().get(i).getDatum(), dbc.ladeTabelle().get(i).getKonto()); dbc.ladeTabelle().get(i).getID(),
dbc.ladeTabelle().get(i).getDatum(),
dbc.ladeTabelle().get(i).getKonto());
root.getChildren().add(new TreeItem<tableData>(helpTableData)); root.getChildren().add(new TreeItem<tableData>(helpTableData));
} }
} }
public void initUI(){
public void initUI()
{
mainTreeTable.setRoot(root); mainTreeTable.setRoot(root);
mainTreeTable.setShowRoot(false); mainTreeTable.setShowRoot(false);
mainTreeTable.setEditable(false); mainTreeTable.setEditable(false);
//Setzt die Textfelder // Setzt die Textfelder
idSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().idProperty().asObject()); idSpalte.setCellValueFactory(
datumSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().datumProperty()); cellData -> cellData.getValue().getValue().idProperty().asObject());
kontoSpalte.setCellValueFactory(cellData -> cellData.getValue().getValue().kontoProperty()); datumSpalte.setCellValueFactory(
cellData -> cellData.getValue().getValue().datumProperty());
kontoSpalte.setCellValueFactory(
cellData -> cellData.getValue().getValue().kontoProperty());
mainTreeTable.getColumns().add(idSpalte); mainTreeTable.getColumns().add(idSpalte);
mainTreeTable.getColumns().get(2).setVisible(false); mainTreeTable.getColumns().get(2).setVisible(false);
mainTreeTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() { mainTreeTable.getSelectionModel().selectedItemProperty()
@Override .addListener(new ChangeListener<Object>() {
public void changed(ObservableValue<?> observable, Object oldVal, Object newVal){ @Override
// last = selected; //for auto-play public void changed(ObservableValue<?> observable, Object oldVal,
int selected = mainTreeTable.getSelectionModel().getSelectedIndex(); //get selected item Object newVal)
id = idSpalte.getCellData(selected); //Ausgewählte Spalte {
showPasswort =false; // last = selected; //for auto-play
int selected = mainTreeTable.getSelectionModel()
try { //Setzt den entschlüsselten Inhalt in die Textfelder .getSelectedIndex(); // get selected item
//tf01.setText("Verschlüsseltes Passwort von " + crypo.entschluesseln(dbc.getKonto(id), schluessel) + " : " + dbc.getPasswort(id)); id = idSpalte.getCellData(selected); // Ausgewählte Spalte
//tfNutzername.setText(crypo.entschluesseln(dbc.getNutzername(id), schluessel)); showPasswort = false;
//tfEmail.setText(crypo.entschluesseln(dbc.getEmail(id), schluessel));
//tfPasswort.setText(crypo.entschluesseln(dbc.getPasswort(id), schluessel)); try { // Setzt den entschlüsselten Inhalt in die Textfelder
} catch (Exception e) { // tf01.setText("Verschlüsseltes Passwort von " +
// TODO Auto-generated catch block // crypo.entschluesseln(dbc.getKonto(id), schluessel) + " :
e.printStackTrace(); // " + dbc.getPasswort(id));
} // tfNutzername.setText(crypo.entschluesseln(dbc.getNutzername(id),
} // schluessel));
}); // tfEmail.setText(crypo.entschluesseln(dbc.getEmail(id),
// schluessel));
// tfPasswort.setText(crypo.entschluesseln(dbc.getPasswort(id),
// schluessel));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} }
public void setMain(Main main, DBController dbc){
public void setMain(Main main, DBController dbc)
{
this.main = main; this.main = main;
this.dbc = dbc; this.dbc = dbc;
} }
public String getSystemDatum(){ //Gibt das System-Datum zurück
public String getSystemDatum()
{ // Gibt das System-Datum zurück
java.util.Date now = new java.util.Date(); java.util.Date now = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd.MM.yyyy"); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
"dd.MM.yyyy");
String heutigesDatum = sdf.format(now); String heutigesDatum = sdf.format(now);
return heutigesDatum; return heutigesDatum;
} }
public void saveSettings(String schluessel, String base32Secret) throws Exception{
OutputStream outputStream; //new output-stream public void saveSettings(String schluessel, String base32Secret)
throws Exception
{
OutputStream outputStream; // new output-stream
try { try {
//props.setProperty("key", crypo.verschluesseln(schluessel, crypo.getProgrammSchluessel())); //writes path into property // props.setProperty("key", crypo.verschluesseln(schluessel,
//props.setProperty("TOTPkey", crypo.verschluesseln(base32Secret, crypo.getProgrammSchluessel())); //writes path into property // crypo.getProgrammSchluessel())); //writes path into property
if(System.getProperty("os.name").equals("Linux")) { // props.setProperty("TOTPkey", crypo.verschluesseln(base32Secret,
// crypo.getProgrammSchluessel())); //writes path into property
if (System.getProperty("os.name").equals("Linux")) {
outputStream = new FileOutputStream(filepathXMLLinux); outputStream = new FileOutputStream(filepathXMLLinux);
} else { } else {
outputStream = new FileOutputStream(filepathXMLWin); outputStream = new FileOutputStream(filepathXMLWin);
} }
props.storeToXML(outputStream, "PWMaster settings"); //writes new .xml props.storeToXML(outputStream, "PWMaster settings"); // writes new .xml
outputStream.close(); outputStream.close();
} catch (IOException e) { } catch (IOException e) {
} }
} }
public boolean loadSettings() throws Exception{ //Ladt die Daten aus der XML
public boolean loadSettings() throws Exception
{ // Ladt die Daten aus der XML
InputStream inputStream; InputStream inputStream;
try { try {
if(System.getProperty("os.name").equals("Linux")) { if (System.getProperty("os.name").equals("Linux")) {
inputStream = new FileInputStream(filepathXMLLinux); inputStream = new FileInputStream(filepathXMLLinux);
} else { } else {
inputStream = new FileInputStream(filepathXMLWin); inputStream = new FileInputStream(filepathXMLWin);
} }
props.loadFromXML(inputStream); props.loadFromXML(inputStream);
//schluessel = crypo.entschluesseln(props.getProperty("key"), crypo.getProgrammSchluessel()); //liest schluessel von property // schluessel = crypo.entschluesseln(props.getProperty("key"),
//base32Secret = crypo.entschluesseln(props.getProperty("TOTPkey"), crypo.getProgrammSchluessel()); //liest schluessel von property // crypo.getProgrammSchluessel()); //liest schluessel von property
// base32Secret = crypo.entschluesseln(props.getProperty("TOTPkey"),
// crypo.getProgrammSchluessel()); //liest schluessel von property
inputStream.close(); inputStream.close();
return true; return true;
} catch (IOException e) { } catch (IOException e) {
@ -185,17 +239,25 @@ public class MainWindowController {
return false; return false;
} }
} }
public String getSchluesselXML(){ //Gibt den Schlüssel zurück für die Main
public String getSchluesselXML()
{ // Gibt den Schlüssel zurück für die Main
return schluessel; return schluessel;
} }
public void starteDB(){ //Startet die Datenbank
public void starteDB()
{ // Startet die Datenbank
dbc.verbindeDatenbank(); dbc.verbindeDatenbank();
} }
public void erzeugeDB(){ //Erzeuge die Datenbank
public void erzeugeDB()
{ // Erzeuge die Datenbank
dbc.erstelleDatenbank(); dbc.erstelleDatenbank();
dbc.verbindeDatenbank(); dbc.verbindeDatenbank();
} }
public String getbase32Secret(){ //Gibt den base32Secret zurück für die Main
public String getbase32Secret()
{ // Gibt den base32Secret zurück für die Main
return base32Secret; return base32Secret;
} }
} }

View File

@ -5,42 +5,64 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
public class tableData { //Datenobjekt mit der ID, Datum und Konto public class tableData
{ // Datenobjekt mit der ID, Datum und Konto
private final IntegerProperty id = new SimpleIntegerProperty(); private final IntegerProperty id = new SimpleIntegerProperty();
private final StringProperty datum = new SimpleStringProperty(); private final StringProperty datum = new SimpleStringProperty();
private final StringProperty konto = new SimpleStringProperty(); private final StringProperty konto = new SimpleStringProperty();
public tableData(final int id, final String datum, final String konto){ public tableData(final int id, final String datum, final String konto)
{
this.id.set(id); this.id.set(id);
this.datum.set(datum); this.datum.set(datum);
this.konto.set(konto); this.konto.set(konto);
} }
public IntegerProperty idProperty(){
public IntegerProperty idProperty()
{
return id; return id;
} }
public StringProperty datumProperty(){
public StringProperty datumProperty()
{
return datum; return datum;
} }
public StringProperty kontoProperty(){
public StringProperty kontoProperty()
{
return konto; return konto;
} }
public int getID(){
public int getID()
{
return idProperty().get(); return idProperty().get();
} }
public String getDatum(){
public String getDatum()
{
return datumProperty().get(); return datumProperty().get();
} }
public String getKonto(){
public String getKonto()
{
return kontoProperty().get(); return kontoProperty().get();
} }
public final void setID(int id){
public final void setID(int id)
{
idProperty().set(id); idProperty().set(id);
} }
public final void setdatum(String datum){
public final void setdatum(String datum)
{
datumProperty().set(datum); datumProperty().set(datum);
} }
public final void setkonto(String konto){
public final void setkonto(String konto)
{
kontoProperty().set(konto); kontoProperty().set(konto);
} }
} }