Compare commits
No commits in common. "c45cdd3ec6731867474c982d87c7e8e7a75612ab" and "27e032b919dd1e539f377b1adbccd0626b2bc0eb" have entirely different histories.
c45cdd3ec6
...
27e032b919
@ -1,12 +1,13 @@
|
|||||||
import yaml
|
import yaml
|
||||||
#import cairosvg
|
import cairosvg
|
||||||
from weasyprint import HTML, CSS
|
|
||||||
import jinja2
|
import jinja2
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import networkx as nx
|
import networkx as nx
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|
||||||
|
#cairosvg.svg2pdf(url="role.svg", write_to="role.pdf")
|
||||||
|
|
||||||
def graph(roles):
|
def graph(roles):
|
||||||
g = nx.Graph()
|
g = nx.Graph()
|
||||||
g.add_nodes_from([str(role["num"]) for role in roles])
|
g.add_nodes_from([str(role["num"]) for role in roles])
|
||||||
@ -15,45 +16,30 @@ def graph(roles):
|
|||||||
g.add_edge(str(role["num"]), str(list(lien.keys())[0]))
|
g.add_edge(str(role["num"]), str(list(lien.keys())[0]))
|
||||||
return g
|
return g
|
||||||
|
|
||||||
def build_topo(topo, roles):
|
|
||||||
plt.figure(figsize=(2,2))
|
|
||||||
ax = plt.gca()
|
|
||||||
#ax.set_title(f"Forme du réseau: {topo}")
|
|
||||||
g = graph(roles)
|
|
||||||
nx.draw(g,
|
|
||||||
with_labels=True,
|
|
||||||
node_color='white',
|
|
||||||
node_size=100,
|
|
||||||
ax=ax)
|
|
||||||
_ = ax.axis('off')
|
|
||||||
plt.margins(0.2)
|
|
||||||
plt.subplots_adjust(left=0, right=1, top=1, bottom=0)
|
|
||||||
plt.savefig(f"{topo}/forme.png",
|
|
||||||
transparent=True,
|
|
||||||
)
|
|
||||||
plt.cla()
|
|
||||||
|
|
||||||
def role_card(role, topo, template, css):
|
|
||||||
card = template.render(topo=topo, **role)
|
|
||||||
dest = f"{topo}/role{role['num']}.html"
|
|
||||||
with open(dest, "w") as f:
|
|
||||||
f.write(card)
|
|
||||||
#cairosvg.svg2pdf(url=dest, write_to=dest.replace("svg", "pdf"))
|
|
||||||
HTML(dest).write_pdf(dest.replace("html", "pdf"), stylesheets=[css])
|
|
||||||
|
|
||||||
|
|
||||||
with open("roles.yml", "r") as f:
|
with open("roles.yml", "r") as f:
|
||||||
topos = yaml.load(f, Loader=yaml.SafeLoader)
|
topos = yaml.load(f, Loader=yaml.SafeLoader)
|
||||||
with open("role.html", "r") as f:
|
with open("role.svg", "r") as f:
|
||||||
template = jinja2.Template(f.read(), undefined=jinja2.StrictUndefined)
|
template = jinja2.Template(f.read())
|
||||||
css = CSS("role.css")
|
|
||||||
|
|
||||||
for topo, desc in topos.items():
|
for topo, desc in topos.items():
|
||||||
|
|
||||||
Path(topo).mkdir(exist_ok=True)
|
|
||||||
|
|
||||||
build_topo(topo, desc["roles"])
|
|
||||||
|
|
||||||
for role in desc["roles"]:
|
for role in desc["roles"]:
|
||||||
role_card(role, topo, template, css)
|
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()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@page {
|
@page {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
size: A5;
|
height: 8cm;
|
||||||
|
width: 25cm;
|
||||||
}
|
}
|
||||||
html {
|
html {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -10,61 +11,7 @@ body {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: #2A3239;
|
color: #2A3239;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-wrap: rows;
|
||||||
|
justify-content: space-between;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
background-color: #D9411E;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
header > * {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#layout {
|
|
||||||
width: 15%;
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
#layout > img {
|
|
||||||
width: 4em;
|
|
||||||
height: 4em;
|
|
||||||
min-height: 100%;
|
|
||||||
min-width: 100%;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
#ip {
|
|
||||||
font-size: 2em;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#number {
|
|
||||||
background-color: #333;
|
|
||||||
color: #fff;
|
|
||||||
width: 15%;
|
|
||||||
font-size: 2em;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
main {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
main > * {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#links {
|
|
||||||
background-color: #eeeeee;
|
|
||||||
border: solid black;
|
|
||||||
border-width: medium 0 medium 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link href="../role.css" rel="stylesheet">
|
|
||||||
<title>Role {{num}} </title>
|
|
||||||
<meta name="description" content="Role">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<span id="layout">
|
|
||||||
<img src="../{{topo}}/forme.png">
|
|
||||||
</span>
|
|
||||||
<span id="ip">
|
|
||||||
<p>IP: {{IP}}</p>
|
|
||||||
</span>
|
|
||||||
<span id="number">
|
|
||||||
<p># {{ num }} </p>
|
|
||||||
</span>
|
|
||||||
</header>
|
|
||||||
<main>
|
|
||||||
<section id="goals">
|
|
||||||
<h2>Objectifs:</h2>
|
|
||||||
{% if objectifs %}
|
|
||||||
<ul>
|
|
||||||
{% for o in objectifs %}
|
|
||||||
<li>{{ o }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
</section>
|
|
||||||
<section id="events">
|
|
||||||
<h2>Particularités:</h2>
|
|
||||||
{% if particularites %}
|
|
||||||
<ul>
|
|
||||||
{% for p in particularites %}
|
|
||||||
<li>{{ p }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% else %}
|
|
||||||
∅
|
|
||||||
{% endif %}
|
|
||||||
</section>
|
|
||||||
<section id="links">
|
|
||||||
<h2>Voisins connus</h2>
|
|
||||||
{% if liens %}
|
|
||||||
<ul>
|
|
||||||
{% for l in liens %}
|
|
||||||
<li>{{ l | replace("{", "") | replace("}", "")}}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
</section>
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
linéaire:
|
lineaire:
|
||||||
roles:
|
roles:
|
||||||
- num: 1
|
- num: 1
|
||||||
IP: 192.168.0.1
|
IP: 192.168.0.1
|
||||||
@ -49,7 +49,6 @@ linéaire:
|
|||||||
- Ne marche plus après avoir transmis 3 messages
|
- Ne marche plus après avoir transmis 3 messages
|
||||||
liens:
|
liens:
|
||||||
- 5: 192.168.4.1
|
- 5: 192.168.4.1
|
||||||
|
|
||||||
anneau:
|
anneau:
|
||||||
roles:
|
roles:
|
||||||
- num: 1
|
- num: 1
|
||||||
@ -102,14 +101,12 @@ anneau:
|
|||||||
- 5: 10.10.4.1
|
- 5: 10.10.4.1
|
||||||
- 1: 10.10.0.1
|
- 1: 10.10.0.1
|
||||||
|
|
||||||
étoile:
|
etoile:
|
||||||
roles:
|
roles:
|
||||||
- num: 1
|
- num: 1
|
||||||
IP: 77.82.0.1
|
IP: 77.82.0.1
|
||||||
objectifs:
|
objectifs:
|
||||||
particularites:
|
particularites:
|
||||||
- Après 10 transmissions, ne marche plus.
|
|
||||||
- (*) Ouvrir et noter tous les messages transmis.
|
|
||||||
liens:
|
liens:
|
||||||
- 2: 77.82.1.1
|
- 2: 77.82.1.1
|
||||||
- 3: 77.82.2.1
|
- 3: 77.82.2.1
|
||||||
@ -119,179 +116,36 @@ anneau:
|
|||||||
- num: 2
|
- num: 2
|
||||||
IP: 77.82.1.1
|
IP: 77.82.1.1
|
||||||
objectifs:
|
objectifs:
|
||||||
- Envoyer un message à 77.82.10.1
|
- Envoyer un message à 77.82.5.1
|
||||||
- Envoyer un message à 77.82.5.1 et demander une réponse
|
|
||||||
particularites:
|
particularites:
|
||||||
liens:
|
liens:
|
||||||
- 1: 77.82.0.1
|
- 1: 77.82.0.1
|
||||||
- num: 3
|
- num: 3
|
||||||
IP: 77.82.2.1
|
IP: 77.82.2.1
|
||||||
objectifs:
|
objectifs:
|
||||||
- Envoyer un message à 77.82.3.1
|
- Envoyer un message à 77.82.4.1
|
||||||
particularites:
|
particularites:
|
||||||
liens:
|
liens:
|
||||||
- 1: 77.82.0.1
|
- 1: 77.82.0.1
|
||||||
- num: 4
|
- num: 4
|
||||||
IP: 77.82.3.1
|
IP: 77.82.3.1
|
||||||
objectifs:
|
objectifs:
|
||||||
- Envoyer un message à 77.82.4.1
|
- Envoyer un message à 77.82.0.1
|
||||||
- Envoyer un message à 77.82.2.1 et demander une réponse
|
|
||||||
particularites:
|
particularites:
|
||||||
liens:
|
liens:
|
||||||
- 1: 77.82.0.1
|
- 1: 77.82.0.1
|
||||||
- num: 5
|
- num: 5
|
||||||
IP: 77.82.4.1
|
IP: 77.82.4.1
|
||||||
objectifs:
|
objectifs:
|
||||||
- Envoyer un message à 77.82.5.1
|
- Envoyer un message à 77.82.1.1
|
||||||
particularites:
|
particularites:
|
||||||
liens:
|
liens:
|
||||||
- 1: 77.82.0.1
|
- 1: 77.82.0.1
|
||||||
- num: 6
|
- num: 6
|
||||||
IP: 77.82.5.1
|
IP: 77.82.5.1
|
||||||
objectifs:
|
objectifs:
|
||||||
- Envoyer un message à 77.82.1.1
|
- Envoyer un message à 77.82.3.1
|
||||||
- Envoyer un message à 77.82.4.1 et demander une réponse
|
|
||||||
particularites:
|
particularites:
|
||||||
liens:
|
liens:
|
||||||
- 1: 77.82.0.1
|
- 1: 77.82.0.1
|
||||||
|
|
||||||
|
|
||||||
mesh:
|
|
||||||
roles:
|
|
||||||
- num: 1
|
|
||||||
IP: 77.82.1.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
- Envoyer message à 131.240.1.1 et demander une réponse.
|
|
||||||
liens:
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- num: 2
|
|
||||||
IP: 77.82.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
- À partir du 2e message transmis, ouvre les messages, barre ce qui est écrit et écrit quelque chose d'autre.
|
|
||||||
liens:
|
|
||||||
- 1: 77.82.1.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 3
|
|
||||||
IP: 131.240.0.1
|
|
||||||
objectifs:
|
|
||||||
- Après 5 messages transmis, arrête de transmettre les messages.
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 4: 131.240.1.1
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 4
|
|
||||||
IP: 131.240.1.1
|
|
||||||
objectifs:
|
|
||||||
- Envoyer message à 151.10.1.1 et demander une réponse.
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- num: 5
|
|
||||||
IP: 151.10.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 6: 151.10.1.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 6
|
|
||||||
IP: 151.10.1.1
|
|
||||||
objectifs:
|
|
||||||
- Envoyer message à 51.12.1.1 et demander une réponse.
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- num: 7
|
|
||||||
IP: 51.12.0.1
|
|
||||||
objectifs:
|
|
||||||
- Après 3 messages transmis, enregistre tous les messages qu'il transmet.
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 8: 51.12.1.1
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- num: 8
|
|
||||||
IP: 51.12.1.1
|
|
||||||
objectifs:
|
|
||||||
- Envoyer message à 77.81.1.1 et demander une réponse.
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
|
|
||||||
mesh_dns:
|
|
||||||
roles:
|
|
||||||
- num: 1
|
|
||||||
IP: 77.82.1.1
|
|
||||||
objectifs:
|
|
||||||
- Se connecter à 2gt1.stex pour demander la page HTML
|
|
||||||
particularites:
|
|
||||||
- Utilisateur du web.
|
|
||||||
- Connaît le serveur DNS à l'adresse 131.82.0.1
|
|
||||||
liens:
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- num: 2
|
|
||||||
IP: 77.82.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 1: 77.82.1.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 3
|
|
||||||
IP: 131.240.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 4: 131.240.1.1
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 4
|
|
||||||
IP: 131.240.1.1
|
|
||||||
objectifs:
|
|
||||||
- Répondre aux requêtes DNS.
|
|
||||||
particularites:
|
|
||||||
- Serveur DNS, connait les noms de domaine suivants
|
|
||||||
- SNT.stex à l'adresse 131..240.1.1
|
|
||||||
- 2gt1.stex à l'adresse 151.10.1.1
|
|
||||||
liens:
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- num: 5
|
|
||||||
IP: 151.10.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 6: 151.10.1.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
- num: 6
|
|
||||||
IP: 151.10.1.1
|
|
||||||
objectifs:
|
|
||||||
- Renvoyer une page HTML quand on nous le demande.
|
|
||||||
particularites:
|
|
||||||
- Serveur Web connu sous le nom de domaine 2gt1.stex
|
|
||||||
liens:
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- num: 7
|
|
||||||
IP: 51.12.0.1
|
|
||||||
objectifs:
|
|
||||||
particularites:
|
|
||||||
liens:
|
|
||||||
- 8: 51.12.1.1
|
|
||||||
- 2: 77.82.0.1
|
|
||||||
- 3: 131.240.0.1
|
|
||||||
- 5: 151.10.0.1
|
|
||||||
- num: 8
|
|
||||||
IP: 51.12.1.1
|
|
||||||
objectifs:
|
|
||||||
- Renvoyer une page HTML quand on nous le demande.
|
|
||||||
particularites:
|
|
||||||
- Serveur Web connu sous le nom de domaine SNT.stex
|
|
||||||
liens:
|
|
||||||
- 7: 51.12.0.1
|
|
||||||
|
Loading…
Reference in New Issue
Block a user