예제 #1
0
        //********************************************************************************************
        public async Task CheckLink(string path, bool local)
        {
            if (SkipCheckLink)
            {
                SkipCheckLink = false;
                return;
            }

            //TODO: Move this into the Config
            using (XwDbCommand sql = new XwDbCommand(Config.GetConnectionString(), "Data.SQLite"))
            {
                sql.AddParameter("Local", local);
                sql.ExecuteTX($@"SELECT l.[path] FROM pins p 
                    INNER JOIN pins l ON l.ID=p.LinkTo
                    WHERE p.Local=@Local AND p.path='{path}' AND p.ServerID={server.ID}");

                if (sql.Read())
                {
                    LinkPath.Tag   = true;
                    LinkPath.Image = Resources.link;
                    string link = sql.Value(0).ToString();
                    linkTip.SetToolTip(LinkPath, "Unlink folders");

                    if (local)
                    {
                        await RemoteList.LoadList(link);
                    }
                    else
                    {
                        LocalList.LoadList(link);
                    }
                }
                else
                {
                    LinkPath.Tag   = false;
                    LinkPath.Image = Resources.link_break;
                    linkTip.SetToolTip(LinkPath, "Link local and remote folders");
                }
            }
        }
예제 #2
0
        //*************************************************************************************************************
        private void butSetPassword_Click(object sender, EventArgs e)
        {
            if (textMasterPassword.Text == "")
            {
                MessageBox.Show("Passwords must not be empty", "XwRemote", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (textMasterPassword.Text != textPasswordRepeat.Text)
            {
                MessageBox.Show("Passwords do not match", "XwRemote", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            using (XwDbCommand sql = new XwDbCommand(Config.GetConnectionString(), "Data.SQLite"))
            {
                sql.ChangePassword(textMasterPassword.Text);
                Config.MasterPassword = textMasterPassword.Text;
            }

            MessageBox.Show("Password added", "XwRemote", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
예제 #3
0
        //***********************************************************************************
        static public void MSSQL_FORMAT_QUERY()
        {
            using (XwDbCommand sql = new XwDbCommand("DBCONN_MSTEST"))
            {
                sql.AddParameter("@Name", "%A%");
                sql.ExecuteTX("SELECT Name FROM Tester WHERE Name LIKE @Name");
                Console.WriteLine(sql.GetDebugCommand());

                while (sql.Read())
                {
                    Console.WriteLine(sql.Value("Name").ToString());
                }

                sql.AddParameter("@Name", "%A%");
                sql.ExecuteTX("SELECT TOP 1 Name FROM Tester WHERE Name LIKE @Name");

                if (sql.Read())
                {
                    Console.WriteLine(sql.Value("Name").ToString());
                }
            }
        }
예제 #4
0
 //*************************************************************************************************************
 public int PinFolder()
 {
     using (XwDbCommand sql = new XwDbCommand(Config.GetConnectionString(), "Data.SQLite"))
     {
         sql.ExecuteTX($"SELECT id FROM Pins WHERE ServerID={form.server.ID} AND Local=0 AND Path='{CurrentDirectory}'");
         if (sql.Read())
         {
             return(sql.Value(0).ToInt32());
         }
         else
         {
             sql.ExecuteTX($"INSERT INTO Pins (ServerID, Local, Path) VALUES ({form.server.ID}, 0, '{CurrentDirectory}')");
             sql.ExecuteTX($"SELECT MAX(id) FROM Pins");
             sql.Read();
             int id = sql.Value(0).ToInt32();
             LoadPins();
             form.RemotePin.Image = Resources.PinDown;
             form.remotePinTip.SetToolTip(form.RemotePin, "Unpin Folder");
             return(id);
         }
     }
 }
예제 #5
0
        //*************************************************************************************************************
        private async void CheckPin()
        {
            using (XwDbCommand sql = new XwDbCommand(Config.GetConnectionString(), "Data.SQLite"))
            {
                sql.ExecuteTX($"SELECT * FROM pins WHERE Local=0 AND path='{CurrentDirectory}' AND ServerID={form.server.ID}");
                if (sql.Read())
                {
                    form.RemotePin.Image = Resources.PinDown;
                    form.remotePinTip.SetToolTip(form.RemotePin, "Unpin Folder");

                    if (CheckLick)
                    {
                        await form.CheckLink(CurrentDirectory, false);
                    }
                }
                else
                {
                    form.RemotePin.Image = Resources.PinUp;
                    form.remotePinTip.SetToolTip(form.RemotePin, "Pin Folder for future use");
                }
            }

            CheckLick = false;
        }
예제 #6
0
        //**************************************************************************************************
        //This could be condensed in fewer commands, but would breake compatibility with previous versions
        private void UpgradeConfigDB()
        {
            //Get password ?!?
            if (File.Exists(GetDBPath()))
            {
                using (XwDbCommand tryOne = new XwDbCommand(GetConnectionString(), "Data.SQLite"))
                {
                    try
                    {
                        tryOne.ExecuteTX("SELECT * FROM System");
                    }
                    catch (Exception ex1)
                    {
                        if (ex1.Message.Contains("file is not a database"))
                        {
                            AskPassword ask = new AskPassword();
                            ask.ShowDialog();
                            Config.MasterPassword = ask.PasswordBox.Text;


                            using (XwDbCommand tryTwo = new XwDbCommand(GetConnectionString(), "Data.SQLite"))
                            {
                                try
                                {
                                    tryTwo.ExecuteTX("SELECT * FROM System");
                                }
                                catch (Exception ex2)
                                {
                                    if (ex2.Message.Contains("file is not a database"))
                                    {
                                        MessageBox.Show("Bad password or config is corrupted.", "XwRemote", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                        Environment.Exit(1);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            using (XwDbCommand sql = new XwDbCommand(GetConnectionString(), "Data.SQLite"))
            {
                if (!sql.TableExists("System"))
                {
                    sql.ExecuteTX(@"CREATE TABLE [System] (
                      [SystemKey] TEXT, 
                      [SystemValue] TEXT, 
                      CONSTRAINT [] PRIMARY KEY ([SystemKey]));");
                }

                if (!sql.TableExists("Groups"))
                {
                    sql.ExecuteTX(@"CREATE TABLE [Groups] (
                        [ID] INTEGER PRIMARY KEY AUTOINCREMENT, 
                        [Name] TEXT, 
                        [Icon] INTEGER);");
                }

                if (!sql.TableExists("Servers"))
                {
                    sql.ExecuteTX(@"CREATE TABLE [Servers] (
                        [ID] INTEGER PRIMARY KEY AUTOINCREMENT, 
                        [Name] TEXT, 
                        [Host] TEXT, 
                        [Port] INTEGER, 
                        [X] INTEGER, 
                        [Y] INTEGER, 
                        [Username] TEXT, 
                        [Password] TEXT, 
                        [Color] INTEGER, 
                        [SendKeys] BOOLEAN DEFAULT (1), 
                        [GroupID] INTEGER CONSTRAINT [Servers_GroupID] REFERENCES [Groups]([ID]), 
                        [Sound] BOOLEAN, 
                        [Drives] BOOLEAN, 
                        [ServerType] INTEGER, 
                        [Favorite] BOOLEAN,
                        [Console] BOOLEAN DEFAULT (0),
                        [AutoScale] BOOLEAN DEFAULT (1),
                        [SSH1] BOOLEAN DEFAULT (0));");
                }

                if (!sql.TableExists("Pins"))
                {
                    sql.ExecuteTX(@"CREATE TABLE [Pins] (
                        [ID] INTEGER PRIMARY KEY AUTOINCREMENT, 
                        [ServerID] INTEGER CONSTRAINT [Pins_ServerID] REFERENCES [Servers]([ID]), 
                        [Local] BOOLEAN DEFAULT (0), 
                        [Path] TEXT);");
                }

                if (!sql.ColumnExists("Pins", "LinkTo"))
                {
                    sql.ExecuteTX("ALTER TABLE Pins ADD COLUMN LinkTo INTEGER;");
                }

                if (!sql.ColumnExists("Servers", "Passive"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN Passive BOOLEAN;");
                    sql.ExecuteTX("UPDATE Servers SET Passive=1 WHERE ServerType=3;");
                }

                if (!sql.ColumnExists("Servers", "Themes"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN Themes BOOLEAN;");
                    sql.ExecuteTX("UPDATE Servers SET Themes=0");
                }

                if (!sql.ColumnExists("Servers", "Certificates"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN Certificates BOOLEAN;");
                    sql.ExecuteTX("UPDATE Servers SET Certificates=0");
                }

                if (!sql.ColumnExists("Servers", "UseHtmlLogin"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN UseHtmlLogin BOOLEAN;");
                    sql.ExecuteTX("UPDATE Servers SET UseHtmlLogin=0");
                }

                if (!sql.ColumnExists("Servers", "HtmlUserBox"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN HtmlUserBox TEXT;");
                    sql.ExecuteTX("UPDATE Servers SET HtmlUserBox=''");
                }

                if (!sql.ColumnExists("Servers", "HtmlPassBox"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN HtmlPassBox TEXT;");
                    sql.ExecuteTX("UPDATE Servers SET HtmlPassBox=''");
                }

                if (!sql.ColumnExists("Servers", "HtmlLoginBtn"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN HtmlLoginBtn TEXT;");
                    sql.ExecuteTX("UPDATE Servers SET HtmlLoginBtn=''");
                }

                if (!sql.ColumnExists("Servers", "TabColor"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN TabColor INTEGER;");
                    sql.ExecuteTX("UPDATE Servers SET TabColor=-4144960");
                }

                if (!sql.ColumnExists("Servers", "TabColorTmp"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN TabColorTmp INTEGER;");
                    sql.ExecuteTX("UPDATE Servers SET TabColor=-4144960 WHERE TabColor=-5192482");
                }

                if (!sql.ColumnExists("Servers", "Notes"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN Notes TEXT;");
                    sql.ExecuteTX("UPDATE Servers SET Notes=''");
                }

                if (!sql.ColumnExists("Servers", "SshTerminal"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN SshTerminal INTEGER;");
                    sql.ExecuteTX("UPDATE Servers SET SshTerminal=1");
                }

                if (!sql.ColumnExists("Groups", "Expanded"))
                {
                    sql.ExecuteTX("ALTER TABLE Groups ADD COLUMN Expanded BOOLEAN;");
                    sql.ExecuteTX("UPDATE Groups SET Expanded=0");
                }

                if (!sql.ColumnExists("Servers", "Encryption"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN Encryption BOOLEAN;");
                    sql.ExecuteTX("UPDATE Servers SET Encryption=0");
                }

                if (!sql.ColumnExists("Servers", "SshKey"))
                {
                    sql.ExecuteTX("ALTER TABLE Servers ADD COLUMN SshKey TEXT;");
                    sql.ExecuteTX("UPDATE Servers SET SshKey=''");
                }
            }
        }
예제 #7
0
        //**************************************************************************************************
        private void LoadServers()
        {
            Main.servers.Clear();
            using (XwDbCommand sql = new XwDbCommand(Config.GetConnectionString(), "Data.SQLite"))
            {
                sql.ExecuteTX($@"SELECT 
                    id
                    ,name
                    ,host
                    ,ServerType
                    ,Username
                    ,Password
                    ,port   
                    ,Sendkeys
                    ,sound
                    ,drives
                    ,favorite
                    ,groupid
                    ,color
                    ,X
                    ,Y
                    ,Console
                    ,AutoScale
                    ,SSH1
                    ,Passive
                    ,Themes
                    ,Certificates
                    ,UseHtmlLogin
                    ,HtmlUserBox
                    ,HtmlPassBox
                    ,HtmlLoginBtn
                    ,TabColor
                    ,Notes
                    ,SshTerminal
                    ,Encryption
                    ,SshKey
                    FROM Servers
                    ORDER BY name
                    COLLATE NOCASE");

                while (sql.Read())
                {
                    ServerType type   = (ServerType)sql.Value("ServerType").ToInt32();
                    var        server = Server.GetServerInstance(type);
                    server.ID            = sql.Value("id").ToInt32();
                    server.Type          = type;
                    server.Name          = sql.Value("name").ToString();
                    server.Host          = sql.Value("host").ToString();
                    server.Username      = sql.Value("username").ToString();
                    server.Password      = sql.Value("password").ToString();
                    server.Port          = sql.Value("port").ToInt32();
                    server.SendKeys      = sql.Value("sendkeys").ToBoolean();
                    server.UseSound      = sql.Value("sound").ToBoolean();
                    server.ConnectDrives = sql.Value("drives").ToBoolean();
                    server.IsFavorite    = sql.Value("favorite").ToBoolean();
                    server.GroupID       = sql.Value("GroupID").ToInt32();
                    server.Color         = sql.Value("Color").ToInt32();
                    server.Width         = sql.Value("X").ToInt32();
                    server.Height        = sql.Value("Y").ToInt32();
                    server.Console       = sql.Value("Console").ToBoolean();
                    server.AutoScale     = sql.Value("AutoScale").ToBoolean();
                    server.SSH1          = sql.Value("SSH1").ToBoolean();
                    server.Passive       = sql.Value("Passive").ToBoolean();
                    server.Themes        = sql.Value("Themes").ToBoolean();
                    server.Certificates  = sql.Value("Certificates").ToBoolean();
                    server.UseHtmlLogin  = sql.Value("UseHtmlLogin").ToBoolean();
                    server.HtmlUserBox   = sql.Value("HtmlUserBox").ToString();
                    server.HtmlPassBox   = sql.Value("HtmlPassBox").ToString();
                    server.HtmlLoginBtn  = sql.Value("HtmlLoginBtn").ToString();
                    server.TabColor      = sql.Value("TabColor").ToInt32();
                    server.Notes         = sql.Value("Notes").ToString();
                    server.SshTerminal   = sql.Value("SshTerminal").ToInt32();
                    server.Encryption    = sql.Value("Encryption").ToBoolean();
                    server.SshKey        = sql.Value("SshKey").ToString();
                    Main.servers.Add(server);
                }
            }
        }