Generation ntawm configs rau nginx, keeb kwm ntawm ib qho kev thov rub

Nyob zoo, cov phooj ywg. Zoo nkauj ntawm kuv cov servers sib ntaus sib tua nginx tau khiav txij li xyoo 2006 thiab ntau xyoo ntawm nws txoj kev tswj hwm kuv tau sau ntau ntau ntawm configs thiab templates. Kuv qhuas nginx ntau heev thiab qee qhov nws tau tig tawm tias kuv txawm pib nginx hub ntawm lub hub, ib yam nkaus, qhia tawm m /
Cov phooj ywg hais kom kuv teeb tsa kev loj hlob ua liaj ua teb rau lawv, thiab tsis txhob rub lawv kuv cov qauv tshwj xeeb, Kuv nco qab txog qhov project nthuav. nginxconfig.io ua, uas scatters configs ntawm lub rhawv thiab npaj txhua yam rau cia encrypt, thiab lwm yam. Kuv xav tias, vim li cas ho tsis? Txawm li cas los xij, kuv tau npau taws los ntawm qhov tseeb tias nginxconfig muab kuv rub tawm cov zip archive rau hauv browser, tsis tso cai rau kuv xa ncaj qha mus rau server siv wget/fetch/curl. Dab tsi tsis tseem ceeb, vim li cas kuv thiaj xav tau nws hauv browser, Kuv xav tau nws ntawm lub server los ntawm console. Npau taws, kuv tau mus rau github kom pom lub siab ntawm qhov project, uas coj mus rau nws rab rawg thiab, vim li ntawd, qhov kev thov rub tawm. Qhov kuv yuav tsis sau txog yog tias nws tsis nthuav πŸ˜‰

Generation ntawm configs rau nginx, keeb kwm ntawm ib qho kev thov rub

Tau kawg, ua ntej khawb rau hauv qhov chaw, kuv saib qhov twg Chrome rub cov zip archive generated nrog configs, thiab muaj qhov chaw nyob pib nrog "blob:" tau tos kuv, oops. Nws twb tau paub meej tias qhov kev pabcuam tsis tsim ib yam dab tsi ntawm txoj kev, qhov tseeb, nws yog tag nrho ua tiav los ntawm js. Qhov tseeb, zip archive yog tsim los ntawm tus neeg siv khoom, browser, thiab javascript nws tus kheej. Cov. qhov kev zoo nkauj yog qhov project nginxconfig.io ua tuaj yeem txuag tau yooj yim raws li nplooj ntawv html, upload rau qee qhov narod.ru thiab nws yuav ua haujlwm) Qhov no yog ib qho kev lom zem heev thiab nthuav kev daws teeb meem, txawm li cas los xij, nws tsis yooj yim heev rau kev teeb tsa servers, qhov tseeb, raws nraim li qhov project no tau tsim. Rub tawm cov ntaub ntawv tsim tawm nrog lub browser, thiab tom qab ntawd hloov mus rau lub server siv nc... xyoo 2019? Kuv tau teeb tsa kuv tus kheej txoj haujlwm ntawm kev nrhiav txoj hauv kev los rub tawm cov txiaj ntsig config ncaj qha rau lub server.
Tom qab forking qhov project, kuv pib xav txog qhov kuv xaiv yog dab tsi. Cov hauj lwm nyuaj los ntawm qhov tseeb tias kuv tsis xav kom deviate los ntawm cov xwm txheej uas qhov project yuav tsum nyob twj ywm ib tug ntshiab pem hauv ntej-kawg, tsis muaj back-end. Tau kawg, qhov kev daws teeb meem yooj yim tshaj plaws yuav yog rub nodejs thiab yuam nws los tsim cov ntaub ntawv nrog configs siv cov kev sib txuas ncaj qha.
Qhov tseeb, tsis muaj ntau txoj kev xaiv. Ntau precisely, tsuas yog ib tug tuaj rau lub siab. Peb yuav tsum teeb tsa cov kev teeb tsa thiab tau txais qhov txuas uas peb tuaj yeem luam tawm mus rau lub server console kom tau txais zip archive.
Ob peb cov ntawv nyeem nyob rau hauv qhov tshwm sim zip archive hnyav me ntsis, cia li ob peb kilobytes. Qhov kev daws teeb meem yog kom tau txais txoj hlua base64 los ntawm cov zip archive generated thiab muab pov rau hauv qhov tsis, thaum nyob rau hauv lub server nrog cov lus txib hauv console.

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

