Beispiel #1
0
        public async Task <IActionResult> Create(Progetto progetto, string progettoDaCopiare)
        {
            if (ModelState.IsValid)
            {
                _context.Add(progetto);
                await _context.SaveChangesAsync();

                if (!string.IsNullOrEmpty(progettoDaCopiare) && !progettoDaCopiare.Equals("0"))
                {
                    List <ModuliProgetto> listaCopiata = await _context.ModuliProgetto.Where(m => m.ProgettoID == int.Parse(progettoDaCopiare)).ToListAsync();

                    int prgNuovo = progetto.ID;
                    foreach (var el in listaCopiata)
                    {
                        _context.ModuliProgetto.Add(new ModuliProgetto {
                            ProgettoID = prgNuovo, ModuloID = el.ModuloID, Target = el.Target
                        });
                    }
                    await _context.SaveChangesAsync();
                }
                MyLogger.Log(messaggio: $"Richiesta POST:\n\tNuovo progetto con nome {progetto.Nome}", controller: "ProgettoController", metodo: "Create");
                return(RedirectToAction(nameof(Edit), new { id = progetto.ID }));
            }
            MyLogger.Log(messaggio: $"ERRORE: Richiesta POST: Richiesta malformata", controller: "ProgettoController", metodo: "Create");
            return(View(progetto));
        }
Beispiel #2
0
        private ModuliInseriti PopolaModuliAssegnati(Progetto progetto)
        {
            var tuttiModuli    = _context.Moduli;
            var moduliProgetto = new HashSet <ModuliProgetto>(progetto.ModuliProgetto);
            var dati           = new List <ModuliInProgetto>();

            foreach (var modulo in tuttiModuli)
            {
                bool   inserito = moduliProgetto.Any(m => m.ModuloID == modulo.ID);
                string target   = "";
                if (inserito)
                {
                    target = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID).Target;
                }
                dati.Add(new ModuliInProgetto
                {
                    ModuloID     = modulo.ID,
                    Nome         = modulo.Nome,
                    Comando      = modulo.Comando,
                    Inserito     = inserito,
                    Target       = target,
                    Applicazione = modulo.Applicazione,
                });
            }
            var viewmodel = new ModuliInseriti {
                Progetto = progetto, ListaModuliConTarget = dati
            };

            //ViewData["Moduli"] = dati;
            return(viewmodel);
        }
Beispiel #3
0
        public IHttpActionResult InsertMethod()
        {
            // creo un progetto nuovo
            var pro1 = new Progetto()
            {
                ProjectName  = "StudioWeb",
                ProjectType  = "Web Site",
                DurationDays = 30
            };

            var pro2 = new Progetto()
            {
                ProjectName  = "ConsoleOne",
                ProjectType  = "Console",
                DurationDays = 15
            };

            var u = new User()
            {
                Nome         = "Cristiano Motta",
                IsActive     = true,
                CreationDate = DateTime.Now,
                Progetti     = { pro1, pro2 }
            };

            var repo = new UsersRepository();

            repo.Add(u);

            return(Ok(JsonConvert.SerializeObject(u)));
        }
Beispiel #4
0
        public IHttpActionResult Insert2Method()
        {
            var repUsers = new UsersRepository();
            var chicco   = repUsers.FindById(3);

            var pro = new Progetto()
            {
                ProjectName  = "progetto Numero tre",
                ProjectType  = "Spatial application game",
                DurationDays = 100,
            };

            chicco.Progetti.Add(pro);
            repUsers.Update(chicco);

            return(Ok("Ok"));
        }
