Yuav ua li cas lub backend ntawm kev ua si hacker txog kev rhuav tshem lub server tau tsim

Yuav ua li cas lub backend ntawm kev ua si hacker txog kev rhuav tshem lub server tau tsim
Peb txuas ntxiv qhia koj li cas peb cov kev tshawb nrhiav laser nrog kev puas tsuaj ntawm lub server tau npaj. Pib hauv yav dhau los tsab xov xwm hais txog kev daws qhov quest.

Nyob rau hauv tag nrho, lub backend ntawm qhov kev ua si muaj 6 architectural units, uas peb yuav soj ntsuam nyob rau hauv no tsab xov xwm:

  1. Backend ntawm game entities uas yog lub luag hauj lwm rau game mechanisms
  2. Backend thiab site data exchange bus ntawm VPS
  3. Tus txhais lus los ntawm backend thov (cov ntsiab lus game) rau Arduino thiab kho vajtse ntawm qhov chaw
  4. Arduino, uas yog lub luag haujlwm rau kev tswj cov relays, tau txais cov lus txib los ntawm tus txhais lus thiab tau ua haujlwm tiag tiag.
  5. Cov khoom siv tiag tiag: kiv cua, garlands, pem teb teeb, thiab lwm yam.
  6. Frontend - Falcon lub vev xaib nws tus kheej, los ntawm cov players tswj cov khoom siv

Cia peb mus dhau ntawm lawv txhua tus.

Backend ntawm game entities

Lub backend tau ua raws li daim ntawv thov caij nplooj ntoos hlav khau raj: nws muaj ob peb lub chaw so, lub websocket kawg thiab cov kev pabcuam nrog kev ua si logic.

Tsuas muaj peb yam controllers:

  • Megatron. Nplooj ntawv Megatron tam sim no tau xa los ntawm GET thov: ua ntej thiab tom qab qhib lub zog. Lub laser raug rho tawm los ntawm POST thov.
  • Muab cov nplooj ntawv tilde kom lawv tau txais los ntawm nplooj ntawv npe. Tilde tsim cov nplooj ntawv rau kev xa tawm tsis nrog cov npe qub, tab sis nrog ID sab hauv thiab cov ntaub ntawv ua raws.
  • Captcha maub los pab pseudo-siab-load server captcha.

Websocket endpoint tau siv los tswj gadgets: teeb, garland thiab ntawv. Nws tau raug xaiv los synchronously tso saib rau txhua tus players cov xwm txheej tam sim no ntawm lub cuab yeej: txawm tias nws yog nyob rau lossis tawm, nquag lossis tsis ua, yam xim ntawm tsab ntawv tam sim no teeb rau ntawm phab ntsa. Txhawm rau ua kom txoj haujlwm tig ntawm lub laser me ntsis nyuaj, peb ntxiv kev tso cai rau lub garland thiab lub laser nrog tib tus ID nkag mus thiab lo lus zais admin / admin.

Cov neeg ua si tuaj yeem sim nws los ntawm kev tig lub garland thiab rov ua tib yam nrog lub laser.

Peb xaiv xws li ib tug tsis tseem ceeb tus ID nkag mus-password khub nyob rau hauv thiaj li tsis mus tsim txom players nrog tsis tsim nyog xaiv.

Txhawm rau ua kom txoj haujlwm nthuav dav me ntsis, cov khoom IDs los ntawm mongodb tau siv los ua cov cim cim hauv chav.

ObjectId muaj cov ntawv teev sijhawm: ob qhov txiaj ntsig random, ib qho yog coj los ntawm tus cim ntaus ntawv, thiab qhov thib ob raws li pid ntawm cov txheej txheem uas tsim nws thiab tus nqi txee. Kuv xav ua kom cov cim qhia tau tsim nyob rau ib ntus thiab nrog cov txheej txheem pid sib txawv, tab sis nrog lub txee sib xws, yog li kev xaiv ntawm lub cim laser ntaus ntawv yuav nthuav ntau dua. Txawm li cas los xij, thaum kawg, txhua tus pib nrog cov cim uas txawv ntawm tus nqi txee. Qhov no tej zaum yuav ua rau cov kauj ruam yooj yim heev thiab tsis xav tau kev tshuaj xyuas ntawm cov qauv objectId.

Tus neeg txhais lus los ntawm kev thov rov qab

Python tsab ntawv, leej twg ua hauj lwm ntawm timers thiab txhais lawv los ntawm gaming abstractions rau hauv lub cev qauv. Piv txwv li, "tig lub teeb hauv pem teb" β†’ "tig rau relay N2."

