ืฉืืื, ืืืจืื. ืืคื ืขื ืฉืจืชื ืืงืจื ืฉืื
ืืืจืื ืืืงืฉื ืืื ื ืืืงืื ืขืืืจื ืืืืช ืคืืชืื, ืืืืงืื ืืืจืืจ ืืื ืืช ืืชืื ืืืช ืืกืคืฆืืคืืืช ืฉืื, ื ืืืจืชื ืืคืจืืืงื ืืขื ืืื
ืืืืื, ืืคื ื ืฉืืคืจืชื ืืืงืืจืืช, ืืกืชืืืชื ืืืื ืืจืื ืืืฉื ืืช ืืจืืืื ื-zip ืฉื ืืฆืจ ืขื ืืืืจืืช, ืืฉื ืืืืชื ืื ืืชืืืช ืฉืืชืืืื ื-"blob:", ืืืคืก. ืืืจ ืืชืืจืจ ืฉืืฉืืจืืช ืื ืืืืฆืจ ืฉืื ืืืจ ืืืจื, ืืืขืฉื, ืืื ื ืขืฉื ืขื ืืื js. ืืืื, ืืจืืืื ื-zip ื ืืฆืจ ืขื ืืื ืืืงืื, ืืืคืืคื ืื-Javascript ืขืฆืื. ืึธืึตื. ืืืืคื ืืื ืฉืืคืจืืืงื
ืืืืจ ืฉืืืืงืชื ืืช ืืคืจืืืงื, ืืชืืืชื ืืืฉืื ืื ืืืคืฉืจืืืืช ืฉืื. ืืืฉืืื ืืกืชืืื ืืฉื ืืขืืืื ืฉืื ืจืฆืืชื ืืืจืื ืืืชื ืื ืฉืืคืจืืืงื ืืืฉืืจ ืืืืช ืืืืจื, ืืื ืื ืืืืจื. ืืืืื, ืืคืชืจืื ืืคืฉืื ืืืืชืจ ืืืื ืืืฉืื ืืช ื-nodejs ืืืืืจืื ืืืชื ืืืฆืืจ ืืจืืืื ืขื ืืืืจืืช ืืืืฆืขืืช ืงืืฉืืจืื ืืฉืืจืื.
ืืืขืฉื, ืื ืืื ืืจืื ืืคืฉืจืืืืช. ืืืชืจ ืืืืง, ืจืง ืืื ืขืื ืืจืืฉ. ืื ืื ื ืฆืจืืืื ืืืืืืจ ืืช ืืืืืจืืช ืืืงืื ืงืืฉืืจ ืฉื ืืื ืืืขืชืืง ืืงืื ืกืืืช ืืฉืจืช ืืื ืืงืื ืืจืืืื zip.
ืืื ืงืืฆื ืืงืกื ืืืจืืืื ื-zip ืฉืืชืงืื ืฉืงืื ืื ืืขื, ืืืฉ ืืื ืงืืืืืืืืื. ืืคืชืจืื ืืืจืืจ ืืื ืืงืื ืืช ืืืืจืืืช base64 ืืืจืืืื ื-zip ืฉื ืืฆืจ ืืืืจืืง ืืืชื ืืชืื ืืืืืจ, ืชืื ืืื ืืฉืจืช ืขื ืืคืงืืื ืืืกืืฃ
echo 'base64string' | base64 --decode > config.zip
ื ืืื ืืืฆืืจ ืืช ืืืชื ืงืืืฅ zip.
ืืืฉืืื ืืคืจืืืงื ืื ื ืจืืืื ืฉืืื ืืืฆืืจืช ืืจืืืื zip:
$scope.downloadZip = function() {
var zip = new JSZip();
var sourceCodes = $window.document.querySelectorAll('main .file .code.source');
for (var i = 0; i < sourceCodes.length; i++) {
var sourceCode = sourceCodes[i];
var name = sourceCode.dataset.filename;
var content = sourceCode.children[0].children[0].innerText;
if (!$scope.isSymlink() && name.match(/^sites-available//)) {
name = name.replace(/^sites-available//, 'sites-enabled/');
}
zip.file(name, content);
if (name.match(/^sites-available//)) {
zip.file(name.replace(/^sites-available//, 'sites-enabled/'), '../' + name, {
unixPermissions: parseInt('120755', 8),
});
}
}
zip.generateAsync({
type: 'blob',
platform: 'UNIX',
}).then(function(content) {
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_zip',
});
};
ืืื ืื ืคืฉืื, ืืืืฆืขืืช ืืกืคืจืืื
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
ืืืฉืจ ืืชืืื ืืื ืืืืืืงื ืืืชื ืฉื ืืฆืจ ืฉื ืืจืืืื ื-zip.
ืืืงืื, ืื ืื ืฉืืืืชื ืฆืจืื ืืขืฉืืช ืื ืืืืกืืฃ ืืคืชืืจ ื ืืกืฃ ืืืื ืืืืฉืจ ืืืฆืชื ืขืืื, ืื ืืืืชื ืฉืืืจ ืืช ืืจืืืื ื-zip ืฉืืชืงืื ืืืคืืคื, ืืื ืืงืื ืืื ื ืืช ืงืื base64. ืืืจื ืฉืืชืขืกืงืชื ืงืฆืช, ืงืืืืชื 2 ืฉืืืืช, ืืืงืื ืืืจืื ืืืช ืืืื:
$scope.downloadZip = function() {
generateZip(function (content) {
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_zip',
});
};
$scope.downloadBase64 = function() {
generateZip(function (content) {
var reader = new FileReader();
reader.readAsDataURL(content);
reader.onloadend = function() {
var base64 = reader.result.replace(/^data:.+;base64,/, '');
// ะฒ ะฟะตัะตะผะตะฝะฝะพะน base64 ะบะฐะบ ัะฐะท ะฝัะถะฝัะน ะผะฝะต zip ะฐัั
ะธะฒ ะฒ ะฒะธะดะต base64 ัััะพะบะธ
}
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_base64',
});
};
ืืคื ืฉืืืื ืฉืืชื ืื, ืืขืืจืชื ืืช ืืืืจ ืฉื ืืจืืืื ื-zip ืขืฆืื ืืฉืืืช privategenerZip, ืืื ืืืื. ืืื AngularJS, ืืืืืืจ ืขืฆืื ืืืง ืืืชืงืฉืจืืช ืืืืจืช ืืื ืืืฉื ืืืช ืืืืฆืขืืช ืืืืืืช. downloadZip ืขืืืื ืขืฉื saveAs ืืคืื, ืืขืื ืฉ-downloadBase64 ืขืฉื ืืฉืื ืืขื ืฉืื ื. ืื ืื ื ืืืฆืจืื ืืืืืืงื FileReader ืฉืืืืข ืืืื ื ื-html5 ืืืื ืืืจ ืื
position: absolute;
z-index: -1;
opacity: 0;
ืื ืฉืืคืฉืจ ืื ืื ืืืกืชืืจ ืืช ืืืืื ื ืืืขืื ืืื ืืืฉืืืจ ืืืชื ืืืฃ. ืืืืื, ืืืฉืืื ืืืฉืืื, ืืืฉืจ ืืืฆืชื ืขื ืืืคืชืืจ ืฉืื, ืฉืืจื ืืื ืืืฆืื ืืืืืจ:
echo 'base64string' | base64 --decode > config.zip
ืฉืคืฉืื ืืืืงืชื ืืงืื ืกืืื ืืฉืจืช ืืืื ืงืืืืชื ืืจืืืื zip ืขื ืื ืืืืืจืืช.
ืืืืืื, ืฉืืืชื ืืงืฉืช ืืฉืืื ืืืืืจ, ืื... ืืคืจืืืงื ืคืขืื ืืชืืกืก, ืืฉืื ืืจืืืช ืขืืืื ืื ืืืืืืจ ืืืฉ ืื ืืคืชืืจ ืืฉืื) ืืืขืื ืืื ืื, ืื ื ืืื
ืืชืคืชืืืช ื ืขืืื ืืืืื)
ืืงืืจ: www.habr.com