// Path: src/core/iface/INetworkData.java
// public interface INetworkData extends IData {
// 
// 	public String[] getServerLabels();
// 
// 	public String[] getDeviceLabels();
// 
// 	public String[] getDeviceMacs();
// 
// 	public String[] getServerProfiles(String server);
// 
// 	public String getServerData(String server, String label);
// 
// 	public String getServerUser(String server);
// 
// 	public String getServerIP(String server);
// 
// 	public String getServerPort(String server);
// 	
// 	public String getServerUpdate(String server);
// }
// 
// Path: src/core/iface/IProfile.java
// public interface IProfile {
// 
// 	public String getLabel();
// 
// 	public boolean isSingleton();
// 
// 	public Vector<IProfile> getUnits(String server, INetworkData data);
// 
// }
// 
// Path: src/core/profile/AProfile.java
// public abstract class AProfile implements IProfile {
// 
// 	protected String name;
// 
// 	protected AProfile(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getLabel() {
// 		return name;
// 	}
// 
// 	public boolean isSingleton() {
// 		return false;
// 	}
// 
// 	public static String getProperty(String prop, String prof, String server, INetworkData data) {
// 		try {
// 			String val = data.getServerData(server, prof);
// 			JSONParser parser = new JSONParser();
// 			JSONObject config = (JSONObject) parser.parse(val);
// 			return config.get(prop).toString();
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// 	
// 	public static String getProperties(String prop, String prof, String server, INetworkData data) {
// 		try {
// 			String val = data.getServerData(server, prof);
// 			JSONParser parser = new JSONParser();
// 			JSONObject config = (JSONObject) parser.parse(val);
// 			JSONArray props = (JSONArray) config.get(prop);
// 			String propstring = "";
// 			for (int i = 0; i < props.size(); i++) {
// 				propstring += props.get(i) + "\n";
// 			}
// 			return propstring;
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// 
// }
// 
// Path: src/core/unit/SimpleUnit.java
// public class SimpleUnit extends ComplexUnit {
// 
// 	protected String test;
// 	protected String result;
// 
// 	protected SimpleUnit() {
// 	}
// 
// 	public SimpleUnit(String name, String precondition, String config, String audit, String test, String result) {
// 		super(name, precondition, config, audit);
// 		this.test = test;
// 		this.result = result;
// 	}
// 
// 	protected String getAudit() {
// 		String auditString = "out=$(" + super.getAudit() + ");\n";
// 		auditString += "test=\"" + getTest() + "\";\n";
// 		
// 		if (getResult().equals("fail"))
// 			auditString += "if [ \"$out\" = \"$test\" ] ; then\n";
// 		else
// 			auditString += "if [ \"$out\" != \"$test\" ] ; then\n";
// 		auditString += "\t" + getLabel() + "=0;\n";
// 		auditString += "else\n";
// 		auditString += "\t" + getLabel() + "=1;\n";
// 		auditString += "fi ;\n";
// 		return auditString;
// 	}
// 
// 	protected String getTest() {
// 		return this.test;
// 	}
// 
// 	protected String getResult() {
// 		return this.result;
// 	}
// 
// }


