dsql-admin/dsql-app/.local_dist/server/pages/api/admin/databases/upload-database-file.js

1 line
5.4 KiB
JavaScript
Raw Normal View History

2025-02-17 05:55:49 +00:00
"use strict";(()=>{var e={};e.id=9368,e.ids=[9368],e.modules={76102:e=>{e.exports=require("@moduletrace/datasquirel/dist/client")},39383:e=>{e.exports=require("@moduletrace/datasquirel/dist/package-shared/actions/users/user-auth")},65967:e=>{e.exports=require("@moduletrace/datasquirel/dist/package-shared/utils/ejson")},93726:e=>{e.exports=require("@moduletrace/datasquirel/dist/package-shared/utils/numberfy")},30889:e=>{e.exports=require("@moduletrace/datasquirel/dist/package-shared/utils/slugify")},27825:e=>{e.exports=require("lodash")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},72583:e=>{e.exports=require("sanitize-html")},9973:e=>{e.exports=require("serverless-mysql")},79428:e=>{e.exports=require("buffer")},79646:e=>{e.exports=require("child_process")},55511:e=>{e.exports=require("crypto")},29021:e=>{e.exports=require("fs")},21820:e=>{e.exports=require("os")},33873:e=>{e.exports=require("path")},79456:(e,r,s)=>{s.r(r),s.d(r,{config:()=>Q,default:()=>I,routeModule:()=>b});var a={};s.r(a),s.d(a,{config:()=>h,default:()=>x});var t=s(89947),i=s(2706),n=s(96762),o=s(69842),u=s(29021),l=s.n(u),c=s(67619),d=s(6346),S=s(55153),_=s(33873),p=s.n(_),f=s(79646),D=s(21820),m=s.n(D),E=s(64292);async function L({dbFullName:e,targetFilePath:r,mariadbHost:s,mariadbPass:a,mariadbUser:t}){let i=m().platform().match(/win/i)?"'C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\mysql.exe'":"mysql",n=t||process.env.DSQL_DB_USERNAME,o=s||process.env.DSQL_DB_HOST,u=a||process.env.DSQL_DB_PASSWORD;await (0,E.A)(global.DSQL_DB_CONN,`CREATE DATABASE IF NOT EXISTS ${e}`);let l=`${i} -u ${n} -h ${o} -p${u} ${e} < ${r}`;return(0,f.execSync)(l,{encoding:"utf-8"})}var A=s(21724),T=s(27825),y=s.n(T),v=s(10776),g=s(66866);async function O({user:e,file:r}){let{userPrivateExportsDir:s,userSchemaMainJSONFilePath:a,userPrivateTempSQLExportsDir:t,userPrivateTempJSONSchemaFilePath:i,userPrivateDbExportZipFileName:n,userPrivateSQLExportsDir:o,userPrivateDbImportZipFilePath:u,userPrivateDbImportZipFileName:_}=(0,d.A)({userId:e.id}),D=r.fileBase64;if(!D)throw Error("Base64 String not found in File");try{if(!s||!a||!t||!i||!n||!o||!u||!_)throw Error("Couldn't pull dir names for user db export");if(!l().existsSync(a))throw Error("User JSON schema file doesn't exist");l().mkdirSync(t,{recursive:!0});let r=S.On.parse(l().readFileSync(a,"utf-8")),c=Buffer.from(D,"base64");l().writeFileSync(u,c),(0,f.execSync)(`unzip -o ${u} -d ${o}/`);let d=l().readdirSync(t).filter(e=>!!e.match(/\.sql$/)),m=l().readFileSync(i,"utf-8"),E=S.On.parse(m),T=S.On.parse(function({str:e,userId:r}){let s=process.env.DSQL_USER_DB_PREFIX,a=RegExp(`${s}\\d+_`,"g"),t=`${s}${r}_`;return e.replace(a,t)}({str:m,userId:e.id}));for(let e=0;e<T.length;e++){let r=T[e],s=E.find(e=>e.dbSlug==r.dbSlug);if(!s)continue;let a=d.find(e=>e.includes(s.dbFullName));if(!a)continue;let i=p().join(t,a);if(!l().existsSync(i))throw Error("Sql File Doesn't exist");await L({dbFullName:r.dbFullName,targetFilePath:i});try{await (0,g.A)(`GRANT ALL PRIVILEGES ON ${r.dbFullName}.* TO '${process.env.DSQL_DB_FULL_ACCESS_USERNAME}'@'${process.env.DSQL_DB_TARGET_IP_ADDRESS||"%"}' WITH GRANT OPTION`),await (0,g.A)(`GRANT SELECT ON ${r.dbFullName}.* TO '${process.env.DSQL_DB_READ_ONLY_USERNAME}'@'${process.env.DSQL_DB_TARGET_IP_ADDRESS||"%"}'`),await (0,g.A)("FLUSH PRIVILEGES")}catch(e){}}let O=[...r,...T],h=y().uniqBy(O,"dbFullName");(0,A.A)({schemaData:h,userId:e.id}),await (0,v.A)({dbSchemaData:h,userId:e.id});try{(0,f.execSync)(`rm -rf ${t}`),(0,f.execSync)(`rm -rf ${u}`)}catch(e){}}catch(r){console.log(`Error Exporting Database: ${r.message}`),(0,c.A)({component:"/functions/backend/users/export-database",message:r.message,user:e})}}let h={api:{bodyParser:{sizeLimit:"200mb"}}};async function x(e,r){let{user:s}=await (0,o.A)(e,r);if(!s)return r.json({success:!1,msg:"Unauthorized"});let a=e.body;try{if("POST"===e.method)return await O({user:s,file:a.file}),r.json({success:!0});return r.json({success:!1})}catch(e){console.log(e.message),r.json({success:!1})}}let I=(0,n.M)(a,"default")