public void main(string DateNTime)
        {
            #region string initialization

            string   server = Read.GetFtpServer();
            string   user   = Read.GetFtpUser();
            string   pass   = Read.GetFtpPass();
            string   folder = Read.GetFtpFolder();
            string[] files  = GetFileList();

            #endregion

            try
            {
                foreach (string file in files)
                {
                    Download(file, DateNTime);
                }
            }
            catch (Exception EX)
            {
                Console.WriteLine("Error:" + EX);
                log.MakeLog(EX, null);
            }
        }
        private void CheckForUpdate(Object sender, EventArgs e)
        {
            CheckForUpdates UPDATE = new CheckForUpdates();

            try
            {
                string Available = UPDATE.Compare();
                if (Available == "yes")
                {
                    Tray.Icon = new Icon(Assembly.GetEntryAssembly().GetManifestResourceStream("BackupV2.Icons.CloudUpdate.ico"));
                    Bitmap bmp  = new Icon(Assembly.GetEntryAssembly().GetManifestResourceStream("BackupV2.Icons.CloudUpdate.ico")).ToBitmap();
                    Bitmap bmp2 = new Bitmap(bmp, 64, 64);
                    updatePictureBox.Image = bmp2;
                    if (UpdateLabel.InvokeRequired)
                    {
                        this.Invoke((MethodInvoker) delegate() { UpdateLabel.Visible = true; });
                    }
                    else
                    {
                        UpdateLabel.Visible = true;
                    }
                }
                else
                {
                    Tray.Icon           = new Icon(Assembly.GetEntryAssembly().GetManifestResourceStream("BackupV2.Icons.Cloud.ico"));
                    UpdateLabel.Visible = false;
                }
            }
            catch (Exception ex)
            {
                Log.MakeLog(ex, null);
            }
        }
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Backup());
            }
            else
            {
                NativeMethods.AllocConsole();
                if (args[0].ToLower() == "b" || args[0].ToLower() == "/b")
                #region backup
                {
                    Error_Logging Log  = new Error_Logging();
                    Xml_Reader    read = new Xml_Reader();

                    if (!Directory.Exists(Environment.GetEnvironmentVariable("appdata") + "\\returnzork\\") || !File.Exists(Environment.GetEnvironmentVariable("appdata") + "\\returnzork\\Settings.config"))
                    {
                        Log.MakeLog(null, "  Settings do not exist, cannot continue.");
                        Console.WriteLine("The settings file does not exist. Cannot continue without the settings file.");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }



                    string FROM        = read.GetWorld();
                    string TO          = read.GetBackupTo();
                    string Compression = read.UseCompression();
                    string DateNTime   = DateTime.Now.ToString("MM.dd.yyyy  hh-mm-ss");


                    if (!FROM.EndsWith("\\") && FROM != "FTP")
                    {
                        FROM = FROM + "\\";
                    }
                    if (!TO.EndsWith("\\") && TO != "FTP")
                    {
                        TO = TO + "\\";
                    }


                    if (!Directory.Exists(FROM) && FROM != "FTP")
                    {
                        Console.WriteLine("CANNOT RUN WHEN THE WORLD FOLDER DOES NOT EXIST, AND WHEN NOT RUNNING ON FTP.\r\nTest");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }

                    #region copy world
                    #region Non FTP
                    #region not exist
                    if (!Directory.Exists(TO) && TO != "FTP")
                    {
                        Directory.CreateDirectory(TO);

                        if (!Directory.Exists(TO + DateNTime))
                        {
                            Directory.CreateDirectory(TO + DateNTime);
                        }

                        foreach (string dirPath in Directory.GetDirectories(FROM, "*", SearchOption.AllDirectories))
                        {
                            Directory.CreateDirectory(dirPath.Replace(FROM, TO + DateNTime + "\\"));
                        }


                        foreach (string newPath in Directory.GetFiles(FROM, "*.*", SearchOption.AllDirectories))
                        {
                            File.Copy(newPath, newPath.Replace(FROM, TO + DateNTime + "\\"));
                        }

                        Console.WriteLine("Finished copying world.");



                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.ReadKey();
                        Application.Exit();


                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion
                    }
                    #endregion
                    #region Exists
                    else if (Directory.Exists(TO) && TO != "FTP")
                    {
                        if (!Directory.Exists(TO + DateNTime))
                        {
                            Directory.CreateDirectory(TO + DateNTime);
                        }

                        foreach (string dirPath in Directory.GetDirectories(FROM, "*", SearchOption.AllDirectories))
                        {
                            Directory.CreateDirectory(dirPath.Replace(FROM, TO + DateNTime + "\\"));
                        }


                        foreach (string newPath in Directory.GetFiles(FROM, "*.*", SearchOption.AllDirectories))
                        {
                            File.Copy(newPath, newPath.Replace(FROM, TO + DateNTime + "\\"));
                        }


                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion


                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();



                        Console.WriteLine("Finished copying world.");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #endregion
                    #region FTP
                    #region Upload
                    else if (TO == "FTP")
                    {
                        Ftp_Upload upload = new Ftp_Upload();
                        upload.Upload(DateNTime);

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.WriteLine("Finished");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #region Download
                    else if (FROM == "FTP")
                    {
                        Ftp_Download download = new Ftp_Download();
                        download.main(DateNTime);
                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.WriteLine("Finished");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #endregion
                    #endregion
                }
                #endregion
                else if (args[0].ToLower() == "r" || args[0].ToLower() == "/r")
                #region reset settings
                {
                    if (Directory.Exists(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\"))
                    {
                        string[] FILES = Directory.GetFiles(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\");
                        foreach (string file in FILES)
                        {
                            File.Delete(file);
                        }
                    }
                    Console.WriteLine("Completed!");
                    Console.WriteLine("");
                    Console.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }
                #endregion
                else if (args[0].ToLower() == "settings" || args[0].ToLower() == "/s")
                #region Current settings
                {
                    Xml_Reader xml = new Xml_Reader();

                    Console.WriteLine("Current settings are:");
                    Console.WriteLine();
                    Console.WriteLine();



                    Console.WriteLine();
                    Console.WriteLine("Backup time is:  " + xml.GetBackupTime() + " minute(s)");
                    Console.WriteLine();
                    Console.WriteLine();

                    if (xml.GetBackupTo() == "ftp")
                    {
                        Console.WriteLine("Backup to ftp is:  on");
                    }
                    else
                    {
                        Console.WriteLine("Backup to ftp is:  off");
                    }
                    if (xml.GetWorld() == "ftp")
                    {
                        Console.WriteLine("Backup from ftp is:  on");
                    }
                    else
                    {
                        Console.WriteLine("Backup from ftp is:  off");
                    }



                    Console.WriteLine();
                    Console.WriteLine();
                    if (xml.GetWorld() != "ftp")
                    {
                        Console.WriteLine("Backup from directory is:   " + xml.GetWorld());
                    }
                    else
                    {
                        Console.WriteLine("Backup from directory is:   ftp:\\\\" + xml.GetFtpServer() + "\\" + xml.GetFtpFolder() + "\\" + xml.GetFtpFolder2());
                    }

                    if (xml.GetBackupTo() != "ftp")
                    {
                        Console.WriteLine("Backup to directory is:  " + xml.GetBackupTo());
                    }
                    else
                    {
                        Console.WriteLine("Backup to directory is:   ftp:\\\\" + xml.GetFtpServer() + "\\" + xml.GetFtpFolder() + "\\" + xml.GetFtpFolder2());
                    }

                    Console.WriteLine();
                    Console.WriteLine();

                    if (xml.GetUpdateSettings() == "no")
                    {
                        Console.WriteLine("Auto updating is:  " + "off");
                    }
                    else if (xml.GetUpdateSettings() == "yes")
                    {
                        Console.WriteLine("Auto updating is:  " + "on");
                    }
                    else
                    {
                        Console.WriteLine("Auto updating is:  " + "not defined");
                    }

                    Console.WriteLine();
                    Console.ReadLine();
                }
                #endregion
                else
                #region help
                {
                    if (args[0] != "/?")
                    {
                        Console.WriteLine("Invalid argument: " + args[0]);
                        Console.WriteLine("");
                        Console.WriteLine("");
                    }
                    Console.WriteLine("BackupV2.exe usage:");
                    Console.WriteLine("");
                    Console.WriteLine("/?: This help message");
                    Console.WriteLine("/B: Backup using the configuration files");
                    Console.WriteLine("/R: Delete all settings files. Start fresh.");
                    Console.WriteLine("");
                    Console.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }
                #endregion
            }
        }
        public static string[] GetFileList()
        {
            Error_Logging log  = new Error_Logging();
            Xml_Reader    Read = new Xml_Reader();

            #region string initialization

            string   Server  = Read.GetFtpServer();
            string   User    = Read.GetFtpUser();
            string   Pass    = Read.GetFtpPass();
            string   Folder  = Read.GetFtpFolder();
            string   Folder2 = Read.GetFtpFolder2();
            string[] downloadFiles;

            #endregion


            StringBuilder result   = new StringBuilder();
            WebResponse   responce = null;
            StreamReader  reader   = null;
            try
            {
                FtpWebRequest reqFTP;
                #region FTP details

                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Server + "/" + Folder + "/" + Folder2));
                reqFTP.UseBinary   = true;
                reqFTP.Credentials = new NetworkCredential(User, Pass);
                reqFTP.Method      = WebRequestMethods.Ftp.ListDirectory;
                reqFTP.Proxy       = null;
                reqFTP.KeepAlive   = false;
                reqFTP.UsePassive  = false;
                responce           = reqFTP.GetResponse();

                #endregion
                reader = new StreamReader(responce.GetResponseStream());
                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);
                return(result.ToString().Split('\n'));
            }
            catch (Exception ex)
            {
                log.MakeLog(ex, null);
                #region cleanup

                if (reader != null)
                {
                    reader.Close();
                }
                if (responce != null)
                {
                    responce.Close();
                }
                downloadFiles = null;
                return(downloadFiles);

                #endregion
            }
        }
        public void Upload(string DateNTime)
        {
            string      LocalFolder = Read.GetWorld();
            string      Folder      = Read.GetFtpFolder();
            string      Folder2     = Read.GetFtpFolder2();
            string      User        = Read.GetFtpUser();
            string      Pass        = Read.GetFtpPass();
            string      Server      = Read.GetFtpServer();
            WebResponse responce;

            //throw new NotImplementedException();


            string[]   FILES   = Directory.GetFiles(LocalFolder);
            string[]   fold    = Directory.GetDirectories(LocalFolder);
            WebRequest Request = WebRequest.Create("ftp://" + Server + "/" + Folder + "/" + Folder2);

            Request.Method      = WebRequestMethods.Ftp.MakeDirectory;
            Request.Credentials = new NetworkCredential(User, Pass);


            try
            {
                responce = Request.GetResponse();
            }
            catch (Exception)
            {
                //creates error when the directory already exists, no need to log
                Console.WriteLine("FTP Directory root already exists, continuing...");
            }

            Request             = WebRequest.Create("ftp://" + Server + "/" + Folder + "/" + Folder2 + "/" + DateNTime);
            Request.Method      = WebRequestMethods.Ftp.MakeDirectory;
            Request.Credentials = new NetworkCredential(User, Pass);
            try
            {
                responce = Request.GetResponse();
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error has occured:r\n\"" + ex);
                Console.ReadKey();
                log.MakeLog(ex, null);
            }


            var path    = LocalFolder;
            var dirName = new DirectoryInfo(path).Name;

            #region Create Directories and copy files
            foreach (string dir in fold)
            {
                dirName = new DirectoryInfo(dir).Name;
                string[] Files = Directory.GetFiles(dir);


                Request             = WebRequest.Create("ftp://" + Server + "/" + Folder + "/" + Folder2 + "/" + DateNTime + "/" + dirName);
                Request.Method      = WebRequestMethods.Ftp.MakeDirectory;
                Request.Credentials = new NetworkCredential(User, Pass);
                try
                {
                    responce = Request.GetResponse();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("An error has occurred:r\n\"" + ex);
                    Console.ReadKey();
                    log.MakeLog(ex, null);
                }

                foreach (string file1 in Files)
                {
                    if (file1 == null)
                    {
                        break;
                    }
                    WebClient client = new WebClient();
                    client.Credentials = new NetworkCredential(User, Pass);
                    try
                    {
                        client.UploadFile("ftp://" + Server + "/" + Folder + "/" + Folder2 + "/" + DateNTime + "/" +
                                          dirName + "/" + new FileInfo(file1).Name, "STOR", file1);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("An error has occured:r\n\"" + ex);
                        Console.ReadKey();
                        log.MakeLog(ex, null);
                    }
                }
            }
            #endregion

            #region Copy files from root folder
            foreach (string files in FILES)
            {
                WebClient client = new WebClient();
                client.Credentials = new NetworkCredential(User, Pass);
                try
                {
                    client.UploadFile("ftp://" + Server + "/" + Folder + "/" + Folder2 + "/" + DateNTime + "/" +
                                      new FileInfo(files).Name, "STOR", files);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("An error has occured:r\n\"" + ex);
                    Console.ReadKey();
                    log.MakeLog(ex, null);
                }
            }
            #endregion
            Console.WriteLine("Finished FTP upload of world.");
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Backup());
            }
            else
            {
                NativeMethods.AllocConsole();
                if (args[0].ToLower() == "b" || args[0].ToLower() == "/b")
                #region backup
                {

                    Error_Logging Log = new Error_Logging();
                    Xml_Reader read = new Xml_Reader();

                    if (!Directory.Exists(Environment.GetEnvironmentVariable("appdata") + "\\returnzork\\") || !File.Exists(Environment.GetEnvironmentVariable("appdata") + "\\returnzork\\Settings.config"))
                    {
                        Log.MakeLog(null, "  Settings do not exist, cannot continue.");
                        Console.WriteLine("The settings file does not exist. Cannot continue without the settings file.");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }

                    string FROM = read.GetWorld();
                    string TO = read.GetBackupTo();
                    string Compression = read.UseCompression();
                    string DateNTime = DateTime.Now.ToString("MM.dd.yyyy  hh-mm-ss");

                    if(!FROM.EndsWith("\\") && FROM != "FTP")
                    {
                        FROM = FROM + "\\";
                    }
                    if (!TO.EndsWith("\\") && TO != "FTP")
                    {
                        TO = TO + "\\";
                    }

                    if (!Directory.Exists(FROM) && FROM != "FTP")
                    {
                        Console.WriteLine("CANNOT RUN WHEN THE WORLD FOLDER DOES NOT EXIST, AND WHEN NOT RUNNING ON FTP.\r\nTest");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }

                    #region copy world
                    #region Non FTP
                    #region not exist
                    if (!Directory.Exists(TO) && TO != "FTP")
                    {
                        Directory.CreateDirectory(TO);

                        if (!Directory.Exists(TO + DateNTime))
                        {
                            Directory.CreateDirectory(TO + DateNTime);
                        }

                        foreach (string dirPath in Directory.GetDirectories(FROM, "*", SearchOption.AllDirectories))
                            Directory.CreateDirectory(dirPath.Replace(FROM, TO + DateNTime + "\\"));

                        foreach (string newPath in Directory.GetFiles(FROM, "*.*", SearchOption.AllDirectories))
                            File.Copy(newPath, newPath.Replace(FROM, TO + DateNTime + "\\"));

                        Console.WriteLine("Finished copying world.");

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.DoWork +=new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.ReadKey();
                        Application.Exit();

                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion
                    }
                    #endregion
                    #region Exists
                    else if (Directory.Exists(TO) && TO != "FTP")
                    {
                        if (!Directory.Exists(TO + DateNTime))
                        {
                            Directory.CreateDirectory(TO + DateNTime);
                        }

                        foreach (string dirPath in Directory.GetDirectories(FROM, "*", SearchOption.AllDirectories))
                            Directory.CreateDirectory(dirPath.Replace(FROM, TO + DateNTime + "\\"));

                        foreach (string newPath in Directory.GetFiles(FROM, "*.*", SearchOption.AllDirectories))
                            File.Copy(newPath, newPath.Replace(FROM, TO + DateNTime + "\\"));

                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.WriteLine("Finished copying world.");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #endregion
                    #region FTP
                    #region Upload
                    else if (TO == "FTP")
                    {
                        Ftp_Upload upload = new Ftp_Upload();
                        upload.Upload(DateNTime);

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.WriteLine("Finished");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #region Download
                    else if (FROM == "FTP")
                    {
                        Ftp_Download download = new Ftp_Download();
                        download.main(DateNTime);
                        #region compression
                        if (Compression == "yes")
                        {
                            ZipFile zip = new ZipFile();

                            try
                            {
                                zip.AddDirectory(TO + DateNTime);
                                zip.Save(TO + DateNTime + ".zip");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An error has occurred:r\n\"" + ex);
                                Console.ReadKey();
                                Log.MakeLog(ex, null);
                            }
                        }
                        #endregion

                        System.ComponentModel.BackgroundWorker bgworker = new System.ComponentModel.BackgroundWorker();
                        bgworker.WorkerReportsProgress = false;
                        bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
                        bgworker.RunWorkerAsync();

                        Console.WriteLine("Finished");
                        Console.ReadKey();
                        Environment.Exit(0);
                    }
                    #endregion
                    #endregion
                    #endregion
                }
                #endregion
                else if (args[0].ToLower() == "r" || args[0].ToLower() == "/r")
                #region reset settings
                {
                    if (Directory.Exists(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\"))
                    {
                        string[] FILES = Directory.GetFiles(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\");
                        foreach (string file in FILES)
                        {
                            File.Delete(file);
                        }
                    }
                    Console.WriteLine("Completed!");
                    Console.WriteLine("");
                    Console.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }
                #endregion
                else if (args[0].ToLower() == "settings" || args[0].ToLower() == "/s")
                #region Current settings
                {
                    Xml_Reader xml = new Xml_Reader();

                    Console.WriteLine("Current settings are:");
                    Console.WriteLine();
                    Console.WriteLine();

                    Console.WriteLine();
                    Console.WriteLine("Backup time is:  " + xml.GetBackupTime() + " minute(s)");
                    Console.WriteLine();
                    Console.WriteLine();

                    if (xml.GetBackupTo() == "ftp")
                    {
                        Console.WriteLine("Backup to ftp is:  on");
                    }
                    else
                    {
                        Console.WriteLine("Backup to ftp is:  off");
                    }
                    if (xml.GetWorld() == "ftp")
                    {
                        Console.WriteLine("Backup from ftp is:  on");
                    }
                    else
                    {
                        Console.WriteLine("Backup from ftp is:  off");
                    }

                    Console.WriteLine();
                    Console.WriteLine();
                    if (xml.GetWorld() != "ftp")
                    {
                        Console.WriteLine("Backup from directory is:   " + xml.GetWorld());
                    }
                    else
                    {
                        Console.WriteLine("Backup from directory is:   ftp:\\\\" + xml.GetFtpServer() + "\\" + xml.GetFtpFolder() + "\\" + xml.GetFtpFolder2());
                    }

                    if (xml.GetBackupTo() != "ftp")
                    {
                        Console.WriteLine("Backup to directory is:  " + xml.GetBackupTo());
                    }
                    else
                    {
                        Console.WriteLine("Backup to directory is:   ftp:\\\\" + xml.GetFtpServer() + "\\" + xml.GetFtpFolder() + "\\" +xml.GetFtpFolder2());
                    }

                    Console.WriteLine();
                    Console.WriteLine();

                    if(xml.GetUpdateSettings() == "no")
                    {
                        Console.WriteLine("Auto updating is:  " + "off");
                    }
                    else if (xml.GetUpdateSettings() == "yes")
                    {
                        Console.WriteLine("Auto updating is:  " + "on");
                    }
                    else
                    {
                        Console.WriteLine("Auto updating is:  " + "not defined");
                    }

                    Console.WriteLine();
                    Console.ReadLine();
                }
                #endregion
                else
                #region help
                {
                    if (args[0] != "/?")
                    {
                        Console.WriteLine("Invalid argument: " + args[0]);
                        Console.WriteLine("");
                        Console.WriteLine("");
                    }
                    Console.WriteLine("BackupV2.exe usage:");
                    Console.WriteLine("");
                    Console.WriteLine("/?: This help message");
                    Console.WriteLine("/B: Backup using the configuration files");
                    Console.WriteLine("/R: Delete all settings files. Start fresh.");
                    Console.WriteLine("");
                    Console.WriteLine("Press any key to exit...");
                    Console.ReadKey();
                }
                #endregion
            }
        }
        public string Compare()
        {
            #region download version file

            try
            {
                webClient.DownloadFile("http://cloud.github.com/downloads/returnzork/C-Sharp-MC-Server-Backup-V2/Version.txt", Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\versiontemp.txt");
            }
            catch (WebException ex)
            {
                log.MakeLog(ex, null);
            }
            catch (Exception ex)
            {
                log.MakeLog(ex, null);
            }

            #endregion

            #region initialization

            string     UpdateAvailable;
            int        file1byte;
            int        file2byte;
            FileStream fs1;
            FileStream fs2;
            string     file1 = Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\Version.txt";
            string     file2 = Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\versiontemp.txt";

            #endregion

            #region filestreams

            fs1 = new FileStream(file1, FileMode.Open);
            fs2 = new FileStream(file2, FileMode.Open);

            #endregion

            if (fs1.Length == fs2.Length)
            {
                fs1.Close();
                fs2.Close();
            }

            try
            {
                do
                {
                    file1byte = fs1.ReadByte();
                    file2byte = fs2.ReadByte();
                }while ((file1byte == file2byte) && (file1byte != -1));

                fs1.Close();
                fs2.Close();
                if ((file1byte - file2byte) == 0)
                {
                    #region same version

                    UpdateAvailable = "no match";
                    MessageBox.Show("No update found");
                    return(UpdateAvailable);

                    #endregion
                }
                else
                {
                    #region update found
                    DialogResult UpdateFound = MessageBox.Show("Update found. Would you like to download?", "Update?", MessageBoxButtons.YesNo);
                    if (UpdateFound == DialogResult.Yes)
                    {
                        #region get new executable and tell user

                        GetExe();
                        string AppPath = Application.ExecutablePath;
                        string Update  = AppPath + ".update\\";

                        if (!Directory.Exists(Update))
                        {
                            Directory.CreateDirectory(Update);
                        }
                        if (File.Exists(Update + "BackupV2.exe"))
                        {
                            File.Delete(Update + "BackupV2.exe");
                        }

                        #region moving and deleting of version files and old update executables

                        File.Move(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\BackupV2.exe", Update + "BackupV2.exe");
                        File.Delete(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\version.txt");
                        File.Move(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\versiontemp.txt", Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\version.txt");
                        MessageBox.Show("Update downloaded. Please copy the file from: " + Update);
                        UpdateAvailable = "no";
                        return(UpdateAvailable);

                        #endregion

                        #endregion
                    }
                    else
                    {
                        UpdateAvailable = "yes";
                        return(UpdateAvailable);
                    }

                    #endregion
                }
            }

            catch (ObjectDisposedException)
            {
                #region fixing exception

                GetVersion();

                file1 = Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\Version.txt";


                FileStream   fs = new FileStream(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\supertempVersion.txt", FileMode.Append, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);
                sw.Close();
                fs.Close();

                file2 = Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\supertempVersion.txt";



                fs1 = new FileStream(file1, FileMode.Open);
                fs2 = new FileStream(file2, FileMode.Open);

                do
                {
                    file1byte = fs1.ReadByte();
                    file2byte = fs2.ReadByte();
                }while ((file1byte == file2byte) && (file1byte != -1));


                fs1.Close();
                fs2.Close();
                if ((file1byte - file2byte) == 0)
                {
                    File.Delete(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\supertempVersion.txt");
                }
                else
                {
                    #region tell user that update has been skipped because it has been downloaded.

                    File.Delete(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\Version.txt");
                    File.Move(Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\supertempVersion.txt", Environment.GetEnvironmentVariable("APPDATA") + "\\returnzork\\Version.txt");

                    MessageBox.Show("Please reopen the application and choose yes to download the update,choose no to prompt to update at a later date, or use the new exe to skip this error.");

                    #endregion
                }

                #endregion
            }
            return(null);
        }
        public static string[] GetFileList()
        {
            Error_Logging log = new Error_Logging();
            Xml_Reader Read = new Xml_Reader();

            #region string initialization

            string Server = Read.GetFtpServer();
            string User = Read.GetFtpUser();
            string Pass = Read.GetFtpPass();
            string Folder = Read.GetFtpFolder();
            string Folder2 = Read.GetFtpFolder2();
            string[] downloadFiles;

            #endregion

            StringBuilder result = new StringBuilder();
            WebResponse responce = null;
            StreamReader reader = null;
            try
            {
                FtpWebRequest reqFTP;
                #region FTP details

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Server + "/" + Folder + "/" + Folder2));
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(User, Pass);
                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
                reqFTP.Proxy = null;
                reqFTP.KeepAlive = false;
                reqFTP.UsePassive = false;
                responce = reqFTP.GetResponse();

                #endregion
                reader = new StreamReader(responce.GetResponseStream());
                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);
                return result.ToString().Split('\n');
            }
            catch(Exception ex)
            {
                log.MakeLog(ex,null);
                #region cleanup

                if (reader != null)
                {
                    reader.Close();
                }
                if (responce != null)
                {
                    responce.Close();
                }
                downloadFiles = null;
                return downloadFiles;

                #endregion
            }
        }