public void ejecutar(Caché caché, Explorador expl, Dictionary <string, List <string> > args) { // Crea una instancia de Dafny Dafny dafny = new Dafny(args["dafnyexe"][0]); if (!dafny.Accesible) { AyudanteConsola.imprimirError("no se encuentra el ejecutable «" + args["dafnyexe"][0] + "»"); return; } // Verifica los archivos int correctos = 0; int erroneos = 0; foreach (UnidadDafny dfy in expl.Unidades) { InformeDafny informe = null; bool yaMostrado = false; if (!caché.Consulta(dfy.Uri, out informe)) { Console.WriteLine("Verificando " + dfy.Uri + "..."); informe = dafny.Verificar(dfy.Uri); caché [dfy.Uri] = informe; MostrarInforme(dfy, informe); yaMostrado = true; } if (informe.Resultado == InformeDafny.Result.CORRECTO) { correctos++; } else { erroneos++; if (!yaMostrado) { MostrarInforme(dfy, informe); } } } Console.WriteLine(); Console.WriteLine("{0} verificados correctamente, {1} erróneos.", correctos, erroneos); }
public void Run() { ThreadPool.QueueUserWorkItem((am) => { Dafny dafny = new Dafny(DafnyExe); try { while (listener.IsListening) { ThreadPool.QueueUserWorkItem((c) => { var ctx = c as HttpListenerContext; try { // Comprueba el usuario y contraseña // (rudimentariamente) if (CAcceso != null) { var id = (HttpListenerBasicIdentity)ctx.User.Identity; if (CAcceso != id.Name + ":" + id.Password) { Console.WriteLine("Intento de acceso con " + id.Name + ":" + id.Password); ctx.Response.StatusCode = 403; ctx.Response.Close(); return; } } var path = ctx.Request.Url.LocalPath; if (path == "/webver.js") { VolcarStream(Js, ctx.Response); ctx.Response.Close(); } else if (ctx.Request.Url.LocalPath == "/webver.css") { VolcarStream(Css, ctx.Response); ctx.Response.Close(); } else if (ctx.Request.Url.LocalPath == "/ls") { ResponderLs(ctx); } else if (ctx.Request.Url.LocalPath.StartsWith("/ver/")) { ResponderVer(ctx, ctx.Request.Url.LocalPath.Substring(5)); } else if (ctx.Request.Url.LocalPath != "/") { Responder404(ctx); } else { string msg = ""; string code = ""; if (ctx.Request.ContentLength64 != 0) { StreamReader sr = new StreamReader(ctx.Request.InputStream); code = WebUtility.UrlDecode(sr.ReadToEnd()); code = code.Substring(5); msg = dafny.VerificarTexto(code).Salida; } byte[] buf = Encoding.UTF8.GetBytes(String.Format(Interfaz, code, msg)); ctx.Response.ContentLength64 = buf.Length; ctx.Response.OutputStream.Write(buf, 0, buf.Length); } } catch (Exception e) { Console.Error.WriteLine(e.Message); } finally { ctx.Response.OutputStream.Close(); } }, listener.GetContext()); } } catch { } }); }