peb tuaj yeem tsim cov ntaub ntawv zip tib yam.

nginxconfig.io ua tau sau rau hauv AngularJS, Kuv tsis tuaj yeem xav txog qhov km ntawm cov lej yuav xav tau yog tias tus sau tsis tau xaiv lub reactive js moj khaum. Tab sis kuv tuaj yeem xav txog qhov yooj yim npaum li cas thiab zoo nkauj dua txhua qhov no tuaj yeem ua tiav hauv VueJS, txawm hais tias qhov no yog lub ntsiab lus sib txawv kiag li.
Hauv cov peev txheej peb pom ib txoj hauv kev tsim cov 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',
	});
};

txhua yam yog yooj yim heev, siv lub tsev qiv ntawv jszip ua Ib tug zip yog tsim qhov twg cov ntaub ntawv configuration muab tso rau. Tom qab tsim cov zip archive, js pub nws mus rau qhov browser siv lub tsev qiv ntawv FileSaver.js:

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

qhov twg cov ntsiab lus yog qhov tshwm sim blob khoom ntawm zip archive.

Ok, txhua yam kuv yuav tsum tau ua yog ntxiv lwm lub pob ntawm nws thiab thaum kuv nyem rau ntawm nws, kuv yuav tsis khaws cov zip archive uas tau tshwm sim rau qhov browser, tab sis tau txais tus lej base64 los ntawm nws. Tom qab fiddling ib ncig ntawm me ntsis, Kuv tau txais 2 txoj kev, tsis yog ib qho 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',
	});
};

Raws li koj tuaj yeem pom, Kuv tau hloov lub cim ntawm zip archive nws tus kheej mus rau tus kheej generateZip txoj kev, thiab lwm yam. Qhov no yog AngularJS, thiab tus sau nws tus kheej lo rau callbacks thiab tsis ua raws li cov lus cog tseg. downloadZip tseem ua saveAs raws li qhov tso zis, thaum downloadBase64 tau ua qee yam txawv me ntsis. Peb tsim cov khoom FileReader uas tuaj rau peb hauv html5 thiab twb heev siv tau rau siv. Uas, nyob rau hauv ib lub sij hawm, yuav ua tau ib tug base64 hlua los ntawm ib tug blob, los yog es, nws ua ib tug DataURL hlua, tab sis qhov no tsis yog li ntawd tseem ceeb rau peb, vim hais tias DataURL muaj raws nraim qhov peb xav tau. Bingo, me ntsis snag tos kuv thaum kuv sim muab tag nrho cov no tso rau hauv qhov tsis. Tus sau tau siv lub tsev qiv ntawv hauv qhov project clipboardjs, uas tso cai rau koj ua haujlwm nrog cov ntawv teev cia yam tsis muaj cov khoom flash, raws li cov ntawv xaiv. Thaum xub thawj, kuv txiav txim siab muab kuv lub hauv paus 64 rau hauv ib lub caij nrog zaub: tsis muaj; tab sis qhov no kuv tsis tuaj yeem muab tso rau hauv daim ntawv teev npe vim tsis muaj kev sib cais. Yog li ntawd, es tsis txhob tso saib: tsis muaj; kuv ua

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

uas tso cai rau kuv mus nkaum lub caij los ntawm saib thiab ua tau tawm ntawm nplooj ntawv. Voila, txoj haujlwm tiav, thaum kuv nyem rau ntawm kuv lub pob, ib kab zoo li no tau muab tso rau hauv qhov tsis:

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

uas kuv tsuas pasted rau hauv lub console ntawm lub server thiab tam sim ntawd tau txais ib tug zip archive nrog tag nrho cov configs.
Thiab, ntawm chav kawm, kuv xa ib daim ntawv thov rub mus rau tus sau, vim ... qhov project yog nquag thiab cus ciav, Kuv xav pom cov tshiab los ntawm tus sau thiab muaj kuv tus kheej khawm) Rau cov neeg nyiam, ntawm no nws yog kuv fork qhov project thiab kuv tus kheej rub thov, qhov twg koj tuaj yeem pom qhov kuv kho / ntxiv.
Zoo siab rau kev txhim kho txhua tus)

Generation ntawm configs rau nginx, keeb kwm ntawm ib qho kev thov rub

Tau qhov twg los: www.hab.com

Ntxiv ib saib