Beispiel #5
0
        private ModuliInseriti PopolaModuliAssegnatiErrore(Progetto progetto, List <ModuliInProgetto> listaModuliAggiornati, List <string> ModuliSenzaTarget, List <string> ModuliSenzaInserito)
        {
            var tuttiModuli = _context.Moduli;
            var dati        = new List <ModuliInProgetto>();

            foreach (var modulo in tuttiModuli)
            {
                bool   inserito = listaModuliAggiornati.Any(m => m.ModuloID == modulo.ID && m.Inserito);
                string target   = listaModuliAggiornati.SingleOrDefault(m => m.ModuloID == modulo.ID).Target;
                if (inserito && string.IsNullOrEmpty(target))
                {
                    //guardo se c'è il target, sennò lo metto nella lista dei moduli senza target
                    if (modulo.Applicazione != webmva.Models.APPLICAZIONE.WIFITE && modulo.Applicazione != webmva.Models.APPLICAZIONE.NOSQL && modulo.Applicazione != webmva.Models.APPLICAZIONE.OPENVAS && modulo.Applicazione != webmva.Models.APPLICAZIONE.SERVER)
                    {
                        ModuliSenzaTarget.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome);
                    }
                }

                else if (!inserito && !string.IsNullOrEmpty(target))
                {
                    // il target è non vuoto ma non è stato inserito, quindi lo metto nella lista dei moduli senza inserito
                    ModuliSenzaInserito.Add(modulo.Applicazione.ToString() + "- " + modulo.Nome);
                }
                dati.Add(new ModuliInProgetto
                {
                    ModuloID     = modulo.ID,
                    Nome         = modulo.Nome,
                    Comando      = modulo.Comando,
                    Inserito     = inserito,
                    Target       = target,
                    Applicazione = modulo.Applicazione,
                });
            }
            var viewmodel = new ModuliInseriti {
                Progetto = progetto, ListaModuliConTarget = dati
            };

            //ViewData["Moduli"] = dati;
            return(viewmodel);
        }
Beispiel #6
0
        private bool AggiornaModuliInseriti(List <ModuliInProgetto> moduliDaAggiornare, Progetto progetto)
        {
            if (moduliDaAggiornare.All(m => m.Inserito == false && string.IsNullOrEmpty(m.Target)))
            {
                progetto.ModuliProgetto = new List <ModuliProgetto>();
                //Console.WriteLine("Inserire almeno un modulo col relativo target");
                return(false);
            }
            if (moduliDaAggiornare.Any(m => !m.Inserito && !string.IsNullOrEmpty(m.Target)))
            {
                //Console.WriteLine("Ci sono dei moduli non inseriti ma col target");
                return(false);
            }
            if (moduliDaAggiornare.Any(m => m.Inserito && string.IsNullOrEmpty(m.Target)))
            {
                //I moduli WIFITE, NOSQLMAP, SERVER e OPENVAS non hanno bisogno del target
                List <ModuliInProgetto> ModuliEccezioni = moduliDaAggiornare.Where(m => m.Inserito && string.IsNullOrEmpty(m.Target)).ToList();
                foreach (var itm in ModuliEccezioni)
                {
                    if (itm.Applicazione == webmva.Models.APPLICAZIONE.WIFITE ||
                        itm.Applicazione == webmva.Models.APPLICAZIONE.NOSQL ||
                        itm.Applicazione == webmva.Models.APPLICAZIONE.SERVER ||
                        itm.Applicazione == webmva.Models.APPLICAZIONE.OPENVAS)
                    {
                        continue;
                    }
                    else
                    {
                        return(false);
                    }
                }
                //Console.WriteLine("Ci sono dei moduli inseriti ma senza target");
                //return false;
            }

            var moduliSelezionatiHS = moduliDaAggiornare.Where(m => m.Inserito == true);
            var moduliGiaPresenti   = new HashSet <ModuliProgetto>(progetto.ModuliProgetto);

            foreach (var modulo in _context.Moduli)
            {
                if (moduliSelezionatiHS.Any(m => m.ModuloID == modulo.ID))
                {
                    // Se nei moduli già presenti nel progetto non c'è quello che sto guardando:
                    if (!moduliGiaPresenti.Any(m => m.ModuloID == modulo.ID))
                    {
                        var mod = moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID);
                        // Creo l'associazione tra progetto e modulo col relativo target
                        _context.Add(new ModuliProgetto {
                            ModuloID = modulo.ID, ProgettoID = progetto.ID, Target = mod.Target
                        });
                    }
                    // altrimenti, se il modulo era presente ma il target è stato cambiato
                    else if (moduliGiaPresenti.SingleOrDefault(m => m.ModuloID == modulo.ID).Target != moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID).Target)
                    {
                        // lo aggiorno col nuovo target
                        var associazioneDaAggiornare = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID && m.ProgettoID == progetto.ID);
                        associazioneDaAggiornare.Target = moduliDaAggiornare.SingleOrDefault(m => m.ModuloID == modulo.ID).Target;
                        _context.Update(associazioneDaAggiornare);
                    }
                }
                // se sono qui il modulo va eliminato
                else
                {
                    if (moduliGiaPresenti.Any(m => m.ModuloID == modulo.ID))
                    {
                        ModuliProgetto moduloDaRimuovere = progetto.ModuliProgetto.SingleOrDefault(m => m.ModuloID == modulo.ID && m.ProgettoID == progetto.ID);
                        _context.Remove(moduloDaRimuovere);
                    }
                }
            }
            return(true);
        }
