Indlela i-backend yomdlalo we-hacker malunga nokutshabalalisa umncedisi wenziwa

Indlela i-backend yomdlalo we-hacker malunga nokutshabalalisa umncedisi wenziwa
Siyaqhubeka ukukuxelela ukuba isicelo sethu selaser ngokutshabalalisa iseva salungiswa njani. Qala ngaphambili inqaku elimalunga nokusombulula imfuno.

Lilonke, umva womdlalo uneeyunithi eziyi-6 zokwakha, esiza kuzihlalutya kweli nqaku:

  1. Umva wamaqumrhu emidlalo ebenoxanduva lweendlela zemidlalo
  2. I-backend kunye ne-site data exchange ibhasi kwiVPS
  3. Umguquli osuka kwizicelo zasemva (izinto zomdlalo) ukuya kwiArduino kunye nehardware kwisiza
  4. UArduino, owayenoxanduva lokulawula iirelay, wafumana imiyalelo kumguquleli waza wenza owona msebenzi
  5. Izixhobo ezichanekileyo: ifeni, iigarlands, izibane zomgangatho, njl.
  6. Frontend - Iwebhusayithi yeFalcon ngokwayo, apho abadlali balawula izixhobo

Makhe sijonge nganye kuzo.

Umva wamaqumrhu omdlalo

I-backend yaphunyezwa njengesicelo se-spring boot: yayinabalawuli abaninzi bokuphumla, i-websocket endpoint kunye neenkonzo ezinengqiqo yomdlalo.

Kwakukho abalawuli abathathu kuphela:

  • IMegatron. Iphepha langoku leMegatron lithunyelwe ngezicelo ze-GET: ngaphambi nangemva kokuvula amandla. I-laser yadubula ngesicelo se-POST.
  • Ukwenza imephu ye-tilde amaphepha ukuze anikezelwe ngamagama ephepha. I-Tilde ivelisa amaphepha okuthunyelwa ngaphandle ngamagama okuqala, kodwa nge-ID yangaphakathi kunye nolwazi lokuthotyelwa.
  • Umlawuli we-Captcha ukukhonza i-pseudo-high-load server captcha.

Isiphelo seWebsocket sasisetyenziselwa ukulawula izixhobo: izibane, igarland kunye neeleta. Ikhethwe ukubonisa ngongqamano kubo bonke abadlali ubume bangoku besixhobo: nokuba ivuliwe okanye icinyiwe, iyasebenza okanye ayisebenzi, ngowuphi umbala wonobumba olayitiweyo ngoku eludongeni. Ukuze wenze umsebenzi wokuguqula i-laser ube nzima ngakumbi, songeze isigunyaziso kwi-garland kunye ne-laser kunye ne-login efanayo kunye ne-password admin / admin.

Abadlali banokuyivavanya ngokuvula igarland kwaye baphinde okufanayo ngelaser.

Sikhethe isibini esingenamsebenzi sokungena-password ukuze singathuthumbisi abadlali ngokhetho olungeyomfuneko.

Ukwenza umsebenzi ube nomdla ngakumbi, ii-ID zento ezisuka kwi-mongodb zisetyenziswe njengeziphawuli zesixhobo kwigumbi.

I-ObjectId iqulethe isitampu sexesha: amaxabiso amabini angaqhelekanga, elinye lawo lithathwa ngokusekelwe kwisazisi sesixhobo, kwaye elesibini sisekwe kwipid yenkqubo eyivelisayo kunye nexabiso lekhawuntara. Bendifuna ukwenza izichazi zenziwe ngamaxesha aqhelekileyo kunye neenkqubo ezahlukeneyo zepid, kodwa ngekhawuntala eqhelekileyo, ukuze ukhetho lwesixhobo selaser sichonge sibe nomdla ngakumbi. Nangona kunjalo, ekugqibeleni, wonke umntu waqala ngezazisi ezahluke kuphela kwixabiso lokubala. Oku kunokuba kwenze inyathelo lalula kakhulu kwaye alifuni uhlalutyo lwesakhiwo se-objectId.

Umguquli osuka kwizicelo ezingasemva

