Generatio configs pro nginx, historia unius petitionem viverra

Salvete, socii. Pulchra pugna servo meo nginx Ab anno MMVI et per annos administrationis suae cursus multum confis et templates cumulavi. Laudavi multum nginx et quodammodo evenit ut etiam centrum nginx centrum in centrum quoque inierim m/
Amici rogaverunt me ut villam illis evolutionem constitueret, et pro certis exemplaribus meis traheret, recordatus sum an interesting consilium nginxconfig.io, quae spargit in cautes et omnia parat encrypt , etc. Cur non cogitavi? Nihilominus iratus sum eo quod nginxconfig me offert ut archivum zip tabularium in pasco deprimat, sine me permittit ut illud imponatur protinus servo utenti wget/ferch/curl. Quae nugae, quid opus est in navigatro, servo a console opus est. Iratus ivi ad github ut viderem viscera rei, quae ad eius furcam adduxit et, consequenter, petitionem traho. Quod non scriberem si non interesting

Generatio configs pro nginx, historia unius petitionem viverra

Scilicet, antequam in fontes fodiatur, inspexi ubi Chrome generatum archivum avi cum configis trahit, et ibi inscriptio incipiens cum "blob:" exspectabat me geras. Iam patefactum est ministerium non generat aliquid in via, immo totum factum est per js. Re quidem vera archivum avi generatur ab ipso cliente, navigatro, et html ipso. Illae. pulchritudo est in project nginxconfig.io simpliciter servari potest ut pagina html, ad aliquid uploaded narod.ru et laborabit) This is a very funny and interesting solution, however, it is terribly inconvenient for setting up servers, in fact, exactly for what this project was created. Download archivum generatum cum pasco, et tunc transfer in servo utens nc... in MMXIX? Negotium mihi constitui inveniendi viam ut perficiendi inde config directe servo.
Post obsitum dum negotium, coepi cogitare quid optiones meae essent. Negotium perplexum fuit eo quod a conditione deviare nolui, ut consilium purum ante-finem maneret, sine fine ullo posteriori. Scilicet, solutio simplicissima esset nodejs evellere ac cogere ut archivum generaret cum fictilibus directis nexus utentibus.
Profecto non multi bene fuerunt. Accuratius tantum in mentem venit. Necesse est nos ficarios erigere et nexum accipere quod effingo servo consolere ut archivum exeamus.
Plures tabellae textuales in archivo zip inde resultantes aliquantum ponderis habent, proprie pauca chiliobyta. Solutio perspicua erat ut chordae base64 ex archivo avi genito acquirerentur et in quiddam mitterent, cum servo cum mandato in console

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

hoc idem zip lima creare potuimus.

nginxconfig.io in AngularJS scriptus est, ne suspicari quidem possum quid chiliometra codicis opus esset si auctor reactivum compage non elegisset. Sed perfecte imaginari possum, quanto simplicius et pulchrius haec omnia in VueJS perfici possent, quamvis res prorsus alia sit.
In opum exertorum modum videmus archivum ex zip generandi:

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

omnia satis simplicia sunt, bibliotheca utens jszip A zip factus est ubi limae configurationis positae sunt. Post tabularium avi partum, js illud pasco ad bibliothecam utens FileSaver.js:

saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');

ubi contentus est blob consequens obiectum archivi avi.

Ok, omnia facere debebam, aliam conjunctionem iuxta eam addere et cum in ea strepebam, in tabulario avi navigatoris non servavi, sed ex eo codicem basis64 possidebam. Post fiddling circa frenum, cepi 2 modos, pro uno tantum 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',
	});
};

Ut animadvertere licet, ipsum generativum archivi avi generandi ad methodum privatam, et sic porro. Hoc est Angularis, et auctor ipse callbacks haeret nec per promissiones perficit. downloadZip still did saveas as an output, while downloadBase64 did something slightly different. FileReadorem creamus obiectum quod ad nos venit in html5 et iam satis est accessible ad usum. Quod aliquando ex blob filo base64 facere potest, vel potius chorda DataURL facit, sed hoc non ita magnum nobis est, quia DataURL prorsus continet quod opus est. Bingo, aliquantulum snag me expectavit cum haec omnia in quiddam ponere conatus sum. Bibliotheca scriptorum usus est in project clipboardjsquae sino te sine mico, in textu delectae, cum clipboard laborare. Initio statui base64 meam ponere in elemento cum pompa: nulla, sed hoc casu in clipboard non potui ponere quia nulla fit separatio. Itaque pro nemo; feci

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

quod mihi licet utrumque elementum visu occultare et in pagina re vera relinquere. Voila, negotium peractum est, cum in globulis meis strepebam, linea huius modi in quiddam collocabatur:

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

quam in solatium ministranti simpliciter conglutinavi et statim archivum avi cum omnibus formis accepi.
Et sane, viverra petitionem auctoris misi, quia... Propositum est activum et vivax, vellem videre updates ab autore et habere meam ipsius conjunctionem) Pro his, quorum interest, hic est. mea furca project et ipse viverra petitioubi vide quid emendavi/addidi.
Felix progressus omnis)

Generatio configs pro nginx, historia unius petitionem viverra

Source: www.habr.com