示例#1
0
    protected void btnCriarBackup_Click(object sender, EventArgs e)
    {
        //string database = "inter";
        string constring    = ConfigurationManager.AppSettings["strConexao"];                                  //pega os dados do banco do Web.config
        string database     = constring.Substring(9, 5);                                                       //corta a string dos dados do banco e pega somente o nome do banco (posicao 9, inter = 5 letras)
        string nome_arquivo = "bkp_" + database + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".sql"; //faz o nome do arquivo baseado no nome do banco e data local
        string directory    = (Request.PhysicalApplicationPath + "Backup");                                    //solicita o caminho da aplicação e coloca numa string juntando com Backup
        string file         = (directory + "\\" + nome_arquivo);                                               //coloca o caminho completo do arquivo + nome do arquivo separando com \\


        using (MySqlConnection conn = new MySqlConnection(constring)) //instancia um novo objeto MySqlConnection usando os dados do banco contidos em constring
        {
            using (MySqlCommand cmd = new MySqlCommand())             //instancia um novo MySqlCommand
            {
                using (MySqlBackup mb = new MySqlBackup(cmd))         //instancia um novo MySqlBackup e usa o command de antes como parâmetro
                {
                    cmd.Connection = conn;                            //define o comando Conection
                    conn.Open();                                      //abre a conexão com o banco
                    try                                               //tenta
                    {
                        mb.ExportToFile(file);                        //CRIAR O BACKUP

                        lblBackup.Text = "Backup efetuado com sucesso!";
                    }
                    catch (Exception ex) //caso algo dê errado
                    {
                        lblBackup.Text = "Erro ao criar Backup!";
                    }
                    conn.Close();  //FECHA A CONEXÃO COM O BANCO, NÃO É NECESSÁRIO O DISPOSE(LIMPAR DA MEMÓRIA) POR USAR USING LÁ EM CIMA
                }
            }
        }


        CarregaGrid();                                             //Carrega a grid novamente
        UpdatePanelBkp.Update();                                   //atualiza o UpdatePanel;

        string caminho = pegaDirBackup();                          //PEGA O DIRETORIO DOS BACKUPS

        string[] arquivos = Funcoes.tratarArquivosBackup(caminho); //TRATA O NOME DOS BACKUPS

        //if (arquivos[0] == nome_arquivo.Replace(".sql", "")) // Verifica se o Backup foi realmente criado
        //{
        //    //lblBackup.Text = "Backup efetuado com sucesso!";
        //}
        //else
        //{
        //    //lblBackup.Text = "Erro ao criar Backup!";
        //}


        // ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
    }
