Able to power off devices, power them back on, and devices off will not pass packets.
@ -649,6 +649,17 @@ namespace EduNetworkBuilder
|
||||
pbNetworkView.ContextMenuStrip.Items.Add(string.Format(NB.Translate("NB_NetViewRmLnkStr"), host));
|
||||
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_RemoveLink_Click;
|
||||
}
|
||||
if(ReleasedOn.PowerOff)
|
||||
{
|
||||
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("NB_PowerOn"));
|
||||
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_PowerOn_Click;
|
||||
}
|
||||
else if(ReleasedOn.ForwardsPackets() || ReleasedOn.RoutesPackets())
|
||||
{
|
||||
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("NB_PowerOff"));
|
||||
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_PowerOff_Click;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else //we are locked out.
|
||||
@ -678,6 +689,24 @@ namespace EduNetworkBuilder
|
||||
}
|
||||
}
|
||||
|
||||
private void pbNetworkView_PowerOn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (ItemClickedOn != null)
|
||||
{
|
||||
ItemClickedOn.PowerOff = false;
|
||||
UpdateVisuals();
|
||||
}
|
||||
}
|
||||
|
||||
private void pbNetworkView_PowerOff_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (ItemClickedOn != null)
|
||||
{
|
||||
ItemClickedOn.PowerOff = true;
|
||||
UpdateVisuals();
|
||||
}
|
||||
}
|
||||
|
||||
private void pbNetworkView_Color_Click(object sender, EventArgs e)
|
||||
{
|
||||
ToolStripMenuItem TSMI = (ToolStripMenuItem)sender;
|
||||
|
@ -35,6 +35,7 @@ namespace EduNetworkBuilder
|
||||
public Color BackgroundColor = Color.Empty;
|
||||
protected Color MorphColor = Color.Empty;
|
||||
public List<FirewallRule> FirewallRules = new List<FirewallRule>();
|
||||
public bool PowerOff = false;
|
||||
|
||||
public NetworkDevice(NetworkComponentType what, string tHostname, Point tLocation, NicType firstNic = NicType.eth)
|
||||
{
|
||||
@ -384,6 +385,9 @@ namespace EduNetworkBuilder
|
||||
case "morphcolor":
|
||||
MorphColor = Color.FromName(Individual.InnerText);
|
||||
break;
|
||||
case "poweroff":
|
||||
bool.TryParse(Individual.InnerText, out PowerOff);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -404,6 +408,8 @@ namespace EduNetworkBuilder
|
||||
writer.WriteElementString("hasadvfirewall", HasAdvFirewall.ToString());
|
||||
if (MorphColor != Color.Empty)
|
||||
writer.WriteElementString("morphcolor", MorphColor.Name);
|
||||
if(PowerOff == true)
|
||||
writer.WriteElementString("poweroff", PowerOff.ToString());
|
||||
DefaultGW.Save(writer, "gateway");
|
||||
foreach (NetworkCard nic in NICs)
|
||||
{
|
||||
@ -648,10 +654,22 @@ namespace EduNetworkBuilder
|
||||
{
|
||||
//double magnitude = 1 / 3d * (data[i] + data[i + 1] + data[i + 2]);
|
||||
|
||||
if (PowerOff)
|
||||
{
|
||||
byte bcol = data[i];
|
||||
byte gcol = data[i + 1];
|
||||
byte rcol = data[i + 2];
|
||||
//Check to see if it is green. If so, we make it mostly not-green.
|
||||
if (rcol == 70 && gcol == 217 && bcol == 31)
|
||||
data[i + 1] = 0; //set green to none
|
||||
}
|
||||
//data[i] is the first of 3 bytes of color
|
||||
data[i] = (byte)((data[i] + MorphColor.B) /2);
|
||||
data[i+1] = (byte)((data[i+1] + MorphColor.G) / 2);
|
||||
data[i+2] = (byte)((data[i+2] + MorphColor.R) / 2);
|
||||
if (MorphColor != Color.Empty)
|
||||
{
|
||||
data[i] = (byte)((data[i] + MorphColor.B) / 2);
|
||||
data[i + 1] = (byte)((data[i + 1] + MorphColor.G) / 2);
|
||||
data[i + 2] = (byte)((data[i + 2] + MorphColor.R) / 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* This override copies the data back into the location specified */
|
||||
@ -969,53 +987,10 @@ namespace EduNetworkBuilder
|
||||
Network myNet = NB.GetNetwork();
|
||||
myNet.Invalidate(Location);
|
||||
}
|
||||
if(MorphColor == Color.Empty)
|
||||
if(MorphColor == Color.Empty && PowerOff == false)
|
||||
Graphics.FromImage(BaseImage).DrawImage(MyImage, MyLocation.X, MyLocation.Y, Size, Size);
|
||||
else
|
||||
{
|
||||
//ColorMap colorMap = new ColorMap();
|
||||
//int width = MyImage.Width;
|
||||
//int height = MyImage.Height;
|
||||
|
||||
//colorMap.OldColor = Color.FromArgb(33,39,63); // opaque red
|
||||
//colorMap.NewColor = MorphColor; // opaque blue
|
||||
|
||||
//ColorMap[] remapTable = { colorMap };
|
||||
//ImageAttributes imageAttributes = new ImageAttributes();
|
||||
//imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
|
||||
//using (Graphics G = Graphics.FromImage(BaseImage))
|
||||
//{
|
||||
// G.DrawImage(
|
||||
// MyImage,
|
||||
// new Rectangle(MyLocation.X, MyLocation.Y, Size, Size), // destination rectangle
|
||||
// 0, 0, // upper-left corner of source rectangle
|
||||
// width, // width of source rectangle
|
||||
// height, // height of source rectangle
|
||||
// GraphicsUnit.Pixel,
|
||||
// imageAttributes);
|
||||
//}
|
||||
//---------------------------
|
||||
//Color color = MorphColor; //Your desired colour
|
||||
//Bitmap bmp = new Bitmap(MyImage);
|
||||
//for (int x = 0; x < bmp.Width; x++)
|
||||
//{
|
||||
// for (int y = 0; y < bmp.Height; y++)
|
||||
// {
|
||||
// int a = 0;
|
||||
// int r = 0;
|
||||
// int g = 0;
|
||||
// int b = 0;
|
||||
// Color gotColor = bmp.GetPixel(x, y);
|
||||
// a = gotColor.A;
|
||||
// r = (gotColor.R + color.R) / 2;
|
||||
// g = (gotColor.G + color.G) / 2;
|
||||
// b = (gotColor.B + color.B) / 2;
|
||||
// gotColor = Color.FromArgb(a, r, g, b);
|
||||
// bmp.SetPixel(x, y, gotColor);
|
||||
// }
|
||||
//}
|
||||
//Graphics.FromImage(BaseImage).DrawImage(bmp, MyLocation.X, MyLocation.Y, Size, Size);
|
||||
//------------------------------------
|
||||
Image NewBMP = ColoredImage(MyImage);
|
||||
Graphics.FromImage(BaseImage).DrawImage(NewBMP, MyLocation.X, MyLocation.Y, Size, Size);
|
||||
}
|
||||
@ -2428,6 +2403,15 @@ namespace EduNetworkBuilder
|
||||
tPacket.MyStatus = PacketStatus.processing;
|
||||
//
|
||||
|
||||
if(PowerOff)
|
||||
{
|
||||
//A packet came in, but the power was off on the device.
|
||||
tPacket.AddMessage(DebugLevel.info, NB.Translate("ND_DoInputFromLink_PowerOff"));
|
||||
tPacket.Tracking.Status = NB.LeftPad(hostname) + " " + string.Format(NB.Translate("ND_DoInputFromLink_PowerOff"));
|
||||
tPacket.MyStatus = PacketStatus.finished_failed;
|
||||
return;
|
||||
}
|
||||
|
||||
tPacket.PacketDump(hostname, DebugPausePoint.packet_in);
|
||||
if(nc == null)
|
||||
{
|
||||
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
@ -1637,4 +1637,16 @@
|
||||
<value>Firewall Dropped Packet: Device {0}</value>
|
||||
<comment>P_FirewallDropped = Firewall Dropped Packet: Device {0}</comment>
|
||||
</data>
|
||||
<data name="NB_PowerOff" xml:space="preserve">
|
||||
<value>Power Off</value>
|
||||
<comment>NB_PowerOff = Power Off</comment>
|
||||
</data>
|
||||
<data name="NB_PowerOn" xml:space="preserve">
|
||||
<value>Power On</value>
|
||||
<comment>NB_PowerOn = Power On</comment>
|
||||
</data>
|
||||
<data name="ND_DoInputFromLink_PowerOff" xml:space="preserve">
|
||||
<value>Device cannot respond - Packet Failed</value>
|
||||
<comment>ND_DoInputFromLink_PowerOff = Device cannot respond - Packet Failed</comment>
|
||||
</data>
|
||||
</root>
|