/* * Copyright 2010 NCHOVY * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.krakenapps.sonar.script; import java.util.Properties; import javax.persistence.EntityManagerFactory; import org.krakenapps.api.Script; import org.krakenapps.api.ScriptArgument; import org.krakenapps.api.ScriptContext; import org.krakenapps.api.ScriptUsage; import org.krakenapps.jpa.JpaService; import org.krakenapps.pcap.decoder.tcp.TcpSession; import org.krakenapps.pcap.util.PcapLiveRunner; import org.krakenapps.sonar.Metabase; import org.krakenapps.sonar.PassiveScanner; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleException; public class SonarScript implements Script { private BundleContext bc; private PassiveScanner scanner; private ScriptContext context; private JpaService jpa; private Metabase metabase; public SonarScript(BundleContext bc, PassiveScanner scanner, JpaService jpa, Metabase metabase) { this.bc = bc; this.scanner = scanner; this.jpa = jpa; this.metabase = metabase; } @Override public void setScriptContext(ScriptContext context) { this.context = context; } public void load(String[] args) { EntityManagerFactory emf = jpa.getEntityManagerFactory("sonar"); if (emf == null) { Properties props = new Properties(); try { jpa.registerEntityManagerFactory("sonar", props, bc.getBundle().getBundleId()); } catch (BundleException e) { context.println(e.getMessage()); } } else { context.println("sonar jpa model is already registered."); } } public void tcpSessions(String[] args) { for (String name : scanner.getDeviceNames()) { context.println(name); context.println("----------------"); PcapLiveRunner runner = scanner.getDevice(name); for (TcpSession session : runner.getTcpDecoder().getCurrentSessions()) { context.println(session.toString()); } } } @ScriptUsage(description = "reset all kraken-sonar database records.", arguments = { @ScriptArgument(name = "isForced", description = "use 'force' to run this method.", optional = false, type = "force or not") }) public void resetDatabase(String[] args) { if (!args[0].equals("force")) { context.printf("Ignored. Use 'force' as argument.\n"); return; } if (metabase == null) { context.printf("Metabase undefined. Please make sure the sonar jpa model is properly registered.\n"); return; } metabase.clearIpEndpoints(); metabase.clearEnvironments(); metabase.clearApplications(); metabase.clearIdsLog(); metabase.clearVendors(); } }