áááºá¹ááá¬áá« áá²áá±á¬áºáá»á¬ážá áá»áœááºá¯ááºá ááá¯ááºááá¯ááºáá±ážáá¬áá¬áá»á¬ážááœáẠááŸááááºá
áá°áááºáá»ááºážááœá±á áá°ááá¯á·á¡ááœáẠááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž áááºáá¬áá
áºáᯠáá°áá±á¬ááºáá±ážááá¯á· áá±á¬ááºážááá¯áá²á·ááŒá®áž áá°ááá¯á·áá²á· áá®ážááŒá¬áž ááá°áá¬áá¯á¶á
á¶ááœá±ááᯠááœá²áá°ááá·áºá¡á
á¬áž á
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážáá²á· ááá±á¬áá»ááºáá
áºáá¯ááᯠáááááá²á·áááºá
áá¯ááºáá«áááºá á¡áááºážá¡ááŒá
áºááœá±ááᯠááá°ážáááºááŸá¬ Chrome á áá¯ááºáá¯ááºááá¯ááºáá²á· áá
Ạarchive ááᯠconfigs áá²á· ááœá²áá¯ááºáá²á· áááºááŸá¬ááŒáá·áºáá²á·áááºá á¡á²áá®ááŸá¬ âblob:â áá²á·á
áá²á· ááááºá
á¬áá
áºáá¯á áá»áœááºáá±á¬á·áºááᯠá
á±á¬áá·áºáá±áááºá ââá¡áá¯ážá áááºáá±á¬ááºááŸá¯ááẠáááºážáá
áºáá»áŸá±á¬ááºááœáẠáááºááá·áºá¡áá¬ááá¯áá»áŸ ááá¯ááºáá±ážááŒá±á¬ááºáž ááŸááºážááŸááºážáááºážáááºážááŒá
áºáá±ááŒá®ááŒá
áºááŒá®ážá á¡ááŸááºááŸá¬á áááºážááẠjs á០áá¯ááºáá±á¬ááºááŒááºážááŒá
áºáááºá á¡ááŸááºááŸá¬á zip archive ááᯠclientá browser ááŸáá·áº javascript ááá¯ááºááá¯ááºááá¯ááºáá±ážáá«áááºá á¡á²áá«ááœá±á á¡ááŸááá¬ážááŸá¬ ááá±á¬áá»ááºáá
áºáá¯ááŒá
áºáááºá
ááá±á¬áá»ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážáá±á¬ááºá áá«á·ááœá±ážáá»ááºá
áá¬ááœá±á áá¬áá²ááá¯áá¬ááᯠá
áááºááœá±ážáá±á¬áá²á·áááºá ááá±á¬áá»ááºááẠáá±á¬ááºááœááºá០áááºážá
ááºáá±á¬ ááŸá±á·áá¯á¶ážááœáẠááŸááá±ááá·áºááá·áº á¡ááŒá±á¡áá±á០áááœáŸá²áááŸá±á¬áẠááá¯áá±á¬ááŒá±á¬áá·áº á¡áá¯ááºááŸá¬ ááŸá¯ááºááœá±ážáá«áááºá áá¯ááºáá«áááºá á¡ááá¯ážááŸááºážáá¯á¶ážááŒá±ááŸááºážáá»ááºááá±á¬á· direct links ááœá±ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž configs áá²á· archive áá
áºáá¯áááºáá®ážááá¯á· á¡áááºážá¡ááŒááºáá¯ááºááá¯ááºážáá¬áá«á
ááááºáá±á¬á· ááœá±ážáá»ááºá
áá¬ááœá± á¡áá»á¬ážááŒá®ážáááŸááá²á·áá«áá°ážá ááá¯áááááá»áá»ááŒá±á¬áááẠáá
áºáá¯áá² áááááá¬áááºá áá»áœááºá¯ááºááá¯á·ááẠááœááºáááá·áºáá»á¬ážááᯠá
áá
áºááá·áºááœááºážáááºááŸáá·áº áá
áºááŸááºáááºážáá
áºáá¯ááá°ááẠáá¬áá¬ááœááºááá¯ážááºááá¯á· áá°ážáá°ááá¯ááºáá±á¬ ááá·áºááºáá
áºáá¯ááᯠááá°áááºááá¯á¡ááºáá«áááºá
ááááºáá
ẠááŸááºáááºážááá¯ááºááŸá á
á¬áá¬ážááá¯ááºá¡áá»á¬ážá¡ááŒá¬ážááẠá¡áááºážáááºá¡áá±ážáá»áááºááŸáááŒá®áž á
á¬áá¬ážá¡á áá®ááá¯ááá¯ááºá¡áááºážáááºááŸááááºá áááá¬áááºááŸá¬ážáá±á¬ááŒá±ááŸááºážáá»ááºááŸá¬ áá¯ááºáá¯ááºáá¬ážáá±á¬ zip archive á០base64 string ááá¯ááá°ááŒá®áž console á¡ááœááºážááŸá command ááŒáá·áºáá¬áá¬áá±á«áºááœááºááŸáá
ááºááŒá¬ážáá¶ááŒá¬ážáá¶áá²ááá¯á·áá
áºáá»áááºááŒá
áºáááºá
echo 'base64string' | base64 --decode > config.zip
á€áá°áá®áá±á¬ zip ááá¯ááºááá¯áá»áœááºá¯ááºááá¯á·áááºáá®ážááá¯ááºáááºá
ááá±á¬áá»ááºáááºážááŒá
áºáá»á¬ážááœáẠzip archive ááá¯áá¯ááºáá±ážáááºáááºážáááºážááá¯áá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºáááº-
$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 archive ááááẠblob object ááŒá áºáááºá
áá±á¬ááºážááŒá®á áá«áá¯ááºá áá¬ááŸááá¬á áá°á·áá±ážá áááŒá¬ážááá¯ááºááᯠááá·áºááŒá®áž ááŸáááºááá¯ááºáá¬áá²á· ááá¬áá²á· zip archive ááᯠbrowser ááŸá¬ áááááºážáá² base64 áá¯ááºááᯠááá°ááá¯ááºáá«á áááºážáááºážáá±á¬áẠáá±á¬á·ááŒá®ážáááºá downloadZip áá áºáá¯áááºážá¡á á¬áž áááºážáááºáž á áᯠááá²á·áááºá
$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 archive ááá»áá¯ážáááºááᯠáá®ážááá·áº generateZip áááºážáááºážááá¯á· ááœáŸá±á·ááá¯ááºáá«áááºá áááºážááẠAngularJS ááŒá
áºááŒá®áž á
á¬áá±ážááá¬ááá¯ááºááá¯ááºá ááŒááºáá±á«áºááŒááºážáá»á¬ážááᯠá
áœá²ááá¯ááºáá¬ážááŒá®áž ááááá»á¬ážááŒáá·áº áááºážááᯠá¡áá±á¬ááºá¡áááºááá±á¬áºáá²á·áá«á downloadZip ááẠá¡ááœááºáá
áºáá¯á¡ááŒá
ẠSaveA ááᯠáááºáááºáá¯ááºáá±á¬ááºáá²á·ááŒá®ážá downloadBase64 ááẠá¡áááºážáááºááœá²ááŒá¬ážááá·áºá¡áá¬áá
áºáá¯ááᯠáá¯ááºáá±á¬ááºáá²á·áááºá áá»áœááºá¯ááºááá¯á·áᶠhtml5 ááŒáá·áº áá±á¬ááºáá¬áá±á¬ FileReader á¡áá¬ááá¹áá¯áá
áºáá¯ááᯠáá»áœááºá¯ááºááá¯á· áááºáá®ážááŒá®áž á¡áá±á¬áºáá±áž ááŒá®ážáá±ááŒá®ááŒá
áºáááºá
position: absolute;
z-index: -1;
opacity: 0;
áááºážááẠáá»áœááºá¯ááºá¡á¬áž ááŸá áºáá¯á áá¯á¶ážá¡á¬áž ááŒááºááœááºážá០áá»á±á¬ááºáá¬ážááá¯ááºá á±ááŒá®áž áááºážááᯠá á¬áá»ááºááŸá¬áá±á«áºááœáẠá¡ááŸááºáááẠáá¬ážáá²á·ááá¯ááºá á±áá«áááºá áá«ááá¯áááºáá±á¬á· á¡áá¯ááºááŒá®ážááœá¬ážáá«ááŒá®á áá»áœááºá¯ááºááá¯ááºááᯠááŸáááºááá¯ááºáá±á¬á¡áá«á á€áá²á·ááá¯á·áá±á¬ á á¬ááŒá±á¬ááºážááᯠááŒá¬ážáá¶ááœáẠáá¬ážááŸááá«áááº-
echo 'base64string' | base64 --decode > config.zip
áá»áœááºá¯ááºááẠáá¬áá¬áá±á«áºááŸá ááœááºááá¯ážááºáá²ááá¯á· ááá¯ážááá¯ážáá°ážááá·áºááá¯ááºáááºááŸáá·áº áá»ááºááŒááºážááẠáá
áºááŸááºáááºážááᯠáááºáá¶áááŸááá²á·áááºá
á¡ááŸááºáá«áá²á áá»áœááºáá±á¬áº á
á¬áá±ážáá°áᶠáá±á¬ááºážááá¯áá»ááºáá
áºáᯠáá±ážááá¯á·áá²á·áááºááá¯áá±á¬á·... ááá±á¬áá»ááºááẠá¡áááºáááºá áááºááŒáœáááºá á
á¬áá±ážáá°áá¶á០á¡ááºááááºáá»á¬ážááᯠááŒáá·áºááá¯ááŒá®áž ááá¯ááºááá¯ááºááá¯áẠááŸááááº) á
áááºáááºá
á¬ážáá°áá»á¬ážá¡ááœáẠá€áá±áá¬ááœááºá
á¡á¬ážáá¯á¶ážáá² áá»á±á¬áºááœáŸááºááá¯ážáááºááŒáá«á
á±á)
source: www.habr.com