diff options
Diffstat (limited to 'src/main/java/de/spline/kvm/utils/Kvm.java')
-rw-r--r-- | src/main/java/de/spline/kvm/utils/Kvm.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/de/spline/kvm/utils/Kvm.java b/src/main/java/de/spline/kvm/utils/Kvm.java new file mode 100644 index 0000000..896150a --- /dev/null +++ b/src/main/java/de/spline/kvm/utils/Kvm.java @@ -0,0 +1,61 @@ +package de.spline.kvm.utils; + +import java.util.HashMap; +import java.util.Map; + +import com.gistlabs.mechanize.MechanizeAgent; +import com.gistlabs.mechanize.Resource; +import com.gistlabs.mechanize.document.Document; +import com.gistlabs.mechanize.document.node.Node; +import com.gistlabs.mechanize.parameters.Parameters; + +public class Kvm +{ + protected String host; + protected MechanizeAgent agent; + + public Kvm(String host) + { + this.host = host; + this.agent = new MechanizeAgent(); + } + + public void login(String username, String password) + { + Parameters param = new Parameters(); + param.add("login", username); + param.add("password", password); + param.add("action_login", "Login"); + + Resource resource = agent.post(host + "/auth.asp", param); + if (resource.asString().contains("Authentication failed.")) { + System.err.println("Invalid login!"); + System.exit(1); + } + } + + public Map<String, String> getAppletParameters() + { + Document doc = agent.get(host + "/title_app.asp"); + if (!doc.asString().contains("<param name=\"APPLET_ID\"")) { + logout(); + + System.err.println("Error getting applet parameters."); + System.exit(1); + } + + Map<String, String> params = new HashMap<>(); + for (Node node : doc.getRoot().findAll("html body applet param")) { + String name = node.getAttribute("name"); + String value = node.getAttribute("value"); + params.put(name.toUpperCase(), value); + } + + return params; + } + + public void logout() + { + agent.get(host + "/logout"); + } +} |