![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/private_html/.next/server/pages/api/admin/ |
"use strict";(()=>{var e={};e.id=4887,e.ids=[4887],e.modules={8667:(e,r)=>{Object.defineProperty(r,"A",{enumerable:!0,get:function(){return t}});var t=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},21820:e=>{e.exports=require("os")},22688:(e,r,t)=>{t.a(e,async(e,i)=>{try{t.r(r),t.d(r,{config:()=>u,default:()=>d,routeModule:()=>p});var n=t(33480),s=t(8667),o=t(86435),a=t(68134),c=e([a]);a=(c.then?(await c)():c)[0];let d=(0,o.M)(a,"default"),u=(0,o.M)(a,"config"),p=new n.PagesAPIRouteModule({definition:{kind:s.A.PAGES_API,page:"/api/admin/restore",pathname:"/api/admin/restore",bundlePath:"",filename:""},userland:a});i()}catch(e){i(e)}})},28354:e=>{e.exports=require("util")},29021:e=>{e.exports=require("fs")},33480:(e,r,t)=>{e.exports=t(75600)},33873:e=>{e.exports=require("path")},67313:e=>{e.exports=import("formidable")},68134:(e,r,t)=>{t.a(e,async(e,i)=>{try{t.r(r),t.d(r,{config:()=>x,default:()=>b});var n=t(67313),s=t(29021),o=t.n(s),a=t(33873),c=t.n(a),d=t(88194),u=t.n(d),p=t(79646),l=t(28354),f=t(21820),y=t.n(f),m=e([n]);n=(m.then?(await m)():m)[0];let j=(0,l.promisify)(p.exec),x={api:{bodyParser:!1}};async function S(e){try{await j("npx prisma generate")}catch(e){console.warn("Warning: Could not run prisma generate:",e)}let r=c().join(process.cwd(),"prisma/dev.db");o().copyFileSync(e,r)}async function v(e){let r=c().join(process.cwd(),"public/uploads");o().existsSync(r)||o().mkdirSync(r,{recursive:!0});let t=(e,r)=>{for(let i of o().readdirSync(e,{withFileTypes:!0})){let n=c().join(e,i.name),s=c().join(r,i.name);i.isDirectory()?(o().existsSync(s)||o().mkdirSync(s,{recursive:!0}),t(n,s)):o().copyFileSync(n,s)}};t(e,r)}async function b(e,r){if("POST"!==e.method)return r.status(405).json({message:"Method not allowed"});try{let t=c().join(y().tmpdir(),"backup-restore");o().existsSync(t)||o().mkdirSync(t,{recursive:!0});let i=(0,n.default)({uploadDir:t,keepExtensions:!0}),[s,a]=await new Promise((r,t)=>{i.parse(e,(e,i,n)=>{e&&t(e),r([i,n])})}),d=a.file;if(!d||!Array.isArray(d)||0===d.length)return r.status(400).json({message:"No backup file provided"});let p=d[0];if(!p||!p.filepath)return r.status(400).json({message:"No backup file provided"});let l=c().join(process.cwd(),"temp_restore");o().existsSync(l)&&o().rmSync(l,{recursive:!0}),o().mkdirSync(l);let f=o().readFileSync(p.filepath),m=await u().loadAsync(f);for(let[e,r]of Object.entries(m.files))if(!r.dir){let t=c().join(l,e),i=c().dirname(t);o().existsSync(i)||o().mkdirSync(i,{recursive:!0});let n=await r.async("nodebuffer");o().writeFileSync(t,n)}let b=c().join(l,"manifest.json");if(!o().existsSync(b))throw Error("Invalid backup: manifest.json not found");let j=JSON.parse(o().readFileSync(b,"utf-8"));if(!j.version||"1.0"!==j.version)throw Error(`Unsupported backup version: ${j.version}`);let x=new Date().toISOString(),P=c().join(process.cwd(),"backups","pre_restore");o().existsSync(P)||o().mkdirSync(P,{recursive:!0});let w=c().join(process.cwd(),"prisma/dev.db");o().existsSync(w)&&o().copyFileSync(w,c().join(P,`pre_restore_db_${x.replace(/[:.]/g,"-")}.db`));let h=c().join(l,"database/dev.db");if(o().existsSync(h))await S(h);else throw Error("Invalid backup: database file not found");let A=c().join(l,"uploads");o().existsSync(A)&&await v(A),o().rmSync(l,{recursive:!0}),o().rmSync(p.filepath),r.status(200).json({message:"Restore completed successfully",backupInfo:{timestamp:j.timestamp,version:j.version}})}catch(e){console.error("Restore failed:",e),r.status(500).json({message:"Restore failed",error:e?.message||"An unexpected error occurred"})}}i()}catch(e){i(e)}})},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:e=>{e.exports=require("child_process")},86435:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,t){return t in r?r[t]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,t)):"function"==typeof r&&"default"===t?r:void 0}}})},88194:e=>{e.exports=require("jszip")}};var r=require("../../../webpack-api-runtime.js");r.C(e);var t=r(r.s=22688);module.exports=t})();