import java.util.Hashtable;
import java.util.Vector;
import core.iface.INetworkData;
import core.iface.IProfile;
import core.profile.AProfile;
import core.unit.SimpleUnit;
	public SimpleUnit setPrimaryIface(String name, String iface, String rule) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet static\n";
		net += "pre-up iptables-restore < /etc/iptables/iptables.conf\n";
		net += rule;
		strings.add(0, net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -A1 -B3 \"" + rule.substring(0, rule.indexOf('\n')) + "\" /etc/network/interfaces;", net, "pass");
	}

	public SimpleUnit addStaticIface(String name, String iface, String rule) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet static\n";
		net += rule;
		strings.add(net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -A1 -B2 \"" + rule.substring(0, rule.indexOf('\n')) + "\" /etc/network/interfaces;", net, "pass");
	}

	public SimpleUnit addDynamicIface(String name, String iface) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet dhcp";
		strings.add(net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -B1 \"" + net.substring(net.indexOf('\n') + 1, net.length()) + "\" /etc/network/interfaces;", net,
				"pass");
	}

	public SimpleUnit addPPPIface(String name, String iface) {
		String net = "auto dsl-provider\n";
// Path: src/core/iface/INetworkData.java
// public interface INetworkData extends IData {
// 
// 	public String[] getServerLabels();
// 
// 	public String[] getDeviceLabels();
// 
// 	public String[] getDeviceMacs();
// 
// 	public String[] getServerProfiles(String server);
// 
// 	public String getServerData(String server, String label);
// 
// 	public String getServerUser(String server);
// 
// 	public String getServerIP(String server);
// 
// 	public String getServerPort(String server);
// 	
// 	public String getServerUpdate(String server);
// }
// 
// Path: src/core/iface/IProfile.java
// public interface IProfile {
// 
// 	public String getLabel();
// 
// 	public boolean isSingleton();
// 
// 	public Vector<IProfile> getUnits(String server, INetworkData data);
// 
// }
// 
// Path: src/core/profile/AProfile.java
// public abstract class AProfile implements IProfile {
// 
// 	protected String name;
// 
// 	protected AProfile(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getLabel() {
// 		return name;
// 	}
// 
// 	public boolean isSingleton() {
// 		return false;
// 	}
// 
// 	public static String getProperty(String prop, String prof, String server, INetworkData data) {
// 		try {
// 			String val = data.getServerData(server, prof);
// 			JSONParser parser = new JSONParser();
// 			JSONObject config = (JSONObject) parser.parse(val);
// 			return config.get(prop).toString();
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// 	
// 	public static String getProperties(String prop, String prof, String server, INetworkData data) {
// 		try {
// 			String val = data.getServerData(server, prof);
// 			JSONParser parser = new JSONParser();
// 			JSONObject config = (JSONObject) parser.parse(val);
// 			JSONArray props = (JSONArray) config.get(prop);
// 			String propstring = "";
// 			for (int i = 0; i < props.size(); i++) {
// 				propstring += props.get(i) + "\n";
// 			}
// 			return propstring;
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// 
// }
// 
// Path: src/core/unit/SimpleUnit.java
// public class SimpleUnit extends ComplexUnit {
// 
// 	protected String test;
// 	protected String result;
// 
// 	protected SimpleUnit() {
// 	}
// 
// 	public SimpleUnit(String name, String precondition, String config, String audit, String test, String result) {
// 		super(name, precondition, config, audit);
// 		this.test = test;
// 		this.result = result;
// 	}
// 
// 	protected String getAudit() {
// 		String auditString = "out=$(" + super.getAudit() + ");\n";
// 		auditString += "test=\"" + getTest() + "\";\n";
// 		
// 		if (getResult().equals("fail"))
// 			auditString += "if [ \"$out\" = \"$test\" ] ; then\n";
// 		else
// 			auditString += "if [ \"$out\" != \"$test\" ] ; then\n";
// 		auditString += "\t" + getLabel() + "=0;\n";
// 		auditString += "else\n";
// 		auditString += "\t" + getLabel() + "=1;\n";
// 		auditString += "fi ;\n";
// 		return auditString;
// 	}
// 
// 	protected String getTest() {
// 		return this.test;
// 	}
// 
// 	protected String getResult() {
// 		return this.result;
// 	}
// 
// }


// Path: src/singleton/NetConf.java
import java.util.Hashtable;
import java.util.Vector;
import core.iface.INetworkData;
import core.iface.IProfile;
import core.profile.AProfile;
import core.unit.SimpleUnit;

	public SimpleUnit setPrimaryIface(String name, String iface, String rule) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet static\n";
		net += "pre-up iptables-restore < /etc/iptables/iptables.conf\n";
		net += rule;
		strings.add(0, net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -A1 -B3 \"" + rule.substring(0, rule.indexOf('\n')) + "\" /etc/network/interfaces;", net, "pass");
	}

	public SimpleUnit addStaticIface(String name, String iface, String rule) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet static\n";
		net += rule;
		strings.add(net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -A1 -B2 \"" + rule.substring(0, rule.indexOf('\n')) + "\" /etc/network/interfaces;", net, "pass");
	}

	public SimpleUnit addDynamicIface(String name, String iface) {
		String net = "auto " + iface + "\n";
		net += "iface " + iface + " inet dhcp";
		strings.add(net);
		return new SimpleUnit(name, "proceed", "echo \\\"handled by singleton\\\";",
				"grep -B1 \"" + net.substring(net.indexOf('\n') + 1, net.length()) + "\" /etc/network/interfaces;", net,
				"pass");
	}

	public SimpleUnit addPPPIface(String name, String iface) {
		String net = "auto dsl-provider\n";
		net += "iface dsl-provider inet ppp\n";