Umbhalo wePython, owasebenza kwizibali-xesha kwaye waziguqulela ukusuka kwizinto ezithathwayo zokudlala ukuya kwimodeli ebonakalayo. Umzekelo, "layita isibane somgangatho" β†’ "layita i-relay N2."

Iskripthi esiqhagamshelwe kumgca we-RabbitMQ kwaye udlulisele izicelo ukusuka kumgca we-Arduino. Kwakhona kwaphunyezwa ingqiqo yokutshintsha ukukhanya okuhambelanayo: kunye nezinye izixhobo, ukukhanya kuzo kwakhanyiswa, umzekelo, xa amandla anikezelwa okokuqala kwiMegatron, yakhanyiswa ngokukhanya kwesiteji. Uyilo lokukhanyisa i-cinematography yendawo yonke ibali elihlukeneyo malunga nomsebenzi omkhulu weprojekthi yethu umdidiyeli weprojekthi kunye nomyili wemveliso u-Ilya Serov, kwaye siya kuxela malunga nesithuba esahlukileyo.

Umguquleli naye wayejongene nengqiqo yokuqalisa i-shredder usebenzisa i-timer kunye nokudlulisa umfanekiso kwi-TV: i-timer yokuqalisa i-shredder, i-capybara ekhalayo, intengiso ekupheleni komdlalo.

Indlela ingqiqo yokuvelisa ithokheni yeMegatron eyakhiwe ngayo

Uvavanyo lokudubula

Rhoqo kwimizuzwana engama-25 kwaveliswa ithokheni entsha kwaye ingasetyenziselwa ukuvula i-laser imizuzwana eyi-10 kumandla angama-10/255. Ikhonkco kwi github ngekhowudi yeMegatron.

I-laser ke yaphola phantsi umzuzu o-1 - ngeli xesha yayingafumaneki kwaye ayizange ivume izicelo ezintsha zokudutyulwa.

La mandla ayenganelanga ukutshisa ngentambo, kodwa nawuphi na umdlali unokutshisa iMegatron kwaye abone i-laser beam isebenza.

I-algorithm ye-MD5 ye-hashing yayisetyenziselwa ukuvelisa uphawu. Kwaye icebo laphumelela I-MD5 esuka kwi-MD5 + counter + imfihlo umqondiso wokulwa kwaye ngaphandle kwemfihlo yomqondiso wokuvavanya.

I-MD5 ibhekisela kwiprojekthi yorhwebo eyenziwa nguPavel, umgcini wethu osemva. Kwiminyaka nje embalwa edlulileyo le projekthi yasebenzisa i-MD5, kwaye xa waxelela umakhi weprojekthi ukuba yayiyi-algorithm yokubethela ephelelwe lixesha, baqala ukusebenzisa i-MD5 ukusuka kwi-MD5. Ekubeni sagqiba ekubeni senze eyona projekthi ye-noob inokwenzeka, wakhumbula yonke into kwaye wagqiba ekubeni enze ireferensi encinci.

Udubulo lokulwa

Imodi yokulwa ye-Megatron yi-100% yamandla e-laser kwi-3 watts. Oku kwanele imizuzu emi-2 ukutshisa ngentambo ebambe ubunzima, ukwaphula i-aquarium kunye nokukhukulisa iseva ngamanzi.

Sishiye iingcebiso ezimbalwa kwi-Github yeprojekthi: oko kukuthi, ikhowudi yokuvelisa ithokheni, apho umntu unokuqonda ukuba uvavanyo kunye namathokheni okulwa ziveliswa ngokusekelwe kwisalathisi esifanayo. Kwimeko yomqondiso wokulwa, ngaphezu kwexabiso le-counter value, ityuwa iphinda isetyenziswe, ephantse ishiywe ngokupheleleyo kwimbali yokutshintsha le ngqungquthela, ngaphandle kweempawu ezimbini zokugqibela.

Ukwazi le datha, kwakunokwenzeka ukuhlenga kwiisimboli ze-2 zokugqibela zetyuwa kwaye ngokwenene ufumanise ukuba amanani avela kwi-Lost, aguqulelwe kwisistim se-hexadecimal, asetyenziselwa yona.

Emva koko abadlali kufuneka babambe ixabiso le-counter (ngokuhlalutya uphawu lokuvavanya) kwaye bavelise uphawu lokulwa usebenzisa ixabiso le-counter elilandelayo kunye netyuwa ekhethiweyo kwisinyathelo sangaphambili.

