Hallo,
bin gerade dabei in Linux bestimmte Konfigurationsdateien zu schreiben. Und zwar für einen Verbindungsaufbau über VPN.
Eine konf. datei sieht in etwa so aus:
Verbindung 1:
# basic configuration
config setup
plutostart=no
conn %default
ikelifetime=60m
keyexchange=ikev2
# Sample VPN connections
Bis hierhin bleiben die Zeichen immer gleich
----------------------------------------------------
conn host2
left=192.168.56.1
leftcert=Host3-cert.pem
right=192.168.56.102
rightcert=Host2-cert.pem
auto=start
usw.
danach ändert sich jeweils der Verbindungsname (hostx) und dann auch noch die IP-Adressen right, diese könnte man als Schlüsselpaar bezeichnen zu jedem Hostx gehört ein right dazu. Mein Problem sieht so aus das jede Datei mit jeder Kommunizieren muss. Das heißt Verbindung 2 muss so aussehen:
Verbindung2
# basic configuration
config setup
plutostart=no
conn %default
ikelifetime=60m
keyexchange=ikev2
# Sample VPN connections
Bis hierhin bleiben die Zeichen immer gleich
----------------------------------------------------
conn host1
left=192.168.56.1
leftcert=Host3-cert.pem
right=192.168.56.101
rightcert=Host1-cert.pem
auto=start
usw.
Es sollen mehrere Verbindungen erstellt werden können, d.h. für jede Verbindung eine Datei und in dieser auch die entfernten Partnerverbindungen.
Der Name hostx und die IP-Adresse right werden direkt von dem Programm eingelesen und müssen jeweils richtig auf die zugehörigen Konf.Dateien verteilt werden.
Habe bisher geschafft die einzelnen Dateien zu erstellen mit den jeweiligen Bezeichnungen z.B. ipsec_hostx.conf usw und die dazugehörigen oberen Parameter. Komme aber nicht weiter bei der Verteilung der zugehörigen Connections. Wie könnte man das am besten Lösen?
Sammlungen also HashMap ... oder mit eine Datenbank.
Was wäre die einfachste Lösung?
hier mein Code:
Danke im voraus!!
bin gerade dabei in Linux bestimmte Konfigurationsdateien zu schreiben. Und zwar für einen Verbindungsaufbau über VPN.
Eine konf. datei sieht in etwa so aus:
Verbindung 1:
# basic configuration
config setup
plutostart=no
conn %default
ikelifetime=60m
keyexchange=ikev2
# Sample VPN connections
Bis hierhin bleiben die Zeichen immer gleich
----------------------------------------------------
conn host2
left=192.168.56.1
leftcert=Host3-cert.pem
right=192.168.56.102
rightcert=Host2-cert.pem
auto=start
usw.
danach ändert sich jeweils der Verbindungsname (hostx) und dann auch noch die IP-Adressen right, diese könnte man als Schlüsselpaar bezeichnen zu jedem Hostx gehört ein right dazu. Mein Problem sieht so aus das jede Datei mit jeder Kommunizieren muss. Das heißt Verbindung 2 muss so aussehen:
Verbindung2
# basic configuration
config setup
plutostart=no
conn %default
ikelifetime=60m
keyexchange=ikev2
# Sample VPN connections
Bis hierhin bleiben die Zeichen immer gleich
----------------------------------------------------
conn host1
left=192.168.56.1
leftcert=Host3-cert.pem
right=192.168.56.101
rightcert=Host1-cert.pem
auto=start
usw.
Es sollen mehrere Verbindungen erstellt werden können, d.h. für jede Verbindung eine Datei und in dieser auch die entfernten Partnerverbindungen.
Der Name hostx und die IP-Adresse right werden direkt von dem Programm eingelesen und müssen jeweils richtig auf die zugehörigen Konf.Dateien verteilt werden.
Habe bisher geschafft die einzelnen Dateien zu erstellen mit den jeweiligen Bezeichnungen z.B. ipsec_hostx.conf usw und die dazugehörigen oberen Parameter. Komme aber nicht weiter bei der Verteilung der zugehörigen Connections. Wie könnte man das am besten Lösen?
Sammlungen also HashMap ... oder mit eine Datenbank.
Was wäre die einfachste Lösung?
hier mein Code:
Java:
import java.io.*;
import java.net.*;
import java.util.*;
/**
* Write a description of class Verarbeitung here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Verarbeitung
{
// instance variables - replace the example below with your own
private ArrayList<String> kopier;
private LinkedHashMap<String,String> speicherTabelle;
private File ausgabeDatei;
String nameAusgabeDatei= "ipsec";
/**
* Constructor for objects of class Verarbeitung
*/
public Verarbeitung()
{
kopier = new ArrayList<String>();
speicherTabelle = new LinkedHashMap<String,String>();
}
/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public void schreibeDatei(String connName)
{
FileWriter out;
try{
ausgabeDatei = new File(nameAusgabeDatei + "_" + connName + ".conf");
out = new FileWriter(ausgabeDatei,true);
out.write("# ipsec.conf - strongSwan IPsec configuration file\n\n");
out.write("config setup\n");
out.write(" plutostart=no\n\n");
out.write("config %default\n");
out.write(" ikelifetime=60m\n");
out.write(" keyexchange=ikev2\n\n");
out.close();
} catch (IOException e) {
System.out.println("Konnte Datei nicht erstellen");
}
}
public void eingabeDaten()
{
boolean wert = true;
String connName=null;
String ipAdresse=null;
while (wert) {
Scanner scanner = new Scanner (System.in);
System.out.println("Bitte Verbindungsnamen eintragen:");
connName = scanner.nextLine();
File ausgabeDatei;
schreibeDatei(connName);
System.out.println("Bitte IP-Adresse eintragen:");
ipAdresse = scanner.nextLine();
System.out.println("Möchten Sie ein weiteres Gerät hinzufügen?");
String antwort = scanner.nextLine();
speicherTabelle.put(connName,ipAdresse);
if (antwort.equalsIgnoreCase("ja"))
{
wert = true;
}
else
{
wert = false;
}
}
verarbeiteDaten();
}
public void verarbeiteDaten()
{
FileWriter out;
for (String elem : speicherTabelle.keySet())
{
try{
out = new FileWriter(nameAusgabeDatei + "_" + elem + ".conf",true);
out.write("# "+ elem + " Konfigurationsdatei\n\n");
out.close();
} catch (IOException ex) {
System.out.println(ex);
}
}
}
}
public String getLocalIp() throws UnknownHostException{
return InetAddress.getLocalHost().getHostAddress();
}
}
Danke im voraus!!
Zuletzt bearbeitet: