ื“ื•ืจ ืงืึธื ืคื™ื’ืก ืคึฟืึทืจ nginx, ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื™ื™ืŸ ืฆื™ืขืŸ ื‘ืขื˜ืŸ

ื’ืจื•ืก, ื—ื‘ืจื™ื. ืฉื™ื™ืŸ ืื•ื™ืฃ ืžื™ื™ืŸ ืงืึทืžื‘ืึทื˜ ืกืขืจื•ื•ืขืจืก ื ื’ื™ื ืงืก ืื™ื– ืคืœื™ืกื ื“ื™ืง ื–ื™ื ื˜ 2006 ืื•ืŸ ืื™ื‘ืขืจ ื“ื™ ื™ืึธืจืŸ ืคื•ืŸ ื–ื™ื™ึทืŸ ืึทื“ืžื™ื ื™ืกื˜ืจืึทืฆื™ืข ืื™ืš ื”ืึธื‘ืŸ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื•ืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก. ืื™ืš ื”ืื‘ ืืกืืš ื’ืขืœื•ื™ื‘ื˜ ื ื’ื™ื ืงืก ืื•ืŸ ืขืคืขืก ื”ืื˜ ื–ื™ืš ืืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืื– ืื™ืš ื”ืื‘ ืืคื™ืœื• ืื ื’ืขื”ื•ื™ื‘ืŸ ืืŸ ื ื’ื™ื ืงืก ืื•ื™ืฃ ื“ื™ ื”ื•ื‘ ืื•ื™ืš, ื•ื•ื™ื™ื–ืŸ ืž/
ืคืจื™ื™ื ื˜ ื’ืขื‘ืขื˜ืŸ ืžื™ืจ ืฆื• ืฉื˜ืขืœืŸ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคืึทืจื ืคึฟืึทืจ ื–ื™ื™, ืื•ืŸ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืฉืœืขืคึผืŸ ื–ื™ื™ ืžื™ื™ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืžืคึผืœืึทื˜ืขืก, ืื™ืš ื’ืขื“ืขื ืงื˜ ืึท ื˜ืฉื™ืงืึทื•ื•ืข ืคึผืจื•ื™ืขืงื˜ nginxconfig.io, ื•ื•ืึธืก ืฆืขื•ื•ืึธืจืคืŸ ืงืึธื ืคื™ื’ืก ืื•ื™ืฃ ื“ื™ ืฉืขืœื•ื•ืขืก ืื•ืŸ ื’ืจื™ื™ื˜ืŸ ืึทืœืฅ ืคึฟืึทืจ ืœืขืฅ ืขื ืงืจื™ืคึผื˜, ืืื–"ื• ื•. ืื™ืš ื”ืื‘ ื’ืขื˜ืจืื›ื˜, ืคืืจื•ื•ืืก ื ื™ืฉื˜? ืึธื‘ืขืจ, ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื™ื ืคื™ื•ืจื™ื™ื™ื˜ืึทื“ ื“ื•ืจืš ื“ืขื ืคืึทืงื˜ ืึทื– nginxconfig ืึธืคืคืขืจืก ืžื™ืจ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืึธืŸ ืึทืœืึทื•ื™ื ื’ ืžื™ืจ ืฆื• ืฆื•ืคึฟืขืœื™ืงืขืจ ืขืก ื’ืœื™ื™ึทืš ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ wget/fetch/curl. ื•ื•ืึธืก ื•ืžื–ื™ืŸ, ื•ื•ืึธืก ื˜ืึธืŸ ืื™ืš ื“ืึทืจืคึฟืŸ ืขืก ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ, โ€‹โ€‹ืื™ืš ื“ืึทืจืคึฟืŸ ืขืก ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืคึฟื•ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ. ื‘ื™ื™ื–, ืื™ืš ื’ืขื’ืื ื’ืขืŸ ืฆื• ื’ื™ื˜ื”ื•ื‘ ืฆื• ื–ืขืŸ ื“ื™ ื’ืึทืฅ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜, ื•ื•ืึธืก ื’ืขืคื™ืจื˜ ืฆื• ื–ื™ื™ืŸ ื’ืึธืคึผืœ ืื•ืŸ, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืึท ืฆื™ืขืŸ ื‘ืขื˜ืŸ. ื•ื•ืึธืก ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ืฉืจื™ื™ึทื‘ืŸ ื•ื•ืขื’ืŸ ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ื˜ืฉื™ืงืึทื•ื•ืข ๐Ÿ˜‰

ื“ื•ืจ ืงืึธื ืคื™ื’ืก ืคึฟืึทืจ nginx, ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื™ื™ืŸ ืฆื™ืขืŸ ื‘ืขื˜ืŸ

