yavsc/web/Admin/DataManager.cs
Paul Schneider 8301159645 * Web.csproj:
* App.master:
* IModule.cs:
* IRenderer.cs:
* DataManager.cs:
* ITagHandler.cs:
* ViewRenderer.cs:
* ResultPages.cs:
* BBCodeHelper.cs:
* IViewRenderer.cs:
* Entity.cs:
* YavscModel.csproj:
* OAuth2.cs:
* Calendar.cs:
* Profile.aspx:
* ApiClient.cs:
* MapTracks.cs:
* SalesCatalog.csproj:
* EntityQuery.cs:
* AdminController.cs:
* BlogsController.cs:
* GoogleController.cs:
* SimpleJsonPostMethod.cs:
* JsonReaderError.cs:
* AccountController.cs:
* JsonReaderError.aspx:
* GoogleErrorMessage.cs:
* GoogleErrorMessage.aspx: 

* Catalog.cs: refactoring

* Makefile: preprod is from local domain, and prod is for
  lua.pschneider.fr
2015-01-21 18:50:02 +01:00

92 lines
2.5 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using Yavsc.Model.Admin;
using Npgsql.Web.Blog;
namespace Yavsc.Admin
{
public class DataManager
{
DataAccess da;
public DataManager (DataAccess datac)
{
da = datac;
}
public Export CreateBackup ()
{
Environment.SetEnvironmentVariable("PGPASSWORD", da.Password);
string fileName = da.BackupPrefix + "-" + DateTime.Now.ToString ("yyyyMMddhhmmss")+".tar";
FileInfo ofi = new FileInfo (fileName);
Export e = new Export ();
e.FileName = ofi.FullName;
/*
Exec ("pg_dump", string.Format (
"-wb -Z3 -f {0} -Ft -h {1} -U {2} -p {3} {4}",
fileName, da.Host, da.Dbuser, da.Port, da.Dbname ),e);
*/
Exec ("pg_dump", string.Format (
"-f {0} -Ft -h {1} -U {2} -p {3} {4}",
fileName, da.Host, da.Dbuser, da.Port, da.Dbname ),e);
return e;
}
private void Exec(string name, string args, TaskOutput output)
{
ProcessStartInfo Pinfo =
new ProcessStartInfo (name,args);
Pinfo.RedirectStandardError = true;
Pinfo.RedirectStandardOutput = true;
Pinfo.CreateNoWindow = true;
Pinfo.UseShellExecute = false;
using (Process p = new Process ()) {
p.EnableRaisingEvents = true;
p.StartInfo = Pinfo;
p.Start ();
p.WaitForExit ();
output.Error = p.StandardError.ReadToEnd ();
output.Message = p.StandardOutput.ReadToEnd ();
output.ExitCode = p.ExitCode;
p.Close ();
}
}
public TaskOutput Restore (string fileName, bool dataOnly)
{
Environment.SetEnvironmentVariable("PGPASSWORD", da.Password);
var t = new TaskOutput ();
Exec ("pg_restore", (dataOnly?"-a ":"")+string.Format (
"-1 -Ft -O -h {0} -U {1} -p {2} -d {3} {4}",
da.Host, da.Dbuser, da.Port, da.Dbname, fileName ),t);
/*
Exec ("pg_restore", (dataOnly?"-a ":"")+string.Format (
"-1 -w -Fd -O -h {0} -U {1} -p {2} -d {3} {4}",
da.Host, da.Dbuser, da.Port, da.Dbname, fileName ),t);
*/
return t;
}
public TaskOutput CreateDb ()
{
return Restore ("freshinstall", false);
}
public Export TagBackup (string filename, string [] tags)
{
/* FileInfo fi = new FileInfo (filename);
using (FileStream s = fi.OpenWrite ()) {
} */
throw new NotImplementedException ();
}
public TaskOutput TagRestore (string fileName)
{
Environment.SetEnvironmentVariable ("PGPASSWORD", da.Password);
var t = new TaskOutput ();
Exec ("pg_restore", string.Format (
"-a -w -Fd -O -h {0} -U {1} -p {2} -d {3} {4}",
da.Host, da.Dbuser, da.Port, da.Dbname, fileName ),t);
return t;
}
}
}