Cage Remote File Access System

Armanca pergalê

Piştgiriya gihîştina dûr a pelên li ser komputerên li ser torê. Pergala "virtual" piştgirî dide hemî operasyonên pelê yên bingehîn (çêkirin, jêbirin, xwendin, nivîsandin, hwd.) bi danûstandina danûstendinan (peyam) bi karanîna protokola TCP-ê.

Serîlêdanên

Karbidestiya pergalê di rewşên jêrîn de bandor e:

  • di serîlêdanên xwemalî yên ji bo cîhazên mobîl û pêvekirî (telefonên zirav, pergalên kontrolê yên li ser panelê, hwd.) ku hewcedariya wan bi gihîştina bilez a pelên li ser pêşkêşkerên dûr heye li hember qutkirinên demkî yên muhtemel ên di ragihandinê de (bi çûna offline);
  • di DBMS-ên barkirî de, ger pêvajoya pirsê li ser hin serveran were kirin, û hilanîna daneyê li ser yên din jî were kirin;
  • di torên pargîdanî yên belavkirî de ji bo berhevkirin û hilberandina agahdariyan, ku pêdivî bi danûstandina daneya bilez, zêdebûn û pêbaweriyê heye;
  • di pergalên tevlihev ên bi mîmariya mîkroxizmetê de, ku dereng di pevguhertina agahdariya di navbera modulan de krîtîk in.

avahiya

Sîstema qefesê (di pergala xebitandinê de pêkanînek heye - guhertoya beta di Python 3.7 de) Windows(b) ji du beşên sereke pêk tê:

  1. Cageserver - bernameyek servera pelê (pakêtek fonksiyonan) ku li ser komputerên li ser torê yên ku pelên wê gihîştina dûr hewce dike dimeşîne;
  2. класс Qefes bi pirtûkxaneyek rêbazan ji bo nermalava xerîdar, kodkirina danûstendina bi serveran re hêsan dike.

Bikaranîna pergalê li ser milê xerîdar

Rêbazên çîna Cage li şûna operasyonên pergala pelê ya gelemperî, "rûtîn" digire: afirandin, vekirin, girtin, jêbirin pelan, her weha xwendin / nivîsandina daneyan di forma binary de (cih û mezinahiya daneyan destnîşan dike). Bi têgînî, van rêbazan nêzî fonksiyonên pelê yên zimanê C-yê ne, ku vekirina / girtina pelan "li ser kanalên" têketin / derketinê têne kirin.

Bi gotinek din, bernamesaz bi rêbazên tiştên "pelê" (class _io li Python), lê bi rêbazên çîna Cage.

Dema ku mînakek tiştek Cage tê afirandin, ew pêwendiyek destpêkê bi serverek (an çend serveran) re saz dike, ji hêla Nasnameya Xerîdar ve tê destûr kirin, û ji bo hemî karûbarên pelê bi jimareyek portê ya diyarkirî ve erêkirinê distîne. Dema ku tiştek Cage tê jêbirin, ew rêwerzê dide ku danûstandinê rawestîne û pelan bigire. Qedandina pêwendiyê jî dikare ji hêla servers bixwe ve were destpêkirin.

Pergal performansa xwendinê/nivîsandinê bi tamponkirina perçeyên pelê yên ku pir caran têne bikar anîn yên bernameyên xerîdar di cache RAM (buffer) de çêtir dike.
Nermalava xerîdar dikare her hejmarek tiştên Cage bi mîhengên cihêreng bikar bîne (mezinahiya bîranîna tampon, mezinahiya blokê dema ku bi serverê re diguhezîne, hwd.).

Tiştek yek Cage dikare bi gelek pelan re li ser serverên pirjimar re têkilî daynin. Parametreyên danûstendinê (navnîşana IP an servera DNS, porta sereke ji bo destûrnameyê, rê û navê pelê) dema ku objektê diafirînin têne diyar kirin.

Ji ber ku her tişt Cage dikare di heman demê de bi gelek pelan re bixebite, cîhê bîranîna hevbeş ji bo tamponkirinê tê bikar anîn. Mezinahiya cache - hejmara rûpelan û mezinahiya wan, dema ku hêmanek Cage diafirîne bi dînamîk tête danîn. Bo nimûne, cacheya 1 GB 1000 rûpel e her yek 1 MB, an jî 10 hezar rûpelên her yek 100 KB, an jî 1 mîlyon rûpelên her yekê 1 KB. Hilbijartina mezinahî û hejmara rûpelan ji bo her dozek serîlêdanê karek taybetî ye.

