Page 1 of 1

Conectar aplicación con la nube

PostPosted: Wed Aug 18, 2021 8:12 pm
by santidedos
Buenas tardes compañeros,
Me gustaría poder realizar copias de seguridad de mi sistema en la nube. Muchas gracias de antemano!

Re: Conectar aplicación con la nube

PostPosted: Wed Aug 18, 2021 8:20 pm
by leandro
Una idea
Code: Select all  Expand view

*********************************
//REALIZA LA COPIA DE SEGURIDAD
*********************************
Function copiaseguridad()
local oCn
Local cRutaSql := ".\copias\"
Local cNombSql :=   alltrim(oLamcla:vGnit) + "
_" + DTOS(DATE()) + "_" + SUBSTR(TIME(),1,2) +;
                    SUBSTR(TIME(),4,2) + SUBSTR(TIME(),7,2) + "
.Sql"
Local cRutFina := cRutaSql+cNombSql
Local documento := {=>}
Local cbCopia := <||

        verificaTablasCopias(oCnEmp)
       
        //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
        oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
        oSlq:Campos("
e_ultima_copia",dtos(date()))
        oSlq:Condicion("
e_codi",oLamcla:vGcod,"")
        oSlq:Actualiza()
        oSlq:=nil   
       
        //LEEMOS EL ARCHIVO PLANO PARA ENVIARLO AL SERVIDOR
        cText := MemoRead( cRutFina )

        //ENVIAMOS LA COPIA DE SEGURIDAD AL SERVIDOR
        tercero := alltrim(oLamcla:vGnit)
        pass := "
TuClave"   //TEMPORAL
        cBas64 := hb_base64encode(tercero+"
:"+pass,len(tercero+":"+pass))

        //DATOS PARA REGISTRO EN LA BASE DE DATOS
        documento["
tercero"] := tercero
        documento["
nombre_sql"] := cNombSql
        documento["
sql"] := cText
        documento["
sucursal"] := oLamcla:nEmpSucu
        enviar := hb_jsonEncode( documento )

        ohttp := CreateObject( "
MSXML2.XMLHTTP" )
        ohttp:Open( "
POST" ,"http://tudominio.com/dondeguardamos",.F.)
        oHttp:SetRequestHeader("cache-control", "no-cache")
        ohttp:SetRequestHeader("content-type", "application/json" )
        ohttp:SetRequestHeader("authorization", "Basic "+cBas64 )
        TRY
          ohttp:Send( enviar )
        CATCH
            msginfo("No Se Pudo Enviar Archivo ","Intente Nuevamente")
            return .t.
        END
        response:=ohttp:responseText

        aHasRes := hash()
        hb_jsondecode(response ,@aHasRes)

        if aHasRes["copia_confirma"]
       
            //ACTUALIZAMOS LA FECHA DE LA ULTIMA COPIA EN LA BASE DE DATOS
            oSlq:= TCad():New(oLamcla:tEmpr,oCnEmp)
            oSlq:Campos("e_ultima_nube",dtos(date()))
            oSlq:Condicion("e_codi",oLamcla:vGcod,"")
            oSlq:Actualiza()
            oSlq:=nil          
       
            MsgInfo("Proceso Completado Correctamente - Archivo Guardado "+cRutFina,"Confirma")
        else
            MsgInfo("Proceso NO pudo ser completado ","Error Datos")
        endif

    >

oCn := maria_Connect( alltrim(oLamcla:cHost),alltrim(oLamcla:cEmpDBda),alltrim(oLamcla:cUsuario),;
                    alltrim(oLamcla:cPassword) )
if oCn == nil
    msginfo(    "No se pudo comprobar la conexión con la base de datos"+CRLF+;
            "Por favor revise la ip en la configuración de la conexión","Error Conexión")
else
    MYSQL_CRYPTKEY( alltrim(oLamcla:cPassword) )
    oCn:BackUp( nil , cRutFina )
    MYSQL_CRYPTKEY( nil )
    oCn:close()
   
    MsgRun("Procesando Información...","Creando Archivo",{||CursorWait(),WaitRun(eval(cbCopia), 0 )})
   
endif
Return nil

Re: Conectar aplicación con la nube

PostPosted: Thu Aug 19, 2021 2:03 pm
by santidedos
Mil gracias. Lo voy a probar.

Re: Conectar aplicación con la nube

PostPosted: Thu Aug 19, 2021 3:20 pm
by Antonio Linares
Estimado Leandro,

muchas gracias por compartirlo