เจจเจฎเจธเจเจพเจฐ, เจธเจพเจฅเฉเจเฅค เจฎเฉเจฐเฉ เจฒเฉเจพเจ เจธเจฐเจตเจฐเจพเจ 'เจคเฉ เจธเฉเฉฐเจฆเจฐ
เจฆเฉเจธเจคเจพเจ เจจเฉ เจฎเฉเจจเฉเฉฐ เจเจนเจจเจพเจ เจฒเจ เจเฉฑเจ เจตเจฟเจเจพเจธ เจซเจพเจฐเจฎ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฒเจ เจเจฟเจนเจพ, เจ
เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจพเจธ เจเจพเจเฉ เจเจฟเฉฑเจเจฃ เจฆเฉ เจฌเจเจพเจ, เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจฆเจฟเจฒเจเจธเจช เจชเฉเจฐเฉเจเฉเจเจ เจฏเจพเจฆ เจเจเจเฅค
เจฌเฉเจธเจผเฉฑเจ, เจธเจฐเฉเจคเจพเจ เจตเจฟเฉฑเจ เจเฉเจฆเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจฎเฉเจ เจฆเฉเจเจฟเจ เจเจฟ เจเฉเจฐเฉเจฎ เจธเฉฐเจฐเจเจจเจพ เจฆเฉ เจจเจพเจฒ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเจผเจฟเจช เจเจฐเจเจพเจเจต เจจเฉเฉฐ เจเจฟเฉฑเจฅเฉ เจเจฟเฉฑเจเจฆเจพ เจนเฉ, เจ
เจคเฉ เจเฉฑเจฅเฉ "เจฌเจฒเฉเจฌ:" เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเจฃ เจตเจพเจฒเจพ เจเฉฑเจ เจชเจคเจพ เจฎเฉเจฐเจพ เจเฉฐเจคเจเจผเจพเจฐ เจเจฐ เจฐเจฟเจนเจพ เจธเฉ, เจเจน. เจเจน เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเจชเฉฑเจธเจผเจ เจนเฉ เจเจฟเจ เจนเฉ เจเจฟ เจธเฉเจตเจพ เจฐเจธเจคเฉ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉ เจชเฉเจฆเจพ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจ
เจธเจฒ เจตเจฟเฉฑเจ, เจเจน เจธเจญ 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');
เจเจฟเฉฑเจฅเฉ เจธเจฎเฉฑเจเจฐเฉ เจเจผเจฟเจช เจเจฐเจเจพเจเจต เจฆเจพ เจจเจคเฉเจเจพ เจฌเจฒเฉเจฌ เจเจฌเจเฉเจเจ เจนเฉเฅค
เจ เฉเจ เจนเฉ, เจฎเฉเจจเฉเฉฐ เจฌเฉฑเจธ เจเจธ เจฆเฉ เจ เฉฑเจเฉ เจเฉฑเจ เจนเฉเจฐ เจฌเจเจจ เจเฉเฉเจจเจพ เจธเฉ เจ เจคเฉ เจเจฆเฉเจ เจฎเฉเจ เจเจธ 'เจคเฉ เจเจฒเจฟเจ เจเจฐเจฆเจพ เจนเจพเจ, เจคเจพเจ เจฎเฉเจ เจจเจคเฉเจเฉ เจตเจเฉเจ เจเจผเจฟเจช เจเจฐเจเจพเจเจต เจจเฉเฉฐ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจจเจนเฉเจ เจเจฐเจพเจเจเจพ, เจชเจฐ เจเจธ เจคเฉเจ เจฌเฉเจธ 64 เจเฉเจก เจชเฉเจฐเจพเจชเจค เจเจฐเจพเจเจเจพเฅค เจฅเฉเฉเจพ เจเจฟเจนเจพ เจเฉเฉฐเจฎเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจฎเฉเจจเฉเฉฐ เจธเจฟเจฐเจซ เจเฉฑเจ เจกเจพเจเจจเจฒเฉเจกเจเจผเจฟเจช เจฆเฉ เจฌเจเจพเจ 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 เจนเฉ, เจ
เจคเฉ เจฒเฉเจเจ เจเฉเจฆ เจเจพเจฒเจฌเฉเจเจพเจ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเจเจ เจนเฉ เจ
เจคเฉ เจตเจพเจ
เจฆเจฟเจเจ เจฆเฉเจเจฐเจพ เจเจธเจจเฉเฉฐ เจฒเจพเจเฉ เจจเจนเฉเจ เจเฉเจคเจพเฅค เจกเจพเจเจจเจฒเฉเจกเจเจผเจฟเจช เจจเฉ เจ
เจเฉ เจตเฉ เจเฉฑเจ เจเจเจเจชเฉเฉฑเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจธเฉเจต เจเฉเจคเจพ เจธเฉ, เจเจฆเฉเจ เจเจฟ เจกเจพเจเจจเจฒเฉเจกเจฌเฉเจธ 64 เจจเฉ เจเฉเจ เจตเฉฑเจเจฐเจพ เจเฉเจคเจพ เจธเฉเฅค เจ
เจธเฉเจ เจเฉฑเจ เจซเจพเจเจฒ เจฐเฉเจกเจฐ เจเจฌเจเฉเจเจ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ เจเฉ เจธเจพเจกเฉ เจเฉเจฒ html5 เจตเจฟเฉฑเจ เจเจเจ เจธเฉ เจ
เจคเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจพเจซเจผเฉ เจนเฉ
position: absolute;
z-index: -1;
opacity: 0;
เจเจฟเจธ เจจเฉ เจฎเฉเจจเฉเฉฐ เจคเฉฑเจค เจจเฉเฉฐ เจฆเฉเจฐเจฟเจธเจผ เจคเฉเจ เจฒเฉเจเจพเจเจฃ เจ เจคเฉ เจ เจธเจฒ เจตเจฟเฉฑเจ เจเจธเจจเฉเฉฐ เจชเฉฐเจจเฉ 'เจคเฉ เจเฉฑเจกเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฑเจคเฉ. เจตเฉเจเจฒเจพ, เจเฉฐเจฎ เจชเฉเจฐเจพ เจนเฉ เจเจฟเจ เจธเฉ, เจเจฆเฉเจ เจฎเฉเจ เจเจชเจฃเฉ เจฌเจเจจ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเฉเจคเจพ, เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจเฉฑเจ เจฒเจพเจเจจ เจฌเจซเจฐ เจตเจฟเฉฑเจ เจฐเฉฑเจเฉ เจเจ เจธเฉ:
echo 'base64string' | base64 --decode > config.zip
เจเจฟเจธ เจจเฉเฉฐ เจฎเฉเจ เจฌเจธ เจธเจฐเจตเจฐ 'เจคเฉ เจเฉฐเจธเฉเจฒ เจตเจฟเฉฑเจ เจชเฉเจธเจ เจเฉเจคเจพ เจ
เจคเฉ เจคเฉเจฐเฉฐเจค เจธเจพเจฐเฉเจเจ เจธเฉฐเจฐเจเจจเจพเจตเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเจผเจฟเจช เจเจฐเจเจพเจเจต เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพเฅค
เจ
เจคเฉ, เจฌเฉเจธเจผเจ, เจฎเฉเจ เจฒเฉเจเจ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเฉฑเจฒ เจฌเฉเจจเจคเฉ เจญเฉเจเฉ, เจเจฟเจเจเจเจฟ ... เจชเฉเจฐเฉเจเฉเจเจ เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจ
เจคเฉ เจเฉเจตเฉฐเจค เจนเฉ, เจฎเฉเจ เจฒเฉเจเจ เจคเฉเจ เจ
เจชเจกเฉเจเจธ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจ
เจคเฉ เจฎเฉเจฐเจพ เจเจชเจฃเจพ เจฌเจเจจ เจนเฉ) เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฃ เจตเจพเจฒเจฟเจเจ เจฒเจ, เจเจน เจเฉฑเจฅเฉ เจนเฉ
เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจตเจฟเจเจพเจธ เจฆเฉเจเจ เจฎเฉเจฌเจพเจฐเจเจพเจ)
เจธเจฐเฉเจค: www.habr.com