mirror of https://github.com/keeweb/keeweb
fix #810: Google Drive cookies
parent
19545e5cca
commit
ae8e6e4bc8
|
@ -10,7 +10,6 @@ const IdleTracker = require('./comp/idle-tracker');
|
|||
const PopupNotifier = require('./comp/popup-notifier');
|
||||
const SingleInstanceChecker = require('./comp/single-instance-checker');
|
||||
const AppRightsChecker = require('./comp/app-rights-checker');
|
||||
const CookieManager = require('./comp/cookie-manager');
|
||||
const Alerts = require('./comp/alerts');
|
||||
const Updater = require('./comp/updater');
|
||||
const AuthReceiver = require('./comp/auth-receiver');
|
||||
|
@ -137,7 +136,6 @@ ready(() => {
|
|||
Updater.init();
|
||||
SingleInstanceChecker.init();
|
||||
AppRightsChecker.init();
|
||||
CookieManager.init();
|
||||
setTimeout(() => PluginManager.runAutoUpdate(), Timeouts.AutoUpdatePluginsAfterStart);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
const Logger = require('../util/logger');
|
||||
const Launcher = require('./launcher');
|
||||
const RuntimeDataModel = require('../models/runtime-data-model');
|
||||
|
||||
const CookieManager = {
|
||||
logger: new Logger('cookie-manager'),
|
||||
cookies: undefined,
|
||||
cookiesStr: undefined,
|
||||
|
||||
init() {
|
||||
if (Launcher) {
|
||||
this.cookies = RuntimeDataModel.instance.get('cookies');
|
||||
this.cookiesStr = JSON.stringify(this.cookies);
|
||||
Launcher.setCookies(this.cookies);
|
||||
}
|
||||
},
|
||||
|
||||
saveCookies() {
|
||||
if (Launcher) {
|
||||
Launcher.getCookies((err, cookies) => {
|
||||
if (err) {
|
||||
return this.logger.error('Error getting cookies', err);
|
||||
}
|
||||
if (cookies && cookies.length) {
|
||||
cookies = cookies.filter(cookie => !cookie.session).map(cookie => ({
|
||||
url: (cookie.secure ? 'https' : 'http') + '://' + cookie.domain + (cookie.path || ''),
|
||||
name: cookie.name,
|
||||
value: cookie.value,
|
||||
domain: cookie.domain,
|
||||
path: cookie.path,
|
||||
secure: cookie.secure,
|
||||
httpOnly: cookie.httpOnly,
|
||||
expirationDate: cookie.expirationDate
|
||||
}));
|
||||
const cookiesStr = JSON.stringify(cookies);
|
||||
if (cookiesStr !== this.cookiesStr) {
|
||||
this.cookies = cookies;
|
||||
this.cookiesStr = cookiesStr;
|
||||
RuntimeDataModel.instance.set('cookies', cookies);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = CookieManager;
|
|
@ -11,6 +11,10 @@ const RuntimeDataModel = Backbone.Model.extend({
|
|||
load: function() {
|
||||
return SettingsStore.load('runtime-data').then(data => {
|
||||
if (data) {
|
||||
if (data.cookies) {
|
||||
// we're not using now
|
||||
delete data.cookies;
|
||||
}
|
||||
this.set(data, {silent: true});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -4,7 +4,6 @@ const AppSettingsModel = require('../models/app-settings-model');
|
|||
const RuntimeDataModel = require('../models/runtime-data-model');
|
||||
const Links = require('../const/links');
|
||||
const FeatureDetector = require('../util/feature-detector');
|
||||
const CookieManager = require('../comp/cookie-manager');
|
||||
|
||||
const MaxRequestRetries = 3;
|
||||
|
||||
|
@ -58,7 +57,6 @@ _.extend(StorageBase.prototype, {
|
|||
}
|
||||
const statuses = config.statuses || [200];
|
||||
xhr.addEventListener('load', () => {
|
||||
CookieManager.saveCookies();
|
||||
if (statuses.indexOf(xhr.status) >= 0) {
|
||||
return config.success && config.success(xhr.response, xhr);
|
||||
}
|
||||
|
@ -81,7 +79,6 @@ _.extend(StorageBase.prototype, {
|
|||
}
|
||||
});
|
||||
xhr.addEventListener('error', () => {
|
||||
CookieManager.saveCookies();
|
||||
return config.error && config.error('network error', xhr);
|
||||
});
|
||||
xhr.addEventListener('timeout', () => {
|
||||
|
@ -191,7 +188,6 @@ _.extend(StorageBase.prototype, {
|
|||
this._oauthToken = token;
|
||||
this.runtimeData.set(this.name + 'OAuthToken', token);
|
||||
this.logger.debug('OAuth token received');
|
||||
CookieManager.saveCookies();
|
||||
}
|
||||
return token;
|
||||
},
|
||||
|
|
|
@ -33,6 +33,7 @@ const showDevToolsOnStart = process.argv.some(arg => arg.startsWith('--devtools'
|
|||
app.setPath('userData', path.join(tempUserDataPath, tempUserDataPathRand));
|
||||
|
||||
setEnv();
|
||||
restorePreferences();
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
if (restartPending) {
|
||||
|
@ -392,6 +393,28 @@ function setEnv() {
|
|||
}
|
||||
}
|
||||
|
||||
function restorePreferences() {
|
||||
const profileConfigPath = path.join(userDataDir, 'profile.json');
|
||||
|
||||
const newProfile = { dir: tempUserDataPathRand };
|
||||
let oldProfile;
|
||||
try {
|
||||
oldProfile = JSON.parse(fs.readFileSync(profileConfigPath, 'utf8'));
|
||||
} catch (e) { }
|
||||
|
||||
fs.writeFileSync(profileConfigPath, JSON.stringify(newProfile));
|
||||
|
||||
if (oldProfile && oldProfile.dir && /^[\d.]+$/.test(oldProfile.dir)) {
|
||||
const oldProfilePath = path.join(tempUserDataPath, oldProfile.dir);
|
||||
const newProfilePath = path.join(tempUserDataPath, newProfile.dir);
|
||||
if (fs.existsSync(path.join(oldProfilePath, 'Cookies'))) {
|
||||
const oldCookies = fs.readFileSync(path.join(oldProfilePath, 'Cookies'));
|
||||
fs.mkdirSync(newProfilePath);
|
||||
fs.writeFileSync(path.join(newProfilePath, 'Cookies'), oldCookies);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function deleteOldTempFiles() {
|
||||
if (app.oldTempFilesDeleted) {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue