Ọgbọ nke nhazi maka nginx, akụkọ ihe mere eme nke otu arịrịọ ịdọrọ

Ekele, ndị enyi. Mara mma na sava ọgụ m nginx na-agba ọsọ kemgbe 2006 na n'ime afọ nke nchịkwa ya, achịkọtala m ọtụtụ nhazi na ndebiri. M toro nginx nke ukwuu na n'ụzọ ụfọdụ ọ tụgharịrị na m malitere ọbụna nginx hub na hub, kwa, gosi m /
Ndị enyi m gwara m ka m guzobere ha ugbo mmepe, kama ịdọrọ ha ndebiri m, echetara m otu ọrụ na-atọ ụtọ. nginxconfig.io, nke na-agbasa configs na shelves ma na-akwadebe ihe niile maka ka encrypt, wdg. Echere m, gịnị kpatara na ọ bụghị? Agbanyeghị, iwe were m na nginxconfig na-enye m ka m budata ebe nchekwa zip n'ime ihe nchọgharị ahụ, na-enyeghị m ohere bulite ya ozugbo na sava ahụ site na iji wget/fetch/curl. Kedu ihe nzuzu, gịnị kpatara m ji chọọ ya na ihe nchọgharị ahụ, achọrọ m ya na ihe nkesa site na njikwa. Iwe, agara m github ka m hụ guts nke oru ngo, nke dugara na ndụdụ ya na, n'ihi ya, a na-arịọ arịrịọ. Nke m na-agaghị ede banyere ya ma ọ bụrụ na ọ bụghị mmasị 😉

Ọgbọ nke nhazi maka nginx, akụkọ ihe mere eme nke otu arịrịọ ịdọrọ

N'ezie, tupu m abanye n'ime isi mmalite, elere m anya ebe Chrome na-adọta ebe nchekwa zip emepụtara na nhazi, ebe adreesị na-amalite na "blob:" na-echere m, oops. Ọ pụtalarị na ọrụ ahụ anaghị emepụta ihe ọ bụla n'ụzọ, n'eziokwu, ọ bụ js. N'ezie, onye ahịa, ihe nchọgharị, na javascript n'onwe ya na-emepụta ebe nchekwa zip ahụ. Ndị ahụ. mma bụ na oru ngo nginxconfig.io enwere ike ịchekwa ya dị ka ibe HTML, bugoro na ụfọdụ narod.ru na ọ ga-arụ ọrụ) Nke a bụ ihe ngwọta na-atọ ọchị ma na-adọrọ mmasị, Otú ọ dị, ọ dị oke njọ maka ịtọlite ​​​​sava, n'ezie, kpọmkwem maka ihe e kere ọrụ a. Jiri ihe nchọgharị budata ebe nchekwa ewepụtara, wee bufee ya na nkesa site na iji nc... na 2019? Etinyere m onwe m ọrụ nke ịchọta ụzọ m ga-esi budata nhazi nke arụpụta ozugbo na sava ahụ.
Mgbe m kwụsịrị ọrụ ahụ, amalitere m iche echiche banyere nhọrọ m bụ. Ọrụ ahụ gbagwojuru anya site n'eziokwu na achọghị m ịhapụ ọnọdụ ahụ na ọrụ ahụ kwesịrị ịnọgide na-adị ọcha n'ihu, na-enweghị ihe ọ bụla azụ azụ. N'ezie, ngwọta kachasị mfe ga-abụ ibuli nodejs ma manye ya ka ọ mepụta ebe nchekwa na nhazi site na iji njikọ kpọmkwem.
N'ezie, ọnweghị ọtụtụ nhọrọ. Kpọmkwem, ọ bụ naanị otu onye bịara n'uche. Anyị kwesịrị ịtọ ntọala wee nweta njikọ nke anyị nwere ike idetuo na njikwa ihe nkesa iji nweta ebe nchekwa zip.
Ọtụtụ faịlụ ederede dị na ebe nchekwa zip nke arụpụtara tụrụ ntakịrị ntakịrị, n'ezie kilobytes ole na ole. Ihe ngwọta doro anya bụ ịnweta eriri base64 site na ebe nchekwa zip emepụtara wee tụba ya na nchekwa ahụ, ebe ọ nọ na ihe nkesa nwere iwu na njikwa.

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

