ืืจืืก, ืืืจืื. ืฉืืื ืืืืฃ ืืืื ืงืึทืืืึทื ืกืขืจืืืขืจืก
ืคืจืืื ื ืืขืืขืื ืืืจ ืฆื ืฉืืขืื ืึท ืึทื ืืืืืงืืื ื ืคืึทืจื ืคึฟืึทืจ ืืื, ืืื ืึทื ืฉืืึธื ืคืื ืฉืืขืคึผื ืืื ืืืื ืกืคึผืขืฆืืคืืฉ ืืขืืคึผืืึทืืขืก, ืืื ืืขืืขื ืงื ืึท ืืฉืืงืึทืืืข ืคึผืจืืืขืงื
ืคืื ืงืืจืก, ืืืืืขืจ ืืืืื ื ืืื ืื ืงืืืืื, ืืื ืืขืงืืงื ืืื ืืื ืงืจืึธืื ืคึผืืื ืื ืืืฉืขื ืขืจืืืืึทื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืื ืงืึธื ืคืืืก, ืืื ืืึธืจื ืึทื ืึทืืจืขืก ืกืืึทืจืืื ื ืืื "ืืืึธื:" ืืื ืืขืืืขื ืืืืจืื ืคึฟืึทืจ ืืืจ, ืึธืึธืคึผืก. ืขืก ืืื ืฉืืื ืงืืึธืจ ืึทื ืื ืกืขืจืืืืก ืืื ื ืืฉื ืืืฉืขื ืขืจืืื ืขืคึผืขืก ืืืืฃ ืืขื ืืืขื, ืืื ืคืึทืงื, ืืึธืก ืืื ืึทืืข ืืขืืื ืืืจื js. ืืึทืงืข, ืื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืื ืืืฉืขื ืขืจืืืืึทื ืืืจื ืืขื ืงืืืขื ื, ืืืขืืขืจืขืจ ืืื ืืืฉืึทืืืึทืกืงืจืืคึผื ืืื. ืืขื ืข. ืื ืฉืืื ืงืืื ืืื ืึทื ืื ืคึผืจืืืขืงื
ื ืึธื ืคืึธืจืงืื ื ืื ืคึผืจืืืขืงื, ืืื ืื ืืขืืืืื ืฆื ืืจืึทืืื ืืืขืื ืืืึธืก ืืืื ืึธืคึผืฆืืขืก ืืขื ืขื. ืื ืืืืคืืืืข ืืื ืืขืืืขื ืงืืืคืืืฆืืจื ืืขืจืืื, ืืืืก ืืื ืืื ื ืืฉื ืืขืืืืื ืืคืืืืื ืคืื ืืขื ืชื ืื ืื ืืขืจ ืคืจืืืขืงื ืืื ืืืืืื ื ืจืืื ืขืจ ืคืจืื ื-ืขื ื, ืื ืงืืื ืฆืืจืืง-ืขื ื. ืืึธื, ืื ืกืืืคึผืืึทืกื ืืืืืื ื ืืืึธืื ืืืื ืฆื ืฆืืขื ืึทืจืืืฃ ื ืึธืืขืืืฉืก ืืื ืฆืืืื ืืขื ืขืก ืฆื ืืืฉืขื ืขืจืืื ืึทื ืึทืจืงืืืื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ื ื ืืฆื ืืืจืขืงื ืืื ืงืก.
ืืื ืคืึทืงื, ืขืก ืืขื ืขื ื ืืฉื ืคืืืข ืึธืคึผืฆืืขืก. ืืขืจ ืืขื ืื, ื ืึธืจ ืืืื ืขืจ ืืขืงืืืขื ืฆื ืืืื ืื ื. ืืืจ ืืึทืจืคึฟื ืฆื ืฉืืขืื ืื ืงืึธื ืคืืืก ืืื ืืึทืงืืืขื ืึท ืืื ืง ืืืึธืก ืืืจ ืงืขื ืขื ื ืึธืืืึทืื ืฆื ืื ืกืขืจืืืขืจ ืงืึทื ืกืึธืื ืฆื ืืึทืงืืืขื ืึท ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื.
ืขืืืขืืข ืืขืงืกื ืืขืงืขืก ืืื ืื ืจืืืึทืืืื ื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืืืื ืืึทื ืฅ ืึท ืืืกื, ืืืฉ ืึท ืืืกื ืงืืืืืืื. ืื ืงืืึธืจ ืืื ืืขืจ ืืึธื ืืืืืื ื ืืื ืืขืืืขื ืฆื ืืึทืงืืืขื ืื base64 ืฉืืจืืงื ืคืื ืื ืืืฉืขื ืขืจืืืืึทื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืื ืืืึทืจืคื ืขืก ืืื ืื ืืึทืคืขืจ, ืืฉืขืช ืืืืฃ ืื ืกืขืจืืืขืจ ืืื ืื ืืึทืคึฟืขื ืืื ืื ืงืึทื ืกืึธืื.
echo 'base64string' | base64 --decode > config.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');
ืืื ืืื ืืึทืื ืืื ืื ืจืืืึทืืืื ื ืืืึธื ืืืืคืขืฅ ืคืื ืื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื.
ืึธืืงืื, ืึทืืข ืืื ืืขืืื ืฆื ืืึธื ืืื ืฆื ืืืืื ืื ืื ืืขืจ ืงื ืขืคึผื ืืืืึทืืขืจ ืฆื ืืื ืืื ืืืขื ืืื ืงืืืงื ืืืืฃ ืขืก, ืืื ืืืึธืื ื ืืฉื ืจืึทืืขืืืขื ืื ืจืืืึทืืืื ื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืฆื ืืขื ืืืขืืขืจืขืจ, โโืึธืืขืจ ืืึทืงืืืขื ืื 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',
});
};
ืืื ืืืจ ืงืขื ืืึธืื ืืืืขืจืงื, ืืื ืืจืืืขืจืืขืคืืจื ืื ืืืจ ืคืื ืื ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืื ืฆื ืื ืคึผืจืืืืึทื ืืืฉืขื ืขืจืืื ืืืคึผ ืืืคึฟื, ืืื ืึทืืื ืืืืฃ. ืืึธืก ืืื AngularJS, ืืื ืืขืจ ืืืืจ ืืื ืกืืืงืก ืฆื ืงืึทืืืืึทืงืงืก ืืื ืืื ื ืืฉื ืื ืกืืจืืืขื ื ืขืก ืืืจื ืืืืืืช. ืืึธืืื ืืึธืึทืืืืคึผ ื ืึธื ืืื SaveAs ืืื ืึท ืจืขืืืืืึทื, ืืฉืขืช ืืึธืืื ืืึธืึทืืืึทืกืข 64 ืืื ืขืคึผืขืก ืึท ืืืกื ืึทื ืืขืจืฉ. ืืืจ ืืึทืื ืึท FileReader ืืืืคืขืฅ ืืืึธืก ืืื ืืขืงืืืขื ืฆื ืืื ืื ืืื HTML5 ืืื ืืื ืฉืืื ืืึทื ืฅ
position: absolute;
z-index: -1;
opacity: 0;
ืืืึธืก ืืึธื ืืืจ ืืขืจืืืืื ืฆื ืืึทืืึทืืื ืืขื ืขืืขืืขื ื ืคืื ืืขืจ ืืืื ืื ื ืืื ืขืก ืืึทืงืข ืืึธืื ืืืืฃ ืืขื ืืืึทื. ืืืึธืืืึท, ืื ืึทืจืืขื ืืื ืืขืืืขื ืืขืขื ืืืงื, ืืืขื ืืื ืงืืืงื ืืืืฃ ืืืื ืงื ืขืคึผื, ืึท ืฉืืจื ืืื ืืึธืก ืืื ืืขืืืขื ืืขืฉืืขืื ืืื ืื ืืึทืคืขืจ:
echo 'base64string' | base64 --decode > config.zip
ืืืึธืก ืืื ืคืฉืื ืคึผืืืกืืื ืืื ืื ืงืึทื ืกืึธืื ืืืืฃ ืื ืกืขืจืืืขืจ ืืื ืืืืื ืืืงืืืขื ืึท ืคืึทืจืฉืืขืกืืขื ืึทืจืงืืืื ืืื ืึทืืข ืื ืงืึธื ืคืืืก.
ืืื, ืคืื ืงืืจืก, ืืื ืืขืฉืืงื ืึท ืฆืืขื ืืงืฉื ืฆื ืืขื ืืืืจ, ืืืืึทื ... ืื ืคึผืจืืืขืงื ืืื ืึทืงืืืื ืืื ืืขืืขืืืง, ืืื ืืืึธืื ืืื ืฆื ืืขื ืืขืจืืืึทื ืืืงืื ืืขื ืคืื ืืขื ืืืืจ ืืื ืืึธืื ืืืื ืืืืืขื ืข ืงื ืขืคึผื) ืคึฟืึทืจ ืื ืืื ืืขืจืขืกืืจื, ืืึธ ืืื ืขืก.
ืืื ืึทื ืืืืืงืืื ื ืึทืืขืืขื)
ืืงืืจ: www.habr.com