forked from extern/egroupware
Mailvelope backup/restore integration WIP
This commit is contained in:
parent
188e31c9c1
commit
5a8bc26f2d
@ -976,6 +976,117 @@ var AppJS = Class.extend(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mailvelope object contains SyncHandlers
|
||||||
|
* @property {function} descriptionuploadSync function called by Mailvelope to upload encrypted private key backup
|
||||||
|
* @property {function} downloadSync function called by Mailvelope to download encrypted private key backup
|
||||||
|
* @property {function} backup function called by Mailvelope to upload a public keyring backup
|
||||||
|
* @property {function} restore function called by Mailvelope to restore a public keyring backup
|
||||||
|
*/
|
||||||
|
mailvelope_syncHandlerObj: {
|
||||||
|
/**
|
||||||
|
* function called by Mailvelope to upload encrypted private key backup
|
||||||
|
* @param {UploadSyncHandler} _uploadObj
|
||||||
|
* @property {string} etag entity tag for the uploaded encrypted keyring, or null if initial upload
|
||||||
|
* @property {AsciiArmored} keyringMsg encrypted keyring as PGP armored message
|
||||||
|
* @returns {Promise.<UploadSyncReply, Error>}
|
||||||
|
*/
|
||||||
|
uploadSync: function(_uploadObj)
|
||||||
|
{
|
||||||
|
return new Promise(function(_resolve,_reject){});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function called by Mailvelope to download encrypted private key backup
|
||||||
|
*
|
||||||
|
* @param {object} _downloadObj
|
||||||
|
* @property {string} etag entity tag for the current local keyring, or null if no local eTag
|
||||||
|
* @returns {Promise.<DownloadSyncReply, Error>}
|
||||||
|
*/
|
||||||
|
downloadSync: function(_downloadObj)
|
||||||
|
{
|
||||||
|
return new Promise(function(_resolve,_reject){});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function called by Mailvelope to upload a public keyring backup
|
||||||
|
*
|
||||||
|
* @param {BackupSyncPacket} _backup
|
||||||
|
* @property {AsciiArmored} backup encrypted key backup as PGP armored message
|
||||||
|
* @returns {Promise.<undefined, Error>}
|
||||||
|
*/
|
||||||
|
backup: function(_backup)
|
||||||
|
{
|
||||||
|
return new Promise(function(_resolve,_reject){
|
||||||
|
// Store backup sync packet into .PK_PGP file in user directory
|
||||||
|
jQuery.ajax({
|
||||||
|
method:'PUT',
|
||||||
|
url: egw.webserverUrl+'/webdav.php/home/'+egw.user('account_lid')+'/.PK_PGP',
|
||||||
|
contentType: 'application/json',
|
||||||
|
data: JSON.stringify(_backup),
|
||||||
|
success:function(){
|
||||||
|
_resolve(_backup);
|
||||||
|
},
|
||||||
|
error: function(_err){
|
||||||
|
_reject(_err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function called by Mailvelope to restore a public keyring backup
|
||||||
|
* @returns {Promise.<BackupSyncPacket, Error>}
|
||||||
|
* @todo
|
||||||
|
*/
|
||||||
|
restore: function()
|
||||||
|
{
|
||||||
|
return new Promise(function(_resolve,_reject){
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create backup dialog
|
||||||
|
* @returns {Promise.<backupPopupId, Error>}
|
||||||
|
*/
|
||||||
|
mailvelope_createBackupDialog: function()
|
||||||
|
{
|
||||||
|
var self = this;
|
||||||
|
return new Promise(function(_resolve, _reject)
|
||||||
|
{
|
||||||
|
var resolve = _resolve;
|
||||||
|
var reject = _reject;
|
||||||
|
mailvelope.getKeyring('egroupware').then(function(_keyring)
|
||||||
|
{
|
||||||
|
_keyring.addSyncHandler(self.mailvelope_syncHandlerObj);
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
userIds:[{email:egw.user('account_email'),fullName:egw.user('account_fullname')}]
|
||||||
|
};
|
||||||
|
_keyring.createKeyBackupContainer('body', options).then(function(_popupId){
|
||||||
|
resolve(_popupId);
|
||||||
|
},
|
||||||
|
function(_err){
|
||||||
|
reject(_err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(_err)
|
||||||
|
{
|
||||||
|
reject(_err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
mailvelope_createRestoreDialog: function()
|
||||||
|
{
|
||||||
|
return new Promise(function(_resolve, _reject){
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PGP begin and end tags
|
* PGP begin and end tags
|
||||||
*/
|
*/
|
||||||
@ -1013,7 +1124,7 @@ var AppJS = Class.extend(
|
|||||||
self.mailvelope_keyring = _keyring;
|
self.mailvelope_keyring = _keyring;
|
||||||
|
|
||||||
resolve(_keyring);
|
resolve(_keyring);
|
||||||
},
|
},
|
||||||
function(_err)
|
function(_err)
|
||||||
{
|
{
|
||||||
mailvelope.createKeyring('egroupware').then(function(_keyring)
|
mailvelope.createKeyring('egroupware').then(function(_keyring)
|
||||||
@ -1031,15 +1142,41 @@ var AppJS = Class.extend(
|
|||||||
jQuery(mvelo_settings_selector).css({position: 'absolute', top: 0});
|
jQuery(mvelo_settings_selector).css({position: 'absolute', top: 0});
|
||||||
// add a close button, so we know when to offer storing public key to AB
|
// add a close button, so we know when to offer storing public key to AB
|
||||||
jQuery('<button class="et2_button et2_button_text" id="mailvelope_close_settings">'+self.egw.lang('Close')+'</button>')
|
jQuery('<button class="et2_button et2_button_text" id="mailvelope_close_settings">'+self.egw.lang('Close')+'</button>')
|
||||||
.css({position: 'absolute', top: 8, right: 8})
|
.css({position: 'absolute', top: 8, right: 8, "z-index":2})
|
||||||
.click(function()
|
.click(function()
|
||||||
{
|
{
|
||||||
// try fetching public key, to check user created onw
|
// try fetching public key, to check user created onw
|
||||||
self.mailvelope_keyring.exportOwnPublicKey(self.egw.user('account_email')).then(function(_pubKey)
|
self.mailvelope_keyring.exportOwnPublicKey(self.egw.user('account_email')).then(function(_pubKey)
|
||||||
{
|
{
|
||||||
// if yes, hide settings dialog
|
var $mvelo_selector = jQuery(mvelo_settings_selector);
|
||||||
jQuery(mvelo_settings_selector).remove();
|
// Build the backupDialog once and remove the setting dialog after
|
||||||
jQuery('button#mailvelope_close_settings').remove();
|
if($mvelo_selector.length && !$mvelo_selector[0].src.match(/keyBackupDialog.html/,'ig'))
|
||||||
|
{
|
||||||
|
// CreateBackupDialog
|
||||||
|
self.mailvelope_createBackupDialog().then(function(_popupId){
|
||||||
|
jQuery('iframe[src^="chrome-extension"],iframe[src^="about:blank?mvelo"]').css({position:'absolute', "z-index":1});
|
||||||
|
_popupId.isReady().then(function(_popupId){
|
||||||
|
console.log(_popupId);
|
||||||
|
},
|
||||||
|
function(_err){
|
||||||
|
console.log(_err);
|
||||||
|
reject(_err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(_err){
|
||||||
|
console.log('rejected'+_err);
|
||||||
|
});
|
||||||
|
// if yes, hide settings dialog
|
||||||
|
jQuery(mvelo_settings_selector).remove();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else // close button on backup dialog
|
||||||
|
{
|
||||||
|
jQuery('iframe[src^="chrome-extension"],iframe[src^="about:blank?mvelo"]').remove();
|
||||||
|
jQuery('button#mailvelope_close_settings').remove();
|
||||||
|
}
|
||||||
|
|
||||||
// offer user to store his public key to AB for other users to find
|
// offer user to store his public key to AB for other users to find
|
||||||
var buttons = [
|
var buttons = [
|
||||||
{button_id: 2, text: 'Yes', id: 'dialog[yes]', image: 'check', default: true},
|
{button_id: 2, text: 'Yes', id: 'dialog[yes]', image: 'check', default: true},
|
||||||
|
Loading…
Reference in New Issue
Block a user