Чтобы защитить ваши локальные документы, электронные таблицы и презентации, зашифруйте их с помощью простого плагина симметричного шифрования. Шаги ниже объясняют, как это сделать.
Шаг 1. Создание плагина шифрования для редактора
Чтобы собрать плагин шифрования, вам нужно создать три файла:
- HTML-файл с интерфейсом,
- JS-файл с кодом,
- JSON-файл с конфигурацией.
Более подробную информацию о структуре плагина можно найти здесь.
Смотрим конфиг:
{
"name" : "crypto",
"guid" : "asc.{22222222-2222-2222-2222-222222222222}",
"variations" : [
{
"url" : "index.html",
"icons" : [],
"isViewer" : true,
"EditorsSupport" : ["word", "cell", "slide"],
"isVisual" : false,
"isModal" : false,
"isInsideMode" : false,
"initDataType" : "desktop",
"initData" : "encryption",
"cryptoMode" : "2",
"cryptoDisabledForInternalCloud" : "true",
"cryptoDisabledForExternalCloud" : "true"
}
]
}
Все параметры конфига описаны в документации.
После того, как файл конфигурации будет готов, создайте файл кода плагина со следующим содержимым:
(function (window, undefined) {
const global_password = "{my-super-long-password}";
window.Asc.plugin.init = function (obj)
{
if (!obj)
return;
switch (obj.type)
{
case "generatePassword":
{
this.executeMethod ("OnEncryption", [{type: "generatePassword", password: global_password}]);
break;
}
case "getPasswordByFile":
{
this.executeMethod("OnEncryption", [{type: "getPasswordByFile", password: global_password}]);
break;
}
case "setPasswordByFile":
{
this.executeMethod("StartAction", ["Info", "Save"]);
this.executeMethod("EndAction", ["Info", "Save"]);
break;
}
case "encryptData":
{
this.executeMethod("OnEncryption", [{type: "encryptData", data: obj.data, check: true}]);
break;
}
case "decryptData":
{
this.executeMethod("OnEncryption", [{type: "decryptData", data: obj.data, check: true}]);
break;
}
default:
break;
}
};
})(window, undefined);
Как мы видим из кода выше, все файлы будут зашифрованы одним паролем — {my-super-long-password}. Методы OnEncryption, StartAction, EndAction можно найти в документации API плагинов и макросов.
Обратите внимание, что типы encryptData и decryptData метода OnEncryption не относятся к локальным файлам.
Шаг 2. Создание плагина пользовательского интерфейса для приложения
Плагин Encryption не имеет интерфейса и не может работать по умолчанию. Работает только внутри документа, в котором он открыт (на одной вкладке приложения). Для работы со всеми документами, открытыми или созданными на разных вкладках рабочего стола Р7, необходимо создать UI-плагин для приложения. Это помогает использовать плагин Шифрования, когда это необходимо для всего приложения.
Этот плагин не имеет доступа к функциям редактирования, но имеет почти такую же конфигурацию:
{
"name" : "Encryption",
"nameLocale" : {
"ru" : "Шифрование",
"it" : "Crittografia",
"fr" : "Chiffrement",
"es" : "Encriptación",
"de" : "Verschlüsselung"
},
"guid" : "asc.{11111111-1111-1111-1111-111111111111}",
"variations" : [
{
"url" : "index.html",
"initDataType" : "desktop-external",
"initData" : "encryption",
"cryptoDisabledOnStart" : "true"
}
]
}
Файл index.html будет выглядеть следующим образом:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Encrypt files</title>
<script type="text/javascript" src="code.js"></script>
</head>
<body>
<p>Encryption enabled: <input id="check" type="checkbox"/></p>
</body>
</html>
С ним мы получим новую вкладку Шифрование на главной странице приложения:
Включить шифрование поставив галочку:
window.onload = function() {
const ASC_DESKTOP_EDITOR_DEFAULT_MODE = 0;
const ASC_DESKTOP_EDITOR_CRYPTO_MODE = 2;
document.getElementById ("check").onchange = function() {
let mode = this.checked ? ASC_DESKTOP_EDITOR_CRYPTO_MODE : ASC_DESKTOP_EDITOR_DEFAULT_MODE;
AscDesktopEditor.SetCryptoMode("", mode, function(retCode) {
switch (retCode) {
case 0:
console.log("OK");
break;
case 1:
console.log("Please, close all open files!");
break;
default:
break;
}
});
};
};
Шаг 3. Добавление плагинов в десктопное приложение
Скопируйте папки с плагинами в каталог sdkjs-plugins. Путь к папке зависит от используемой операционной системы:
- Для Linux — /opt/Р7/desktopeditors/editors/sdkjs-plugins/
- Для Windows — %ProgramFiles%\Р7\DesktopEditors\sdkjs-plugins\
Важно, чтобы вы использовали GUID плагинов в качестве имени папки.
Подробные инструкции можно найти здесь.
Шаг 4. Работа с плагинами шифрования
После добавления обоих плагинов в приложение появится новая вкладка Шифрование. Если установить там флажок, все создаваемые и редактируемые файлы будут зашифрованы паролем:
- Если шифрование останется включенным, пароль не будет требоваться при открытии защищенных файлов (будет вызываться getPasswordByFile).
- Если шифрование отключено или файлы открываются в другом приложении, пароль будет запрошен.