Tsab ntawv txuas nrog RabbitMQ kab thiab xa cov lus thov los ntawm kab mus rau Arduino. Nws kuj tau siv lub logic ntawm kev sib txuas lub teeb hloov: ua ke nrog qee cov khoom siv, lub teeb ntawm lawv tau qhib, piv txwv li, thaum lub zog pib nkag mus rau Megatron, nws tau teeb pom kev nrog theem teeb. Teeb pom kev zoo tsim rau kev ua yeeb yaj kiab ntawm tag nrho cov xwm txheej yog ib zaj dab neeg sib cais txog kev ua haujlwm zoo ntawm peb qhov project co-producer thiab tus tsim tsim Ilya Serov, thiab peb yuav qhia txog nws hauv ib qho kev sib cais.

Tus neeg txhais lus kuj yog lub luag haujlwm rau lub logic ntawm kev tua lub shredder siv lub timer thiab xa cov duab mus rau TV: lub timer rau launching lub shredder, ib tug qw capybara, kev lag luam thaum kawg ntawm qhov kev ua si.

Yuav ua li cas lub logic rau tsim lub Megatron token tau teeb tsa

Kev txhaj tshuaj

Txhua 25 vib nas this ib lub cim tshiab tau tsim thiab siv tau los tig lub laser rau 10 vib nas this ntawm 10/255 lub zog. Txuas rau github nrog Megatron code.

Lub laser ces txias rau 1 feeb - lub sijhawm no nws tsis muaj thiab tsis lees txais kev thov txhaj tshuaj tshiab.

Lub hwj chim no tsis txaus los hlawv los ntawm txoj hlua, tab sis txhua tus neeg uas ua ntawv tuaj yeem tua Megatron thiab pom cov nqaj laser hauv kev nqis tes ua.

MD5 hashing algorithm tau siv los tsim cov token. Thiab cov txheej txheem tau ua tiav MD5 los ntawm MD5 + txee + zais cia rau kev sib ntaus sib tua token thiab tsis muaj qhov zais cia rau kev sim token.

MD5 yog ib qho kev siv rau kev lag luam project uas Pavel, peb tus backender, tau ua. Tsuas yog ob peb xyoos dhau los qhov project no tau siv MD5, thiab thaum nws hais rau tus kws tsim vaj tsev ua haujlwm tias nws yog ib qho kev siv encryption tsis tu ncua, lawv pib siv MD5 los ntawm MD5. Txij li thaum peb txiav txim siab los ua qhov project noob feem ntau ua tau, nws nco qab txhua yam thiab txiav txim siab los ua ib qho kev siv me me.

Sib ntaus sib tua

Megatron txoj kev sib ntaus sib tua yog 100% laser zog ntawm 3 watts. Qhov no yog txaus rau 2 feeb kom hlawv los ntawm txoj hlua uas tuav qhov hnyav, txhawm rau txhawm rau lub thoob dej yug ntses thiab dej nyab lub server nrog dej.

Peb tau tso ob peb lub tswv yim ntawm qhov project Github: uas yog, lub cim cim cim, los ntawm qhov uas ib tus tuaj yeem nkag siab tias qhov kev sim thiab kev sib ntaus sib tua tokens yog tsim los ntawm tib lub ntsuas ntsuas. Nyob rau hauv cov ntaub ntawv ntawm ib tug sib ntaus sib tua token, ntxiv rau lub txee tus nqi, ib tug ntsev kuj yog siv, uas yog yuav luag tag nyob rau hauv lub keeb kwm ntawm kev hloov no gist, nrog rau cov kev zam ntawm ob lub xeem cim.

Paub cov ntaub ntawv no, nws muaj peev xwm txheeb xyuas los ntawm 2 lub cim kawg ntawm cov ntsev thiab ua kom pom tias cov lej los ntawm Poob, hloov mus rau hexadecimal system, tau siv rau nws.

Tom qab ntawd cov neeg ua si yuav tsum tau ntes tus nqi txee (los ntawm kev txheeb xyuas qhov ntsuas token) thiab tsim kom muaj kev sib ntaus sib tua uas siv tus nqi txee tom ntej thiab ntsev xaiv ntawm cov kauj ruam dhau los.

Lub txee tsuas yog nce ntxiv nrog txhua qhov kev sim txhaj tshuaj thiab txhua 25 vib nas this. Peb tsis tau sau txog qhov no nyob qhov twg, nws yuav tsum yog qhov kev ua si me me surprise.

