Fausiaina o configs mo nginx, talaʻaga o se talosaga toso

Talofa, uo. Matagofie i luga o aʻu 'au tau nginx ua amata mai le 2006 ma i le tele o tausaga o lana pulega ua ou faaputuputuina le tele o configs ma templates. Sa ou viia tele le nginx ma i se isi itu na foliga mai na ou amataina foi se nginx hub i luga o le hub, foi, faʻaalia m /
Na fai mai uo ia te au e faatu se faatoaga atinae mo i latou, ma nai lo le tosoina o au mamanu patino, sa ou manatua se galuega manaia. nginxconfig.io, lea e fa'asalalau configs i luga o fata ma saunia mea uma mo lets encrypt, etc. Sa ou mafaufau, aisea e leai ai? Ae ui i lea, sa ou ita i le mea moni e faapea o le nginxconfig ua ofoina mai ia te au e sii mai le zip archive i totonu o le masini, e aunoa ma le faatagaina o aʻu e lafo saʻo i le server e faʻaaoga ai le wget/fetch/curl. O le a le mea valea, aisea ou te manaʻomia ai i totonu o le masini, ou te manaʻomia i luga o le 'auʻaunaga mai le faʻamafanafanaga. I le ita, na ou alu i le github e vaai i le manava o le poloketi, lea na taitai atu ai i lona tui ma, o se taunuuga, o se talosaga toso. Le mea ou te le tusia pe ana le manaia 😉

Fausiaina o configs mo nginx, talaʻaga o se talosaga toso

Ioe, aʻo leʻi eli i totonu o faʻapogai, sa ou tilotilo i le mea e tosoina ai e Chrome le faʻamaumauga zip faʻapipiʻi ma configs, ma o loʻo i ai se tuatusi e amata i le "blob:" o loʻo faʻatali mo aʻu, oops. Ua uma ona manino o le auaunaga e le maua ai se mea i luga o le ala, o le mea moni, o loʻo faia uma e js. O le mea moni, o le zip archive e gaosia e le kalani, browser, ma javascript lava ia. O na. o le matagofie o le galuega lena nginxconfig.io e mafai ona faʻasaoina o se itulau html, faʻapipiʻi i nisi narod.ru ma o le a aoga) O se fofo sili ona malie ma manaia, ae ui i lea, e matua faigata lava mo le setiina o sapalai, i le mea moni, mo le mea na faia ai lenei poloketi. La'u mai le fa'amaumauga fa'atupu ma se su'esu'ega, ona tu'u atu lea i le server e fa'aaoga ai le nc... i le 2019? Na ou faʻatulagaina aʻu lava i le galuega o le sailia o se auala e download saʻo ai le config i le server.
Ina ua uma ona fai le galuega faatino, sa amata ona ou mafaufau po o a au filifiliga. O le galuega na faigata ona o le mea moni ou te leʻi manaʻo e alu ese mai le tulaga e tatau ona tumau pea le poloketi i luma mama, e aunoa ma se pito i tua. Ioe, o le fofo sili ona faigofie o le toso i luga nodejs ma faʻamalosia e faʻatupu se faʻamaumauga faʻatasi ma configs e faʻaaoga ai fesoʻotaʻiga tuusaʻo.
O le mea moni, e le tele ni filifiliga. Ae sili atu ona saʻo, na o le tasi na oʻo mai i lou mafaufau. Matou te manaʻomia le faʻatulagaina o configs ma maua se fesoʻotaʻiga e mafai ona matou kopiina i le faʻamafanafanaga server e maua ai se zip archive.
Ole tele o faila faila ile fa'amaumauga zip na maua e fai si mamafa, e na o ni nai kilobytes. O le tali manino o le mauaina lea o le base64 manoa mai le archive zip na gaosia ma lafo i totonu o le pa, aʻo i luga o le 'auʻaunaga ma le faʻatonuga i le faʻamafanafanaga.

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

e mafai ona matou fatuina lenei lava faila zip.

