6 <!-- <link rel="stylesheet" type="text/css" href="/styles/main.css" /> -->
7 <%include ../../partials/head%>
8 <link rel="stylesheet" type="text/css" href="/styles/starter.css" />
9 <link rel="stylesheet" href="/node_modules/xterm/css/xterm.css" />
10 <!-- <link rel="stylesheet" href="/node_modules/xterm/dist/addons/fullscreen/fullscreen.css" /> -->
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.auto.min.js"></script>
12 <script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/1.0.0/fetch.min.js"></script>
13 <script src="/node_modules/xterm/lib/xterm.js"></script>
14 <script src="/node_modules/xterm-addon-fit/lib/xterm-addon-fit.js"></script>
15 <script src="/node_modules/xterm-addon-attach/lib/xterm-addon-attach.js"></script>
16 <!-- <script src="/node_modules/xterm/dist/addons/winptyCompat/winptyCompat.js"></script> -->
20 <%include ../../partials/header%>
30 <textarea class="text" rows="20" cols="7" id="comandos" placeholder="Definicion de la red como: h1:s1"></textarea>
32 <button type="button" name="button" onclick="startvsorc()">Iniciar VSoRC</button>
33 <button type="button" name="button" onclick="stopvsorc()">Detener VSoRC</button>
34 <button type="button" name="button" onclick="startcontroller()">Iniciar controlador</button>
35 <button type="button" name="button" onclick="stopcontroller()">Detener controlador</button>
40 <textarea class="text" style="font-size: 12px;" disabled rows="20" cols="7" id="vsorcout" placeholder="Salida del sistema de consola"></textarea>
42 <button type="button" name="button" onclick="pingall()">Ping all</button>
43 <button type="button" name="button" onclick="placement()">Placement</button>
44 <button type="button" name="button" onclick="iperf()">Iperf3</button>
53 <textarea class="text" style="font-size: 12px;" disabled rows="20" cols="7" id="controllerout" placeholder="Salida del controlador"></textarea>
56 <div class="terminal"></div>
60 <script type="text/javascript">
64 let topo = document.getElementById('comandos') //Donde van escrito el DSL
65 let vsorcout = document.getElementById('vsorcout') //salida del vsorc
66 let controllerout = document.getElementById('controllerout') //salida del controlador
68 let intervalController = null;
69 let intervalVsorc = null
71 function startcontroller() {
73 let xhr = new XMLHttpRequest();
74 xhr.open('GET', '/startcontroller', true);
75 //console.log(xhr); //para ver en la consola
76 xhr.onload = function() {
77 if (xhr.status == 200) { //can use this.status instead
78 console.log("controller started");
82 intervalController=setInterval(getcontrollerdata, 500);
85 function stopcontroller() {
86 let xhr = new XMLHttpRequest();
87 xhr.open('GET', '/stopcontroller', true);
88 xhr.onload = function() {
89 if (xhr.status == 200) { //can use this.status instead
90 //console.log(xhr.responseText);// para ver en la consola
91 console.log("controller stoped");
95 clearInterval(intervalController);
96 controllerout.value='';
98 function getcontrollerdata() {
99 let xhr = new XMLHttpRequest();
100 xhr.open('GET', '/getcontrollerdata', true);
101 xhr.onload = function() {
102 if (xhr.status == 200) { //can use this.status instead
103 //console.log(xhr.responseText);// para ver en la consola
104 controllerout.value=xhr.response;
105 console.log("getting controller data");
110 controllerout.scrollTop = controllerout.scrollHeight;
113 function startvsorc() {
114 let xhr = new XMLHttpRequest();
115 topology = JSON.stringify(topo.value)
116 xhr.open('GET', '/startvsorc?topology=' + topology, true);
117 xhr.onload = function() {
118 if (xhr.status == 200) { //can use this.status instead
119 //console.log(xhr.responseText);// para ver en la consola
120 console.log("vsorc started");
124 intervalVsorc = setInterval(getvsorcdata, 2000);
127 function stopvsorc() {
128 let xhr = new XMLHttpRequest();
129 xhr.open('GET', '/stopvsorc', true);
130 xhr.onload = function() {
131 if (xhr.status == 200) { //can use this.status instead
132 //console.log(xhr.responseText);// para ver en la consola
134 console.log("vsorc stopped");
138 clearInterval(intervalVsorc);
142 function getvsorcdata() {
143 let xhr = new XMLHttpRequest();
144 xhr.open('GET', '/getvsorcdata', true);
145 xhr.onload = function() {
146 if (xhr.status == 200) { //can use this.status instead
147 //console.log(xhr.responseText);// para ver en la consola
148 vsorcout.value=xhr.response;
149 console.log("getting vsorc data");
156 vsorcout.scrollTop = vsorcout.scrollHeight;
159 let xhr = new XMLHttpRequest();
160 xhr.open('GET', '/pingall', true);
161 xhr.onload = function() {
162 if (xhr.status == 200) { //can use this.status instead
163 //console.log(xhr.responseText);// para ver en la consola
164 vsorcout.value+=xhr.response;
165 console.log("pingall");
172 function placement() {
173 let xhr = new XMLHttpRequest();
174 xhr.open('GET', '/placement', true);
175 xhr.onload = function() {
176 if (xhr.status == 200) { //can use this.status instead
177 //console.log(xhr.responseText);// para ver en la consola
178 vsorcout.value+=xhr.response;
179 console.log("placement");
186 ///////////////////////////////////////////////////////////////////////CODIGO DE LA terminal
187 // No idea what these are about. Just copied them from the demo code
188 // Terminal.applyAddon(attach);
189 // Terminal.applyAddon(fit);
190 // Terminal.applyAddon(winptyCompat);
193 // const fitAddon = new FitAddon();
194 // term.loadAddon(fitAddon);
197 const term = new Terminal();
198 // No idea what this does
199 // term.winptyCompatInit();
200 // This kinda makes sense
201 const container = document.getElementById('terminal');
202 term.open(container);
203 // Open the websocket connection to the backend
204 const protocol = (location.protocol === 'https:') ? 'wss://' : 'ws://';
205 const port = location.port ? `:${location.port}` : '';
206 const socketUrl = `${protocol}${location.hostname}${port}/shell`;
207 const socket = new WebSocket(socketUrl);
208 const attachAddon = new AttachAddon(socket);
209 term.loadAddon(attachAddon);
210 // Attach the socket to the terminal
211 socket.onopen = (ev) => { term.attach(socket); };
212 // Not going to worry about close/error for the websocket
213 //////////////////////////////////////////////////////////////////////FIN DEL CODIGO DE LA TERMINAL
218 <%include ../../partials/footer%>