Captcha kev pabcuam kev sib tham

Hauv lub ntiaj teb kev ua si, qhov no yog tib lub captcha uas yuav tsum tau thauj khoom txhawm rau txhawm rau qhib lub kiv cua thiab qhib lub flipchart nrog cov lus qhia. Ib sab ntawm lub koob yees duab yog lub laptop nrog kev saib xyuas kev thauj khoom.

Yuav ua li cas lub backend ntawm kev ua si hacker txog kev rhuav tshem lub server tau tsim

kev pab cuam Kuv suav tias yuav tso saib dab tsi hauv kev saib xyuas raws li qhov kev thauj khoom tam sim no: kub thiab CPU Ntxuam. Metrics tau pauv mus rau timebase database thiab kos los ntawm grafana.

Yog hais tias nyob rau hauv lub xeem 5 vib nas this muaj ntau tshaj 50 thov kom tso saib lub captcha, ces lub load nce los ntawm ib tug taag + random tus naj npawb ntawm cov kauj ruam. Kev suav yog tias 100% load tuaj yeem ua tiav hauv ob feeb.

Qhov tseeb, muaj ntau qhov kev xav hauv qhov kev pabcuam tshaj li tau tshwm sim hauv qhov kev ua si zaum kawg: peb muab tso rau hauv lub monitor xws li tsuas yog kev sib hloov ntawm CPU Ntxuam pom.

Thaum pib ntawm qhov kev tshawb nrhiav lawv xav tawm Grafan nkag tau los ntawm Falcon lub vev xaib. Tab sis nws kuj muaj cov kev ntsuas springboot los ntawm daim ntawv qhia txog daim ntawv thov backend, uas peb tsis muaj sijhawm los tshem tawm, yog li peb txiav txim siab los thaiv kev nkag mus rau nws. Thiab yog li ntawd - txawm tias thaum pib ntawm qhov kev tshawb nrhiav, qee tus players twv tias daim ntawv thov tau sau rau hauv lub caij nplooj ntoo hlav thiab txawm khawb cov npe ntawm qee qhov kev pabcuam.

Hosting thiab data bus

Ib lub cuab yeej rau kev xa cov ntaub ntawv los ntawm lub backend mus rau qhov chaw, VPS server uas RabbitMQ tab tom khiav.

Lub backend thiab cov ntaub ntawv npav tau khaws cia rau peb VPS. Nws lub zog tau muab piv rau lub khoos phis tawj koj pom ntawm lub vijtsam: 2-core VPS nrog ob gigabytes ntawm RAM. Tus nqi tariff tau them rau cov peev txheej, txij li qhov siab tshaj plaws tau npaj rau ob peb hnub xwb - qhov no yog qhov peb cov neeg siv khoom uas npaj yuav thauj VPS rau lub sijhawm luv luv. Tom qab ntawd nws tau muab tawm tias cov khoom thauj tau siab tshaj qhov peb xav tau, thiab cov nqi se ruaj khov yuav tau txais txiaj ntsig ntau dua. Yog tias koj ua qhov quest, xaiv cov kab tariffs turbo.

Txhawm rau tiv thaiv tus neeg rau zaub mov los ntawm DDoSa, peb siv Cloudflare.

Nws tsim nyog hais tias VPS tiv thaiv txhua yam nrog kev hwm.

Arduino, uas yog lub luag haujlwm rau kev tswj cov relays, tau txais cov lus txib los ntawm tus txhais lus thiab tau ua haujlwm tiag tiag.

Qhov no yog ntau lub ntsiab lus ntawm tsab xov xwm tom ntej txog kho vajtse ib feem ntawm qhov project: lub backend tsuas yog xa cov lus thov kom tig rau ib qho tshwj xeeb relay. Nws thiaj li tshwm sim tias lub backend paub yuav luag tag nrho cov koom haum thiab kev thov los ntawm nws zoo li "tig rau lub koom haum no." Peb tau ua qhov no rau kev sim ua ntej ntawm lub xaib (peb tseem tsis tau sau tag nrho Arduino thiab relays), thaum kawg peb tau tso txhua yam zoo li ntawd.

Frontend

Peb sai sai tsim lub xaib ntawm tilde, nws siv ib hnub ua haujlwm thiab cawm peb 30 txhiab ntawm peb cov peev nyiaj.

Thaum pib, peb xav tias tsuas yog xa tawm lub xaib thiab ntxiv cov logic uas peb ploj lawm, tab sis peb tau khiav mus rau hauv cov ntsiab lus ntawm kev siv uas txwv tsis pub peb ua qhov no.