Hûn dikarin di heman demê de gelek tiştên Cage bikar bînin da ku mîhengên bîranîna tamponê yên cihêreng li gorî ka çawa di pelên cûda de têne gihîştin agahdarî diyar bikin. Wekî bingehîn, algorîtmaya tamponê ya herî hêsan tê bikar anîn: piştî ku mîqdarek bîranînê qediya, rûpelên nû yên kevn li gorî prensîba teqawidbûnê bi hindiktirîn hejmarek gihîştinan vediguhezînin. Buffering bi taybetî di rewşa nehevseng (di wateya îstatîstîkî de) gihandina hevbeş, yekem, pelên cihêreng, û ya duyemîn jî, ji perçeyên her pelê de bi bandor e.

Dersa Cage ne tenê ji hêla navnîşanên daneyê ve I/O piştgirî dike (hewl û dirêjahiya rêzê destnîşan dike, "li şûna" operasyonên pergala pelan), lê di heman demê de di astek jêrîn, "fizîkî" de - ji hêla hejmarên rûpelan ve di bîranîna tampon de.

Fonksiyona orîjînal ji bo tiştên Cage tê piştgirî kirin "xewa zivistanê" ("xew") - ew dikarin "hilweşînin" (mînak, di bûyera windabûna pêwendiya bi pêşkêşkeran re, an dema ku serîlêdan raweste, û hwd.) di pelek dumpek herêmî ya li ser milê xerîdar de û zû ji nûve werin vegerandin. ev pel (piştî ku têkilî ji nû ve dest pê kir, gava ku hûn serîlêdanê ji nû ve bidin destpêkirin). Ev gengaz dike ku dema ku bernameya xerîdar çalak bike piştî ku bi demkî "offline" bikeve seyrûseferê bi girîngî kêm bike, ji ber ku perçeyên pelê yên ku pir caran têne bikar anîn dê berê di cache de bin.

Cage bi qasî 3600 rêzikên kodê ye.

Prensîbên avakirina serverê

Pêşkêşkerên pelê yên Cageserver dikarin bi hejmarek benderên keyfî werin xebitandin, yek ji wan ("sereke") tenê ji bo destûrdayîna hemî xerîdar tê bikar anîn, yên mayî ji bo danûstendina daneyê têne bikar anîn. Bernameya servera Cage tenê Python hewce dike. Di paralel de, komputer bi servera pelê dikare karekî din bike.

Pêşkêşkar di destpêkê de wekî berhevoka du pêvajoyên sereke dest pê dike:

  1. "Têkilî" - pêvajoyek ji bo pêkanîna operasyonên sazkirina danûstendinê bi xerîdaran re û bidawîkirina wê bi pêşengiya serverê;
  2. "Operasyon" - pêvajoyek ji bo pêkanîna peywiran (operasyonên) xerîdaran ku bi pelan re bixebitin, û her weha ji bo girtina danişînên ragihandinê yên li ser bingeha fermanên xerîdar.

Her du pêvajo ne hevdemkirî ne û wekî xelekên bêdawî yên wergirtin û şandina peyaman li ser bingeha rêzikên pirpêvajoyê, tiştên proxy, kilît û soketan têne organîze kirin.
Pêvajoya Girêdanê ji bo her xerîdar portek veqetîne ku daneyan werbigire û veguhezîne. Dema ku server dest pê dike hejmara portan tê danîn. Nexşeya di navbera port û xerîdaran de di bîranîna proxy-ya parvekirî de tê hilanîn.

Pêvajoya Operasyonên parvekirina çavkaniyên pelan piştgirî dike da ku gelek xerîdarên cûda dikarin parve bikin (hema-paralel, ji ber ku gihîştin ji hêla qefleyan ve tê kontrol kirin) heke dema ku ew di destpêkê de ji hêla muwekîlê "yekemîn" ve hatî vekirin destûr ji yek pelê re were xwendin.

Proseskirina fermanan ji bo afirandin/jêbirin/vekirin/girtina pelan li ser server di pêvajoya "Operasyonê" de bixwe tê kirin, bi hişkî bi rêzdarî bi karanîna jêrpergala pelan a pergala xebitandinê ya serverê.

Ji bo ku bi gelemperî xwendin / nivîsandinê zûtir bikin, ev operasyon di mijarên ku ji hêla pêvajoya "Operasyona" ve têne çêkirin têne kirin. Hejmara mijaran bi gelemperî bi hejmara pelên vekirî re wekhev e. Karên xwendin/nivîsandinê yên ji xerîdaran di rêza giştî de têne şandin û yekem mijara belaş peywirê ji serê xwe digire. Mantiqa taybetî dihêle hûn di RAM-a serverê de operasyonên ji nû ve nivîsandina daneyan ji holê rakin.

Pêvajoya Operasyonan çalakiya xerîdar dişopîne û xizmetkirina wan an li ser fermanên wan an jî dema ku dema bêçalakîtiyê derbas dibe rawestîne.