anyị nwere ike ịmepụta otu faịlụ zip a.

nginxconfig.io Edere ya na AngularJS, enweghị m ike iche n'echiche koodu kilomita ga-achọrọ ma ọ bụrụ na onye edemede ahụ ahọrọghị usoro js reactive. Mana enwere m ike iche n'ụzọ zuru oke ka enwere ike itinye ihe a niile na VueJS dị mfe ma maa mma, n'agbanyeghị na nke a bụ isiokwu dị iche.
N'ime akụrụngwa ọrụ anyị na-ahụ usoro maka ịmepụta ebe nchekwa 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',
	});
};

ihe niile dị nnọọ mfe, na-eji ụlọ akwụkwọ jszip A na-emepụta zip ebe a na-edobe faịlụ nhazi. Mgbe emechara zip Archive, js na-enye ya ihe nchọgharị site na iji ọba akwụkwọ Saver.js:

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

ebe ọdịnaya bụ ihe na-akpata blob nke ebe nchekwa zip.

Ọ dị mma, naanị ihe m ga-eme bụ ịgbakwunye bọtịnụ ọzọ n'akụkụ ya ma mgbe m pịrị ya, agaghị m echekwa faịlụ zip na-apụta na ihe nchọgharị ahụ, mana nweta koodu base64 na ya. Mgbe m gbasịrị ntakịrị, enwetara m ụzọ abụọ, kama naanị otu nbudataZip:

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

Dịka ị chọpụtala, ebugara m ọgbọ nke zip Archive n'onwe ya na usoro geneZip nkeonwe, yana ndị ọzọ. Nke a bụ AngularJS, na onye edemede n'onwe ya na-arapara n'ịkpọghachi azụ na emeghị ya site na nkwa. downloadZip ka na-echekwa dị ka mmepụta, ebe downloadBase64 mere ihe dịtụ iche. Anyị na-emepụta ihe FileReader bịara anyị na html5 ma bụrụlarị nke ọma inweta maka ojiji. Kedu nke, n'otu oge, nwere ike ịme eriri base64 site na blob, ma ọ bụ kama ọ na-eme eriri DataURL, mana nke a adịghị mkpa maka anyị, n'ihi na DataURL nwere kpọmkwem ihe anyị chọrọ. Bingo, ntakịrị snag chere m mgbe m nwara itinye ihe a niile na nchekwa. Onye dere akwụkwọ ahụ ji ụlọ akwụkwọ ahụ mee ihe n'ọrụ ahụ clipboardjs, nke na-enye gị ohere ịrụ ọrụ na clipboard na-enweghị ihe ọkụ ọkụ, dabere na ederede ahọpụtara. Na mbido, ekpebiri m itinye base64 m na mmewere nwere ngosi: ọ nweghị;, mana na nke a enweghị m ike itinye ya na bọọdụ ahụ n'ihi na enweghị nkewa na-eme. Ya mere, kama ngosi: ọ dịghị; Emere m

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

nke mere ka m ma zoo mmewere site na anya wee hapụ ya n'ezie na ibe. Voila, arụchara ọrụ ahụ, mgbe m pịrị bọtịnụ m, etinyere ahịrị dị ka nke a na nchekwa:

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

nke m debere na console na sava ahụ wee nweta ebe nchekwa zip ozugbo yana nhazi niile.
Ma, n'ezie, ezigara m onye edemede akwụkwọ mkpesa, n'ihi na ... oru ngo a na-arụsi ọrụ ike ma dị ndụ, ọ ga-amasị m ịhụ mmelite sitere na onye edemede wee nwee bọtịnụ nke m) Maka ndị nwere mmasị, ebe a bụ ndụdụ m oru ngo na onwe m sere arịrịọ, ebe ị ga-ahụ ihe m gbaziri / gbakwunyere.
Ezi mmepe onye ọ bụla)

Ọgbọ nke nhazi maka nginx, akụkọ ihe mere eme nke otu arịrịọ ịdọrọ

isi: www.habr.com

Tinye a comment