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%>
29 <textarea class="text" rows="20" cols="7" id="comandos" placeholder="Definicion de la red como: h1:s1"></textarea>
31 <button id="btnstartvsorc" type="button" name="button" onclick="startvsorc()">Iniciar VSoRC</button>
32 <button id="btnstopvsorc" type="button" name="button" onclick="stopvsorc()">Detener VSoRC</button>
33 <button id="btnstartcontroller" type="button" name="button" onclick="startcontroller()">Iniciar controlador</button>
34 <button id="btnstopcontroller" type="button" name="button" onclick="stopcontroller()">Detener controlador</button>
39 <textarea class="text" style="font-size: 12px;" disabled rows="20" cols="7" id="vsorcout" placeholder="Salida del sistema de consola"></textarea>
41 <button type="button" name="button" onclick="pingall()">Ping all</button>
42 <button type="button" name="button" onclick="placement()">Placement</button>
43 <button type="button" name="button" onclick="iperf()">Iperf3</button>
44 <button type="button" name="button" onclick="net()">Network</button>
45 <button type="button" name="button" onclick="nodes()">Nodes</button>
46 <button type="button" name="button" onclick="status()">Status</button>
47 <button type="button" name="button" onclick="intfs()">Interfaces</button>
51 <textarea class="text" style="font-size: 12px;" rows="20" cols="7" id="vsorccommand" placeholder="Enviar comandos a la terminal"></textarea>
53 <button type="button" name="button" onclick="sendcommand()">Send</button>
54 <!-- <button type="button" name="button" onclick="cancel()">Cancel</button> -->
62 <textarea class="text" style="font-size: 12px;" disabled rows="20" cols="7" id="controllerout" placeholder="Salida del controlador"></textarea>
65 <textarea class="text" style="font-size: 12px;" disabled rows="16" cols="7" id="raspberrys" placeholder="Raspberry Pi UP!"></textarea>
71 <script type="text/javascript">
75 let topo = document.getElementById('comandos'); //Donde van escrito el DSL
76 let comando = document.getElementById('vsorccommand'); //Donde va escrito el comando para la terminal
77 let vsorcout = document.getElementById('vsorcout'); //salida del vsorc
78 let controllerout = document.getElementById('controllerout'); //salida del controlador
79 let raspberry = document.getElementById('raspberrys'); //monitor de las rpi disponibles
82 let timeController = 1000;
84 //Estos time son para especificar cada cuantos ms se pedira leer la data de los archivos aichivo, controllerout y que raspberry estan activas
86 let intervalController = null;//Para tener el id del interval para obtener data del controller
87 let intervalVsorc = null; //Para tener el id del interval para obtener data del vsorc
89 intervalVsorc = setInterval(getvsorcdata, timeVsorc);
90 intervalController=setInterval(getcontrollerdata, timeController);
91 setInterval(rpiping,timeping);
93 let xhr = new XMLHttpRequest();
94 xhr.open('GET', '/rpiping', true);
95 xhr.onload = function() {
96 if (xhr.status == 200) { //can use this.status instead
97 //console.log(xhr.responseText);// para ver en la consola
98 raspberry.value=xhr.response;
99 console.log("getting controller data");
105 function startcontroller() {
106 let xhr = new XMLHttpRequest();
107 xhr.open('GET', '/startcontroller', true);
108 //console.log(xhr); //para ver en la consola
109 xhr.onload = function() {
110 if (xhr.status == 200) { //can use this.status instead
111 console.log("controller started");
118 let xhr = new XMLHttpRequest();
119 xhr.open('GET', '/cancel', true);
120 //console.log(xhr); //para ver en la consola
121 xhr.onload = function() {
122 if (xhr.status == 200) { //can use this.status instead
123 console.log("cancelled");
130 function stopcontroller() {
131 let xhr = new XMLHttpRequest();
132 xhr.open('GET', '/stopcontroller', true);
133 xhr.onload = function() {
134 if (xhr.status == 200) { //can use this.status instead
135 //console.log(xhr.responseText);// para ver en la consola
136 console.log("controller stoped");
140 //clearInterval(intervalController);
141 controllerout.value='';
143 function getcontrollerdata() {
144 let xhr = new XMLHttpRequest();
145 xhr.open('GET', '/getcontrollerdata', true);
146 xhr.onload = function() {
147 if (xhr.status == 200) { //can use this.status instead
148 //console.log(xhr.responseText);// para ver en la consola
149 let controllerstat = xhr.response.split('^');
150 if(controllerstat[1] === "true"){
151 document.getElementById('btnstopcontroller').disabled = false;
152 document.getElementById('btnstartcontroller').disabled = true;
154 document.getElementById('btnstopcontroller').disabled = true;
155 document.getElementById('btnstartcontroller').disabled = false;
157 controllerout.value=controllerstat[0];
158 console.log("getting controller data");
163 controllerout.scrollTop = controllerout.scrollHeight;
165 function sendcommand() {
166 let xhr = new XMLHttpRequest();
167 cmd = JSON.stringify(comando.value);
168 xhr.open('GET', '/sendcommand?cmd=' + cmd, true);
169 xhr.onload = function() {
170 if (xhr.status == 200) { //can use this.status instead
171 //console.log(xhr.responseText);// para ver en la consola
172 console.log("command sended is "+cmd);
179 function startvsorc() {
180 let xhr = new XMLHttpRequest();
181 topology = JSON.stringify(topo.value)
182 xhr.open('GET', '/startvsorc?topology=' + topology, true);
183 xhr.onload = function() {
184 if (xhr.status == 200) { //can use this.status instead
185 //console.log(xhr.responseText);// para ver en la consola
186 console.log("vsorc started");
193 function stopvsorc() {
194 let xhr = new XMLHttpRequest();
195 xhr.open('GET', '/stopvsorc', true);
196 xhr.onload = function() {
197 if (xhr.status == 200) { //can use this.status instead
198 //console.log(xhr.responseText);// para ver en la consola
200 console.log("vsorc stopped");
204 //clearInterval(intervalVsorc);
208 function getvsorcdata() {
209 let xhr = new XMLHttpRequest();
210 xhr.open('GET', '/getvsorcdata', true);
211 xhr.onload = function() {
212 if (xhr.status == 200) { //can use this.status instead
213 //console.log(xhr.responseText);// para ver en la consola
216 //cambiar boton con vaina[1]
217 //vsorcout = vaina[0]
218 let vsorcstat = xhr.response.split('^');
219 if(vsorcstat[1] === "true"){
220 document.getElementById('btnstopvsorc').disabled = false;
221 document.getElementById('btnstartvsorc').disabled = true;
223 document.getElementById('btnstopvsorc').disabled = true;
224 document.getElementById('btnstartvsorc').disabled = false;
227 vsorcout.value=vsorcstat[0];
229 console.log("getting vsorc data");
236 vsorcout.scrollTop = vsorcout.scrollHeight;
241 let xhr = new XMLHttpRequest();
242 xhr.open('GET', '/pingall', true);
243 xhr.onload = function() {
244 if (xhr.status == 200) { //can use this.status instead
245 //console.log(xhr.responseText);// para ver en la consola
246 vsorcout.value+=xhr.response;
247 console.log("pingall");
256 let xhr = new XMLHttpRequest();
257 xhr.open('GET', '/iperf', true);
258 xhr.onload = function() {
259 if (xhr.status == 200) { //can use this.status instead
260 //console.log(xhr.responseText);// para ver en la consola
261 vsorcout.value+=xhr.response;
262 console.log("iperf");
270 function placement() {
271 let xhr = new XMLHttpRequest();
272 xhr.open('GET', '/placement', true);
273 xhr.onload = function() {
274 if (xhr.status == 200) { //can use this.status instead
275 //console.log(xhr.responseText);// para ver en la consola
276 vsorcout.value+=xhr.response;
277 console.log("placement");
286 let xhr = new XMLHttpRequest();
287 xhr.open('GET', '/net', true);
288 xhr.onload = function() {
289 if (xhr.status == 200) { //can use this.status instead
290 //console.log(xhr.responseText);// para ver en la consola
291 vsorcout.value+=xhr.response;
301 let xhr = new XMLHttpRequest();
302 xhr.open('GET', '/nodes', true);
303 xhr.onload = function() {
304 if (xhr.status == 200) { //can use this.status instead
305 //console.log(xhr.responseText);// para ver en la consola
306 vsorcout.value+=xhr.response;
307 console.log("nodes");
316 let xhr = new XMLHttpRequest();
317 xhr.open('GET', '/statusnodes', true);
318 xhr.onload = function() {
319 if (xhr.status == 200) { //can use this.status instead
320 //console.log(xhr.responseText);// para ver en la consola
321 vsorcout.value+=xhr.response;
322 console.log("statusnodes");
331 let xhr = new XMLHttpRequest();
332 xhr.open('GET', '/intfs', true);
333 xhr.onload = function() {
334 if (xhr.status == 200) { //can use this.status instead
335 //console.log(xhr.responseText);// para ver en la consola
336 vsorcout.value+=xhr.response;
337 console.log("interfaces");
349 <%include ../../partials/footer%>