示例#2
0
    protected static int c = 1;                                       //instancia uma varíavel c para contar quantas vezes o usuário errou a senha
    protected void lkbConfirmaSenha_Click(object sender, EventArgs e) //EVENTO QUE VALIDA A SENHA DO MASTER AO CLICAR EM CONFIRMAR
    {
        string senha = txtSenha.Text;                                 //pega o valor digita no campo senha e armazena na string senha

        if (!String.IsNullOrEmpty(senha))                             //verifica se o campo de senha está fazio
        {
            if (Funcoes_DB.ValidaSenha(senha) == 1)                   //VERIFICA SE A FUNÇÃO DE VALIDAR RETORNOU 1
            {
                c = 1;
                string caminhoArquivo = Session["caminhoArquivo"].ToString();                                                 //PEGA O CAMINHO DO ARQUIVO DA VARÍAVEL DE SESSÃO
                string acao           = Session["acaoBackup"].ToString();                                                     //PEGA A AÇÃO DO USUÁRIO (DOWNLOAD OU BACKUP) E COLOCA NUMA STRING acao
                if (acao == "Download")                                                                                       //SE A ACAO FOR DOWNLOAD (SE CLICOU NO BOTÃO DOWNLOAD)
                {
                    PostBackTrigger trigger = new PostBackTrigger();                                                          //INSTANCIA UMA NOVA TRIGGER QUE RECARREGARÁ A PÁGINA (NECESSÁRIO PARA FAZER O DOWNLOAD)
                    trigger.ControlID = timerDownload.UniqueID;                                                               //DEFINE QUE O CONTROLE timerDownload IRÁ FAZER O POSTABACK(RECARREGAMENTO) DA PÁGINA
                    UpdatePanelModal.Triggers.Add(trigger);                                                                   //ADICIONA A TRIGGER AO UPDATEPANEL DA MODAL
                    lblMsgModal.Style.Add("color", "green");                                                                  //DEIXA O TEXTO DA MODAL VERDE
                    lblMsgModal.Text             = "Seu download iniciará em breve...";                                       //COLOCA A MENSAGEM DE INICANDO DOWNLAOD
                    timerDownload.Enabled        = true;                                                                      /*HABILITA O CONTADOR DO DOWNLOAD: QUANDO O TEMPO ESGOTAR, SERÁ DISPARADO O MÉTODO timerDownload_Tick
                                                                                                                               * ESSE MÉTODO ESTÁ QUASE NO FIM DA PÁGINA
                                                                                                                               */
                    Session["esperandoDownload"] = "sim";                                                                     //DEFINE UMA VARÍAVEL DE SESSÃO PARA CONTROLAR SE UM DOWNLOAD É ESPERADO OU NÃO
                }
                else if (acao == "Restauracao")                                                                               //SE A ACAO FOR RESTAURAÇÃO (SE CLICOU NO BOTÃO RESTAURAR)
                {
                    string constring    = ConfigurationManager.AppSettings["strConexao"];                                     //pega os dados do banco do Web.config
                    string database     = constring.Substring(9, 5);                                                          //corta a string dos dados do banco e pega somente o nome do banco (posicao 9, inter = 5 letras)
                    string nome_arquivo = "bkpSec_" + database + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".sql"; //faz o nome do arquivo baseado no nome do banco e data local
                    string directory    = (Request.PhysicalApplicationPath + "Backup");                                       //solicita o caminho da aplicação e coloca numa string juntando com Backup

                    //COMEÇA O PROCESSO DE BACKUP DE SEGURANÇA ---------->
                    string file = (directory + "\\" + nome_arquivo);
                    using (MySqlConnection conn = new MySqlConnection(constring)) //instancia um novo objeto MySqlConnection usando os dados do banco contidos em constring
                    {
                        using (MySqlCommand cmd = new MySqlCommand())             //instancia um novo MySqlCommand
                        {
                            using (MySqlBackup mb = new MySqlBackup(cmd))         //instancia um novo MySqlBackup e usa o command de antes como parâmetro
                            {
                                cmd.Connection = conn;                            //define o comando Conection
                                conn.Open();                                      //abre a conexão com o banco
                                try                                               //tenta
                                {
                                    mb.ExportToFile(file);                        //CRIAR O BACKUP
                                    lblMsgModal.Style.Add("color", "green");
                                    lblMsgModal.Text = "Backup de segurança efetuado com sucesso!";
                                }
                                catch (Exception ex) //CASO NÃO CONSIGA CRIAR O BACKUP DE SEGURANÇA
                                {
                                    UpdatePanelBkp.Update();
                                    lblMsgModal.Style.Add("color", "#960d10");
                                    lblMsgModal.Text = "Erro ao criar Backup de Segurança! Cancelando a Restauração;"; //MENSAGEM DE ERRO
                                    conn.Close();
                                    System.Threading.Thread.Sleep(1000);
                                    Response.Redirect("~/Configuracoes"); //RECARREGA A PÁGINA
                                }
                                conn.Close();                             //FECHA A CONEXÃO COM O BANCO, NÃO É NECESSÁRIO O DISPOSE(LIMPAR DA MEMÓRIA) POR USAR USING LÁ EM CIMA
                            }
                        }
                    }
                    CarregaGrid();
                    UpdatePanelBkp.Update();

                    string   caminho  = pegaDirBackup();
                    string[] arquivos = Funcoes.tratarArquivosBackup(caminho);

                    //<---------------- TERMINA O BACKUP DE SEGURANÇA
                    if (arquivos[0] == nome_arquivo.Replace(".sql", "")) // Verifica se o Backup foi realmente criado
                    {
                        lblMsgModal2.Text = "Backup de segurança efetuado com sucesso!";

                        if (Funcoes_DB.DropDatabase() == 0)
                        {
                            using (MySqlConnection conn = new MySqlConnection(constring)) //instancia um novo objeto MySqlConnection usando os dados do banco contidos em constring
                            {
                                using (MySqlCommand cmd = new MySqlCommand())             //instancia um novo MySqlCommand
                                {
                                    using (MySqlBackup mb = new MySqlBackup(cmd))         //abre a conexão com o banco
                                    {
                                        cmd.Connection = conn;                            //define o comando Conection
                                        conn.Open();                                      //abre a conexão com o banco
                                        try                                               //TENTA
                                        {
                                            mb.ImportFromFile(caminhoArquivo);            //RESTAURA O SISTEMA USANDO O BACKUP CLICADO
                                            lblMsgModal2.Style.Add("color", "green");
                                            lblMsgModal2.Text = "Sistema Restaurado com sucesso!";
                                        }
                                        catch (Exception ex)
                                        {
                                            lblMsgModal2.Style.Add("color", "#960d10");
                                            lblMsgModal2.Text = "Erro ao restaurar Backup";
                                        }
                                        conn.Close();  //FECHA A CONEXÃO COM O BANCO, NÃO É NECESSÁRIO O DISPOSE(LIMPAR DA MEMÓRIA) POR USAR USING LÁ EM CIMA
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                if (c == 3)                       //SE HOUVE MAIS DE 3 TENTATIVAS DE CONFIRMAÇÃO DE SENHA
                {
                    c = 1;                        //RESETA A VARÍAVEL DE CONTROLE
                    Session.RemoveAll();          //REMOVE E LIMPA TODAS SESSÕES
                    Response.Redirect("~/Login"); //REDIRECIONA PARA A PÁGINA DE LOGIN
                }
                else //CASO AINDA NÃO ERROU 3 VEZES
                {
                    lblMsgModal.Style.Add("color", "#960d10");
                    lblMsgModal.Text = "Senha incorreta!";
                    c++; //AUMENTA O NÚMERO DE VEZES QUE A SENHA DIGITADA FOI INCORRETA EM 1
                }
            }
        }
        else
        {
            lblMsgModal.Style.Add("color", "#960d10");
            lblMsgModal.Text = "O campo senha deve ser preenchido!";
        }
    }