diff --git a/SNT/03_Internet/Simulation/build.py b/SNT/03_Internet/Simulation/build.py new file mode 100644 index 0000000..7dee5e3 --- /dev/null +++ b/SNT/03_Internet/Simulation/build.py @@ -0,0 +1,45 @@ +import yaml +import cairosvg +import jinja2 +from pathlib import Path +import networkx as nx +import matplotlib.pyplot as plt + + +#cairosvg.svg2pdf(url="role.svg", write_to="role.pdf") + +def graph(roles): + g = nx.Graph() + g.add_nodes_from([str(role["num"]) for role in roles]) + for role in roles: + for lien in role["liens"]: + g.add_edge(str(role["num"]), str(list(lien.keys())[0])) + return g + + +with open("roles.yml", "r") as f: + topos = yaml.load(f, Loader=yaml.SafeLoader) +with open("role.svg", "r") as f: + template = jinja2.Template(f.read()) + +for topo, desc in topos.items(): + for role in desc["roles"]: + card = template.render(**role) + Path(topo).mkdir(exist_ok=True) + dest = f"{topo}/role{role['num']}.svg" + with open(dest, "w") as f: + f.write(card) + cairosvg.svg2pdf(url=dest, write_to=dest.replace("svg", "pdf")) + + plt.figure(figsize=(5,5)) + ax = plt.gca() + ax.set_title('Random graph') + ax.set_title(f"Forme du réseau: {topo}") + g = graph(desc['roles']) + nx.draw(g, with_labels=True, + node_color='lightgreen', + node_size=700, + ax=ax) + _ = ax.axis('off') + plt.savefig(f"{topo}/forme.pdf") + plt.cla() diff --git a/SNT/03_Internet/Simulation/role.css b/SNT/03_Internet/Simulation/role.css new file mode 100644 index 0000000..597892f --- /dev/null +++ b/SNT/03_Internet/Simulation/role.css @@ -0,0 +1,17 @@ +@page { + margin: 0; + height: 8cm; + width: 25cm; +} +html { + height: 100%; +} +body { + background: #fff; + box-sizing: border-box; + color: #2A3239; + display: flex; + flex-wrap: rows; + justify-content: space-between; + margin: 0; +} diff --git a/SNT/03_Internet/Simulation/role.svg b/SNT/03_Internet/Simulation/role.svg new file mode 100644 index 0000000..82e86c6 --- /dev/null +++ b/SNT/03_Internet/Simulation/role.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + IP = {{IP}} + + #{{num}} + Objectifs: +{{objectifs}} + Particularités: +{{particularites}} + + Lié à : +{{liens}} + + + diff --git a/SNT/03_Internet/Simulation/roles.yml b/SNT/03_Internet/Simulation/roles.yml new file mode 100644 index 0000000..48021a3 --- /dev/null +++ b/SNT/03_Internet/Simulation/roles.yml @@ -0,0 +1,151 @@ +--- +lineaire: + roles: + - num: 1 + IP: 192.168.0.1 + objectifs: + - Envoyer un message à 192.168.3.1 + particularites: + liens: + - 2: 192.168.1.1 + - num: 2 + IP: 192.168.1.1 + objectifs: + - Envoyer un message à 192.168.3.1 + particularites: + - Ne marche plus après avoir transmis 3 messages + liens: + - 1: 192.168.0.1 + - 3: 192.168.2.1 + - num: 3 + IP: 192.168.2.1 + objectifs: + - Envoyer un message à 192.168.0.1 + particularites: + liens: + - 2: 192.168.1.1 + - 4: 192.168.3.1 + - num: 4 + IP: 192.168.3.1 + objectifs: + - Envoyer un message à 192.168.5.1 + particularites: + liens: + - 3: 192.168.2.1 + - 5: 192.168.4.1 + - num: 5 + IP: 192.168.4.1 + objectifs: + - Envoyer un message à 192.168.1.1 + particularites: + liens: + - 4: 192.168.3.1 + - 6: 192.168.5.1 + - num: 6 + IP: 192.168.5.1 + objectifs: + - Envoyer un message à 192.168.2.1 + particularites: + - Ne marche plus après avoir transmis 3 messages + liens: + - 5: 192.168.4.1 +anneau: + roles: + - num: 1 + IP: 10.10.0.1 + objectifs: + - Envoyer un message à 10.10.3.1 + particularites: + liens: + - 6: 10.10.5.1 + - 2: 10.10.1.1 + - num: 2 + IP: 10.10.1.1 + objectifs: + - Envoyer un message à 10.10.5.1 + particularites: + liens: + - 1: 10.10.0.1 + - 3: 10.10.2.1 + - num: 3 + IP: 10.10.2.1 + objectifs: + - Envoyer un message à 10.10.4.1 + particularites: + - Ne marche plus après avoir transmis 5 messages + liens: + - 2: 10.10.1.1 + - 4: 10.10.3.1 + - num: 4 + IP: 10.10.3.1 + objectifs: + - Envoyer un message à 10.10.0.1 + particularites: + liens: + - 3: 10.10.2.1 + - 5: 10.10.4.1 + - num: 5 + IP: 10.10.4.1 + objectifs: + - Envoyer un message à 10.10.1.1 + particularites: + liens: + - 4: 10.10.3.1 + - 6: 10.10.5.1 + - num: 6 + IP: 10.10.5.1 + objectifs: + - Envoyer un message à 10.10.3.1 + particularites: + liens: + - 5: 10.10.4.1 + - 1: 10.10.0.1 + +etoile: + roles: + - num: 1 + IP: 77.82.0.1 + objectifs: + particularites: + liens: + - 2: 77.82.1.1 + - 3: 77.82.2.1 + - 4: 77.82.3.1 + - 5: 77.82.4.1 + - 6: 77.82.5.1 + - num: 2 + IP: 77.82.1.1 + objectifs: + - Envoyer un message à 77.82.5.1 + particularites: + liens: + - 1: 77.82.0.1 + - num: 3 + IP: 77.82.2.1 + objectifs: + - Envoyer un message à 77.82.4.1 + particularites: + liens: + - 1: 77.82.0.1 + - num: 4 + IP: 77.82.3.1 + objectifs: + - Envoyer un message à 77.82.0.1 + particularites: + liens: + - 1: 77.82.0.1 + - num: 5 + IP: 77.82.4.1 + objectifs: + - Envoyer un message à 77.82.1.1 + particularites: + liens: + - 1: 77.82.0.1 + - num: 6 + IP: 77.82.5.1 + objectifs: + - Envoyer un message à 77.82.3.1 + particularites: + liens: + - 1: 77.82.0.1 +