ืคื•ืŸ ืงื•ืจืก, ืื™ื™ื“ืขืจ ื“ื™ื’ื™ื ื’ ืื™ืŸ ื“ื™ ืงื•ื•ืืœืŸ, ืื™ืš ื’ืขืงื•ืงื˜ ืื™ืŸ ื•ื•ื• ืงืจืึธื•ื ืคึผื•ืœื– ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ืงืึธื ืคื™ื’ืก, ืื•ืŸ ื“ืึธืจื˜ ืึทืŸ ืึทื“ืจืขืก ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ "ื‘ืœืึธื‘:" ืื™ื– ื’ืขื•ื•ืขืŸ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืžื™ืจ, ืึธืึธืคึผืก. ืขืก ืื™ื– ืฉื•ื™ืŸ ืงืœืึธืจ ืึทื– ื“ื™ ืกืขืจื•ื•ื™ืก ื˜ื•ื˜ ื ื™ืฉื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืขืคึผืขืก ืื•ื™ืฃ ื“ืขื ื•ื•ืขื’, ืื™ืŸ ืคืึทืงื˜, ื“ืึธืก ืื™ื– ืึทืœืข ื’ืขื˜ืืŸ ื“ื•ืจืš js. ื˜ืึทืงืข, ื“ื™ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ืื™ื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ื•ืจืš ื“ืขื ืงืœื™ืขื ื˜, ื‘ืœืขื˜ืขืจืขืจ ืื•ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ื–ื™ืš. ื™ืขื ืข. ื“ื™ ืฉื™ื™ื ืงื™ื™ื˜ ืื™ื– ืึทื– ื“ื™ ืคึผืจื•ื™ืขืงื˜ nginxconfig.io ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืฉื•ื˜ ื’ืขืจืื˜ืขื•ื•ืขื˜ ื•ื•ื™ ืึท HTML ื‘ืœืึทื˜, ื•ืคึผืœืึธืึทื“ืขื“ ืฆื• ืขื˜ืœืขื›ืข narod.ru ืื•ืŸ ืขืก ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ) ื“ืึธืก ืื™ื– ืึท ื–ื™ื™ืขืจ ืžืึธื“ื ืข ืื•ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืœื™ื™ื–ื•ื ื’, ืึธื‘ืขืจ, ืขืก ืื™ื– ืฉืจืขืงืœืขืš ื•ืžื‘ืึทืงื•ื•ืขื ืคึฟืึทืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืกืขืจื•ื•ืขืจืก, ืื™ืŸ ืคืึทืงื˜, ืคึผื•ื ืงื˜ ืคึฟืึทืจ ื•ื•ืึธืก ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื‘ืืฉืืคืŸ. ืืจืืคืงืืคื™ืข ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ืึท ื‘ืœืขื˜ืขืจืขืจ ืื•ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืขืก ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ nc ... ืื™ืŸ 2019? ืื™ืš ืฉื˜ืขืœืŸ ื–ื™ืš ื“ื™ ืึทืจื‘ืขื˜ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืึท ื•ื•ืขื’ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืงืึทื ืคื™ื’ื™ืขืจ ื’ืœื™ื™ืš ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ.
ื ืึธืš ืคืึธืจืงื™ื ื’ ื“ื™ ืคึผืจื•ื™ืขืงื˜, ืื™ืš ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืžื™ื™ืŸ ืึธืคึผืฆื™ืขืก ื–ืขื ืขืŸ. ื“ื™ ืื•ื™ืคื’ืื‘ืข ืื™ื– ื’ืขื•ื•ืขืŸ ืงืืžืคืœื™ืฆื™ืจื˜ ื“ืขืจืžื™ื˜, ื•ื•ืืก ืื™ืš ื”ืื‘ ื ื™ืฉื˜ ื’ืขื•ื•ืืœื˜ ืืคื˜ื™ื™ืœืŸ ืคื•ืŸ ื“ืขื ืชื ืื™ ืื– ื“ืขืจ ืคืจืื™ืขืงื˜ ื–ืืœ ื‘ืœื™ื™ื‘ืŸ ื ืจื™ื™ื ืขืจ ืคืจืื ื˜-ืขื ื“, ืืŸ ืงื™ื™ืŸ ืฆื•ืจื™ืง-ืขื ื“. ื“ืึธืš, ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ืœื™ื™ื–ื•ื ื’ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืฆื• ืฆื™ืขืŸ ืึทืจื•ื™ืฃ ื ืึธื“ืขื“ื–ืฉืก ืื•ืŸ ืฆื•ื•ื™ื ื’ืขืŸ ืขืก ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึทืŸ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ื ื™ืฆืŸ ื“ื™ืจืขืงื˜ ืœื™ื ืงืก.
ืื™ืŸ ืคืึทืงื˜, ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืคื™ืœืข ืึธืคึผืฆื™ืขืก. ืžืขืจ ื’ืขื ื•ื™, ื ืึธืจ ืื™ื™ื ืขืจ ื’ืขืงื•ืžืขืŸ ืฆื• ืžื™ื™ื ื•ื ื’. ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืงืึธื ืคื™ื’ืก ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืœื™ื ืง ื•ื•ืึธืก ืžื™ืจ ืงืขื ืขืŸ ื ืึธื›ืžืึทื›ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืงืึทื ืกืึธื•ืœ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึท ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื•.
ืขื˜ืœืขื›ืข ื˜ืขืงืกื˜ ื˜ืขืงืขืก ืื™ืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ื•ื•ื™ื™ื“ ื’ืึทื ืฅ ืึท ื‘ื™ืกืœ, ืžืžืฉ ืึท ื‘ื™ืกืœ ืงื™ืœืื‘ื™ื™ื˜. ื“ื™ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืœื™ื™ื–ื•ื ื’ ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ base64 ืฉื˜ืจื™ืงืœ ืคื•ืŸ ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ืื•ืŸ ื•ื•ืึทืจืคืŸ ืขืก ืื™ืŸ ื“ื™ ื‘ืึทืคืขืจ, ื‘ืฉืขืช ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ื“ื™ ื‘ืึทืคึฟืขืœ ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ.

