Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions src/netKnow/Class/routing/CiscoConfigurationCodeGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
package netKnow.Class.routing;

import java.util.List;

/**
* Created by MQ on 2017-06-06.
*/
public class CiscoConfigurationCodeGenerator {
List<DraggableNode> routersList;
List<DraggableNode> nodes;

public CiscoConfigurationCodeGenerator(List<DraggableNode> routersList, List<DraggableNode> nodes){
this.routersList = routersList;
this.nodes = nodes;
}

public String getConfiguration(){
String out = "";
for(int i=0; i<routersList.size(); ++i){
out += "Konfiguracja dla routera: " + routersList.get(i).titleBar.getText() + "\n";
out += "============================================================================\n";
out += goToConfiguration();
out += setHostName(routersList.get(i).titleBar.getText());
out += commit();
out += setInterfaces(i);
out += commit();
out += setRoutingOptions(i);
out += commit();
out += "\n\n";
}
return out;
}

private String goToConfiguration(){
String out = "";
out += "enable\n";
out += "configure terminal\n";
return out;
}

private String commit(){
return "commit" + "\nexit\n";
}

private String setHostName(String hostName){
String out = "";
out += "hostname " + hostName + "\n";
return out;
}

private String setInterfaces(int index){
String out = "";
int geNumber = 0;
int seNumber = 0;
DraggableNode interfaceNode = routersList.get(index);
for(int i=0; i<interfaceNode.nodeLinks.size(); ++i){
NodeLink nodeLink = interfaceNode.nodeLinks.get(i);
out += "interface ";
if(nodeLink.nodeLinkData.getTypeOfConnection().equals("Kabel lan")){
out += "Fe0/" + geNumber + "\n";
geNumber++;
}else{
out += "S0/0/" + seNumber + "\n";
out += "encapsulation ppp" + "\n";
seNumber++;
}
out += "ip address " + nodeLink.nodeLinkData.getAddressToInterface() + interfaceNode.draggableNodeData.getHost() + "/" + nodeLink.nodeLinkData.getMaskCisco() + "\n";
out += "no shutdown" + "\n";
}
return out;
}

private String setRoutingOptions(int index){
String out = "edit routing-options static\n";
DraggableNode interfaceNode = routersList.get(index);
for(int i=0; i<interfaceNode.nodeLinks.size(); ++i){
DraggableNode connectedToInterfaceNode;
if(interfaceNode.nodeLinks.get(i).startIDNode.equals(interfaceNode.getId())){
connectedToInterfaceNode = getFriend(interfaceNode.nodeLinks.get(i).endIDNode);
}else{
connectedToInterfaceNode = getFriend(interfaceNode.nodeLinks.get(i).startIDNode);
}
if(connectedToInterfaceNode.getType().equals(DragIconType.switchIco)){
for(int j=0; j<connectedToInterfaceNode.nodeLinks.size(); ++j){
DraggableNode fromSwitchNode;
if(connectedToInterfaceNode.nodeLinks.get(j).startIDNode.equals(connectedToInterfaceNode.getId())){
fromSwitchNode = getFriend(connectedToInterfaceNode.nodeLinks.get(j).endIDNode);
}else{
fromSwitchNode = getFriend(connectedToInterfaceNode.nodeLinks.get(j).startIDNode);
}
if(fromSwitchNode != interfaceNode){
NodeLinkData data = connectedToInterfaceNode.nodeLinks.get(j).nodeLinkData;
out += "ip route ";
out += connectedToInterfaceNode.pcList.get(j).draggableNodeData.getIpWithoutMask();
out += " " + connectedToInterfaceNode.pcList.get(j).draggableNodeData.getMask() + " ";
out += data.getAddressToInterface() + connectedToInterfaceNode.draggableNodeData.getHost() + "\n";
}
}
}else if(connectedToInterfaceNode.getType().equals(DragIconType.routerIco)){
if(connectedToInterfaceNode.nodePCLink.size() > 0){
NodeLinkData data = connectedToInterfaceNode.nodeLinks.get(i).nodeLinkData;
for(int j=0; j<connectedToInterfaceNode.nodePCLink.size(); ++j){
String pcId;
if(connectedToInterfaceNode.nodePCLink.get(j).startIDNode.equals(connectedToInterfaceNode.getId())){
pcId = connectedToInterfaceNode.nodePCLink.get(j).endIDNode;
}else{
pcId = connectedToInterfaceNode.nodePCLink.get(j).startIDNode;
}
for(int k=0; k<connectedToInterfaceNode.pcList.size(); ++k){
if(connectedToInterfaceNode.pcList.get(k).getId().equals(pcId)){
out += "ip route ";
out += connectedToInterfaceNode.pcList.get(k).draggableNodeData.getIpWithoutMask();
out += " " + connectedToInterfaceNode.pcList.get(k).draggableNodeData.getMask() + " " ;
out += data.getAddressToInterface() + connectedToInterfaceNode.draggableNodeData.getHost() + "\n";
}
}
}
}
}
}
return out;
}

private DraggableNode getFriend(String id){
for(int j=0; j<nodes.size(); ++j){
if(nodes.get(j).getId().equals(id)){
return nodes.get(j);
}
}
return null;
}
}
3 changes: 0 additions & 3 deletions src/netKnow/Class/routing/DragIcon.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@ public void setType(DragIconType type) {
case switchIco:
getStyleClass().add("icon-switch");
break;
case labelIco:
getStyleClass().add("icon-label");
break;
default:
break;
}
Expand Down
15 changes: 10 additions & 5 deletions src/netKnow/Class/routing/DraggableNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class DraggableNode extends AnchorPane{

@FXML AnchorPane root_pane;
@FXML AnchorPane nodeBody;
@FXML Label titleBar;
@FXML public Label titleBar;
@FXML Label closeButton;
@FXML AnchorPane leftLinkHandle;
@FXML AnchorPane rightLinkHandle;
Expand All @@ -36,6 +36,9 @@ public class DraggableNode extends AnchorPane{

private final DraggableNode self;
public final List<String> mLinkIds = new ArrayList();
public List<NodeLink> nodeLinks = new ArrayList<>();
public List<NodeLink> nodePCLink = new ArrayList<>();
public List<DraggableNode> pcList = new ArrayList<>();

private EventHandler <DragEvent> mContextDragOver;
private EventHandler <DragEvent> mContextDragDropped;
Expand All @@ -51,6 +54,7 @@ public class DraggableNode extends AnchorPane{
private DragIconType mType = null;
private Point2D mDragOffset = new Point2D(0.0, 0.0);
public DraggableNodeData draggableNodeData;
public RIPInfo ripInfo;

public DraggableNode() {
self = this;
Expand All @@ -70,6 +74,11 @@ public DraggableNode() {
setId(UUID.randomUUID().toString());
}

public DraggableNode(String id){
self = this;
setId(id);
}

public void setTitleBar(String titleBarText) {
titleBar.setText(titleBarText);
}
Expand Down Expand Up @@ -278,10 +287,6 @@ public void setType(DragIconType type) {
case switchIco:
nodeBody.getStyleClass().add("icon-switch");
break;
case labelIco:
nodeBody.getStyleClass().add("icon-label");
break;

default:
break;
}
Expand Down
30 changes: 28 additions & 2 deletions src/netKnow/Class/routing/DraggableNodeData.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,17 @@ public class DraggableNodeData {

private String name;
private String host;
private String ip;

public DraggableNodeData(String name, String host){
public DraggableNodeData(String name, String x){
this.name = name;
this.host = host;
if(x.length() > 3){
this.ip = x;
System.out.println("IP: " + this.ip);
}else{
this.host = x;
System.out.println("host: " + this.host);
}
}

public String getName(){
Expand All @@ -20,4 +27,23 @@ public String getName(){
public String getHost(){
return host;
}

public String getIp() {
return ip;
}

public String getIpWithoutMask(){
String [] pp = ip.split("/");
return pp[0];
}

public String getMask(){
System.out.println("MY IP IS: " + ip);
String [] pp = ip.split("/");
int cidrMask = Integer.parseInt(pp[1]);
long bits = 0;
bits = 0xffffffff ^ (1 << 32 - cidrMask) - 1;
String mask = String.format("%d.%d.%d.%d", (bits & 0x0000000000ff000000L) >> 24, (bits & 0x0000000000ff0000) >> 16, (bits & 0x0000000000ff00) >> 8, bits & 0xff);
return mask;
}
}
134 changes: 134 additions & 0 deletions src/netKnow/Class/routing/JuniperConfigurationCodeGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
package netKnow.Class.routing;

import java.util.List;

/**
* Created by MQ on 2017-06-06.
*/
public class JuniperConfigurationCodeGenerator {

List<DraggableNode> routersList;
List<DraggableNode> nodes;

public JuniperConfigurationCodeGenerator(List<DraggableNode> routersList, List<DraggableNode> nodes){
this.routersList = routersList;
this.nodes = nodes;
}

public String getConfiguration(){
String out = "";
for(int i=0; i<routersList.size(); ++i){
out += "Konfiguracja dla routera: " + routersList.get(i).titleBar.getText() + "\n";
out += "============================================================================\n";
out += goToConfiguration();
out += setHostName(routersList.get(i).titleBar.getText());
out += commit();
out += setInterfaces(i);
out += commit();
out += setRoutingOptions(i);
out += commit();
out += "\n\n";
}
return out;
}

private String goToConfiguration(){
String out = "";
out += "cli\n";
out += "configure\n";
return out;
}

private String commit(){
return "commit" + "\nexit\n";
}

private String setHostName(String hostName){
String out = "";
out += "edit system\n";
out += "set host-name " + hostName + "\n";
return out;
}

private String setInterfaces(int index){
String out = "";
int geNumber = 0;
int seNumber = 0;
DraggableNode interfaceNode = routersList.get(index);
for(int i=0; i<interfaceNode.nodeLinks.size(); ++i){
NodeLink nodeLink = interfaceNode.nodeLinks.get(i);
out += "edit interfaces ";
if(nodeLink.nodeLinkData.getTypeOfConnection().equals("Kabel lan")){
out += "ge-0/0/" + geNumber + "\n";
geNumber++;
}else{
out += "se-0/0/" + seNumber + "\n";
out += "set encapsulation ppp" + "\n";
seNumber++;
}
out += "set unit 0 family inet address " + nodeLink.nodeLinkData.getAddressToInterface() + interfaceNode.draggableNodeData.getHost() + "/" + nodeLink.nodeLinkData.getMask() + "\n";
out += "activate unit 0 family inet address " + nodeLink.nodeLinkData.getAddressToInterface() + interfaceNode.draggableNodeData.getHost() + "/" + nodeLink.nodeLinkData.getMask() + "\n";
}
return out;
}

private String setRoutingOptions(int index){
String out = "edit routing-options static\n";
DraggableNode interfaceNode = routersList.get(index);
for(int i=0; i<interfaceNode.nodeLinks.size(); ++i){
DraggableNode connectedToInterfaceNode;
if(interfaceNode.nodeLinks.get(i).startIDNode.equals(interfaceNode.getId())){
connectedToInterfaceNode = getFriend(interfaceNode.nodeLinks.get(i).endIDNode);
}else{
connectedToInterfaceNode = getFriend(interfaceNode.nodeLinks.get(i).startIDNode);
}
if(connectedToInterfaceNode.getType().equals(DragIconType.switchIco)){
for(int j=0; j<connectedToInterfaceNode.nodeLinks.size(); ++j){
DraggableNode fromSwitchNode;
if(connectedToInterfaceNode.nodeLinks.get(j).startIDNode.equals(connectedToInterfaceNode.getId())){
fromSwitchNode = getFriend(connectedToInterfaceNode.nodeLinks.get(j).endIDNode);
}else{
fromSwitchNode = getFriend(connectedToInterfaceNode.nodeLinks.get(j).startIDNode);
}
if(fromSwitchNode != interfaceNode){
NodeLinkData data = connectedToInterfaceNode.nodeLinks.get(j).nodeLinkData;
out += "set route ";
out += connectedToInterfaceNode.pcList.get(j).draggableNodeData.getIp();
out += " next-hop ";
out += data.getAddressToInterface() + connectedToInterfaceNode.draggableNodeData.getHost() + "\n";
}
}
}else if(connectedToInterfaceNode.getType().equals(DragIconType.routerIco)){
if(connectedToInterfaceNode.nodePCLink.size() > 0){
NodeLinkData data = connectedToInterfaceNode.nodeLinks.get(i).nodeLinkData;
for(int j=0; j<connectedToInterfaceNode.nodePCLink.size(); ++j){
String pcId;
if(connectedToInterfaceNode.nodePCLink.get(j).startIDNode.equals(connectedToInterfaceNode.getId())){
pcId = connectedToInterfaceNode.nodePCLink.get(j).endIDNode;
}else{
pcId = connectedToInterfaceNode.nodePCLink.get(j).startIDNode;
}
for(int k=0; k<connectedToInterfaceNode.pcList.size(); ++k){
if(connectedToInterfaceNode.pcList.get(k).getId().equals(pcId)){
out += "set route ";
out += connectedToInterfaceNode.pcList.get(k).draggableNodeData.getIp();
out += " next-hop ";
out += data.getAddressToInterface() + connectedToInterfaceNode.draggableNodeData.getHost() + "\n";
}
}
}
}
}
}
return out;
}

private DraggableNode getFriend(String id){
for(int j=0; j<nodes.size(); ++j){
if(nodes.get(j).getId().equals(id)){
return nodes.get(j);
}
}
return null;
}
}
6 changes: 6 additions & 0 deletions src/netKnow/Class/routing/NodeLink.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ public NodeLink() {
this.getChildren().add(infoLabel);
}

public NodeLink(String id, String startID, String endID){
setId(id);
startIDNode = startID;
endIDNode = endID;
}

@FXML
private void initialize(){
}
Expand Down
Loading