Ikhawuntara isanda ngokudubula kovavanyo ngalunye kunye nemizuzwana engama-25. Asizange sibhale ngale nto naphi na, bekufanele ukuba ibe yinto encinci yomdlalo.

Inkonzo yentsebenziswano yeCaptcha

Kwihlabathi lemidlalo, le yayiyi-captcha efanayo ekwakufuneka ilayishwe ukuze uvule ifeni kwaye uvule i-flipchart ngophawu. Ecaleni kwekhamera bekukho ilaptop ejonga umthwalo.

Indlela i-backend yomdlalo we-hacker malunga nokutshabalalisa umncedisi wenziwa

inkonzo Ndibale into emayibonise ekubekeni iliso njengomthwalo wangoku: ubushushu kunye neCPU Fan. Iimetriki zaye zakhutshelwa kuvimba weenkcukacha zexesha kwaye zatsalwa yigrafana.

Ukuba kwiisekhondi ezi-5 zokugqibela bekukho izicelo ezingaphezu kwe-50 zokubonisa i-captcha, ngoko umthwalo wanda ngenani elimiselweyo + lamanyathelo. Izibalo yayikukuba umthwalo oyi-100% unokufikelelwa kwimizuzu emibini.

Enyanisweni, kwakukho ingqiqo kwinkonzo kunokuba iboniswe kumdlalo wokugqibela: sibeke iliso ngendlela yokuba kuphela ukujikeleza kwe-CPU Fan kwabonakala.

Ekuqaleni kwephulo babefuna ukushiya iGrafan ifikeleleke kwiwebhusayithi yeFalcon. Kodwa ikwanayo neemetrics ze-springboot ezivela kwingxelo yesicelo se-backend, esingenaxesha lokuyicima, ngoko ke sigqibe kwelokuba sikuthintele ukufikelela kuyo. Kwaye ngokufanelekileyo - nasekuqaleni kwemfuno, abanye abadlali baqikelele ukuba isicelo sibhalwe kwisakhelo se-springboot kwaye bemba namagama ezinye iinkonzo.

Ukubamba kunye nedatha yebhasi

Isixhobo sokudlulisa ulwazi kwi-backend ukuya kwindawo, iseva yeVPS apho i-RabbitMQ yayisebenza khona.

Umva kunye nebhasi yedatha yagcinwa VPS yethu. Amandla ayo afaniswa nekhompyutheni oyibonayo kwisikrini: i-2-core VPS ene-gigabytes ezimbini ze-RAM. Umrhumo wahlawuliswa izibonelelo, ekubeni umthwalo ophakamileyo wawucetywe ngeentsuku ezimbalwa kuphela - yile nto eyenziwa ngabaxhasi bethu abaceba ukulayisha iVPS ixesha elifutshane. Emva koko kwavela ukuba umthwalo uphezulu kunokuba besilindele, kwaye intlawulo emiselweyo iya kuba nenzuzo ngakumbi. Ukuba wenza umfuno, khetha uluhlu lwamaxabiso kwiTurbo.

Ukukhusela iseva kwi-DDoSa, sasebenzisa i-Cloudflare.

Kufanelekile ukuthetha ukuba i-VPS imelana nayo yonke into ngembeko.

UArduino, owayenoxanduva lokulawula iirelay, wafumana imiyalelo kumguquleli waza wenza owona msebenzi

Oku kungaphezulu kwesihloko senqaku elilandelayo malunga nenxalenye ye-hardware yeprojekthi: i-backend ithumele nje izicelo zokuvula i-relay ethile. Kwenzekile ukuba i-backend yazi phantse onke amaqumrhu kunye nezicelo ezivela kuyo zijongeka ngathi "vula eli qumrhu." Senze oku kuvavanyo lwangethuba lwesiza (sasingakahlanganisi yonke iArduino kunye nokuhanjiswa), ekugqibeleni sashiya yonke into enjalo.

Ukuphela komphambili

Sakha ngokukhawuleza isayithi kwi-tilde, yathatha usuku olunye lokusebenza kwaye yasigcina i-30 lamawaka kwibhajethi yethu.

