Advertisement
Guest User

Untitled

a guest
Apr 20th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 22.82 KB | None | 0 0
  1. #region using;
  2. using System;
  3. using Sys = Cosmos.System;
  4. using System.IO;
  5. using Cosmos.System.FileSystem;
  6. using Cosmos.System.Network.IPv4;
  7. using Cosmos.System.Network;
  8. using CosmosKernel2.Apps;
  9.  
  10. #endregion
  11.  
  12. namespace CosmosKernel2
  13. {
  14.     public class Kernel : Sys.Kernel
  15.     {
  16.         #region OdeOSlogo
  17.  
  18.         private void OdeOSlogo()
  19.         {
  20.             Console.WriteLine(" ");
  21.             Console.WriteLine("|------------------------------------------------------------------------------|");
  22.             Console.WriteLine(" _____   _____   _____        _____   _____");
  23.             Console.WriteLine("/  _    |  _    | ____|      /  _    /  ___/");
  24.             Console.WriteLine("| | | | | | | | | |__        | | | | | |___");
  25.             Console.WriteLine("| | | | | | | | |  __|       | | | |  ___   ");
  26.             Console.WriteLine("| |_| | | |_| | | |___       | |_| |  ___| |   version " + version);
  27.             Console.WriteLine(" _____/ |_____/ |_____|       _____/ /_____/   cree par valentinbreiz");
  28.             Console.WriteLine(" ");
  29.             Console.WriteLine("|------------------------------------------------------------------------------|");
  30.             Console.WriteLine(" ");
  31.         }
  32.  
  33.         #endregion
  34.  
  35.         #region Global variables
  36.  
  37.         string version = "0.0.2";
  38.         string current_directory = "0:\\";
  39.  
  40.         #endregion
  41.  
  42.         #region BeforeRun & Run
  43.         protected override void BeforeRun()
  44.         {
  45.             try
  46.             {
  47.  
  48.                 try
  49.                 {
  50.                     Console.WriteLine("Initialisation clavier FR...");
  51.                     Sys.KeyboardManager.SetKeyLayout(new Sys.ScanMaps.FR_Standard());
  52.                     Console.ForegroundColor = ConsoleColor.Green;
  53.                     Console.WriteLine("[OK]");
  54.                     Console.ForegroundColor = ConsoleColor.White;
  55.                 }
  56.                 catch
  57.                 {
  58.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  59.                     Console.WriteLine("[Erreur]");
  60.                     Console.ForegroundColor = ConsoleColor.White;
  61.                     Console.ReadKey();
  62.                 }
  63.  
  64.                 try
  65.                 {
  66.                     Console.WriteLine("Initialisation du systeme de fichier...");
  67.                     FS = new CosmosVFS();
  68.                     FS.Initialize();
  69.                     Console.ForegroundColor = ConsoleColor.Green;
  70.                     Console.WriteLine("[OK]");
  71.                     Console.ForegroundColor = ConsoleColor.White;
  72.                 }
  73.                 catch
  74.                 {
  75.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  76.                     Console.WriteLine("[Erreur]");
  77.                     Console.ForegroundColor = ConsoleColor.White;
  78.                     Console.ReadKey();
  79.                 }
  80.                 Console.ReadKey();
  81.                 try
  82.                 {
  83.                     Console.WriteLine("Scan du systeme de fichiers...");
  84.                     Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);
  85.                     Console.ForegroundColor = ConsoleColor.Green;
  86.                     Console.WriteLine("[OK]");
  87.                     Console.ForegroundColor = ConsoleColor.White;
  88.                 }
  89.                 catch
  90.                 {
  91.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  92.                     Console.WriteLine("[Erreur]");
  93.                     Console.ForegroundColor = ConsoleColor.White;
  94.                     Console.ReadKey();
  95.                 }
  96.                 Console.ReadKey();
  97.                 try
  98.                 {
  99.                     Console.WriteLine("Le Kernel a correctement demarre !");
  100.                 }
  101.                 catch
  102.                 {
  103.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  104.                     Console.WriteLine("[Erreur]");
  105.                     Console.ForegroundColor = ConsoleColor.White;
  106.                     Console.ReadKey();
  107.                 }
  108.                 Console.ReadKey();
  109.                 Console.Clear();
  110.                 OdeOSlogo();
  111.             }
  112.             catch (Exception ex)
  113.             {
  114.                 StopKernel(ex);
  115.             }
  116.  
  117.         }
  118.  
  119.  
  120.  
  121.         bool running = true;
  122.  
  123.  
  124.         public CosmosVFS FS { get; private set; }
  125.  
  126.         protected override void Run()
  127.  
  128.         {
  129.             goto name;
  130.         name:
  131.             {
  132.                 Console.WriteLine("Entrez votre pseudo et mot de passe");
  133.                 Console.Write("Votre nom : ");
  134.                 string name = Console.ReadLine();
  135.                 Console.Write("Votre mot de passe : ");
  136.                 string pass = Console.ReadLine();
  137.                 bool systemexist = Directory.Exists("0:\\System");
  138.  
  139.                 if (systemexist == true)
  140.                 {
  141.                     var userfile = File.ReadAllText("0:\\System\\user.txt");
  142.                     var passfile = File.ReadAllText("0:\\System\\pass.txt");
  143.                     if (name == userfile && pass == passfile)
  144.                     {
  145.                         Console.ForegroundColor = ConsoleColor.Green;
  146.                         Console.WriteLine("Bienvenue " + userfile + " !");
  147.                         Console.ForegroundColor = ConsoleColor.White;
  148.                         goto main;
  149.                     }
  150.                     else
  151.                     {
  152.                         Console.ForegroundColor = ConsoleColor.DarkRed;
  153.                         Console.WriteLine("Mot de passe ou nom d'utilisateur incorrect !");
  154.                         Console.ForegroundColor = ConsoleColor.White;
  155.  
  156.                         Console.Write("Acceder a OdeOS en invite ? ( o ou n ) ");
  157.                         string installinput = Console.ReadLine();
  158.                         if (installinput == "o")
  159.                         {
  160.                             Console.Clear();
  161.                             goto main;
  162.  
  163.                         }
  164.                         else
  165.                         {
  166.                             goto name;
  167.                         }
  168.  
  169.                     }
  170.  
  171.                 }
  172.                 else
  173.                 {
  174.                     Console.Write("Installer OdeOS avec '" + name + "' et '" + pass + "' ? ( o ou n ) ");
  175.                     string installinput = Console.ReadLine();
  176.                     if (installinput == "o")
  177.                     {
  178.                         running = false;
  179.                         Console.WriteLine("Installation en cours...");
  180.  
  181.                         Console.WriteLine("Creation des dossiers...");
  182.                         FS.CreateDirectory("0:\\System");
  183.                         Console.ForegroundColor = ConsoleColor.Green;
  184.                         Console.WriteLine("[OK]");
  185.                         Console.ForegroundColor = ConsoleColor.White;
  186.  
  187.                         Console.WriteLine("Creation des fichiers...");
  188.                         var f = File.Create("0:\\System\\user.txt");
  189.                         var g = File.Create("0:\\System\\pass.txt");
  190.                         Console.ForegroundColor = ConsoleColor.Green;
  191.                         Console.WriteLine("[OK]");
  192.                         Console.ForegroundColor = ConsoleColor.White;
  193.  
  194.                         Console.WriteLine("Ecriture des fichiers...");
  195.                         File.WriteAllText("0:\\System\\user.txt", name);
  196.                         File.WriteAllText("0:\\System\\pass.txt", pass);
  197.                         Console.ForegroundColor = ConsoleColor.Green;
  198.                         Console.WriteLine("[OK]");
  199.  
  200.                         Console.WriteLine("L'installation s'est deroulee avec succes !");
  201.                         Console.ForegroundColor = ConsoleColor.White;
  202.                         Console.WriteLine("Appuyez sur une touche pour acceder a OdeOS");
  203.                         Console.ReadKey();
  204.                         Console.Clear();
  205.                         running = true;
  206.                         goto main;
  207.  
  208.  
  209.                     }
  210.                     else if (installinput == "n")
  211.                     {
  212.  
  213.                         Console.Clear();
  214.                         goto main;
  215.  
  216.                     }
  217.                 }
  218.  
  219.  
  220.             }
  221.         main:
  222.             {
  223.                 while (running)
  224.                 {
  225.  
  226.                     try
  227.                     {
  228.                         Console.WriteLine(" ");
  229.                         int x = Console.CursorLeft;
  230.                         int y = Console.CursorTop;
  231.                         Console.SetCursorPosition(0, 0);
  232.                         Console.ForegroundColor = ConsoleColor.White;
  233.                         Console.BackgroundColor = ConsoleColor.Blue;
  234.                         Console.WriteLine("valentinbreiz.github.io                                            OdeOS v" + version);
  235.                         Console.BackgroundColor = ConsoleColor.Black;
  236.                         Console.WriteLine(" ");
  237.                         Console.SetCursorPosition(x, y);
  238.                         Console.ForegroundColor = ConsoleColor.White;
  239.  
  240.                         bool username = File.Exists("0:\\System\\user.txt");
  241.  
  242.                         if (username == false)
  243.                         {
  244.                             Console.Write("invit@odeos:" + current_directory + "> ");
  245.                             string input = Console.ReadLine();
  246.                             input = input.Replace("/", "\\");
  247.                             InterpretCMD(input);
  248.  
  249.                         }
  250.                         else
  251.                         {
  252.  
  253.                             var name = File.ReadAllText("0:\\System\\user.txt");
  254.                             Console.Write(name + "@odeos:" + current_directory + "> ");
  255.                             string input = Console.ReadLine();
  256.                             input = input.Replace("/", "\\");
  257.                             InterpretCMD(input);
  258.                         }
  259.  
  260.  
  261.                     }
  262.                     catch (Exception ex)
  263.                     {
  264.                         StopKernel(ex);
  265.                     }
  266.  
  267.                 }
  268.  
  269.             }
  270.  
  271.  
  272.         }
  273.         #endregion
  274.  
  275.         #region Exception
  276.  
  277.         public void StopKernel(Exception ex)
  278.         {
  279.  
  280.             running = false;
  281.             Console.BackgroundColor = ConsoleColor.DarkBlue;
  282.             Console.Clear();
  283.             Console.WriteLine("THE BLUE SCREEN OF DEATH 0.1");
  284.             Console.WriteLine("ERREUR SYSTEME");
  285.             string ex_message = ex.Message;
  286.             string inner_message = "<aucun>";
  287.             if (ex.InnerException != null)
  288.                 inner_message = ex.InnerException.Message;
  289.             Console.WriteLine($@"Erreur : {ex_message}
  290. Message d'exception : {inner_message}");
  291.  
  292.             Console.WriteLine("Appuyez sur une touche pour redemarrer");
  293.             try
  294.             {
  295.                 Console.ReadKey();
  296.             }
  297.             catch
  298.             {
  299.  
  300.             }
  301.             Sys.Power.Reboot();
  302.         }
  303.  
  304.         #endregion
  305.  
  306.         #region InterpetCMD
  307.  
  308.         private void InterpretCMD(string input)
  309.         {
  310.             string[] args = input.Split(' ');
  311.  
  312.             if (input == "shutdown")
  313.             {
  314.                 Console.Clear();
  315.                 Console.WriteLine("Le systeme est pret a s'arreter");
  316.                 running = false;
  317.                 Console.Write("Confirmez vous la mise hors tension du systeme ? (o ou n) ");
  318.                 string shutinput = Console.ReadLine();
  319.                 if (shutinput == "o")
  320.                 {
  321.                     Stop();
  322.  
  323.                 }
  324.                 else if (shutinput == "n")
  325.                 {
  326.                     running = true;
  327.                     Console.Clear();
  328.                 }
  329.                 else
  330.                 {
  331.                     running = true;
  332.                     Console.Clear();
  333.                 }
  334.  
  335.             }
  336.  
  337.             else if (input == "reboot")
  338.             {
  339.  
  340.                 Console.Clear();
  341.                 Console.WriteLine("Le systeme est pret a redemarrer");
  342.                 running = false;
  343.                 Console.Write("Confirmez vous le redemarrage du systeme ? (o ou n) ");
  344.                 string shutinput = Console.ReadLine();
  345.                 if (shutinput == "o")
  346.                 {
  347.                     Sys.Power.Reboot();
  348.  
  349.                 }
  350.                 else if (shutinput == "n")
  351.                 {
  352.                     running = true;
  353.                     Console.Clear();
  354.                 }
  355.                 else
  356.                 {
  357.                     running = true;
  358.                     Console.Clear();
  359.                 }
  360.             }
  361.             else if (input.StartsWith("echo "))
  362.             {
  363.                 try
  364.                 {
  365.                     Console.WriteLine(input.Remove(0, 5));
  366.                 }
  367.                 catch (Exception ex)
  368.                 {
  369.                     Console.WriteLine("echo: " + ex.Message);
  370.                 }
  371.             }
  372.             else if (input == "infos")
  373.             {
  374.                 Console.WriteLine($@"Informations systemes :
  375. - Nombre de partitions : {Sys.FileSystem.VFS.VFSManager.GetVolumes().Count}
  376. - La date actuelle est : {System.DateTime.Now}");
  377.                 Console.WriteLine("- Propulse par CosmosOS et ecrit en C#");
  378.                 Console.WriteLine("- Ode OS v" + version + " - fait par valentinbreiz");
  379.             }
  380.             else if (input == "vol -l")
  381.             {
  382.                 var vols = FS.GetVolumes();
  383.                 Console.WriteLine("Nom\tTaille\tParent");
  384.                 foreach (var vol in vols)
  385.                 {
  386.                     Console.WriteLine(vol.mName + "\t" + vol.mSize + "\t" + vol.mParent);
  387.                 }
  388.             }
  389.             else if (input.StartsWith("fil -p "))
  390.             {
  391.                 string file = input.Remove(0, 7);
  392.  
  393.                 {
  394.                     Directory.SetCurrentDirectory(current_directory);
  395.                     if (File.Exists(current_directory + file))
  396.                     {
  397.                         Console.WriteLine(File.ReadAllText(current_directory + file));
  398.                     }
  399.                     else
  400.                     {
  401.                         Console.WriteLine("Le fichier '" + file + "' n'existe pas !");
  402.                     }
  403.                 }
  404.  
  405.             }
  406.             else if (input == "dir -l")
  407.             {
  408.                 Console.WriteLine("Type\t     Nom");
  409.                 foreach (var dir in Directory.GetDirectories(current_directory))
  410.                 {
  411.                     Console.WriteLine("<Dossier>\t" + dir);
  412.                 }
  413.                 foreach (var dir in Directory.GetFiles(current_directory))
  414.                 {
  415.                     Console.WriteLine("<Fichier>\t" + dir);
  416.                 }
  417.  
  418.             }
  419.             else if (input == "tree")
  420.             {
  421.                 Console.WriteLine("Type\t     Nom");
  422.                 foreach (var dir in Directory.GetDirectories(current_directory))
  423.                 {
  424.                     var indir = Directory.GetDirectories(dir);
  425.                     Console.WriteLine("<Dossier>\t" + dir);
  426.                     Console.WriteLine("<Dossier>\t" + indir);
  427.                 }
  428.  
  429.                 foreach (var dir in Directory.GetFiles(current_directory))
  430.                 {
  431.                     Console.WriteLine("<Fichier>\t" + dir);
  432.                 }
  433.  
  434.             }
  435.  
  436.  
  437.  
  438.             //else if (input.StartsWith("dir -r System1"))
  439.             // {
  440.             //    Console.WriteLine("Impossible de supprimer les fichiers systeme");
  441.             //  }
  442.             else if (input.StartsWith("dir -r "))
  443.             {
  444.                 string dirr = input.Remove(0, 7);
  445.  
  446.  
  447.                 if (Directory.Exists(current_directory + dirr))
  448.                 {
  449.                     Directory.Delete(current_directory + dirr, true);
  450.                     Console.WriteLine("Le dossier '" + dirr + "' a ete supprime !");
  451.                 }
  452.                 else
  453.                 {
  454.                     Console.WriteLine("Le dossier '" + dirr + "' n'existe pas !");
  455.                 }
  456.  
  457.             }
  458.             else if (input.StartsWith("fil -c "))
  459.             {
  460.                 string filec = input.Remove(0, 7);
  461.                 var f = File.Create(current_directory + filec);
  462.                 f.Close();
  463.                 Console.WriteLine("Editeur de texte 0.1 ('entrer' pour enregistrer et '/n' pour retour a la ligne) :");
  464.                 string fileccontenu = Console.ReadLine();
  465.                 fileccontenu = fileccontenu.Replace("/n", "\n");
  466.                 File.WriteAllText(current_directory + filec, fileccontenu);
  467.                 Console.WriteLine("'" + filec + "'a ete cree !");
  468.             }
  469.             else if (input.StartsWith("fil -r "))
  470.             {
  471.                 string filer = input.Remove(0, 7);
  472.                 if (File.Exists(current_directory + filer))
  473.                 {
  474.                     File.Delete(current_directory + filer);
  475.                     Console.WriteLine("'" + filer + "' a ete supprime !");
  476.                 }
  477.                 else
  478.                 {
  479.                     Console.WriteLine("Le fichier '" + filer + "' n'existe pas !");
  480.                 }
  481.  
  482.  
  483.             }
  484.             else if (input == "dir -c System")
  485.             {
  486.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  487.                 Console.WriteLine("Impossible de creer un dossier 'System'");
  488.                 Console.ForegroundColor = ConsoleColor.White;
  489.             }
  490.             else if (input == "dir -c system")
  491.             {
  492.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  493.                 Console.WriteLine("Impossible de creer un dossier 'System'");
  494.                 Console.ForegroundColor = ConsoleColor.White;
  495.             }
  496.             else if (input.StartsWith("dir -c "))
  497.             {
  498.                 string dir = input.Remove(0, 7);
  499.                 if (!Directory.Exists(current_directory + dir))
  500.                 {
  501.                     FS.CreateDirectory(current_directory + dir);
  502.                     Console.WriteLine("Dossier cree !");
  503.                 }
  504.             }
  505.  
  506.             else if (input == "cd ..")
  507.             {
  508.  
  509.                 Directory.SetCurrentDirectory(current_directory);
  510.                 var dir = FS.GetDirectory(current_directory);
  511.                 if (current_directory == "0:\\")
  512.                 {
  513.                     Console.ForegroundColor = ConsoleColor.DarkRed;
  514.                     Console.WriteLine("Impossible d'entrer dans la matrice !");
  515.  
  516.                 }
  517.                 else
  518.                 {
  519.                     current_directory = dir.mParent.mFullPath;
  520.                 }
  521.  
  522.  
  523.             }
  524.  
  525.             else if (input.StartsWith("cd "))
  526.             {
  527.                 var newdir = input.Remove(0, 3);
  528.  
  529.                 if (Directory.Exists(current_directory + newdir))
  530.                 {
  531.                     Directory.SetCurrentDirectory(current_directory);
  532.                     current_directory = current_directory + newdir + "\\";
  533.                 }
  534.                 else
  535.                 {
  536.                     Console.WriteLine("Ce dossier n'existe pas !");
  537.                 }
  538.             }
  539.  
  540.  
  541.             else if (input == "clear")
  542.             {
  543.                 Directory.SetCurrentDirectory(current_directory);
  544.                 Console.Clear();
  545.                 Console.WriteLine("");
  546.             }
  547.             else if (input == "test_ram")
  548.             {
  549.  
  550.             }
  551.             else if (input == "help")
  552.             {
  553.                 Console.WriteLine("Commandes disponibles :");
  554.                 Console.WriteLine("shutdown       : permet d'eteindre Ode OS");
  555.                 Console.WriteLine("reboot         : permet de redemarrer Ode OS");
  556.                 Console.WriteLine("echo           : permet de renvoyer le texte ecrit");
  557.                 Console.WriteLine("vol -l         : permet d'afficher les volumes disponibles");
  558.                 Console.WriteLine("dir -l         : permet d'afficher les fichiers et dossiers");
  559.                 Console.WriteLine("dir -c         : permet de creer un dossier");
  560.                 Console.WriteLine("dir -r         : permet de supprimer un dossier");
  561.                 Console.WriteLine("fil -c         : permet de creer un fichier");
  562.                 Console.WriteLine("fil -r         : permet de supprimer un fichier");
  563.                 Console.WriteLine("fil -p         : permet d'afficher le contenu d'un fichier");
  564.                 Console.WriteLine("cd             : se deplacer de dossier en dossier");
  565.                 Console.WriteLine("clear          : permet de nettoyer la console");
  566.                 Console.WriteLine("infos          : permet d'afficher des informations systeme");
  567.             }
  568.  
  569.             else if (input == "test_crash")
  570.             {
  571.                 throw new Exception("Crash test.");
  572.             }
  573.             else if (input == "test_prgm")
  574.             {
  575.                 CAppTEST app = new CAppTEST();
  576.                 app.AppTEST();
  577.  
  578.             }
  579.             else if (input == "reset")
  580.             {
  581.                 Console.Write("Voulez vous vraiment reinstaller les fichiers systemes ? ( o ou n ) ");
  582.                 string resetinput = Console.ReadLine();
  583.                 if (resetinput == "o")
  584.                 {
  585.                     bool system = Directory.Exists("0:\\System");
  586.  
  587.                     if (system == true)
  588.                     {
  589.                         running = false;
  590.                         Console.WriteLine("Suppression en cours...");
  591.  
  592.                         Console.WriteLine("Suppression des fichiers et dossiers ...");
  593.                         Directory.Delete("0:\\System", true);
  594.                         Console.ForegroundColor = ConsoleColor.Green;
  595.                         Console.WriteLine("[OK]");
  596.                         Console.ForegroundColor = ConsoleColor.White;
  597.  
  598.                         Console.ForegroundColor = ConsoleColor.Green;
  599.                         Console.WriteLine("La suppression s'est deroulee avec succes !");
  600.                         Console.ForegroundColor = ConsoleColor.White;
  601.                         Console.WriteLine("Appuyez sur une touche pour eteindre Ode OS");
  602.                         Console.ReadKey();
  603.                         Stop();
  604.  
  605.                     }
  606.                     else
  607.                     {
  608.                         Console.ForegroundColor = ConsoleColor.Green;
  609.                         Console.WriteLine("Le systeme n'est pas installe !");
  610.                         Console.ForegroundColor = ConsoleColor.White;
  611.                     }
  612.  
  613.  
  614.  
  615.                 }
  616.  
  617.             }
  618.  
  619.  
  620.  
  621.             else
  622.             {
  623.                 Console.ForegroundColor = ConsoleColor.DarkRed;
  624.                 Console.WriteLine("Commande inconnue, essayez la commande help");
  625.             }
  626.  
  627.             #endregion
  628.  
  629.         }
  630.     }
  631. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement