mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
basic conflict detection based on the audit log
This commit is contained in:
parent
a9698d362f
commit
ff58456332
@ -13,6 +13,7 @@ from notes_move_api import notes_move_api
|
|||||||
from password_api import password_api
|
from password_api import password_api
|
||||||
from settings_api import settings_api
|
from settings_api import settings_api
|
||||||
from notes_history_api import notes_history_api
|
from notes_history_api import notes_history_api
|
||||||
|
from audit_api import audit_api
|
||||||
import config_provider
|
import config_provider
|
||||||
import my_scrypt
|
import my_scrypt
|
||||||
|
|
||||||
@ -35,6 +36,7 @@ app.register_blueprint(notes_move_api)
|
|||||||
app.register_blueprint(password_api)
|
app.register_blueprint(password_api)
|
||||||
app.register_blueprint(settings_api)
|
app.register_blueprint(settings_api)
|
||||||
app.register_blueprint(notes_history_api)
|
app.register_blueprint(notes_history_api)
|
||||||
|
app.register_blueprint(audit_api)
|
||||||
|
|
||||||
class User(UserMixin):
|
class User(UserMixin):
|
||||||
pass
|
pass
|
||||||
|
18
src/audit_api.py
Normal file
18
src/audit_api.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from flask import Blueprint, jsonify
|
||||||
|
from flask import request
|
||||||
|
from flask_login import login_required
|
||||||
|
|
||||||
|
from sql import getSingleResult
|
||||||
|
|
||||||
|
audit_api = Blueprint('audit_api', __name__)
|
||||||
|
|
||||||
|
@audit_api.route('/audit/<int:full_load_time>', methods = ['GET'])
|
||||||
|
@login_required
|
||||||
|
def getNote(full_load_time):
|
||||||
|
browser_id = request.headers['x-browser-id']
|
||||||
|
|
||||||
|
count = getSingleResult("SELECT COUNT(*) AS 'count' FROM audit_log WHERE browser_id != ? AND date_modified >= ?", [browser_id, full_load_time])['count']
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
'changed': count > 0
|
||||||
|
})
|
@ -1,5 +1,7 @@
|
|||||||
import base64
|
import base64
|
||||||
import os
|
import os
|
||||||
|
import math
|
||||||
|
import time
|
||||||
|
|
||||||
from flask import Blueprint, jsonify
|
from flask import Blueprint, jsonify
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
@ -48,5 +50,6 @@ def getTree():
|
|||||||
retObject['encrypted_data_key'] = getOption('encrypted_data_key')
|
retObject['encrypted_data_key'] = getOption('encrypted_data_key')
|
||||||
retObject['encryption_session_timeout'] = getOption('encryption_session_timeout')
|
retObject['encryption_session_timeout'] = getOption('encryption_session_timeout')
|
||||||
retObject['browser_id'] = base64.b64encode(os.urandom(8))
|
retObject['browser_id'] = base64.b64encode(os.urandom(8))
|
||||||
|
retObject['full_load_time'] = math.floor(time.time())
|
||||||
|
|
||||||
return jsonify(retObject)
|
return jsonify(retObject)
|
@ -86,6 +86,15 @@ function setExpandedToServer(note_id, is_expanded) {
|
|||||||
let globalEncryptionSalt;
|
let globalEncryptionSalt;
|
||||||
let globalEncryptionSessionTimeout;
|
let globalEncryptionSessionTimeout;
|
||||||
let globalEncryptedDataKey;
|
let globalEncryptedDataKey;
|
||||||
|
let globalFullLoadTime;
|
||||||
|
|
||||||
|
setInterval(() => {
|
||||||
|
$.get(baseUrl + 'audit/' + globalFullLoadTime).then(resp => {
|
||||||
|
if (resp.changed) {
|
||||||
|
window.location.reload(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 60 * 1000);
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
$.get(baseUrl + 'tree').then(resp => {
|
$.get(baseUrl + 'tree').then(resp => {
|
||||||
@ -94,6 +103,7 @@ $(function(){
|
|||||||
globalEncryptionSalt = resp.password_derived_key_salt;
|
globalEncryptionSalt = resp.password_derived_key_salt;
|
||||||
globalEncryptionSessionTimeout = resp.encryption_session_timeout;
|
globalEncryptionSessionTimeout = resp.encryption_session_timeout;
|
||||||
globalEncryptedDataKey = resp.encrypted_data_key;
|
globalEncryptedDataKey = resp.encrypted_data_key;
|
||||||
|
globalFullLoadTime = resp.full_load_time;
|
||||||
|
|
||||||
// add browser ID header to all AJAX requests
|
// add browser ID header to all AJAX requests
|
||||||
$.ajaxSetup({
|
$.ajaxSetup({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user