Chizvarwa che configs ye nginx, nhoroondo yechikumbiro chimwe chekudhonza

Kwaziwai vakomuredhi. Yakanaka pamaseva angu ekurwa nginx yanga ichimhanya kubvira 2006 uye nekufamba kwemakore ekutonga kwayo ndakaunganidza akawanda ma configs uye matemplate. Ndakarumbidza nginx zvakanyanya uye neimwe nzira zvakazoitika kuti ndakatotanga nginx hub pane hub, zvakare, show off m/
Shamwari dzakandikumbira kuti ndivagadzirire purazi rekusimudzira, uye pane kuvakwevera matemplate angu chaiwo, ndakarangarira chirongwa chinonakidza. nginxconfig.io, iyo inoparadzira configs pamasherufu uye inogadzirira zvese kuti lets encrypt, nezvimwe. Ndakafunga kuti, nemhaka yei? Nekudaro, ndakatsamwiswa nenyaya yekuti nginxconfig inondipa kudhawunirodha zip archive mubrowser, pasina kunditendera kuti ndiiise yakananga kuseva uchishandisa wget/fetch/curl. Ndezvipi zvisina maturo, nei ndichichida mubrowser, ndinochida pane server kubva kune console. Nehasha, ndakaenda ku github kuti ndione matumbu epurojekiti, iyo yakatungamirira kuforogo yayo uye, semugumisiro, chikumbiro chekudhonza. Zvandaisazonyora kana zvaisanakidza πŸ˜‰

Chizvarwa che configs ye nginx, nhoroondo yechikumbiro chimwe chekudhonza

Ehe, ndisati ndachera mukati mezvitubu, ndakatarisa pane iyo Chrome inodhonza iyo yakagadzirwa zip archive ine configs, uye ipapo kero inotanga ne "blob:" yakandimirira, oops. Izvo zvatove pachena kuti sevhisi haiburitse chero chinhu munzira, kutaura zvazviri, zvese zvakaitwa najs. Chokwadi, iyo zip archive inogadzirwa nemutengi, browser, uye javascript pachayo. Avo. kunaka ndiko kuti chirongwa nginxconfig.io inogona kungochengetwa se html peji, yakaiswa kune vamwe narod.ru uye ichashanda) Iyi inonakidza uye inonakidza mhinduro, zvisinei, haina kukonzeresa kumisikidza maseva, kutaura zvazviri, chaizvo izvo zvakagadzirirwa chirongwa ichi. Dhawunirodha dura rakagadzirwa nebrowser, wobva waendesa kune server uchishandisa nc... muna 2019? Ndakazvigadzika iro basa rekutsvaga nzira yekurodha inokonzeresa config zvakananga kune server.
Mushure mekuita purojekiti, ndakatanga kufunga kuti ndezvipi zvandaisarudza. Basa racho rakaomeswa nenyaya yekuti ndaisada kutsauka kubva padanho rekuti purojekiti irambe iri yekumberi kwakachena, pasina kana kumashure. Ehe, mhinduro yakareruka ingave yekukwevera kumusoro nodejs uye kuimanikidza kuti ibudise archive ine configs uchishandisa yakananga zvinongedzo.
Chaizvoizvo, pakanga pasina sarudzo dzakawanda. Kunyanya, imwe chete yakauya mupfungwa. Isu tinofanirwa kumisikidza zvigadziriso uye titore chinongedzo chatinogona kukopa kune server console kuti titore zip archive.
Mafaera akati wandei mune yakaguma zip archive airema zvishoma, chaizvo makirobhayiti mashoma. Mhinduro iripachena yaive yekutora base64 tambo kubva payakagadzirwa zip archive woikanda mubuffer, uchiri paserver ine rairo muconsole.

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

tinogona kugadzira iyi zip faira.

nginxconfig.io yakanyorwa muAngularJS, handitombofungi kuti makiromita api ekodhi angadai akadikanwa dai munyori asina kusarudza reactive js framework. Asi ini ndinogona kunyatso kufungidzira kuti zviri nyore uye zvakanyanya kunaka zvese izvi zvinogona kuitwa muVueJS, kunyangwe iyi iri nyaya yakasiyana zvachose.
Mune zviwanikwa zveprojekiti tinoona nzira yekugadzira 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',
	});
};

zvese zviri nyore, uchishandisa raibhurari jszip Zip inogadzirwa panoiswa mafaera ekugadzirisa. Mushure mekugadzira zip archive, js inoidyisa kune browser uchishandisa raibhurari FileSaver.js:

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

uko zvirimo ndizvo zvinokonzeresa blob chinhu chezip archive.

Zvakanaka, chandaifanira kuita kuwedzera rimwe bhatani padivi paro uye pandakadzvanya pairi, ini ndaisazochengeta yakaguma zip archive kubrowser, asi tora base64 kodhi kubva mairi. Mushure mekutamba-famba zvishoma, ndakawana nzira mbiri, pane imwe chete yekurodhaZip:

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

Sezvaungave waona, ndakatamisa chizvarwa chezip archive pachayo kune yakavanzika gadziraZip nzira, zvichingodaro. Iyi iAngularJS, uye munyori pachake anonamatira kucallbacks uye haana kuzviita kuburikidza nezvipikirwa. downloadZip ichiri kuchengetedzaSekubuda, nepo downloadBase64 yakaita chimwe chinhu chakasiyana. Isu tinogadzira chinhu cheFayileReader chakauya kwatiri muhtml5 uye chatove chakanyanya zvinowanikwa zvekushandisa. Iyo, pane imwe nguva, inogona kugadzira base64 tambo kubva kune blob, kana kuti, inoita iyo DataURL tambo, asi izvi hazvina kukosha zvakanyanya kwatiri, nekuti. DataURL ine chaizvo zvatinoda. Bhingo, kamutswi kakandimirira pandakaedza kuisa zvese izvi mubhafa. Munyori akashandisa raibhurari muchirongwa clipboardjs, iyo inokubvumira kuti ushande ne clipboard pasina flash zvinhu, zvichienderana nemashoko akasarudzwa. Pakutanga, ndakafunga kuisa base64 yangu muchinhu chine kuratidza: hapana;, asi mune iyi kesi handina kukwanisa kuiisa pa clipboard nekuti. hapana kuparadzana kunoitika. Naizvozvo, pachinzvimbo chekuratidzira:hapana; Ndaka

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

izvo zvakandibvumira kuti ndivanze chinhu kubva pakuona uye kunyatsochisiya pane peji. Voila, basa rakapera, pandakadzvanya bhatani rangu, mutsara wakaita seuyu wakaiswa mubuffer:

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

iyo yandakangoisa mukoni pane server uye pakarepo ndakagamuchira zip archive ine ese ma configs.
Uye, hongu, ndakatumira chikumbiro chekudhonza kumunyori, nekuti... iyo purojekiti inoshanda uye ine hupenyu, ndinoda kuona zvigadziriso kubva kumunyori uye ndine bhatani rangu) Kune avo vanofarira, hezvino forogo yangu purojekiti neni dhonza chikumbiro, kwaunogona kuona zvandakagadzirisa/kuwedzera.
Kubudirira kwakanaka mose)

Chizvarwa che configs ye nginx, nhoroondo yechikumbiro chimwe chekudhonza

Source: www.habr.com

Voeg