เชถเซเชญเซเชเซเชเชพเช, เชธเชพเชฅเซเช. เชฎเชพเชฐเชพ เชเซเชฎเซเชฌเซเช เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเซเชเชฆเชฐ
เชฎเชฟเชคเซเชฐเซเช เชฎเชจเซ เชคเซเชฎเชจเชพ เชฎเชพเชเซ เชกเซเชตเชฒเชชเชฎเซเชจเซเช เชซเชพเชฐเซเชฎ เชฌเชจเชพเชตเชตเชพเชจเซเช เชเชนเซเชฏเซเช, เช
เชจเซ เชคเซเชฎเชจเซ เชฎเชพเชฐเชพ เชเซเชเซเชเชธ เชจเชฎเซเชจเชพเช เชเซเชเชเชตเชพเชจเซ เชฌเชฆเชฒเซ, เชฎเชจเซ เชเช เชฐเชธเชชเซเชฐเชฆ เชชเซเชฐเซเชเซเชเซเช เชฏเชพเชฆ เชเชตเซเชฏเซ.
เช
เชฒเชฌเชคเซเชค, เชธเซเชคเซเชฐเซเชคเซเชฎเชพเช เชเซเชฆเชคเชพ เชชเชนเซเชฒเชพ, เชฎเซเช เชเซเชฏเซเช เชเซ เชเซเชฐเซเชฎ เชเชจเชฐเซเช เชเชฐเซเชฒ เชเชฟเชช เชเชฐเซเชเชพเชเชตเชจเซ เชเชจเซเชซเชฟเชเซเชธ เชธเชพเชฅเซ เชเซเชฏเชพเช เชเซเชเชเซ เชเซ, เช
เชจเซ เชคเซเชฏเชพเช โเชฌเซเชฒเซเชฌ:โ เชฅเซ เชถเชฐเซ เชฅเชคเซเช เชธเชฐเชจเชพเชฎเซเช เชฎเชพเชฐเซ เชฐเชพเชน เชเซเช เชฐเชนเซเชฏเซเช เชนเชคเซเช, เช
เชฐเซ. เชคเซ เชชเชนเซเชฒเซเชฅเซ เช เชธเซเชชเชทเซเช เชฅเช เชเชฏเซเช เชเซ เชเซ เชธเซเชตเชพ เชฐเชธเซเชคเชพเชฎเชพเช เชเชเชเชชเชฃ เชเชจเชฐเซเช เชเชฐเชคเซ เชจเชฅเซ, เชนเชเซเชเชคเชฎเชพเช, เชคเซ เชฌเชงเซเช js เชฆเซเชตเชพเชฐเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ. เชเชฐเซเชเชฐ, เชเชฟเชช เชเชฐเซเชเชพเชเชต เชเซเชฒเชพเชฏเชเช, เชฌเซเชฐเชพเชเชเชฐ เช
เชจเซ เชเชพเชตเชพเชธเซเชเซเชฐเชฟเชชเซเช เชฆเซเชตเชพเชฐเชพ เช เชเชจเชฐเซเช เชฅเชพเชฏ เชเซ. เชคเซ. เชธเซเชเชฆเชฐเซเชฏ เช เชเซ เชเซ เชชเซเชฐเซเชเซเชเซเช
เชชเซเชฐเซเชเซเชเซเชเชจเซ เชซเซเชฐเซเช เชเชฐเซเชฏเชพ เชชเชเซ, เชฎเซเช เชฎเชพเชฐเชพ เชตเชฟเชเชฒเซเชชเซ เชถเซเช เชเซ เชคเซ เชตเชฟเชถเซ เชตเชฟเชเชพเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช. เชเชพเชฐเซเชฏ เช เชนเชเซเชเชคเชฅเซ เชเชเชฟเชฒ เชนเชคเซเช เชเซ เชนเซเช เชเชตเซ เชถเชฐเชคเชฅเซ เชตเชฟเชเชฒเชฟเชค เชฅเชตเชพ เชฎเชพเชเชเชคเซ เชจ เชนเชคเซ เชเซ เชชเซเชฐเซเชเซเชเซเช เชเซเช เชชเชฃ เชฌเซเช-เชเชจเซเชก เชตเชฟเชจเชพ, เชถเซเชฆเซเชง เชซเซเชฐเชจเซเช-เชเชจเซเชก เชฐเชนเซเชตเซ เชเซเชเช. เช
เชฒเชฌเชคเซเชค, เชธเซเชฅเซ เชธเชฐเชณ เชเชเซเชฒ เชจเซเชกเชเชจเซ เชเซเชเชเชตเชพเชจเซ เช
เชจเซ เชคเซเชจเซ เชกเชพเชฏเชฐเซเชเซเช เชฒเชฟเชเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฐเซเชชเชฐเซเชเชพเช เชธเชพเชฅเซ เชเชฐเซเชเชพเชเชต เชเชจเชฐเซเช เชเชฐเชตเชพ เชฆเชฌเชพเชฃ เชเชฐเชตเชพเชจเซ เชเซ.
เชเชฐเซเชเชฐ, เชคเซเชฏเชพเช เชเชฃเชพ เชฌเชงเชพ เชตเชฟเชเชฒเซเชชเซ เชจ เชนเชคเชพ. เชตเชงเซ เชธเซเชชเชทเซเช เชฐเซเชคเซ, เชซเชเซเชค เชเช เช เชงเซเชฏเชพเชจเชฎเชพเช เชเชตเซเชฏเซเช. เช
เชฎเชพเชฐเซ เชฐเซเชชเชฐเซเชเชพเช เชธเซเชฏเซเชเชฟเชค เชเชฐเชตเชพเชจเซ เช
เชจเซ เชเช เชฒเชฟเชเช เชฎเซเชณเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซเชจเซ เช
เชฎเซ เชเชฟเชช เชเชฐเซเชเชพเชเชต เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เชธเชฐเซเชตเชฐ เชเชจเซเชธเซเชฒ เชชเชฐ เชเซเชชเชฟ เชเชฐเซ เชถเชเซเช เชเซเช.
เชชเชฐเชฟเชฃเชพเชฎเซ เชเชฟเชช เชเชฐเซเชเชพเชเชตเชฎเชพเช เชเซเชเชฒเซเช เชเซเชเซเชธเซเช เชซเชพเชเชฒเซเชจเซเช เชตเชเชจ เชฅเซเชกเซเชเช เชนเชคเซเช, เชถเชพเชฌเซเชฆเชฟเช เชฐเซเชคเซ เชฅเซเชกเชพ เชเชฟเชฒเซเชฌเชพเชเช. เชธเซเชชเชทเซเช เชเชเซเชฒ เช เชนเชคเซ เชเซ เชเชจเชฐเซเช เชเชฐเซเชฒ เชเชฟเชช เชเชฐเซเชเชพเชเชตเชฎเชพเชเชฅเซ เชฌเซเช 64 เชธเซเชเซเชฐเชฟเชเช เชฎเซเชณเชตเชตเซ เช
เชจเซ เชคเซเชจเซ เชฌเชซเชฐเชฎเชพเช เชซเซเชเชเซ เชฆเซเชตเซ, เชเซเชฏเชพเชฐเซ เชเชจเซเชธเซเชฒเชฎเชพเช เชเชฆเซเชถ เชธเชพเชฅเซ เชธเชฐเซเชตเชฐ เชชเชฐ
echo 'base64string' | base64 --decode > config.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');
เชเซเชฏเชพเช เชธเชพเชฎเชเซเชฐเซ เช เชเชฟเชช เชเชฐเซเชเชพเชเชตเชจเซเช เชชเชฐเชฟเชฃเชพเชฎเซ เชฌเซเชฒเซเชฌ เชเชฌเซเชเซเชเซเช เชเซ.
เช เซเช เชเซ, เชฎเชพเชฐเซ เชฌเชธ เชคเซเชจเซ เชฌเชพเชเซเชฎเชพเช เชฌเซเชเซเช เชฌเชเชจ เชเชฎเซเชฐเชตเชพเชจเซเช เชนเชคเซเช เช เชจเซ เชเซเชฏเชพเชฐเซ เชฎเซเช เชคเซเชจเชพ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซเชฏเซเช, เชคเซเชฏเชพเชฐเซ เชนเซเช เชชเชฐเชฟเชฃเชพเชฎเซ เชเชฟเชช เชเชฐเซเชเชพเชเชตเชจเซ เชฌเซเชฐเชพเชเชเชฐเชฎเชพเช เชธเชพเชเชตเซเชถ เชจเชนเซเช, เชชเชฐเชเชคเซ เชคเซเชฎเชพเชเชฅเซ 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 เชเซ, เช
เชจเซ เชฒเซเชเช เชชเซเชคเซ เชเซเชฒเชฌเซ
เชเซเชธเชจเซ เชตเชณเชเซ เชฐเชนเซ เชเซ เช
เชจเซ เชตเชเชจเซ เชฆเซเชตเชพเชฐเชพ เชคเซเชจเซ เช
เชฎเชฒ เชเชฐเซเชฏเซ เชจเชฅเซ. downloadZip เช เชนเชเซ เชชเชฃ เชเชเชเชชเซเช เชคเชฐเซเชเซ saveAs เชเชฐเซเชฏเซเช เชเซ, เชเซเชฏเชพเชฐเซ downloadBase64 เช เชฅเซเชกเซเช เช
เชฒเช เชเชฐเซเชฏเซเช เชเซ. เช
เชฎเซ เชเช FileReader เชเชฌเซเชเซเชเซเช เชฌเชจเชพเชตเซเช เชเซเช เชเซ เช
เชฎเชพเชฐเซ เชชเชพเชธเซ html5 เชฎเชพเช เชเชตเซเชฏเซเช เชเซ เช
เชจเซ เชชเชนเซเชฒเซเชฅเซ เช เชเชเชฆเชฎ เชเซ
position: absolute;
z-index: -1;
opacity: 0;
เชเซเชฃเซ เชฎเชจเซ เชคเชคเซเชตเชจเซ เชฆเซเชถเซเชฏเชฎเชพเชเชฅเซ เชเซเชชเชพเชตเชตเชพ เช เชจเซ เชตเชพเชธเซเชคเชตเชฎเชพเช เชคเซเชจเซ เชชเซเชทเซเช เชชเชฐ เชเซเชกเซ เชฆเซเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ. เชตเซเชเชฒเชพ, เชเชพเชฐเซเชฏ เชชเซเชฐเซเชฃ เชฅเชฏเซเช, เชเซเชฏเชพเชฐเซ เชฎเซเช เชฎเชพเชฐเชพ เชฌเชเชจ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซเชฏเซเช, เชคเซเชฏเชพเชฐเซ เชฌเชซเชฐเชฎเชพเช เชเชจเซ เชเซเชฎ เชเช เชฒเชพเชเชจ เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ:
echo 'base64string' | base64 --decode > config.zip
เชเซ เชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เชเชจเซเชธเซเชฒเชฎเชพเช เชเชพเชฒเซ เชชเซเชธเซเช เชเชฐเซเชฏเซเช เช
เชจเซ เชคเชฐเชค เช เชคเชฎเชพเชฎ เชฐเซเชชเชฐเซเชเชพเช เชธเชพเชฅเซ เชเชฟเชช เชเชฐเซเชเชพเชเชต เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเซเช.
เช
เชจเซ, เช
เชฒเชฌเชคเซเชค, เชฎเซเช เชฒเซเชเชเชจเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฎเซเชเชฒเซ, เชเชพเชฐเชฃ เชเซ... เชชเซเชฐเซเชเซเชเซเช เชธเชเซเชฐเชฟเชฏ เช
เชจเซ เชเซเชตเชเชค เชเซ, เชนเซเช เชฒเซเชเช เชคเชฐเชซเชฅเซ เช
เชชเชกเซเชเซเชธ เชเซเชตเชพ เชฎเชพเชเชเซ เชเซเช เช
เชจเซ เชฎเชพเชฐเซเช เชชเซเชคเชพเชจเซเช เชฌเชเชจ เชเซ) เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซเชเซ เชฎเชพเชเซ, เชคเซ เช
เชนเซเช เชเซ
เชธเซเชจเซ เชตเชฟเชเชพเชธเชจเซ เชถเซเชญเชเชพเชฎเชจเชพเช)
เชธเซเชฐเซเชธ: www.habr.com