nginxconfig.io na tusia i le AngularJS, e le mafai ona ou mafaufauina pe o le a le kilomita o le tulafono e manaʻomia pe a na le filifilia e le tusitala se faʻavae js reactive. Ae e mafai ona ou mafaufau lelei i le sili atu ona faigofie ma sili atu le matagofie o nei mea uma e mafai ona faʻatinoina i VueJS, e ui lava o se autu e matua ese lava.
I totonu o punaoa o le poloketi matou te vaʻai i se metotia mo le fausiaina o se faʻamaumauga 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',
	});
};

e fai si faigofie mea uma, faʻaaoga le faletusi jszip E faia se zip i le mea e tuʻu ai faila faʻatulagaina. A maeʻa ona fatuina le zip archive, e fafaga e js i le browser e faʻaaoga ai le faletusi FileSaver.js:

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

o mea o lo'o i totonu o le mea lea e maua mai i le fa'amaumauga o le zip.

Lelei, na o le pau lava le mea e tatau ona ou faia o le faʻaopoopoina o se isi faʻamau i tafatafa ma pe a ou kiliki i luga, ou te le faʻasaoina le faʻamaumauga zip i luga o le masini, ae maua le code base64 mai ai. Ina ua uma ona faʻataʻamilomilo, na ou maua ni metotia se 2, nai lo le naʻo le tasi 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',
	});
};

E pei ona e matauina, na ou siitiaina le faʻatupuina o le zip archive lava ia i le auala tumaoti generateZip, ma isi. O le AngularJS lea, ma o le tusitala lava ia e pipii i tua ma e leʻi faʻatinoina e ala i folafolaga. downloadZip na faia pea saveAs o se gaioiga, aʻo downloadBase64 na faia se mea e ese si ese. Matou te fatuina se mea FileReader na oʻo mai ia i matou i le html5 ma ua maeʻa faigofie ona maua mo le faaaogaina. Lea, i le taimi e tasi, e mafai ona faia se manoa base64 mai se paʻu, pe sili atu, e faia ai se manoa DataURL, ae e le taua tele mo i tatou, aua DataURL o lo'o iai tonu mea tatou te mana'omia. Bingo, o loʻo faʻatali mai ia te aʻu se mea itiiti ina ua ou taumafai e tuʻu uma nei mea i totonu o le pa. Na faʻaaogaina e le tusitala le faletusi i le poloketi clipboardjs, lea e mafai ai ona e galue ma le kilipa laupapa e aunoa ma ni mea moli, faʻavae i luga o le tusiga filifilia. I le taimi muamua, na ou filifili e tuʻu laʻu base64 i se elemene faʻaalia: leai;, ae i lenei tulaga e le mafai ona ou tuʻuina i luga o le kilipa laupapa aua e leai se teteaga e tupu. O lea, nai lo le fa'aalia: leai; Sa ou faia

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

lea na mafai ai ona ou natia uma le elemene mai le vaaiga ma tuu i luga o le itulau. Voila, ua maeʻa le galuega, ina ua ou kiliki i luga o laʻu ki, o se laina faʻapenei na tuʻuina i totonu o le pa:

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

lea na na ona ou faapipiiina i totonu o le faʻamafanafanaga i luga o le 'auʻaunaga ma vave maua se faʻamaumauga zip ma faʻaoga uma.
Ma, ioe, na ou auina atu se talosaga toso i le tusitala, aua ... e malosi ma ola le poloketi, ou te fia vaʻai i faʻamatalaga mai le tusitala ma maua laʻu lava ki) Mo i latou e fiafia, o le la'u tui galuega faatino ma ia lava toso talosaga, lea e mafai ona e vaʻai i mea na ou faʻasaʻoina / faʻaopoopo.
Manuia le atina'e tagata uma)

Fausiaina o configs mo nginx, talaʻaga o se talosaga toso

puna: www.habr.com

Faaopoopo i ai se faamatalaga