Ngā mihi, e hoa mā. He kēmu whakamiharo tāku kei runga i aku tūmau ora. Kua whakahaerehia mai i te tau 2006, ā, i roto i ngā tau e whakahaere ana ahau, he maha ngā whirihoranga me ngā tauira kua kohia e au. He maha aku whakamoemiti ki a nginx, ā, i tētahi wā i tīmata ai ahau i tētahi nginx hub i runga i a Habr, hei whakaaturanga noa iho.
I tono mai ōku hoa kia tīmata ahau i tētahi pāmu whanaketanga mā rātou, ā, hei utu mō te tōia o aku tauira ki a rātou, i mahara ahau ki tētahi kaupapa whakamere. , e tohatoha ana i ngā whirihoranga puta noa i ngā whata, ā, e whakarite ana i ngā mea katoa mō Let's Encrypt, me ētahi atu. Nō reira i whakaaro ahau, he aha ai? Heoi, i riri ahau i te mea i akiakihia ahau e nginxconfig ki te tango i te pūranga zip i roto i te pūtirotiro, me te kore e tuku i ahau ki te tuku tika atu ki te tūmau mā wget/fetch/curl. He aha te wairangi! He aha ahau i hiahia ai ki roto i te pūtirotiro? Me hiahia ahau ki runga i te tūmau mai i te papatohu. I te riri, i haere ahau ki GitHub ki te tirotiro i ngā ā-roto o te kaupapa, ā, i hua ake ai he marau, ā, ko te mutunga, he tono kume. Kāore au e tuhi mōna mena kāore i te whakamere 😉
Ae, i mua i te keri ki roto i te waehere pūtake, i tirohia e au te wāhi i tangohia ai e Chrome te pūranga zip i hangaia me ngā whirihoranga, ā, i reira, e tatari mai ana ki ahau, he wāhitau e tīmata ana ki te "blob:"—āue! Kua mārama kē kāore te ratonga i te whakaputa i tetahi mea; inaa, i mahia katoatia e JavaScript. Ina hoki, i hangaia te pūranga zip e te kiritaki, te pūtirotiro, me JavaScript tonu. Nō reira, ko te ataahua o te kaupapa koia Ka taea te tiaki noa hei whārangi HTML ka tukuatu ki tētahi paetukutuku. Ā, ka mahi.) He otinga tino ngahau, he tino whakamere hoki tēnei, engari he tino uaua ki te whakatū tūmau, koinei tonu te kaupapa i hangaia ai tēnei kaupapa. Te tango i te pūranga i hangaia mā te whakamahi i tētahi pūtirotiro, kātahi ka whakawhiti ki te tūmau mā te whakamahi i te nc... i te tau 2019? I whakatakoto ahau i te mahi ki ahau anō ki te kimi huarahi hei tuku tika i te whirihoranga hua ki te tūmau.
Nō te wehenga atu i te kaupapa, ka tīmata ahau ki te whakaaro ki aku kōwhiringa. I uaua te mahi nā te mea kāore au i hiahia ki te peka atu i te whakaritenga kia noho te kaupapa hei mua-mutunga anake, kāore he muri-mutunga. Ko te otinga māmā rawa ko te kukume i ngā nodejs me te whakaputa i tētahi pūranga whirihoranga mā ngā hononga tika.
Kāore i te maha ngā kōwhiringa. Heoi anō, kotahi anake i puta ake ki tōku hinengaro. Me whirihora e tātou ngā whirihoranga, me te tiki hononga hei tārua ki te papatohu tūmau hei waihanga i tētahi pūranga zip.
He tino iti ngā kōnae kuputuhi torutoru i roto i te pūranga zip i puta mai, he torutoru kiropaita noa iho. Ko te otinga mārama ko te tango i te aho base64 mai i te pūranga zip i hangaia, ka maka ki roto i te pūrua, i runga i te tūmau, mā te whakamahi i te whakahau papatohu.
echo 'base64string' | base64 --decode > config.zipKa taea e tātou te hanga i tēnei kōnae zip.
I tuhia ki AngularJS, ā, kāore e taea e au te whakaaro e hia kiromita o te waehere e hiahiatia ana mēnā kāore te kaituhi i whiriwhiri i tētahi anga JS tauhohe. Heoi, ka taea e au te whakaaro mārama me pēhea te māmā ake, te ataahua ake hoki o te whakatinanatanga i roto i VueJS, ahakoa he kaupapa tino rerekē tēnā.
I roto i ngā rauemi kaupapa, ka kite tātou i tētahi tikanga mō te whakaputa i tētahi pūranga 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',
});
};
He tino māmā noa iho, mā te āwhina o tētahi whare pukapuka Ka hangaia he kōnae zip, kei roto ngā kōnae whirihoranga. Kia oti te hanga i te pūranga zip, ka tukuna e JS ki te pūtirotiro mā te whakamahi i te whare pukapuka. :
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
ko te ihirangi te hua o te mea puranga o te pūranga zip.
Āe, ko tāku noa iho he tāpiri i tētahi atu pātene ki te taha, ā, i taku pāwhiritanga, hei utu mō te tiaki i te pūranga zip i puta mai ki te pūtirotiro, i whiwhi ahau i te waehere base64 mai i reira. Whai muri i te whakamātau iti, i whiwhi ahau i ngā tikanga e rua hei utu mō te tango noa i te Zip:
$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 ai ki tāu i kite ai, i nekehia e au te whakaputanga o te pūranga zip ki roto i tētahi tikanga tūmataiti, arā, ko generateZip. Nā te mea ko AngularJS tēnei, ā, he kaiwhakawhanake mōhio-waea-muri te kaituhi, kāore au i whakatinana mā te whakamahi i ngā kupu whakaari. I whakamahia tonutia e downloadZip ngā saveAs i te putanga, engari he rerekē te mahi a downloadBase64. Kei te hangaia e mātou he mea FileReader, he tāpiri hou ki te HTML5, ā, he tino whai hua. hei whakamahi. I tōna wā, ka taea te huri i tētahi porowhita hei aho base64, he tika ake rānei, ka huri i tētahi aho DataURL, engari kāore i te tino nui ki a tātou, nā te mea kei roto i te DataURL ngā mea e hiahiatia ana e tātou. I tatari mai tētahi raruraru iti ki ahau i te ngana ki te whakauru i ēnei mea katoa ki roto i te pūrua. I whakamahia e te kaituhi tētahi whare pukapuka i roto i te kaupapa. , e āhei ai koe ki te mahi me te papa papatuhi me te kore he ahanoa uira, i runga i te tuhinga kua tīpakohia. I te tīmatanga, i whakatau ahau ki te whakanoho i taku base64 ki roto i tētahi huānga me te display:none;, engari i tēnei wā, kāore i taea e au te whakanoho ki te papa papatuhi, nā te mea kāore he kōwhiringa e puta. Nō reira, hei utu mō te display:none; i mahi ahau
position: absolute;
z-index: -1;
opacity: 0;
Nā tēnei i taea ai e au te huna i te huānga mai i te tirohanga, me te waiho tonu i runga i te whārangi. Āe, kua oti te mahi. I taku pāwhiritanga i taku pātene, ka whakanohoia he aho pēnei ki roto i te pūrua:
echo 'base64string' | base64 --decode > config.zipi whakapiri noa ahau ki te papatohu i runga i te tūmau, ā, ka whiwhi tonu ahau i tētahi pūranga zip me ngā whirihoranga katoa.
Āe, ko te tikanga, i tukuna e au he tono kukume ki te kaituhi, nā te mea kei te ora tonu te kaupapa, e hiahia ana ahau ki te kite i ngā whakahoutanga mai i te kaituhi me te whai i taku ake pātene) Mō te hunga e hiahia ana, anei kaupapa me au anō , ka taea e koe te kite i aku i whakatika/tāpiri atu.
Ngā mihi nui ki te katoa kia harikoa te whanaketanga!
Source: will.com
