Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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 { }
            });
        }