Fianarana sy fiarovana ara-pinoana ara-pinoana sy fiarovana amin'ny alàlan'ny ohatra

DaisySarin'ny mombamomba azy

ny Daisy

Fianarana sy fiarovana ara-pinoana ara-pinoana sy fiarovana amin'ny alàlan'ny ohatra Fanabeazana fahatelo Charlotte Harper 3 Jolay 2024 Nohavaozina / niova fo 3 jona 2025 Forword: Ny fiheverana ny fiarovana ny tranokala ho an'ny Internet dia ampahany manan-danja amin'ny drafitry ny mpamorona sy ny fanatanterahana tranonkala raha ny prototype iray izay azo itokisana, maharitra ary ilaina amin'ny tanjona azo ampiharina. Ny fanamboarana ny dom (antontan-taratasy momba ny antontan-taratasy), miaraka amin'ny fampiharana ny HTML, JavaScript, ary ny rindrambaiko Backend ary ny fampiasa amin'ny Internet dia manome fahafaham-po sy fampiasa amin'ny alàlan'ny fanehoana faneva sy ny fanetren-tena ary ny fanehoana ny fampiasana sy ny serivisy sy ny serivisy manan-danja izay mahasarika sy ny serivisy izay mahasarika sy ny serivisy rehetra Ho an'ny salanisa salanisa, ny mpampiasa farany dia mitady hamono fotoana na hanao zavatra atao amin'ny Internet, mazàna amin'ny fitaovana finday mampihetsi-po. Ny ankamaroan'ny olona dia tsy hahafantatra hoe aiza no hanombohana azy ireo rehefa te-hanorina tranokala avy amin'ny tranokala izy ireo ary hanangana ny fitaovana iray amin'ny alàlan'ny fanindriana ny vola ary ny fandoavana ny rindrambaiko dia ny olona vitsy dia naniry ny hampiasana azy ireo fa ny olona dia te-hampiasa azy ireo ny fetrany. fandanjalanjana. Raha manana minitra vitsivitsy ianao hamaky ity boky ity ary hianarako izay tiako hampianarana anao, na hiresaka amiko manokana momba ny tanjonao ary manorata ny rindrambaiko hianaranao, dia ny tranokala mahery sy manan-danja, izay misy anao rehetra ary manao izay tianao sy ny zavatra tadiavinao. Momba ahy: Mpanamboatra rindrambaiko misy traikefa be dia be ao amin'ny C / C ++, Java, Python, HTML, CSS ary JavaScript. Manorina tranonkala te-hampiasaina aho, te-hitsidika, ary mbola zatra ny mampiasa fotsiny mba hianarana fotsiny, hanalefaka sy hamono fotoana, ary ny tena zava-dehibe, dia mivarotra rindrambaiko aho. Raha manana hevitra momba ny tena tianao ny tranokala hijery sy hiasa ianao, dia vonona ny hanohana ahy ny vola, ary hanangana anao ny YouTube, Tiktok, Twitter, Google, Google, na ny Google Security, na i Google ihany no afaka miditra. Raha tokony hiezaka ny hivarotra anao aho, dia miezaka ny hividy anao aho: Te-hiresaka anao amin'ny fananganana fampiharana (tranonkala) miaraka amin'ny fampahalalana efa misy ianao, ary mampianatra anao ny mpikarakara rindrambaiko mahaleo tena, izay mitarika asa mahomby amin'ny sehatra rehetra tadiavinao. Ary avelao ho mazava aho, tsy ho takatry ny saina ny fampianarana homeko anao. Azonao atao ny mandeha mianatra ary mianara an'izany amin'ny fanabeazana ofisialy, na am-pianarana na mamaky an'io boky io aza, fenoy ny andraikinao, ary esory amin'ny fianaranao, fa tsy hametraka anao amin'ny seza mafana aho ary hangataka anao hamita andraikitra. Tsy mpampianatra anao aho, afaka mieritreritra ahy toy ny namana te hitari-dalana anao amin'ny asa entin'ny fahombiazanao manokana. Ary tsy amidy anao ny fahombiazana, mila mividy izany amin'ny fotoananao ianao. Ny fianarana ny code dia manana curve fianarana mideza ary tsy mora na oviana na oviana na oviana na oviana. Mila miasa mafy toa anao ianao ary afaka manohy manandrana sy tsy mahomby ary manandrana indray na dia diso fanantenana aza ianao mba hianaranao sy hanangana ny tenanao. Izany no fototry ny kaody. Ny kaody dia tarihin'ny mpamorona iray izay natao hanomezana ireo hafatra diso momba ny programmer, ary ireo dia hampianatra anao ny fomba code, na dia mandika fotsiny ny hadisoana ao anaty motera fikarohana ianao ary mamaky ny ohatra fikarohana hafa. Ary tsy maintsy milaza aho fa tsy mila manankarena be loatra ianao, maranitra, mahomby, na antsipirihany na fandaminana na fandaminana hanamboarana fampiharana. Ny solosaina dia mikarakara an'io fikambanana io ho anao. Mila maharitra fotsiny amin'ny fitsapana sy ny hadisoana ianao, tariho ny fifantohana ary hiasa mafy amin'izay ataonao, ary hanana asa mahomby ianao amin'ny fanatanterahana izay ataonao. Iza aho: Tsapako fa ny fizarana farany dia ny fianarana sy ny fomba hianaranao amin'ny fomba iray amin'ity boky ity. Iza marina aho? Izany no fanontaniana sarotra sarotra. Tsy hadino ny momba ahy, satria mijaly amin'ny toe-pahasalamana aho, izay afaka manasarotra ahy na dia ny code na ny fanoratana io boky io indraindray, raha manatrika olana amin'ny fiaraha-monina sy ny maha-izy azy ny mampiditra ny tenako. Raha fintinina, raha mamaky ity boky ity ianao, dia nentinao an-trano satria nandalo azy ianao ary nieritreritra fa ilaina izany, na raha vao mamaky izao ianao, dia olona toa azy izay te hahita anao hahomby amin'ny zavatra rehetra ataonao. Izaho diaNy injeniera, mpamorona rindrambaiko, ary mpianatra, ary manoratra ity boky ity ho an'ny mpianatra hafa aho izay te hanamora ny fiainany amin'ny alàlan'ny paositra iray izay mety amin'ny fampiharana lehibe, mahasoa, ary ny fandraisana anjara ary ny fandraisana anjara izay afaka mitondra fahombiazana na fiasa mahomby. Raha ny marina, izao no ataoko: Manamboatra fampiharana aho mba hanampiana ny tenako sy ny olon-kafa hahomby. Izaho koa dia mpanoratra ihany koa, na dia izao no boky voalohany nataoko mba hamita ny portfolio-ko ho antontan-taratasy mahasoa, ary mpanakanto ihany koa aho. Ekeko izany aminao, dia manana endrika hafahafa aho. Tsy lavorary aho, efa nihazakazaka tamin'ny Lalàna aho na dia nitarika ahy handao oniversite sy oniversite ary avelao ny fanjakana mba hiezaka hanao anarana ho an'ny tenako amin'ny fahombiazana bebe kokoa. Vehivavy aho amin'ny fahaterahana, manao akanjo makiazy aho, maka sary ny tenako, mitafy akanjo sy akanjo hafa, ary tsy mahatsiaro tena ho vehivavy aho. Nanana olana tamin'ny olon-kafa aho taloha izay nitarika ady amin'ny fanoratana sy fanorenako webapps, ary miala tsiny aho fa tsy afaka nahazo ity boky ity tamin'ny tananao haingana: Nila izany ianao. Te-hamaky sy hanoratra fehezan-dalàna toa ny ahy ianao ary miasa toy ny ahy ary manao toy izany ihany fa na dia afaka mividy io boky io aza ianao dia tsy afaka mividy vola fotsiny, fa manana ny loharano ilainao amin'ny fiainanao ianao. Nanana olana isan-karazany tamin'ny fitomboana ny fianakaviana, ny toe-pahasalamana, ny dokotera, ny haino aman-jery ary ny lalàna, ary ny fitsipiko ary ny fitsipiko dia maneho ny tolona izay misy ny maha-vehivavy sy ny vehivavy. Na izany aza, ity boky ity dia zavatra tena tiako be, ny zanako, ny portfolio-ko, ary ny fivelomako, ka mankasitraka ny fandinihanao aho rehefa maka ilay lahatsoratra ianao ary manindrona azy io mba hianarana avy amiko. Aza hadino fa tsy lavorary aho, ity boky ity dia hanana hadisoana, fanitsiana, ary fanontana vaovao, ary mila mieritreritra ny atidohanao lojika araka izay tratranao ianao mba hananana traikefa mahomby amin'ny fanoratanao. Fantaro ihany koa fa ny tiako holazaina aminao na dia miatrika fanamby aza ianao rehefa manoratra. Saintsaino izao: Rehefa afaka manofa rafitra informatika ianao mba hanao izay azonao eritreretina ao amin'ny habaka nomerika, dia asaina ny fampahalalana rehetra iainanao, ary ho fantatrao fa hiatrika zava-tsarotra ianao ary hahita olana amin'ny fampahalalana ataonao sy ny famoahana azy. Lazaiko aminao izany satria sendra zava-tsarotra mitovy aho. Ampiasao ity boky ity amin'ny risika anao manokana, miara-miasa amin'ny vondrom-piarahamoninao sy vondrom-piarahamoninao izay manorina rindrambaiko ao anaty toerana azo antoka, ary tsy maintsy hahomby amin'ny fomba ratsy ianao, ary tsy hahomby amin'ny fomba ratsy rehetra noho ny fombafomba eran-tsotra Asa, Internet. Mety tsy ho fantatrao tsara hoe iza aho, fa ny teny vitsivitsy monja, fa mamporisika anao aho hamaky, hahalala ahy ianao rehefa manohy mamaky sy manohy ny tetikasanao hamita ny asanao manokana hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao. Tsy hisy ny enti-mody miaraka amin'ity boky ity, raha mbola tsy manendry anao ny mpampianatra na mpampianatra anao, fa tena mamporisika anao aho hanorina portfolio an'ny tetikasa momba ny tenanao rehefa mamaky, ary koa ny tetik'asa Capstone mampiseho ny fomba hianaranao. Ny tetik'asa CAPSTONE no fototry ny ankamaroan'ny zavatra novakianao tao amin'ity boky ity, satria ny kaody sy ny toro-hevitra iray izay nanampy ahy dia afaka nanoritra sy nanoritra azy ireo ny namanao na ny fianakavianao, amin'ny Internet, amin'ny Internet, na amin'ny vaovao. Inona ny boky hoe: Ity boky ity dia fampianarana amin'ny alàlan'ny ohatra. Azonao atao ny mahita ny kaody eto, torolàlana momba ny fomba hianaranao code, ny fampahalalana momba ny code debugging sy ny fanamboarana ny fomba fiasa, ny famerenanao ny kaody, ary ny maha-zava-dehibe anao, ny maha-zava-dehibe azy, ary ny fomba hanehoana ny tenanao, ny sarinao ary ny sarinao ary koa ny rindrambaiko izay haorinao amin'ny hazavana tsara indrindra indrindra mba ho tsara tarehy indrindra araka izay azo atao amin'ny mpampiasa farany anao, ny mpitsidika ny tranokalanao. Ao amin'ity boky ity, dia hasehoko ohatra maromaro momba ny famolavolana rindrambaiko misy fifantohana amin'ny tranonkala amin'ny sehatra ho sehatra ary koa ny fiarovana. Hanomboka ny fianarana isikahafanana
Fianarana sy fiarovana ara-pinoana ara-pinoana sy fiarovana amin'ny alàlan'ny ohatra

Fianarana sy fiarovana ara-pinoana ara-pinoana sy fiarovana amin'ny alàlan'ny ohatra Fanabeazana fahatelo Charlotte Harper 3 Jolay 2024 Nohavaozina / niova fo 3 jona 2025

Forword:

Ny fiheverana ny fiarovana ny tranokala ho an'ny Internet dia ampahany manan-danja amin'ny drafitry ny mpamorona sy ny fanatanterahana tranonkala raha ny prototype iray izay azo itokisana, maharitra ary ilaina amin'ny tanjona azo ampiharina. Ny fanamboarana ny dom (antontan-taratasy momba ny antontan-taratasy), miaraka amin'ny fampiharana ny HTML, JavaScript, ary ny rindrambaiko Backend ary ny fampiasa amin'ny Internet dia manome fahafaham-po sy fampiasa amin'ny alàlan'ny fanehoana faneva sy ny fanetren-tena ary ny fanehoana ny fampiasana sy ny serivisy sy ny serivisy manan-danja izay mahasarika sy ny serivisy izay mahasarika sy ny serivisy rehetra Ho an'ny salanisa salanisa, ny mpampiasa farany dia mitady hamono fotoana na hanao zavatra atao amin'ny Internet, mazàna amin'ny fitaovana finday mampihetsi-po. Ny ankamaroan'ny olona dia tsy hahafantatra hoe aiza no hanombohana azy ireo rehefa te-hanorina tranokala avy amin'ny tranokala izy ireo ary hanangana ny fitaovana iray amin'ny alàlan'ny fanindriana ny vola ary ny fandoavana ny rindrambaiko dia ny olona vitsy dia naniry ny hampiasana azy ireo fa ny olona dia te-hampiasa azy ireo ny fetrany. fandanjalanjana. Raha manana minitra vitsivitsy ianao hamaky ity boky ity ary hianarako izay tiako hampianarana anao, na hiresaka amiko manokana momba ny tanjonao ary manorata ny rindrambaiko hianaranao, dia ny tranokala mahery sy manan-danja, izay misy anao rehetra ary manao izay tianao sy ny zavatra tadiavinao.

Momba ahy: Mpanamboatra rindrambaiko misy traikefa be dia be ao amin'ny C / C ++, Java, Python, HTML, CSS ary JavaScript. Manorina tranonkala te-hampiasaina aho, te-hitsidika, ary mbola zatra ny mampiasa fotsiny mba hianarana fotsiny, hanalefaka sy hamono fotoana, ary ny tena zava-dehibe, dia mivarotra rindrambaiko aho. Raha manana hevitra momba ny tena tianao ny tranokala hijery sy hiasa ianao, dia vonona ny hanohana ahy ny vola, ary hanangana anao ny YouTube, Tiktok, Twitter, Google, Google, na ny Google Security, na i Google ihany no afaka miditra. Raha tokony hiezaka ny hivarotra anao aho, dia miezaka ny hividy anao aho: Te-hiresaka anao amin'ny fananganana fampiharana (tranonkala) miaraka amin'ny fampahalalana efa misy ianao, ary mampianatra anao ny mpikarakara rindrambaiko mahaleo tena, izay mitarika asa mahomby amin'ny sehatra rehetra tadiavinao. Ary avelao ho mazava aho, tsy ho takatry ny saina ny fampianarana homeko anao. Azonao atao ny mandeha mianatra ary mianara an'izany amin'ny fanabeazana ofisialy, na am-pianarana na mamaky an'io boky io aza, fenoy ny andraikinao, ary esory amin'ny fianaranao, fa tsy hametraka anao amin'ny seza mafana aho ary hangataka anao hamita andraikitra. Tsy mpampianatra anao aho, afaka mieritreritra ahy toy ny namana te hitari-dalana anao amin'ny asa entin'ny fahombiazanao manokana. Ary tsy amidy anao ny fahombiazana, mila mividy izany amin'ny fotoananao ianao. Ny fianarana ny code dia manana curve fianarana mideza ary tsy mora na oviana na oviana na oviana na oviana. Mila miasa mafy toa anao ianao ary afaka manohy manandrana sy tsy mahomby ary manandrana indray na dia diso fanantenana aza ianao mba hianaranao sy hanangana ny tenanao. Izany no fototry ny kaody. Ny kaody dia tarihin'ny mpamorona iray izay natao hanomezana ireo hafatra diso momba ny programmer, ary ireo dia hampianatra anao ny fomba code, na dia mandika fotsiny ny hadisoana ao anaty motera fikarohana ianao ary mamaky ny ohatra fikarohana hafa. Ary tsy maintsy milaza aho fa tsy mila manankarena be loatra ianao, maranitra, mahomby, na antsipirihany na fandaminana na fandaminana hanamboarana fampiharana. Ny solosaina dia mikarakara an'io fikambanana io ho anao. Mila maharitra fotsiny amin'ny fitsapana sy ny hadisoana ianao, tariho ny fifantohana ary hiasa mafy amin'izay ataonao, ary hanana asa mahomby ianao amin'ny fanatanterahana izay ataonao.

Iza aho: Tsapako fa ny fizarana farany dia ny fianarana sy ny fomba hianaranao amin'ny fomba iray amin'ity boky ity. Iza marina aho? Izany no fanontaniana sarotra sarotra. Tsy hadino ny momba ahy, satria mijaly amin'ny toe-pahasalamana aho, izay afaka manasarotra ahy na dia ny code na ny fanoratana io boky io indraindray, raha manatrika olana amin'ny fiaraha-monina sy ny maha-izy azy ny mampiditra ny tenako. Raha fintinina, raha mamaky ity boky ity ianao, dia nentinao an-trano satria nandalo azy ianao ary nieritreritra fa ilaina izany, na raha vao mamaky izao ianao, dia olona toa azy izay te hahita anao hahomby amin'ny zavatra rehetra ataonao. Injeniera aho, mpamorona rindrambaiko, ary mpianatra, ary manoratra ity boky ity ho an'ny mpianatra hafa aho izay maniry ny hanamora ny fiainany amin'ny alàlan'ny piozila iray izay mety amin'ny fampiharana sy ny fampiasa ary ny fiasa izay mety hahasarika ny fahombiazana, izay mety handroaka ny asa. Raha ny marina, izao no ataoko: Manamboatra fampiharana aho mba hanampiana ny tenako sy ny olon-kafa hahomby. Izaho koa dia mpanoratra ihany koa, na dia izao no boky voalohany nataoko mba hamita ny portfolio-ko ho antontan-taratasy mahasoa, ary mpanakanto ihany koa aho. Ekeko izany aminao, dia manana endrika hafahafa aho. Tsy lavorary aho, efa nihazakazaka tamin'ny Lalàna aho na dia nitarika ahy handao oniversite sy oniversite ary avelao ny fanjakana mba hiezaka hanao anarana ho an'ny tenako amin'ny fahombiazana bebe kokoa. Vehivavy aho amin'ny fahaterahana, manao akanjo makiazy aho, maka sary ny tenako, mitafy akanjo sy akanjo hafa, ary tsy mahatsiaro tena ho vehivavy aho. Nanana olana tamin'ny olon-kafa aho taloha izay nitarika ady amin'ny fanoratana sy fanorenako webapps, ary miala tsiny aho fa tsy afaka nahazo ity boky ity tamin'ny tananao haingana: Nila izany ianao. Te-hamaky sy hanoratra fehezan-dalàna toa ny ahy ianao ary miasa toy ny ahy ary manao toy izany ihany fa na dia afaka mividy io boky io aza ianao dia tsy afaka mividy vola fotsiny, fa manana ny loharano ilainao amin'ny fiainanao ianao. Nanana olana isan-karazany tamin'ny fitomboana ny fianakaviana, ny toe-pahasalamana, ny dokotera, ny haino aman-jery ary ny lalàna, ary ny fitsipiko ary ny fitsipiko dia maneho ny tolona izay misy ny maha-vehivavy sy ny vehivavy. Na izany aza, ity boky ity dia zavatra tena tiako be, ny zanako, ny portfolio-ko, ary ny fivelomako, ka mankasitraka ny fandinihanao aho rehefa maka ilay lahatsoratra ianao ary manindrona azy io mba hianarana avy amiko. Aza hadino fa tsy lavorary aho, ity boky ity dia hanana hadisoana, fanitsiana, ary fanontana vaovao, ary mila mieritreritra ny atidohanao lojika araka izay tratranao ianao mba hananana traikefa mahomby amin'ny fanoratanao. Fantaro ihany koa fa ny tiako holazaina aminao na dia miatrika fanamby aza ianao rehefa manoratra. Saintsaino izao: Rehefa afaka manofa rafitra informatika ianao mba hanao izay azonao eritreretina ao amin'ny habaka nomerika, dia asaina ny fampahalalana rehetra iainanao, ary ho fantatrao fa hiatrika zava-tsarotra ianao ary hahita olana amin'ny fampahalalana ataonao sy ny famoahana azy. Lazaiko aminao izany satria sendra zava-tsarotra mitovy aho. Ampiasao ity boky ity amin'ny risika anao manokana, miara-miasa amin'ny vondrom-piarahamoninao sy vondrom-piarahamoninao izay manorina rindrambaiko ao anaty toerana azo antoka, ary tsy maintsy hahomby amin'ny fomba ratsy ianao, ary tsy hahomby amin'ny fomba ratsy rehetra noho ny fombafomba eran-tsotra Asa, Internet. Mety tsy ho fantatrao tsara hoe iza aho, fa ny teny vitsivitsy monja, fa mamporisika anao aho hamaky, hahalala ahy ianao rehefa manohy mamaky sy manohy ny tetikasanao hamita ny asanao manokana hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao manokana mba hamita ny asanao. Tsy hisy ny enti-mody miaraka amin'ity boky ity, raha mbola tsy manendry anao ny mpampianatra na mpampianatra anao, fa tena mamporisika anao aho hanorina portfolio an'ny tetikasa momba ny tenanao rehefa mamaky, ary koa ny tetik'asa Capstone mampiseho ny fomba hianaranao. Ny tetik'asa CAPSTONE no fototry ny ankamaroan'ny zavatra novakianao tao amin'ity boky ity, satria ny kaody sy ny toro-hevitra iray izay nanampy ahy dia afaka nanoritra sy nanoritra azy ireo ny namanao na ny fianakavianao, amin'ny Internet, amin'ny Internet, na amin'ny vaovao.

Inona ny boky hoe: Ity boky ity dia fampianarana amin'ny alàlan'ny ohatra. Azonao atao ny mahita ny kaody eto, torolàlana momba ny fomba hianaranao code, ny fampahalalana momba ny code debugging sy ny fanamboarana ny fomba fiasa, ny famerenanao ny kaody, ary ny maha-zava-dehibe anao, ny maha-zava-dehibe azy, ary ny fomba hanehoana ny tenanao, ny sarinao ary ny sarinao ary koa ny rindrambaiko izay haorinao amin'ny hazavana tsara indrindra indrindra mba ho tsara tarehy indrindra araka izay azo atao amin'ny mpampiasa farany anao, ny mpitsidika ny tranokalanao. Ao amin'ity boky ity, dia hasehoko ohatra maromaro momba ny famolavolana rindrambaiko misy fifantohana amin'ny tranonkala amin'ny sehatra ho sehatra ary koa ny fiarovana. Hanomboka ny traikefa fianarana amin'ny alàlan'ny fananganana tetikasa fototra amin'ny fampiasana ny akorandriaka Unix, miaraka amin'ny endri-javatra sy ny script. Avy eo, handinika tranonkala bilaogy fototra isika, hanavao ny bilaogintsika miaraka amin'ny sary sy ny horonantsary ary koa hampiasana ireo endri-javatra ireo hampiasa vahaolana amin'ny fiarovana amin'ny fampiasana rindrambaiko maimaim-poana, ary azo antoka ny mpizara iray (pam). Hodinihintsika avy eo ny fitantanana ny rakitra sy ny fanodinana, ny famolavolana ny fanitsiana horonantsary, fanomezana feo, fanodinana ny barcode ary ny fankatoavana optika, anisan'ireo hevitra hafa. Amin'ny fomba hizahantsika ny apis izay hanampy antsika hanao rindrambaiko ilaina sy azo antoka kokoa, miaraka amin'ny safidy malalaka sy karama. Teny an-dalana, dia handinika ireo fitaovana fiarovana sy fitaovam-piadiana sy ny famolavolana monisipaly sy ny famoaham-bolam-peo sy ny famoizam-po sy ny famoizam-po sy ny drone isika, ary ny birao hafa dia hiarahanay amin'ny tambajotra efa misy mba hiarovana ny rindrambaiko ary haneho ny fiarovan-tena sy ny fialan-tsasatra. Hanao fiatoana isika amin'ny fanamboarana lalao, ny milina 2D sy 3D, ary miara-miasa amin'ny fitaovana voampanga raha toa ka misy ohatra momba ny rindrambaiko fandoavam-bola ambany sy fametahana elektronika izay voaroaka amin'ny vy vita amin'ny silicone. Mandritra ny lalana, dia hampiasa vahaolana fianarana milina efa misy ihany koa isika mba hahazoana antoka tsara ny rindrambaiko. Izahay koa dia hampiasa fitaovana tahiry azo alaina amin'ny Internet mba hahafahana mihetsika sy hiaro ny dingana. Ity boky ity dia torolàlana ho an'ny fahombiazanao amin'ny fananganana tranonkala tranonkala ary mampiditra azy amin'ny rafitra matihanina matihanina sy ny rafitra mekanika, ary ny torolàlana amin'ny ankapobeny hananganana rindrambaiko sy ny fanamboarana fitaovana tsy misy dikany na ny traikefa teo aloha.

Tsy ity boky ity: Raha tena te hanana tranonkala ianao, dia afaka mametraka fivarotana tsotra fotsiny ary amidio ny zavatra ilainao, mandefa bilaogy, sary na horonan-tsary, na raha tsy izany dia tsy misy tsipika tokana. Tsy izany ity boky ity. Ity boky ity dia hampianatra anao ny fomba hanamboarana ny rindrambaiko izay mahasoa sy azo aseho ary azo antoka kokoa noho ny rindrambaiko izay mbola tsy hita, ary tsy mitsoaka ny orinasa taloha, ary tsy misy fiangaviana ny orinasa izay tsy nanao na inona na inona. Raha manaraka akaiky ity boky ity ianao dia te hanoratra kaody, kaody fikarohana, amboary ny fampiharana anao manokana, ary hahazo vola amin'ny zavatra ataonao ianao. Hahazo vola avy amin'ity boky ity aho, na dia amin'ny ambaratonga voalohany aza, satria misy ny fampahalalana ilain'ny olona sy te hamaky, ary efa mividy rehefa mividy na mampiasa ny fampiharana azy ireo. Ity boky ity dia tsy hanangana fampiharana ho anao, fa hanondro anao amin'ny lalana marina sy ny sandrinao miaraka amin'ny fitaovana ilainao sy ny fizaram-bola ianao, ary ny mpomba anao, ny mpitsidika, ny mpiadidy, ny mpiadidy, ny mpiadidy, ny mpiady, ny mpiady, ary ny vahoaka amin'ny Internet dia te hampiasa sy hanohana.

Inona no hianaranao: Ity boky ity dia hampianatra anao ny fomba hananganana sy hivarotra rindrambaiko, rindrambaiko tena ilaina, ny fampahalalam-baovao, ny filaharahana dia manamarina, rakitsoratra ary sary, ary ny hafatra momba ny serasera (NFC). Ity boky ity dia hampianatra anao ny fomba fampiasana solosaina tambajotra, ny fomba hanamboarana ny kaody Bash, ny fanamboarana ny rindrambaiko ho an'ny Bootstrap, ary ny fanamboarana ny logins sy ny fampifangaroana amin'ny tambajotra, hanangana ny haino aman-jery sy ny tambajotra miaraka amin'ny tranonkala hafa Maneho ny endri-javatra fiarovana toy ny hafatra momba ny fanamarihana na tanjona hafa, ny fanodinana ID, ny sary sy ny fanetren-tena, ny drafi-dratsy mba hitazomana ny rindrambaiko, ny fanodinana fandoavam-bola, ny asa fanaovana krizy, ary ny asa fanatanjahan-tena, ary ny asa fanatanjahan-tena, ary ny asa maizim-pitondrana, sy ny asa ratsy, ary ny asa maditra, ary ny maro hafa. Hianaranao ny fomba hanamboarana ny fitaovana Bluetooth anao, miaraka amin'ny bateria, ny mpamboly, ny microcontroller, ny fizaran-tarehy, ny motera ary ny sensor, ny fampiasana ny solder, tariby ary ny 3D ary ny fanontana 3D ary ny fitaovana fanoratana ary ny fitaovana 3D. Hampiseho defitée amin'ny alàlan'ny famolavolana 3D aho amin'ny fanamboarana sy ny fitaovana ary ho faty, mba hahafahanao manamboatra fitaovana misy anao sy ny hardware miaraka amin'ny bateria, chargers, siramamy ary fiasa. ary navoakan'ny Bluetooth sy ny tranonkala. Raha mandinika manokana isika, dia handinika fanadihadiana roa, ny fametahana mandoto ary ny basy an-trano, na ny fandaharam-potoam-pandaminana, izay misy ao amin'ny OpenScad, izay azo ampiasaina ho toy ny fampidirana an-tsary na fampivoarana andalana ary azo ampidirina ao anaty tranonkala haingana. Hianaranao ny fomba hananganana sy hametraka tranokala avy amin'ny tany tsy misy traikefa mialoha, ataovy azo ampiharina sy tsara ary lehibe indrindra. Hianaranao ny fampiasana ny fianarana milina sy ny fahitana amin'ny solosaina mba hanamboarana tranonkala sy rakitsoratra sy firaketana an-tsoratra amin'ny alàlan'ny tranokala izay ahafahanao mampifanaraka ny fampahalalana mahasoa anao, ary na dia ny zavatra ilaina rehetra aza dia ento ny olona rehetra amin'ny rindrambaiko sy ny orinasanao. Ity boky ity dia hifantoka indrindra amin'ny haino aman-jery, ny fianaram-pirenena ary ny fianarana milina, izay singa lehibe telo izay hanampy anao hanangana ireo mpampiasa mahasoa amin'ny alàlan'ny hetsika izay tena misy, azo ampiharina ary mandray tanana ary mandray an-tanana ary mandray anjara amin'ny fotoana sy ny fandraisana andraikitra. Ity boky ity dia mampianatra Unix, Debian (Ubuntu (Ubuntu), Bash Shell, Python, HTML, CSS, JavaScript, ary fonosana rindrambaiko mahasoa ho an'ny fangatahana, ary koa ny rindrambaiko Bash mahasoa toa an'i Git sy FFMPEG. Hampianariko anao koa ny fomba hividianana cryptocurricanda, ary handray vola amin'ny cryptocurrency na avy amin'ny carte de debit tsy tapaka na dia mandoa ny mpitsidika anao aza ny fidiram-bolanao raha misafidy ny hanao izany ianao. Hampianariko anao ny fomba hahazoana vola avy amin'ny tranonkalanao amin'ny alàlan'ny dokam-barotra ihany koa, ny fomba hanomanana ny fampiharana anao amin'ny milina fikarohana ary hampifamadihao azy ireo amin'ny laharana voalohany ho an'ny mpanjifanao hitadiavana anao, ary ny laharana amin'ny fikarohana mahazatra araka izay tratra. Hampianariko anao ny fomba amidy ny rindrambaiko, ny hametraka izany, antsoy ny mpanjifa mitady ny serivisinao, ary hanao anarana ho an'ny tenanao amin'ny Internet amin'ny alàlan'ny fomba tsy misy, ary miasa tsara. Hampianariko anao ny fomba hamonjy ny angon-drakitrao amin'ny solosaina Cloud izay miasa ho anao ary manangona ny tranokalanao, ary ny fomba handraisan'ny mpampiasa anao dia miverina ao amin'ny tranokalanao ao ambadiky ny kitapom-bolanao ao ambadiky ny kitapom-bolanao. Ity boky ity dia hifantoka amin'ny fampiharana ny famoahana sy ny fizarana haino aman-jery amin'ny sary mankany amin'ny sary mankany amin'ny sary amin'ny sary, ary ny famokarana ny tenanao sy ny tenanao ary ny orinasanao sy ny orinasanao sy ny orinasanao dia tsara amin'ny fomba tsara indrindra. Hianaranao toro-hevitra vitsivitsy sy tricks avy amiko, avy amin'ny toro-hevitra momba ny coding, ny fanaovana zava-poana sy ny sary, ny fanodinana ny tenanao sy ny fandraisam-bahiny amin'ny alàlan'ny fanao amin'ny fotoana mahasalama dia tsy misy ezaka intsony, tsy misy ezaka, asa, na vola tsy ilaina. Ity boky ity dia antsoina hoe "azo ampiharinaNy fianarana sy ny filaminana mifototra amin'ny tranokala "noho ny antony: Miresaka momba ny fianarana, indrindra amin'ny Internet, ary misy ny fomba fiasa izay hikarakarana ny sary, ny sary sy ny fanamboarana sary, ny fanatsarana sary, ny fanatsarana ny sary, ny sary ny captioning, ary ny asa hafa toy ny metaly faminaniana nalaina avy amin'ny sarin-tsary, toy ny sarin'ilay sary, na sary azo antoka, na ny sarin-tsambo), fa mety hampiasaina izany raha toa ka misintona anao izany. Azonao atao ny manao Ny solosaina mpizara ity dia azo antoka, solosaina izay hangataka anao amin'ny anarana sy ny passcode ary ny adiresy IP vaovao, toy ny serivisy mailaka, toy ny serivisy mailaka na ny serivisy an-tsoratra, na ny sekolin'ny hafatra, na ny sekolin'ny lahatsoratra, na ny olona iray izay ampiasainao). Na iza na iza manorina rindrambaiko izay azo antoka tsy azo ekena dia misy dikany ny dikan'izany. Ny rindrambaiko dia tsy milamina satria ny fitaovana sy ny kaonty izay ampiasainay hidirana dia tsy ao amin'ny tanantsika foana, mety ho eo am-pelatanan'izy ireo ny olona marary mafy noho ny rindrambaiko ary noho izany dia mety hampidi-doza ny rindrambaiko izy ireo. Ity no zavatra ifantohan'ny boky ity. Ny solosaina iray mifandraika amin'ny tamba-jotra dia azo antoka miaraka amin'ny marika lava sy ny fanalahidy lava, ary ny fanalahidin'ny akorandriaka tsara indrindra, ary azo antoka tsara indrindra amin'ny mpizara tranonkala iray, satria ny mpizara tranonkala dia manome ny fidirana malalaka ary ny toeran'ny fiarovana ny kanto mandeha amin'ny mpizara. Ny mpizara tranonkala dia miditra amin'ny tranonkalan'ny mpampiasa mpampiasa, izay azo inoana fa ny ampahany mahery indrindra amin'ny fitaovan'ilay mpampiasa, satria io no toerana ahafahan'ny mpampiasa miditra rindrambaiko network network. Ity kitapom-pitaovana ity dia afaka manome lahatsoratra, ny tranokala hitanao ary afaka manoratra sary, audio ary video (sorat-pilazana na sôkôla izay azo vakiana ary nosoratan'ny mpizara tranonkala iray izay mifatotra amin'ny tranonkala. Mampiasa ny fitaovana rehetra amin'ny alàlan'ny famatsiam-bola anao, izay hahalalanao ny tenanao amin'ny fahalalana ny tranokala azo antoka, ary amin'ny ankapobeny ny rafitra informatika azo antoka izay miasa ho anao, dia ny tolotrao ary ny fijerinao sy ny fijerinao

Aiza no hanombohana: Tongasoa ianao raha te-hitsambikina ilay fizarana izay atombohiko ity boky ity miaraka amin'ny boky, na ny fizarana tena ilainao, indrindra raha manana traikefa amin'ny fanoratana an-tsipiriany aho na koa ny fampiroboroboana ny tranga sy ny ohatra azo ampiharina ao aminy. Raha tsy manana traikefa amin'ny fanoratana ianao, dia manoro hevitra anao aho hamaky ity boky rehetra ity, ary indrindra ny hanoro hevitra anao hamaky ireo fizarana teo aloha, mba hahazoana antoka fa mety aminao ity boky ity. Raha tsy mety aminao ity boky ity, dia diniho ny mampiavaka azy amin'ny namana na havana mety hahaliana ny fianarana momba ny fampandrosoana ny tranonkala, ary heverinao fa hindrana azy ireo ary hangataka ny hantsana izay tsy nandalovako anao tamin'ny maha-mpampianatra anao aho, na mpampianatra hafa teo anoloako. Atombohy amin'ny toerana misy anao, ny faritra rehetra amin'ity boky ity dia ilaina raha mikasa ny hanorina fampiharana mahasoa ianao, ary hevero fa ny fampiharana tsara indrindra dia namboarina miaraka amin'ny mpampiasa farany ao an-tsaina: Fantaro ny mpanjifanao. Ankehitriny mahalala ahy ianao, fantatrao ity boky ity, ary vonona ny hanomboka ianao. Hanombohana, hisintona solosaina (na dia ny solosaina mora indrindra aza avy amin'ny fivarotana boaty, dia ny Amazon, na ny desktop taloha, ary apetraho amin'ny fomba izay miasa ho anao.

Ahoana ny fomba hamakiana ity boky ity: Ny lahatsoratra nasongadina, dia manondro fa ny lahatsoratra dia ao anaty baikon'ny baiko, izay hanoratanao ny kaody radinao. Ny baikon'ny baiko dia mifantoka amin'ny fitendry be dia be ary tsy mila mipetaka, manafaingana ny asanao ary manamora ny zavatra aminao.

Hanomboka: Andao hisintona ao. Hanomboka amin'ny alàlan'ny fanorenana ny kaody fananganana eo an-toerana iray isika ary hanomboka tsy hanangana tranokala mifandray amin'ny Internet. Ity dia azo antoka kokoa ny manomboka, tsy maninona ary tsy mora ho anao. Miankina amin'ny rafitra fandidiana anao, ny fidirana amin'ny akorandriaka iray dia ho somary hafa kely. Ho an'ny Mac OS, manoro hevitra ny mametraka milina virtoaly aho amin'izao fotoana izao, satria hahazo ny mifanaraka amin'ny milina virtoaly ianao. Ny mpamatsy isan-karazany toy ny virtoaly sy ny parolells dia afaka mihazakazaka milina virtoaly ho anao, na dia azo atao ihany koa ny mametraka mivantana ny Ubuntu eo amin'ny milina, raha aleonao ny mampiasa teratany teratany izay atolotra anao mba hamoronana traikefa haingana sy haingana. Raha mampiasa linux na varavarankely ianao, izay atoroako dia tokony ho mora be ny mamorona tetikasa. Sokafy ny terminal anao, amboary ny size araka izay hitanao fa mety, ary atombohy manaraka ny Dingana 2. Raha mampiasa Windows ianao dia araho ny Dingana 1.

Dingana 1: - mpampiasa Windows ihany Ao amin'ny Windows, Open Command Command Prompt ho mpitantana sy karazana wsl -install

Dingana 2: Ao amin'ny terminal misokatra, (miankina amin'ny OS anao, antsoina hoe Ubuntu ao amin'ny Windows, terminal amin'ny Mac na Linux, na anarana mitovy), atombohy amin'ny famoronana tetikasa. Izahay dia manao izany amin'ny baiko MKDIR, izay miteraka lahatahiry. Raha mila mamorona lahatahiry ianao hitahiry ny tetik'asa, izay atolotra, ampiasao ny baiko CD hiova amin'ny lahatahiry sy

CD / Lalana / to / directory - Ny lalana dia ny lahatahiry (rakitra) izay mialoha ny lisitry ny lahatahiry anao, ny làlanao default dia ~ na / trano / anarana / anarana (izay anaranao). Mba hiova amin'ny lahatahiry default, karazana CD na CD ~ Mkdir Ohatra - manolo ny "ohatra" miaraka amin'ny anaran'ny lahatahiry

Manana lahatahiry asa ho an'ny tetik'asa ianao izao. Ny maha-zava-dehibe azy dia ny fananana io lahatahiry io dia mila mitodika amin'ny milina hafa na manafoana ny kaody izay soratanao ka vonona ny hanangana script izahay mba hamerenanao ny lahateninao amin'ny dingana vitsivitsy. Saingy ny fanamboarana script dia misy kaody kely, ary ny kaody dia mila automatique mba ho ilaina araka izay azo atao. Koa andao hanangana script hanorina script aloha. Andao atombohy amin'ny famoronana ny script ary hanatanteraka izany. Izahay dia hampiasa sudo, chmod ary hikasika an'io, ary antsoy ny soratra hoe "Ascript".

sudo Touch / usr / bin / ascript sudo chmod A + x / usr / bin / ascript sudo nano / usr / bin / ascript

Ankehitriny dia namorona ny script isika, natao ho tanterahana ary vonona ny hanova azy. Nano dia mpanonta lahatsoratra izay hamela anao hanova ny lahatsoratra tsy misy tsindrio, izay mora kokoa noho ny fampiasana interface tsara mpampiasa. Hanova ny rakitra miaraka amin'i Nano, mampiasa Nano ary avy eo ny lalana mankany amin'ny rakitra. Mba hanaovana script izay manao script dia mitovy amin'ny fanaovana ny sora-pianay amin'ny toerana voalohany. Izahay dia hampiasa ny kaody mitovy amin'ny etsy ambony, ny fanoloana ny anaran'ilay script, "Ascript" miaraka amin'ny tarehimarika mifamaly, $ 1. Ity dia mamela antsika hiantso ny script amin'ny fanoratana sary an-tsary momba ny sary an-tsary Sudo, izay afaka mamorona script vaovao amin'ny alàlan'ny fanoloana ny "Gazety" amin'ny script. Ny kaody ao Nano dia tokony ho toy ny:

sudo Touch / usr / bin / $ 1 sudo chmod A + X / USR / BIN / $ 1 Sudo nano / usr / bin / $ 1

Ary ny hanakatonana nano, afaka mitazona ny lakilen'ny fanaraha-maso isika ary manindry an'i X, avy eo ny hanondroana ny rakitra, ary hikapoka. Ankehitriny, fa tsy soraty ireo baiko telo ireo mba hanovana ny script, dia ho afaka hanao karazana fanondro hosoka hanoratana ny sudo hanitsiana ny script indray isika. Ity asa ity! Ary ny script vaovao dia afaka mihazakazaka mora foana amin'ny fiantsoana azy ao anaty akorandriaka. Andao isika hamonjy ny asantsika izao: Andao hanoratra script backup mba hamonjy ny script vaovao ary avy eo avereno ao amin'ny lahateninay amin'ny tetikasa izahay, raha manohana ny script backup.

Sudo Ascript Backup

Ankehitriny, tao Nano:

sudo CP / usr / bin / backup / làlana / to / directory / sudo Cp / usr / bin / ascript / lalana / to / directory /

Aiza / lalana / to / directory no lalana mankany amin'ny tetikasa noforoninao niaraka tamin'i Mkdir. Taty aoriana dia hianarantsika ny fomba handefasana ny lalan-dresaka toy izao miaraka amin'ny tadivavarana sy lisitra iray, izay tsy dia misy code, fa izao dia avelao ho tsotra sy hanana tsipika vitsivitsy isika. Mba hampandehanana ity script ity sy ny famerenanao ny kaody anao, ny fametahana ny rakitra ao Nano miaraka amin'ny fanaraha-maso + x, y ary miverina, ary soraty ao anaty akorandriaka

nomaniny ho solon'izay

Raha amporisihana amin'ny tenimiafina rehetra ianao raha mamaky ity boky ity sy manaraka ny akorandriaka, azafady ampidiro tsara ny tenimiafinao mpampiasa anao, dia hanana fiezahana telo ianao alohan'ny ilainao indray ny baiko. Azonao atao ny mampiasa ny zana-tsipìka miakatra sy midina amin'ny famerenam-bokatra sy hanova azy ireo, tokony mila mihazakazaka na inona na inona indroa ianao. Press Press up ary midina tsy hifidy ny hisafidy baiko, alohan'ny hanitsiana ny baiko miaraka amin'ny zana-tsipìka havanana, havia ary hamafa ny fanalahidy ary ny fitendry ary ny fandehanana azy.

Arahabaina! Nahavita namorona script backup ianao izay manohana script manan-danja roa ao amin'ny lahatahiry miasa. Azontsika atao ny mamindra zavatra any aoriana any rehefa mihalehibe ny tetikasa, fa izao dia miasa izao. Andao isika hanohana ny rahona, hampiasa an'i Github isika (na dia maro aza ny vahaolana amin'ny backup, dia mitovy amin'ny rindrambaiko ianao, ary mamela anao ihany koa mba hampiditra ny dika mitovy amin'ny rindrambaiko iray na ny fanalahidy. Izy io dia fitaovana amin'ny fitahirizana ny rindrambaiko, indrindra fa raha mifindra amin'ny tranga Linux dia tsy mahomby isika rehefa misy tsipika tokana tsy mahomby, dia tsy azo fehezina ny kaody anao raha tsy afaka mamerina azy io ianao, izay hosoratantsika.

Raha mbola tsy mampiasa milina virtoaly ubuntu ianao amin'izao fotoana izao dia miverina milina virtoaly ubuntu amin'izao fotoana izao satria hahamora ny fiainanao izany rehefa mametraka ny tranokala ilaina ary hikarakara ny asa fiasa ao amin'ny solosainao. Hodidinay amin'ny mpizara tranonkala iray tsy ho ela ny code, fa te-hahazo antoka isika fa misy antontan-taratasy vitsivitsy farafahakeliny ao ambadiky ny mpizara Web sy ny fonosana Linux iray mba hanaovana izany. Raha mbola te hampiasa Mac OS ianao, dia raisina am-pikarohana sy mametraka ireo fonosana ilaina amin'ny Internet, saingy mety tsy hisy safidy hafa ho an'ny fonosana rehetra ity boky na andian-dahatsoratra ity.

Andao isika hanampy baiko vitsivitsy mba hanatanterahana ny asantsika miaraka amin'ny script backup amin'ny alàlan'ny fihazonana ny baikon'ny Command Ascript Backup.

# ... git add -all git concer -m "Backup" Git Push -u Origin Master

...

Indray, mifehy X hamonjy.
sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
Izao dia mila manao fanitsiana fotoana iray ho an'ity tetikasa ity isika. Because it soon will be a Git project, we don't need to type every command every time we deploy from a Git repository, but we'll get the hang of this when we write our deployment scripts. Hanombohana, andao ho azo antoka fa eo amin'ny lahatahiry mety isika ary hanombohana ny tahiry git ary hiteraka fanalahidy SSH.

CD / Lalana / to / directory git init git sampana -m master Ssh-keygen

Aorian'ny karazana SSH-Keygen, ny fanalahidy vaovao dia tokony ho voavonjy ao amin'ny lahatahiry an-trano eo ambanin'ny lahatahiry antsoina hoe .ssh. Antsoina hoe id_rsa.pub izy io. Andeha hojerentsika io lakile io ary kopy. Mba hahitana azy,
sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
CD ~ Cat .sssh / id_rsa.pub

Adikao ny lahatsoratra izay naverin'ilay didy farany, ary namorona kaonty amin'ny mpamatsy Git (tsara indrindra), alohan'ny hanampiana ny fanalahidin'ny SSH. Vantany vao manana kaonty ianao dia tsindrio ny menio havanana havanana ary ampidiro ny toe-javatra, alohan'ny hanampenana ny lakile SSH anao amin'ny SSH sy GPG Keys ao anaty fidirana ao amin'ny Menu. Safidio ny fanalahidy SSH ary ampio ny anao amin'ny alàlan'ny fandalinana azy ao ary manome anaram-boninahitra, alohan'ny hamonjeny sy hiverina any GitHub mba hamoronana tahiry vaovao. Mitovitovy amin'ny mpamatsy goavambe hafa izany, mila mamaky ny antontan-taratasiny ianao. Ao amin'ny fanitsiana vaovao fitahirizana, omeo anarana famaritana ny tahiry ary manapa-kevitra raha te hamoaka azy ianao, ary ho azo antoka fa hanitsy ny rakitra ho an'ny fidirana. Vantany vao noforonina ny tahiry dia mandika ny clone miaraka amin'ny URL SSH, ary apetaho ao anatin'ity baiko manaraka ity.

git remote add git: // ... (ny URL lavitra anao)
sudo ascript backup
Ankehitriny afaka miverina amin'ny tahiry amin'ny alàlan'ny CD ianao, dia ho fantatrao tsara izany. Andramo izao ny script backup anao amin'izao fotoana izao

Tsara! Ankehitriny afaka mahazo coding isika izao. Andao hametraka an'i Django izao fa hahatakatra tsara ny fatiantoka sy ny git isika. Django dia hamerina antsika hamerina ny rindrambaiko ataontsika, afaka manao izany ihany koa i Bash fa ny DJango dia tokony hanana fampiharana azo antoka kokoa (azo atao ny tsy manan-kilema ary namboarina mora kokoa).

Mba hametrahana rindrambaiko ao Ubuntu, dia hampiasa ny baiko Sudo Apt-Gar izahay. Voalohany, andao isika hanavao sy hanavao ny rindrambaiko efa ananantsika. Ity dia azo atao amin'ny sudo apt-Get update sy sudo apt-up upgrade -y. Manaraka, ndao hametraka python sy ny tontolo virtoaly, ny tranon'ny kaody eto aminay, miaraka amin'ireto baiko manaraka ireto: sudo apt-get install python-is-python3 python3-venv
sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
Izany dia izay rehetra ilainao hiarahana amin'i Django amin'ny resaka rindrambaiko Applalls ao amin'ny Ubuntu ohatra. Ho an'ny Windows sy Linux dia tokony ho mivantana, fa ho an'ny Mac azonao atao ny mametraka milina virtoaly sy linux iray amin'ny alàlan'ny fampiasana virtoaly maimaimpoana na karama toy ny virtoaly na parasy ary mamerina ny dingana etsy ambony mba hananganana tontolo iainana etsy ambony. Ubuntu dia manakiana amin'ity tranga ity satria io no rindrambaiko ny tranokala mihazakazaka ary mamela azy ireo hampiantrano tranonkala miaraka amin'ny rindrambaiko rehetra voalaza etsy ambony.

Andao hidina ao amin'ny Django.

Ao amin'ny lahatahiry indray, miaraka amin'ny CD:
backup
python -m venv venv # dia mamorona ny tontolo virtoaly izay voatahiry ny code Loharano Venv / Bin / Activate # manetsika ny virtoaly virtoaly Pip Mametraka Django Django-admin Startproject Mysite. # Izay mysite dia ny tetikasa izay manomboka ao amin'ny lahatahiry misy ahy izao.

Mamorona ny tontolo virtoaly izay voatahiry ny kaody

Manetsika ny tontolo virtoaly

Izay Mysite dia ny tetikasa izay manomboka amin'ny lahatahiry misy ahy izao.

Django dia vao manomboka anay, satria i Django dia mampiantrano ny mpizara tranonkala ary manao izay rehetra ilainay ny fahazoana tranonkala fototra eo an-toerana sy mihazakazaka. Izao dia efa napetraka i DJango, andao hanova kely ny toe-javatra mba hahatonga azy io hiasa izay ilaintsika. Voalohany, andao isika hamorona fampiharana vaovao

python fitantanana.py Startappped

Ho hitanao fa ny fampiharana voalohany dia antsoina hoe Famahanana. Ny fampiharana dia tokony hantsoina izay tianao, ary hamorona fampiharana vaovao isika, fa ny anaran'ny fampiharana tsirairay dia tsy maintsy miovaova isaky ny misy ny fampiharana ao amin'ny code. Mba hampiana fampiharana vaovao, hanova hatrany ny setting.Py ao amin'ny lahatahiry hafa ny fampiharana, nomena anarana, antsoina hoe Startproject, apetraka eto aorian'izay. Mampiasa nano,

Nano App / Setting.py

Ao amin'ny setting, tadiavo ny fametrahana_apps ary manasaraka ny [tsipika 3]. Mampiasa sehatra efatra eo amin'ny tsipika afovoany tsy misy, ampio ny 'Fed', na ny anaran'ny fampiharana anao. Ity fizarana ity dia tokony ho toy ny:
# Mametraka_apps = [
    'FEEN',
]
Alohan'ny hadinonay dia andao hizaha toetra fa miasa i DJango. Mampiasa ny baiko python fitantanana.py runserver 0.0.0.0:000, afaka mihazakazaka ny mpizara ary avy eo dia mandehandeha amin'ny solosaina amin'ny solosaina mandeha amin'ny solosaina

Ankehitriny, andao isika handavaka ny fanoratana ny kaody python sasany. Django dia manana singa telo lehibe, izy rehetra dia mihazakazaka amin'ny alàlan'ny kaody tanteraka. Ny singa dia antsoina hoe Model, View sy Modely, ary ny tsirairay avy dia eo amin'ny ambaratonga ambony sy ambany kokoa isaky ny alohan'ny fotoana ananan'ny mpampiasa azy.

Ny modely dia ny fehezan-dalàna izay mitahiry fampahalalana ao amin'ny angona ho an'ny famerenana sy ny fandaharana ary ny fandikana.

Ny fomba fijery dia manapa-kevitra ny fomba ametrahana ilay modely, fanodikodinana ary ovaina, saika ny fomba fijeriny rehetra dia hampiasa modely mivantana.

Ny môdely dia ny kaody HTML miaraka amin'ny lakolosy sy karazan-tsofina fanampiny antsoina hoe fiteny modely. Ny môdely dia nateraky ny fomba fijery izay feno ny kaody sy ny toe-javatra python sy ny toe-javatra toy ny maodely sy ny fampahalalana (kofehy sy integer Usuall).
cd /path/to/directory
git init
git branch -m master
ssh-keygen
Django dia manana singa hafa koa, ao anatin'izany fa tsy voafetra amin'ny:

Settings, izay manamarina ny fampiharana rehefa noresahinay.

URL, izay modely izay manaraka ny mpampiasa dia mahazo miditra amin'ny ampahany manokana amin'ny fampiharana tranonkala.
cd ~
cat .ssh/id_rsa.pub
Ireo endrika, izay mamaritra ny fomba fanazavana izay alefa any amin'ny mpizara dia raisina ary raisina amin'ny angona ary koa ny mpampiasa. Ireo no fototry ny fanodinana ny fampahalalana momba ny mpizara, ary afaka manaiky karazana fampahalalana ny fivarotana solosaina, ny tady an-tsoratra, isa ary isa ary Boole marina / sandoka (mazàna (matetika Boole).

Ny maodely, izay ny kaody HTML sy ny fiteny ary ny tetezamita ny elanelana eo amin'ny python sy html, ny fampahalalana momba ny html dia afaka mahazo ny tranokala html izay mety hidirana amin'ny tranokala ary ilaina amin'ny fitaovana iray izay tsy mila akaiky ny mpizara.

Ireo rakitra static, izay mazàna JavaScript ary tranomboky izay manompo ny mpizara ary mifandray amin'ny modely.
git remote add git://… (your remote URL)
Ireo rakitra media, izay ampidirina na hosted ny mpizara, na an-tsoratra ivelany, na an-tsoratra fotsiny amin'ny mpizara alohan'ny hanaovana azy ary alefa any amin'ny mpizara hafa (siny) ho fampiantranoana.

MiddleWare, izay sombin-kaody izay mandeha amin'ny fotoana mitovy amin'ny fomba fijeriny rehetra ary heverina ho "tafiditra ao" raha jerena.

Ireo mpiasan'ny tontolon-kira, izay dingana izay ny tontolon'ny fomba fijerin'ny tsirairay ary ampiasaina hanampiana ny toe-javatra fanampiny.

Fitsapana, izay manan-kery fa ny mpampiasa na ny fangatahana dia mandalo ny fepetra takiana amin'ny fomba fijery sasany alohan'ny handraisana azy.

Ny mpanjifa, izay manitsy ny fomba fitantanana ny tranonkala sy ny famaliana ny fifandraisana.

Admin, izay ampiasaina hanoratana modely ka azo atao an-tsipiriany ao anaty pejy django admin ao amin'ny pejy DJango, izay azo tanterahina amin'ny alàlan'ny fidirana an-tsary.

Ny celery, izay mamaritra ny asa Asynchronous dia afaka manomboka mihazakazaka alohan'ny hanohizana ny asa na ny laharana manaraka.

Afaka manana singa maro hafa i Django, izay horesahantsika amin'ny antsipirihany eto. Betsaka ny fomba ahafahana mampifanaraka ny django bebe kokoa, manampy ny tranonkala, ary ny fantsom-pifandraisana mifamaly, izay manamboatra ny asa Asynchronous, ary ny sombin-taratasy hafa ho an'ny fanitarana, indrindra amin'ny fomba fijery. Ny fijerena ny fiasa dia fanalahidy satria matetika izy ireo dia manambara ny sombin-kaody rehetra izay voafaritra manokana amin'ny endrika URL manokana, na fizarana mpizara.

Voalohany, andao hodinihintsika ny fomba fijery. Hizaha ny fiasa manomboka amin'ny fanafarana ny kaody manondro izay hampiasaina amin'ny fomba fijery, ary voafaritra amin'ny famaritana tsy tapaka na kilasy mahazatra. Ny fomba fijery tsotra indrindra dia nofaritan'ny famaritana fiasa, ary avereno ny HTBP HTTPPRESSSPENSE miaraka amin'ny modely fototra. Andao atombohy amin'ny famaritana ny fomba fijery fototra hamerenany ny lahatsoratra hoe "Manan'izao tontolo izao". Tsarovy fa isaky ny manampy kaody ianao aorian'ny fanambarana toy ny fanambarana toy ny def, raha, raha, raha, sns, dia mila manampy habaka 4 ho an'ny famaritana tsirairay ianao. Hiditra amin'ny zavatra tsirairay isika tsy ho ela.

Avy amin'ny lahatahiry ny tranokalanay, hanova ny rakitra famahanana / views.py mampiasa Nano ary ampio ireto manaraka ireto amin'ny faran'ny rakitra.

Avy amin'ny django.http Import HTBTPRESPENSE Def hello (fangatahana): Miverena amin'ny HTBPRESPENSE ('HELLE World')

Ny HTTPPREST HTFANGO DJANGO dia mamaly amin'ny kofehy soratra, nasiana fanokafana sy fanidiana '. Isaky ny mandalo vaovao amin'ny fiasa na kilasy ianao, toy ny fangatahana na ny kofehy, dia mila mampiasa parentesis (, fanokafana sy fanidiana) ianao.

Tsy izay ihany no ilaintsika ny mijery ny fomba fijerintsika. Mazava ho azy fa tsy mbola nolazainay tamin'ny mpizara izay marina ny fomba fijery, dia mbola mila mamaritra ny lalana tokony hotsarovan'ny fomba fijery isika. Andao atombohy amin'ny famaritana ny lalana fototra amin'ny fampiharana / urls.py, ary hiditra amin'ny vondrona lalana isika aty aoriana.
python -m venv venv # Ao amin'ny App / URLS.PY, ampio ny tsipika aorian'ny fanambarana fanafarana taorian'ny fanombohana ny fijery izay noforoninay fotsiny.
source venv/bin/activate # Avy amin'ny fihenam-bary famahana ny fihenam-bidy ho feed_views
django-admin startproject mysite . # Ankehitriny, andao hamaritana ny fomba fijery. Ny fomba fijery dia manana singa telo, ny singa amin'ny lalana, izay milaza ny fijery ao anaty mpizara (ny fomba fijery izay misy ny fomba fijery, indrindra dia azo ovaina sy havaozina raha ilaina ny fomba fijery hafa na ilaina amin'ny fomba lojika hafa. Mahagaga ny manao zavatra toy izao sy ho mora tohina, satria ny codebase anao dia ho tontolo miova tsy miova sy ny fanitsiana mba ho sarobidy sy ho mora miasa. Ity no fomba fijerinao, ny fomba fijerinao, azonao atao ny manampy an'io amin'ny URLPATTERNS = [Fizarana App / URLS.py. Ny fomba fijerin'ny fahitana dia voafaritra amin'ireo singa telo voalaza etsy ambony, ary ny fiasa antsoina hoe lalana. Ny lamina URL anao dia lisitra, koa ataovy azo antoka fa hampitsahatra hatrany ny zavatra tsirairay ao aminy miaraka amin'ny komma, satria mampisaraka ny tsirairay avy izy ireo. Ny singa tsirairay dia tokony handeha amin'ny tsipika vaovao, indray mandeha miaraka amin'ny habaka efatra eo anoloany, toy ny fampiharana amin'ny Settings.py. Hamarininay ny singa voalohany amin'ny fomba fijery miaraka amin'ny fiasa tady tsy misy fotony, mba hamoronana fomba fijery izay mihazakazaka eo amin'ny lahatahiry faka ao amin'ny mpizara tranonkala. Ny URLS.PY dia tokony hoatran'ity:
Avy amin'ny fihenam-bary famahana ny fihenam-bidy ho feed_views Urlpatterns = [ lalana ('', feed_views.hello, anarana = 'hello'), ]

Io no fototry ny famoronana tranokala miaraka amin'i Django izay mifanentana tanteraka. Mba hanamboarana tranonkala mavitrika kokoa izay ahafahantsika manomboka ny fampahalalana momba ny fampakaram-bady, toy ny sary, horonan-tsary, Audio ary maro hafa, dia mila mampiasa modely isika, izay hotsidihinay manaraka. Amin'izao fotoana izao, andao hodinihintsika ny kaody sy ny mpizara. Hamarino ny fehezan-dalàna ho an'ny hadisoana, mihazakazaka:

python fitantanana.py
python manage.py startapp feed
Raha misy hafatra diso, dia tokony handinika tsara ireo fanovana nataonao tamin'ny fampiharana ianao ary nahita raha misy zavatra tokony hapetraka, toy ny habaka iray tsy manam-petra na tsy misy na tsy misy na inona na inona, izay misy typo tsy nahy, na zavatra hafa. Ny famakiana ny hafatra diso (raha manana iray ianao), dia tokony ho afaka mahita ny lalana mankany amin'ny rakitra noforoninao na novaina miaraka amin'ny laharana andalana ianao, ka jereo raha afaka manamboatra na inona na inona ianao. Raha namolavola ny olana ianao dia andao indray ny baiko etsy ambony. Rehefa vonona hihazakazaka ny rindrambaiko ary miasa dia hahita ny famoahana ny famoahana "ny rafitra tsy fantatra anarana hoe tsy misy olana." Izao dia vonona handeha ianao. Ampandehano ny mpizara:

python fitantanana.py runserver 0.0.0.0:0000

Manokatra browser tranonkala ary mandehana mankany amin'ny http: // localhost: 8000. Tokony ho hitanao ny lahatsoratra niverina tao amin'ny mari-pahaizana sy ny teny nindramina tamin'ny HTTPPResponse fiasa araka ny hevitrao. Ohatra iray ihany izany, fa raha tsy izany dia nataonao hatreto, dia azonao ny fototry ny fomba ahoana ny hoe Linux, Bash, Python, ary i DJango. Andeha isika handinika lalina kokoa ao amin'ny modely an-tsehatra sasany, ary hizaha ny herin'ny kilasy python amin'ny fitahirizana vaovao. Avy eo, hanomboka hikoropaka amin'ny HTML sy CSS izahay alohan'ny hanombohantsika ny tranokalanay feno, haingo ary azo antoka amin'ny fampiasana JavaScript sy Milina fianarana.
nano app/settings.py
Ny kilasy dia voatahiry ao amin'ny Models.py amin'ny fampiharana anao. Mampiasa Nano, Hanova ny App / Models.py ary manampy kilasy vaovao. Ny iray kilasy dia voafaritra amin'ny famaritana ny kilasy ary ampitaina ny superclass izay nolovany, tamin'ity tranga ity dia Models.model. Ny anaran'ilay kilasy dia avy aorian'ny famaritana ny kilasy, ary aorian'ny famaritana ny kilasy A: Mila id ny kilasintsika, azontsika atao ny mamerina azy io ary mitazona azy tsy manam-paharoa, ary mila saha iray ihany koa izy io mba hitehirizana vaovao. Any aoriana dia afaka manampy fe-potoana, rakitra, booleans (marina na diso na diso isika izay afaka manampy ny fitsipi-pitondran-tena izay tokony hatao amin'ny modely, ary azo atao ny mamatotra azy ireo), ary maro ny mamatotra ny modely ho an'ny mpampiasa iray, sy ny maro hafa. Andao hanafaka ny kaody eto ambany:

avy amin'ny django.dp import modely # Ny fanafarana izay ampiasaina hamaritana ny kilasinay ary ny toetrany Lahatsoratra ao amin'ny kilasy (Models.model): # ny famaritana ny kilasinay ID = Models.Autofield (Similen_key = Marina) # Ny ID-KEVITRA Modely, izay misy fanalahidy iray avy hatrany izay hahatonga anay hanontany ny modely, ary ilaina ny mifampiakatra amin'ny modely efa noforonina. Text = Models.Textfield (default = '') # Ny antonony ny fivarotana kilasy, amin'ity tranga ity, ny sasany, ny sasany, tsy mety amin'ny tady tsy misy dikany.

Ny fanafarana izay ampiasaina hamaritana ny kilasintsika ary ny toetrany
INSTALLED_APPS = [
    'feed',
]
Ny famaritana ny kilasinay

Ny karatry ny modely, fanalahidy iray avy hatrany izay hahatonga antsika hanontany ny modely, arovy fa tsy manam-paharoa ary ilaina rehefa mila mifanerasera amin'ny modely izy io.

Ny antontan-kevitra momba ny fivarotantsika kilasy, amin'ity tranga ity, ny sasany, ny sasany, izay tsy mety amin'ny tady tsy misy dikany.

Manantona ary vonjeo ny rakitra tahaka ny nataonay alohan'ny hamaranana.

Betsaka ny sehatra sy safidy hianarantsika rehefa manavao ity kilasy ity isika rehefa mivoatra ny fampiharana antsika, fa ity no tena ilaina amin'ny famoronana fampiharana iray handefasana lahatsoratra vitsivitsy. Na izany aza, ity modely ity dia tsy hiasa irery. Araka ny voalaza teo aloha, dia mila fomba fijery mahazatra sy ny url mahazatra isika mba hahatonga ity asa modely ity, ary mila endrika miaraka amin'ny modely ihany koa isika. Andao hodinihintsika ny endrika voalohany.

Mba hamaritana endrika iray, hanova ny fampiharana / form.Py miaraka amin'i Nano ary ampiana ireto manaraka ireto. Mila fanafarana roa izahay, ny kilasintsika roa, ary ny modely noforoninay (feed.models.Post), ny famaritana kilasy mitovy amin'ny modely, ary ny saha iray antsoina hoe Meta izay hanararaotra ny modely amin'ny fifandraisana. Ny endrika dia afaka manana fiasa fanombohana ihany koa izay mametraka izany mifototra amin'ny fampahalalana amin'ny fangatahana, modely na raha tsy izany, dia hizaha izao isika any aoriana any.

Ny endrika modely dia tena ilaina satria afaka mamorona modely izy ireo na manova modely ihany koa, ka hampiasa azy ireo ho an'ny roa tonta. Andao hamaritra ny iray amin'ny endrika.py eto ambany.

Avy amin'ny endrika fanafarana django Avy amin'ny Feed.models import post Kilasy fanoratana (form.modelform): Text = Forms.charfield (Widget = form.Textarea) Kilasy Meta: Modely = post zaridaina = ('lahatsoratra',)

Ity no fototry ny endrika sy ny modely ho azy. Ity endrika modely ity dia azo ampiasaina hanatsarana na hanova lahatsoratra iray, hanovana ny lahatsoratra ao anatiny. Izahay dia hijery ny fampidirana ity endrika ity ho fomba fijery manaraka. Voalohany, andao isika hanao ny fifindra-monina ary mifindra monina ny angon-drakitra ka afaka mifanerasera amin'ny modely ny kaody eto aminay. Mba hanaovana izany dia ampandehano ireto baiko manaraka ireto:

Python fitantanana.py makmigrations python fitantanana.py mifindra monina

Mandritra ny minitra iray hanatanterahana izany, fa raha vao manao izany, dia ahafahanao miditra ny modely amin'ny fomba fijery, MiddleWare, na amin'ny toerana hafa ao anaty rindrambaiko. Andao hanohy ny fomba fijerintsika izay ahitantsika ny modely. Hanova ny Feed / Views.py ary ampio ity kaody manaraka ity, araka ny voalaza. Tsy mila manampy na inona na inona aorian'ny famantarana # ianao, ny kaody dia ny fanehoan-kevitra izay ampiasaina hanondroana ny vaovao momba ilay kaody. Hanomboka isika amin'ny fanafarana ny maodely amin'ny fomba fijery, ary hampiany izany amin'ny toe-javatra iray izay ahafahantsika manome azy ao amin'ny modely iray ho toy ny lisitry ny fampisehoana. Manaraka, hampiditra modely izay ahafahantsika manome ny endrika sy ny modely amin'ny bokotra iray mba hamoronana zavatra vaovao mifototra amin'ny modely ary alefaso ao amin'ny mpizara. Mahagaga izany, ka andao isika hanao dingana fotsiny. Alohan'ny hamaranantsika ny fomba fijery dia andao hamorona modely izay manome modely fotsiny ary ho azo antoka fa afaka mahita azy isika amin'ny famoronana lahatsoratra vaovao ao anaty akorandriaka. Ity ny fomba tokony hijerena izany fijerena izany:

Avy amin'ny Feed.models import post avy amin'ny django.shortcuts import manafoana, redirect Avy amin'ny Django.urls Import Reverse Def Feed (fangatahana): Lahatsoratra = post.object.all () # Querys Ny lahatsoratra rehetra ao amin'ny Database hatreto Avereno ny RENDER (Mangataka, 'Feed / Feed.html', { 'Lahatsoratra': Lahatsoratra, })

Fangatahana ny lahatsoratra rehetra ao amin'ny angona hatreto

Izany rehetra izany dia toa tsotra tsara mandra-pahatonganay any ambany. Reser, ny sandany dia niverina tamin'ny fiasa fa tsy amin'ny valiny HTTP toa ny ohatra teo aloha, dia mitaky fangatahana voalohany ho toy ny fidirana voalohany, manaiky ny toe-javatra iray (amin'ity tranga ity izay azo atolotra ao amin'ny môdely, ary mamerina ny modely voafaritry ny fiasa. Ny môdely dia ho antontan-taratasy HTML izay manana fiteny kely iray antsoina hoe Jinja2, izay manome ny fampahalalana Python ao amin'ny HTML.

Hanombohana mamorona modely, manaova torolàlana roa amin'ny famahanana.

MKDIR FEED / Modely MKDIR FEED / MOMBLATES / FEENT

Manaraka, hanova ny modely ao amin'ny lahatahiry etsy ambony, ny famahanana / ny modely / famahanana, ary ampio ny kaody amin'ity ohatra ity. Andeha hojerentsika ny modely ho an'io ohatra io.

fahana {% ho an'ny lahatsoratra ao amin'ny lahatsoratra%} {{post.Text}} {% Endfor%}

Ity dia modely tsotra indrindra. Mamaritra ny fanokafana sy famaranana tags html, taham-peo, tahiry vatana miaraka amin'ny lohatenin'ny angano, ny tag-taratasy iray izay manampy tsipika kely manerana ny efijery, ary ny losa iray izay mahatonga ny lahatsoratra tsirairay ao amin'ny lisitry ny lahatsoratra ao amin'ny môdely. Izany dia ilaina ihany ny mamerina ny lahatsoratra, fa tsy misy ao anaty angona ihany. Andao hamorona ny sasany amin'ny akorandriaka. Afaka mihazakazaka miaraka amin'ny fitantanana.py isika

python fitantanana.py akorandriaka

Ankehitriny, andao hanafatra ny modely ny paositra

Avy amin'ny Feed.models import post

Manaraka, hamorona lahatsoratra tsotra amin'ny kofehy iray isika ary hivoaka ny akorandriaka. Ny kofehy dia mety hisy na inona na inona, raha mbola misy lahatsoratra manan-kery.

Post.Objects.create (text = 'World World') Fivoahana()

Farany, mila manampy ny url url amin'ny sakafontsika isika. Satria hampiasa URL marobe ny fampiharana ny famahanantsika ary te-hihazona ny habe kely izahay, andao hamorona urls.Py eo an-toerana ao amin'ny App SEED izay toa izao:

Avy amin'ny django.urls manafatra lalana avy amin'ny. fijery import Urlpatterns = [ lalana ('', views.feed, anarana = 'FEED'), ]

Izahay koa dia mila manova ny urls.py amin'ny fampiharana fototra, na inona na inona fanapahan-kevitra noraisintsika dia io no lahatahiry voalohany noforoninay. Hanova ny App / App.py ary ampio izao manaraka izao amin'ny lamina URL

avy amin'ny django.urls Ampidiro ny # eo an-tampony Urlpatterns = [ # ... kaody teo aloha eto Làlana ('Feed /', asio (('Feed.urls'), namespace = 'FEED')), ]

Any ambony

... Kaody teo aloha eto

Ankehitriny, rehefa mihazakazaka ny mpizara miaraka amin'ny python Managers.py mihazakazaka isika, dia hahita ny pejy noforoninay izahay satria manana ny modely, ny fijerena ary ny modely ary ny modely URL, miaraka amin'ny url amin'ny database. Manaraka, andao hanatanteraka ny endrika noforoninay sy hanombohany namorona ny lahatsoratra nataontsika manokana. Saingy alohan'ny hanoratantsika ny kaody be loatra, andao hanao backup mampiasa ny script izay nosoratantsika tany aloha, backup. Ampandehano ao anaty akorandriaka ity script ity, andraso fotoana vitsivitsy, ary ny fehezan-dalàna rehetra dia haverina amin'ny tahiry git.

nomaniny ho solon'izay

Ny fampiharana ny endrika dia tsotra ihany. Hanafatra ny endrintsika izahay, ampio ny mpitahiry fangatahana fangatahana, ary vonjeo ny lahatsoratra ao amin'ny tranokala alohan'ny hamerenana ny fomba fijery mitovy. Azontsika atao ny mampiasa ny fiasa redirect efa nafangaro, ary ny fiasa iray hafa antsoina hoe mifamadika mba hahazoana ny URL ho an'ny modely. Izahay dia hanontany an'io miaraka amin'ny String String: Feed 'satria ny namesahan'ny modely misy dia famahanana, ary antsoina koa ny fiheverana.

Avy amin'ny Feed.Forms Ampidiro ny paositra Def Feed (fangatahana): Lahatsoratra = post.object.all () # Querys Ny lahatsoratra rehetra ao amin'ny Database hatreto Raha ny fangatahana.method == 'post': # hikarakara ny fangatahana lahatsoratra form = postform (fangatahana.post) # Mamorona ohatra amin'ny endrika ary tehirizo ny angon-drakitra Raha form.is_Valid (): # manamarina ny endrika form.Save () # Tehirizo ny zavatra vaovao miverina redirect (mifamadika ('Feed): Feed')) # redirect amin'ny URL mitovy Avereno ny RENDER (Mangataka, 'Feed / Feed.html', { 'Forms': paositra (), # Ataovy azo antoka fa handalo ny endrika ho ao amin'ny konteksta mba hahafahantsika manolo-tena. 'Lahatsoratra': Lahatsoratra, })

Fangatahana ny lahatsoratra rehetra ao amin'ny angona hatreto

Hikarakara ny fangatahana lahatsoratra

Mamorona ohatra amin'ny endrika ary tehirizo ny angon-drakitra

Manamarina ny endrika

Tehirizo ny zavatra vaovao

Redirect amin'ny url mitovy amin'ny fangatahana mahazo

Ataovy azo antoka fa handalo ny endrika ho ao amin'ny teny manodidina mba hahafahantsika manolo-tena.

Tag ao amin'ny html ary manome ny endrika ao amin'ny modely html misy bokotra fandefasana. Mila tokana CSRF ihany koa isika, famantarana iray izay manakana ny toerana ivelany tsy handefa ny endrika raha tsy misy pejy voalohany.

fahana {% csrf_token%} {{form}} Lahatsoratra vaovao {% ho an'ny lahatsoratra ao amin'ny lahatsoratra%} {{post.Text}} {% Endfor%}
from django.http import HttpResponse

def hello(request):
    return HttpResponse('hello world')
Ndao hanimba izany. Misy kilasy endrika vaovao, famantarana, ilay endrika ary ny bokotra fandefasana. Tsotra tsotra, fa rehefa mijery azy isika dia mety te-hanao tsara azy io. Miasa izy io, azontsika atao ny mandefa lahatsoratra vaovao miaraka amin'ny endrika ary voavonjy ao anaty angon-drakitra izy ireo izao. Misy zavatra vitsivitsy mitranga eto. Mampiasa takelaka HTML izahay mba hanambarana fa ny antontan-taratasy dia antontan-taratasy HTML, mampiasa marika modely izahay ({% ...%}) mba hanomezana ilay famantarana ho an'ny endrika, {{...}). Manana tadivavarana ihany koa izahay mba hanomezana ny lahatsoratra amin'ny fampiasana takelaka sakana sy marika modely. Tena zava-dehibe ny fanakanana ireo tags satria afaka mamaritra ny fomba fizarana ny fizarana ny môdely, ary ny endriny maoderina no fototry ny fomba nametrahantsika varahina ao anaty kaody.

Ankehitriny dia mila manao tsara kokoa ny fampiharana izahay, satria izao dia tena tena fototra. Azontsika atao izany amin'ny alàlan'ny CSS, na ny inline, na amin'ny kilasy mifatotra amin'ny zavatra tsirairay ao anaty antontan-taratasy. Ny CSS dia tena tsara satria milaza ny zava-drehetra ao amin'ny pejy ny fomba tokony hijerena azy, ary mety hahatonga azy io ho tsara. Misy tranomboky vitsivitsy izay afaka manao izany, fa ny ahy manokana dia bootstrap.

getbootstrap.com/

Manaova lisitry ny lahatahiry vaovao antsoina hoe Endrim-paritra miaraka amin'ny modely Mkdir, ary avy eo manova ny maoderina / base.html.

Tokony ho toa izao:

{% block body%} {% endblock%}

Ataovy azo antoka fa handika ny CSS sy ny JavaScript, ny rakitra .JS sy ny .js, satria mila ny javascript isika mba hahatonga ny tranokalanay bebe kokoa amin'ny ho avy.
from feed import views as feed_views
Ankehitriny, andao hiverina any amin'ny akorandriaka Bas isika ary hanao baiko haingana. Tadidio fa raha mila miditra amin'ny tontolo virtoaly ianao, karazana loharano Venv / Bin / Activate. Io dia hamela anao hametraka fonosana python eo an-toerana amin'ny fomba ahafahan'ny DJango idera azy ireo. Mba hanomezana ny endrik'i Django Bootstrap, dia hampiasa fonosana python antsoina hoe crispy. Azontsika atao ny misintona an'io miaraka amin'ireto baiko manaraka ireto

Pip Mametraka Django-crispy-form

Raha vao napetraka ity dia ampio ao amin'ny setting.py
from feed import views as feed_views

urlpatterns = [
    path('', feed_views.hello, name='hello'),
]
Mametraka_apps = [ # ... kaody teo aloha eto 'crispy_forms', ]

... Kaody teo aloha eto

Ankehitriny, miverina ao amin'ny môdely famoahanay isika, afaka manaisotra zavatra vitsivitsy. Aleo esorintsika ny fiandohana sy ny fiafaran'ny antontan-taratasy ary hisolo azy miaraka amin'ny lova avy amin'ny maodely fototra ao amin'ny maodely fototra, ary ny fanitarana sy ny famaritana sakana. Ary koa, hampiditra fanamboarana fanefana fanamboarana modely amin'ny entana sy ny fanetren-endrika amin'ny endrika izahay. Farany, andao isika hanampy ny kilasy bootstrap amin'ny bokotra amin'ny endrika mba hahatonga azy io ho toy ny bokotra iray. Tokony ho toa izao:
python manage.py check
{% manitatra 'base.html'%} {% block body%} {% Crispy_Forms_Tags%} {% csrf_token%} {{form | crispy}} Lahatsoratra vaovao {% ho an'ny lahatsoratra ao amin'ny lahatsoratra%} {{post.Text}} {% Endfor%} {% endblock%}

Tsara tarehy! Izany dia kely ny kaody sahady. Manaraka, tokony hizahantsika izany ary ho azo antoka fa ho hitantsika fa tsara ny zava-drehetra, ary azo antoka ihany koa fa tsara ny miasa tsara. Ampandehano ny mpizara araka ny torolàlana teo aloha ary ho azo antoka fa mijery ny tranokala ary miasa tsara. Asa tsara! Vonona ny hiroso amin'ny dingana manaraka ianao, izay hampitomboana ny fiasa fidirana mpampiasa mampiasa URL, endrika, endrika ary modely. Zava-dehibe ny endriny fototra ary hanohy hanova izany isika ary hanao fanovana raha ilaina, amin'ny alàlan'ny fampahafantarana ny tranokalanay amin'ny anarana sy ny fampahafantarana ireo fampahalalana lehibe kokoa sy ny kaontinao manokana.

Mba hanaovana an'izany dia mila mampiasa ny modely mpampiasa naorina ao Django isika. Ny maodelin'ny mpampiasa dia modely an-tsary, toy ny lahatsoratrao, izay azo adika amin'ny fidirana mpampiasa iray ao amin'ny tranokala. Amin'ny ho avy, alohan'ny hametrahantsika ny tranokala amin'ny Internet, dia hanitatra io modely io amin'ny modely hafa izay natoraly azy io, ary hanangana fepetra fiarovana fanampiny ho an'ny fidirana izay manohitra ny phishing. Hanomboka amin'ny alàlan'ny fampiasana ny sasany amin'ny endriny amin'ny endrika fidirana isika fa i DJango dia manome. Voalohany, andao isika hamorona fampiharana vaovao izay hampiasainay mba hanomezana ny modely sy ny fomba fijery ho an'ny pejy fidirana fototra. Izahay koa dia hamorona fampiharana hafa hisolo tena ny fanamby mitohy mba hahazoana antoka ny fampiharana, ao anatin'izany ny pincode, fankatoavana ny tarehy, akaikin'ny serasera, ny fampiakarana ivelany, ary ny fankatoavana ny fanondro.
python manage.py runserver 0.0.0.0:8000
Efa niresaka momba ny fanombohana fampiharana izahay. Avy amin'ny lahateninay, ao anaty tontolo virtoaly, mandalo ny fitantanana ireo hevitra ireo

python fitantanana.py startapp mpampiasa

Ankehitriny, tokony hanana lahatahiry vaovao ho an'ny fampiharana vaovao isika. Aleo atombohy amin'ny famoronana fomba fijery ao anatin'io lahatahiry io izay mifanitsy amin'ny fidirana mpampiasa. Django dia nanangana ny fomba fijery ho an'ny mpampiasa logins, fa ireo dia tsy mety ho antsika satria mila fomba fanao mahazatra isika, izay tsara indrindra vita amin'ny famaritana.

Amin'ity fomba fijery ity dia hanomboka amin'ny fisavana ny fangatahana poste, ny fangatahana izahay.Post amin'ny loginform iray izay nafarana avy amin'i Django, hanamarina ny kaonty mpampiasa, ary ny fidirana amin'ny mpampiasa alohan'ny hamerenany azy ireo amin'ny fampihenana ny fampihenana azy ireo.

Amin'ny mpampiasa / views.py, ampio ny kaody manaraka
from django.db import models # avy amin'ny django.shortcuts import manafoana, redirect
Avy amin'ny Django.urls Import Reverse
Avy amin'i Django.contrib.outh.forms Mametraka ny fanamarinana, setpasswordform
Avy amin'ny django.contrib.outh import fanamarinana, logout
Avy amin'ny django.contrib.outh import Login as Auth_Login
Avy amin'ny Django.contrrif dia mandefa hafatra

DEF Login (fangatahana):
    Raha fangatahana.method == "post":
        Username = Mangataka.post ['Username'] # Raiso ny anarana sy ny tenimiafina amin'ny fangatahana lahatsoratra
        Teny miafina = fangatahana.post ['tenimiafina'] # manamarina ny mpampiasa
        Mpampiasa = manamarina (Username = Username, tenimiafina = tenimiafina)
        Raha mpampiasa:
            Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend')
            Hafatra.SUCCESS (Mangataka, 'Nekena ny tenimiafinao. Azafady manohy')
            Miverena redirect (mifamadika ('Feed: FEED'))
        hafa: Hafatra.warning (fangatahana, 'Username na tenimiafina tsy mety. Manandrama indray')
    Avereno ny Reger (fangatahana, 'mpampiasa / Login.html', {'Form': Authenticationformform ())
class Post(models.Model): # Raiso ny anarana sy ny tenimiafina amin'ny fangatahana lahatsoratra
    id = models.AutoField(primary_key=True) # Manamarina ilay mpampiasa
    text = models.TextField(default='') # Izany no ilainao rehetra amin'ny fomba fijery fidirana fototra. Ankehitriny, andao hamorona endrika iray ho an'ny fijery amin'ny alàlan'ny fanitarana ny modely fototra. Hanomboka amin'ny alàlan'ny famoronana lahatahiry vaovao ho an'ny maodely ao amin'ny lahatahiry mpampiasa izahay.
Mpampiasa Mkdir / Modely Mpampiasa Mkdir / Modely / mpampiasa

Ankehitriny, tokony ho afaka hanova ny mpampiasa / ny modely / mpampiasa / mpampiasa izahay / Login.html. Na dia eo am-piandohantsika aza isika dia mamorona modely iray ahafahan'ny mpampiasa misoratra anarana ihany koa.

Ireo mpampiasa Nano / Modely / mpampiasa / mpampiasa / Login.html

Ankehitriny, ao amin'ny moramora,

{% manitatra 'base.html'%} {% Crispy_Forms_Tags%} {% sakana votoaty%} {% csrf_token%} Hiditra {{form | crispy}} Hiditra {% endblock%}

Ity no fototry ny modely logic. Tena mitovy amin'ny modely hafa amin'ny firafitra hafa, fa somary tsy mitovy ny zavatra simba. Azontsika atao ny mandika ity code ity mba hananganana modely hafa mitovy antsoina hoe Registral.html, izay hanovantsika ny teny ary hampiasa endrika vaovao namboarinay. Andao atao loha laharana ny modely. Hanova ny mpampiasa / ny maoderina / mpampiasa / fisoratana anarana.html ary ampio ity kaody ity:

{% manitatra 'base.html'%} {% Crispy_Forms_Tags%} {% sakana votoaty%} {% csrf_token%} Hamorona kaonty {{form | crispy}} hisoratra anarana {% endblock%}

Ankehitriny, andao hanangana endrika iray ho an'ny fisoratana anarana amin'ny mpampiasa sy ny faribolana amin'ny fomba fijery alohan'ny hananganantsika ny logins mpampiasa antsika amin'ny modely. Hataontsika fototra io mba hanombohana, fa hampiditra antsipirihany bebe kokoa sy ny endri-javatra fiarovana toy ny fifanarahana sy ny CAPTCHA amin'ny ho avy. Hanova ireo endrika miaraka amin'ireo mpampiasa Nano / Formy.py, ary ampio ity kaody manaraka ity.

Avy amin'ny endrika fanafarana django Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa Avy amin'ny django.contrib.outh.forms importancreationform Class Usernegisterform (escreationform): Email = Forms.emailfield () Kilasy Meta: Modely = mpampiasa Sahan-tany = ['Username', 'Email', 'Password11', 'Password22']
from django import forms
from feed.models import Post

class PostForm(forms.ModelForm):
    text = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Post
        fields = ('text',)
Noho izany dia manana endrika hafa eto isika, izay miasa tsotra fotsiny. Ity dia mpisera fisoratana anarana amin'ny anarana, mailaka sy tenimiafina, ary koa ny sehatry ny tenimiafina fanamafisana. Mariho fa ity endrika ity dia tsy manitatra ny kilasy mahazatra.Form kilasy, modely modely izay midika fa misy meta. Ny sehatra iray dia voafaritra ihany, ary ny Meta kilasy dia mamaritra ny modely ny endrika dia mifanandrify amin'ny sisa amin'ny fampahalalana izay hosoratana amin'ny endrika. Ny ankamaroan'io dia efa misy ao amin'ny Django naorina ao amin'ny Internet amin'ny InternetCreationform, mba hampiasainay izany ho fototry ny kilasy (nandalo tamin'ny mari-pahaizana).

Manaraka, handinika ny fomba fijery hisoratra anarana mpampiasa isika, ankehitriny fa manana endrika sy modely isika. Ity dia modely, sahala amin'ilay iray ao amin'ny fijerena lahatsoratra vaovao. Hanova ireo mpampiasa / views.py ary ampio ity kaody manaraka ity:

# ... Import avy amin'ny .Forms manafatra UserRegisterForm DEC Register (fangatahana): Raha fangatahana.method == "post": form = Usernegisterform (fangatahana.post) Raha form.is_Valid (): Mpampiasa = porm.Save () Hafatra.SUCCESS (Mangataka, 'Tongasoa eto amin'ny fampiharana, {}.'. Format (mpampiasa.username)) Avereno ny Reling (fangatahana, 'mpampiasa / fisoratana anarana.html', {'Form': UserRegisterFor})
python manage.py makemigrations
python manage.py migrate
... Import

Izany no hany ilaintsika mba hahazoana mpampiasa voasoratra anarana, fa tokony hanana fampahalalana bebe kokoa isika. Te hahafantatra ny fotoana nisoratana anarana izahay, tamin'ny fotoana naharetan'izy ireo teo amin'ilay toerana, ny fampahalalana sasany momba azy ireo, toy ny biography, ny timezone, sns, dia mila manavao ny maodely famahanana sy ny sarin'ny mpampiasa izahay. Mba hanaovana an'izany dia havaozinay ny Models.py amin'ny fampiharana roa. Andao atombohy amin'ny fanitsiana ny modely famahanana. Tokony ho toa izao:

Avy amin'ny Django.Db Import Models # ... Import Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa Lahatsoratra ao amin'ny kilasy (Models.model): ID = Models.Autofield (Similen_Key = Marina) mpanoratra = Models.fleignkey (mpampiasa, on_delete = Models.corkade, NULL = Marina, Blank = Marina: Marina, mifandraika_name = ' Text = Models.Textfield (default = ')
    posts = Post.objects.all() # ... Import
Ampio ato amin'ity tsipika ity

Tandremo ny tsipika faharoa izay nampiana tao amin'ilay rakitra. Ity dia fanalahidy vahiny, izay haneho ny lahatsoratra tsirairay isaky ny lahatsoratra iray isaky ny lahatsoratra, mba hahafahantsika mahazo antoka fa mamonjy ireo lahatsoratra ao amin'ny Use-Per-Per-mpampiasa iray ary tsy misy napetrak'ireo mpampiasa azy. Mamaritra ity fanalahidy vahiny ity miaraka amin'ny kilasy asehony, famafana ny famafana ny famoahana ireo mpampiasa, NULLE ary misy ny hevitra momba ny mpampiasa izay noforoninay, izay azontsika ampiasaina mba hilazana ny zavatra noforonin'ny mpampiasa. Ity anarana mifandraika ity, tsy toa ny post.author, mpanoratra ny lahatsoratra, dia manome ny mpampiasa amerikana izay namoaka ny lahatsoratra. Azontsika atao ny mahazo ny lahatsoratra ho an'ny mpampiasa iray amin'ny alàlan'ny mpampiasa mpampiasa.Posts.all (), na mpanoratra.post.all ().

Ankehitriny, andao isika hanao ny logins ny logins. Efa azontsika atao ny mampihena ny tranokalanay amin'ny alàlan'ny phishing amin'ny alàlan'ny fanolorana fotsiny ny isan'ny fotoana ahafahantsika mamela ny fidirana amin'ny tranokala, dia mora tokoa izany. Andao hanomboka hitahiry fampahalalana vitsivitsy momba ny mpampiasa tsirairay alohan'ny hanohizantsika ny fampivoarana ny fampiharana anay. Ireo mpampiasa fanovana / Models.py, ampio ity kaody manaraka ity.

Avy amin'ny modely i Django.DB Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa Avy amin'ny Django.utils import import mombamomba ny kilasy (Models.model): Mpampiasa = Models.onetoonefield (mpampiasa, on_delete = Models.cascade, NULL = Marina, Blank Kaonty_created = Models.datetimefield (default = Timezone.WO) Last_seen = Models.datetimefield (default = Timezone.WO) can_login = Models.datetimefield (default = Timezone.WO) Safidiny_name = Models.charfield (max_length = 20, default = '', NULL = Marina, BLANK = Marina) Bio = Models.Textfield (Blank = Marina, Default = '')

Mariho fa ity modely ity dia mitovy amin'ny modely post. Manana import fanampiny, TimEzone, izay ahafahantsika mametraka hadisoana amin'ny sehatry ny dateTime, ary manana toetrany sy textfield toa ny lahatsoratra ihany koa izahay. Ny fampiasana ireo vanim-potoana rehetra ireo dia manampy antsika hiaro ny tranokala ary hahatakatra ny fampiasana azy, ary ny sahan'ny lahatsoratra dia mamela ny fampahalalana momba ny mpampiasa tsirairay, na ny mpanoratra, ao amin'ny tranokala. Ny onetoonefield dia tokony ho dinihina kely fotsiny, mitovy amin'ny mitovy amin'ny ponenkey fa miaraka amin'ny modely iray isaky ny modely manaraka. Amin'izany fomba izany, ny mpampiasa dia manana mombamomba iray ihany, raha mbola manana lahatsoratra maro izy ireo.
mkdir feed/templates
mkdir feed/templates/feed
Ankehitriny, andao hanatsara ny lisitry ny fidirana sy ny fisoratana anarana amin'ny kaonty ho an'ny mombamomba azy. Voalohany, manova ny mpampiasa / views.py ary mifantoka amin'ny fomba fijery fisoratana anarana:

# ... Import avy amin'ny .Forms manafatra UserRegisterForm DEC Register (fangatahana): Raha fangatahana.method == "post": form = Usernegisterform (fangatahana.post) Raha form.is_Valid (): Mpampiasa = porm.Save () Profile.Objects.create (mpampiasa = mpampiasa = mpampiasa) # Hamarino fa hampiditra ity tsipika ity, mba hamoronana mombamomba ny mpampiasa Hafatra.SUCCESS (Mangataka, 'Tongasoa eto amin'ny fampiharana, {}.'. Format (mpampiasa.username)) Avereno ny Reling (fangatahana, 'mpampiasa / fisoratana anarana.html', {'Form': UserRegisterFor})

... Import
Ataovy azo antoka fa hampiditra ity tsipika ity, hamoronana mombamomba ny mpampiasa

Ity dia mamorona mombamomba fotsiny ho an'ny mpampiasa, tsy feno ny fampahalalana rehetra. Ankehitriny, te-ho azo antoka fa ny kaonty mpampiasa dia tsy afaka miditra matetika matetika, na farafaharatsiny tsy azo andramana matetika ny tenimiafina, ka avelao hanavao ny fomba fanao login isika.

# ... Import avy amin'ny .models profil profil Avy amin'ny Django.utils import import Ampidiro datime DEF Login (fangatahana): Raha fangatahana.method == "post": Username = fangatahana.post ['Username'] Teny miafina = fangatahana.post ['tenimiafina'] Mpampiasa = manamarina (Username = Username, tenimiafina = tenimiafina) Raha mpampiasa sy mpampiasa.profile.can_login <Timezone.WO (): # fanamarihana fa manamarina isika izao raha afaka miditra ny mpampiasa Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend') Hafatra.SUCCESS (fangatahana, 'Nekena ny tenimiafinao. Manompoa.') Miverena redirect (mifamadika ('Feed: FEED')) hafa: # raha tsy nahomby ny fidirana, Hafatra.warning (fangatahana, 'Username na tenimiafina tsy mety. Manandrama azafady.') Mpampiasa = mpampiasa.Objects.Filter (Username = Username) .first () # Ity no ampahany izay hanavaozantsika ny mombamomba ny mpampiasa Raha mpampiasa: profil = User.profile profil.can_login = Timezone.Now () + DateTime.Timedelta (segondra = 15) # ka tsy afaka miditra ao anatin'ny segondra vitsy izy ireo proficl profile.SAVE ( Avereno ny Reger (fangatahana, 'mpampiasa / Login.html', {'Form': Authenticationformform ())
python manage.py shell
... Import

Mariho fa manamarina isika izao raha afaka miditra ny mpampiasa

Raha tsy nahomby ny fidirana,
from feed.models import Post
Ity no ampahany izay havaozinay ny mombamomba ireo mpampiasa

Ka tsy afaka miditra indray izy ireo mandritra ny segondra vitsy

Ity no fototra fototra amin'ny fiarovana. Hamarino tsara fa tsy marefo amin'ny olona iray fotsiny ny fiezahana mitambatra tenimiafina rehetra azo atao, na vitsivitsy amin'izy ireo amin'ny fotoana mitovy. Tsy hahakivy an'io mpampiasa tsotra io izay mahalala ny passcode ary ny vatan-dohany fotsiny amin'ny fitaovana vitsivitsy, fa hitahiry robot phishing maro ao amin'ny App. Mariho fa nanampy ny fanambarana izahay raha misy ny fanambarana miaraka amin'ny variana, ny can_login, izay tokony ho fotoana taloha, ary hanavao izany amin'ny fidirana tsirairay tsy mahomby amin'ny fampiasana ny anarana mitovy anarana amin'ny fampiasana anarana mitovy. Amin'izany fomba izany, ny mpampiasa ratsy fanahy dia tsy afaka hamantatra ny tenimiafina na aiza na aiza akaiky. Ny isan'ny segondra ao amin'ny DateTime.Timedelta () dia azo havaozina ihany koa, ary ny tranokala dia hihoatra kokoa nefa somary azo ampiasaina kokoa amin'ny segondra. Manoro hevitra aho 15 hanomboka.
Post.objects.create(text='hello world')
exit()
Tadidio fa nanamboatra script backup izahay mba hamonjy ny asantsika, ka aleo handroso ary avereno ny zavatra ananantsika hatrizay mba hahazoana antoka fa manana ny voavonjy isika. Ampandehano ny baiko:

sudo backup

Averiko indray, ity dia hamonjy ny asanao hatreto. Manoro hevitra aho ny hihazakazaka matetika ny backup Azonao atao ny mampiasa izany amin'ny fampiasana Usix Utility antsoina hoe Cron. Mba hampahatafiana io fitaovana io, ampandehano ity baiko manaraka ity ary ampidiro ny tenimiafinao:
from django.urls import path
from . import views

urlpatterns = [
    path('', views.feed, name='feed'),
]
sudo crontab -e

Raha mbola tsy nifidy safidy 1 ho an'i Nano, ilay lahatsoratra lahatsoratra ianao dia tokony ho efa zatra, ary hidina mankany amin'ny faran'ny rakitra mampiasa ny fanalahidin'ny zana-tsipìka. Ampio ny tsipika manaraka:

0 * * * * * Sudo Backup
from django.urls import include # Ny CRON dia mampiasa ny Minuty Minuty, Ora, Andro isam-bolana, volana, andro amin'ny herinandro, izay misy ny A * na isa iray izay misy rehefa mihazakazaka ny baiko. Mampiasa 0 mandritra ny minitra ary * ho an'ny sisa amin'ny safidy, afaka mitantana baiko isika amin'ny minitra voalohany amin'ny ora iray amin'ny fanombohan'ny minitra. Izany dia mamela antsika hamerina ny kaody mandeha ho azy. Ny asan'ny CRON rehetra rehefa novonoina ho toy ny fakany, ka tsy mila mampiasa tenimiafina isika isan'ora.
    # Mba hanamora ny famerenany ny kaody eto amintsika nefa tsy mampiasa tenimiafina, andao isika tsy hanaiky ny tenimiafina ho an'ny baikon'ny backup. Hanao izany isika amin'ny fanatanterahana ity baiko manaraka ity ary miditra amin'ny tenimiafina:
sudo visudo

Ankehitriny, andao hisoratra anarana any amin'ny faran'ny rakitra isika ary manampy tsipika hafa:

All rehetra = Nopasswd: / bin / backup
backup
Io dia mamela antsika hampandeha ny baiko "backup" ho mpampiasa, tsy misy tenimiafina. Mora ny format ho an'io, fa ny tsipika fotsiny amin'ny alàlan'ny "rehetra = Nopasswd: / bin /" ary mifarana amin'ny baiko, ohatra / bin / backup, izay misy / bera / bin / bin

Ankehitriny, andao isika hiasa amin'ny mailaka. Tena zava-dehibe ho an'ny tranonkala ny mailaka, satria fomba iray hitazonana ny tranokala azo antoka kokoa, hanamarina ireo mpampiasa dia tena olona, ​​ary na ny vokatra na ny serivisy aza amin'ny mpanjifa na ny serivisy na ny serivisy aza. Betsaka ny olona izay matetika ny Internet dia manamarina ny mailaka isan'andro, ary mandray ny mailaka marketing rehetra momba ny vokatra sy ny serivisy izay tadiaviny.

Voalohany, azonao atao ny mandoa serivisy mailaka izay ahafahanao mandefa mailaka amin'ny sehatra misy anao ary mila fehezan-dalàna kely. Betsaka ny serivisy izay manolotra izany, toy ny Google Workspace, SendinBlue, Mailgun, ary maro hafa.
    posts = Post.objects.all() # Raha tsy izany, ianao dia manatsara ny fanamboarana ny serivisy mailakao ao anaty mpizara avy amin'ny mpizara avy amin'ny scratch. Manoro hevitra ity safidy ity aho, na dia fehezan-dalàna bebe kokoa aza ary mety mitaky fampiantranoana manokana. Tsy ho afaka hanomboka ny mpizara mailaka avy amin'ny solosainao ianao, ka aleo handroso sy handinika ny konfigurasi sy ny kaody handefasana mailaka alohan'ny hanombohantsika ny mpizara ao anaty rahona ary hamorona ny mpizara mailaka ao anatiny.
    if request.method == 'POST': # Voalohany, manova ny filaharana.py miaraka amin'ireto baiko manaraka ireto:
        form = PostForm(request.POST) # Nano App / Setting.py
        if form.is_valid(): # Aiza ny fampiharana no anaran'ilay fampiharana noforoninao tamin'ny StartApp.
            form.save() # Ampio ireto manaraka ireto:
        return redirect(reverse('feed:feed')) # Site_name = 'Django App'

Email_BAckend = 'django.core.mil.backends.Smtp.EmailBackkend'
Email_host = 'localhost'
Email_port = 587
Email_use_tls = Marina
Email_address = username@server.com '
Email_host_user = 'Username'
Email_host_password = config ['mailaka_host_password']
Default_from_Email = '{} <{}>'. Format (site_name, mailaka_host_user)
        'form': PostForm(), # Ataovy azo antoka fa hanova ireo rehefa vonona ny hampitsahatra ny fampiharana anao ianao, dia hizaha indray ity fotoana ity. Ny adiresy mailaka_Address dia tokony ho mailaka izay tianao halefa, ary ny tenimiafina (mailaka_host_password) dia tokony hapetraka amin'ny tenimiafina izay ataonao ho an'ny mpizara. Entiko ny tenimiafina ao amin'ny rakitra config mba hialana amin'ny code amin'ny alàlan'ny lojika manaraka, etsy ambony ireo andalana ireo amin'ny Settings.py.
Import OS Ampidiro JSON Miaraka amin'ny Open ('/ sns / config.json') ho concig_file: config = json.Load (config_file)

Avy eo, nanangana rakitra json niaraka tamin'ny config in /etc/config.json aho tamin'ny fampiasana nano toy izao manaraka izao.

Hanova ny rakitra:

sudo nano /etc/config.json
Ampio ireto manaraka ireto:

{ "Email_host_password": "" }

Hanohy hanova ny rakitra config izahay ary hanampy ny tenimiafina sy ny fanalahidy rehetra hampiasa ny fampiharana. Amin'izao fotoana izao, avereno haingana ny fomba handefasana mailaka amin'ny fampiasana python. Voalohany, andao isika hamorona modely ho an'ny mailaka fanamarinana izay azontsika alefa any amin'ireo mpampiasa anay, ary apetraho ao amin'ny lisitry ny maodely mpampiasa azy. Ity modely ity dia hosoratana ao amin'ny HTML.

Ny mpampiasa Nano / Modely / mpampiasa / Verifical_Email.html

Django App - Hamarino ny mailakao Malala {{user.username}, Mba hanamarinana ny mailakao, azafady tsindrio eto. Raha tsy izany dia azonao atao ny mametaka ity rohy manaraka ity ao amin'ny adiresin'ny adiresin'ny browser: {{{Base_URL} {% URL 'mpampiasa: Activate' Uidb64 = UID Token = tokana%} Ho tapitra ao anatin'ny 30 minitra ny rohy. Raha mbola tsy nangataka mailaka fanamarinana ianao dia afaka tsy miraharaha an'io mailaka io fotsiny. Hahita anao any, Daisy

Tsotra tsotra izao imailaka. Mila toe-javatra iray amin'ny mpampiasa iray, ny URL fototra ho an'ny tranokala, ary ny ID ID sy tokana izay ampiasaina hanamarinana ny mailaka mpampiasa. Hamarino tsara ny famaritana ny URL fototra ao amin'ny Settings.py alohan'ny hanoratantsika ny kaody python sasany mba hanomezana modely. Mandrosoa ary ampio ny andalana manaraka amin'ny fampiharana / Setting.py, akaikin'ny fiandohana.Site_name = 'Django App' Protocol = 'HTTPS' Domain = ' Base_URL = Protocol + ': //' + DomainAmin'ny farany, rehefa vonona ny Internet ny tranokalanao ary apetranao izany, dia te-hamaritana ny sehatra misy anao ianao amin'ny anarana anarana izay novidinao mba hisolo tena ny tranokala. Ity no anarana izay hidiranao ao amin'ny NAVBAR mba hidirana amin'ny tranokalanao. Amin'izao fotoana izao dia afaka miala amin'ny banga ianao na mampiasa placeholder. Ianao koa dia te hanova ny tranokala_name amin'ny anarana iray tianao hanomezana ny tranokalanao, ny safidinao.

Alohan'ny handefasantsika mailaka, andao hamorona mpamokatra tokana izahay mba hahafahantsika manana mari-pahaizana fampahavitrihana kaonty izay tsy ho lany. Azontsika atao ny manao izany amin'ny alàlan'ny fananganana sy ny fanafarana mari-pamantarana kaonty izay toa izao manaraka izao. Hanova ny rakitra:

nano mpampiasa / tokens.py

Ampio ny kaody manaraka:

Avy amin'ny django.contrib.auth.tokens import passtretokengenerator Import enina KELY TOKIKENERATORERA (PASSWORDERESEttokenGenerator): Def _make_hash_value (tena, mpampiasa, Timetamp): miverina ( Enina.Text_type (User.PK) + Enina.Text_type (TimesTamp) ) kaonty_activation_token = tokenenerator () unsubscribe_token = TokenGenerator ()

Ity mpanamboatra tokana fototra ity dia miteraka famantarana iray azontsika alefa ny mpampiasa amin'ny URL ary afaka mampiasa ny mpampiasa ny fanamarinana ny mailaka ary hampihetsika ny kaontiny.
Manaraka, ndao hijery ny fomba handefasana mailaka. Mampiasa Nano, Hanova ny mpampiasa / mailaka.py.

Nano mpampiasa / mailaka.py

Ny fandefasana ny mailaka HTML HTML dia toa izao:

Avy amin'ny django.contrib.outh import get_user_model Avy amin'i Django.ut.Http Import UrlSafe_Base64_encode, UrlSafe_Base64_Decode Avy amin'i Django.contrib.sites.shortcuts fanafarana get_current_site Avy amin'ny django.core.mail import import send_mail Avy amin'ny django.template.Loader import render_to_string Avy amin'ny Django.utils.Encoding Import Force_Byres Avy amin'ny django.core.mail import mailmultialternativat Avy amin'ny django.shortcuts Import Render avy amin'ny .TokeS Account_activation_token Avy amin'ny django.template.Loader import render_to_string Avy amin'ny Django.utils.html Ampidiro ny strip_tags Avy amin'ny dikantenin'i DJango.Tampiasa modely Avy amin'ny django.conf fanafarana manafatra varotra def send_verification_email (mpampiasa): Mpampiasa = get_user_model () Mail_subject = '[{}] ampio ny kaontinao.'. Format (Settings.site_name) html_message = render_to_string ('mpampiasa / fanamarinana_Email.html', { 'mpampiasa': mpampiasa, 'Domain': fandaharana.domain, 'Protocol': 'HTTPS', 'UID': URLSafe_Base64_encode (Force_Byres (User.PK)), 'Token': kaonty_activation_token.make_token (mpampiasa), }) Send_html_Email (mpampiasa, mail_subject, html_message)

Tsotra ihany izany. Izahay dia manafatra ny fiasa ilaintsika handefasana ny mailaka, omeo ny maoderina ary ny toerantsika, ary avy eo isika dia mamaritra ny mailaka amin'ny alàlan'ny mpampiasa ary alefaso amin'ny mpampiasa mampiasa asa. Ho hitanao fa tsy namaritra ny fiasa izahay handefa ny mailaka, andefaso_html_Email, na izany aza, dia andao hanoratra ity eto ambany ity ny kaody izay efa nampidirinay tamin'ny mpampiasa / mailaka.py
pip install django-crispy-forms
Def Send_HTML_EMAIL (mpampiasa, mail_subject, html_message): to_email = mpampiasa.email Username = mpampiasa.username Raha_Email == '': Aza miverina unsub_link = setting.Base_URL + User.profile.create_unsubscribe_link () html_message = html_message + "unsubscribe" Msg = Mail_Subject, Strip_tags (HTML_Message), Settingse.default_from_Email, [to_EMAMAIL, ['List-unsubscribe': '<' +}, '>'},) Msg.attach_alternative (html_message, "text / html") profil = User.profile Andramo: MSG.Send (Fail_silently = FALSE) Raha tsy Profil.Email_Valid: profile.email_Valid = Marina proficl profile.SAVE ( Raha tsy: profile.email_Valid = Diso proficl profile.SAVE (

Somary sarotra kokoa izany, ary mbola vonona ny hampandeha an'ity kaody rehetra ity izahay. Mariho isika fa mamaritra ny tsy manan-tsaina_Link, ny rohy izay azon'ny mpampiasa ampiasaina amin'ny tsy fisoratana anarana amin'ny mailaka. Zava-dehibe izany, satria mila ny hisafidy ny mailaka ny mpampiasa raha tsy te hahita azy ireo, amin'ny fotoana rehetra. Manampy safidy hafa amin'ny hafatrao ihany koa izahay, izay ny hafatra HTML nesorina tamin'ny Tags HTML. Farany, manamarika izahay raha alefa ny mailaka, ary raha tsy izany dia manamarika ao amin'ny mombamomba ny mpampiasa izahay fa tsy manan-kery ny mailaka.

Andao hiverina any amin'ny modely mpampiasa isika mba hahafahantsika manao ity asa rehetra ity. Mila mamaritra ny fiasa iray izy mba hiteraka rohy mankany amin'ny Unsubscribe, ary hamaritra ny sehatry ny boolean hanamarihana fa tsy manan-kery ny mailaka mpampiasa.
    # Ampio aloha ny fanafarana manaraka ireto amin'ny lohan'ny mpampiasa / Models.py
Nano mpampiasa / Models.py

# ... Avy amin'ny django.core.Signing Import Standetampsigner, badsignature, signatureexpired Avy amin'ny Django.urls Import Reverse

...
Manaraka, andao isika hanampy ny modely amin'ny mpampiasa mba hahatonga ny tokana ary hanamarina ny tokana ampiasaina hampiasaina ny mailaka, ary koa ny saha mba hamonjy na ny mpampiasa dia mahomby amin'ny alàlan'ny mailaka. Ao amin'ny mpampiasa / Models.py indray, ampio ity kaody manaraka ity amin'ny faran'ny modely (code code)

# ... Email_Valid = Models.Booleanfield (default = marina) def make_token (tena): Miverina Timetampsigner (). Sign (self.user.username) Def Check_token (tena, tokana): Andramo: Key = '% s:% s'% (self.user.username, tokana) Timestampsigner (). Tsy misy (lakile, max_age = 60 * 60 * 24 * 30) # manan-kery mandritra ny 30 andro Afa-tsy (badsignature, signatureexpired): Miverena FALSE miverina marina Def Cread_unsubscribe_link (tena): Username, Token = self.make_token (). Mizara (":", 1) Fiverenana miverina ('mpampiasa: unsubscribe', kwargs = {'Username': Username, 'Token': tokana, tokana,})

...

Manan-kery mandritra ny 30 andro

Tsotra tsotra izao, mampiasa timetampsigne izahay, izay fitaovana kemika fototra, mba hamoronana tokana izay ho lany fotoana aorian'ny fotoana voafetra, ary mampiasa fiasa hafa isika mba hanamarinana raha manan-kery raha manan-kery izahay. Ampiasainay indroa ireo marika ireo, indray mandeha mba hanamarina ny mailaka, ary indray mandeha amin'ny rohy tsy misy unsubscribe.

Izao dia manana ireo isika, ny farany amin'ny asa izay tokony hataontsika dia ny amin'ny fomba fijerintsika. Ao anatin'ny mpampiasa / views.py, andao isika hanam-bava mba hanamarinana ny adiresy mailaka, ary ny tsy hisoratra anarana.

Nano mpampiasa / views.py
python manage.py startapp users
Voalohany, ampio ireto fanafarana manaraka ireto. Natsipiko tao anatin'ny fanampiny vitsivitsy ka tsy tokony hanafatra entana bebe kokoa isika any aoriana any.

Avy amin'ny django.contrib.outh import logout Avy amin'ny django.shortcuts import ary redirect, get_object_or_404 Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa Avy amin'ny Django.utils.Encoding Import Force_str Avy amin'i Django.ut.Http Import UrlSafe_Base64_encode, UrlSafe_Base64_Decode Ampidiro JSON Fangatahana Import Ampidiro ny daty, traceback Avy amin'ny Django.contrrif dia mandefa hafatra avy amin'ny .models profil profil Avy amin'ny Django.utils import import Avy amin'ny Django.Views.DecOrators.Cache Now_Cache avy amin'ny .Email import send_verification_Email # Ataovy azo antoka fa manafatra ny fandefasana mailaka fanamarinana Avy amin'i Django.contrib.auth.decorators Import Login_required Avy amin'ny Django.contrib.outh.mixins impix loginrequiredMixin, mpampiasaPassestMixin Avy amin'ny django.utils.decoratores manafatra fomba_Decorator Avy amin'ny django.http Import HTPPPresponseRedirect Avy amin'ny django.conf fanafarana Avy amin'ny Django.utils import import Ampidiro datime Ampidiro Pytz Avy amin'ny Django.Views.DecOratorS.CSRF Ampidiro CSRF_EXEMPT Avy amin'ny django.http Import HTBTPRESPENSE Avy amin'i Django.contrib.auth.tokens import default_token_generator Avy amin'i Django.utils.http Ampidiro URLSAFE_Base64_Decode avy amin'ny .TokeS Account_activation_token

Ataovy azo antoka fa manafatra ny mailaka fanamarinana ny fandefasana mailaka

Mety efa manana ny sasany amin'ireo fanafarana ireo ianao, fa tsy maharary ny mamerina azy ireo. Mila manafatra ny mailaka fanamarinana ianao, ary koa ny kaonty_activation_Token avy amin'ny mpampiasa.Tokens, miaraka amin'ireo fanafarana hafa.

Ankehitriny, eo am-pototry ny rakitra, ampio ity kaody manaraka ity:

Def unsubscribe (fangatahana, username, tokana): Mpampiasa = get_object_or_404 (mpampiasa, Username = Username) Raha ((((((Mangataka ny Oily.is_Authenticated ary mangataka ny mpampiasa.Sle.USER == mpampiasa) na mpampiasa.profile.check_token (tokana): # tsy manangona azy ireo profil = User.profile profil.subscribe = Diso proficl profile.SAVE ( Avereno ny Reger (fangatahana, 'mpampiasa / unsubscribe.html') # Raha tsy izany dia reirect amin'ny pejy fidirana Hafatra.warning (fangatahana, f'your unsubscribe rohy dia efa lany daty. Azafady miditra ao anaty unsubscribe. ') Next_URL = Reverse ('mpampiasa: unsubscribe', Kwargs = {'Username': Username, 'Token': tokana, tokana,}) Miverina HttpResponseRedirect ('% s? Next =% s'% (Reverse ('Login'), Next_url)) def activate (fangatahana, uidb64, tokana): Andramo: uid = Force_str (urlSafe_Base64_DECODE (UIDB64)) Mpampiasa = mpampiasa.OBJEKs.Gb (pk = UID) Afa-tsy (TypeError, HashiderError, tafahoatra, mpampiasa.doesnotexist): mpampiasa = tsy misy IP = get_client_ip (fangatahana) Raha tsy misy ny mpampiasa sy kaonty_activation_token.check_token (mpampiasa, tokana): mpampiasa.profile.email_Verified = marina usern taona.profile.seave ( user.seave () # sendwellomaEmail (fangatahana, mpampiasa) Messages.Suffess Miverena redirect (mpampiasa.profile.create_face_url ()) raha tsy izany: Hafatra.SUCCESS (fangatahana, ny rohy fampahavitrihana F'your dia efa lany daty. Azafady angataho ny rohy vaovao. ') miverina redirect ('manamarina: manamarina') def resend_activation (fangatahana): Raha fangatahana.method == 'post': Form Form = reendactivationemama (fangatahana.post) mailaka = fangatahana.post ['mailaka'] Andramo: Mpampiasa = mpampiasa.ObjectS.Gb (Email = Email) Send_verification_Email (mpampiasa) Hafatra.SUCCESS (Mangataka, 'ny mailaka fanamarinana anao. Azafady tsindrio ny rohy ao amin'ny mailakao mba hanamarinana ny kaontinao.') miverina redirect (mifamadika ('manamarina: manamarina')) Raha tsy: Hafatra.warning (fangatahana, mailaka F'oyour dia tsy marina. Azafady manandrana indray. ') raha tsy izany: form = reendactivationemama () Avereno ny Reger (fangatahana, 'mpampiasa / Resend_activation.html', {'Form': endrika, 'lohateny': 'REFTION': 'SEMPE': marina})

unsubscribe azy ireo
        username = request.POST['username'] # Raha tsy izany dia reirect amin'ny pejy fidirana
        password = request.POST['password'] # SendwellomaEmail (fangatahana, mpampiasa)
Ity dia kaody marobe. Andao hanorotoro azy io. Ny asa voalohany, madio ary tsotra, tsy manakana ny mpampiasa amin'ny lisitry ny mailaka. Ny fiasa faharoa dia manetsika ny mailaka, ary ho hitanao fa nanampy fiasa iray aho, SendwellocreeEmail. Tongasoa ianao raha mampiasa modely mailaka sy fiasa FANAMPIM-PIVAVAHANA mba handefasana mailaka fandraisana, mbola tsy mbola aho. Ny fiasa farany nataoko dia zava-dehibe, satria ny mailaka fampahavitrihana dia tapitra. Noho izany, mila mandà ny mailaka fampahavitrihana ianao. Azontsika atao ny mampiasa endrika fototra iray ho an'ity, ary antsoy ny fiasa handefa ny mailaka fanamarinana. Alohan'ny hanaovana an'izany dia aleo antoka fa alefa any amin'ny toerana voalohany, amin'ny fampidirana fiantsoana amina fomba fijery. Ampio ity tsipika ity alohan'ny redirect ao amin'ny lisitry ny lisitra fisoratana anarana, DEC Register, amin'ny mpampiasa / views.py.

Nano mpampiasa / views.py

# ... (aorian'ny) def fisoratana anarana (fangatahana): Send_verification_Email (mpampiasa) # ... (talohan'izay) redirect (
mkdir users/templates
mkdir users/templates/users
... (aorian'ny) def fisoratana anarana (fangatahana):

... (talohan'izay) redirect (

Tsy mila manampy ny tsipika voalohany sy farany ao anatin'io snippet code io ianao, ho azo antoka fa ny fomba fijerin'ny fisoratana anarana dia mandefa ny mailaka fanamarinana amin'ny mpampiasa. Tokony ho toa izao:
nano users/templates/users/login.html
# ... Import avy amin'ny .Forms manafatra UserRegisterForm DEC Register (fangatahana): Raha fangatahana.method == "post": form = Usernegisterform (fangatahana.post) Raha form.is_Valid (): Mpampiasa = porm.Save () Send_verification_Email (mpampiasa) # azo antoka fa hampiditra ity tsipika ity! Hafatra.SUCCESS (Mangataka, 'Tongasoa eto amin'ny fampiharana, {}.'. Format (mpampiasa.username)) Avereno ny Reling (fangatahana, 'mpampiasa / fisoratana anarana.html', {'Form': UserRegisterFor})

... Import

Ataovy azo antoka fa hampiditra ity tsipika ity!
Ankehitriny, mila manampy endrika iray isika hamerina ny mailaka fampahavitrihana. Ao amin'ny mpampiasa / Forms.py, ampio ity endrika manaraka ity:

# ... (fanafarana) Class ResendActivationemalyMafForm (endrika.porm): Email = Forms.emailfield (takiana = marina)

... (fanafarana)
Mila modely mifanaraka amin'izany ihany koa isika amin'ity taratasy fampiasa mailaka ity. Andao hanampy ity modely ity. Hanova ny rakitra:

Ny mpampiasa Nano / Modely / mpampiasa / Resend_activation.html

Manaraka, ampio ity kaody manaraka ity amin'ny rakitra.
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
{% manitatra 'base.html'%} {% sakana votoaty%} {% Crispy_Forms_Tags%} {% csrf_token%} Mamerina ny mailaka fampahavitrihana {{form | crispy}} Mamerina ny mailaka fampahavitrihana {% endblock%}

Whew, be dia be izany! Ankehitriny, rehefa apetrany amin'ny mpizara ny kaody, dia afaka mandefa mailaka HTML izahay ary ampidiro ny kaonty mpampiasa miaraka amin'ny mailaka. Azontsika atao ihany koa ny mandefa mailaka fandraisana tsotra, ka hojerentsika ny fomba hanaovana izany. Miverina amin'ny mpampiasa / mailaka.py, ampio ity kaody manaraka ity:

Def SendwellocreeEmail (mpampiasa): Mpampiasa = get_user_model () html = misokatra ('{} / mpampiasa / mpampiasa / Tongasoa_Email.html'.fombat (Settings.Base_dir))). Vakio () Lohahevitra = 'Tongasoa eto' + Settings.site_name + ', {{Username}}!' Endrika = Endrika (HTML) Subjtemplate = Endrika (foto-kevitra) Context = {'Username ({' username »: mpampiasa.username, 'base_url': Settings.Base_URL, 'Modely_Name': 'Daisy_Name': Site_Name ': Site_NE_NAME}) RenderedRedTemplate = Template.render (Toe-javatra) Subjcontext = konteks ({'Username': User.usERName} SubjrenderedTemplate = subjtemplate.render (subjcontext) Send_HTML_EMAIL (mpampiasa, SubjrenderEmeremplate, RenderedTemplate)

Ary koa, mila modely isika mba hanomezana izany rehetra izany. Ao amin'ny tranonkalako, ny modely dia toa eto ambany, saingy raisina am-pilaminana ianao fa tianao ihany.

Tongasoa eto {{site_name}} Hello {{username}}, Faly izahay mahita anao eto! Misaotra anao nanatevin-daharana {{site_name} ary ampahany amin'ny fahafinaretana. Mba hanombohana, eto misy zavatra vitsivitsy azonao atao aorian'ny fanamarinana ny maha-izy anao. Ampiasao ny fampiharana. Ity no pejy lehibe amin'ny {{site_name}} Tsidiho ny mombamomba ahy {{site_name}} profil. Ity pejy ity ho an'ny olona te hahafantatra ahy. Bebe kokoa ny profil. Azonao jerena ao amin'ilay tranokala ireo olona ireo, ary jereo ny atiny. Jereo eto daholo ny lahatsoratra rehetra. Ity no pejy voalohany amin'ny {{site_name}}. Mbola betsaka kokoa ny tranokala, ka aza misalasala mitsidika sy hahita izay hitanao. Azonao atao ny mizara ilay tranokala miaraka amin'ireo bokotra sosialy ao amin'ny pejy tsirairay. Manantena aho fa mankafy ny fotoananao amin'ny {{site_name}! Misaotra anao teto. Amin'ny fitiavana be, {{Model_name}} {{Base_URL}}
# Mariho fa tsy manana ny fanakatonana ny vatana na html tenifototra isika, satria ampiana ireo rehefa manampy ny rohy HTML unsubscribe. Zava-dehibe ireo, fa tsy te hamaritra azy ireo indroa isika.
Ka inona ny manaraka? Tonga lavitra izahay. Marina fa tokony ho vonona ny hametraka ny tranokala amin'ny mpizara isika. Azontsika atao ny manampy ny haingo @login_required ary ataovy azo antoka ny fomba fijerintsika, raiso ny sonia mpampiasa, alefaso mailaka ary fampahalalana momba ny cache, izay tokony hataon'ny tranonkala iray mba hiatrehana. Hanampy endri-javatra vitsivitsy mahasoa kokoa izahay, ary avy eo manorena fototra amin'ny fanesorana ny kaody ao amin'ny mpizara lavitra, mametraka ny mpizara mailaka, fanitsiana mailaka, ary sivana mba hahatonga ny tranokalanay ho azo antoka sy mety.

Mila fomba fijery famerenam-bola ihany koa isika, koa aleo ampio haingana. Django naorin'i Django amin'ny fomba fijerin'ny tenimiafina dia tapaka amin'ny asa sasany, fa hijery ny fomba hanoratana ny fomba fijerintsika manokana, ny maodely mailaka, ary ny laminasa url. Ity no jerena ny fomba fijery, amin'ny mpampiasa / views.py

# ... Import Avy amin'i Django.contrib.auth.tokens import default_token_generator Avy amin'i Django.contrib.outh.forms SetPassword Avy amin'i Django.utils.http Ampidiro URLSAFE_Base64_Decode def tenimiafina_reset (fangatahana, uidb64, tokana): Mpampiasa = get_object_or_404 (mpampiasa, ut = urlSafe_Base64_Decode (Uidb64)) Raha fangatahana.method == 'post': form = setpasswordf (mpampiasa, fangatahana.post) Raha form.is_Valid () sy default_token_generator.check_token (mpampiasa, tokana): form.save () Hafatra.SUCCESS (Mangataka, 'Nafohy ny tenimiafinao.') Elif tsy form.is_Valid (): Hafatra.warning (fangatahana, 'tsy mifanentana ny tenimiafinao, na tsy mahafeno ny fepetra takiana. Azafady manandrana indray.') miverina redirect (fangatahana.path) raha tsy izany: Hafatra.warning (fangatahana, 'efa lany ny rohy famerenanao ny tenimiafinao. Azafady mamorona vaovao iray.') Avereno ny redirect (mifamadika ('mpampiasa: Login')) Avereno ny RENDER (Mangataka, 'mpampiasa / tenimiafina_reset_confirm.html', { 'Lohateny': 'Avereno ny tenimiafinao', 'Form': SetPassword (mpampiasa)
from django.db import models # ... Import
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # Ity endrika ity dia naorina ao Django, saingy mila modely isika hanamafisana ny famerenan'ny tenimiafina, mpampiasa / maoderina / mpampiasa / tenimiafina / tenimiafina_reset_confirm.html
{% manitatra 'base.html'%} {% Crispy_Forms_Tags%} {% sakana votoaty%} {% csrf_token%} Avereno ny tenimiafina {{form | crispy}} Avereno ny tenimiafina {% endblock votoaty%}

Manana modely ihany koa isika handefasana mailaka famerenam-bola amin'ny tenimiafina, miaraka amin'ny endrika tsotra, amin'ny mpampiasa / Modely / mpampiasa / tenimiafina_reset.html

{% manitatra 'base.html'%} {% Crispy_Forms_Tags%} {% sakana votoaty%} {% csrf_token%} Avereno ny tenimiafina {{form | crispy}} Mangataka ny famerenana ny tenimiafina {% endblock votoaty%}

Tsotra ny môdely ho an'ny mailaka fa ny rakitra html fototra dia manome rohy hamerenana ny tenimiafina, amin'ny mpampiasa / mpampiasa / mpampiasa / tenimiafina / tenimiafina_EMAL. Django dia handika tsara an'io rakitra io.

Uglek - Avereno ny tenimiafinao Salama, Raha hamerina ny tenimiafinao, azafady tsindrio eto. Raha tsy izany dia azonao atao ny mametaka ity rohy manaraka ity ao amin'ny browsero: https://uglek.com {% url 'password_reset_confirm' uidb64 = uid teken = tokana%} Raha mbola tsy nangataka ny tenimiafina ianao dia afaka tsy miraharaha an'io mailaka io fotsiny ianao. Misaotra anao nanatevin-daharana anay, Daisy
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True, related_name='profile')
    account_created = models.DateTimeField(default=timezone.now)
    last_seen = models.DateTimeField(default=timezone.now)
    can_login = models.DateTimeField(default=timezone.now)
    preferred_name = models.CharField(max_length=20,default='', null=True, blank=True)
    bio = models.TextField(blank=True, default='')
Mila modely roa hafa koa isika. Ny voalohany dia ny hanamarina fa nalefa ny mailaka. Ny fijery ho an'ireo dia efa ao Django, ka mila miresaka fotsiny ao amin'ny URLS.Py izahay. Ity modely ity dia eo amin'ny mpampiasa / Modely / mpampiasa / tenimiafina_reset_done.html

{% manitatra 'base.html'%} {% sakana votoaty%} Nisy mailaka nalefa tamin'ny torolàlana hanavaozana ny tenimiafinao. {% endblock votoaty%}

Ary farany, hanamarina fa feno ny famerenan'ny tenimiafina, mpampiasa / maoderina / mpampiasa / tenimiafina / tenimiafina_reset_ceplete.html

{% manitatra 'base.html'%} {% sakana votoaty%} Napetraka ny tenimiafinao. Midira eto {% endblock votoaty%}

Ankehitriny, mila modely URL ho an'ireo fomba fijery ireo isika. Ao amin'ny mpampiasa / URLS.PY, ampio ny lamina URL manaraka ireto:
# Urlpatterns = [
    # ... URL teo aloha eto
    lalana ('famerenan'ny tenimiafina /',
         auth_views.pass.passwordresetview.as_view (
             Template_Name = 'mpampiasa / tenimiafina_reset.html',
             html_email_Template_name = 'mpampiasa / password_reset_html_EMAIL.HTML'
         ),
         Anarana = 'password_reset'),
    lalana ('famerenan'ny tenimiafina / vita /',
         auth_view.passwordresetdoneview.as_view (
             Template_Name = 'mpampiasa / password_reset_done.html'
         ),
         Anarana = 'password_reset_done'),
    lalana ('ny tenimiafina-famerenana-manamarina ///',
         auth_views.pass.passwordresetconfirmviewview.as_view (
             Template_Name = 'mpampiasa / password_reset_confirm.html'
         ),
         Anarana = 'password_reset_confirm'),
    lalana ('ny tenimiafina-passend-reserve /',
         auth_view.passwordresretcetretevew.as_view (
             Template_Name = 'mpampiasa / password_reset_complete.html'
         ),
         Anarana = 'password_reset_complete'),
]
            Profile.objects.create(user=user) # ... URL teo aloha eto
Sokajy efatra, be dia be izany! Saingy afaka mahazo antoka isika fa afaka mamerina ny tenimiafin'ny mpampiasa amin'ny fotoana rehetra ilaintsika, avy amin'ny Internet browser.

Azoko fa ny code be dia be ity. Raha toa ka somary kely ny lohanao, tsy maninona izany. Hivoatra ianao, hihatsara ny fahatakaranao, ary ho lasa mahay mandanjalanja kokoa ianao amin'ny code tsy ho ela. Raha very tanteraka ianao, dia manoro hevitra aho hiverina amin'ity rindrambaiko ity taty aoriana rehefa avy niasa tamin'ny tena nihaona tamin'ny fianarana ny code code amin'ny Internet. Ireo matetika dia afaka manomboka, ary hitari-dalana anao amin'ny zavatra rehetra ilainao hahomby rehefa miverina amin'ity tetikasa ity ianao. Raha toa ianao ka mahatsapa fa vonona ny hanohy, hamaky, avy eo, hanarona ny code amin'ny mpizara lavitra ianao ary hanangana ny mpizara mailaka, ary koa ny fanamboarana tetikasa vaovao miaraka amin'ny baiko vaovao misy baiko vitsivitsy.

Ny zavatra farany tokony hataontsika alohan'ny hanesorana ny mpizara lavitra dia ny fanamboarana ny tranokalanay kely kokoa. Ho hitanao fa ny fijerena fidirana fotsiny dia maka anarana sy tenimiafina fotsiny, ary tsy misy ny fanamarinana marobe na ny kaody iray. Ity dia fanitsiana mora, ary miaraka amin'ny fehezan-dalàna mitovy, azontsika atao ny mampiditra ny tranokalanay mandefa hafatra an-tsoratra ary na dia mamaly hafatra aza ny hafatra alefa any amin'ny mpizara. Hanombohana, hiverina amin'ny modely mpampiasa izahay ary hanisy sonia TimesTamp izay hisolo tena ny fidirana tsirairay. Hanampy famantarana tsy manam-paharoa sy mihodina ho an'ny modely mpampiasa izay hampiasaina hanampiana fiarovana fanampiny amin'ny fidirana izahay. Fanitsiana ny Modely mpampiasa, mpampiasa / Models.py, ampio ny kaody manaraka:
# Avy amin'ny modely i Django.DB
Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa
Avy amin'ny Django.utils import import
# Ataovy azo antoka fa manafatra ny UUID, Timetamp Signer sy Generator URL (mifamadika)
Import UUID
Avy amin'ny django.core.Signing Import Standetampsigner, badsignature, signatureexpired
Avy amin'ny Django.urls Import Reverse

mombamomba ny kilasy (Models.model):
    Mpampiasa = Models.onetoonefield (mpampiasa, on_delete = Models.cascade, NULL = Marina, Blank
    Kaonty_created = Models.datetimefield (default = Timezone.WO)
    Last_seen = Models.datetimefield (default = Timezone.WO)
    can_login = Models.datetimefield (default = Timezone.WO)
    Safidiny_name = Models.charfield (max_length = 20, default = '', NULL = Marina, BLANK = Marina)
    Bio = Models.Textfield (Blank = Marina, Default = '')
    # Ampio ity kaody ity eto
    UID = Models.charfield (max_length = 32, default = uuid.uuid4, null = Marina, banga = marina)
    MFA_Enabled = Models.Booleanfield (default = FALSE)
    Ampidiro_MFA = Models.Booleanfield (default = FALSE)
    Phone_Number = Models.charfield (default = ', NULL = Marina, Blank = Marina, MAX_LENGD = 15)
    Verification_code = Models.Charfield (default = '', NULL = Marina, Blank = Marina, MAX_LENGD = 15)
    Verification_code_length = Models.intEgerfield (default = 6)
    MFA_code_expire = Models.datetimefield (default = Timezone.WO)
    MFA_ATTEMPts = Models.intEgerfield (default = 0)

    def make_auth_token (tena):
        Miverina Timellampsigner (). Famantarana (self.uid)

    # Ary ampio ity fiasa ity
    Def Create_Auth_url (tena):
        Username, Token = self.make_auth_token (). Mizara (":", 1)
        Fiverenana miverina ('mpampiasa: MFA', kwargs = {'Username': Username, 'tokana': tokana, tokana,})

    def check_auth_token (tena, tokana):
        Andramo:
            Key = '% s:% s'% (self.uid, tokana)
            Timestampsigner (). Tsy misy (lakile, max_age = 60 * setting.Auth_Valid_malid_minuts) # manan-kery ho an'ny 3 min
        Afa-tsy (badsignature, signatureexpired):
            Miverena FALSE
        miverina marina
        if user and user.profile.can_login < timezone.now(): # Ataovy azo antoka fa manafatra ny UUID, ny sonia Timetamp Signer sy ny Generator URL (mifamadika)
        else: # Ampio ity kaody ity eto
            user = User.objects.filter(username=username).first() # Ary ampio ity fiasa ity
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Manan-kery mandritra ny 3 mins
Ataovy azo antoka fa toa izao ny mpampiasa / Models.py, ankoatry ny fanehoan-kevitra (code amin'ny tsipika miaraka amin'ny #). Ny fanapahana izany dia tsotra. Manana fanafarana vitsivitsy izahay, ny mponinim-pitadiavana izay mety hiteraka fehezan-dalàna azo antoka ary manamarina izany mba hahazoana antoka fa tsy manan-kery izany, fa tsy mihoatra ny segondra vitsy. Mampiasa UUID koa izahay, izay mpizara tokana izay mamaritra ny mpampiasa anay amin'ny sonia ny tokana, ary ao amin'ny URL izay alefa ny mpampiasa. Izahay dia hampiasa io komôlà fototra io mba hanamboarana fomba fijery fanamarinana roa. Alohan'ny hanaovana zavatra hafa, andao isika hampandeha ny fifindra-monina ka havaozina ny modely mpampiasa anay. Ao amin'ny lahatahiry miaraka amin'ny fitantanana.py, ampandehano ireto baiko manaraka ireto mba hanatanterahana sy hamita ny fifindra-monina.

Loharano Venv / Bin / Activate python fitantanana.py makmigrations && python fitantanana.py mifindra monina

Zava-dehibe izany satria isaky ny manao fanovana amin'ireo modely isika dia mila manangana ny latabatra ary manavao ny angon-drakitra miaraka amin'ny tsy mety alohan'ny ahafahantsika mampiasa modely.

Manaraka, andao hanavao ny fomba fijerinay ny fandinihana ny fomba fijery fanamarinana faharoa. Ao amin'ny mpampiasa / views.py, esory ny fiasa miditra sy ny redirect amin'ny URL izay vao avy nanao modely mpampiasa izahay.

# ... Import DEF Login (fangatahana): Raha fangatahana.method == "post": Username = fangatahana.post ['Username'] Teny miafina = fangatahana.post ['tenimiafina'] Mpampiasa = manamarina (Username = Username, tenimiafina = tenimiafina) Raha mpampiasa sy mpampiasa.profile.can_login <Timezone.WO (): # fanamarihana fa manamarina isika izao raha afaka miditra ny mpampiasa # Esory ny fiasa an-tsokosoko izay eto Hafatra.SUCCESS (fangatahana, 'Nekena ny tenimiafinao. Manompoa.') Raha mpampiasa.profile.mfa_enabled: miverina redirect (mpampiasa.profile.create_auth_url () hafa: # Raha tsy mampiasa ny fanamarinana mutli-factor ny mpampiasa, dia miditra fotsiny izy ireo. Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend') miverina redirect ('Feed: FEEN') hafa: # raha tsy nahomby ny fidirana, Hafatra.warning (fangatahana, 'Username na tenimiafina tsy mety. Manandrama azafady.') Mpampiasa = mpampiasa.Objects.Filter (Username = Username) .first () # Ity no ampahany izay hanavaozantsika ny mombamomba ny mpampiasa Raha mpampiasa: profil = User.profile profil.can_login = Timezone.Now () + DateTime.Timedelta (segondra = 15) # ka tsy afaka miditra ao anatin'ny segondra vitsy izy ireo proficl profile.SAVE ( Avereno ny Reger (fangatahana, 'mpampiasa / Login.html', {'Form': Authenticationformform ())
sudo backup
... Import

Mariho fa manamarina isika izao raha afaka miditra ny mpampiasa

Esory ny fiasa an-tsokosoko eto
sudo crontab -e
Mariho fa redirect amin'ny URL vaovao isika eto

Raha tsy mampiasa fanamarinana marobe ny mpampiasa dia miditra fotsiny izy ireo.

Raha tsy nahomby ny fidirana,
0 * * * * sudo backup
Ity no ampahany izay havaozinay ny mombamomba ireo mpampiasa

Ka tsy afaka miditra indray izy ireo mandritra ny segondra vitsy

Noho izany dia tsotra izao, manana fomba iray hanodinana ny fomba fijery fanamarinana roa isika izao rehefa mamorona azy io. Izahay koa dia manana fianjerana raha toa ka tsy nanampy nomeraon-telefaona ny mpampiasa. Hanampy fomba fijery fototra isika hanampiana nomeraon-telefaona tsy ho ela ary miditra amin'ny hafatra an-tsoratra tsy ho ela.

Voalohany, mila fomba mora handefasana hafatra an-tsoratra avy amin'ny kaody izahay. Mba hanaovana izany dia afaka misafidy amin'ny apis maromaro isika, fa ny mora indrindra amin'ny hevitro dia ny twilio. Manolotra vidiny tsara ho an'ny tetikasa kely kokoa koa izy ireo, ary koa ny fihenam-bidy betsaka. Mamorona kaonty amin'ny twilio.com, fenoy ny antsipirihany momba ny tetik'asa, mividiana laharana an-tariby, ary adikao ny fanalahidinao API anao.Py. Avy eo, ampio ity kaody ity eo ambanin'ny rakitra vaovao, mpampiasa / sms.py.

Nano mpampiasa / SMS.py
sudo visudo
# Manafatra ny fonosana ilaina rehetra Avy amin'ny Django.utils import import import kisendrasendra Ampidiro datime Avy amin'ny django.conf fanafarana avy amin'ny feed.middleware import get_current_request Avy amin'ny Django.contrrif dia mandefa hafatra manafatra varotra kaonty_sid = setting.twilio_account_sid auth_token = setting.twilio_auth_token Source_phone = Setting.phone_number # Ity kaody ity dia mandefa ny lahatsoratra miaraka amin'i Twilio Def Send_Text (target_phone, lahatsoratra): Avy amin'ny kliodrafitra Import import twilio.rest Andramo: client = client (kaonty_sid, auth_token) Raha Len (target_phone)> = 11: message = client.messages.create ( to = target_phone, from_ = source_phone, vatana = text) Raha tsy: print (traceback.format_EXC ()) # Mpampiasa mpanampy mba hahazoana isa miaraka amin'ny isa maro be def get_num_length (isa, halavany): n = '' ho an'ny x amin'ny karazany (halavany): n = n + str (num) miverina int (n) # Alefaso ny lahatsoratra mba hanamarinana ny mpampiasa Def Send_Verication_Text (mpampiasa): halavany = mpampiasa.profile.verification_code_length CODE = Random.Randint (Get_Num_Length (1, halavany), get_num_length (9, halavany)); mpampiasa.profile.verification_code = code mpampiasa.profile.mfa_code_expirires = Timezone.Now () + DateTime.Timedelta (minitra = 3) usern taona.profile.seave ( Send_user_Text (mpampiasa, "ny kaody fanamarinana ho anao dia {}". Format (Settings.site_name, str (code))) # Mandefasa mpampiasa iray misy lahatsoratra miaraka amin'ity fiasa ity Def Send_USER_TEXT (mpampiasa, lahatsoratra): Send_Text (mpampiasa.profile.phone_number, text) # Manamarina ny kaody amin'ity fiasa ity Def Check_verification_code (mpampiasa, kaody): mpampiasa.profile.mfa_attempts + = 1 Vokariny = mpampiasa.profile.verification_code! = tsy misy sy ny code! = '' sy user.profile.Vode.mfe_code_expireS> Timezone.WA ( Raha mpampiasa.profile.mfa_Attempts <3 ary valiny: mpampiasa.profile.verification_code_length = 6 Elif User.proofile.mfa_Attempts> 2 ary tsy valiny: mpampiasa.profile.verification_code_length = 8 usern taona.profile.seave ( valiny fiverenana # Manamarina ny fotoana Def Check_verification_Time (mpampiasa): Vokany = User.profile.mfa_code_expires> Timezone.WOW () valiny fiverenana

Ampidiro ny fonosana ilaina rehetra

Ity kaody ity dia mandefa ny lahatsoratra miaraka amin'i Twilio
ALL ALL=NOPASSWD: /bin/backup
Ny mpanampy iray dia miasa mba hahazoana isa miaraka amin'ny isa maro be

Alefaso ny lahatsoratra mba hanamarinana ny mpampiasa

Mandefasa mpampiasa iray misy lahatsoratra miaraka amin'ity fiasa ity

Manamarina ny kaody miaraka amin'ity fiasa ity

Manamarina ny fotoana

Ataovy azo antoka fa hanova ny toe-javatra mety aminao, ampiana ireo tsipika ireo amin'ny fanalahidinao:

# Ataovy azo antoka fa handika ireo avy amin'ny dashboard twilio anao Twilio_account_sid = "" Twilio_auth_token = "" Phone_Number = "" Site_name = "" Auth_valid_minues = 3 # ny isan'ny minitra ny pejin'ny TFA dia mavitrika indray mandeha indray mandeha

Ataovy azo antoka fa handika ireo amin'ny dashboard twilio anao

Ny isan'ny minitra ny pejy TFA dia mavitrika indray mandeha indray mandeha

Voalohany, mila endrika ho an'ny fomba fijery arak'asa roa isika. Ireo mpampiasa fanovana / Formy.py, ampio ity kaody manaraka ity.

# ... Import Avy amin'ny endrika fanafarana django # Endrika iray hidirana ny nomeraon-telefaoninay Sarimihetsika kilasy (endrika.porm): Phone_Number = form.regexfield (regex = r '^ \ + 1? \ D {+? \' 9 Def __init __ (tena, * args, ** kwargs): Super (Phonenumberform, self) .__ Init __ (* Args, ** Kwargs) self.fiels ['phone_number']. Label = finday_number_label # Endrika iray ho an'ny fanamarinana KELY TFFORD (endrika.form): CODE = TORGT.ItEGERFIELD (takiana = FALSE) Def __init __ (tena, * args, ** kwargs): Super (tfaform, tena) .__ init __ (* args, ** kwargs) self.fiels ['Code']. Widget.attrs.update ({'autocomplete': 'Off'}) help_texts = { 'Code': 'Azafady ampidiro ny kaody enina isa aorian'ny fandefasana azy amin'ny telefaona miaraka amin'ny bokotra etsy ambony.' }
nano app/settings.py
... Import

Fomba iray hidirana ny nomeraon-telefaoninay

Fomba iray ho an'ny fanamarinana

Manaraka, andao hamorona ny fomba fijery amin'ny mpampiasa / views.py

# ... Import Avy amin'ny django.http Import HTPPPresponseRedirect avy amin'ny .Forms manafatra PhoneNumberform, TFFORVORD Def MFA (fangatahana, username, tokana): Mpampiasa = mpampiasa.Objects.Filter (profil__uuid = Username) .first () Raha tsy mpampiasa: Miverina HttpPonseRedirect (Reverse ('Manamarina: Age') + '? Mpampiasa = get_object_or_404 (mpampiasa, profil__uuid = Username) Manaraka = Mangataka.get.get ('Next', '') Raha tsy mpampiasa.profile.mfa_enabled: Raha tsy ny fizahana_verification_Time (mpampiasa): mpampiasa.profile.mfa_enabled = diso mpampiasa.profile.enable_two_factore_authentication = marina user.profile.phone_number = '+1' usern taona.profile.seave ( Hanonta ('fidirana amin'ny mpampiasa') Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend') Hafatra.warning (fangatahana, 'Azafady ampidiro ny laharana an-tariby manan-kery ary manamarina izany amin'ny kaody iray.') Avereno ny redirect (mifamadika ('mpampiasa: MFA_ONBOOBOBOSING')) Raha fangatahana.method == 'post': form = tfafe (fangatahana.post) CODE = endrika.data ['code'] Raha code sy code! = '' sy code! = tsy misy: tokana_Validated = mpampiasa.profile.check_auth_token (tokana) p = mpampiasa.profile is_verified = check_verification_code (mpampiasa, int (code)) p.mfa_authenticated = is_verified Raha tokana_Validated: Raha_Verified: mpampiasa.profile.mfa_enabled = marina usern taona.profile.seave ( Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend') p.Verfication_code = tsy misy p.uid = get_uuid () p.save () Hafatra.SUCCESS (Mangataka, 'dia voamarina ianao. Tongasoa.') QS = '?' ho an'ny fanalahidy, ny lanjan'ny fangatahana.get.it.items (): QS = QS + lakile + '=' + Sarobidy + '&' Raha manaraka! = '' ary tsy (Nextartswith) ('/ kaonty / logout /') na manaraka Miverina amin'ny HtBPPresponseRedirect (ext) Elif Next.Startswith ('/ kaonty / logout /') na manaraka.Startswith ('/ kaonty / Login /') na manaraka.Startswith ('/ kaonty / fisoratana anarana /'): miverina redirect ('Feed: FEEN') Elif Reques.meta.get ('http_referer', '/'hettswithithoh'/accounts/login/'): Miverena redirect (mifamadika ('Feed: FEED')) Elif tsy manaraka: Miverena redirect (mifamadika ('Feed: FEED') raha tsy izany: Miverina HttpResponseRedirect ('Feed: Feed') raha tsy izany: Hafatra.warning (fangatahana, 'ny kaody nidiranao dia tsy ekena. Azafady manandrana indray.') Elif tsy token_Validated: Hafatra.warning (fangatahana, 'efa lany ny URL na tsy ekena. Azafady manandrana indray.') Logout (fangatahana) Avereno ny redirect (mifamadika ('mpampiasa: Login')) Raha p.mfa_AtTempts> 3: Hafatra.warning (fangatahana, 'niditra tao amin'ny kaody diso mihoatra ny in-3 ianao. Azafady alefaso ny kaody vaovao.') p.verification_code = tsy misy p.save () Elif User.proofile.can_send_mfa <timezone.now (): mpampiasa.profile.mfa_attempts = 0 user.svg.profile.can_send_mfa = Timezone.Now () + DateTime.Timedelta (minitra = 2) usern taona.profile.seave ( Send_verification_text (mpampiasa) Hafatra.SUCCESS (Mangataka, "Ampidiro ny kaody nalefa tamin'ny nomeraon-telefaonanao. Ny kaody dia ho tapitra ao anatin'ny 3 minitra.") raha tsy izany: Hafatra.warning (fangatahana, 'mandefa kaody fanamarinana roa be dia be ianao. Miandrasa minitra vitsivitsy alohan'ny handefasana kaody hafa.') form = tfaform () Hide_logo = tsy misy Raha mpampiasa.profile.hide_logo: Hide_logo = Marina Avereno ny Reger (fangatahana, 'mpampiasa / MFA.html', {'title': 'Enter', 'Xsmall': usent, 'Accl_logout': usern.profile.shake_to_logout, 'preload': diso): @login_required Def MFA_ONBOOBOBERS (fangatahana): Raha fangatahana.method == 'post': form = phonenumberform (fangatahana.post) Mangataha.user.profile.phone_number = form.data ['Phone_Number']. Manolo ('-', '') .Replace (',' '). fangatahana.user.profile.mfa_enabled = marina fangatahana.user.profile.enable_two_factor_authentication = marina Mangataha.user.profile.seave ( Hafatra.SUCCESS (Mangataka, 'Nampiditra nomeraon-telefaona tamin'ny kaontinao ianao.') Mpampiasa = fangatahana.user Miverena redirect (mpampiasa.profile.create_auth_url ())Form = phonenumberform (voalohany = {'phone_number': Mangataka.Ust.USER.PROFile.phne_number raha mangataka.Ufuer.profile.phne_number raha tsy izany Avereno ny Reger (fangatahana, 'mpampiasa / MFA_onboarding.html', {'title': 'Ampidiro ny laharan'ny findainao', 'Forms': endrika ':
SITE_NAME = 'Django App'

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_ADDRESS = username@server.com'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = config['EMAIL_HOST_PASSWORD']
DEFAULT_FROM_EMAIL = '{} <{}>'.format(SITE_NAME, EMAIL_HOST_USER)
... Import

Ilainay koa ny maodely ho an'ireo fomba roa ireo. Andao hampiana ny MFA Mementaly aloha.

Nano mpampiasa / Môtô / mpampiasa / mpampiasa / MFA.html
import os
import json
with open('/etc/config.json') as config_file:
    config = json.load(config_file)
Ampio ity kaody HTML ity amin'ny môdely

{% manitatra 'base.html'%} {% sakana votoaty%} {% Load App_Filters%} {% Crispy_Forms_Tags%} {% csrf_token%} Ampidiro ny kaody fanamarinana Dingana 1: Alefaso ny kaody Aza mizara ny kaody misy anao na iza na iza, satria azo ampiasaina hidirana amin'ny kaontinao vetivety. Mandefa code Dingana 2: Ampidiro ny kaody {{form | crispy}} Tsindrio ny bokotra Enter handefasana ny tenanao ao amin'ny {{{userna.profile.phone_number | SecurePhel.}. Avy eo, ampidiro ny kaody ary tsindrio ny Enter. Ampidiro ny kaody {% endblock%}

Ity dia fanazavan-tena tsara. Ny endrika dia mandefa kaody na kaody tsy misy na inona na inona, ary ho hitanao amin'ny fomba fijery izay andefasantsika ny kaody raha mahazo kaody tsy misy dikany izahay. Avy eo isika dia manana bokotra roa fotsiny, ary ity fomba ity dia afaka mandefa ny kaody miaraka amin'ny bokotra na bokotra. Manaraka, hanisy endrika tsotra isika hanampiana ny laharana an-tariby.

Ny mpampiasa Nano / Modely / mpampiasa / mpampiasa / MFA_onboarding.html

Ampio ny HTML manaraka:
sudo nano /etc/config.json
{% manitatra 'base.html'%} {% sakana votoaty%} {% Crispy_Forms_Tags%} {% csrf_token%} Manangàna fanamarinana roa {{form | crispy}} Ampio ny nomeraon-telefaona {% endblock%}

Ity endrika ity dia somary tsotra kokoa, izay fotsiny no nanala ny endrika nomeraon-telefaona noforoninay ary avelao ny mpampiasa hampiditra nomeraon-telefaona.

Tena tsara izany! Raha mbola napetraka tsara ny zava-drehetra, dia tokony ho afaka mandefa hafatra isika, ary miditra amin'ny mpampiasa miaraka amin'ny laharan'ny findainy raha vao manampy ny url ny URL. Ny zavatra farany ilaintsika hananganana dia fomba fijery mombamomba antsika mba hahafahantsika manova ny nomeraon-telefaonany tsy misy fidirana.
{
	"EMAIL_HOST_PASSWORD": "<some password here>"
}
Andao isika hanampy ny fomba fijery mombamomba ny mpampiasa / views.py. Ity fomba fijery ity dia hanavao ny bio, ny mailaka, ny anarana, ny anarana ary ny laharan-telefaona, ary koa mamela antsika hampiorina ny fanamarinana marobe. Voalohany, mila endrika roa hafa isika amin'ny mpampiasa / Forms.py

# ... Import USERUPDATEFORF (Formd.modelform): Email = Forms.emailfield () Kilasy Meta: Modely = mpampiasa Sahan-tany = ['Username', 'Email'] Phone_Number_Label = 'Nomeraon-telefaona (tsy misy habaka, parentesy \' (\ 'na dashes \' - \ ', isa manomboka + ihany)' Class ProfileUpdateform (form.modelform): nisoratra anarana = form.booleanfield (takiana = diso) Phone_Number = Forms.Charfield (takiana = diso) Def __init __ (tena, * args, ** kwargs): Super (Profilupdateform, self) .__ Init __ (* args, ** kwargs) Kilasy Meta: Modely = Profile Sahan-tany = ['Bio', 'Phone_Number', 'Enable_MFA', 'nisoratra anarana']

... Import
nano users/templates/users/verification_email.html
Manaraka, afaka mamorona fomba fijery isika hampiasa ireo endrika roa ireo. Hanova ireo mpampiasa / views.py ary manampy amin'ny fomba fijery.
# Ampio ireo fanafarana ireo avy amin'ny .Forms fanafarana mpampiasa mpampiasa, profilupdateform Avy amin'ny Django.Views.DecOrators.Cache Now_Cache Avy amin'ny Django.Views.DecOratorS.CSRF Ampidiro CSRF_EXEMPT avy amin'ny .models profil profil avy amin'ny .mfa import send_user_text @csrf_exempt @never_cache @login_required DEF mombamomba (fangatahana): Raha fangatahana.method == 'post': U_Form = mpampiasa (fangatahana.post, ohatra = fangatahana) p_Form = profilupdateform (fangatahana.post, fangatahana.files, Ohatra = Mangataka.Us..Froofile) Raha U_Form.is_Valid () sy p_form.is_Valid (): New_phone_number = p_Form.data ['Phone_Number'] u_form.save () TANTARANY = p_form.SAVE (Diso = diso) Profil.phone_number = profil.phone_number.replace ('-', '') .Replace ('(', ''). manolo (')') proficl profile.SAVE ( Raha vaovao_phone_number! = oldprofile.phone_number sy oldprofile.phone_number sy len (oldprofile.phone_number)> = 11: profil.mfa_enabled = marina proficl profile.SAVE ( Send_Text.Phone_Number, 'Ny nomeraon-telefaonanao dia nohavaozina ho' + New_phone_number + ''. Raha Profile.enable_two_factore_authentication sy profil.phone_number sy Len (Profil.phone_number) <11: profil.enable_two_factore_authentication = Diso Hafatra.SUCCESS (Mangataka, Ftwno Factor Actor dia mety ho voadona tsy miditra amin'ny laharana an-tariby. Azafady ampidiro ny nomeraon-telefaona mba ahafahana manamarina ny fanamarinana roa. ') proficl profile.SAVE ( Raha vaovao_phone_number! = oldprofile.phone_number sy vaovao_phone_number sy len (New_phone_number)> = 11: SEND_USER_TEXT (Mangataka.Us.Us.Us.Us, 'Nampiditra ity isa ity ho an'ny fanamarinana roa ianao. profil.mfa_enabled = marina Profile.mfa_code_expirires = Timezone.Now () + DateTime.Timedelta (minitra = 3) proficl profile.SAVE ( Miverena redirect (profil.create_auth_url ()) Hafatra.Success (fangatahana, ny mombamomba an'i F'your dia nohavaozina! ') Print ('Profile Profile Nohavaozina') Avereno ny redirect ('mpampiasa: mombamomba') raha tsy izany: U_Form = mpampiasa (ohatra = fangatahana) P_Form = ProfileUpdateform context = { 'U_Form': u_form, 'p_form': p_form, 'Lohateny': 'Hanavao ny mombamomba anao', } Avereno ny RENDER (Mangataka, 'mpampiasa / Profile.html', Toe-javatra)

Ampio ireo fanafarana ireo

Mila modely ihany koa isika noho io fomba fijery io.
SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'

BASE_URL = PROTOCOL + '://' + DOMAIN
Nano mpampiasa / Modely / mpampiasa / Profile / Profile.html

{% manitatra "base.html"%} {% Crispy_Forms_Tags%} {% load feed_filters%} {% sakana votoaty%} Hanova ny mombamomba anao {% csrf_token%} Fampahalalana mombamomba {{u_form | crispy}} {{p_form | crispy}} Fanavaozana} voavonjy {% endblock votoaty%} {% block javascript%} var form = document.getelementbyid ('profil-form'); $ ('Input'). Ovay (miasa () {) var Formdata = Formdata vaovao (endrika); $ .ajax ({ url: window.location.href, Karazana: "Lahatsoratra", Data: formdata, Processdata: Diso, CENTENTYPE: Diso, Fotoana: 1000 * 60, Fahombiazana: fiasa (data) { $ (navoaka) .removeclass ("afenina"); SETTIMEOP (ASA () { $ (Navoaka) .Addclass ("Fade-Nafenina"); SETTIMEOP (ASA () { $ (navoaka) .addclass ("afenina"); $ (Navoaka) .removeclass ("Fade-nafenina"); }, 2000); }, 2000); } }))))); }))))); {% endblock%}

Ho hitanao fa tsotra tsotra ity, saingy manana JavaScript sasany ao anatin'izany izay lahatsoratra mandeha ho azy ny votoatin'ny endrika rehefa havaozina izy ireo. Tena ilaina izany, ka afaka manao fanovana ianao nefa tsy mila manery ny fandefasana isaky ny misy.

Manaraka, mila URL isika misolo tena ireo fomba fijery rehetra amin'ireo mpampiasa URL Patters. Hanova ireo mpampiasa / URLs.py ary ampio ity kaody ity:

# ... kaody teo aloha, fanafarana Avy amin'ny django.urls manafatra lalana avy amin'ny. fijery import App_Name = 'mpampiasa' Urlpatterns = [ # ... Ny lamina URL nidirantsika teo aloha, ampio ny andalana telo manaraka Làlana ('MFA ///', views.mfa, anarana = 'mfa'), Làlana ('MFA / onboarding /', views.mfa_onboarding, anarana = 'mfa_onboarding'), lalana ('profil /', views.profile, anarana = 'profil'), ]
nano users/tokens.py
... Kaody teo aloha, fanafarana

... Ny lamina URL nidirantsika teo aloha, ampio ny andalana telo manaraka

Ankehitriny dia fotoana tsara hizaha toetra ny tetik'asa. Fa aloha, andao hanao backup hafa.
from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
    def _make_hash_value(self, user, timestamp):
        return (
            six.text_type(user.pk) + six.text_type(timestamp)
        )
account_activation_token = TokenGenerator()
unsubscribe_token = TokenGenerator()
nomaniny ho solon'izay

Ary mihazakazaka ny mpizara. Alohan'ny hametrahantsika ny mpizara Linux, dia tsara ny mamela ny fanamarinana roa amin'ny kaonty. Izahay dia hanao izany amin'ny url profil, / mpampiasa / profil / profile / profile /, ary jereo ny boaty mba ahafahana manamarina rehefa avy niditra ny nomeraon-telefaoninay, ary avy eo ny fandefasana ny taratasy.

Python fitantanana.py runserver localhost: 8000

Tsidiho ny Webpage amin'ny alàlan'ny fandehanana any amin'ny tranonkalanao, mampiasa google Chrome aho amin'ity ohatra ity, ary miditra amin'ny URL https: // localhost: 8000 / kaonty / profil / profile

Ho afaka miditra ianao raha ilaina ary avelao ny fanamarinana roa.
nano users/email.py
Ity tetikasa ity dia mila mpizara hazakazaka mba hahafahany mandefa mailaka. Fa aloha, mila fomba hahitana lesoka isika. Ho hitanao fa raha mihazakazaka ny mpizara amin'ny mode debug ianao, miaraka amin'ny setting.debug mitovy amin'ny marina, ny mpizara dia mampiseho faingana ny mpizara. Mba hampisehoana hadisoana tsy mampiasa mode debug, izay tsy azo antoka amin'ny mpizara mpamokatra, dia tokony hampiditra fomba fijery momba izany isika. Ny lesoka lehibe indrindra tokony ho vitantsika dia:

Hadisoana 500 - Olana amin'ny kaody misy antsika Hadisoana 404 - Pejy iray izay tsy hita (URL tapaka) Hadisoana 403 - Ny fahazoan-dàlana dia nolavina

Aleo ampio ny fampiharana vaovao hiatrehana ireo lesoka ireo, antsoina hoe lesoka.
from django.contrib.auth import get_user_model
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.contrib.sites.shortcuts import get_current_site
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.utils.encoding import force_bytes
from django.core.mail import EmailMultiAlternatives
from django.shortcuts import render
from .tokens import account_activation_token
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django.template import Template, Context
from django.conf import settings
import traceback

def send_verification_email(user):
    User = get_user_model()
    mail_subject = '[{}] Activate your account.'.format(settings.SITE_NAME)
    html_message = render_to_string('users/verification_email.html', {
        'user': user,
        'domain': settings.DOMAIN,
        'protocol': 'https',
        'uid': urlsafe_base64_encode(force_bytes(user.pk)),
        'token': account_activation_token.make_token(user),
    })
    send_html_email(user, mail_subject, html_message)
python fitantanana.py Startapp Erurors

Ampio izany amin'ny setting.Py tahaka ny nataonay taloha, tao amin'ny fametrahana_apps napetraka, ary atombohy amin'ny alàlan'ny fampidirana ny fomba fijery sasany ao amin'ny App / URLs.py, izay misy ny tetikasa DJANGo.

tanana handler404 = 'errors.views.handler404' ' Handler500 = 'Errors.Views.handler500' tanana handler403 = 'Errors.views.handler403'
def send_html_email(user, mail_subject, html_message):
    to_email = user.email
    username = user.username
    if to_email == '':
        return None
    unsub_link = settings.BASE_URL + user.profile.create_unsubscribe_link()
    html_message = html_message + "<p><a href=\"" + unsub_link +  "\" + title=\"Unsubscribe from " + settings.SITE_NAME + " emails\">Unsubscribe</a></p></body></html>"
    msg = EmailMultiAlternatives(mail_subject, strip_tags(html_message), settings.DEFAULT_FROM_EMAIL, [to_email], headers={'List-Unsubscribe' : '<' + unsub_link + '>'},)
    msg.attach_alternative(html_message, "text/html")
    profile = user.profile
    try:
        msg.send(fail_silently=False)
        if not profile.email_valid:
            profile.email_valid=True
            profile.save()
    except:
        profile.email_valid=False
        profile.save()
Izany ihany no ilaintsika ankoatra ny fomba fijery diso, ny modely ary ny afovoany kely. Andao hamaritra ireo izay toy izao:

avy amin'ny django.shortcuts import manafoana, redirect Avy amin'ny django.http Import HTBTPRESPENSE Avy amin'ny stacktrace.models import Hadisoana Avy amin'ny Erros.middleware import get_current_Exception Avy amin'i Django.contrib.auth.decorators Import Login_required Avy amin'ny django.contrib.auth.decorators fanafarana mpampiasa_passes_test avy amin'ny .logs import get_logs avy amin'ny tarehy.Tests import is_superuser_or_vendor Avy amin'ny Django.Views.DecOratorS.CSRF Ampidiro CSRF_EXEMPT Avy amin'ny hadisoana.highlight chunc import scighlight_code Avy amin'ny django.shortcuts import redirect Avy amin'ny Django.urls Import Reverse # Mamorona ny fomba fijerinao eto. @login_required @user_passes_test (is_superuser_or_vendor) DEF LogS (fangatahana): Logs = manasongadina_code (get_logs ()) Avereno atao hoe Return (fangatahana, 'Errors / Live_Error.html', {'title': 'Hadisoana': 'Fanamarihana': 'Ireo dia ny hazo' vao haingana ':' Feno ': Feno': Marina ': Marina': marina}) @login_required @user_passes_test (is_superuser_or_vendor) def logs_api (fangatahana): Logs = manasongadina_code (get_logs ()) Miverena ny HTBP HTBPRESPENSE (Logs) @login_required DEF Handler404 (fangatahana, exception): Raha tsy fangatahana.Path.EndSwith ('/'): miverina redirect (fangatahana.path + '/') Avereno ny Reve (fangatahana, 'Errors / Error.html', {'title': 'Hadisoana 404', 'Hadisoana': 'Tsy hita ny mpizara.', 'is_404': marina}) DEF Handler500 (fangatahana): Print (Get_Current_Exception ()) mpampiasa = tsy misy Raha hasattr (fangatahana, 'mpampiasa') ary mangataka sy mangataka sy mangataka.user.is_authenticated: Mpampiasa = fangatahana.user Andramo: ERROR.OBJEJECS.CREATE (mpampiasa = mpampiasa = mpampiasa, stack_trace = get_current_exception (), fanamarihana = 'Nitazona 500 ny mpandrafitra 500.') Afa-tsy: Pass Avereno ny Review DEF Handler403 (fangatahana, exception): Avereno ny Reger (fangatahana, 'hadisoana DEF Handler400 (fangatahana, exception): Avereno atao hoe Retur (Quare, 'Errors / Error.html', {'title': 'Hadisoana 400', 'Pagetitle': 'Hadisoana 400', 'Fanamarihana': 'Fangatahana ratsy'. '}

Mamorona fomba fijerinao eto.

Manaraka, andao hamaritana ny midorleware hiatrehana ireo lesoka ireo. Hanao izany isika amin'ny alàlan'ny fampidirana voalohany amin'ny MiddleWare_Classes ao amin'ny Settings.py, miaraka amin'ny anaran'ilay afovoany.

MiddleWare_Classes = [ # ... Ny afovoany teo aloha 'Errors.middleware.Excegerverbosemiddleware, ]

... Ny afovoany teo aloha

Manaraka, aleo ampio ny afovoany.
nano users/models.py
Avy amin'ny kofehy manafoana eo an-toerana manafatra varotra Avy amin'ny Django.utils.Deprecrecer implowwordormexin _Error = Local () Class exceptionverbosemiddleware (MiddleWarMixin): DEF PROCHEWCEIXCEPIEM (Mianara, mangataka, manavaka): _error.value = traceback.format_Exc () Def Get_Current_Exception (): Andramo: Miverina _Error.value Afa-tsy ireotressError: Aza miverina Def Set_Current_Exception (Exception): Andramo: _error.value = Exception Afa-tsy ireotressError: printy ('toetra mampiavaka ny hadisoana.')
# Manampy fiasa isika mba hahazoana ny ankehitriny amin'ny fampiasana kofehy eo an-toerana, izay manampy antsika handinika ireo lesoka rehetra ao amin'ny kaody. Raha resaka modely, dia mila iray ihany isika, satria isika dia mamaritra ny lohateny amin'ny fomba fijery. Ny môdely fotsiny dia mila manome ny anaram-boninahitra sy "trace", ny fahadisoantsika dia tsy misy dikany avy amin'ny teny manodidina.
Nano Errors / Codlates / Error / Error.html

{% manitatra 'base.html'%} {% sakana votoaty%} {{pagetitle}} {{Trace}} {% endblock%}

Ity no modely faran'izay tsotra indrindra indrindra, fa izay kosa dia mora ny mahita ireo lesoka ao amin'ny tetik'asa. Manaraka, andao hanaisotra ny debug amin'ny toe-javatra.
# Nano App / Setting.py
            TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # Mitadiava ity tsipika ity izay apetraka ao amin'ny TRUE, ary ovaina amin'ny FALSE
Debug = diso

Mandehana mialoha ary avereno ny fampiharana izao. Vonona ny hametraka amin'ny mpizara Linux lavitra izahay, ary tohizo ny fampiasa amin'ny endriny avy ao.

sudo backup

Alohan'ny handefasantsika ity kaody ity amin'ny mpizara iray dia tokony hoheverintsika fa mety hisy ny olana sasany amin'ilay fehezan-dalàna. Miankina amin'ny tranga, ireo tranokala izay manaiky ny fampahalalana nalefa ho azy ireo dia hanana olana amin'ny spam naparitaka sy sarotra ny manala ny spam. Tsy tokony hitranga avy hatrany izany, fa raha mitranga izany, dia hotsarainay any aoriana hoe ahoana ny fomba hanamafisana azy ireo amin'ny tranokala ary hanamarina ny kaonty mpampiasa, ary hanamarina ny mombamomba ny id

Raha jerena ny ohatra iray amin'ny maha-fanamarinana ny Multi Fascentication ohatra izay hodinihintsika, amin'ny famokarana, ny zavatra dia mety ho hafa. Mariho ny fomba itondrantsika ny logins logins, ary ny famantarana efa lany. Raha miditra amin'ny tranokala ny robots, ny fanamarinana roa dia mety ho sarotra kokoa rehefa afaka miditra ny kaody amin'ny fotoana mitovy amin'ilay mpampiasa. Mba hiadiana amin'izany, andao isika hampiasa modely ao amin'ny modely mpampiasa, manambara ny fomba ifandraisantsika amin'ny tranokala rehefa manamarina ny fampiasana ny fampanantenana marobe amin'ny laharana finday izahay. Hanampy safidy ihany koa isika hanamarina amin'ny mailaka. Atombohy amin'ny fanitsiana ny modely mpampiasa an'i Nano.
nano users/views.py
Nano mpampiasa / Models.py

Izany no tokony hampidirintsika ny modely izay ampidirinay. Tsy mila fomba fiasa izahay, variana fotsiny mba hitehirizana id, ny mpampiasa, ny foto-tsofina, ny halavany, ny halavany ary ny fanandramana manohitra ny fanamarinana marobe (kaody iray toa ny 123456 nalefa tamin'ny telefaona na mailaka).

# Tokana fototra ampiasaina hidirana ao amin'ny tranokala Class Mafatoken (Models.model): Mpampiasa = Models.fleelignky (mpampiasa, on_delete = Models.corkade, mifandraika_name = 'mfa_tokens') Timetamp = Models.datetimefield (default = Timezone.WO) lany = Models.datetimefield (default = Timezone.WO) Token = Models.charfield (default = ', max_length = 100) halavany = Models.intEgerfield (default = 6) Fanandramana = Models.intEgerfield (default = 0) UID = Models.charfield (default = Uuid.uid4, Max_Length = 100)
from .email import send_verification_email # Toha fototra iray ampiasaina hiditra ao amin'ny tranokala
Andao hanampy tombontsoa ho an'ny mpampiasa anay, ary hapetrantsika amin'ny fomba ara-bakiteny izao, alohan'ny hifindra amin'ny fidirana amin'ireo mpampiasa manana tombontsoa ho azy avy hatrany. Ao amin'ny modely mpampiasa, ampio ity tsipika ity ao amin'ny mombamomba ity:

Vendor = Models.Booleanfield (default = FALSE)

Toy ny fiovana amin'ny angon-drakitra, mila manao fifindra-monina isika ary mifindra ny angon-drakitra amin'ny fotoana rehetra hanovantsika ny rakitra modely.py ao Django. Tadidio fa ny fanaovana izany dia mampiasa loharanom-baovao isika (raha mbola tsy nampiasaina hatrizay vao nisokatra ny terminal) ary avy eo ny python nitantana ny fifindra-monina ary mifindra monina.

CD Project-Directory-You-nomena anarana # (raha ilaina) Loharano Venv / Bin / Activate python fitantanana.py makmigrations && python fitantanana.py mifindra monina

(raha ilaina)
        # Amin'izao fotoana izao dia azonao atao ny mametraka kaonty izay noforoninao ho mpivarotra amin'ny alàlan'ny fampiasana ny akorandriaka.
    # python fitantanana.py akorandriaka
Avy amin'ny mpampiasa.Models Profile Profile
P = Profil.OBJEKs.GET (UserTO__USERNAME = 'Charlotte')
p.Vendor = Marina
p.save ()
Fivoahana()
# Ankehitriny, andao hivoatra ny fomba fijery fanamarinana marobe momba ny antonony mba hampiasa an'io tokana io. Voalohany, mila manova ny fitaovana mpanampy ny MBA izahay. Mampiasa nano,
nano mpampiasa / mfa.py

Avy amin'ny Django.utils import import import kisendrasendra Ampidiro datime Avy amin'ny django.conf fanafarana avy amin'ny feed.middleware import get_current_request Avy amin'ny Django.contrrif dia mandefa hafatra avy amin'ny .Email import send_html_Email manafatra varotra Avy amin'ny .models import MFATOKEN kaonty_sid = setting.twilio_account_sid auth_token = setting.twilio_auth_token Source_phone = Setting.phone_number Def Send_Text (target_phone, lahatsoratra): Avy amin'ny kliodrafitra Import import twilio.rest Andramo: client = client (kaonty_sid, auth_token) Raha Len (target_phone)> = 11: message = client.messages.create ( to = target_phone, from_ = source_phone, vatana = lahatsoratra + 'Stop Stop hanafoana.') Raha tsy: Hafatra.warning (get_current_request (), 'nisy hadisoana nandefa ny hafatra.') print (traceback.format_EXC ()) def get_num_length (isa, halavany): n = '' ho an'ny x amin'ny karazany (halavany): n = n + str (num) miverina int (n) def send_verification_text (mpampiasa, tokana): halavany = mpampiasa.profile.verification_code_length CODE = Random.Randint (Get_Num_Length (1, halavany), get_num_length (9, halavany)); Token.Token = code Token.Expires = Timezone.Ny () + DateTime.Timedelta (minitra = Setting.Auth_Valid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid tokonken.SAVE () Send_user_Text (mpampiasa, "ny kaody fanamarinana ho anao dia {}". Format (Settings.site_name, str (code))) Def Send_Verication_Email (mpampiasa, tokana): halavany = mpampiasa.profile.verification_code_length CODE = Random.Randint (Get_Num_Length (1, halavany), get_num_length (9, halavany)); Token.Token = code Token.Expires = Timezone.Ny () + DateTime.Timedelta (minitra = Setting.Auth_Valid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid tokonken.SAVE () Send_html_Email (mpampiasa, "Ny kaody fanamarinana ho an'ny {} {}". Fahadisoana Def Send_USER_TEXT (mpampiasa, lahatsoratra): Send_Text (mpampiasa.profile.phone_number, text) Def Check_verification_code (mpampiasa, tokana, code): Token.Attempts = token.attempts + 1 profil = User.profile valiny = (Token! = Tsy misy na code! = '' sy tokana.token == code sy (tokana.expires> Timezone.WOW () sy tokana.Atotempts <= Setting.mfa_token_attempts) Raha Token.Attempts <3 ary valiny: profil.verification_code_length = 6 Elif Token.Attempts> 1 ary tsy valiny: profil.verification_code_length = profile.verification_code_length + 2 Raha Profile.Verification_code_length> Settingmfa_token_length: profil.verification_code_length = Setting.mfa_token_length tokonken.SAVE () proficl profile.SAVE ( valiny fiverenana

# Manamarina ilay mpampiasa mampiasa ny mailaka na ny laharana findainy Def MFA (fangatahana, username, estsertoken): Token = MFATOKE.OBJEJECKS.Filter (UID = Username, Edires__GT = FIAINANA DEMEZONE.MINGE). Raha tsy Token: Token = MFATOKE.OBJEjectS.Create (mpampiasa = mpampiasa =) Mpampiasa = mpampiasa.Objects.Filter (id = token.user.id) .first () # alao ny mpampiasa amin'ny tokana Raha tsy mpampiasa sy fangatahana.Ud.US_AUTHenticated: miverina ny redirect Raha tsy mpampiasa: atsangano ny Permissionened () # Deny raha tsy nisy mpampiasa hita Manaraka = Mangataka.get.get ('Next', '') Raha tsy mpampiasa.profile.enable_two_factor_authentication sy mpampiasa.S.ProFile.Check_Auth_tokeut (Usertoken, tokana): # jereo ny famantarana an'i Auth auth_login (fangatahana, backend = 'django.contrib.auth.backends.modelbackend') # Login amin'ny mpampiasa raha tsy efa tafiditra izy ireo mpampiasa.profile.mfa_expires = Timezone.WOW () + DateTime.Timedelta (minitra = Settings.login_valid_malid_malid_mal usern taona.profile.seave ( Miverena amin'ny HtBPResponseRection (manaraka raha manaraka! Raha tsy mpampiasa.profile.mfa_Enabled: # Hamarino raha i MFA dia azo atao Raha tsy mijery_verification_Time (mpampiasa, tokana): # jereo ny fotoana mpampiasa.profile.mfa_enabled = diso # mazava ny nomeraon-telefaona mpampiasa.profile.enable_two_factor_authentication = marina # mamela ny MFA mpampiasa.profile.phone_number = '+1' # tsy manafoana ny laharan'ny telefaona mpampiasa.profile.sava () # vonjeo ny mombamomba azy Auth_Login (fangatahana, mpampiasa, backend = 'django.contrib.auth.backends.modelbackend') # Log in raha tsy ampiasain'ny mpampiasa azy Hafatra.warning (fangatahana, 'Azafady ampidiro ny laharana an-tariby manan-kery ary manamarina izany amin'ny kaody iray.') Avereno ny redirect (mifamadika ('mpampiasa: MFA_ONBOOBOBOSING')) Raha ny fangatahana.method == 'post' ary tsy fraud_detect (fangatahana, marina): # raha fangatahana ny fangatahana ny fangatahana form = tfaform (fangatahana.post) # manorata ny endrika Code = str (form.data.get ('Code', tsy misy)) # Mahazo ny kaody Raha code sy code! = '' sy code! = tsy misy: # ho azo antoka fa tsy foana tokana_Validated = mpampiasa.profile.check_auth_tokeuth_token (usertoken) # jereo ny famantarana an'i AUTH p = mpampiasa.profile is_verified = check_verification_code (mpampiasa, tokana, code) # jereo ny kaody p.mfa_authenticated = is_verified Raha Token_Validated: # raha ny zava-drehetra Raha is_verified: # dia milamina mpampiasa.profile.mfa_enabled = marina # mamela ny MFA (raha tsy efa zatra) usern taona.profile.seave ( auth_login (fangatahana, mpampiasa, backend = 'django.contrib.outh.backends.modelbackend') # Login amin'ny mpampiasa Face = mpampiasa.faces.Filter (Session_Key = tsy misy) .last () p.mfa_expires = Timezone.WOW () + DateTime.Timedelta (minitra = Settings.login_malid_malid_mines_minuts) p.save () Hafatra.SUCCESS (Mangataka, 'dia voamarina ianao. Tongasoa.') QS = '?' Ho an'ny fanalahidy, ny lanjan'ny fangatahana.get.items (): # manorena fangatahana fangatahana ho an'ny marika manaraka (raha misy) QS = QS + lakile + '=' + Sarobidy + '&' Raha manaraka! = '' ary tsy (Nextartswith) ('/ kaonty / logout /') na manaraka Miverena ny HPPPPresponseRedirect (Next) # redirect Elif Next.Startswith ('/ kaonty / logout /') na manaraka.Startswith ('/ kaonty / Login /') na manaraka.Startswith ('/ kaonty / fisoratana anarana /'): miverina redirect (mifamadika ('/')) Elif Reques.meta.get ('http_referer', '/'hettswithithoh'/accounts/login/'): miverina redirect (mifamadika ('/')) Elif tsy manaraka: miverina redirect (mifamadika ('/')) raha tsy izany: Miverena ny HPPPPresponseRedirect (mifamadika ('manamarina: vanim-potoana') + '? Next =' + Mangataka.meta.get ('http_referer', '/') raha tsy izany: Hafatra.warning (fangatahana, 'ny kaody nidiranao dia tsy ekena. Azafady manandrana indray.') Elif tsy token_Validated: # raha tsy manan-kery ny tokana Hafatra.warning (fangatahana, 'efa lany ny URL na tsy ekena. Azafady manandrana indray.') Logout (fangatahana) Avereno ny redirect (mifamadika ('mpampiasa: Login')) Raha p.mfa_AtTempts> 3: # raha be dia be ny andrana Hafatra.warning (fangatahana, 'ianaoniditra tao amin'ny kaody diso mihoatra ny in-3 mahery. Alefaso azafady ny kaody vaovao. ') p.verification_code = tsy misy p.save () Elif User.proofile.can_send_mfa <timezone.now (): mpampiasa.profile.mfa_attempts = 0 user.svg.profile.can_send_mfa = Timezone.Now () + DateTime.Timedelta (minitra = 2) usern taona.profile.seave ( Raha form.data.get ('Send_Email', FALSE): # mandefa ny mailaka (na lahatsoratra) Send_MFA_VEverification_Email (mpampiasa, tokana) raha tsy izany: Send_verification_text (mpampiasa, tokana) Hafatra.SUCCESS (Mangataka, "Ampidiro ny kaody nalefa tamin'ny nomeraon-telefaonanao na mailaka. Ny kaody dia ho tapitra ao anatin'ny 3 minitra.") Elif User.profile.can_send_mfa <timezone.now () + DateTime.Timedelta (segondra = 115): Hafatra.warning (fangatahana, 'mandefa kaody fanamarinana roa be dia be ianao. Miandrasa minitra vitsivitsy alohan'ny handefasana kaody hafa.') form = tfaform () Hide_logo = tsy misy Raha mpampiasa.profile.hide_logo: Hide_logo = Marina Raha Mangataka.Ud.USER.IS_AUTHENTICATED: REPURGT REDIRECT (mifamadika ('/')) # Manombana ny endrika (ho an'ny fangatahana) Avereno miverina (fangatahana, 'mpampiasa / mfa.html', {'title': 'Enter', 'Xsmall,': 'Preload':
nano users/views.py
Manamarina ilay mpampiasa mampiasa ny mailaka na ny nomeraon-telefaonany
# Safidio ny marika amin'ny sandany izay nandalo tao amin'ny URL (A Uuid)
# Raha tsy noforonina io fivoriana io dia namorona azy io
Raiso ny mpampiasa amin'ny tokana

Raha efa voamarina izy ireo dia miditra ao

Mandà raha tsy nisy mpampiasa hita
# Zahao ny famantarana an'i AUTH
            send_verification_email(user) # Midira ao amin'ny mpampiasa raha mbola tsy tafiditra ao izy ireo
Mametraha lany daty amin'ny maha-izy azy

Hodio ny mpampiasa amin'ny pejy manaraka

Hamarino raha azo i MFA
# Hamarino ny fotoana
Hamafa ny laharan'ny telefaona

Mampifanaraka MFA

Ampidiro ny nomeraon-telefaona
nano users/templates/users/resend_activation.html
Tehirizo ny mombamomba azy

Ampidiro ny mpampiasa raha tsy alehany ny MFA

Raha ny fangatahana dia fangatahana lahatsoratra
Ampidiro ny endrika

Raiso ny kaody

Ataovy azo antoka fa tsy foana
def sendwelcomeemail(user):
    User = get_user_model()
    html = open('{}/users/welcome_email.html'.format(settings.BASE_DIR)).read()
    subject = 'Welcome to ' + settings.SITE_NAME + ', {{ username }}!'
    template = Template(html)
    subjtemplate = Template(subject)
    context = Context({'username': user.username, 'base_url': settings.BASE_URL, 'model_name': 'Daisy Holton, 'site_name': settings.SITE_NAME})
    renderedtemplate = template.render(context)
    subjcontext = Context({'username': user.username})
    subjrenderedtemplate = subjtemplate.render(subjcontext)
    send_html_email(user, subjrenderedtemplate, renderedtemplate)
Zahao ny famantarana an'i AUTH

Zahao ny kaody

Raha ny zava-drehetra
Dia milamina

Ampiasao ny MFA (raha tsy efa zatra)

Midira ao amin'ny mpampiasa

Manorata fangatahana fangatahana ho an'ny tarehimarika manaraka (raha misy)

Redirect

Raha tsy manan-kery ny tokana

Raha be dia be ny fanandramana
# Alefaso ny mailaka (na lahatsoratra)
Mamerina ny endrika (ho an'ny fangatahana)

Rehefa manampy an'ity kaody ity isika dia ataovy azo antoka fa hanafatra ny fiasa handefasana mailaka. Any an-tampon'ny rakitra, ny fijerin'ny mpampiasa (miaraka amin'ny fanafarana hafa), ampio

avy amin'ny .mfa import import send_verification_email ho send_mfa_verification_email
Ankehitriny, mila manoratra izany fiasa izany isika alohan'ny hanaovana izany. Tokony hanitatra ny fiasantsika mailaka, ary handefa mailaka fotsiny amin'ny mpampiasa amin'ny kaody fanamarinana.

nano mpampiasa / mfa.py

Def Send_Verication_Email (mpampiasa, tokana): halavany = mpampiasa.profile.verification_code_length CODE = Random.Randint (Get_Num_Length (1, halavany), get_num_length (9, halavany)); Token.Token = code Token.Expires = Timezone.Ny () + DateTime.Timedelta (minitra = Setting.Auth_Valid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid_malid tokonken.SAVE () Send_html_Email (mpampiasa, "Ny kaody fanamarinana ho an'ny {} {}". Fahadisoana
Ka izao no asa lehibe izao, izao dia manana rafitra fanamarinana marobe isika izay miankina amin'ny laharana finday na mailaka mba hidirana. Fa mila fomba hanesorana ihany koa isika, na farafaharatsiny afeninay ireo mpampiasa izay tsy miara-miasa amin'ny fehezan-dalàna. Mety ho Spammers, robots na izay tsy dia misy dikany amin'ny asantsika. Topazo maso ny fomba fijery ananako ho an'ny fanaraha-maso ireo mpampiasa ao amin'ny tranokalako:

# fanafarana Avy amin'i Django.contrib.auth.decorators Import Login_required Avy amin'ny django.contrib.auth.decorators fanafarana mpampiasa_passes_test avy amin'ny .tess import is_superuser_or_vendor # mila mamorona ity fitsapana ity isika @login_required @user_passes_test (is_superuser_or_vendor) def mpampiasa (fangatahana): # Fantaro ny lisitry ny mpampiasa New_Today = mpampiasa.Objects.Filter (IS_Active = Marina, Daty_Joined__GTe = Timezone.WE () - DateTime.Timedelta (ora = 24)). Count () New_this_month = mpampiasa.Objects.Filter (IS_Active = Marina, Daty_Joined__GTe = Timezone.WE () - DateTime.Timedelta (ora = 24 * 30)). Count () Mpisokaloka = mpampiasa.Objects.Filter (is_active = marina, profil__subscribe = marina) .count () Avereno ny RENDER (Mangataka, 'mpampiasa / mpampiasa.html', {# Rect mpampiasa mpampiasa ao anaty moramora 'Lohateny': 'Ny kaonty rehetra', 'Mpampiasa': mpampiasa.Objectsall (), 'New_Today': New_Today, 'New_this_month': New_This_Month, 'Mpisokaloka': Mpisolo-tanana })

fanafarana
Mila mamorona ity fitsapana ity isika

Makà lisitry ny mpampiasa

Avereno ireo mpampiasa ao anaty moramora
Mariho fa ity kaody ity dia mampiasa fitsapana iray, mila manambara ity fitsapana ity ao amin'ny rakitra fitsapana.py ary manafatra azy. Ireo mpampiasa fanovana / fitsapana.py, andao hamorona ny fitsapana.

def is_superuser_or_vendor (mpampiasa): Avereno ny mpampiasa.profile.vendor na mpampiasa.is_superuser

Ity dia miaraka amin'ireo mpampiasa / mpampiasa.html Template, izay toa toy izao:
{% manitatra 'base.html'%} {% Load App_Filters%} {% sakana votoaty%} Mpitsidika voasoratra anarana rehetra {{New_Today | NTS | Calitize}} Vaovao anio, {{New_this_month | NTS}} Vaovao amin'ity volana ity, {{} {}} {} {% ho an'ny mpampiasa mpampiasa%} {% ampidiro ny 'mpampiasa / _user.html'%} {% Endfor%} {% endblock%}

Mpampiasa.html. Rehefa mampiasa modely izay misy setroka ary tsy mampiasa fanitarana, ny hevitra tsara dia ny manampy mari-panaovana (

Mariho fa be dia be i Jinja, mety tsy manana ireo variable rehetra voafaritry ireo. Fa izao no endrik'ilay kaody nataoko.
    # {% Load App_Filters%}


    
      @ {{user.username} - {{user.PROFile.name)} ({{user.profile.preferred_name}})
      Farany farany {{userny.profile.last_seen | Daty: "f d, y"} {{user.profile.last_seen | Fotoana: "H: i"}
      Niditra tamin'ny {{usern.profile.date_Joined | daty: "f d, y"} {{user.profile.date_Joined | Fotoana: "H: i"}
      {{user.email}}
      {% raha mpampiasa.profile.phone_number%} {{user.PROFile.phone_number} {% Endif%}
      {% raha mpampiasa.verification.last%}
      '{{user.verications.last.full_name}}'
       {{user.verications.last.document_number}}
       {{user.verication.last.birthdate}}}
       ID eo anoloana
       Miverina miverina
      {% Endif%}
      #{{ Anara-mpampiasa }}
      {% raha mpampiasa.profile.subscribes%} nisoratra anarana {% olon-kafa%} tsy nisoratra anarana {% enf%}
    
    {% raha tsy mpampiasa.is_superuser%}
    {% ampidiro ny 'mpampiasa' / toggle_active.html '%}
    {% Endif%}
    {% autoescape off%}    
    {{user.bio}}
    {% therautoescape%}
    
    {% raha mpampiasa.profile.identity_verified%} mpampiasa voamarina. {% hafa%} mpampiasa tsy voamarina. {% endif%} fanamarinana: {{ust.verification.count | nts}}
{{user.id}} </ bitika>

Mila subemplate hafa koa izahay, Toggle_active.html. Ity modely ity dia tokony ho endrika izay ahafahantsika manangona na mavitrika ny mpampiasa iray.

{% raha mpampiasa.is_active%} {% hafa%} {% Endif%}

Isika koa dia mila manampy ny fomba fijery amin'ny hetsika mpampiasa, ary ny lamina URL mety. Na dia eo am-pitrangan'izany aza isika, andao isika hanisy fomba fijery hanafoana ny mpampiasa raha toa ka mila an'izany isika.

Avy amin'ny Django.Views.DecOratorS.CSRF Ampidiro CSRF_EXEMPT @csrf_exempt @login_required @user_passes_test (is_superuser_or_vendor) DEF TOGGLGE_USER_ACTIVE (fangatahana, pk): Mpampiasa = mpampiasa.ObjectS.Gb (id = pk) Raha fangatahana.method == 'post': mpampiasa.is_active = tsy mpampiasa.is_active user.seave () Miverena amin'ny HTBPRESPENSE ('' raha mpampiasa.is_active hafa '') # Fanafarana Avy amin'ny Django.contrib.outh.mixins impix loginrequiredMixin, mpampiasaPassestMixin Avy amin'ny Django.Views.Generic import DeleteView Classerdeleteeview (LoginRequiredMixin, mpampiasaPassestestMixin, DeleteeView): Modely = mpampiasa fahombiazana_url = '/' # ny redirect amin'ny URL mahomby Def get_context_data (tena, ** kwargs): context = super (). Get_context_data (** kwargs) fiverenana amin'ny laoniny def test_func (tena): # fitsapana raha mpampiasa dia superuser ary manana alalana hamafa mpampiasa = self.get_object () Raha ny tena.request.Soer! = mpampiasa sy ny tenanao.Tauest.user.is_superUser: miverina marina Miverena FALSE

fanafarana

Ny redirect amin'ny URL mahomby
# Fitsapana raha mpampiasa dia superuser ary manana alalana hamafa
    # Na dia azo ampiharina izany rehefa ilaina izany, ny famafana ny mpampiasa dia tsy tokony ho ilaina ny ankamaroan'ny fotoana, azontsika atao fotsiny ny mampihetsi-po fotsiny ny fahitana ireo mpampiasa izay mitsidika ilay tranokala raha mila manilika azy ireo isika.
    # Ny lamina URL dia nampitanay izany. Miaraka amin'i Nano, Hanova ny mpampiasa / urls.py ary ampio ireo andalana ireo:
            TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Nano mpampiasa / URLS.PY
Ny tsipika dia tokony hiditra ao amin'ny lisitry ny lalana amin'ny fomba fijerin'ny mpampiasa, alohan'ny fiafaran'ny "]" fa aorian'ny fiandohana "[".

# ... Lalana ('mpampiasa // Delete /', mpampiasa mpampiasa / usterdeleteview.S_VIE (Endrompoko / mpampiasa_confirm_delete.html '), anarana =' Delete-mpampiasa '), Lalana ('mpampiasa // mavitrika /', views.toggle_user_active, anarana = 'Toggle-Active-active'), # ...

...
source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
...

Ankehitriny, ataovy azo antoka fa avereno ny tranokala mba hahafahanao misintona azy amin'ny mpizara tranonkala dia hanohy hiasa isika. Avy amin'ny baiko,

sudo backup

Ankehitriny dia tohanana ny tranokalanay.

Noho izany dia manana endri-javatra vitsivitsy ilaina kokoa isika izao. Ahoana kosa ny amin'ilay sary lehibe eto? Ity fehezan-dalàna ity dia mbola tsy azo idirana amin'ny Internet, tsy mbola misy mpizara mailaka, ary mila manitatra ny fampiharana izahay mba hampiditra ny fizotran'ny fanamarinana feno sy ny fametahana malefaka mba hanampiana anay handinika ilay tranokala, miaraka amin'ireo protocols azo antoka.
# Ho azontsika amin'izany rehetra izany. Ny tena zava-dehibe indrindra amin'izao fotoana izao dia ny hahazoana ity code ity amin'ny Internet, izay azontsika atao amin'ny andalana kely fotsiny amin'ny mpizara Ubuntu. Mila manofa mpizara ho an'ity ianao, raha tsy manana mpizara ao an-trano sy famandrihana Internet amin'ny raharaham-barotra izay ahafahanao manokatra seranan-tsambo. Izaho manokana dia mihazakazaka ny tranokalako amin'ny HP Z440 izay napetraka ao amin'ny tranoko, fa mora kokoa noho ny filàna fototra ilaina hanofa trano tsy miankina virtoaly (VPS) virtoaly (VPS) virtoaly (vps).
        if user and user.profile.can_login < timezone.now(): # Aza hadino fa tsy manify ny fehezan-dalàna izay mihazakazaka ankehitriny, dia mila tazomina sy hiharatsy izy io alohan'ny hanomanana antsika hampiasa ny zavatra tsy maintsy hanamboarana vokatra. Ataovy azo antoka fa hitandrina izay ataonao amin'ny Internet, ho azo antoka raha mametraka ity tranokala ity amin'ny Internet amin'ny tranonkala ao amin'ny mpizara Linux ianao, manana drafitra hanakanana fifandraisana tsy ilaina amin'ny tranokalanao. Mety tsy ho olana amin'ny voalohany izany, fa hijery vahaolana isan-karazany isika hiadiana amin'izany, ao anatin'izany ny fianarana milina, ny fahakingan-tsaina sy ny fahitana solosaina. Rehefa lasa olana izy io, dia jereo bebe kokoa amin'ity lahatsoratra ity ho vahaolana.
            # Raha resaka fanofana VPS dia misy toerana be dia be azonao aleha. Google Slow dia manana Servers VPS, ionos, Kamatera, Amazon, AMAZON, ary mpanome bebe kokoa dia manolotra vahaolana mpizara rahona izay mifanaraka amin'ny zavatra ilainay.
                return redirect(user.profile.create_auth_url()) # Mila tsindrio ny endrik'izy ireo ianao ary misafidy drafitra hanombohana. Azonao atao ny mandeha miaraka amin'ny drafitra fototra iray, fa ataovy azo antoka fa ahafahan'ny mpamatsy anao hanokatra seranan-tsambo mpizara seranan-tsambo handefasana mailaka (ity dia tokony ho port 587 sy ny Port 25), ny mpamatsy sasany dia manakana ireo seranana ireo. Hatreto dia manana traikefa tsara indrindra miaraka amin'i Ionos sy Kamatera aho, samy hamela ahy handefa mailaka tsy misy fetra ary ny vidiny dia tsara tarehy.
            else: # Hifandray amin'ny mpizara vaovao ianao noho ny protocol iray antsoina hoe Ssh na ny akorandriaka azo antoka, izay ahafahanao manelanelana lavitra miaraka amin'ny mpizara mitovy amin'ny solosainao manokana, amin'ny solosainao manokana. Rehefa mametraka ny mpizara ianao dia mety hangataka anao ny mpampiantrano ny mpampiantrano anao hampiditra fanalahidy SSH, na hanome anarana sy tenimiafina ianao. Ny lakile SSH dia ny fomba hidiranao ao amin'ny mpizara avy amin'ny lisitry ny baiko hanovana ny kaody. Ampiasao ny safidy eto ambany Ssh-keygen mba hiteraka fanalahidy SSH.
        else: # Ssh-keygen
            user = User.objects.filter(username=username).first() # Tehirizo ny rakitra ary soraty raha mila izany ianao, tsara ny mihodina ny fanalahidinao SSH raha mbola tsy manana ianao. Ankehitriny, azonao atao ny mampiasa ity baiko manaraka ity mba hahitana ny lakilen'ny SH anao. Te-handika izany amin'ny mpizara lavitra anao ianao mba hahafahanao mampiasa azy hanamarina.
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Cat ~ / .ssh / id_rsa.pub
Raha tsy afaka mahita ny lakile SSH ianao rehefa manoratra an'io baiko io (tsipika sy litera lava iray manomboka amin'ny "Ssh-RSA AAA"), dia manandrama ny fanalahidy RSA (dia manoro hevitra azy ireo aho.

Ssh-keygen -t RSA -B 4096

Mamorona VPS mandeha Ubuntu, na izany aza dia mikasa ny hanao izany ianao. Vantany vao namorona VPS ianao tamin'ny alàlan'ny fipihana ireo endrika ireo tao amin'ny tranonkala mpamatsy (Kamatera.com, ionos.com na mitovy), dia te-hiditra ianao. IANAO ihany koa dia tokony ho mora tohina amin'ny anarana mpampiasa default amin'ny mpizara noforoninay, ohatra, Ubuntu.

Ssh ubuntu@xx.xx.xx.xx

Azonao atao ny mangataka tenimiafina, raha angatahana tenimiafina ianao, ampidiro ao anatiny. Tsy hampiasa ny anarana mahazatra izahay, ka aleo atombohy amin'ny alàlan'ny famoronana mpampiasa vaovao ary manampy ny fanalahidin'ny SH.
nano users/sms.py
Aleo atombohy amin'ny alàlan'ny fampidirana rakitra Sshd_Config vaovao, izay milaza ny mpizara ny fomba fampiasana ssh.
# nano sshd_config
# # Ity no rakitra fanamafisana SSHD Server System.  JEREO NY
# sshd_config (5) raha mila fanazavana fanampiny.

# Ity Sshd ity dia natambatra tamin'ny lalana = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / bin / kilalao

# Ny paikady ampiasaina amin'ny safidy ao amin'ny sshd_config sshd_config nalefa tamin'ny
# OpenSH dia mamaritra ny safidy miaraka amin'ny sandany izay misy azy
# Mety, fa avelao izy ireo haneho hevitra.  Ny safidy tsy voafidy dia override ny
# sanda default.

#Port 22
#Addressfamily na iza na iza
#ListaTitraDdress 0.0.0.0
#ListaTitraddress ::

#Hostkey / etc / ssh / ssh_host_rsa_key
#Hostkey / etc / ssh / ssh_host_ecdsa_key
#Hostkey / etc / ssh / ssh_host_ed25519_key

# Ciphers sy fanalahidy
#Rekeylimit default tsy misy

# Fitrandrahana
#SySlogFACility Auth
#Loglevel info

# Fanamarinana:

#LoGingRACIME 2m
#Permitrootlogin mandrara ny tenimiafina
#Stretmodes eny
#Maxauthtries 6
#Maxsession 10

PUBKEYAUTHENTICATION YES

# Andrasana .ssh / manam-pahefana_keys2 tsy hiraharaha amin'ny alàlan'ny default amin'ny ho avy.
Mpanome alalanaFile .SSH / manam-pahefana_keys .SH / manam-pahefana_keys2

#AuthorizedPriincipalsfile na tsia

#Authorizedkeyscommand tsy
#Authorizedkeyscommanduser tsy misy olona

# Amin'izany dia tokony hiasa ianao dia mila fanalahidin'ny mpampiantrano / sns / Ssh / Ssh_known_host
#HostBInaShentication no
# Fiovana eny raha tsy matoky ~ / .SSH / fanta-daza ianao
# Hostbasedauthentication
#IgnoreuserkanneShosts no
# Aza mamaky ny mpampiasa ~ / .rhosts sy ~ / .Shosts Files
#Ignororhest eny

# Hanafoana ny tenimiafinao mazava tsara, ovaina tsy eto!
TOROHEVITRA TOROHEVITRA TSIA
#PermitemptyPassWords no

# Fiovana eo amin'ny eny mba ahafahan'ny tenimiafina valintenin'ny fanamby (Olana amin'ny Tandremo
# Modely sy kofehy sasany)
KbdinteractiveAtical no

Safidy an'ny # Kerberos
#Kerberarsauthentication no
#Kerberosorlocalpasswd eny
#Kerberostostetcleanup YES
#Kerberosetafstoken no

Safidy # GSSAPI
#Gssapiauthentication no
#GSSapLEanupcrcediments eny
#GSSApistricTacceptCheck Eny
#GssapikeyExchange no

# Apetraho eo amin'ny 'eny' mba hahafahana mamela ny fanamarinana pam, ny fanodinana kaonty,
# sy fanodinana fivoriana. Raha azo atao izany, dia hanao ny fanamarinana ny PAM
# avela amin'ny alàlan'ny kbdinteractivechentication sy
# Passwardauthentication.  Miankina amin'ny fanitsakitsahana pam anao,
# Pam fanamarinana amin'ny alàlan'ny kbdinteractiveHentication Mey Bypass
# Ny fametrahana ny "PermithTrootlogin tsy misy tenimiafina".
# Raha tianao fotsiny ny kaonty pam sy ny fizahana fivoriana dia mihazakazaka tsy misy
# Pam Authentication, avy eo dia avelao ity fa mametraka ny passwedauthentication
# sy kbdinteractiveuthentication to 'no'.
Usepam eny

# Druationgentforward eny
#Antant-jaza
#Gatewayports no
X11forwarding eny eny
# X11displayoffset 10
# X11uselocalhost eny
#Permitty eny eny
Printmotd no
#Printlastog eny
#Tcpkeepalive eny
#Permituserenervironment no
#Compression tara
#Clientaliveinter 0
#Clientalivecountmax 3
#Izany no tsia
#Pidfile /run/sshd.pid
#MaxStartUps 10: 30: 100
#Permittunnel no
#Chrootdirectory tsy misy
#Versionaddendum tsy misy

# tsy misy lalana bandera default
Banner / sns / banner

# Avelao ny mpanjifa handefa variana tontolon'ny tontolo iainana
Manaiky ny Lang Lc_ *

# override tsy misy subsistem
Subsystem sftp / usr / lib / OpenSh / SFTP-Server

# Ohatra ny amin'ny fanodinana tafahoatra amin'ny mpampiasa iray isaky ny mpampiasa
Mpampiasa #Match Anoncvs
# X11forefana no
# Allowetcpforward no tsia
# Permitty no
# ForceCommand CVs Server
Permithotlogin no
# Ity ny rakitra Sshd mpizara SHOGE CONMNIONES.  JEREO NY
# Sshd_config (5) raha mila fanazavana fanampiny.
# Ity Sshd ity dia natambatra tamin'ny lalana = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / kilalao
# Ny paikady ampiasaina amin'ny safidy amin'ny SSHD_Config SSHD_Config nalefa
# Ny OpenSH dia mamaritra ny safidy miaraka amin'ny sandany izay misy azy
azo atao, fa avelao izy ireo haneho hevitra. Ny safidy tsy voafidy dia override ny

Sanda default.

Port 22
# Adiresy misy
AUTH_VALID_MINUTES = 3 # HeartAddress 0.0.0.0
HeartAddress ::

Hostkey / etc / ssh / ssh_host_rsa_key

Hostkey / etc / ssh / ssh_host_ecdsa_key
# Hostkey / etc / ssh / ssh_host_ed25519_key
# Ciphers sy fanalahidy
# Rekeylimit default tsy misy
Fitrandrahana

Syslogfacility south

Loglevev vaovao
# Fanamarinana:
LoginNaCetime 2m

PervMitrootLogin mandrara-tenimiafina

Hentitra eny eny
nano users/templates/users/mfa.html
Maxauthtries 6

Maxsessions 10

Andrasana .ssh / manam-pahefana_keys2 tsy hiraharaha amin'ny alàlan'ny default amin'ny ho avy.
MpanoratraPrincipalsFile No

ManadidyCeyScommand Nits

ManadidyCeyScommanduser tsy misy olona
nano users/templates/users/mfa_onboarding.html
Amin'izany dia mila miasa ianao dia mila fanalahidin'ny mpampiantrano amin'ny / sns / Ssh / Ssh_known_host

Hostbasedauthentication no

Manova eny eny raha tsy matoky ~ / .SSH / fanta-daza ianao
Hostbasedauthentication

Tsy raharaham-boninkazouserkanshosts no

Aza mamaky ny mpampiasa ~ / .rhosts sy ~ / .Shosts Files

Ny tsy fahitana eny

Mba hampiato ny tenimiafin'ny lahatsoratra mazava tsara, miova tsy misy eto!

PermitemptyPassword No.

Miova ho eny raha mamela ny tenimiafina valintenin'ny fanamby (ny olana momba ny fitandremana
# Modely sy kofehy pam sasany)
Safidy Kerberos

Kerbererouthentication no

KerberosorloCalpasswd eny
# Kerberostostetcleanup YES
Kerberosetafstoken no

Safidy GSSAPI

Gssapiauthentication no tsia
nano users/templates/users/profile.html
Gssapicleanupcrcrecentials eny
Gssapistrictacceptceck Eny

Gssapikeyexchange no

Apetraho amin'ny 'YES' mba hahafahana mamela ny fanamarinana PAM, ny fanodinana kaonty,

ary ny fanodinana fivoriana. Raha azo atao izany, dia hanao ny fanamarinana ny PAM

avelanao amin'ny kbdinteractiveuticoautication sy
# Passwordauthentication.  Miankina amin'ny fanitsakitsahana pam anao,
# Ny fanamarinana PAM amin'ny alàlan'ny kbdinteractiveHentication dia mety amin'ny alàlan'ny
ny fametrahana ny "pervitootlogin tsy misy tenimiafina".

Raha tianao fotsiny ny kaonty pam sy ny fizahana fivoriana dia mihazakazaka tsy misy

Ny fanamarinana Pam, avy eo dia avelao ity fa mametraka ny passwardauthentication
backup
ary kbdinteractiveuthentication to 'no'.

Allowagentforward eny

Allowetcpforward eny
python manage.py runserver localhost:8000
Gatewayports no

X11displayoffset 10

X11uselocalhost eny

Permittty eny

Fanontam-pirinty

TCPKeepalive eny

Permituserenervironment no

Fanemorana ny fanemorana

Clientaliveinterval 0

Clientalivecountmax 3

Efa nampiasaina
python manage.py startapp errors
Pidfile /run/sshd.pid

MaxStartUPS 10: 30: 100

PermitTunnel no
handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
Chrootdirectory tsy misy

Versionaddendum tsy misy

Tsy misy lalana sora-baventy default
# Avelao ny mpanjifa handefa variable tontolo an-toerana
Override tsy misy fidiram-bolan'ny tsy misy subsistem

Ohatra ny hanafatra ny fisafidianana amin'ny mpampiasa iray isaky ny mpampiasa

Mpampiasa mpampiasa anoncvs
    # X11forwarding no
Allowtcpforwarding no

Permitty no

ForceCommand CVs Server
from threading import local
import traceback
from django.utils.deprecation import MiddlewareMixin

_error = local()

class ExceptionVerboseMiddleware(MiddlewareMixin):
    def process_exception(self, request, exception):
        _error.value = traceback.format_exc()

def get_current_exception():
    try:
        return _error.value
    except AttributeError:
        return None

def set_current_exception(exception):
    try:
        _error.value = exception
    except AttributeError:
        print('Attribute error setting exception.')
Tadidio, Ctrl + sy Y hanavotana ny rakitra. Manaraka, andao hanoratra fehezan-teny fototra antsoina hoe Initialize (rehetra ao amin'ny lahatahiry an-trano an'ny mpampiasa anay).

Nano no nanombohana

Miaraka amin'ny lakile SSH anao hitanao amin'ny fampiasana saka. (.sssh / id_rsa.pub)
nano errors/templates/errors/error.html
#! / bin / bash sudo ap install -y nano git Opensh-server sudo cp sshd_config / etc / ssh / sshd_config Serivisy SSHO SSH Restart Serivisy Susso Sshd Readart echo "/root/.ssh/id_RSA" | sudo su root -c "ssh-keygen -t rsa -n ''" Echo "Root ssh lakile:" sudo su root -c "cat /root/.ssh/id_rsa.pub" sudo adduser --disabled-password - "ekipa" Ekipa Sudo Passwd -D Sudo Usermod -ag Sudo Team Echo "/home/team/.ssh/id_RSA" | SU Team -C "Ssh-keygen -t RSA -N '' ' Cat /home/team/.ssh/id_rsa.pub >> /home/team/.ssh/authorized_keys echo '' >> /home/team/.ssh/authorized_keys Echo "Team ssh lakile:" Cat /Home/Team/.ssh/id_RSAPUB
! / bin / bash

Mba handehandeha amin'ity rakitra ity, andao isika hanomboka andalana. Ny tsipika voalohany dia milaza ilay mpamorona fa io no script bash. Avy eo isika dia mametraka ny fiankinan-dàlana, ny fandikana ny SSHD_Config ho an'ny Directory, mamerina ny SHS Manampy ekipa amin'ny vondrona sudo ihany koa izahay, miteraka ny lakilen-dry zareo SHS Ity mpampiasa vaovao ity dia ny fomba hidirantsika ao amin'ilay tranokala.

Ao amin'ny terminal vaovao, mandrosoa ary manokatra ny mpizara indray.
nano app/settings.py
Ssh team@xx.xx.xx.xx

Tsy tokony mila tenimiafina ianao amin'ity indray mitoraka ity, rehefa manana lakile SSH ianao. Izahay koa dia manan-kery miditra amin'ny tenimiafina miaraka amin'ny tenimiafina mba hiarovana tsara ny tranokala.

Ankehitriny, ity mpizara ity dia manomboka feno tsy misy fanazavana momba izany. Andao hanomboka amin'ny fametahana ny tetik'asa avy amin'ny git mba hahafahantsika misintona sy hampandehanana azy eny amin'ny milina lavitra. Ao amin'ny mpizara lavitra mifandray amin'ny SSH, pirinty aloha ny lakile SSH anao:
DEBUG = False
Cat ~ / .ssh / id_rsa.pub

Manaraka, apetaho ao anaty toe-javatra git ity fanalahidy ity toy ny nataonay teo aloha mba hametrahana ny tahiry git. Azontsika atao ny mamolavola ny tetik'asa mivantana amin'ny mpizara. Ataovy azo antoka fa nanohana ny tetikasa teo an-toerana ianao aloha ka ao amin'ny mpizara git mba hisintona.

git clone git: //github.com/you/yourproject.git
sudo backup
Tonga lafatra. Izao dia eto daholo ireo rakitra rehetra. Azontsika jerena miaraka amin'ny LS

ls

Ankehitriny, andao isika hanangana ny mpizara. Voalohany, kopiho ny lisitry ny lisitry ny tetikasanao ho anarana tsotra sy tsy hay hadinoina izay hampiasainay ho an'ny tetikasa.

CP -R yourroject whayouckalledit

Aiza ny "Whyyouracalledit" dia anarana vaovao amin'ny tetik'asa. Manaraka, mila manorina fitaovana fototra isika mba hametrahana ny mpizara. Izahay dia hamonjy ity fampiasana ity ary hampiasa izany amin'ny ho avy. Mba hanamboarana io fampiasana io, andao isika hamorona mpampiasa iray binary hamaritana ny fomba hanovantsika script. Mampiasa Bash, Hanova / USR / Bin / Ascript
nano users/models.py
sudo nano / usr / bin / ascript

Ataovy azo antoka fa mampiasa sudo ao ianao ka manana fahazoan-dàlana hanova ny rakitra. Ao amin'ny rakitra, ampio ireo andalana ireo:

#! / bin / bash Raha [! -f / usr / bin / $ 1]; DIA sudo Touch / usr / bin / $ 1 Echo "#! / bin / bash" >> / USR / bin / $ 1 sudo chmod A + X / USR / BIN / $ 1 Sudo nano / usr / bin / $ 1 echo $ 1 | sudo tee -a / sns / asc / ascripts hafa sudo chmod A + X / USR / BIN / $ 1 Sudo nano / usr / bin / $ 1 ny fi
# ! / bin / bash
! / bin / bash ">> / usr / bin / $ 1

Aza adino ity script ity dia misy tohan-kevitra, ny anaran'ny script, toy ny $ 1. Voamarina voalohany raha toa ka misy ny fisie, na amin'ny fomba hafa, dia manampy ny tsipika voalohany hanambarana ny script dia i Bash, manova ny fahazoan-dàlana ary ny anarany izay mamela ny anaran'ireo script izay namorona ny script. Raha efa misy ny rakitra dia manova ny fahazoan-dàlana fotsiny ary hanova azy. Tehirizo ny rakitra, ary hanova ny fahazoan-dàlana isika. Raha mbola mampiasa an'io script io isika dia tsy mila manao an'izany intsony.

sudo chmod A + x / usr / bin / ascript
    vendor = models.BooleanField(default=False)
Tonga lafatra. Andao isika hamorona script antsoina hoe Setup. Voalohany, tsy ny hanafotra anao, fa jereo ny endrik'izay toa ny endrik'ilay toetrako. Handeha mamaky ny zavatra tokony hojeren'ity script ity amin'ny tetikasanao ianao, tsy mila ny zavatra rehetra ao amin'ny script aho hanomboka.

#! / bin / bash Segondra = 0 Python_version = 3.12 Echo "FememeBabe installer nanombohana." # sudo chmod A + x x x x xsetup # ./scripts/usersetup # ssh-keygen # Lahatahiry tetik'asa Dir = "/ trano / ekipa / femmebabe" Mpampiasa = "ekipa" # Log log roba Echo "baiko fitrandrahana" sudo cp Log / didy.log /var/log/commands.log sudo chmod -r A + w / var / log sudo chown -r: Sysslog / var / log Echo $ 'Alias ​​Venv = "Source / Home / Team / Femembabe / Venv / Bin / Activate"' | sudo tee -a /home/team/.profile Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a / etc / Bashrc Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a "" /home/team/.Bashrc " Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a /root/.Bashrc Echo "Source / sns / Bashrc" | sudo tee -a /home/team/.profile Echo "/var/log/COMmandands.log" | sudo tee -a /etc/logrotate.d/syslog echo "Local6. * /Var/log/Commands.loG" | sudo tee -a "/etc/rsyslog.d/bad.conf" Security Service RSYSLOG READART # Nano config Echo "Mametraha 4" >> .nanorc Echo "Mametraka tabilao" >> .nanorc # Git config Echo "Git Configuration" sudo git config --global User.Elal.email "jasper.camber.holton@gmail.com" && sudo git config --global / jasper Holton " Git config --global User.EMAIL "jasper.camber.holton@gmail.com" git config --global /Name "jasper Holton" git config --global --dd safe.directory $ "$ dir" sudo ssh-keyscan -t rsa gitlab.com | sudo tee -a /root/.ssh/known_hosst sudo ssh-keyscan -t rssa github.com | sudo tee -a /root/.ssh/known_hosst Echo "Fametrahana fananganana" sudo Mount -o remount, habe = 16g, exec / tmp # Fanavaozana sy fametrahana Echo "Fanavaozana sy fametrahana fonosana" sudo apt update && sudo cessrestart_mode = A Up upgrade -Y sudo ap purge purge postgresql-client-14 postgresql-client-client-mahazatra postgresql mahazatra postgresql-contrib postgresql -ty Echo "Postfix postfix / avaratra avaratra femmebabe.com" | suudo debconf-set-set-sefections Echo "Postfix postfix / main_mailer_type string 'site'" | suudo debconf-set-set-sefections sudo cessestart_mode = a debian_fRontend = in infall-tsin-doko -y postfix sudo cessestart_mode = APTUTS CLAMAV-DAEMON LIBX264-Dev FFMPEG LI LIMAPACHE2-MOD-PYTHON3 PYTHON3-VENV PYTHON3-DJANGO NANOTANA AN-TSARA-OCR OpenJDk-8-jdk redis-server libencv-dev python3-dev libsasl2-dev opendkim opendkim-to popecot-core dovecot-dev postgrech-dev postegresql-dev snapd git softwal certbot python3-certbot-apache Echo "- Fivoahana, -f arch foana = b64 -f EUID = 0 -S EXCVE" | Sudo Tee -a /etc/audit/audit.rules Echo "- Fivoahana, -F Arch = B32 -F EUID = 0 -S EXCVE" | Sudo Tee -a /etc/audit/audit.rules # Mampifanaraka Antivirus Clamav Echo "Manomboka Antivirus" Ny rafitra Sudo dia mamela ny CLAMAV-Daemon Manomboka ny rafitra Sudo Cative Clamav-Daemon # Asio hostname echo "127.0.0.1 Fememebabe" | sudo tee -a / etc / mpampiantrano sudo HostNamectl Set-HostName Localhost # Setup Postgres Echo "Postgres Setup" sudo -u postgres psql -u postgres -c "Droplot Database database;" sudo -u postgres psql -u postgres -c "Mamorona angona database;" sudo -u postgres psql -u postgres -c "Mamorona Django Django miaraka amin'ny tenimiafina 'tenimiafina';" sudo -u postgres postgres postgres -c "alter anjara django set client_encoding to 'utf8';" sudo -u postgres psql -u postgres -c "alter Andraikitra Django Set default_transaction_isation mba 'hamaky ny fanoloran-tena';" sudo -u postgres postgres postgres -c "alter reple django set ny fotoana 'utc';" sudo -u postgres psql -u postgres -c "Omeo ny tombontsoa rehetra amin'ny angona database ao DJango;" # Setup Database Backup Echo "Ny angon-drakitra momba ny Backup, ity dia mety ho elaela." Cat db.json. ?? > db.json Echo "Manamafy ny Firewall" sudo ufw default dia mamela ny hivoaka sudo ufw dél day deny miditra sudo ufw Avelao ny 22 sudo ufw Avelao ny http Sudo UFW Avelao HTTPS sudo ufw Avelao 'postfix' sudo ufw Avelao ny 'postfix smtps' Sudo UFW Mamela ny 'fandefasana postfix' sudo ufw Avelao 'dovecot pop3' Sudo UFW Avelao ny 'Dovecot azo antoka Pop3' sudo ufw Avelao ny 110 / tcp sudo ufw avelao ny 25 / tcp Echo "Y" | Sudo UFW # Tsy azo ipt Echo "Manamafy ny Firewall" sudo ipt abtables -P Input Manasazy sudo ipt abtables -p output manaiky sudo iptables -p handroso sudo imptes -f sudo imptes-save # Mametraka bitdefender CD $ Dir Echo "Runnning Bitdefender Antivirus installer" wget https://cloud.gagvityzone.bitdefender.com/packages/nix/0/7atssy/setup_downloader.tar Mkdir Bitdefender tar -xf setup_downloader.tar -c bitdefender sudo rm setup_downloader.tar sed -i -e 's / {logpasswd / z & a; 3bpd_qbgums / g' bitdefender / installer sudo chmod A + X Bitdefender / installer sudo ./bitdefender/installer # Setup Postfix CD $ Dir Echo "Serivisy Serivisy" sudo cp/etc/postfix/main.cf /etc/postfix/main.cf.backup sudo cp config / etc_postfix_main.cf /etc/postfix/main.cf sudo cp config / etc_postfix_master.cf /etc/postfix/master.cf sudo cp config / etc_default_opedkim / sns / default / opendkim sudo cp config / etc_dovecot_conf.d_10-auth.conf /etc/dovecot/conf.d/10-auth.conf sudo cp config / etc_dovecot_conf.d_10-master.conf /etc/dovecot/conf.d/10-master.conf sudo cp config / etc_dovecot_dovecot.conf /etc/dovecot/dovecot.conf sudo cp config / etc_dovecot_passwd / etc / dovecot / passwd sudo cp config / etc_opedkim.conf /etc/opernkim.conf sudo cp config / etc_default_opedkim / sns / default / opendkim sudo adduser postfix opendkim sud mkdir / etc / opendkim sudo mkdir / etc / opendkim / fanalahidy sudo mkdir /etc/oupendkim/keys/femmebabe.com sud mkdir / var / spool / postfix / opendkim sudo echo "*@femmebabe.com sendonly._dointey.femmebabe.com" | sudo tee -a /etc/opernkim/signing.Table sudo "sendonly._dominky.femmebabe.com Femignebabebe.com femmebabe.com:Senderly:/keydkim/keys/femmeBemEbabe.com/sendyl.private" | sudo tee -a /etc/opernkim/key.Table sudo echo "127.0.0.1" | sudo tee -a /etc/opernkim/trusted.hosst sudo echo "locarena" | sudo tee -a /etc/opernkim/trusted.hosst sudo echo "" | sudo tee -a /etc/opernkim/trusted.hosst sudo echo "* .femmeBabe.com" | sudo tee -a /etc/opernkim/trusted.hosst sudo chown -r opendkim: Opendkim / sns / opendkim sudo opendkim -b 2048 -d femmebabebe.com -d /etc/opernkim/keys/femmeBemeBabe.com -s sendonly -v sudo chmod go-rw / etc / opendkim / fanalahidy sudo Chown Open onendkim: OpenDkim /etc/opedkim/keys/femmeMemEBabe.com/sendy.private Sudo Chown Open Opendkim: postfix / var / spool / postfix / opendkim CD $ Dir Sudo CP Mailbox / * / var / mail / sudo Chown: mpampiasa / var / mail / * sudo chmod -r a + rwx / var / mail / * Sudo Remecting Remonstart Restart Open Postfix Dovecot # Mamorona dirs CD $ Dir MEDSIR MEDIA / AUDIO Med Media / Audio / Firan-tsoratra / FingerPrints Media / Security MEDDIR Med Media / Secure Media Media Med / Secure / Media Media Med / Azo antoka / Video Media Media / Secure / Profile Med Media / Secure / tarehy Media / sary MDDIR Med Media / Live Med Media / Live / Files Meddir Media / Live / Stills Med Media / Files Mkdir Temp MKDir Temp / Data MKDir Temp / Gfpgan Mkdir Mail / Inbox Mkdir Mailbox # Setup Virtualenv CD $ Dir Echo "Mamorona tontolo virtoaly" python -m venv venv Loharano Venv / Bin / Activate # Mahazo sy manangana ny fiankinan-doha Echo "Nahazo sy fanamboarana ny fiankinan-doha, ity dia mety hikotrika" CD $ Dir git clone https://github.com/sukhitashvili/violence-detection.git CP Config / VD-takiana.txt Herin'ny herisetra / fepetra takiana.txt CP Config / VD-Model.py Herisetra - Modely.py CD herisetra amin'ny CD PIP3 Mametraka -r Fangatahana.txt CD $ Dir wget https://github.com/ simationentc/gfpgan/releases/download/v1.3.0/gfpganv1.Pth -p -P fanandramana / pretrained_models Git Clone https://github.com/ sincencentarc/gfpgan.git git clone https://github.com/davisking/dlib.git CD Dlib Mkdir manangana; CD manorina; cmake ..; CMAKE --Muild. CD .. Loharano Venv / Bin / Activate Python Setup.py Mametraka CD $ Dir Loharano Venv / Bin / Activate CD $ Dir / Gfpgan / Echo "Fametrahana ny fiankinan-doha Python" Pip Mametraka ny basicrr pip install facexlib pip install -r Fangatahana takiana.txt python setup.py Mivoatra pip mametraka realesrgan CD $ Dir Sudo Chown -R -R ekipa: mpampiasa GFPGAN Echo "Fametrahana Ta-Lib" wget https://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-Src.tar.gz tar xvzf ta-lib-0.4.0-src.tar.gz sudo rm ta-lib- * CD Ta-Lib sudo ./configure sudo manao sudo hanao fametrahana # Mametraha fitsipika momba ny firewall CD $ Dir # Mametraka ny Depiote Pypi Echo "Mametraka ny fiankinan-doha amin'ny python sisa (mety ho ela ity)" Sudo reciewctl mask tmp.mount CD $ Dir Loharano Venv / Bin / Activate PIP3 install -u "selerery [redis]" PIP3 Mametraka -R Fangatahana Fangatahana - Deprecated = Legacy-Vavalalana - Pep517 PIP3 Mametraka --Upgrade OpenCV-Python # == 4.5.4.60 PIP3 Mametraka - Upgrade OpenCV-Contrib-python # == 4.5.4.60 #pip Mametraka OpenCV-Python == 4.5.5.64 #pip Mametraka OpenCV-Contrib-python == 4.5.5.64 PIP3 Mametraka --Upgrade OpenCV-Python-hidless pip3 esory ny fantsona PIP3 Esory Daphne PIP3 mametraka fantsona ["Daphne"] PIP3 Mametraka ondana == 9.5.0 PIP3 Mametraka librosa PIP3 install -u 'twisted [TLS, Http2]' PIP3 Mametraka - SORATRA CERTIFI Mangataka URLLIB3 NUWTY NUMPY PYAUTHT SQLPRARGEPHOSTIVELY ASTRALL WEBAUTHN DOCBARCODES PDF417 DEPFFIFFA --No-cache-dir PIP3 Mametraka Tensorflow == 2.15.1 # Mametraka Certbot Echo "fametrahana ny fanamarinana" sudo snap mametraka fototra; Sudo Snap Refresh Core sudo snap install - certbot certbot sudo ln -s / snap / bin / certbot / usr / bin / certbot sudo snap mametraka redis Ny rafitra Sudo dia mamela Apache2 Start Apache2 # Run certbot Sudo Certbot --apache --non-interactive --Agree-Tos --domains Femmebabe.com --Email jasper.camber.holton@gmail.com # Reload Mail mpizara Sudo Remecting Remonstart Restart Open Postfix Dovecot # COPY CERTS #Sudo Cp /etc/letsencrypt/live/femmebabe.com/privkey.pem privey.pem #Sudo Cp /etc/letsencrypt/live/femmebabeBeBeBeBeBeBe.PEMH venv CP Script / votoaty.py $ "/ Home / Team / Femembabe / Venv / Lib / Python $ {python_version} /site-packagers/pyxb/binding/Conent.PY" CP Script / pwa_webpush_forms.py.Py CP Script / Webauth_Views.py.py $ "/ HOME / TEAM / FEMMEBA / VENV / LIB / PYTHON $ {python_version} /site-packagers/webauth/views.py" CP Scripts / JSON.py $ "Venv / Lib / Python $ {python_version} /site-packagers/django/core/serializers/seron.py" # Apetraho ny filaharan'ny mpampiasa sudo gpasswd -As mpampiasa www-data # Mametraka fahazoan-dàlana Echo "Fahazoan-dàlana" Sudo Chown -R ekipa: Mpampiasa Cache / sudo chmod a + rwx -r cache / #SUDO CHOWN -R ekipa: mpampiasa / var / Run / #Sudo Chown Root: faka / run / sudo / ts -r sudo chown -r redis: redis / var / lib / redis sudo chown -r redis: redis / var / log / redis sudo chmod -r u + rwx, g + rwx, u + rx / var / log / redis sudo chmod + r /etc/redis/redis.conf Sudo Chown -R Team: mpampiasa / var / log / sudo chown -r: mpampiasa .././ sudo chmod -r g + rwx ./ sudo chmod -r g + rx .././ sudo chmod -r g-rwx ../.ssh sudo chmod 774 ./ #Sudo Chmod 664 db.sqlite3 #Sudo Chown Www-Data: mpampiasa db.sqlite3 sudo Chown -R Www-Data: Www-Data Media / Sudo Chown Www-Data: mpampiasa ./ Sudo Chown -R Team: Media Media / Sudo Chown -R ekipa: mpampiasa ./ Sudo Chown -R TEAM: mpampiasa ./gfpgan/ Sudo Chown -R Team: mpampiasa ./Temp/ Sudo Chmod A + R Team / Var / Mail / $ mpampiasa # Mandika config ary asio fahazoan-dàlana Echo "Manamboatra serivisy sisa" sudo cp config / apis.json /etc/apis.json sudo cp config / config.json /etc/config.json sudo cp config / femmebabe-le-ssl.conf /etc/apache2/sites-availabemmeMemeBabe-le-ssl.conf.Conf.Conf sudo cp config / etc_dovecot_passwd / etc / dovecot / passwd sudo cp config / etc_init.d_celery /etc/init.d/celery sudo cp config / etc_init.d_celerybeat /etc/init.d/celerybeat sudo cp config / etc_default_celerybeat / sns / default / celerybeat sudo cp config / etc_default_celery / sns / default / celery sudo cp config / etc_systemd_system_daphne.service /etc/systemd/system/daphne.service sudo cp config / etc_systemd_system_celery.service /etc/systemd/system/celery.service sudo cp config / etc_systemd_system_celerybeat.service /etc/systemd/system/celerybeat.service sudo chmod a + x /etc/init.d/celery sudo chmod A + X /etc/init.d/celerybeat # Setup Database Echo "Mifindra monina, tokony ho haingana izany" Python fitantanana.py makmigrations Python Manage.py mifindra monina --Run-Syncdb Echo "Loading data, mety ho elaela izao" python fitantanana.py loaddata db.json Echo "Fanombohana Crontab / Sudoers Configuration" sudo crontab -l -u fakany | Cat - Config / Crontab | sudo crontab -u fakany - sudo sh -c "Cat config / sudoers >> >> / sns / sudoers" # Inject pam config ary esory ny ssh config config #Sudo Sed -i '' -e '$ D' /etc/pam.d/sshd #Sudo Sed -i '' -e '$ D' / sns / profile Echo "Ny fivoriana dia ilaina ny pam_exec.so fileteuid /home/team/femmebabebe/pam.sh" | sudo tee -a /etc/pam.d/sshd Echo "Ny fivoriana dia takiana pam_exec.So seteuid /home/team/femmebabe/logout.sh" | sudo tee -a /etc/pam.d/sshd sudo chmod a + x pam.sh sudo rm /etc/ssh/sshd_config.d/50-cloud-init.conf # Adikao ny script bin ary mametraka ny fahazoan-dàlana echo "script manoratra" suro script script / reload / usr / bin / suro CP Script / Check / usr / bin / sudo script script / Enagpu / usr / bin / suro script script / disgpu / usr / bin / suro script cp script / activate / usr / bin / suro script script / backup / usr / bin / suro script script / ascript / usr / bin / suro script script / setup / usr / bin / suro script script / addsetup / usr / bin / suro script scriptika / Watchlogs / usr / bin / suro script script / logs / usr / bin / suro script script / cmds / usr / bin / suro script script / setup / usr / bin / suro script script / studweb / usr / bin / suro script script / purgecache / usr / bin / sudo cp config / banner / sns / banner CD / USR / BIN / sudo chmod a + x activate sudo chmod a + x backup sudo chmod a + x corcript # Ampidiro indray ary ampiasao ny serivisy Echo "Serivisy serivisy" Sudo Rafitra rafitra Daemon-reload Ny rafitra Sudo dia mamela ny daphne.service Ny rafitra Sudo dia mamela ny seleria.service Ny rafitra Sudo dia mamela ny celerybeat.service Ny rafitra Sudo dia mamela ny CLAMAV-Daemon Sudo SystemCtl Start daphne.service Stando systemCtl Start Standery.service Stando Syerter SystemCtl Start Celerybeat.service Manomboka ny rafitra Sudo Cative Clamav-Daemon # Mamela ny Apache Modules Echo "Manome Apache2" sudo a2enmod rewrite sudo a2enmod wsgi Sudo A2enmod Headers sudo a2enmod ssl sudo A2enmod proxy sudo a2enmod proxy_balancer sudo a2enmod proxy_http sudo a2enmod proxy_wstunnel #Sudo A2dismod Mpm_Event #Sudo A2Dismod MPM_WERKER #Sudo A2enMod MPM_Prefork # Mampihatra toerana tsy misy toerana sudo A2dissite 000 000-default sudo a2dissite 000 000-default-le-ssl # Avelao ny tranokalanay sudo A2ensite femmebabe-le-ssl # Reload Daemon ary avereno apache, postfix sy opendkim Sudo Rafitra rafitra Daemon-reload Sudo Rafitra rafitra Avereno Apache2 Sudo Rafitra Moreeductl Restart Costfix Manomboka Daphne i Sudo RemectionStl # Mametraka fahazoan-dàlana sudo chown -r: www-data / var / www / sudo chown -r: www-data /var/www/.deepface # SWAP Configuration Echo "Allocating Swap, mety ho vetivety foana izany" sudo swapoff / swapfile sudo rm / swapfile sudo fallocate -l 8g / swapfile sudo ddF = / dev / zero = / swapfile bs = 1024 count = 8388608 sudo chmod 600 / swapfile sudo mkswap / swapfile sudo swapon / swapfile Echo "/ swapfile swap swap fahadisoana 0 0" | sudo tee -a / etc / fstab sudo swapon --show Engine-init-intition Echo "Fanombohana ny Caption Routine" / trano / ekipa / femmebabe / venv / bin / python /home/team/femmebabebe/routine_ception.py / Home / Team / Femembabe / Venv / bin / python /home/team/femmebabe/setup_mail.pset.pset.pset.ps # Setup git Echo "Mametraka git" CD $ Dir sudo rm -r .git git init - Sampana = main Echo "Mametraka ny tenimiafina mpampiasa" Sudo Usermod --Password $ (Echo Team | Openssl Passwd -1 -Stdin) # Asehoy iPv6 sy OpenDkim ho an'ny fanitsiana domain Echo "Adikao ny fampahalalana eto ambany amin'ny fanitsiana domain." hostname -i IP A | Grep Inet IP -6 ADDR | Grep "Scope Link" sudo cat /etc/oupendkim/keys/femmebabebe.com/sendonly.txt | tr -d '\ n' | Sed 'S / \ S // G' | Sed 's / "" // g' | awk -f '[) (]' '' printy $ 2} ' # Fanamboarana vita Echo "Vita ao" scripts wc -l / setup echo "andalana kaody." Echo "Fotoana feno:" faharetana = $ segondra echo "$ ((maharitra / 60)) minitra sy $ ((Duration% 60)) segondra lasa." Echo "Todo:" Echo "- Adikao ny adiresy IPv6 amin'ny sehatra DNOM DNS Configuration" Echo "- Copy Copy Domain amin'ny Configuration DNS DNG" Echo "- Manampia tahiry git vaovao miaraka amin'ny git remote add undabe." Echo "- Open Port 25" Echo "- Mametraha Antivirus isaky ny reccomendations" Echo "- Fitsapana" echo "Raha neccesary," Echo "- Debug" Echo "- Fomba fanamboarana sy sora-baventy" Echo "- fix mpizara" Echo "" Echo "Misaotra tamin'ny fampiasana ny installer femmebabe. Manàna andro mahafinaritra!" echo

! / bin / bash
cd project-directory-you-named # sudo chmod a + x x x x xsetup
./scripts/usersetup

Ssh-keygen

Directory momba ny tetikasa
python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
Log log

Nano config

Git config
nano users/mfa.py
Hanavao sy hametraka
from django.utils import timezone
import random
import datetime
from django.conf import settings
from feed.middleware import get_current_request
from django.contrib import messages
from .email import send_html_email
import traceback
from .models import MFAToken

account_sid = settings.TWILIO_ACCOUNT_SID
auth_token = settings.TWILIO_AUTH_TOKEN
source_phone = settings.PHONE_NUMBER

def send_text(target_phone, text):
    from twilio.rest import Client
    try:
        client = Client(account_sid, auth_token)
        if len(target_phone) >= 11:
            message = client.messages.create(
                to=target_phone,
                from_=source_phone,
                body=text + ' Text STOP to cancel.')
    except:
        messages.warning(get_current_request(), 'There was an error sending the message.')
        print(traceback.format_exc())

def get_num_length(num, length):
    n = ''
    for x in range(length):
        n = n + str(num)
    return int(n)

def send_verification_text(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_user_text(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)))

def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))

def send_user_text(user, text):
    send_text(user.profile.phone_number, text)

def check_verification_code(user, token, code):
    token.attempts = token.attempts + 1
    profile = user.profile
    result = (token != None and code != '' and token.token == code and (token.expires > timezone.now()) and token.attempts <= settings.MFA_TOKEN_ATTEMPTS)
    if token.attempts < 3 and result:
        profile.verification_code_length = 6
    elif token.attempts > 1 and not result:
        profile.verification_code_length = profile.verification_code_length + 2
        if profile.verification_code_length > settings.MFA_TOKEN_LENGTH: profile.verification_code_length = settings.MFA_TOKEN_LENGTH
    token.save()
    profile.save()
    return result
Mampifanaraka Antivirus Clamav
# Asio hostname
    token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Manamboatra postgres
    if not token: token = MFAToken.objects.create(user=User.objects.filter(profile__uuid=username).first(), uid=username, expires=timezone.now() + datetime.timedelta(seconds=115)) # Famerenana ny Database Backup
    user = User.objects.filter(id=token.user.id).first() # Tsy azo ipt ambin'ny folo
    if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Apetraho Bitdefender
    if not user: raise PermissionDenied() # Manamboatra postfix
    if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # Mamorona dirs
        auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Fanamboarana VirtualenV
        user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # Makà sy manangana ny fiankinan-doha
        return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # Ataovy ny fitsipiky ny firewall
    if not user.profile.mfa_enabled: # Apetraho ny Depiote Pypi
        if not check_verification_time(user, token): # == 4.5.4.60
            user.profile.mfa_enabled = False # == 4.5.4.60
            user.profile.enable_two_factor_authentication = True # Pip Mametraka Opencv-python == 4.5.5.64
            user.profile.phone_number = '+1' # PIP Mametraka OpenCV-Contrib-python == 4.5.5.64
            user.profile.save() # Apetraho ny Certbot
            auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Mihazakazaka Certbot
    if request.method == 'POST' and not fraud_detect(request, True): # Reload Mail mpizara
        form = TfaForm(request.POST) # Adikao ny CERTS
        code = str(form.data.get('code', None)) # sudo cp /etc/letsencrypt/live/femmebabe.com/privkey.pem privey.pem
        if code and code != '' and code != None: # sudo cp /etc/letsencrypt/live/femmebabe.com/cert.pem cert.pem
            token_validated = user.profile.check_auth_token(usertoken) # Patch venv
            is_verified = check_verification_code(user, token, code) # Apetraho ny filaharan'ny mpampiasa
            if token_validated: # Mametraha fahazoan-dàlana
                if is_verified: # Sudo Chown -R Team: mpampiasa / Var / Run /
                    user.profile.mfa_enabled = True # sudo Chown root: faka / run / sudo / ts -r
                    auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # sudo chmod 664 db.sqlite3
                    for key, value in request.GET.items(): # sudo Chown WWN www-data: mpampiasa db.sqlite3
                        return HttpResponseRedirect(next) # Adikao ny config sy ny fahazoan-dàlana
            elif not token_validated: # Setup Database
            if p.mfa_attempts > 3: # Inject Pam Config ary esory ny diso Ssh Config
            if form.data.get('send_email', False): # sudo sed -i '' -e '$ d' /etc/pam.d/sshd
    # sudo sed -i '' -e '$ d' / sns / profile
Adikao ny script bin ary mametraka ny fahazoan-dàlana

Ampidiro indray ary ampiasao ny serivisy

Ampiasao ny modules Apache
from .mfa import send_verification_email as send_mfa_verification_email
Sudo A2DISMOD MPM_EFENT

sudo A2Dismod MPM_Worker

sudo a2enmod mpm_prefork
nano users/mfa.py
Ampidiro ny toerana default
def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))
Ampiasao ny tranokalanay

Reload Daemon ary avereno indray ny Apache, Postfix ary OpenDkim

Mametraha fahazoan-dàlana
# SWAP Configuration
from .tests import is_superuser_or_vendor # Entana inittion motera
    # Setup git
    return render(request, 'users/users.html', { # Asehoy ny IPV6 sy OpenDkim ho an'ny fanitsiana domain
Vita ny fananganana

Be dia be ny fananganana! Raha fintinina dia didim-pitsipika ny kaody, ny code ary ny git, ny download ny rakitra, ny paositra, ny paositra, dia manamboatra ny UFW (tsy azo antoka), misintona antivirus, manao direktra Ny fahazoan-dàlana dia mametraka ny taratasy fanamarinana ary mametraka ny mpizara, mametraka ny fanitsiana, manomboka ary mamela ny mpizara, manome alalana, mandefa ny fahazoan-dàlana ary ny fanontana ny IPv6 sy ny fanalahidin'ny Internet. Tsotra tsotra, fa toa ny kaody maro be. Tsy mila be dia be izahay satria tsy manana ny fiankinan-doha isika, dia tsy mampiasa seleria, selerybeat na daphne, fa hametraka ny sasany amin'izy ireo isika vao manomboka. Mariho fa ity fehezan-dalàna ity dia nanambara domain iray nambara imbetsaka.

Izahay koa dia mila mividy anarana domain (izay sarany isan-taona). Manoro hevitra ny kianja amin'ny fividianana sehatra aho, ny laharan'izy ireo dia intuitive ary mora ampiasaina. Azonao atao ny mividy sehatra izay safidinao, fa mampiasa ny domababe.com aho. Vantany vao nividy sehatra ianao, dia ny loha mankany amin'ny tontolon'ny DNS DNS ary ampio rakitsoratra manondro ny faritra misy anao amin'ny adiresy IP. Tokony ho toa izao:
def is_superuser_or_vendor(user):
    return user.profile.vendor or user.is_superuser
@ A xx.xx.xx.xx

Miaraka amin'ny @ mpandraharaha @ amin'ny maha-mpampiantrano azy, ny dikan'ny subdomains rehetra eo ambanin'ity sehatra ity sy ny faka faka dia haverina amin'ny mpizara rehetra. Betsaka ny firaketana an-tsoratra mba hanambarana, fa afaka mandroso amin'ireto isika raha vao vonona handefa mailaka. Tadidio fa afaka andro maromaro izy io alohan'ny ahafahanao mandefa mailaka am-pahombiazana amin'ny mpizara. Ny rakitsoratry ny DNS dia sangan-javatra isika dia haka fotoana hanaparitahana.

Na izany na tsy izany, ny firaketana tokana ilaintsika hanombohana dia firaketana. Koa ankehitriny isika dia afaka mameno ny script manaraka araka ny tetik'asa ary mihazakazaka.
Andao atombohy amin'ny script fanamboarana kely kokoa mba hametrahana izay ilaintsika amin'ny fandrosoana fototra. Tsy hampiasa ny dependencies na postgreql be loatra izahay, fa hanomboka ny mpizara HTTP fototra ihany ary hanahy ny hanamarina azy io rehefa vita izany. Tadidio fa ny hahazoana taratasy fanamarinana HTTPS ary hampandeha ny mpizara azo antoka, mila mividy domain iray isika miaraka amin'ny mpizara mpizara. Amin'izao fotoana izao dia asio ny "ekipa" amin'ity rakitra ity miaraka amin'ny anaran'ilay mpampiasa anao, "Dir" miaraka amin'ny lahatahiry ny tetik'asa, ary omeo ny mailaka sy ny domain anao ao amin'ny sehatra <> Tags.

Ankoatr'izay, alohan'ny hitondrantsika ity kaody ity dia mila manova ny toe-javatra ao amin'ny Firewall isika dia manohana, raha misy. Matetika izany dia ao amin'ny tabilao 'Networks' ao amin'ny mpamatsy mpampiantrano anao, na raha fampiantranoana tena ianao, dia ny fizarana 'Portwarding' ao amin'ny làlanao. Te-hanangana IP static ihany koa ianao amin'ny alàlan'ny làlanao miaraka amin'ny adiresin'ny milina mpizara anao, raha mampiasa fampiantranoana tena ianao. Mila manokatra ny seranan-tsambo manaraka ireto ianao amin'ny famakiana / fanoratana.22 (SSH) 25 (Mail) 587 (MAIL) 110 (Mail Client) 80 (http) 443 (HTTPS)#! / bin / bash Segondra = 0 Python_version = 3.12 Echo "FememeBabe installer nanombohana." Dir = "/ / trano / ekipa /" Mpampiasa = "ekipa" # Log log roba Echo "baiko fitrandrahana" sudo cp Log / didy.log /var/log/commands.log sudo chmod -r A + w / var / log sudo chown -r: Sysslog / var / log Echo $ 'Alias ​​Venv = "Source / Home / Team / Femembabe / Venv / Bin / Activate"' | sudo tee -a /home/team/.profile Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a / etc / Bashrc Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a "" /home/team/.Bashrc " Echo $ 'Prompt_command = \' refrn_val = $ ?; Logger -p local6.debug "$ (WH WHOAMI) [$$] sudo tee -a /root/.Bashrc Echo "Source / sns / Bashrc" | sudo tee -a /home/team/.profile Echo "/var/log/COMmandands.log" | sudo tee -a /etc/logrotate.d/syslog echo "Local6. * /Var/log/Commands.loG" | sudo tee -a "/etc/rsyslog.d/bad.conf" Security Service RSYSLOG READART # Nano config Echo "Mametraha 4" >> .nanorc Echo "Mametraka tabilao" >> .nanorc # Git config Echo "Git Configuration" sudo git config --global User.EMAIL "@ gmail.com" && sudo git config --global /Name "" git config --global --dd safe.directory $ "$ dir" sudo ssh-keyscan -t rsa gitlab.com | sudo tee -a /root/.ssh/known_hosst sudo ssh-keyscan -t rssa github.com | sudo tee -a /root/.ssh/known_hosst # Fanavaozana sy fametrahana Echo "Fanavaozana sy fametrahana fonosana" sudo apt update && sudo cessrestart_mode = A Up upgrade -Y sudo ap purge purge postgresql-client-14 postgresql-client-client-mahazatra postgresql mahazatra postgresql-contrib postgresql -ty Echo "Postfix postfix / avaratra avaratra femmebabe.com" | suudo debconf-set-set-sefections Echo "Postfix postfix / main_mailer_type string 'site'" | suudo debconf-set-set-sefections sudo cessestart_mode = a debian_fRontend = in infall-tsin-doko -y postfix sudo cessestart_mode = APTUTS CLAMAV-DAEMON LIBX264-Dev FFMPEG LI LIMAPACHE2-MOD-PYTHON3 PYTHON3-VENV PYTHON3-DJANGO NANOTANA AN-TSARA-OCR OpenJDk-8-jdk redis-server libencv-dev python3-dev libsasl2-dev opendkim opendkim-to popecot-core dovecot-dev postgrech-dev postegresql-dev snapd git softwal certbot python3-certbot-apache # Mampifanaraka Antivirus Clamav Echo "Manomboka Antivirus" Ny rafitra Sudo dia mamela ny CLAMAV-Daemon Manomboka ny rafitra Sudo Cative Clamav-Daemon # Asio hostname echo "127.0.0.1 Fememebabe" | sudo tee -a / etc / mpampiantrano sudo HostNamectl Set-HostName Femmebabe # Setup Database Backup Echo "Ny angon-drakitra momba ny Backup, ity dia mety ho elaela." Cat db.json. ?? > db.json Echo "Manamafy ny Firewall" sudo ufw default dia mamela ny hivoaka sudo ufw dél day deny miditra sudo ufw Avelao ny 22 sudo ufw Avelao ny http Sudo UFW Avelao HTTPS sudo ufw Avelao 'postfix' sudo ufw Avelao ny 'postfix smtps' Sudo UFW Mamela ny 'fandefasana postfix' sudo ufw Avelao 'dovecot pop3' Sudo UFW Avelao ny 'Dovecot azo antoka Pop3' sudo ufw Avelao ny 110 / tcp sudo ufw avelao ny 25 / tcp Echo "Y" | Sudo UFW # Tsy azo ipt Echo "Manamafy ny Firewall" sudo ipt abtables -P Input Manasazy sudo ipt abtables -p output manaiky sudo iptables -p handroso sudo imptes -f sudo imptes-save # Setup Virtualenv CD $ Dir Echo "Mamorona tontolo virtoaly" python -m venv venv Loharano Venv / Bin / Activate PIP3 Mametraka -r Fangatahana.txt # Mametraka Certbot Echo "fametrahana ny fanamarinana" sudo snap mametraka fototra; Sudo Snap Refresh Core sudo snap install - certbot certbot sudo ln -s / snap / bin / certbot / usr / bin / certbot sudo snap mametraka redis Ny rafitra Sudo dia mamela Apache2 Start Apache2 # Run certbot sudo certbot --apache --non-interactive --Agree-Tos --domains femmebabe.com - Jemail @ gmail.com # Apetraho ny filaharan'ny mpampiasa sudo gpasswd -As mpampiasa www-data # Mametraka fahazoan-dàlana Echo "Fahazoan-dàlana" Sudo Chown -R ekipa: Mpampiasa Cache / sudo chmod a + rwx -r cache / #SUDO CHOWN -R ekipa: mpampiasa / var / Run / #Sudo Chown Root: faka / run / sudo / ts -r sudo chown -r redis: redis / var / lib / redis sudo chown -r redis: redis / var / log / redis sudo chmod -r u + rwx, g + rwx, u + rx / var / log / redis sudo chmod + r /etc/redis/redis.conf Sudo Chown -R Team: mpampiasa / var / log / sudo chown -r: mpampiasa .././ sudo chmod -r g + rwx ./ sudo chmod -r g + rx .././ sudo chmod -r g-rwx ../.ssh sudo chmod 774 ./ sudo Chown -R Www-Data: Www-Data Media / Sudo Chown Www-Data: mpampiasa ./ Sudo Chown -R Team: Media Media / Sudo Chown -R ekipa: mpampiasa ./ # Ampidiro indray ary ampiasao ny serivisy Echo "Serivisy serivisy" Sudo Rafitra rafitra Daemon-reload Ny rafitra Sudo dia mamela ny CLAMAV-Daemon Manomboka ny rafitra Sudo Cative Clamav-Daemon # Mamela ny Apache Modules Echo "Manome Apache2" sudo a2enmod rewrite sudo a2enmod wsgi Sudo A2enmod Headers sudo a2enmod ssl sudo A2enmod proxy sudo a2enmod proxy_balancer sudo a2enmod proxy_http sudo a2enmodproxy_wstunnel # Reload Daemon ary avereno apache, postfix sy opendkim Sudo Rafitra rafitra Daemon-reload Sudo Rafitra rafitra Avereno Apache2 Sudo Rafitra Moreeductl Restart Costfix # Asehoy iPv6 sy OpenDkim ho an'ny fanitsiana domain Echo "Adikao ny fampahalalana eto ambany amin'ny fanitsiana domain." hostname -i IP A | Grep Inet IP -6 ADDR | grep "scope

! / bin / bash

Log log

Nano config
      <small># Git config
Hanavao sy hametraka

Mampifanaraka Antivirus Clamav

Asio hostname
Famerenana ny Database Backup

Tsy azo ipt ambin'ny folo

Fanamboarana VirtualenV
# Apetraho ny Certbot
    success_url = '/' # Mihazakazaka Certbot
    def test_func(self): # Apetraho ny filaharan'ny mpampiasa
Mametraha fahazoan-dàlana

Sudo Chown -R Team: mpampiasa / Var / Run /

sudo Chown root: faka / run / sudo / ts -r

Ampidiro indray ary ampiasao ny serivisy

Ampiasao ny modules Apache
nano users/urls.py
Reload Daemon ary avereno indray ny Apache, Postfix ary OpenDkim

Asehoy ny IPV6 sy OpenDkim ho an'ny fanitsiana domain

Alohan'ny hampandehanana ity kaody ity dia ataovy azo antoka fa ny sehatra novidinao dia mifandray amin'ny mpizara. Mba hanaovana izany dia sokafy ny terminal eo amin'ny masinina eo an-toerana, ary ataovy io baiko io amin'ny domain:
# ping femmebabe.com # Ampidiro eto ny sehatra misy anao, aorian'ny ping
# Ampidiro eto ny sehatra misy anao, aorian'ny ping
Raha toa ka mijery tsara ny rehetra ary ny mpizara dia mandefa valiny, vonona ny hampandeha ny script izahay ary hametraka fonosana ary koa ny fanombohana, ahafahanao manamarina sy manamarina ny mpizara Apache.

Tsy ny fanamboarana rehetra ilaina ny fanamboarana ny postfix, hojerentsika io fananganana io taty aoriana. Amin'izao fotoana izao, ampandehano ity kaody fanamboarana ity ary tokony minitra vitsy mba hametrahana sy hanamarina ny mpizara anao. Avereno indray, alao antoka fa hisolo anarana, mailaka sy domain anarana ao amin'ny script araka ny anarana novidinao.

Ankehitriny, ny mpizara dia voamarina, azonao atao ny mandeha any amin'ny URL ao amin'ny browser web rehetra ary hizaha mba ho azo antoka fa handehanana HTTPS ny mpizara. Raha tsy izany dia andramo ny fiandrasana kely mandritra ny firaketana DNS mba hisintona ary avy eo dia mihazakazaka ity baiko manaraka ity mba hamerenanao ny fanamarinana Certbot:
sudo backup
Sudo Certbot --Apache --non-interactive --Agree-Tos --domains .com - gmail.com

Raha mbola nanamboatra tsara ny zava-drehetra ianao, dia tokony ho afaka miditra amin'ny pejin'ny Apache ianao raha te hahafantatra fotsiny ny kaody anao ary ny fanehoana tranokala mivantana. Manaraka, andao hanova ny setting.py hanova ny fomba fiasa defug default amin'ny famokarana. Izahay koa dia manamboatra ny sehatra ao amin'ny setting, ary koa ips anatiny.

nano yourroject / setting.py.py

Ao amin'ny setting, manova / manampy ireo andalana ireo.

Debug = diso # Site Config Site_name = 'Femme Babe' Protocol = 'HTTPS' Domain = 'femmebabe.com' ' Site_id = 1 Base_URL = Protocol + ': //' + Domain Avela_hosst = [Domain] Anatiny_ips = [ 'Xx.xx.xx.xx', ]

Site Config

Ankehitriny, mila manitsy ny Apache2 isika. Andao hanova ny rakitra config izay hasianay amin'ity andalana ity:

sudo nano /etc/apache2/sites-availabemmeMemeBabe-le-ssl.conf

Ity rakitra Config ity dia tokony hanana ny anaran'ny sehatra ao anatiny, ary ny anaran'ny mpampiasa sy ny tetikasa. Mampiasa ny anarana anarana Femembabe.com, ekipa anarana ary ny anaran'ny tetikasa ianao FemmeBabe.

Sompoa Servertokens prod Redirect maharitra / https://femmebabe.com/ Servername femmebabe.com SERVRADMIN Team@femmeMEBABE.COM Documentroot / Var / www / html Hadisoana ny $ {apache_log_dir} /Error.log Custom {apache_log_dir} /access.log mitambatra Alias ​​/ static / trano / ekipa / femme / femmebabe / static Mitaky ny nomena rehetra Alias ​​/ Media / kisary / trano / ekipa / femmebabe / Media / Mitaky ny nomena rehetra Mitaky ny nomena rehetra Wsgiscraltalias / /home/team/femmebabe/femmebabebeBe/wsGi.ps Wsgidaemonprocs Femmemebabe python-pharthon-path = / trano / Team / Fememebabe / python-trano = / trano / femble-buffer-buffer-size = 100000000000 mpampiasa = ekipa Wsgiprocessgroup femmebabe Wsgiaplicationgroup% {Global} Optionses indexes FollowSymlinks AllOveoverride rehetra Rewriteengine amin'ny Rewritecond% {fangatahana_uri} \. (CSS | WEBP | WebM | GIF | PNG | Mp3 | JPEG | JPG | JPG | SVG | WPP | Rewritecond% {http_referer}! ^ Https: //femmebabe.com/media/.* [NC] Rewriterule ^ (. + ($ / Media / $ 1 [f, l] Ampidiro /etc/letsencrypt/options-ssl-apache.conf Sslcertificatefile /etc/letsencrypt/live/femmebabe.com/fullchain.pem Sslcertificatekeyfile /etc/letsencrypt/live/femmebabe.com/privkey.pem Header dia nametraka X-frame-safidy: "Sameorigin" Header dia nametraka fidirana-control-aveland-original-original "https://femmebabe.com" Fotoam-potoana 60000 Famerana ny fetra 0 Header Mametraka cache-control "Max-Age = 30, ampahibemaso" Servername femmebabe.com SERVRADMIN Team@femmeMEBABE.COM Documentroot / Var / www / html Hadisoana ny $ {apache_log_dir} /Error.log Custom {apache_log_dir} /access.log mitambatra Rewriteengine amin'ny RewriteCond% {server_name} = Fememebabe.com Https: //% {mpizara_name}% {request_uri} [End, NE, NE, NE, NE, NE, NE, R = 2.

Ataovy azo antoka fa hanolo ny anaran'ilay tetikasa, ny direktories, ary ny sehatra ao anatin'ity vanim-potoana ohatra ity rehefa manamboatra ny mpizara. Ankehitriny, mila manafoana ny toerana tsy voafetra isika. Ity dia azo atao amin'ny fampiasana bash.

sudo a2dissite 000 000-default-le-ssl sudo A2dissite 000 000-default sudo a2dissite default-ssl

Manaraka, azontsika atao ny mamela ny tranokala default sy hamerina ny Apache2, mampiasa bash ihany koa. Aza hadino ny manolo ny femmebabe amin'ny anaran'ilay rakitra nambaranao rehefa nanova ny / sns / Apache2 / site-misy /.

sudo A2ensite femmebabe-le-ssl Sudo Remecting Reload Apache2

Miverena any amin'ny sehatra misy anao ao amin'ny NAVBAR. Tokony ho hitanao ny tranokala noforonina tao amin'ny tranonkalanao. Arahabaina! Raha tsy hitanao izany dia mety mila manova fanovana ianao. Avereno am-pitandremana ireo toe-javatra ao amin'ny tetik'asa, ny fanamafisana ny Apache, ary ho azo antoka fa tsy manana hadisoana ianao, ary ampandehano ireto baiko manaraka ireto mba hizaha ny tetikasa ho an'ny hadisoana.
ssh-keygen
CD Propectname Loharano Venv / Bin / Activate python fitantanana.py

Raha manana hadisoana ao amin'ny tetikasan'ny python anao ianao, dia soriso ny toerana misy azy ireo ary amboary azy ireo. Mety tsy ho hitanao ny fahadisoanao rehetra miankina amin'ny toerana misy azy ireo, ka raha manana hadisoana izay milaza fotsiny ianao hoe "ny mponina dia tsy reentrant", hanova ity rakitra manaraka ity amin'ny rejistra virtoaly, hamoaka ny lesoka.

Nano Venv / Lib / Python3.12 / Site-Packages / DJango / AppS / Registry.py
cat ~/.ssh/id_rsa.pub
Mandehana mankany amin'ny andalana 83, izay misy ny hadisoana runtime (mampiakatra ny runtimeerror ("populate () tsy reentrant"), ary ampio ny fanehoan-kevitra eo alohany, miaraka amin'ny inditation, shoapp_configs = {}. Toa izao:

Raha tena izy ireo: # Misoroka ny antso an-da-dre mba tsy handehanana appconfig rady rady () # fomba indroa. # aangam-peo runtimeerror ("populate () tsy reentrant") self.app_configs = {} self.Loading = Marina

Misoroka ny antso an-telefaona mba tsy handehanana AppConfig rady rady ()
ssh-keygen -t rsa -b 4096
fomba indroa.

Atsangano RuntimeError ("populate () tsy reentrant")

Azonao atao ny mandinika indray ilay tetikasa ary esory ny lesoka.
ssh ubuntu@XX.XX.XX.XX
python fitantanana.py

Avy eo ianao dia afaka mahita ny lesoka ary amboary. Rehefa manana izany ianao ary ny code dia manangona hadisoana, ataovy azo antoka fa hanova ny rakitra dia toa izao:

Raha tena izy ireo: # Misoroka ny antso an-da-dre mba tsy handehanana appconfig rady rady () # fomba indroa. Atsangano RuntimeError ("populate () tsy reentrant") # self.app_configs = {} self.Loading = Marina

Misoroka ny antso an-telefaona mba tsy handehanana AppConfig rady rady ()

fomba indroa.
nano sshd_config
self.app_configs = {}
# Raha toa ka an-tserasera ny mpizara, rehefa manao fanovana fanampiny isika, dia mila mampiasa ity baiko manaraka ity mba hamerenantsika ny mpizara:
# Sudo Remecting Reload Apache2
# Mahagaga! Ahoana kosa ny amin'ny fandefasana mailaka? Mba hanombohana mandefa mailaka, dia mila havaozina aloha ny fanitsiana ny sehatra. Tokony ho ao amin'ny tontolon'ny DNS ao amin'ny kianja Squarespace ianao, na na iza na iza na iza na iza no anarana anarana nisafidiananao. Isika koa dia tokony hametraka sy hampiditra ny fanitsiana, ary mitantana baiko vitsivitsy.
# Voalohany, andao isika haka ny adiresy ipv6 amin'ny mpizara. Hanokatra ny DNS anao izahay avy eo ary ampio ny rakitsoratra.
# Mba hahazoana ny adiresy IPv6 mpizara, ampiasao ity baiko ity:
# IP -6 Addr
# Ankehitriny, afaka manampy ireo rakitsoratra manaraka ireto amin'ny filaharana DNS isika. Toa izao ny firaketako. Na izany aza, ho an'ny firaketanao, ianao dia tokony hanolo ny adiresy IP amin'ny IP (tsy 75.147.182.214, ahy izany). Ampio koa ny faritaninao amin'ny toeran'ny femmebabe.com, ary koa ny adiresy IPv6 hita amin'ny didy teo aloha (tsy afaka mampiasa ny ahy ianao Aza manahy momba ny sehatra ho an'ny sehatra izao, noforonina rehefa nametraka postfix, ilay mpizara mailaka, miaraka amin'ny OpenDkim, ary hanonta ny lakile. Izahay dia hanamboatra an'io farany io.
# @
ny
N / A
75.147.182.214
# @
MX
10
femmebabe.com
# @
Ptr
N / A
femmebabe.com
# @
TXT
N / A
TXT @ v = spf1 mx ip75.147.182.214IP6: FE80 :: 725a: FFF: FE49: 3E02 ~ REHETRA REHETRA
# default._bimi
TXT
N / A
v = bimi1; l = https: //femmebabe9e.com/media/static/femmebabe.svg
# _dmarc
TXT
N / A
v = dmarc1; p = tsy misy
# Ankehitriny, mila manampy ny fanitsiana maharitra amin'ny postfix. Ny hany tokony hataontsika dia azo antoka fa manolo ny anaran'ny domain, Femigne.com, miaraka amin'ny anarana anarana ampiasainao. Andao hojerentsika ny fisie rehetra izay namaha ny tsirairay avy, ary nametraka azy ireo tao amin'ny lahatahiry antsoina hoe config ao amin'ny tetik'asa, mba hametrahana ny OS.
# nano config / etc_postfix_main.cf
# Ampio ity lahatsoratra ity amin'ny rakitra
# # Jereo / /usr/share/postfix/mastfix/main.cf.Diste ho an'ny fanehoan-kevitra sy fanehoan-kevitra feno kokoa


# Debian voafaritra: mamaritra ny anarana rakitra dia ny voalohany
# andalana an'io rakitra io mba hampiasaina ho anarana.  Ny default debian
# is / sns / mailaka.
#myorigin = / sns / Mautname

smtpd_banner = $ myhostname esmtp $ mail_name (ubuntu)
biff = tsia

# Mahafinaritra.
append_dot_mydomain = no

# Unconment Ny tsipika manaraka hiteraka fampitandremana "fandefasana mailaka"
#delay_warning_time = 4h

readme_directory = tsia

# Jereo ny http://www.postfix.org/compatility_readme.html - default amin'ny 3.6 amin'ny
# Fametrahana vaovao.
Compatibility_level = 3.6



# TLS Parameter
smtpd_tls_cert_file = / etc / letsencrypt / live / femmebabe.com / fullchain.pem
smtpd_tls_key_file = / sns / letsencrypt / live / femmebabe.com / privey.pem
smtpd_tls_security_level = mety

smtp_tls_capath = / sns / ssl / certs
smtp_tls_sessional_cache_database = btree = $ {data_directory} / smtp_scache

smtpd_relay_restriction = permit_sl_authenticated, defer_unauth_destationination
myhostname = femmebabe.com
alias_map = hash: / sns / aliases
alias_database = hash: / sns / aliases
Myorigin = / sns / Mautname
mydestination = femmebabe.com, localhost, $ myhostname
smtp_helo_name = femmebabe.com
mynetworks = 127.0.0.0/8 [:ffff 1277.0.0.0.04 / :: 1] / 128
Mailbox_size_limit = 0
mpahazo_delimiter = +
inet_interfaces = rehetra
inet_protocols = rehetra

# Milter Configrasi
milter_default_action = manaiky
Milter_protocol = 6
smtpd_milters = Local: /Opendkim/Opendkim.Sock
non_smtpd_milters = $ smtpd_milters

smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1

virtual_transport = lmtp: Unix: Private / Dovecot-LMTP

smtpd_Sasl_path = tsy miankina / Auth
# Jereo / /usr/share/postfix/main.cf.Diste ho an'ny fanehoan-kevitra sy fanehoan-kevitra feno kokoa
# Debian voafaritra tsara: Ny famaritana anarana rakitra dia hiteraka voalohany
# tsipika an'io rakitra io ampiasaina ho anarana.  Ny default debian
# Is / sns / Mautname.
# Myorigin = / sns / Mautname
# Mandrakizay .Domain no asan'ny mua.
# Hiditra amin'ny tsipika manaraka mba hiteraka fampitandremana "fanemorana"
# DELAY_WARNING_TIME = 4h
# Jereo ny http://www.postfix.org/compatibility_readme.html - default amin'ny 3.6 on
# Fametrahana vaovao.
# TLS Parameter
# Fanamafisana Milter
# Next Config!
# nano config / etc_postfix_master.cf
# Ampio ireo andalana ireo:
# #
# Postfix master master pass configuration configuration.  Raha mila fanazavana momba ny format
# ny rakitra, jereo ny pejy manual (5) (baiko: "Lehilahy 5 Tompoko" na
# on-line: http://www.postfix.org/master.5.html).
#
# Aza adino ny manatanteraka ny "postfix reload" taorian'ny nanovana ity rakitra ity.
#
# ==========================================================================
# Service Type Service Unpriv Chroot Wakeup MaxProc Command + Args
# (eny) (eny) (tsia) (tsia) (100) (100)
# ==========================================================================
SMTP INET N - Y - - SMTPD
#Smtp Inet N - Y - 1 Lioscreen
#SMTPD Pass - - Y - - SMTPD
#DNSBLOG UNIX - - Y - 0 DNSBLOG
#tlsproxy unix - - Y - 0 tlsproxy
# Misafidiana iray: Ampiasao ny fanekena ho an'ny mpanjifa Loopback ihany, na ho an'ny mpanjifa rehetra.
# 127.0.0.1: fandefasana inet n - Y - - SMTPD
Sendismission Inet N - Y - - SMTPD
  -o smtpd_relay_reliction = permit_sl_authenticated, nolavina
  -o smtpd_recipient_restriction = permit_sl_authenticated, nolavina
  -o syslog_name = postfix / fandefasana
  -o smtpd_tls_security_level = encrypt
  -o smtpd_tls_wrappermode = tsia
  -o smtpd_sasl_auth_enable = eny
  -o smtpd_Sasl_type = Dovecot
  -o smtpd_Sasl_path = tsy miankina / Auth
# -o syslog_name = postfix / fandefasana
# -o smtpd_tls_security_level = encrypt
# -o smtpd_sasl_auth_enable = eny
# -o smtpd_tls_auth_only = eny
# -o smtpd_reject_unlicted_recipient = tsia
# -o smtpd_client_restriction = $ mua_client_restriction
# -o smtpd_helo_restriction = $ mua_helo_restriction
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
# -o smtpd_recipient_restriction =
# -o smtpd_relay_reliction = permit_sl_authenticated, mandà
# -o milter_macro_daemon_name = avy
# Misafidiana iray: Ampiasao ny SMTPS ho an'ny mpanjifa Loopback ihany, na ho an'ny mpanjifa rehetra.
# 127.0.0.1: SMTPS INET N - Y - - SMTPD
#smtps inet n - y - - SMTPD
# -o syslog_name = postfix / smtps
# -o smtpd_tls_wrappermode = eny
# -o smtpd_sasl_auth_enable = eny
# -o smtpd_reject_unlicted_recipient = tsia
# -o smtpd_client_restriction = $ mua_client_restriction
# -o smtpd_helo_restriction = $ mua_helo_restriction
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
# -o smtpd_recipient_restriction =
# -o smtpd_relay_reliction = permit_sl_authenticated, mandà
# -o milter_macro_daemon_name = avy
# 628 Inet N - Y - - QMQPD
pickup unix n - y 60 1 pickup
Fanadiovana Unix N - Y - 0 Fanadiovana
QMGR Unix N - N 300 1 QMGR
#Qmgr unix n - N 300 1 Oqmgr
TLSMGR Unix - - y 1000?   1 tlsmgr
Rewrite Unix - - - Y - - FANGALOHANA VONINY
Bounce Unix - - Y - 0 Bounce
Defer Unix - - Y - 0 Bounce
Trace Unix - - Y - 0 Bounce
Hamarino ny Unix - - Y - 1 Manamarina
Flush Unix N - y 1000?   0 flush
Proxymap Unix - - N - - Proxymap
Proxywrite Unix - - N - 1 Proxymap
SMTP Unix - - Y - - SMTP
Relay Unix - - Y - - SMTP
        -o syslog_name = postfix / $ serivisy_name
# -o smtp_helo_timeout = 5 -o smtp_connect_tal = 5
Showq Unix N - Y - - Showq
Hadisoana Unix - - Y - - Hadisoana
Retry Unix - - Y - - Hadisoana
Discard Unix - - Y - - Discard
Unix Local - N N - - Local
Cental UNIX - N N - - Virtual
LMTP Unix - - Y - - LMTP
Anvil Unix - - Y - 1 Anvil
SCACHE UNIX - - Y - 1 Skoche
Postlog Unix-DGRAM N - N - 1 PostLogd
#
# ====================================================================
# Fifaneraserana ho an'ny rindrambaiko tsy postfix. Aza adino ny mandinika ny boky
# Pejin'ny rindrambaiko tsy postfix mba hahitana izay safidy tiany.
#
# Maro amin'ireto serivisy manaraka ireto no mampiasa ny postfix postfix (8)
# Agent.  Jereo ny pejin'ny PIPE (8) ho an'ny fampahalalana momba ny $ {mpandray)
# sy safidy hafa hafatra hafa.
# ====================================================================
#
# maildrop. Jereo ny rakitra postfix maildrop_readme ho an'ny antsipirihany.
# Mamaritra ihany koa amin'ny Main.cf: Maildrop_Destination_Recipient_limit = 1
#
Mildrop Unix - nN - - Pipe
  sain-tsolika = mpampiasa drxhu = vmail argv = / usr / bin / maildrop -D $ {mpanasa}
#
# ====================================================================
#
# Ny dikan-teny nataon'i Cyrus farany dia afaka mampiasa ny fidirana Master "LMTP" efa misy.
#
# Mamaritra ny ao Cyrus.conf:
# lmtp cmd = "lmtpd -a" Listen = "locarena: lmtp" Proto = TCP4
#
# Mamaritra ny iray amin'ny Main.cf iray na maromaro amin'ireto manaraka ireto:
# mailbox_transport = lmtp: inet: localhost
# virtoual_transport = lmtp: inet: localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (amoos gouaux)
# Mamaritra ihany koa amin'ny Main.cf: Cyrus_Destination_Recipient_limit = 1
#
#Cyrus Unix - N N - - Pipa
#  flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Ohatra taloha amin'ny fanaterana amin'ny alàlan'ny Kyrosy.
#
# Old-Cyrus Unix - N N - - Pipe
# saoma = r mpampiasa = Cyrus argv = / Cyrus / bin / fandefasana -m -m $ {Extension} $ {mpampiasa) $ {mpampiasa}
#
# ====================================================================
#
# Jereo ny rakitra postfix UUCP_readme ho an'ny antsipirihany momba ny fanamafisana.
#
UUCP Unix - N N - - Pipa
  Sainema = FQHU mpampiasa = UUCP ARGV = UUX -R -N -N -Z -Z $ Mandefa - $ Nextop! Rmail (Mpampiasa $)
#
# Fomba fandefasana ivelany ivelany.
#
Ifmail Unix - N N - - Pipa
  Saim-peo = F mpampiasa = ftn argv = / usr / lib / Ifmail / Ifmail -r $ manaraka (Mpampiditra $)
BSMTP Unix - N N - - Pipa
  sainam-pirenena = fq. Mpampiasa = bsmtp argv = / usr / lib / bsmtp / bsmtp -t $ aperverhop-$ mpandefa $ mpandray anjara $
Scaleemail-backend Unix - N N - 2 Pipe
  Sainam-pirenena = r mpampiasa = scaleMail Argv = / usr / lib / scaleMail / bin / scaleMail-Store $ {NEWERHOP) $ {mpampiasa} $ {mpampiasa} $ {edision}
Mailman Unix - N N - - Pipe
  Saim-peo = Frx User = List argv = / usr / lib / mailman / bin / postfix-to-mailman.py $ {extOh..py
# 
# Postfix master master prisction configuration.  Raha mila fanazavana momba ny format
# ny rakitra, jereo ny pejy manual (5) (baiko: "Lehilahy 5 Tompoko" na
# on-line: http://www.postfix.org/master.5.html).
# 
# Aza hadino ny manatanteraka ny "postfix reload" taorian'ny nanitanao ity rakitra ity.
# 
# ==
# Type Service Type Unpriv Chroot Wakeup MaxProc Command + Args
# (eny) (eny) (tsia) (tsia) (100)
# ==
# SMTP INET N - Y - 1 Lioscreen
# SMTPD Pass - - Y - - SMTPD
# DNSBLOG UNIX - - Y - 0 DNSBLOG
# TlSproxy Unix - - Y - 0 TlSProxy
# Misafidiana iray: Ampiasao ny fanekena ho an'ny mpanjifa Loopback ihany, na ho an'ny mpanjifa rehetra.
# 127.0.0.1:IsaUblishis Inet N - Y - - SMTPD
# -o syslog_name = postfix / fandefasana
# -o smtpd_tls_security_level = encrypt
# -o smtpd_sasl_auth_enable = eny
# -o smtpd_tls_auth_only = eny
# -o smtpd_reject_unliclisted_recipient = tsia
# -o smtpd_client_restriction = $ mua_client_restriction
# -o smtpd_helo_restriction = $ mua_helo_restriction
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
# -o smtpd_recipient_restrictions =
# -o smtpd_relay_reliction = permit_sl_authenticated, nolavina
# -O Milter_Macro_Daemon_Name = avy
# Safidio ny iray: avelao ny SMTPS ho an'ny mpanjifa Loopback ihany, na ho an'ny mpanjifa rehetra.
# 127.0.0.1:3Smtps Inet N - Y - - SMTPD
# SMTPS INET N - Y - - SMTPD
# -o syslog_name = postfix / smtps
# -o smtpd_tls_wrappermode = eny
# -o smtpd_sasl_auth_enable = eny
# -o smtpd_reject_unliclisted_recipient = tsia
# -o smtpd_client_restriction = $ mua_client_restriction
# -o smtpd_helo_restriction = $ mua_helo_restriction
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
# -o smtpd_recipient_restrictions =
# -o smtpd_relay_reliction = permit_sl_authenticated, nolavina
# -O Milter_Macro_Daemon_Name = avy
# 628 INET N - Y - - QMQPD
# QMGR Unix N - N 300 1 Oqmgr
# -o smtp_helo_timeout = 5 -o smtp_connect_tal = 5
# 
# ==
# Fifandraisana amin'ny rindrambaiko tsy postfix. Aza adino ny mandinika ny boky
# Pejy ao amin'ny rindrambaiko tsy postfix mba hahitana izay safidy tiany.
# 
# Maro amin'ireto serivisy manaraka ireto no mampiasa ny postfix postfix (8)
# Agent.  Jereo ny pejin'ny PIPE (8) ho an'ny fampahalalana momba ny $ {mpandray)
# ary safidy hafa misy hafatra hafa.
# ==

Mildrop. Jereo ny rakitra postfix maildrop_readme ho an'ny antsipirihany.

Lazao ihany koa amin'ny Main.cf: Maildrop_Destination_Recipient_limit = 1
nano initialize

==

# Ny dikan-tsarimihetsika kyrus vao haingana dia afaka mampiasa ny fidirana Master "LMTP" misy.

Farito ao amin'ny Cyrus.conf:

lmtp cmd = "lmtpd -a" Listen = "locarena: lmtp" Proto = TCP4

Lazao amin'ny Main.cf iray na maromaro amin'ireto manaraka ireto:
ssh team@XX.XX.XX.XX
mailbox_transport = lmtp: inet: localhost

virtual_transport = lmtp: inet: localhost

==

cat ~/.ssh/id_rsa.pub
Cyrus 2.1.5 (Amos gouaux)

Lazao ihany koa amin'ny Main.cf: Cyrus_Destination_Recipient_limit = 1

git clone git://github.com/you/yourproject.git
Cyrus Unix - N N - - Pipe

flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}

ls
==

Ohatra taloha amin'ny fandefasana amin'ny alàlan'ny Kyrosy.

cp -r yourproject whatyoucalledit
Old-Cyrus Unix - N N - - Pipe

Saoma = R Mpikambana = Cyrus Argv = / Cyrus / Bin / Fandefasana -E -M $ {Extension} $ {User}

sudo nano /usr/bin/ascript
==

Jereo ny rakitra postfix uucp_readme ho an'ny antsipirian'ny fanamafisana.
# 
    echo "# 
Fomba fandefasana ivelany hafa.

Sy ny fanamafisana OpenDkim. Opendkim dia mamaritra ny mpizara mailaka miaraka amin'ny fanalahidin'ny domain mba hahatonga azy ireo ho azo antoka kokoa. Raha tsy misy izany dia tsy misy nosoniavina ny mail ary mety tsy hanao inbox.
sudo chmod a+x /usr/bin/ascript
nano config / etc_default_opedkim

Ampio ireo andalana ireo:

# Fanamarihana: Ity dia rakitra fanamafisana lova. Tsy ampiasain'ny OpenDkim izy io # Serivisy rafitra. Ampiasao azafady ny tarehimarika fanitsiana mifanaraka amin'ny # /etc/opedkim.conf. # # Taloha, ny iray dia hanova ny toe-javatra default eto, ary avy eo hanatanteraka # /lib/opedkim/ouphkim.service.generate hiteraka rakitra rongony # /etc/systemd/system/Opendkim.service.d/override.conf sy # /etc/tmpfiles.d/oupendkim.conf. Na dia mbola azo atao aza izany dia izao # nanoro hevitra hanitsiana ireo toe-javatra mivantana ao amin'ny /etc/opedkim.conf. # # Daemon_Ofa = "" # Fanovana to / var / spool / postfix / run / opendkim hampiasa socket unix miaraka # postfix ao anaty chroot: # Rundir = / var / spool / postfix / run / opendkim Rundir = / run / opendkim # # Unccomment hamaritana socket mifandimby # Mariho fa ny fametrahana izany dia hanongotra ny sandan'ny sokitra amin'ny OpenDkim.conf # Default: Socket = "Local: /var/spool/postfix/ouphkim/opendkim.sock" # Mihainoa amin'ny sehatra rehetra amin'ny seranan-tsambo 54321: # Socket = inet: 54321 # Mihainoa amin'ny Loopback ao amin'ny Port 12345: # Socket = inet: 12345 @ localhost # Henoy ny 192.0.2.1 Amin'ny seranan-tsambo 12345: # Socket = inet: 12345@192.0.2.1 Mpampiasa = OpenDkim Vondrona = OpenDkim Pidfile = $ rundir / $ anarana.pid Exraafter =
# Fanamarihana: Ity dia rakitra fanamafisana lova. Tsy ampiasain'ny OpenDkim izy io
# Serivisy rafitra. Ampiasao azafady ny tarehimarika fanitsiana mifanaraka amin'ny
# /etc/opernkim.conf.
# 
# Taloha, ny iray dia hanova ny filaharana mahazatra eto, ary avy eo manatanteraka
# /Lib/Opendkim/Opendkim.service.Generate hiteraka rakitra mihintsana amin'ny
# /etc/systemd/system/opendkim.service.d/override.conf sy
# /etc/tmpfiles.d/oupendkim.conf. Na dia mbola azo atao aza izany dia izao
# Arosoy hanitsy ny toe-javatra mivantana ao amin'ny /etc/opedkim.conf.
# 
# Daemon_afo = ""
# Fanovana to / var / spool / postfix / run / opendkim hampiasa socket unix miaraka
# postfix ao anaty kôlô:
# Rundir = / var / spool / postfix / run / opendkim
# 
# Tsy misy napetaka ny hamafisina socket mifandimby
# Marihina fa ny fametrahana izany dia hanongotra ny sandan'ny sokitra amin'ny OpenDkim.conf
# Default:
# Henoy ny fifandraisana rehetra amin'ny seranan-tsambo 54321:
# Socket = inet: 54321
# Henoy amin'ny Loopback ao amin'ny Port 12345:
pip3 install --upgrade opencv-python # Socket = inet: 12345 @ localhost
pip3 install --upgrade opencv-contrib-python # Henoy ny 192.0.2.1 Amin'ny seranan-tsambo 12345:
# Socket = inet: 12345@192.0.2.1
# nano config / etc_dovecot_conf.d_10-master.conf
# Ampio ireo andalana ireo:
# 0-master.conf 
#default_process_limit = 100
#default_client_limit = 1000

# Default vsz (haben'ny fahatsiarovana virtoaly) fetra ho an'ny fizotran'ny serivisy. Ity indrindra indrindra
# Nikasa ny hisambotra sy hamono ny fizotran'ny tadidy ianao alohan'ny hihinanana azy
# ny zava-drehetra.
#default_vsz_limit = 256m

# Mpampiasa Login dia ampiasain'ny fizotran'ny fidirana. Ity no tena tsy natoky indrindra
# mpampiasa ao amin'ny rafitra Dovecot. Tsy tokony hanana fidirana na inona na inona mihitsy izany.
#Default_login_user = Dovenull

# Mpampiasa anatiny dia ampiasain'ny dingana tsy matotra. Tokony hisaraka amin'ny
Mpampiasa # Login, ka tsy afaka hanelingelina ireo dingana hafa ny fizotran'ny fidirana.
#default_internal_user = Dovecot

Serivisy IMAP-Login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = eny
  }

  # Isan'ny fifandraisana hikarakarana alohan'ny hanombohana dingana vaovao. matetika
  # Ny soatoavina ilaina ihany no 0 (tsy misy fetra) na 1. 1 dia azo antoka kokoa, fa 0
  # haingana kokoa. 
  #service_count = 1

  # Isan'ny fizotran-javatra mba hiandrasana fifandraisana foana.
  #process_min_avail = 0

  # Raha mametraka serivisy_count = 0 ianao dia mety mila mitombo izany.
  #vsz_limit = $ default_vsz_limit
}

Serivisy Pop3-Login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = eny
  }
}

Serivisy serivisy-Login {
  inet_listener sendmission {
    #port = 587
  }
}

Service LMTP {
  unix_listener / var / spool / postfix / privé / dovecot-lmtp {
    Vondrona = postfix
    Mode = 0666
    Mpampiasa = postfix
  }

  # Mamorona mpihaino Inet Mpihaino raha tsy afaka mampiasa ny sokitra Unix etsy ambony ianao
  #inet_listener lmtp {
    # Fadio ny fanaovana lmtp hita ho an'ny Internet iray manontolo
    #Address =
    #port = 
  #}
}

Serivisy IMAP {
  # Ny ankamaroan'ny fahatsiarovana dia mankany amin'ny MMAP () rakitra. Mety mila mampitombo izany ianao
  # fetra raha manana boaty mailaka lehibe ianao.
  #vsz_limit = $ default_vsz_limit

  # Max. Isan'ny fizotran'ny imap (fifandraisana)
  #process_limit = 1024
}

Serivisy Pop3 {
  # Max. Isan'ny fizotran'ny pop3 (fifandraisana)
  #process_limit = 1024
}

Fanolorana ny serivisy
  # Max. Isan'ny fizotran'ny SMTP (fifandraisana)
  #process_limit = 1024
}

Service Auth {
  # auth_socket_path teboka amin'ity socket usterdb ity amin'ny alàlan'ny default. Matetika izany
  # ampiasain'i Dovecot-LDA, Doveadm, mety ho dingana imap, sns sns izay manana
  # Fahazoan-dàlana feno amin'ity sokitra ity dia afaka mahazo lisitr'ireo anarana rehetra sy
  # ahazoana ny valin'ny fijerin'ny tsirairaydabs.
  #
  # Ny fomba 0666 0666 dia mamela ny olona hifandray amin'ny sokitra, fa ny
  # UserDB Lookups dia hahomby raha tsy miverina ny "Uid" ny mpampiasa "UID"
  # mifanandrify amin'ny UID Caller. Ary raha mifanandrify ny UID na Gid Caller
  Ny UID ny Sokle na ny Gid dia mahomby ny fijery. Zavatra hafa rehetra miteraka tsy fahombiazana.
  #
  # Hanome ny fahazoan-dàlana feno antso mba hikaroka ireo mpampiasa rehetra, apetraho ny fomba
  # zavatra hafa noho ny 0666 sy ny dovecot mamela ny kernel hampihatra ny
  # Fahazoan-dàlana (e.g. 0777 mamela ny fahazoan-dàlana rehetra).
  unix_listener / var / spool / postfix / privant / south {
    Mode = 0660
    Mpampiasa = postfix
    Vondrona = postfix
  }
}

Service Mpanoratra-Worker {
  Ny fizotran'ny mpiasa ao amin'ny mpiasan'ny # AUTH dia mihazakazaka amin'ny fakany amin'ny alàlan'ny default, mba hahafahany miditra
  # / sns / aloka. Raha tsy ilaina izany dia tokony hovana ny mpampiasa
  # $ $ default_internal_user.
  #user = faka
}

Service dict {
  # Raha ampiasaina ny dict proxy, ny fizotran'ny mailaka dia tokony hiditra amin'ny faladiany.
  # Ohatra: mode = 0660, Group = Vmail sy Google Mail_access_groups = Vmail
  unix_listener dict {
    #Mode = 0600
    #User = 
    #Group = 
  }
}
# Default_process_limit = 100
# Default_client_limit = 1000
# Fepetra (habe fahatsiarovana virtoaly) Fetran'ny asa fanompoana. Ity indrindra indrindra
# natao hisambotra sy hamono ny fizotrany izay tadidin'ny tadidy alohan'ny hihinanana azy
# ny zavatra rehetra.
# Default_vsz_limit = 256m
# Mpampiasa Login dia ampiasaina anatiny amin'ny alàlan'ny fizotran'ny fidirana. Ity no tena tsy natoky indrindra
# Mpampiasa amin'ny rafitra Dovecot. Tsy tokony hanana fidirana na inona na inona mihitsy izany.
# Default_login_user = Dovenull
# Ny mpampiasa anatiny dia ampiasain'ny dingana tsy matotra. Tokony hisaraka amin'ny
# Mpampiasa mpampiasa, ka tsy afaka hanelingelina ireo dingana hafa ny fizotran'ny fidirana.
# Default_internal_user = Dovecot
# Port = 143
# Port = 993
# SSL = Eny
# Isan'ny fifandraisana hiatrehana alohan'ny hanombohana dingana vaovao. matetika
# Ny soatoavina tokana dia 0 (tsy misy fetra) na 1. 1 dia azo antoka kokoa, fa 0
# dia haingana kokoa. <doc / wiki / loginprocess.txt>
# service_count = 1
# Isan'ny fizotran-javatra mba hiandrasana fifandraisana foana.
# Process_min_avail = 0
# Raha mametraka serivisy_count = 0 ianao dia mety mila mitombo izany.
# vsz_limit = $ default_vsz_limit
# Port = 110
# Port = 995
# SSL = Eny
# Port = 587
# Mamorona mpihaino Inet afa-tsy raha tsy afaka mampiasa ny sokitra UNIX etsy ambony ianao
# inet_listener lmtp {
# Fadio ny fanaovana lmtp hita ho an'ny Internet iray manontolo
# Adiresy =
Port =

}

Ny ankamaroan'ny fitadidiana dia mandeha amin'ny MMAP () rakitra. Mety mila mampitombo izany ianao

Voafetra raha manana boaty mailaka lehibe ianao.

vsz_limit = $ default_vsz_limit

Max. Isan'ny fizotran'ny imap (fifandraisana)

Process_limit = 1024

Max. Isan'ny fizotran'ny pop3 (fifandraisana)

Process_limit = 1024

Max. Isan'ny fizotran'ny SMTP (fifandraisana)

Process_limit = 1024

Auth_socket_path dia manondro ity sokitra mpampiasaDB ity amin'ny alàlan'ny default. Matetika izany

nampiasain'i Dovecot-LDA, Doveadm, mety ho dingana imp, sns sns izay manana

Ny fahazoan-dàlana feno amin'ity sokay ity dia afaka mahazo lisitr'ireo anarana rehetra sy

Raiso ny valin'ny fijerin'ny mpampiasa rehetra.

Ny fomba 0666 0666 default dia mamela ny olona hifandray amin'ny sokitra, fa ny
# Ny fijery mpampiasa mpampiasa dia hahomby ihany raha tsy miverina ny "UID" ny mpampiasa
# mifanandrify amin'ny UID Caller. Ary raha mifanandrify ny UID na Gid Caller
# Ny UID ny sokitra na ny Gid dia mahomby ny fijery. Zavatra hafa rehetra miteraka tsy fahombiazana.
# 
# Hanome ny fahazoan-dàlana feno ny antso mba hikaroka ireo mpampiasa rehetra, apetraho ny fomba
# zavatra hafa ankoatry ny 0666 sy dovecot mamela ny kernel hampihatra ny
# Fahazoan-dàlana (e.g. 0777 mamela ny fahazoan-dàlana rehetra).
# Ny fizotran'ny mpiasa mpiasam-panjakana dia mihazakazaka toy ny fakany amin'ny alàlan'ny default, mba hahafahany miditra
# / sns / aloka. Raha tsy ilaina izany dia tokony hovana ny mpampiasa
# $_internal_user $.
# mpampiasa = faka
# Raha ampiasaina ny dict proxy, ny fizotran'ny mailaka dia tokony hiditra amin'ny faladiany.
# Ohatra: modely = 0660, Group = Vmail sy Global Mail_access_Groups = Vmail
# Mode = 0600
# Mpampiasa =
# Vondrona =
# Avereno indray, alao antoka fa hanolo ny sehatra ao anatin'ireo rakitra rehetra ireo, FEMMEBABE.COM, miaraka amin'ny sehatra nofantenanao. Hanova ny rakitra manaraka, ny config's Dovecot,
# nano config / etc_dovecot_dovecot
# Ary ampio ireo andalana ireo
# ## Fanamafisana Dovecot

# Raha maika ianao, dia jereo ny http://wiki2.dovecot.org/quickconfigur

# "Doveconf -N" baiko dia manome vokatra madio amin'ny fanovana fanovana. Ampiasao izany
# fa tsy ny kopia & ny fiandohana; Filesa rehefa mandefa ao amin'ny lisitry ny mailaka Dovecot.

# '#' toetra sy ny zava-drehetra aorian'ny fanehoan-kevitra. Sehatra fanampiny
# sy ny tabilao tsy niraharaha. Raha te hampiasa mazava tsara ireo ianao dia apetraho ny
# lanja ao anaty teny nalaina, ohatra.: fanalahidy = "# char sy kilalao fotsy fotsy"

# Ny ankamaroany (fa tsy ny rehetra) dia mety ho tafahoatra amin'ny protocols samihafa sy / na
# Loharano / Toerana IPs amin'ny alàlan'ny fametrahana ny toe-javatra ao anaty fizarana, ohatra:
# protocol imap {}, eo an-toerana 127.0.0.1 {}, lavitra 10.0.0.0/8 {}

# Ny soatoavina default dia aseho isaky ny toerana tsirairay, tsy takiana amin'ny tsy fahatomombanana
# ireo. Izy ireo dia miavaka amin'io na dia: tsy misy fizarana (e.g. Namespace {))
# na plugin Settings dia ampiana amin'ny alàlan'ny default, afa-tsy ireo ohatra ihany izy ireo.
# Lalana dia ohatra ihany koa miaraka amin'ireo tena tsy mety amin'ny tena tsy mifanaraka amin'ny fanitsiana
# Safidy. Ireo lalana voatanisa eto dia ho an'ny configure --prefix = / usr
# --sysconfdir = / etc --localstatedir = / var

# Protocols napetraka
!

# A COMMA misaraka ny lisitry ny IPS na ny tafika izay hihainoana ho fifandraisana. 
# "*" Mihaino ny fifandraisana IPv4 rehetra, "::" mihaino ny fifandraisana IPv6 rehetra.
# Raha te-hamantatra ny seranan-tsambo tsy misy na inona na inona sarotra kokoa ianao,
# Hanova conf.d / master.conf.
#Listen = *, ::

# Directory Base izay hitehirizana angon-drakitra runtime.
#Base_Dir = / var / Run / Dovecot /

# Anaran'ity tranga ity. Amin'ny setup doveadm sy baiko hafa
# afaka mampiasa -i hisafidy izay ohatra izay ampiasaina (safidy iray hafa
# to -c). Ny anarana dia ampiana koa ny fizotran'ny dovecot
# amin'ny famoahana ps.
#Instance_Name = Dovecot

# Hafatra fiarahabana ho an'ny mpanjifa.
#login_greeting = dovecot vonona.

# Space misaraka ny lisitry ny tambajotra azo itokisana. Fifandraisana avy amin'ireto
# IPS dia navela handresy ny adiresy IP sy seranan-tsambo (ho an'ny fitrandrahana sy
# ho an'ny fanamarinana fanamarinana). Tsy azo atao ihany koa ny tsy misy dilable_plaintext_auth
# Ireo tambajotra ireo. Matetika ianao no hamaritra ireo mpizara mpisolovava anao eto.
#login_trusted_networks =

# Space misaraka ny lisitry ny fidirana fidirana fidirana fidirana fidirana (e.g. tcpwrap)
#login_access_sockets = 

# Miaraka amin'ny proxy_maybe = Eny raha mifanentana amin'ireto IPS ireto ny tanjona, dia aza atao
# Proxying. Tsy ilaina izany, fa mety ilaina raha toa ka toerana
# Ip dia e.g. IP palance palance.
#Auth_proxy_elf =

# Asehoy ny anaram-boninahitra verbose bebe kokoa (ao amin'ny PS). Maneho ny anaran'ireo mpampiasa sy
Adiresy # IP. Mahasoa raha mahita hoe iza no tena mampiasa ny dingana IMAP
# (ohatra. Nizara ny mailaka na raha toa ka ny UID mitovy dia ampiasaina amin'ny kaonty marobe).
#verbose_proctitle = Tsia

# Tokony hovonoina daholo ny dingana rehetra rehefa mihemotra ny fizotran'ny master dovecot.
# Ny fametrahana izany amin'ny "tsia" dia midika fa ny dovecot dia azo havaozina tsy misy
# fanerena fifandraisana misy mpanjifa efa akaiky mba hanakatonana (na dia mety ho
# Olana raha toa ka e.g. noho ny fiampangana fiarovana).
#shutdown_clients = eny

# Raha tsy misy zero, dia mandidy mailaka amin'ny alàlan'ny fifandraisana maro amin'ny mpizara doveadm,
# fa tsy hampandeha azy ireo mivantana amin'ny dingana mitovy.
#doveadm_worker_count = 0
# Unix socket na mpampiantrano: Port ampiasaina amin'ny fifandraisana amin'ny mpizara doveadm
#doveadm_socket_path = doveadm-server

# Space misaraka ny lisitry ny variabes momba ny tontolo iainana izay notehirizina tao amin'ny Dovecot
# Startup ary nandalo tamin'ny fizotrany rehetra. Azonao atao koa ny manome
# fanalahidy = tsiroaroa mba hametraka toe-javatra manokana.
#import_enIrononment = tz

##
## Rakibolana Server Server
##

# Rakibolana dia azo ampiasaina amin'ny fitehirizana lakile = lisitry ny lanja. Izany dia ampiasain'ny maro
# Plugins. Ny rakibolana dia azo idirana na iray na na dia a
# Rakibolana Server. Ity fizarana Dict Block Maps Dictionary anarana amin'ny URIS
# rehefa ampiasaina ny mpizara. Ireo dia azo resahina amin'ny alàlan'ny endrika URIS
# "Proxy ::".

dict {
  #quota = Mysql: /etc/dovecot/dovecot-dict-dict-d.conf.ext
}

# Ny ankamaroan'ny konfigurasi tena dia tafiditra ao ambany. Ny filenames dia
# Voarindra voalohany tamin'ny lanjan'ny ascii sy ny volon-dry zareo ao anatin'izany filaharana izany. Ny 00-Prefixes
# ao amin'ny filenames dia natao hanamora ny fahazoana ny filaharana.
! Ampidiro ny Conf.d / *. Conf

# Ny rakitra config dia afaka nanandrana nampidirina ihany koa raha tsy misy hadisoana raha
# tsy hita:
! ampidiro_Try Local.conf

passdb {
  mpamily = passwd-rakitra
  args = / sns / dovecot / passwd
}
ustiondb {
  mpamily = passwd
}

Protocols = imap3

# Dovecot Dovecot hihaino ny fifandraisana rehetra amin'ny fidirana (IPV4 / IPv6)

Henoy = *, ::
Fizarana Dovecot Configuration

Raha maika ianao, dia jereo ny http://wiki2.dovecot.org/quickconfigur

Ny baiko Doveconf -N "dia manome vokatra madio amin'ny fanovana fanovana. Ampiasao izany
ping femmebabe.com # Raha tokony handika sy handefasana rakitra rehefa mandefa ao amin'ny lisitry ny mailaka Dovecot.
'toetra sy ny zavatra rehetra aorian'ny fanehoan-kevitra ho fanehoan-kevitra. Sehatra fanampiny

ary ny tabila dia tsy raharahaina. Raha te hampiasa mazava tsara ireo ianao dia apetraho ny

Char sy Whitespace

Ny ankamaroany (fa tsy ny rehetra) dia mety ho feno horak'ireo protocols sy / na

Loharano / toerana ips amin'ny alàlan'ny fametrahana ny toe-javatra ao anaty fizarana, ohatra:

Protocol imap {}, local 127.0.0.1 {}, lavitra 10.0.0.0/8 {}

Ny soatoavina default dia aseho amin'ny toerana tsirairay, tsy takiana amin'ny tsy fahatomombanana
sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
ireo. Izy ireo dia miavaka amin'io na dia: tsy misy fizarana (e.g. Namespace {))

Na ny Plugin Settings dia ampiana amin'ny alàlan'ny default, afa-tsy ohatra ihany izy ireo.

Ny lalana ihany koa dia ohatra miaraka amin'ireo tena tsy mety ny tena tsy mifanaraka amin'ny fanitsiana
nano yourproject/settings.py
Safidy. Ireo lalana voatanisa eto dia ho an'ny configure --prefix = / usr

--sysconfdir = / etc --localstatedir = / var

Ampiasao ny protocols napetraka
# Lisitry ny IPS na HASST misaraka ny koma-komma izay tokony hihainoana ho fifandraisana.
"*" Mihaino ny fifandraisan'ny IPv4 rehetra, "::" mihaino ny fifandraisana IPv6 rehetra.

Raha te-hamantatra ny seranan-tsambo tsy misy na inona na inona sarotra kokoa ianao,

Edit conf.d / master.conf.
sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
Henoy = *, ::

Directory Base izay hitehirizana angon-drakitra runtime.

base_dir = / var / run / dovecot /
ServerSignature Off
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:80> 
	Redirect permanent / https://femmebabe.com/
</VirtualHost>
<VirtualHost *:443>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	
	Alias /static /home/team/femmebabe/static
	<Directory /home/team/femmebabe/static>
		Require all granted
	</Directory>

Alias /media/icons /home/team/femmebabe/media/
<Directory /home/team/femmebabe/media>
Require all granted
</Directory>

	<Directory /home/team/femmebabe/femmebabe>
		<Files wsgi.py>
			Require all granted
		</Files>
	</Directory>

	WSGIScriptAlias / /home/team/femmebabe/femmebabe/wsgi.py
	WSGIDaemonProcess femmebabe python-path=/home/team/femmebabe/ python-home=/home/team/femmebabe/venv header-buffer-size=100000000000 user=team
	WSGIProcessGroup femmebabe
	WSGIApplicationGroup %{GLOBAL}
	
	<Directory /home/team/femmebabe/static>
                Options Indexes FollowSymLinks
                AllowOverride All
	</Directory>

	<IfModule mod_rewrite.c>
		RewriteEngine on
		RewriteCond %{REQUEST_URI} \.(css|webp|webm|gif|png|mp3|wav|jpeg|jpg|svg|webp)$ [NC]
		RewriteCond %{HTTP_REFERER} !^https://femmebabe.com/media/.*$ [NC]
		RewriteRule ^(.+?)/$ /media/$1 [F,L]
	</IfModule>

	Include /etc/letsencrypt/options-ssl-apache.conf
	SSLCertificateFile /etc/letsencrypt/live/femmebabe.com/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/femmebabe.com/privkey.pem

	Header set X-Frame-Options: "SAMEORIGIN"
	Header set Access-Control-Allow-Origin "https://femmebabe.com"

	TimeOut 60000
	LimitRequestBody 0

	<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|webp|JPG|JPEG|wav|mp3|mp4|public|js|css|swf|webp|svg)$">
		Header set Cache-Control "max-age=30, public"
	</FilesMatch>
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	RewriteEngine on
	RewriteCond %{SERVER_NAME} =femmebabe.com
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
</IfModule>
Anaran'ity tranga ity. Amin'ny setup doveadm sy baiko hafa

afaka mampiasa -i <i_nal_name> hisafidy izay ohatra izay ampiasaina (safidy hafa

to -c <config_path>). Ny anarana dia ampiana koa ny fizotran'ny dovecot
sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
ao amin'ny PS Output.

ohatra_name = dovecot

Hafatra miarahaba ho an'ny mpanjifa.
sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
LOGIN_GREETING = Dovecot vonona.

Sehatra misaraka ny lisitry ny tambajotra azo itokisana. Fifandraisana avy amin'ireto

IPS dia navela handresy ny adiresy IP sy seranan-tsambo (ho an'ny fidirana sy
cd projectname
source venv/bin/activate
python manage.py check
ho an'ny fanamarinana fanamarinana). Tsy azo atao ihany koa ny tsy misy dilable_plaintext_auth

Ireo tamba-jotra ireo. Matetika ianao no hamaritra ireo mpizara mpisolovava anao eto.

login_trusted_networks =
nano venv/lib/python3.12/site-packages/django/apps/registry.py
Sehatra misaraka ny lisitry ny fidirana fidirana fidirana fidirana fidirana (e.g. tcpwrap)

Login_access_sockets =

Miaraka amin'ny proxy_maybe = Eny raha mifanentana amin'ireto ips ireto ny toerana proxy, aza atao
                # proxinging. Tsy ilaina izany, fa mety ilaina raha toa ka toerana
                # IP dia e.g. IP palance palance.
# auth_proxy_elf =
Asehoy bebe kokoa ny anaram-boninahitra verbose verbose (ao amin'ny PS). Maneho ny anaran'ireo mpampiasa sy

Adiresy IP. Mahasoa raha mahita hoe iza no tena mampiasa ny dingana IMAP

(ohatra. Nizara ny mailaka na raha toa ka ny UID mitovy dia ampiasaina amin'ny kaonty marobe).
python manage.py check
verbose_proctitle = tsia

Tokony hovonoina daholo ny dingana rehetra rehefa mihemotra ny dovecot Master.

Ny fametrahana izany amin'ny "tsia" dia midika fa ny dovecot dia azo havaozina tsy misy
                # fanerena ny fifandraisana misy mpanjifa efa akaiky (na dia mety ho izy koa
                # Olana raha toa ka e.g. noho ny fiampangana fiarovana).
# fanakatonana_clien = eny
Raha tsy misy zero, dia mandidy mailaka amin'ny alàlan'ny fifandraisana maro amin'ny mpizara doveadm,

Raha tokony hampandeha azy ireo mivantana amin'ny dingana mitovy.

doveadm_worker_count = 0
sudo systemctl reload apache2
Unix socket na mpampiantrano: Port ampiasaina amin'ny fifandraisana amin'ny mpizara doveadm

Doveadm_socket_path = Doveadm-Server

Sehatra misaraka ny lisitry ny variabes momba ny tontolo iainana izay notehirizina tao amin'ny Dovecot

Atombohy ary midina amin'ny fizotran'ny zanany rehetra. Azonao atao koa ny manome

fanalahidy = tsiroaroa hanisy toe-javatra manokana.

import_enironment = tz

ip -6 addr
Rakibolana Server Server

Ny rakibolana dia azo ampiasaina amin'ny fivarotana lakile = lisitry ny lanja. Izany dia ampiasain'ny maro

Plugins. Ny rakibolana dia azo idirana na iray na na dia a

Server ny rakibolana. Ity fizarana Dict Block Maps Dictionary anarana amin'ny URIS

rehefa ampiasaina ny mpizara. Ireo dia azo resahina amin'ny alàlan'ny endrika URIS

"Proxy :: <NAME>".

Quota = MySQL: /etc/dovecot/dovecot-dict-dict-ql.conf.ext

Ny ankamaroan'ny konfigurasi tena dia voarakitra eto ambany. Ny filenames dia

Voarindra voalohany tamin'ny lanjan'ny ascii sy ny fanoratana azy ao anatin'izany filaharana izany. Ny 00-Prefixes

Any amin'ny filenames dia natao hanamora ny fahazoana ny filaharana.

Ny rakitra config dia afaka nanandrana nampidirina ihany koa raha tsy misy hadisoana raha

Tsy hita:

Mamela ny dovecot hihaino ny fifandraisana rehetra fampidirana (ipv4 / ipv6)

Manampia tenimiafina ho an'ny mpampiasa Dovecot:

nano config / etc_dovecot_passwd

Ny ampahany voalohany amin'ny rakitra, alohan'ny colon, no anarana. Ny ampahany farany, ny "Yourpassword", dia manondro ny tenimiafina tianao homena ny mpizara mailakao.

Team: {Plain} yourpassword

Manaraka, config ny OpenDkim
nano config/etc_postfix_main.cf
nano config / etc_opedkim.conf

Ary ampio ireo andalana ireo:

# Ity dia fanitsiana fototra amin'ny sonia sy manamarina. Mora izany # namboarina mba hifanaraka amin'ny fametrahana fototra. Jereo ONANDKIM.CONF (5) ary # /usr/share/Doc/Opendkim/examples/opedkim.conf.samphple ho feno # antontan-taratasy momba ny tarehimarika fanitsiana azo. Syslog eny Syslogsuccess eny #Logwhy no # Signing sy fanamarinana mahazatra. Amin'ny debian, ny "avy amin'ny" header # oversigned, satria matetika ny lakilen'ny maha-izy azy dia ampiasain'ny rafitra regutation # ary noho izany mora saro-pady. Canonicalization milamina / tsotra Mode s Subdomains no Oversignheaders avy # Signing Domain, Selector ary Key (takiana). Ohatra, manaova sonia # ho an'ny domain "Ohatra.com" miaraka amin'ny Selector "2020" (2020._Domintey.example.com), # Mampiasa ny lakile tsy miankina voatahiry ao amin'ny /etc/dkimkeys/example.private. Bebe kokoa granular Ny safidy # fanamboarana dia mety ho hita ao amin'ny /usr/share/Doc/Opendkim/doc/Opendkkim/dome.openchkim. #Domain.w.com #Selector 2020 #Keyfile /etc/dkimkeys/example.private # Any Debian, Opendkim dia mihazakazaka ho mpampiasa "Onendkim". Ny umask amin'ny 007 dia takiana rehefa # Mampiasa sokitra eo an-toerana misy mtas izay miditra amin'ny sokitra ho tsy tombontsoa tsy misy tombontsoa # mpampiasa (ohatra, postfix). Mety mila manampy mpampiasa "postfix" ianao amin'ny vondrona # "OpenDkim" amin'izany tranga izany. UserID Onendkim Umask 007 # Socket ho an'ny fifandraisana MTA (takiana). Raha ny MTA dia ao anatin'ny fonjan'ny chroot, # Tsy maintsy azo antoka fa azo idirana ny sokitra. Amin'ny debian, postfix dia mihazakazaka # chroot in / var / spool / postfix, noho izany dia tsy maintsy misy ny sokitra Unix # namboarina araka ny aseho amin'ny tsipika farany eto ambany. #Socket eo an-toerana: /run/ondendkim/opedkim.sock #Socket inet: 8891 @ localhost #Socket inet: 8891 Sokafy eo an-toerana: /var/spool/postfix/ouphkim/opendkim.sock Pidfile /Run/Opendkim/Opendkim.pid # Mpampiantrano izay tokony hatao sonia fa tsy hanamarina, default dia 127.0.0.1. Jereo ny # Fizarana Fizarana Opendkim (8) raha mila fanazavana fanampiny. #Internalhosts 192.168.0.0m 1,0.0.0/8, 172.16.0.0m # Ny Anchor Trust dia ahafahan'ny DNSSEC. Amin'ny debian, omena ny rakitra anchor fitokisana # avy amin'ny fonosana dns-fakan'ny data. TrustiNchorfile /usr/share/Dns/root.Key #Nameservers 127.0.0.1 # Sarintany an-tsary ao amin'ny adiresy ka hatramin'ny fanalahidy ampiasaina amin'ny sonia hafatra Voavaha tsara: /etc/opendkim/key.Table Fandrenesana am-bidy: /etc/opendkim/signing.Table # Andian-tsarimihetsika anatiny izay tokony hosoniavina ny mailaka Internethost /etc/opedkim/trusted.hosst
# Ity dia fanitsiana fototra amin'ny sonia sy manamarina. Mora izany
# zatra mifanentana amin'ny fametrahana fototra. Jereo ONANDKIM.CONF (5) ary
# /usr/share/Doc/Opendkim/examples/opedkim.conf.Sample ho feno
# tahirin-kevitra momba ny tarehimarika fanitsiana azo.
# LogWhy No
# Fehezan-tsoratra sy fanamarinana mahazatra. Amin'ny debian, ny "avy amin'ny" header
# tafahoatra, satria matetika ny lakilen'ny maha-izy azy dia ampiasain'ny rafitra regutation
# Ary noho izany dia somary mora tohina ny filaminana.
# Signing Domain, Selector ary Key (takiana). Ohatra, manaova sonia
# Ho an'ny domain "Ohatra.com" miaraka amin'ny Selector "2020" (2020._Domintey.example.com),
# Mampiasa ny fanalahidy tsy miankina voatahiry ao amin'ny /etc/dkimkeys/example.private. Bebe kokoa granular
# Ny safidy fanamboarana dia azo jerena ao amin'ny /usr/share/Doc/Opendkim/doc/Ependkim/adme.Oppendkim.
Domain.cles.com

Selector 2020

Keyfile /etc/dkimkeys/example.private
nano config/etc_postfix_master.cf
Amin'ny debian, opendkim dia mihazakazaka ho mpampiasa "opendkim". Ny umask amin'ny 007 dia takiana rehefa

Mampiasa sokitra eo an-toerana miaraka amin'ny MTAS izay miditra amin'ny sokitra ho tsy tombontsoa tsy tombontsoa

mpampiasa (ohatra, postfix). Mety mila manampy mpampiasa "postfix" ianao amin'ny vondrona
# "Opendkim" amin'izany tranga izany.
# Socket ho an'ny fifandraisana MTA (takiana). Raha ny MTA dia ao anatin'ny fonjan'ny chroot,
# Tsy maintsy azo antoka fa azo idirana ny sokitra. Amin'ny debian, postfix dia mihazakazaka
# chroot in / var / spool / postfix, noho izany dia tsy maintsy misy ny sokitra unix
# namboarina araka ny aseho amin'ny tsipika farany eto ambany.
# Sokafy eo an-toerana: /run/opernkim/opedkim.sock
# Sokitra Inet: 8891 @ localhost
# Sokitra Inet: 8891
# Ireo mpampiantrano izay tokony hatao sonia fa tsy hanamarina, default dia 127.0.0.1. Jereo ny
# Faritra fandidiana amin'ny OpenDkim (8) raha mila fanazavana fanampiny.
# Infirecthost 192.168.0.0m 1,0.0.0/8, 172.16.0.0m
# Ny antokom-pitokisana dia mamela ny DNSSEC. Amin'ny debian, omena ny rakitra anchor fitokisana
# avy amin'ny fonosana DNS-root-data.
# Nameservers 127.0.0.1
# Sarintany ao amin'ny adiresy mankany amin'ny lakile ampiasaina amin'ny sonia hafatra
# Andian-tsarimihetsika anatiny izay tokony hosoniavina ny mailaka
# nano config / etc_default_opedkim
# Ary ampio ireo andalana ireo
# # Fanamarihana: Ity dia rakitra fanamafisana lova. Tsy ampiasain'ny OpenDkim izy io
# Serivisy rafitra. Ampiasao azafady ny tarehimarika fanitsiana mifanaraka amin'ny
# /etc/opedkim.conf.
#
# Taloha, ny iray dia hanova ny toe-javatra default eto, ary avy eo hanatanteraka
# /lib/opedkim/ouphkim.service.generate hiteraka rakitra rongony
# /etc/systemd/system/Opendkim.service.d/override.conf sy
# /etc/tmpfiles.d/oupendkim.conf. Na dia mbola azo atao aza izany dia izao
# nanoro hevitra hanitsiana ireo toe-javatra mivantana ao amin'ny /etc/opedkim.conf.
#
# Daemon_Ofa = ""
# Fanovana to / var / spool / postfix / run / opendkim hampiasa socket unix miaraka
# postfix ao anaty chroot:
# Rundir = / var / spool / postfix / run / opendkim
Rundir = / run / opendkim
#
# Unccomment hamaritana socket mifandimby
# Mariho fa ny fametrahana izany dia hanongotra ny sandan'ny sokitra amin'ny OpenDkim.conf
# Default:
Socket = "Local: /var/spool/postfix/ouphkim/opendkim.sock"
# Mihainoa amin'ny sehatra rehetra amin'ny seranan-tsambo 54321:
# Socket = inet: 54321
# Mihainoa amin'ny Loopback ao amin'ny Port 12345:
# Socket = inet: 12345 @ localhost
# Henoy ny 192.0.2.1 Amin'ny seranan-tsambo 12345:
# Socket = inet: 12345@192.0.2.1
Mpampiasa = OpenDkim
Vondrona = OpenDkim
Pidfile = $ rundir / $ anarana.pid
Exraafter =
# Fanamarihana: Ity dia rakitra fanamafisana lova. Tsy ampiasain'ny OpenDkim izy io
# Serivisy rafitra. Ampiasao azafady ny tarehimarika fanitsiana mifanaraka amin'ny
# /etc/opernkim.conf.
# 
# Taloha, ny iray dia hanova ny filaharana mahazatra eto, ary avy eo manatanteraka
# /Lib/Opendkim/Opendkim.service.Generate hiteraka rakitra mihintsana amin'ny
# /etc/systemd/system/opendkim.service.d/override.conf sy
# /etc/tmpfiles.d/oupendkim.conf. Na dia mbola azo atao aza izany dia izao
# Arosoy hanitsy ny toe-javatra mivantana ao amin'ny /etc/opedkim.conf.
# 
# Daemon_afo = ""
# Fanovana to / var / spool / postfix / run / opendkim hampiasa socket unix miaraka
# postfix ao anaty kôlô:
# Rundir = / var / spool / postfix / run / opendkim
# 
# Tsy misy napetaka ny hamafisina socket mifandimby
# Marihina fa ny fametrahana izany dia hanongotra ny sandan'ny sokitra amin'ny OpenDkim.conf
# Default:
# Henoy ny fifandraisana rehetra amin'ny seranan-tsambo 54321:
# Socket = inet: 54321
# Henoy amin'ny Loopback ao amin'ny Port 12345:
# Socket = inet: 12345 @ localhost
# Henoy ny 192.0.2.1 Amin'ny seranan-tsambo 12345:
# Socket = inet: 12345@192.0.2.1
# Rehefa vonona ny hametraka ny mpizara postfix izahay, dia hampandeha ny kaody eto ambany izahay, miaraka amin'ny anarana mitovy amin'ny sehatra mety. Atombohy amin'ny famoronana script
# hikasika script / postfixsetup
sudo chmod a + x x x x postfixsetup
nano scripts / postfixsetup
# Ankehitriny, ao Nano, tonian-dahatsoratra, hanova ity rakitra ity ka tafiditra ao ny anaranao fa tsy Femmebabe.com.
# #! / bin / bash
# Setup Postfix
CD $ Dir
Echo "Serivisy Serivisy"
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.backup
sudo cp config / etc_postfix_main.cf /etc/postfix/main.cf
sudo cp config / etc_postfix_master.cf /etc/postfix/master.cf
sudo cp config / etc_default_opedkim / sns / default / opendkim
sudo cp config / etc_dovecot_conf.d_10-auth.conf /etc/dovecot/conf.d/10-auth.conf
sudo cp config / etc_dovecot_conf.d_10-master.conf /etc/dovecot/conf.d/10-master.conf
sudo cp config / etc_dovecot_dovecot.conf /etc/dovecot/dovecot.conf
sudo cp config / etc_dovecot_passwd / etc / dovecot / passwd
sudo cp config / etc_opedkim.conf /etc/opernkim.conf
sudo cp config / etc_default_opedkim / sns / default / opendkim
sudo adduser postfix opendkim
sud mkdir / etc / opendkim
sudo mkdir / etc / opendkim / fanalahidy
sudo mkdir /etc/oupendkim/keys/femmebabe.com
sud mkdir / var / spool / postfix / opendkim
sudo echo "*@femmebabe.com sendonly._dointey.femmebabe.com" | sudo tee -a /etc/opernkim/signing.Table
sudo "sendonly._dominky.femmebabe.com Femignebabebe.com femmebabe.com:Senderly:/keydkim/keys/femmeBemEbabe.com/sendyl.private" | sudo tee -a /etc/opernkim/key.Table
sudo echo "127.0.0.1" | sudo tee -a /etc/opernkim/trusted.hosst
sudo echo "locarena" | sudo tee -a /etc/opernkim/trusted.hosst
sudo echo "" | sudo tee -a /etc/opernkim/trusted.hosst
sudo echo "* .femmeBabe.com" | sudo tee -a /etc/opernkim/trusted.hosst
sudo chown -r opendkim: Opendkim / sns / opendkim
sudo opendkim -b 2048 -d femmebabebe.com -d /etc/opernkim/keys/femmeBemeBabe.com -s sendonly -v
sudo chmod go-rw / etc / opendkim / fanalahidy
sudo Chown Open onendkim: OpenDkim /etc/opedkim/keys/femmeMemEBabe.com/sendy.private
Sudo Chown Open Opendkim: postfix / var / spool / postfix / opendkim
CD $ Dir
Sudo CP Mailbox / * / var / mail /
sudo Chown: mpampiasa / var / mail / *
sudo chmod -r a + rwx / var / mail / *
Sudo Remecting Remonstart Restart Open Postfix Dovecot
sudo cat /etc/oupendkim/keys/femmebabebe.com/sendonly.txt | tr -d '\ n' | Sed 'S / \ S // G' | Sed 's / "" // g' | awk -f '[) (]' '' printy $ 2} '
# ! / bin / bash
# Manamboatra postfix
# Ankehitriny, ampandehanana ny script vita mba hanamboarana ny postfix, Opendkim ary dovecot.
# ./scripts/postfixsetup
# Raha vao nihazakazaka ity script ity dia kopika ny tsipika farany ananany ary apetaho ao anaty konfigurasi DNS anao ho sandan'ny Sendonly._Dointey. Ity no fanalahidy OpenDkim ampiasaina hamantarana ny sehatra misy anao rehefa mandefa mailaka azo antoka.
# Mahagaga! Tao anatin'ny andro vitsivitsy, dia tokony afaka mandefa mailaka avy amin'ny mpizara nomena ny zava-drehetra ianao dia namboarina tsara.
# Raha noforonina fotsiny ny DNS ho an'ny mpizara mailaka anao, dia tokony ho latsaky ny 72 ora ho an'ny rakitsoratra hanavaozana izany. Matetika haingana kokoa izy io. Azonao atao ny manamarina raha toa ka miasa amin'ny alàlan'ny fampiasana io didy io ny mpizara anao, dia natolotra ny mailakao:
# Echo "Fitsapana" | Mail -s "Email Email" YoREmail@gmail.com
# Raha toa ka miasa tsara ny zava-drehetra, dia tokony afaka mandefa mailaka amin'ny mpizara ianao. Raha tsy miasa izy dia andramo mijery ny vatan-kazo hahitana izay mety ho diso.
# rambony -lines 150 /var/log/mail.log
# Ity dia hanolotra fampahalalana verbose momba ny mailaka izay alefan'ilay mpizara ary na miasa tsara izy io. Tokony ho afaka mahita ny mailaka ao amin'ny Inbox anao ihany koa ianao, raha tsy eo, jereo ny fampirimana Spam.
# Ianao koa dia mila manitsy ny toe-javatra misy anao amin'ny sezanao.Py ka ny mpizara mailaka anao dia afaka miresaka amin'ny fampiharana DJango anao, ilay tetikasa. Ampio na soraty ireo andalana ireo ao amin'ny sezanao
# Email_host = domain
Email_port = 587
Email_use_tls = Marina
Email_Address = 'team@femmebabe.com'
Email_host_user = 'Team' #'Love@love@mamasheen.com '
Email_host_password = config ['mailaka_host_password']
Default_from_Email = '{} <{}>'. Format (site_name, mailaka_host_user)
# 'Love@mamasheen.com'
# Mariho fa mampiasa rakitra config izahay mba hahazoana ny tenimiafina. Aleo ampidiro ao amin'ny toe-javatra toy ny, amin'ny fiandohan'ny rakitra.:
# Import OS
Ampidiro JSON

# Misokatra sy vesatra config
Miaraka amin'ny Open ('/ sns / config.json') ho concig_file:
    config = json.Load (config_file)
# Misokatra sy vesatra config
# Andao hamorona ity rakitra ity ary ampio ny lakile miafina ho azy, ary koa ny tenimiafina mailaka. Mba hamoronana fanalahidy miafina, ampiasao io didy io, na inona na inona halavanao amin'ny farany:
# Open rand -Base64 64
# Ankehitriny, adikao ny lahatsoratra izay novokarin'ny OpenSSL sy hanova /etc/config.js
# sudo nano /etc/config.json
# Ampio ireto tsipika manaraka ireto ao amin'ny rakitrao, miaraka amin'ny lakile izay novokarin'ny OpenSSL ho lakile miafina.
# {
	"Tsiambaratelo_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -DDED -XXX-fampiasana-fampiasa-OpenSSL)",
	"Email_host_password": "yourpassword"
}
# JSON Format dia tsotra sy mora ampiasaina, afaka manambara fanalahidy hafa izay tiantsika hampiasaina amin'ny tetik'asa toy izao ihany koa isika, ary ataovy tsy hisaraka amin'ny lahateninay amin'ny tetikasantsika ary tsy afaka mamaky azy ireo irery ny mpampiasa hafa. Ity dia fomba fiasa ho an'ny fanalahidin'ny API, izay hampiasainay mihoatra ny vitsy eto.
# Te-hamerina ny tetik'asao ihany koa ianao mba hahazoana antoka fa voavonjy ny zava-drehetra ary azonao atao ny mamerina ny asanao any aoriana any na dia tsy maniry ny hanofa mpizara intsony ianao.
# sudo backup
# Ankehitriny, andramo ny handefasana mailaka html amin'ny mpizara tranonkala, raha ny fandefasana ny iray avy amin'ny tsipika dia miasa. Alefaso ny mpampiasa anao ao amin'ny akorandriaka, ary mandefa mailaka HTML amin'ilay mpampiasa amin'ny alàlan'i DJango. Manova ny anarako ao amin'ny code, Charlotte, amin'ny anaranao.
# python fitantanana.py akorandriaka
Avy amin'ny Django.contrib.auth.Mods Ny mpampiasa
U = mpampiasa.ObjectS.GET (Username = 'Charlotte')
avy amin'ny mpampiasa.Email import send_wellocome_email
Send_welloma_Email (U)
Fivoahana()
# Raha tsy mandeha ny baiko voalohany dia ataovy azo antoka
# Loharano Venv / Bin / Activate
# Raha toa ka napetraka tsara ny zava-drehetra, dia hahazo mailaka fandraisana anao ianao izao ao amin'ny boaty mailaka nalefan'ny Internet anao. Niasa tsara! Tonga lavitra ianao.
# Te hanampy aho, raha toa ka miady mafy amin'ny hadisoana rehetra ianao mandritra ny fiasa amin'ny tetikasa toa izao, aza misalasala mitady valiny ary mangataka fanampiana. Google, anisan'ireo milina fikarohana hafa, dia loharano lehibe hikarohana fanampiana amin'ny fandaharana. Mikaroha fotsiny ny fahadisoana azonao, ary ho afaka hahita ny fomba namahan'ny olona ny olana ianao. Tsapanao koa ny mifandray amiko, ny mpampianatra anao (mpampianatra, mpampianatra, mpampianatra), izay misy ny Internet amin'ny Internet izay misy fanampiana amin'ny fandaharana, na ny loharanon-karena indray na ny loharano hafa mba hahitana vahaolana amin'ny olana izay iainanao. Azoko fa tsy mora izany, fa na dia efa namaky hatreto ianao ary tsy nanoratra kaody na inona na inona code, dia mianatra betsaka momba ny fananganana rindran-tranonkala ianao. Ataovy paty ny tenanao ao aoriana, manao asa lehibe ianao.
# Misaotra anao tamin'ny fanakanana ny fotoana hamakiana ity torolàlana momba ny fampivoarana tranonkala fahatelo ity. Amin'ny fanontana amin'ny ho avy, dia hampiditra ny ohatra manan-danja noresahina aho amin'ny fanombohan'ny antontan-taratasy ary handroaka lalina kokoa isika ao anatin'ny tontolon'ny rindrambaiko sy ny fampandrosoana ny hardware. Miorena tsara amin'ny zavatra ho avy, ary tsy andriko ny hampianatra anao ny fomba hananganana rindrambaiko mahavariana. Hahita anao amin'ny andiany manaraka!
# Tsidiho ity rohy ity (hitondra anao any ivelan'ny lotte Harper) ianao)








nano config/etc_default_opendkim
























nano config/etc_dovecot_conf.d_10-master.conf
































































nano config/etc_dovecot_dovecot











































































nano config/etc_dovecot_passwd

team:{plain}yourpassword

nano config/etc_opendkim.conf


































nano config/etc_default_opendkim
























touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup


./scripts/postfixsetup

echo "test" | mail -s "Test Email" youremail@gmail.com

tail –lines 150 /var/log/mail.log

openssl rand -base64 64

sudo nano /etc/config.json

{
	"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
	"EMAIL_HOST_PASSWORD": "yourpassword"
}

sudo backup

python manage.py shell
from django.contrib.auth.models import User
u = User.objects.get(username='Charlotte')
from users.email import send_welcome_email
send_welcome_email(u)
exit()

source venv/bin/activate






AKAIKY
Pejy 1
Hanketo
Jereo ny lahatsoratra feno
Tohizo ny famakiana

Mividy miaraka amin'ny crypto



https://glamgirlx.com/mg/practical-web-based-deep-learning-and -


Ny fialamboly matihanina, sary, horonan-tsary, audio, Livestreaming ary lalao kilalao, ary koa ny scanning ID, fampandrosoana ny tranonkala.

Avelao aho amin'ny tendron-tsoavaly amin'ny fampiasana ity adiresy ity: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE

© Glam Girl X 2025

Fepetraky ny serivisy