Beispiel #7
0
        public static void AggiungiIntestazione(string percorso, MyDbContext context)
        {
            if (string.IsNullOrEmpty(percorso))
            {
                return;
            }
            List <string> content  = System.IO.File.ReadLines(Path.Combine("wwwroot", "Report", percorso)).ToList();
            var           progetto = percorso.Split(Path.DirectorySeparatorChar).ElementAt(0);
            Progetto      p        = context.Progetti
                                     .Include(x => x.ModuliProgetto)
                                     .ThenInclude(m => m.Modulo)
                                     .SingleOrDefault(s => s.Nome == progetto);
            var filename   = Path.GetFileName(percorso).Split('_');
            var nomeModulo = filename[3].Substring(0, filename[3].LastIndexOf('.'));
            var data       = DateTime
                             .ParseExact(filename[0] + filename[1],
                                         "yyyyMMddHHmmss",
                                         System.Globalization.CultureInfo.InvariantCulture)
                             .ToString("dd MMMM yyyy alle HH:mm:ss");
            var           associazione = p.ModuliProgetto.SingleOrDefault(x => x.Modulo.Nome.ToCamelCase() == nomeModulo && x.Modulo.Applicazione.ToString().ToLower() == filename[2]);
            var           comando      = associazione.Modulo.Comando;
            var           target       = associazione.Target;
            List <string> intestazione = new List <string>();

            if (Path.GetExtension(percorso).Equals(".txt"))
            {
                if (filename[2].Equals("infoga") || filename[2].Equals("infogaemail"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"  _____        __                  
 |_   _|      / _|                 
   | |  _ __ | |_ ___   __ _  __ _ 
   | | | '_ \|  _/ _ \ / _` |/ _` |
  _| |_| | | | || (_) | (_| | (_| |
 |_____|_| |_|_| \___/ \__, |\__,_|
                        __/ |      
                       |___/      ");
                }
                else if (filename[2].Equals("sublist3r"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"   _____       _     _ _     _   ____       
  / ____|     | |   | (_)   | | |___ \      
 | (___  _   _| |__ | |_ ___| |_  __) |_ __ 
  \___ \| | | | '_ \| | / __| __||__ <| '__|
  ____) | |_| | |_) | | \__ \ |_ ___) | |   
 |_____/ \__,_|_.__/|_|_|___/\__|____/|_|   ");
                }
                else if (filename[2].Equals("wapiti"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@" __          __         _ _   _ 
 \ \        / /        (_) | (_)
  \ \  /\  / /_ _ _ __  _| |_ _ 
   \ \/  \/ / _` | '_ \| | __| |
    \  /\  / (_| | |_) | | |_| |
     \/  \/ \__,_| .__/|_|\__|_|
                 | |            
                 |_|            ");
                }
                else if (filename[2].Equals("opendoor"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"   ____                   _____                   
  / __ \                 |  __ \                  
 | |  | |_ __   ___ _ __ | |  | | ___   ___  _ __ 
 | |  | | '_ \ / _ \ '_ \| |  | |/ _ \ / _ \| '__|
 | |__| | |_) |  __/ | | | |__| | (_) | (_) | |   
  \____/| .__/ \___|_| |_|_____/ \___/ \___/|_|   
        | |                                       
        |_|                                      ");
                }
                else if (filename[2].Equals("sqlmap"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"   _____  ____  _      __  __             
  / ____|/ __ \| |    |  \/  |            
 | (___ | |  | | |    | \  / | __ _ _ __  
  \___ \| |  | | |    | |\/| |/ _` | '_ \ 
  ____) | |__| | |____| |  | | (_| | |_) |
 |_____/ \___\_\______|_|  |_|\__,_| .__/ 
                                   | |    
                                   |_|   ");
                }
                else if (filename[2].Equals("joomscan"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"       _                        _____                 
      | |                      / ____|                
      | | ___   ___  _ __ ___ | (___   ___ __ _ _ __  
  _   | |/ _ \ / _ \| '_ ` _ \ \___ \ / __/ _` | '_ \ 
 | |__| | (_) | (_) | | | | | |____) | (_| (_| | | | |
  \____/ \___/ \___/|_| |_| |_|_____/ \___\__,_|_| |_|");
                }
                else if (filename[2].Equals("wpscan"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@" __          _______   _____                 
 \ \        / /  __ \ / ____|                
  \ \  /\  / /| |__) | (___   ___ __ _ _ __  
   \ \/  \/ / |  ___/ \___ \ / __/ _` | '_ \ 
    \  /\  /  | |     ____) | (_| (_| | | | |
     \/  \/   |_|    |_____/ \___\__,_|_| |_| ");
                }
                else if (filename[2].Equals("wascan"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@" __          __      _____                 
 \ \        / /\    / ____|                
  \ \  /\  / /  \  | (___   ___ __ _ _ __  
   \ \/  \/ / /\ \  \___ \ / __/ _` | '_ \ 
    \  /\  / ____ \ ____) | (_| (_| | | | |
     \/  \/_/    \_\_____/ \___\__,_|_| |_|");
                }
                else if (filename[2].Equals("odat"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"   ____  _____       _______ 
  / __ \|  __ \   /\|__   __|
 | |  | | |  | | /  \  | |   
 | |  | | |  | |/ /\ \ | |   
 | |__| | |__| / ____ \| |   
  \____/|_____/_/    \_\_|   ");
                }
                else if (filename[2].Equals("droope"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"  _____                                                          ");
                    intestazione.Add(@" |  __ \                                                         ");
                    intestazione.Add(@" | |  | | _ __  ___    ___   _ __    ___  ___   ___  __ _  _ __  ");
                    intestazione.Add(@" | |  | || '__|/ _ \  / _ \ | '_ \  / _ \/ __| / __|/ _` || '_ \ ");
                    intestazione.Add(@" | |__| || |  | (_) || (_) || |_) ||  __/\__ \| (__| (_| || | | |");
                    intestazione.Add(@" |_____/ |_|   \___/  \___/ | .__/  \___||___/ \___|\__,_||_| |_|");
                    intestazione.Add(@"                            | |                                  ");
                    intestazione.Add(@"                            |_|                                  ");
                }
                else if (filename[2].Equals("fierce"))
                {
                    intestazione.Add(@"___________________________________________________________________");
                    intestazione.Add(@"          ______ _                   ");
                    intestazione.Add(@"         |  ____(_)                  ");
                    intestazione.Add(@"         | |__   _  ___ _ __ ___ ___ ");
                    intestazione.Add(@"         |  __| | |/ _ \ '__/ __/ _ \");
                    intestazione.Add(@"         | |    | |  __/ | | (_|  __/");
                    intestazione.Add(@"         |_|    |_|\___|_|  \___\___|");
                }
                else if (filename[2].Equals("amass"))
                {
                    intestazione.Add(@"     /\                            
    /  \   _ __ ___   __ _ ___ ___ 
   / /\ \ | '_ ` _ \ / _` / __/ __|
  / ____ \| | | | | | (_| \__ \__ \
 /_/    \_\_| |_| |_|\__,_|___/___/");
                }
                else if (filename[2].Equals("drupwn"))
                {
                    intestazione.Add(@"  _____             _______          ___   _ 
 |  __ \           |  __ \ \        / / \ | |
 | |  | |_ __ _   _| |__) \ \  /\  / /|  \| |
 | |  | | '__| | | |  ___/ \ \/  \/ / | . ` |
 | |__| | |  | |_| | |      \  /\  /  | |\  |
 |_____/|_|   \__,_|_|       \/  \/   |_| \_|");
                }
                else if (filename[2].Equals("whois"))
                {
                    intestazione.Add(@" __          ___           _     
 \ \        / / |         (_)    
  \ \  /\  / /| |__   ___  _ ___ 
   \ \/  \/ / | '_ \ / _ \| / __|
    \  /\  /  | | | | (_) | \__ \
     \/  \/   |_| |_|\___/|_|___/");
                }

                intestazione.Add(@"___________________________________________________________________");
                intestazione.Add("");
                intestazione.Add(@" Progetto: " + progetto);
                intestazione.Add(@" Nome Modulo: " + nomeModulo);
                intestazione.Add(@" Comando eseguito: " + comando);
                intestazione.Add(@" Target: " + target);
                intestazione.Add("");
                intestazione.Add("\tScan iniziato il " + data);
                intestazione.Add(@"___________________________________________________________________");
                intestazione.Add("");
                intestazione.Add("");


                for (int i = 0; i < intestazione.Count; i++)
                {
                    content.Insert(i, intestazione.ElementAt(i));
                }
            }
            else if (Path.GetExtension(percorso).Equals(".xml"))
            {
                int riga = 0;
                if (filename[2].Equals("nmap"))
                {
                    riga = content.IndexOf("</nmaprun>");
                }
                else if (filename[2].Equals("dnsrecon"))
                {
                    riga = content.IndexOf("</records>");
                }
                else if (filename[2].Equals("dnsenum"))
                {
                    int r = content.FindIndex(x => x.Contains("</testdata>"));
                    if (r == 1)
                    {
                        int    index     = content.ElementAt(r).Substring(0, content.ElementAt(r).LastIndexOf("/")).LastIndexOf("/") - 1;
                        int    lunghezza = content.ElementAt(r).Length;
                        string pezzoDaMettereInNuovaRiga = content.ElementAt(r).Substring(index, lunghezza - index);
                        string rigaNuova = content.ElementAt(r).Substring(0, index);
                        content.RemoveAt(r);
                        content.Add(rigaNuova);
                        content.Add("");
                        content.Add("");
                        content.Add(pezzoDaMettereInNuovaRiga);
                        riga = r + 1;
                    }
                    else
                    {
                        riga = r;
                    }
                }
                content.Insert(riga, $@"<webmva>
                <scaninfo>
                <progetto>{progetto}</progetto>
                <modulo>{nomeModulo}</modulo>
                <comando>{comando}</comando>
                <target>{target}</target>
                <data>{data}</data>
                </scaninfo>
                </webmva>");
            }
            else if (Path.GetExtension(percorso).Equals(".html"))
            {
                if (filename[2].Equals("theharvester"))
                {
                    int    r         = content.FindIndex(x => x.Contains("<body>"));
                    string appoggio  = $@"<body>
                        <br />
                        <h3>Progetto: {progetto}<br />
                        Modulo: {nomeModulo}<br />
                        Comando: {comando}<br />
                        Target: {target}<br />
                        Data: {data}</h3>
                        <h1>";
                    string rigaNuova = content.ElementAt(r).Replace("<body><h1>", appoggio);

                    content.RemoveAt(r);
                    content.Add(rigaNuova);
                }
            }
            System.IO.File.WriteAllLines(Path.Combine("wwwroot", "Report", percorso), content);
        }
Beispiel #8
0
        public static void Initialize(MyDbContext context)
        {
            context.Database.EnsureCreated();
            if (context.Moduli.Any())
            {
                return;
            }
            var moduli = new Modulo[]
            {
                new ModuloNMAP {
                    Applicazione = APPLICAZIONE.NMAP, Nome = "Ping Scan", NonTCPScan = NONTCPSCAN.NOPORT
                },                                                                                           //-sn
                new ModuloNMAP {
                    Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Veloce", Tempo = TEMPI.QUATTRO, FastScan = true
                },                                                                                                    // -T4 -F
                new ModuloNMAP {
                    Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Intenso", Tempo = TEMPI.QUATTRO, AllDetections = true, IncreaseVerbosity = true
                },                                                                                                                                   // -T4 -A -v
                new ModuloNMAP {
                    Applicazione = APPLICAZIONE.NMAP, Nome = "Scan Porte UDP", TCPScan = TCPSCAN.SYN, NonTCPScan = NONTCPSCAN.UDP
                },                                                                                                                  //-sS -sU
                new ModuloNMAP {
                    Applicazione = APPLICAZIONE.NMAP, Nome = "Scan All TCP", ListSpecificPort = "1-65535"
                },                                                                                            // -p 1-65535
                new ModuloWAPITI {
                    Applicazione = APPLICAZIONE.WAPITI, Nome = "Scan Base"
                },
                new ModuloOPENDOOR {
                    Applicazione = APPLICAZIONE.OPENDOOR, Nome = "Scan Base"
                },
                new ModuloWASCAN {
                    Applicazione = APPLICAZIONE.WASCAN, Nome = "Scan Base"
                },
                new ModuloDROOPE {
                    Applicazione = APPLICAZIONE.DROOPE, Nome = "Scan generico automatico"
                },
                new ModuloDROOPE {
                    Applicazione = APPLICAZIONE.DROOPE, Nome = "Scan Drupal", Cms = CMS.DRUPAL
                },
                new ModuloWPSCAN {
                    Applicazione = APPLICAZIONE.WPSCAN, Nome = "Scan base non intrusivo"
                },
                new ModuloJOOMSCAN {
                    Applicazione = APPLICAZIONE.JOOMSCAN, Nome = "Scan base"
                },
                new ModuloDNSRECON {
                    Applicazione = APPLICAZIONE.DNSRECON, Nome = "Scan base"
                },
                new ModuloDNSENUM {
                    Applicazione = APPLICAZIONE.DNSENUM, Nome = "Scan base"
                },
                new ModuloFIERCE {
                    Applicazione = APPLICAZIONE.FIERCE, Nome = "Scan base"
                },
                new ModuloINFOGA {
                    Applicazione = APPLICAZIONE.INFOGA, Nome = "Scan base"
                },
                new ModuloINFOGAEMAIL {
                    Applicazione = APPLICAZIONE.INFOGAEMAIL, Nome = "Scan Email con breach", Breach = true
                },
                new ModuloSUBLIST3R {
                    Applicazione = APPLICAZIONE.SUBLIST3R, Nome = "Scan base", AllSUB = true
                },
                new ModuloSQLMAP {
                    Applicazione = APPLICAZIONE.SQLMAP, Nome = "Scan base"
                },
                new ModuloNOSQL {
                    Applicazione = APPLICAZIONE.NOSQL, Nome = "NoSQL"
                },
                new ModuloODAT {
                    Applicazione = APPLICAZIONE.ODAT, Nome = "Scan base"
                },
                new ModuloWIFITE {
                    Applicazione = APPLICAZIONE.WIFITE, Nome = "Scan base interattivo"
                },
                new ModuloAMASS {
                    Applicazione = APPLICAZIONE.AMASS, Nome = "Scan base"
                },
                new ModuloDRUPWN {
                    Applicazione = APPLICAZIONE.AMASS, Nome = "Scan base"
                },
                new ModuloTHEHARVESTER {
                    Applicazione = APPLICAZIONE.THEHARVESTER, Nome = "Scan tutte le fonti"
                },
                new ModuloWHOIS {
                    Applicazione = APPLICAZIONE.WHOIS, Nome = "Whois da Registro.it", HostWhois = "whois.nic.it"
                }
            };

            foreach (Modulo m in moduli)
            {
                context.Moduli.Add(m);
            }
            context.SaveChanges();

            if (context.Progetti.Any())
            {
                return;
            }
            var progetti = new Progetto[]
            {
                new Progetto {
                    Nome = "Test1", Descrizione = "Questo carattere speciale viene chiamato spazio unificatore perché non indica la fine della linea e impedisce il conseguente ritorno a capo. Utilizzando eccessivamente tale simbolo i browser avrebbero delle difficoltà a inserire correttamente le interruzioni al termine delle linee di testo nel tentativo di renderlo ordinato e leggibile"
                },
                new Progetto {
                    Nome = "Test2"
                },
            };

            foreach (Progetto p in progetti)
            {
                context.Progetti.Add(p);
            }
            context.SaveChanges();
        }