TabManagersCards.java
/*******************************************************************************
* Copyhacked (H) 2012-2025.
* This program and the accompanying materials
* are made available under no term at all, use it like
* you want, but share and discuss it
* every time possible with every body.
*
* Contributors:
* ron190 at ymail dot com - initial implementation
*******************************************************************************/
package com.jsql.view.swing.tab;
import com.jsql.view.swing.manager.*;
import com.jsql.view.swing.util.MediatorHelper;
import com.jsql.view.swing.util.UiUtil;
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.awt.*;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Panel on the left with functionalities like webshell, file reading and admin page finder.
*/
public class TabManagersCards extends JPanel {
private final ManagerFile managerFile = new ManagerFile();
private final ManagerExploit managerExploit = new ManagerExploit();
/**
* Create manager panel.
*/
public TabManagersCards() {
this.setName("tabManagersProxy");
this.setLayout(new CardLayout());
this.setMinimumSize(new Dimension(100, 0)); // allow proper minimize
var managerScanList = new ManagerScan();
var managerDatabase = new ManagerDatabase();
var managerAdminPage = new ManagerAdminPage();
var managerBruteForce = new ManagerBruteForce();
MediatorHelper.register(this.managerFile);
MediatorHelper.register(this.managerExploit);
MediatorHelper.register(managerScanList);
MediatorHelper.register(managerAdminPage);
MediatorHelper.register(managerBruteForce);
var managers = Arrays.asList(
managerDatabase, managerAdminPage, this.managerFile, this.managerExploit, managerBruteForce,
new ManagerCoder(), managerScanList
);
AtomicInteger i = new AtomicInteger();
MediatorHelper.frame().getTabManagers().getIconsTabs().forEach(modelSvgIcon -> this.buildI18nTab(
modelSvgIcon.getKeyLabel(),
managers.get(i.getAndIncrement())
));
MediatorHelper.register(this);
}
public void addToLists(String path, String name) {
this.managerExploit.addToList(path.replace(name, StringUtils.EMPTY));
}
public void markFileSystemInvulnerable() {
this.getManagers().forEach(manager -> {
manager.changePrivilegeIcon(UiUtil.CROSS_RED.getIcon());
manager.endProcess();
});
}
public void endPreparation() {
this.getManagers().forEach(manager -> manager.setButtonEnable(true));
}
public void markFileSystemVulnerable() {
this.getManagers().forEach(manager -> manager.changePrivilegeIcon(UiUtil.TICK_GREEN.getIcon()));
}
private void buildI18nTab(String keyLabel, Component manager) {
manager.setName(keyLabel);
this.add(manager, keyLabel);
}
private List<AbstractManagerList> getManagers() {
return Arrays.asList(this.managerFile, this.managerExploit);
}
}