Peb tsis tau npaj ua txhaum daim ntawv tso cai, yog li muaj ob txoj kev xaiv: los siv txhua yam ntawm peb tus kheej lossis tiv tauj Tilda ncaj qha, tham txog qhov project thiab thov kev tso cai hloov cov cai.

Peb xaiv qhov kev xaiv thib ob thiab lawv tsis tsuas yog ntsib peb ib nrab, tab sis txawm muab peb lub xyoo ntawm kev lag luam pub dawb, uas peb ua tsaug rau lawv. Nws yog qhov txaus ntshai heev uas qhia lawv Sokol lub vev xaib tsim.

Yog li ntawd, peb txuas js logic rau pem hauv ntej rau kev xa cov lus thov rau cov khoom siv theem pib, thiab hloov me ntsis cov qauv ntawm cov nyees khawm rau qhib thiab tawm cov ntsiab lus game.

Tus Vev Xaib tsim

Keeb kwm ntawm kev tshawb nrhiav, uas tsim nyog rau ib tshooj cais.

Peb xav tsim tsis yog qhov chaw qub qub xwb, tab sis qhov kev qias neeg kiag li uas ua txhaum tag nrho cov cai ntawm kev tsim qauv. Nyob rau tib lub sijhawm, nws yog ib qho tseem ceeb uas yuav tsum muaj kev ntseeg siab: nws yuav tsum tsis txhob ua txhaum ENT zaj dab neeg, ua kom pom qhov ua tsis ncaj ntawm tus sau, thiab cov neeg ua si yuav tsum ntseeg tias qhov chaw zoo li no tuaj yeem muaj nyob thiab txawm coj cov neeg siv khoom. Thiab nws coj nws! Thaum qhov kev ua si tab tom mus, peb tau hu ob zaug los tsim cov vev xaib.

Thaum xub thawj kuv ua tus tsim kuv tus kheej, sim suav nrog ntau gifs thiab ci ntsa iab ntsiab. Tab sis kuv tus txiv tsim qauv ntawm 10 xyoo tau saib nws lub xub pwg nyom thiab tso tseg nws tias "zoo dhau lawm." Txhawm rau ua txhaum txoj cai tsim, koj yuav tsum paub lawv.

Yuav ua li cas lub backend ntawm kev ua si hacker txog kev rhuav tshem lub server tau tsim

Muaj ob peb xim sib xyaw ua ke uas ua rau muaj kev xav tsis thoob: ntsuab thiab liab ntawm qhov sib npaug ntawm kev nplua nuj, grey thiab liab, xiav ntxiv rau xim av. Thaum kawg, peb tau txiav txim siab ntawm kev sib xyaw ntawm liab thiab ntsuab raws li cov xim hauv paus, ntxiv gifs nrog tus miv thiab xaiv 3-4 duab ntawm Sokolov nws tus kheej los ntawm daim duab Tshuag. Kuv tsuas muaj ob peb qhov yuav tsum tau ua: ib tug txiv neej hnub nyoog nruab nrab, hnav khaub ncaws tsis haum ob peb qhov loj heev thiab hauv "kev yees duab yees duab tua" pose. Rau qhov kev xeem, lawv tau qhia rau cov phooj ywg thiab nug "koj nyiam nws li cas?"

Thaum lub sij hawm tsim kev tsim kho, kuv tus txiv yuav tsum mus pw txhua ib nrab teev; lub nyoob hoom qav taub pib ya. Pasha sim qhib tus tsim tawm console rau feem ntau ntawm lub vijtsam thaum nws tab tom ua tiav lub hauv ntej - los tiv thaiv nws ob lub qhov muag.

Cov khoom siv tiag tiag

Cov kiv cua thiab lub teeb tau teeb tsa los ntawm cov khoom siv hluav taws xob hauv lub xeev kom lawv tsis tuaj yeem qhib lub zog tam sim ntawd - kom lub zog yuav nce ntxiv rau kev saib xyuas.

Tab sis peb yuav tham txog qhov no hauv tsab xov xwm tom ntej, hais txog cov khoom siv kho vajtse ntawm qhov kev ua si thiab kev tsim kho ntawm lub xaib.

Nyob zoo!

Lwm cov lus hais txog qhov kev tshawb nrhiav los rhuav tshem lub server

Yuav ua li cas lub backend ntawm kev ua si hacker txog kev rhuav tshem lub server tau tsim

Tau qhov twg los: www.hab.com

Ntxiv ib saib