echo 'base64string' | base64 --decode > config.zip

ืžื™ืจ ืงืขืŸ ืžืึทื›ืŸ ื“ื™ ื–ืขืœื‘ืข ืคืึทืจืฉืœืขืกืœืขืŸ ื˜ืขืงืข.

nginxconfig.io ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ AngularJS, ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืืคื™ืœื• ื™ืžืึทื“ื–ืฉืึทืŸ ื•ื•ืึธืก ืงื™ืœืึธืžืขื˜ืขืจืก ืคื•ืŸ ืงืึธื“ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคืืจืœืื ื’ื˜ ืื•ื™ื‘ ื“ืขืจ ืžื—ื‘ืจ ื”ืื˜ ื ื™ืฉื˜ ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืึท ืจื™ืึทืงื˜ื™ื•ื• ื“ื–ืฉืก ืคืจื™ื™ืžื•ื•ืขืจืง. ืึธื‘ืขืจ ืื™ืš ืงืขืŸ ื™ืžืึทื“ื–ืฉืึทืŸ ื•ื•ื™ ืคื™ืœ ืกื™ืžืคึผืœืขืจ ืื•ืŸ ืฉื™ื™ืŸ ื“ืึธืก ืึทืœืฅ ืงืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ VueJS, ื›ืึธื˜ืฉ ื“ืึธืก ืื™ื– ืึท ื’ืึธืจ ืึทื ื“ืขืจืฉ ื˜ืขืžืข.
ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืจืขืกื•ืจืกืŸ ืžื™ืจ ื–ืขืŸ ืึท ืื•ืคึฟืŸ ืคึฟืึทืจ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืึท ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื•:

$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',
	});
};