Ekuqaleni, sasicinga ngokuthumela ngaphandle indawo kwaye songeze ingqiqo ebesiyilahlekele, kodwa siye sabalekela kwimigaqo yokusetyenziswa eyayisalela ukwenza oku.

Asizange silungele ukuphula ilayisenisi, ngoko ke kukho iindlela ezimbini: ukuphumeza yonke into ngokwethu okanye ukudibanisa noTilda ngokuthe ngqo, thetha ngeprojekthi kwaye ucele imvume yokutshintsha ikhowudi.

Sakhetha ukhetho lwesibini kwaye abazange badibane nathi nje kuphela, kodwa bade basinika unyaka we-akhawunti yeshishini lamahhala, esibabulela kakhulu kubo. Kwakunzima kakhulu ukubabonisa uyilo lwewebhusayithi yeSokol.

Ngenxa yoko, siye sancamathelisa i-js logic kwindawo engaphambili yokuthumela izicelo kwizixhobo zokuqala, kwaye satshintsha kancinane izimbo zamaqhosha okuvula nokuvala izinto zomdlalo.

Uyilo lwesiza

Imbali yokukhangela, exabisa isahluko esahlukileyo.

Besifuna ukudala kungekuphela nje indawo yakudala, kodwa eyenyanyeka ngokupheleleyo ephula yonke imithetho esisiseko yoyilo. Kwangaxeshanye, kwakubalulekile ukugcina ukukholelwa: kwakunganyanzelekanga ukuba kuphulwe ibali le-ENT, kubonise ukuzingca kombhali, kwaye abadlali kuya kufuneka bakholelwe ukuba indawo enjalo inokubakho kwaye ize nabathengi. Waza nayo! Ngelixa umdlalo uqhubeka, saqhagamshelwa kabini ukwenza iiwebhusayithi.

Ekuqaleni ndenze uyilo ngokwam, ndizama ukubandakanya ii-gifs ezininzi kunye nezinto ezikhanyayo. Kodwa umyeni wam ongumyili weminyaka eli-10 wajonga egxalabeni lakhe kwaye wayigatya β€œnjengentle kakhulu.” Ukuphula imithetho yoyilo, kufuneka ubazi.

Indlela i-backend yomdlalo we-hacker malunga nokutshabalalisa umncedisi wenziwa

Kukho indibaniselwano yemibala emininzi evuselela imvakalelo engapheliyo yokuzonya: eluhlaza kunye nobomvu obutyebi obulinganayo, ingwevu kunye nepinki, eluhlaza okwesibhakabhaka kunye nomdaka. Ekugqibeleni, sazinza ngokudibanisa obomvu kunye nohlaza njengemibala esisiseko, songeza ii-gifs kunye nekati kwaye sakhetha iifoto ezi-3-4 ze-Sokolov ngokwakhe kwi-stock photo. Ndandineemfuno ezimbalwa kuphela: indoda eneminyaka ephakathi, enxibe isuti engafanelekanga isibini esinobukhulu obukhulu kwaye "kwisitudiyo sobuchwephesha befoto" yokumisa. Kuvavanyo, bayibonisa abahlobo kwaye babuza "uyithanda njani?"

Ngexesha lenkqubo yophuhliso loyilo, umyeni wam kwafuneka alale phantsi rhoqo kwisiqingatha seyure; ihelikopta yaqala ukubhabha. UPasha wazama ukuvula i-console yomphuhlisi kuninzi lwesikrini ngelixa egqibile ukugqiba i-frontend - ukukhusela amehlo akhe.

Izixhobo ezizizo

Iifeni kunye nezibane zaye zanyuswa ngokusebenzisa i-slid-state relays ukuze bangalayiti amandla apheleleyo ngokukhawuleza - ukuze amandla anyuke ngokuhambelana nokubeka iliso.

Kodwa siza kuthetha ngale nto kwisithuba esilandelayo, malunga nenxalenye ye-hardware yomdlalo kunye nokwakhiwa kwangempela kwendawo.

Hla umamele!

Amanye amanqaku malunga nokufuna ukutshabalalisa umncedisi

Indlela i-backend yomdlalo we-hacker malunga nokutshabalalisa umncedisi wenziwa

umthombo: www.habr.com

Yongeza izimvo