mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
162 lines
5 KiB
JavaScript
162 lines
5 KiB
JavaScript
(function() {
|
|
// Get application context
|
|
var app = Sammy.apps['#main'];
|
|
var store = app.store;
|
|
|
|
/**
|
|
* Backup
|
|
*
|
|
*/
|
|
|
|
var config_hooks = [
|
|
'system_ldap',
|
|
'system_ssowat',
|
|
'system_cron',
|
|
'system_ssh',
|
|
'system_xmpp',
|
|
'system_mysql',
|
|
'system_yunohost',
|
|
'system_nginx'
|
|
];
|
|
|
|
// Storage list
|
|
app.get('#/backup', function (c) {
|
|
var storages = [];
|
|
var item = {
|
|
id: 'local',
|
|
name: y18n.t('local_archives'),
|
|
uri: '/home/yunohost.backup/'
|
|
};
|
|
storages.push(item);
|
|
|
|
c.view('backup/backup', {'storages':storages});
|
|
});
|
|
|
|
// Storage list
|
|
app.get('#/storages/create', function (c) {
|
|
c.view('backup/storage_create', {});
|
|
});
|
|
|
|
// Create a storage
|
|
app.post('#/storages', function (c) {
|
|
store.clear('slide');
|
|
c.redirect('#/storages');
|
|
});
|
|
|
|
// Create a backup
|
|
app.get('#/backup/:storage/create', function (c) {
|
|
var data = [];
|
|
data['storage'] = {
|
|
id:c.params['storage'],
|
|
name:y18n.t('local_archives')
|
|
};
|
|
c.api('/hooks/backup', function(hooks) {
|
|
data['hooks'] = c.groupHooks(hooks['hooks']);
|
|
data['apps'] = {};
|
|
c.api('/apps?with_backup', function(apps_list) {
|
|
data['apps'] = apps_list.apps;
|
|
c.view('backup/backup_create', data, c.selectAllOrNone);
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
app.post('#/backup/:storage', function (c) {
|
|
var params = c.ungroupHooks(c.params['system_parts'],c.params['apps']);
|
|
c.api('/backup', function() {
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']);
|
|
}, 'POST', params);
|
|
});
|
|
|
|
// Restore a backup
|
|
app.post('#/backup/:storage/:archive/restore', function (c) {
|
|
c.confirm(
|
|
y18n.t('backup'),
|
|
y18n.t('confirm_restore', [c.params['archive']]),
|
|
$.proxy(function(c){
|
|
var params = c.ungroupHooks(c.params['system_parts'],c.params['apps']);
|
|
params['force'] = '';
|
|
c.api('/backup/restore/'+c.params['archive'], function(data) {
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
}, 'POST', params);
|
|
}, this, c),
|
|
function(){
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
}
|
|
);
|
|
});
|
|
|
|
// Delete a backup
|
|
app.get('#/backup/:storage/:archive/delete', function (c) {
|
|
c.confirm(
|
|
y18n.t('backup'),
|
|
y18n.t('confirm_delete', [c.params['archive']]),
|
|
function(){
|
|
c.api('/backup/archives/'+c.params['archive'], function(data) {
|
|
c.redirect('#/backup/'+ c.params['storage']);
|
|
}, 'DELETE');
|
|
},
|
|
function(){
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
}
|
|
);
|
|
});
|
|
|
|
// Download a backup
|
|
app.get('#/backup/:storage/:archive/download', function (c) {
|
|
c.api('/backup/'+c.params['archive']+'/download', function(data) {
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
}, 'GET');
|
|
});
|
|
|
|
// Copy a backup
|
|
app.get('#/backup/:storage/:archive/copy', function (c) {
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
});
|
|
|
|
// Upload a backup
|
|
app.get('#/backup/:storage/:archive/upload', function (c) {
|
|
store.clear('slide');
|
|
c.redirect('#/backup/'+ c.params['storage']+'/'+c.params['archive']);
|
|
});
|
|
|
|
// Get archive info
|
|
app.get('#/backup/:storage/:archive', function (c) {
|
|
c.api('/backup/archives/'+c.params['archive']+'?with_details', function(data) {
|
|
data.storage = {
|
|
id: c.params['storage'],
|
|
name: y18n.t('local_archives')
|
|
};
|
|
data.other_storages = [];
|
|
data.name = c.params['archive'];
|
|
data.system_parts = c.groupHooks(Object.keys(data['system']));
|
|
data.items = (data['hooks']!={} || data['apps']!=[]);
|
|
data.locale = y18n.locale
|
|
c.view('backup/backup_info', data, c.selectAllOrNone);
|
|
});
|
|
});
|
|
|
|
// Archive list
|
|
app.get('#/backup/:storage', function (c) {
|
|
c.api('/backup/archives?with_info', function(data) {
|
|
data.storage = {
|
|
id: 'local',
|
|
name: y18n.t('local_archives')
|
|
};
|
|
data.archives2 = [];
|
|
$.each(data['archives'], function(name, info) {
|
|
info.name = name;
|
|
data.archives2.unshift(info)
|
|
});
|
|
data.archives = data.archives2;
|
|
data.locale = y18n.locale
|
|
c.view('backup/backup_list', data);
|
|
});
|
|
});
|
|
|
|
})();
|