Ji bo ku pêbaweriyê misoger bike, Cageserver têketinên hemî danûstendinan digire. Yek têketinek gelemperî kopiyên peyamên ji xerîdar bi peywirên çêkirina / vekirina / binavkirin / jêbirina pelan vedihewîne. Ji bo her pelê xebatê têketinek veqetandî tê çêkirin, ku tê de kopiyên peyamên bi peywirên xwendin û nivîsandina daneyan di vê pelê xebatê de têne tomar kirin, û her weha rêzikên daneyên nivîskî (nû) û rêzikên daneyên ku di dema nivîsandinê de hatine hilweşandin. Daneyên nû "li ser" yên berê). ).

Van têketin îmkanê peyda dikin ku hem guheztinên nû li paşkêşan vegerînin û hem jî naveroka heyî paşde vegerînin xalek berê.

Cageserver bi qasî 3100 rêzikên kodê ye.

Cage Remote File Access System

Bernameya servera pelê ya Cageserver dest pê dike

Dema ku dest pê dike, di diyalogê de hûn hewce ne ku diyar bikin:
- porta sereke ji bo destûrnameyê;
- Hejmara benderan ji bo danûstendina danûstendinan bi xerîdarên destûrdar re (ji 1 an jî zêdetir, hewza hejmaran ji ya li kêleka jimareya porta sereke dest pê dike).

Bikaranîna Dersa Cage

sinif qefes.Qefes( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, pay=0, awake=False, cache_file="" )

Tiştên ji vê polê têne afirandin ku bi pêşkêşkerên pelan re têkildar in û bîranîna tampon dihewîne.

Parametreyên

  • cage_name(st) - Navê şertî yê tiştê, ku ji bo naskirina xerîdaran li aliyê serverê tê bikar anîn
  • pagesize(int) - mezinahiya rûpelek bîranîna tampon (bi byte)
  • numages(int) - hejmara rûpelên bîra tampon
  • maxstrlen(int) - Di operasiyonên nivîsandin û xwendinê de dirêjahiya herî zêde ya rêzika baytê
  • server_ip(dikt) - ferhengek bi navnîşanên yên hatine bikaranîn pêşkêşkerên, ku mifte navê şertî yê serverê ye (nasnameya serverê di hundurê sepanê de), û nirx jî rêzek bi navnîşanê ye: "ip address:port" an "DNS:port" (nexşeya navan û navnîşanên rastîn demkî ye û dikare were guhertin)
  • payin(int) - dema ku benderan werdigire dema li benda bersivek ji serverê ye (di çirkeyan de)
  • hişyar(boolean) - ala ku tişt çawa tê afirandin (şaş - heke tiştek nû were afirandin, rast - heke tiştek ji yekî berê "hilweşiyayî" hatî çêkirin - bi karanîna operasyona "hibernation", xelet ji hêla xwerû ve)
  • cache_file(st) - navê pelê ji bo hibernation

Rêbaz

Qefes.file_create( server, rê ) - pelek nû çêbikin

Qefes.file_rename( server, rê, navê_new ) - navê pelê biguherîne

Qefes.file_rake( server, rê) - pelek jêbirin

Qefes.vekirî( server, rê, mod ) - pelê veke

Vedigere fchannel hejmara kanalê. Parametre dijî - ev moda vekirina pelê ye: "wm" - taybetî (xwendin/nivîsandin), "rs" - tenê-xwendin, û tenê ji bo xwendinê ji hêla xerîdarên din ve têne parve kirin, "ws" - xwendin/nivîsandin, û tenê ji bo xwendinê tê parve kirin mişteriyên din.

Qefes.nêzîkî (fchannel) - pelê bigire

Qefes.nivîsîn (fchannel, destpêk, dane ) - li pelek rêzek byte binivîse

Qefes.xwendin (fchannel, destpêk, len_data ) - ji pelê rêzek byte bixwînin

Qefes.put_pages ( fchannel ) - Hemî rûpelên kanala diyarkirî yên ku hatine guheztin ji tamponê ber bi serverê ve "dixe". Ew di wan xalên algorîtmê de tê bikar anîn dema ku hûn hewce ne ku pê ewle bin ku hemî operasyonên li ser kanalê bi fîzîkî di pelek li ser serverê de têne tomar kirin.

Qefes.push_all () - ji bo nimûneyek çîna Cage ya ku hatî guheztin, hemî rûpelên hemî kanalan ji tamponê ber bi serverê ve "dixe". Dema ku hûn hewce ne ku pê ewle bin ku hemî operasyonên li ser hemî kanalan li ser serverê têne tomar kirin tê bikar anîn.

Source: www.habr.com

Ji bo malperên bi parastina DDoS, serverên VPS VDS mêvandariya pêbawer bikirin 🔥 Hostinga malperê ya pêbawer bi parastina DDoS, serverên VPS VDS bikirin | ProHoster