ืึทืœืฅ ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜, ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง jszip ื ืคืึทืจืฉืœืขืกืœืขืŸ ืื™ื– ื‘ืืฉืืคืŸ ื•ื•ื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืขืก ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜. ื ืึธืš ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื•, js ืคื™ื“ื– ืขืก ืฆื• ื“ืขื ื‘ืœืขื˜ืขืจืขืจ ื ื™ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง FileSaver.js:

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 ืื•ืŸ ืื™ื– ืฉื•ื™ืŸ ื’ืึทื ืฅ ืฆื•ื˜ืจื™ื˜ืœืขืš ืคึฟืึทืจ ื ื•ืฆืŸ. ื•ื•ืึธืก, ืื™ืŸ ืื™ื™ืŸ ืžืึธืœ, ืงืขื ืขืŸ ืžืึทื›ืŸ ืึท ื‘ืึทื–ืข 64 ืฉื˜ืจื™ืงืœ ืคื•ืŸ ืึท ื‘ืœืึธื‘, ืึธื“ืขืจ ื’ืึทื ืฅ, ืขืก ืžืื›ื˜ ืึท DataURL ืฉื˜ืจื™ืงืœ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™ ื•ื•ื™ื›ื˜ื™ืง ืคึฟืึทืจ ืื•ื ื“ื–, ื•ื•ื™ื™ึทืœ DataURL ื›ึผื•ืœืœ ืคึผื•ื ืงื˜ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ. ื‘ื™ื ื’ืึธ, ืึท ื‘ื™ืกืœ ื•ื•ืึธืจืฆืœ ืึทื•ื•ื™ื™ื˜ืึทื“ ืžื™ืจ ื•ื•ืขืŸ ืื™ืš ื’ืขืคืจื•ื•ื•ื˜ ืฆื• ืฉื˜ืขืœืŸ ืึทืœืข ื“ืขื ืื™ืŸ ื“ื™ ื‘ืึทืคืขืจ. ื“ืขืจ ืžื—ื‘ืจ ื”ืึธื˜ ื’ืขื ื•ืฆื˜ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ืŸ ื“ืขื ืคึผืจืึธื™ืขืงื˜ clipboardjs, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืงืœื™ืคึผื‘ืึธืจื“ ืึธืŸ ื‘ืœื™ืฅ ืึทื‘ื“ื–ืฉืขืงืฅ, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื˜ืขืงืกื˜. ื˜ื›ื™ืœืขืก, ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืฉื˜ืขืœืŸ ืžื™ื™ืŸ ื‘ืึทื–ืข 64 ืื™ืŸ ืึทืŸ ืขืœืขืžืขื ื˜ ืžื™ื˜ ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ: ื’ืึธืจื ื™ื˜;, ืึธื‘ืขืจ ืื™ืŸ ื“ืขื ืคืึทืœ ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ืฉื˜ืขืœืŸ ืขืก ืื•ื™ืฃ ื“ื™ ืงืœื™ืคึผื‘ืึธืจื“ ื•ื•ื™ื™ึทืœ ืงื™ื™ืŸ ืฆืขืฉื™ื™ื“ื•ื ื’ ืึทืงืขืจื–. ื“ืขืจื™ื‘ืขืจ, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืึทืจื•ื™ืกื•ื•ื™ื™ึทื–ืŸ: ื’ืึธืจื ื™ื˜; ืื™ืš ื”ืื‘

position: absolute;
z-index: -1;
opacity: 0;

ื•ื•ืึธืก ื”ืึธื˜ ืžื™ืจ ื“ืขืจืœื•ื™ื‘ื˜ ืฆื• ื‘ืึทื”ืึทืœื˜ืŸ ื“ืขื ืขืœืขืžืขื ื˜ ืคื•ืŸ ื“ืขืจ ืžื™ื™ื ื•ื ื’ ืื•ืŸ ืขืก ื˜ืึทืงืข ืœืึธื–ืŸ ืื•ื™ืฃ ื“ืขื ื‘ืœืึทื˜. ื•ื•ืึธื™ืœืึท, ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืขื ื“ื™ืงื˜, ื•ื•ืขืŸ ืื™ืš ืงืœื™ืงื˜ ืื•ื™ืฃ ืžื™ื™ืŸ ืงื ืขืคึผืœ, ืึท ืฉื•ืจื” ื•ื•ื™ ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ื“ื™ ื‘ืึทืคืขืจ:

echo 'base64string' | base64 --decode > config.zip

ื•ื•ืึธืก ืื™ืš ืคืฉื•ื˜ ืคึผื™ื™ืกื˜ื™ื“ ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ื’ืœื™ื™ืš ื‘ืืงื•ืžืขืŸ ืึท ืคืึทืจืฉืœืขืกืœืขืŸ ืึทืจืงื™ื™ื•ื• ืžื™ื˜ ืึทืœืข ื“ื™ ืงืึธื ืคื™ื’ืก.
ืื•ืŸ, ืคื•ืŸ ืงื•ืจืก, ืื™ืš ื’ืขืฉื™ืงื˜ ืึท ืฆื™ืขืŸ ื‘ืงืฉื” ืฆื• ื“ืขื ืžื—ื‘ืจ, ื•ื•ื™ื™ึทืœ ... ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ืึทืงื˜ื™ื•ื• ืื•ืŸ ืœืขื‘ืขื“ื™ืง, ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื–ืขืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ ืคื•ืŸ ื“ืขื ืžื—ื‘ืจ ืื•ืŸ ื”ืึธื‘ืŸ ืžื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงื ืขืคึผืœ) ืคึฟืึทืจ ื“ื™ ืื™ื ื˜ืขืจืขืกื™ืจื˜, ื“ืึธ ืื™ื– ืขืก. ืžื™ื™ืŸ ื’ืึธืคึผืœ ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ื–ื™ืš ืฆื™ืขืŸ ื‘ืขื˜ืŸ, ื•ื•ื• ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื•ื•ืึธืก ืื™ืš ืงืขืจืขืงื˜ืึทื“ / ืฆื•ื’ืขืœื™ื™ื’ื˜.
ืžื–ืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืึทืœืขืžืขืŸ)

ื“ื•ืจ ืงืึธื ืคื™ื’ืก ืคึฟืึทืจ nginx, ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื™ื™ืŸ ืฆื™ืขืŸ ื‘ืขื˜ืŸ

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’