مىسالنى ئاساس قىلغان چوڭقۇر ئۆگىنىش ۋە بىخەتەرلىك

By Daisy
مىسالنى ئاساس قىلغان چوڭقۇر ئۆگىنىش ۋە بىخەتەرلىك ئۈچىنچى نەشرى شارلوت خارپېر 7-ئاينىڭ 3-كۈنى, 2024 2025-يىلى 6-ئاينىڭ 3-كۈنى يېڭىلاندى / ئۆزگەرتىلگەن مۇقەددىمە: تورنىڭ يۇمشاق دېتال ياساشتا بىخەتەرلىك ئابىللىقتىكىلىكىنىڭ بىخەتەرلىك كۆز قاراشلىرى قۇرۇلۇش ئوبزوتى ئۇنىۋېرسال, مۇقىم بولۇش ۋە ئەمەلىي تەلەپلەرگە پايدىلىق بولسا ھەر قانداق تور ئاچقۇچىلارنىڭ بىر قىسمى. Dom (ھۆججەت ئوبيېكتى بەلگىسى), ئۇ HTMl HTMl HTML, CS ۋە Css نى يولغا قويۇش, ئىشلىتىش ۋە ئىقتىدارنى يولغا قويۇش, ئۇششاق-چۈششەك ئىشلار ۋە خاراكتېرنى ئاسانلاشتۇرۇش ۋە ئىشلىتىش ئەركىنلىكى ۋەئىقى قۇرۇش ئەركىنلىكى ۋە ھوقۇقىنى تولۇقلاشتۇرىدۇ ۋە ئىشلىتىشنى تەمىنلەيدۇ ۋاقىتنى ئۆلتۈرۈڭ ياكى توردا ئىشلەنگەن ياكى تورغا چىقىڭ, ئادەتتە سېزىمچان ئېكران ئۈسكۈنىسىگە. كۆپىنچە كىشىلەر تور بېكەت قۇرماقچى بولغاندا قەيەرگە باشلاشنى بىلگەن تەقدىردىمۇ, ئۇلار باشقىلارنىڭ تور بېتىنى پۇل تۆلەشكە ۋە ئىشلىتىشكە ئېھتىياجلىق بولغاندا, ئىشلىتىش ئىقتىدارىنى ئىشلىتىشتىكى چەكلىمىلىرىنى قۇرتالىدىكەن. جانلىقلىق. ئەگەر بۇ كىتابنى ئوقۇشقا بىر قانچە مىنۇتتا ئوقۇپ, مەن سىزگە ئۆگىنىڭ, ھەتتا مەن بىلەن شەخسى ئايرىلىش ۋە ئۆزىڭىزنىڭ خېتىڭىزنى يېزىپ, بىر ئاز ئۇچۇر ئۆز ئىچىگە ئالىدۇ, بۇ كىتابنى ئۆزىڭىز خالىغان تور بېكەت قاماپ, ھەممىسى سىزگە ۋە كۆڭۈل ئېچىشنى ۋە سىزنىڭ ئارزۇيىڭىزنى بەلگىلەشنى خالايسىز. مەن ھەققىدە: مەن يۇمشاق دېتال ئاچقۇچى C / C ++ دىكى C / C ++ دىكى كەڭ دائىرىدە ئاچقۇچى بولۇپ, Java, Psthon, HuS ۋە JavaScripcript. مەن كىشىلەر تور بېكەتلەرنى زىيارەت قىلىدىغان, زىيارەت قىلماقچى, زىيارەت قىلىش, قوبۇل قىلىش ۋە ئەڭ مۇھىمى, ھەتتا تېز باھانە سېلىپ خوتارېيە. ئەگەر سىز بىر تور توربېكەتنى ۋە ئىقتىدارغا قانداق قارايسىز, سىز مېنى قوللاشنى خالايدىغانلىقىڭىز ئۈچۈن, مەن سىز بىلەن كۆرۈشسەم, ئۆزۈمنىڭ ئېھتىياجىم بىلەن كۆرۈشەلەيمەن, ھەمدە سىز تور بېكەت باشقۇرۇشنىڭ چىقىمىنىلا كۆرەلەيمەن, بۇ سىز زىيارەت قىلالايسىز. سىزنى ھازىر سېتىشقا ئۇرۇنۇشنىڭ ئورنىغا, مەن سىزنىڭ ئاللىبۇرۇن مەۋجۇت ئۇچۇرلىرى بىلەن ئۆزىڭىز (تور (تور بەت) بەرپا قىلىپ, مۇستەقىل يۇمشاق دېتال ئاچقۇچى, مەن ئارزۇ قىلىدىغان نەرسىنى يېزىڭ, سىزگە خالىغان ساھەدە مۇۋەپپەقىيەت قازىنىشنى ئۆگىتىڭ. ئېنىق بولاي, مەن سىزگە بىرەسمىي بولىدۇ. سىز مەكتەپكە بېرىپ بۇ ئىشلارنى رەسمىي مائارىپ بىلەن ئوقۇيالايسىز, ھەتتا مەكتەپتىكى بۇ كىتابنى ئوقۇڭ, سىزنىڭ بۇ كىتابنى ئوقۇڭ ۋە مائارىپىڭىزدىن ناھايىتى ياخشى ئىش قىلىڭ, ئەمما سىزنىڭ ئوقۇشتىن ئېسىل ئىشتىن چۈشمەيمەن, ئەمما سىزنىڭ ئوقۇشتىن ئېسىل ئىشتىن چۈشمەيمەن, ئەمما سىزنىڭ ئوقۇشتىن رەسمىي ئورۇندايمەن. مەن سىزنىڭ پروفېسسورىڭىز ئەمەس, مېنى ئۆزىڭىزنىڭ شەخسىي مۇۋەپپەقىيىتى بويىچە يېتەكلىمەكچى بولغان دوستىڭىزدەك ئويلاپ باقسىڭىز بولىدۇ. مەن سىزنى ئۇتۇقلۇق ئەمەس, ئۇنى ۋاقتىڭىز بىلەن سېتىۋېلىشىڭىز كېرەك. كودنى ئۆگىنىش تىك ئۆگىنىش ئەگرى سىزىقى بار, ھەتتا ئاسان ئەمەس, ھەتتا بولۇشى كېرەك. سىز خالىغانچە تىرىشىشىڭىز ۋە داۋاملىق سىناپ بېقىشىڭىز مۇمكىن, سىز ئۆزىڭىز سىناپ بېقىش ئۈچۈن, سىز ھېس قىلسىڭىزمۇ قايتا سىناپ باقسىڭىزمۇ قايتا سىناپ بېقىڭ. بۇ كودنىڭ خاراكتېرىدە. كودى پروگرامما تۈزگەن لايىھەلەنگەن تۈزگۈچى تەرىپىدىن باشقۇرۇلىدۇ, بۇلار سىزگە خەتنى قانداق كۆپەيتىش ئۈچۈن ئۆگىتىدۇ, ھەتتا خاتالىقنى ئىزدەش ماتورىغا كۆپەيتىپ, باشقىلارنىڭ ئۈلگىسىنى ئوقۇدى. مەن چوقۇم دەيمەن, ئىنتايىن باي, ئەقىللىق, مۇۋەپپەقىيەت قازىنىش ۋە بىز بىر ئەپ ياساشنىڭ ھاجىتى يوق ياكى تەشكىللىنىشىڭىزنىڭ ھاجىتى يوق. كومپيۇتېر سىز ئۈچۈن بۇ تەشكىلاتقا كۆڭۈل بۆلىدۇ. سىز پەقەت سىناق ۋە خاتالىق ئارقىلىق چىڭ تۇرۇش كېرەك, مۇھىم بولۇپ تۇرۇشىڭىز ھەمدە قىلغان ئىشلىرىدا جاناھەت قىلىڭ, قىلغان ئىشلىرىڭلارنىڭ تولۇقلىقىدا ناھايىتى توغرا ئۇچرايسىز. مەن كىم: مەن ئاخىرقى بۆلەكنىڭ ئۆگىنىش توغرىسىدا تېخىمۇ كۆپ بولغانلىقىنى ھېس قىلدىم, بۇ كىتابتىن بىر يول بىلەن. مەن كىم? بۇ مۇرەككەپ سوئال. بۇنداق, مەن داۋالاش شارائىتىدىن ئازابلانماي, مەن ئۈچۈن بۇ كىتابنى ھەتتا كود يازىدىغان بولغاچقا, مەن ئۆزۈمگە نىسبەتەن قىيىنلاشقاندا, مەن ئۈچۈن مەن قىيىنچىلىققا يولۇققاندا, مەن ئۆزۈمگە نىسبەتەن قىيىنلاشقاندا, ئىجتىمائىيلىشىش ۋە كىملىكى بىلەن بېسىم ئېلىپ كېلىدىغان چۈشىنىمەن. قىسقىسى, ئەگەر سىز بۇ كىتابنى ئوقۇۋاتقان بولسىڭىز, ئۇنى بىر يەرگە ئېلىپ, ئۇنى ئالدىڭىز دەپ ئويلىدىڭىز, ئۇنى ئەستە ساقلىغانلىقىڭىز ئۈچۈن پايدىلىق, ھەتتا سىز بۇ ئىشنى ئوقۇغان تەقدىردىمۇ مەن سىزنىڭ قىلغان ئىشىم. مەن anئىنژېنېر مەن بىر يۇمشاق دېتال ئاچقۇچى ۋە ئوقۇغۇچى, مەن تۇرمۇشىنى ئەستايىدىللىق بىلەن قىلىپ, ئۇلار تۇرمۇشىنى ئىشلىتىپ, ھاياتىنى ئىلگىرى سۈرۈپ, چوڭ يۇلتۇزنى ئىشلىتىپ, چوڭ تېپىشماقتا, چوڭ نەرسىلەرنى ئىشقا بېغىشلىشىدىغان باشقا ئوقۇغۇچىلارغا بۇ كىتابنى سۆزلەۋاتقاندا, بۇ كىتابنى تېخىمۇ ياخشى قىلىپ, چوڭ يۇلتۇزنى ئىشلىتىپ, چوڭ يۇلتۇزنىڭ خىزمەت قىلىدىغان, پايدىلىق, پايدىلىق, پايدىلىق, ئۇش ۋە ئىشلىتىشتىكى مۇۋەپپەقىيەت قازىنىدىغان بولىدۇ. Marty, بۇ مېنىڭ قىلىدىغان ئىشىم: مەن ئۆزۈمگە ياردەم قىلىدىغان ۋە باشقىلارنىڭ مۇۋەپپەقىيەت قازىنىشى ئۈچۈن ئەپلەرنى قۇرىمەن. مەن بىر ئاپتورمۇ, گەرچە مەن مېنىڭ پونكىتىمنى بىرلىكتە پايدىلىق ھۆججەتكە سېلىش ئۈچۈن, بۇ مېنىڭ تۇنجى نەشرىمنىڭ بىرىنچى نەشىرى بولغىنىم, مەنمۇ سەنئەتلا سەنئەتسلىك ئەمەس. مەن بۇنى سىزگە ئېتىراپ قىلىمەن, مەن بىر غەلىتە ئادەمنى رەت قىلىمەن. مەن مۇكەممەل ئەمەس, مەن پەقەت تەۋرىنىشتىن قېچىپ, مەندە تېخىمۇ كۆپ ئۇششاق-چۈششەك ئىشلارنى كەلتۈرۈپ چىقارغانلىقىم ئۈچۈن ھەتتا مەن تېخىمۇ كۆپ مۇۋەپپەقىيەت قازىنىمەن. مەن تۇغۇلۇشنىڭ بىر قىسمى, مەن گىرىمچىڭ, ئۆزۈمنىڭ سۈرىتىنى سۈرەتكە ئېلىڭ, كىيىملەرنى ۋە باشقا يامان غەرەزلىك كىيىملەرنى كىيىڭ, مەن ئۆزۈمنى تەبىئەتتە ئايالدەك ئايالدەكلا قورقۇپ قالىمەن. مېنىڭ ئۆتمۈشتىكى باشقا كىشىلەر بىلەن بولغان كىشىلەر بىلەن بولغان مەسىلىلەر بار, مەن Webppps بىلەن كۈرەش قىلىپ, مەن بۇ كىتابنى قولدا تاپالمىغانلىقىمدىن كەچۈرۈم سورايمەن. سىز مەندەك كۆرۈنىدۇ مەن مەندەك كود ئوقۇپ, ئوخشاش ئىشلەيدىغان كودنى ئوقۇپ, ئوڭۇشلۇق ئىشلىتمەكچى بولغانلىقىنى ئوقۇماقچى بولسىڭىز, چۈنكى ئەگەر سىز بۇ كىتابنى ئىشلىتىپ ئۇنىڭغا پۇل سوراشقا ئېھتىياجلىق بولسىڭىز, ھاياتىڭىزدا مۇۋەپپەقىيەت قازىنىشىڭىز كېرەك. مېنىڭ ئۆسۈپ يېتىلىشى, ساغلاملىق ئەھۋالى, دوختۇرلار, تاراتقۇلار ۋە قانۇن بويىچە ئۆلۈم ۋە نوپۇس خاراكتېرىدىكى كۈرەشلەرنى چوڭقۇر ئىپادىلىدى. قانداقلا بولمىسۇن, بۇ كىتاب بالام, مەرۋايىتملىق, تۇرمۇشىم ۋە مېنى ئۆگىنىش ئۈچۈن, سىز مەندىن ئېھتىياتچانلىق بىلەن ئويغانغانلىقىمدىن خۇشالمەن. ئېسىڭىزدە تۇتۇڭ, بۇ كىتابنىڭ خاتالىقىم بولۇپ قالدىم, بۇ كىتابنىڭ خاتالىقى, تۈزىتىش ۋە يېڭى نەشرى بولىدۇ, ھەمدە خەت يېزىشىم بىلەن مۇۋەپپەقىيەتلىك تەجرىبە بولۇشى كېرەك. يەنە, سىز يازغاندا سىز خىرىسقا دۇچ كەلسىڭىزمۇ, سىز ئۈچۈن ياخشى دېمەكچى بولغانلىقىمنى چۈشىنىمەن. ئۇ مۇنداق دېدى: «پەقەت رەقەملىك بوشلۇقتا تەسەۋۋۇر قىلىدىغان ھەر قانداق ئىشنى قىلىپ, تەمىنلىگەن ئۇچۇرلارنى ساقلىسىڭىزلا, سىز دۇچ كەلگەن ئۇچۇرلارنى ئالما شىركىتىگە تەھلىل قىلىڭ ۋە ھەتتا ئېلان قىلغان ئۇچۇرلار بىلەن قىيىن قەدەمدە دۇچ كېلىشىڭىز مۇمكىن. مەن سىزگە دېدىم, چۈنكى مەنمۇ ئوخشاش قىيىنچىلىققا دۇچ كەلدىم. بۇ كىتابنى ئۆزىڭىزنىڭ خەۋىپىڭىز, مەھەللىڭىز بىلەن ئىشلىتىپ يۇمشاق دېتال ۋە مەھەللى سىز مېنى ئۆزىمىزگە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇقماي تۇرۇپ, ھەممىڭلارنىڭ دۇنيا مىقياسىدا يەڭدى. خىزمەت, ئىنتېرنېت. مەن پەقەت بىر نەچچە سۆز بىلەن مېنىڭ كىملىكىم بىلەن بەك تونۇش بولماسلىقىڭىز مۇمكىن, ئەمما سىزنى ئوقۇشقا ئىلھاملاندۇرىمەن, سىز داۋاملىق سىزنىڭ خىزمىيىتىڭىزنى تاماملاش جەريانىدا مېنى داۋاملىق ئوقۇيسىز, سىز مېنى داۋاملىق ئوقۇيسىز. بۇ كىتابقا ياكى ئوقۇتقۇچىلار بىلەن تاپشۇرۇۋالمايدۇ, ئەمما مەن ئوقۇيسىز, بىللە ئوقۇغاندەك بايلىق ياساش ئۈچۈن ئاسپىرانتلىقلۇق قۇرۇلۇش پروگراممىسى بەرپا قىلىشقا ئىلھاملاندۇرىمىز, شۇنداقلا ئۆگەنگەنلىرىڭىزنى قانداق ئىلتىماس قىلالايسىز. مېنىڭ ئۈستۈنكى قەۋەتتىكى كودنى ئىلگىرىكى تۈرلىرىمگە بىرلەشتۈرۈلگەندەك, مەن قولدا يېزىشنى ۋە كۆرۈپ باققان نۇرغۇن پىكىر ۋە كېلىپ چىققان ئاۋاز ۋە ئائىلىڭىزنى ئىشلىتىپ, تورغا ئوخشاش ھەرىكەت قىلالايدىغان بولۇپ, سىز بىر ئاددىي ئەپنى كۆرسىتەلەيدىغان دەرىجىگەمىگە قادىر, ياكى خەۋەر سىزگە ياكى «ئەپىڭىز» نى كۆرسىتىشىڭىز مۇمكىن. بۇ كىتاب دېگەن نېمە: بۇ كىتاب مىسال. سىز بۇ يەردە كودنى تاپالايسىز ۋە خاتالىق تۈزۈشتىكى كۆرسەتمە ۋە خاتالىق ئېچىش پروگراممىلىرىڭىزنى ئەسلەپ ئۆتتى, بۇلىقى توغرىسىدا تۈزىتىش ۋە ئۇنى قانداق قىلىپ, سىزنىڭ مۇھىم تور بەتلىرىڭىزنى قايتا ئورنىتىپ, سىز ياكى شىركىتىڭىز ۋە شىركىتىڭىز قانداق قىلىپ ئېچىڭ, شۇنداقلا ئەپسىڭىز ۋە شىركەت ئوبرازىڭىزنى ساقلايسىز, شۇنداقلا مۇتلەق ئەڭ ياخشى نۇر سىزنىڭ تور بېتىڭىزنىڭ زىيارەتچىلىرىڭىزنىڭ زىيارەتچىلىكىدىكى ئەڭ جەلپكار بولۇشى مۇمكىن. بۇ كىتابتا مەن بۇ كىتابتا تور شەكلى سۇپىسى شۇنداقلا بىخەتەرلىكى بىلەن فوكۇس بىلەن فوكۇسنىڭ بىر قاتار مىساللىرىنى نامايايمەن. ئۆگىنىشنى قوزغىتىمىزrivieمىسالنى ئاساس قىلغان چوڭقۇر ئۆگىنىش ۋە بىخەتەرلىك ئۈچىنچى نەشرى شارلوت خارپېر 7-ئاينىڭ 3-كۈنى, 2024 2025-يىلى 6-ئاينىڭ 3-كۈنى يېڭىلاندى / ئۆزگەرتىلگەن
مۇقەددىمە:
تورنىڭ يۇمشاق دېتال ياساشتا بىخەتەرلىك ئابىللىقتىكىلىكىنىڭ بىخەتەرلىك كۆز قاراشلىرى قۇرۇلۇش ئوبزوتى ئۇنىۋېرسال, مۇقىم بولۇش ۋە ئەمەلىي تەلەپلەرگە پايدىلىق بولسا ھەر قانداق تور ئاچقۇچىلارنىڭ بىر قىسمى. Dom (ھۆججەت ئوبيېكتى بەلگىسى), ئۇ HTMl HTMl HTML, CS ۋە Css نى يولغا قويۇش, ئىشلىتىش ۋە ئىقتىدارنى يولغا قويۇش, ئۇششاق-چۈششەك ئىشلار ۋە خاراكتېرنى ئاسانلاشتۇرۇش ۋە ئىشلىتىش ئەركىنلىكى ۋەئىقى قۇرۇش ئەركىنلىكى ۋە ھوقۇقىنى تولۇقلاشتۇرىدۇ ۋە ئىشلىتىشنى تەمىنلەيدۇ ۋاقىتنى ئۆلتۈرۈڭ ياكى توردا ئىشلەنگەن ياكى تورغا چىقىڭ, ئادەتتە سېزىمچان ئېكران ئۈسكۈنىسىگە. كۆپىنچە كىشىلەر تور بېكەت قۇرماقچى بولغاندا قەيەرگە باشلاشنى بىلگەن تەقدىردىمۇ, ئۇلار باشقىلارنىڭ تور بېتىنى پۇل تۆلەشكە ۋە ئىشلىتىشكە ئېھتىياجلىق بولغاندا, ئىشلىتىش ئىقتىدارىنى ئىشلىتىشتىكى چەكلىمىلىرىنى قۇرتالىدىكەن. جانلىقلىق. ئەگەر بۇ كىتابنى ئوقۇشقا بىر قانچە مىنۇتتا ئوقۇپ, مەن سىزگە ئۆگىنىڭ, ھەتتا مەن بىلەن شەخسى ئايرىلىش ۋە ئۆزىڭىزنىڭ خېتىڭىزنى يېزىپ, بىر ئاز ئۇچۇر ئۆز ئىچىگە ئالىدۇ, بۇ كىتابنى ئۆزىڭىز خالىغان تور بېكەت قاماپ, ھەممىسى سىزگە ۋە كۆڭۈل ئېچىشنى ۋە سىزنىڭ ئارزۇيىڭىزنى بەلگىلەشنى خالايسىز.مەن ھەققىدە: مەن يۇمشاق دېتال ئاچقۇچى C / C ++ دىكى C / C ++ دىكى كەڭ دائىرىدە ئاچقۇچى بولۇپ, Java, Psthon, HuS ۋە JavaScripcript. مەن كىشىلەر تور بېكەتلەرنى زىيارەت قىلىدىغان, زىيارەت قىلماقچى, زىيارەت قىلىش, قوبۇل قىلىش ۋە ئەڭ مۇھىمى, ھەتتا تېز باھانە سېلىپ خوتارېيە. ئەگەر سىز بىر تور توربېكەتنى ۋە ئىقتىدارغا قانداق قارايسىز, سىز مېنى قوللاشنى خالايدىغانلىقىڭىز ئۈچۈن, مەن سىز بىلەن كۆرۈشسەم, ئۆزۈمنىڭ ئېھتىياجىم بىلەن كۆرۈشەلەيمەن, ھەمدە سىز تور بېكەت باشقۇرۇشنىڭ چىقىمىنىلا كۆرەلەيمەن, بۇ سىز زىيارەت قىلالايسىز. سىزنى ھازىر سېتىشقا ئۇرۇنۇشنىڭ ئورنىغا, مەن سىزنىڭ ئاللىبۇرۇن مەۋجۇت ئۇچۇرلىرى بىلەن ئۆزىڭىز (تور (تور بەت) بەرپا قىلىپ, مۇستەقىل يۇمشاق دېتال ئاچقۇچى, مەن ئارزۇ قىلىدىغان نەرسىنى يېزىڭ, سىزگە خالىغان ساھەدە مۇۋەپپەقىيەت قازىنىشنى ئۆگىتىڭ. ئېنىق بولاي, مەن سىزگە بىرەسمىي بولىدۇ. سىز مەكتەپكە بېرىپ بۇ ئىشلارنى رەسمىي مائارىپ بىلەن ئوقۇيالايسىز, ھەتتا مەكتەپتىكى بۇ كىتابنى ئوقۇڭ, سىزنىڭ بۇ كىتابنى ئوقۇڭ ۋە مائارىپىڭىزدىن ناھايىتى ياخشى ئىش قىلىڭ, ئەمما سىزنىڭ ئوقۇشتىن ئېسىل ئىشتىن چۈشمەيمەن, ئەمما سىزنىڭ ئوقۇشتىن ئېسىل ئىشتىن چۈشمەيمەن, ئەمما سىزنىڭ ئوقۇشتىن رەسمىي ئورۇندايمەن. مەن سىزنىڭ پروفېسسورىڭىز ئەمەس, مېنى ئۆزىڭىزنىڭ شەخسىي مۇۋەپپەقىيىتى بويىچە يېتەكلىمەكچى بولغان دوستىڭىزدەك ئويلاپ باقسىڭىز بولىدۇ. مەن سىزنى ئۇتۇقلۇق ئەمەس, ئۇنى ۋاقتىڭىز بىلەن سېتىۋېلىشىڭىز كېرەك. كودنى ئۆگىنىش تىك ئۆگىنىش ئەگرى سىزىقى بار, ھەتتا ئاسان ئەمەس, ھەتتا بولۇشى كېرەك. سىز خالىغانچە تىرىشىشىڭىز ۋە داۋاملىق سىناپ بېقىشىڭىز مۇمكىن, سىز ئۆزىڭىز سىناپ بېقىش ئۈچۈن, سىز ھېس قىلسىڭىزمۇ قايتا سىناپ باقسىڭىزمۇ قايتا سىناپ بېقىڭ. بۇ كودنىڭ خاراكتېرىدە. كودى پروگرامما تۈزگەن لايىھەلەنگەن تۈزگۈچى تەرىپىدىن باشقۇرۇلىدۇ, بۇلار سىزگە خەتنى قانداق كۆپەيتىش ئۈچۈن ئۆگىتىدۇ, ھەتتا خاتالىقنى ئىزدەش ماتورىغا كۆپەيتىپ, باشقىلارنىڭ ئۈلگىسىنى ئوقۇدى. مەن چوقۇم دەيمەن, ئىنتايىن باي, ئەقىللىق, مۇۋەپپەقىيەت قازىنىش ۋە بىز بىر ئەپ ياساشنىڭ ھاجىتى يوق ياكى تەشكىللىنىشىڭىزنىڭ ھاجىتى يوق. كومپيۇتېر سىز ئۈچۈن بۇ تەشكىلاتقا كۆڭۈل بۆلىدۇ. سىز پەقەت سىناق ۋە خاتالىق ئارقىلىق چىڭ تۇرۇش كېرەك, مۇھىم بولۇپ تۇرۇشىڭىز ھەمدە قىلغان ئىشلىرىدا جاناھەت قىلىڭ, قىلغان ئىشلىرىڭلارنىڭ تولۇقلىقىدا ناھايىتى توغرا ئۇچرايسىز.
مەن كىم: مەن ئاخىرقى بۆلەكنىڭ ئۆگىنىش توغرىسىدا تېخىمۇ كۆپ بولغانلىقىنى ھېس قىلدىم, بۇ كىتابتىن بىر يول بىلەن. مەن كىم? بۇ مۇرەككەپ سوئال. بۇنداق, مەن داۋالاش شارائىتىدىن ئازابلانماي, مەن ئۈچۈن بۇ كىتابنى ھەتتا كود يازىدىغان بولغاچقا, مەن ئۆزۈمگە نىسبەتەن قىيىنلاشقاندا, مەن ئۈچۈن مەن قىيىنچىلىققا يولۇققاندا, مەن ئۆزۈمگە نىسبەتەن قىيىنلاشقاندا, ئىجتىمائىيلىشىش ۋە كىملىكى بىلەن بېسىم ئېلىپ كېلىدىغان چۈشىنىمەن. قىسقىسى, ئەگەر سىز بۇ كىتابنى ئوقۇۋاتقان بولسىڭىز, ئۇنى بىر يەرگە ئېلىپ, ئۇنى ئالدىڭىز دەپ ئويلىدىڭىز, ئۇنى ئەستە ساقلىغانلىقىڭىز ئۈچۈن پايدىلىق, ھەتتا سىز بۇ ئىشنى ئوقۇغان تەقدىردىمۇ مەن سىزنىڭ قىلغان ئىشىم. مەن ئۆزۈم, يۇمشاق دېتال ئاچقۇچى ۋە ئوقۇغۇچىسى, ئۇلار تۇرمۇشىنى ئىشلىتىپ, ئۆزلىرىنىڭ ھاياتىنى ئىشلىتىپ, ھاياتىنى ئىلگىرىلىگەن قىسىملىق كىشىلەرنى خىزمەت قىلىدىغان, پايدىلىق, پايدىلىق, پايدىلىق, ئۇش ۋە جەلپ قىلىش كۈچىگە ئوخشاش ھەرىكەتلەندۈرگۈچ كۈچگە ئوخشاش ھەرىكەتچان, ئەپسۇسېت ئۇقۇمغا ئوخشاش قوللىنىشچان پروگراممىلارنى مۇۋەپپەقىيەت قازىنىدىغانلىقى ئۈچۈن ئارقا مەھسۇلات دەپ يېزىمىز. Marty, بۇ مېنىڭ قىلىدىغان ئىشىم: مەن ئۆزۈمگە ياردەم قىلىدىغان ۋە باشقىلارنىڭ مۇۋەپپەقىيەت قازىنىشى ئۈچۈن ئەپلەرنى قۇرىمەن. مەن بىر ئاپتورمۇ, گەرچە مەن مېنىڭ پونكىتىمنى بىرلىكتە پايدىلىق ھۆججەتكە سېلىش ئۈچۈن, بۇ مېنىڭ تۇنجى نەشرىمنىڭ بىرىنچى نەشىرى بولغىنىم, مەنمۇ سەنئەتلا سەنئەتسلىك ئەمەس. مەن بۇنى سىزگە ئېتىراپ قىلىمەن, مەن بىر غەلىتە ئادەمنى رەت قىلىمەن. مەن مۇكەممەل ئەمەس, مەن پەقەت تەۋرىنىشتىن قېچىپ, مەندە تېخىمۇ كۆپ ئۇششاق-چۈششەك ئىشلارنى كەلتۈرۈپ چىقارغانلىقىم ئۈچۈن ھەتتا مەن تېخىمۇ كۆپ مۇۋەپپەقىيەت قازىنىمەن. مەن تۇغۇلۇشنىڭ بىر قىسمى, مەن گىرىمچىڭ, ئۆزۈمنىڭ سۈرىتىنى سۈرەتكە ئېلىڭ, كىيىملەرنى ۋە باشقا يامان غەرەزلىك كىيىملەرنى كىيىڭ, مەن ئۆزۈمنى تەبىئەتتە ئايالدەك ئايالدەكلا قورقۇپ قالىمەن. مېنىڭ ئۆتمۈشتىكى باشقا كىشىلەر بىلەن بولغان كىشىلەر بىلەن بولغان مەسىلىلەر بار, مەن Webppps بىلەن كۈرەش قىلىپ, مەن بۇ كىتابنى قولدا تاپالمىغانلىقىمدىن كەچۈرۈم سورايمەن. سىز مەندەك كۆرۈنىدۇ مەن مەندەك كود ئوقۇپ, ئوخشاش ئىشلەيدىغان كودنى ئوقۇپ, ئوڭۇشلۇق ئىشلىتمەكچى بولغانلىقىنى ئوقۇماقچى بولسىڭىز, چۈنكى ئەگەر سىز بۇ كىتابنى ئىشلىتىپ ئۇنىڭغا پۇل سوراشقا ئېھتىياجلىق بولسىڭىز, ھاياتىڭىزدا مۇۋەپپەقىيەت قازىنىشىڭىز كېرەك. مېنىڭ ئۆسۈپ يېتىلىشى, ساغلاملىق ئەھۋالى, دوختۇرلار, تاراتقۇلار ۋە قانۇن بويىچە ئۆلۈم ۋە نوپۇس خاراكتېرىدىكى كۈرەشلەرنى چوڭقۇر ئىپادىلىدى. قانداقلا بولمىسۇن, بۇ كىتاب بالام, مەرۋايىتملىق, تۇرمۇشىم ۋە مېنى ئۆگىنىش ئۈچۈن, سىز مەندىن ئېھتىياتچانلىق بىلەن ئويغانغانلىقىمدىن خۇشالمەن. ئېسىڭىزدە تۇتۇڭ, بۇ كىتابنىڭ خاتالىقىم بولۇپ قالدىم, بۇ كىتابنىڭ خاتالىقى, تۈزىتىش ۋە يېڭى نەشرى بولىدۇ, ھەمدە خەت يېزىشىم بىلەن مۇۋەپپەقىيەتلىك تەجرىبە بولۇشى كېرەك. يەنە, سىز يازغاندا سىز خىرىسقا دۇچ كەلسىڭىزمۇ, سىز ئۈچۈن ياخشى دېمەكچى بولغانلىقىمنى چۈشىنىمەن. ئۇ مۇنداق دېدى: «پەقەت رەقەملىك بوشلۇقتا تەسەۋۋۇر قىلىدىغان ھەر قانداق ئىشنى قىلىپ, تەمىنلىگەن ئۇچۇرلارنى ساقلىسىڭىزلا, سىز دۇچ كەلگەن ئۇچۇرلارنى ئالما شىركىتىگە تەھلىل قىلىڭ ۋە ھەتتا ئېلان قىلغان ئۇچۇرلار بىلەن قىيىن قەدەمدە دۇچ كېلىشىڭىز مۇمكىن. مەن سىزگە دېدىم, چۈنكى مەنمۇ ئوخشاش قىيىنچىلىققا دۇچ كەلدىم. بۇ كىتابنى ئۆزىڭىزنىڭ خەۋىپىڭىز, مەھەللىڭىز بىلەن ئىشلىتىپ يۇمشاق دېتال ۋە مەھەللى سىز مېنى ئۆزىمىزگە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇققاندا, مەن سىزگە بۇ تېكىستكە يولۇقماي تۇرۇپ, ھەممىڭلارنىڭ دۇنيا مىقياسىدا يەڭدى. خىزمەت, ئىنتېرنېت. مەن پەقەت بىر نەچچە سۆز بىلەن مېنىڭ كىملىكىم بىلەن بەك تونۇش بولماسلىقىڭىز مۇمكىن, ئەمما سىزنى ئوقۇشقا ئىلھاملاندۇرىمەن, سىز داۋاملىق سىزنىڭ خىزمىيىتىڭىزنى تاماملاش جەريانىدا مېنى داۋاملىق ئوقۇيسىز, سىز مېنى داۋاملىق ئوقۇيسىز. بۇ كىتابقا ياكى ئوقۇتقۇچىلار بىلەن تاپشۇرۇۋالمايدۇ, ئەمما مەن ئوقۇيسىز, بىللە ئوقۇغاندەك بايلىق ياساش ئۈچۈن ئاسپىرانتلىقلۇق قۇرۇلۇش پروگراممىسى بەرپا قىلىشقا ئىلھاملاندۇرىمىز, شۇنداقلا ئۆگەنگەنلىرىڭىزنى قانداق ئىلتىماس قىلالايسىز. مېنىڭ ئۈستۈنكى قەۋەتتىكى كودنى ئىلگىرىكى تۈرلىرىمگە بىرلەشتۈرۈلگەندەك, مەن قولدا يېزىشنى ۋە كۆرۈپ باققان نۇرغۇن پىكىر ۋە كېلىپ چىققان ئاۋاز ۋە ئائىلىڭىزنى ئىشلىتىپ, تورغا ئوخشاش ھەرىكەت قىلالايدىغان بولۇپ, سىز بىر ئاددىي ئەپنى كۆرسىتەلەيدىغان دەرىجىگەمىگە قادىر, ياكى خەۋەر سىزگە ياكى «ئەپىڭىز» نى كۆرسىتىشىڭىز مۇمكىن.بۇ كىتاب دېگەن نېمە: بۇ كىتاب مىسال. سىز بۇ يەردە كودنى تاپالايسىز ۋە خاتالىق تۈزۈشتىكى كۆرسەتمە ۋە خاتالىق ئېچىش پروگراممىلىرىڭىزنى ئەسلەپ ئۆتتى, بۇلىقى توغرىسىدا تۈزىتىش ۋە ئۇنى قانداق قىلىپ, سىزنىڭ مۇھىم تور بەتلىرىڭىزنى قايتا ئورنىتىپ, سىز ياكى شىركىتىڭىز ۋە شىركىتىڭىز قانداق قىلىپ ئېچىڭ, شۇنداقلا ئەپسىڭىز ۋە شىركەت ئوبرازىڭىزنى ساقلايسىز, شۇنداقلا مۇتلەق ئەڭ ياخشى نۇر سىزنىڭ تور بېتىڭىزنىڭ زىيارەتچىلىرىڭىزنىڭ زىيارەتچىلىكىدىكى ئەڭ جەلپكار بولۇشى مۇمكىن. بۇ كىتابتا مەن بۇ كىتابتا تور شەكلى سۇپىسى شۇنداقلا بىخەتەرلىكى بىلەن فوكۇس بىلەن فوكۇسنىڭ بىر قاتار مىساللىرىنى نامايايمەن. UPXX SHOll نى زاپاس ۋە ئورگىنال ئىقتىدارلىرى بىلەن ئاساسىي ئورۇنغا بېسىپ بېرىشنى باشلايدۇ. ئاندىن, ئاساسىي بىلوگ تور بېكىتىنى ئېلان قىلىمىز, بىلوگىڭىزنى رەسىم ۋە سىنلىق ئىقتىدارلىق بىلەن يېڭىلاپ, بۇ ئىقتىدارلارنى ئىشلەتكىلى بولىدىغان ئىقتىدارلىرىمىزدىن ساقلاڭ, قىستۇرما دېتاللارنى ئىشلەتكىلى بولىدىغان دەلىللەش ماتورىمىزدىن ئىشلىتىشكە كاپالەتلىك قىلىڭ. ھۆججەت بىر تەرەپ قىلىش ۋە پىششىقلاپ ئىشلەشنى تەكشۈرۈپ, سىن سىن تەھرىرلەش, باشقا ئۇقۇملارنى ئاڭلاش, باشقا ئۇقۇملارنىڭ تارقىتىلىشى, باشقا ئۇقۇملارنىڭ ئارىسىنى تەكشۈرۈش, باشقا ئۇقۇملارنىڭ ئارىسىنى تەكشۈرۈش, باشقا ئۇقۇملار تەستىقىدىن لايىھەلەنتۇ. بىز API نى تەكشۈرەلەيمىز, چۈنكى ئۇ بىزنىڭ يۇمشاق دېتالىمىز بىزنىڭ يۇمشاق دېتالىمىزغا تېخىمۇ پايدىلىق ۋە بىخەتەر بولۇشىمىز كېرەك, ھەقسىز ۋە تاپشۇرغان تاللاشلار بىلەن ياردەم قىلىدىغانلىقىغا ياردەم قىلىمىز. يولدا مېڭىش, بۇرۇلۇش لايىھىسى ۋە ئۇچقۇچىسىز ئايروپىلان ۋە ئايروپىلان لايىھىسى قاتارلىق جىسمانىي بىخەتەرلىك ۋە قوراللىق ساقلاش قوراللىرى بىلەن ئۆزىنى يۇمشاق دېتالنى قوغداش ئۈچۈن, ئاندىرويىد تورىمىزدىكى يۇمشاق دېتاللىرىمىزنى بىرلەشتۈرىمىز. ئويۇن, 2D ۋە 3D ئورنىنى ئېلىش ۋە 3D ۋىرۇس بىلەن ئورالغان قاتتىق دېتاللارنى ئاساس قىلىپ, سىلىق يىللىق يانفوننىڭ ئايرىم-ئايرىم نۇسخىسى ۋە كرېمنىي كاۋچۇكلىرىدا تاشلىدى. يول بويىدا, يۇمشاق دېتالىمىزغا تېخىمۇ بىخەتەر كاپالەتلىك قىلىش ئۈچۈن ئاللىبۇرۇن بار بولغان ماشىنا ئۆگىنىش ھەل قىلىش چارىسىنى ئىشلەتتۇق. بىز يەنە بۇ جەريانغا ئېرىشىش ۋە ئۇنىڭغا كاپالەتلىك قىلىش ئۈچۈن تور قوراللىرىنىمۇ ئىشلىتىمىز. بۇ كىتاب سىزنىڭ مۇۋەپپەقىيىتىڭىزگە تور قوللىنىشچان پروگراممىسىغا يېتەكچى, ئۇنى كومپيۇتېر ۋە قىستۇرما مېخانىكىلىق سىستېمىلار بىلەن بىرلەشتۈرۈڭ, Officen Morted Mational.
بۇ كىتاب دېگەن نېمە: ئەگەر سىز بىر توربېكەت باغلىماقچى بولسىڭىز, ئاددىي دۇكان ئاچسىڭىز, بىلوگ قۇرغان, بىلوگ, رەسىم ياكى سىنلارنى ئەزەلدىن يازمايلا يازماي يوللىسىڭىز بولىدۇ. بۇ كىتاب ئۇنداق ئەمەس. بۇ كىتابنى ئاللىبۇرۇن تالايسىز, بارلىق يۇمشاق دېتاللاردىن ئىلگىرىكى پايدىلىق, تولۇق ئىشلىتىلىدىغان يۇمشاق دېتاللارنى قانداق قىلىپ, كونا شىركەتلەرنىڭ تىجارەت قىلىۋاتقانلىقىنى, چۈنكى يەنىلا چوڭ تىپتىكى شىركەتلەرنىڭ تىجارەت قىلىۋاتقانلىقىنى, چۈنكى ئۇ ئارقىغا چېكىنىش مۇمكىن, بۇ شىركەتلەر كەينىگە, ئۇنىڭغا ئەرز سۇنمايدۇ, ئىتتىرىش شىركەتلىرى ھەقىقەتەن ھېچ ئىش قىلمىغان كىشىلەرگە پۇل تېپىش. ئەگەر بۇ كىتابقا يېقىندىن دىققەت قىلسىڭىز, كود, تەتقىقات كودىنى يېزىپ, ئۆز ئەپلىرىنى قۇرىسىز, قىلغان ئىشتىن پۇل تاپالايسىز. ھەتتا مەن بۇ كىتابقا دەسلەپكى باسقۇچلارلاسىز ئىشلەيمەن, چۈنكى ئۇنىڭدا نۇرغۇن كىشىلەر ئۇچۇر يەيمەن, ئوقۇشنى خالايدۇ, ئوقۇشنى خالايدۇ, ئوقۇغاندا ياكى ئەپلىرىمنى سېتىۋالغۇلا بار. بۇ كىتاب سىزگە ئۈلگە بولۇپلا قالماي, ھەر بىر قۇر سىز ئۈچۈن ھەر بىر قۇر بولۇپ قالىدىغانلىقىڭىزنى, سىز سىزگە توغرا يۆنىلىش قىلىپ, سىز سىزگە يۇمشاق دېتال, خېرىدارلار, خىزمەتچى, ئائىلە, ئائىلە, ئائىلە ئىگىلىرى ۋە قوللىشىغا ماس كېلىدۇ.نېمىنى ئۆگىنىسىز: بۇ كىتابنى سىزگە قانداق قۇرۇش ۋە سېتىش, پايدىلىق يۇمشاق دېتال, مېتال خاتىرىلەش, ماشىنىنى بىلىش, ئىشلىتىش, خاتىرىلەش, يەرشارى ۋە كۆرسىتىش قاتارلىق ئۇچۇرلارنى سۆزلەش ۋە كۆرۈش قاتارلىق ئۇچۇرلارنى سۆزلەيدۇ. بۇ كىتابنى سىزگە قانداق قىلىپ تور لىنۇكىس قۇرۇش ۋە زاپاسلاش ئۈچۈن قوللانمىلارنى قانداق قىلىپ تورتلارنى ياساش, ئاپتوماتىك تور بېكەتلەرنى قانداق قىلىپ, باشقا تور بېكەتلەر ئارقىلىق, باشقا تور بېكەتلەرنى ئىشلىتىپ, دەلىللەش ياكى باشقا تور بېكەتلەرنى ئىشلىتىش ئۈچۈن قانداق قىلىپ باشقۇرۇش مۇلازىمىتىنى ساقلايدۇ. بۇ مەقسەت, كىمنى سىكاننلاشتۇرۇش, رەسىم ۋە سىن ساغلاملىق, رەسىم ۋە سىن-سىنلىقلىرى, سانلىق مەلۇمات ماختىنى قىلىش, مەخپىي بىر تەرەپ قىلىش, مەخپىي بىر تەرەپ قىلىش, مەخپىي بىر تەرەپ قىلىش, مەخپىي بىر تەرەپ قىلىش, مەخپىي بىر تەرەپ قىلىش, مەخپىي بىر تەرەپ قىلىش, CLYPTPIUPRICEMY سودىسى, Cymerchonoce ۋەزىپىسىنى ياخشى كۆرىدۇ. ئۆزىڭىزنىڭ كۆك چىش ئۈسكۈنىلىرىنى, باتارېيە, مىكرو كامېرون, سىم ۋە 3د بېسىپ ماتېرىياللار, ماشىنا ھەيئىتى, ماتور ۋە قۇرتلار, ماشىنا ۋە سەزگۈرلۈكلەر بىلەن بىللە. مەن خوغغىش ۋە قورال ۋە قورالقا ئىشلىتىشكە 3D لايىھىلەش پرىنسىپلىرىنى كۆرسىتىشكە ئىگە 3D دالا-نومۇرلارنى كۆرسەت كۆرىمەن, شۇڭا سىز ئۆزىڭىزنىڭ تېزلىكىنى بىر گەۋدىلەشتۈرۈشكە بولىدۇ. ھەمدە ئۇلارنى كۆك چىش ۋە تور بىلەن تور. كونكرېت قىلىپ ئېيتقاندا, ئىككى خىل دېلونى چاپلاشنى تەكشۈرۈپ, ھەر ئىككىسى گرادۇسلۇق كۆرۈنمە يۈزى ياكى بۇيرۇق قەبرىسىنىڭ ئىقتىدارى ۋە سۈرئەتنى كەڭ كۆلەمدە بىرلەشتۈرۈپ باشقۇرىمىز. سىز يەر يۈزىدىن يەر ئاستىدىن بۇرۇنقى قۇراشتۇرۇشنى ئۆگىنىپ, ئۇنى توغرىلاش, ئۇ ئىقتىدارنى ئوتتۇرىغا قويسىڭىز, ئۇنى مۇمكىن قىلىدۇ, بىخەتەر, بىخەتەر, پايدىلىق, پايدىلىق ۋە ئەڭ مۇھىم قوللىنىشچان. ماشىنا ئۆگىنىش ۋە كومپيۇتېرنى كۆرۈش ۋە تېخىمۇ ئەمەلىي خاتىرىلەش, مۇزىكا ئىشلىتىپ, سىز چوقۇم تېخىمۇ مۇھىم بارلىق ئۇچۇرلارنى ساقلاش ئارقىلىق بىر قانچە مۇھىم تور بېكەتلەرنى سېلىشتىپ, سىز چوقۇم تېخىمۇ مۇھىم خاتىرىلەرنى ئەمەلگە ئاشۇرىدۇ. بۇ كىتاب تاراتقۇلارغا نىسبەتەن, تاراتقۇلار ۋە ئۆگىنىش ئۆگىنىشكە ئاساسەن ئەڭ قاتتىق بولۇپ, ئاپتوماتىك ئىشلەتكۈچىلەرنى توپلاش ئارقىلىق, بۇ ئاپتوماتىك, ئەمەلىي, ئەمەلىي, ئەمەلىي, خاراكتېر ئۈچۈن ئىجادچان يۇمشاق دېتاللارنى پارەسلاشتۇرىدۇ ۋە خاتالىق بار. بۇ كىتاب توردا تۇتۇلغان, ئالاھىدە دىسسان (ئۇبۇنتۇ, Pyhu), Pyhu), شۇنداقلا Git ۋە FFMPEG غا ئوخشاش پايدىلىق AppH يۇمشاق دېتالى. مەن سىزگە يەنە بىر قېتىملىق سودا سودىسىنى ئاپتوماتىك سودا قىلىشنى ئۆگىتىمەن, ھەتتا Cryptopururections ياكى قايتا-قايتا بانكا كارتىلىرى بىلەن پۇل تۆلەڭ. مەن سىزگە تور بېتىڭىزدىكىلىرىڭىزنى قانداق قىلىپ پۇل تېپىش ۋە ئۇنى تېز قىلىپ, تۇنجى قىلىپ, تۇنجى قىلىپ سىزنى ئىزدەپ, ئىمكانقەدەر كۆپ ئۇچرايدىغان تاللاشنى ئۆگىتىدۇ. مەن سىزگە قانداق يۇمشاق دېتاللارنى قانداق ساتسىڭىز, ئۇنى قانداق كۆرۈپ, مۇلازىمىتىلىرىڭىزنى جەلپ قىلىدىغان ۋېلىسىپىت قىلىشقا بولىدۇ, بۇنى مەۋجۇت بولۇپ, ئۆزىڭىزنى مەۋجۇت »ئارقىلىق ئۆزىڭىزنى قويۇپ بېرىڭ. مەن سىزگە سىز ئۈچۈن خىزمەت قىلىدىغان ۋە ئەرزانلىرىڭىزنى ساقلايدىغان ۋە سىزنىڭ ئېلېكترونلۇق خەتلىرىڭىزنى ساقلايدىغانلىقىڭىزنى, ئۇچۇرلىرىڭىزنى ۋە نېمىگە ئېھتىياجلىق بولسىڭىز, ئۇچۇرلىرىڭىزنى قانداق قىلىپ تورداشلار ئارقىلىق قانداق قىلىپ تور بېتىڭىزگە قايتۇرۇپ بېرىدۇ. بۇ كىتابنى بىر قانچە تارماق ئېلان قىلىپ تاراتقۇلارغا بىر توپ تارقىتىش ۋە تارتىشتىن, تېكىستنىڭ ئاۋازغا قارىغاندا ياخشى تەسىر كۆرسىتىش, ئاخىرقى ئىشلەتكۈچىلەر (خېرىدارلىرىڭىز), يۇمشاق دېتالىڭىز ۋە شىركىتىڭىز »نى ۋە شىركىتىڭىز ئەڭ ياخشى ئۇسۇلنى يارىتىدۇ. سىز يەنە بىر قانچە خىل گىرىم قىلىش ۋە سۈرەتكە تارتىش ئارقىلىق, رەڭلىك, ھەرىكەتچان بارلىق مەزمۇنلارنى ئىشلىتىپ يۇمشاق دېتالنى ئىشلىتىپ, ئۆزىڭىزنى ۋە شىركىتىڭىزنى تەسۋىرلەپ بېرەلەيدىغان بارلىق قوراللار, خىزمەت ياكى ئازدۇركى, ئۆزىڭىز ۋە شىركىتىڭىزنى تەسۋىرلەپ بېرەلەيدىغان بارلىق قوراللار, خىزمەت ياكى پۇل خەجلىگەندىن كېيىن سىزگە تېخىمۇ ياخشى بولغان نۇرنى كۆرسىتىشىڭىز ئۈچۈن يۇمشاق دېتالنى كۆرۈڭ. بۇ كىتاب «ئەمەلىي» دەپ ئاتىلىدۇتورنى ئاساس قىلىش «مەلۇم سەۋەبلەر بىلەن تور كودقا دۇچ كەلگەن, كونكرېت كودنى ئۆز ئىچىگە ئالىدۇ, بولۇپمۇ كومپيۇتېرنىڭ ئۆگىنىش, پەرقى, رەسىمنى ئاشۇرۇش, ئېنىقلىق دەرىجىسى, ئاشۇرۇش نىسىيەتنىڭ مىسالى قىلىپ بېرىشنى چۈشەندۈردۇ. كومپيۇتېرنىڭ خاراكتېرىدىن پايدىلىنىپ, كومپيۇتېرنىڭ يۆتكىلىشچان ئوبراز ياكى ئوپتىك ياكى تارتىلغان سۈرەتكە كەلسەك, كومپيۇتېرىڭىز سىزنى مەخپىي نومۇرغا كىرگەندە, ئەمما ئۇنى يۈزىڭىز بىلەن خاتىرىلىسە بولىدۇ. مۇلازىمېتىر كومپيۇتېرىنى سىز بۇ بىخەتەر بولالايسىز, a ئادەتتە سىز ئىشلەتكۈچى ئىسمى ۋە مەخپىي نومۇرىڭىزنى سورايدىغان كومپيۇتېر سىزنى سىزگە سوراپ, ھەر بىر يېڭى كىرىش ياكى يېڭى IP ئادرېس ئۈچۈن جەزملەشتۈرۈلۈشى مۇمكىن, ئەگەر سىز يېتەرلىك بولغاندا ئېلېكترونلۇق يۇمشاق دېتال مۇلازىمىتى ياكى تېكىست ئۇچۇرىڭىزنى بىخەتەر قىلىش يېتەرلىك ئەمەس. يۇمشاق دېتال بەرپا قىلغىلى بولىدىغان يۇمشاق دېتال بەرپا قىلىدىغانلار بۇنىڭ مەنىسى بۇنىڭ مەنىسى بار. يۇمشاق دېتال پۈتۈنلەي تەۋرەنمەي, ئۇلار بىزنىڭ قولىمىزدا ئىشلىتىمىزكى, ئۇلار بەلكىم يۇمشاق دېتالنى بىر تەرەپ قىلىنىمىزلا ئەمەس, ئۇ يۇمشاق دېتالنى ئارىيەتچان بولغان ئادەملەرنىڭ قولىدا بەلكىم يۇمشاق دېتالنىڭ ئۆزى ئۈچۈن خەتەرگە دۇچ كېلىشى مۇمكىن. بۇ بۇ كىتابنىڭ مۇھىم نۇقتىسى. تور كومپيۇتېرنىڭ ئۇزۇن ئاچقۇچ بەلگىسى بىلەن بولغان ئۇزۇن ئاچقۇچ بەلگىسى بىلەن بىخەتەر ئورناتتى, بولمىسا تور مۇلازىمېتىر ئارقىلىق ئىجرا بولىدىغان سەنئەت بىخەتەرلىك قوراللىرى ئورنىتىلغان. تور مۇلازىمېتىرىغا ئېرىشەلەيدۇ, بۇ ئىشلەتكۈچى ئۈسكۈنىلىرىنىڭ ئەڭ كۈچلۈك بىر قىسمىدا ھالدا, چۈنكى ئۇ ئىشلەتكۈچى تور يۇمشاق دېتالىنى قۇرالايدىغان ئورنى. بۇ قوراللار تېكىستنى كۆرسەتسە, تور مۇلازىمېتىرى تور بېكىتىگە باغلانغان ۋە دەلىللەيدىغان سانلىق مەلۇماتلار بىلەن يېزىلىدىغان, ئوقۇش ۋە چاپلاش قاتارلىقلارنى خاتىرىلەپ ئۆتىدىغان ئۆزگىچە رەت بۆلەكلەر بىلەن ئوقۇش ۋە يېزىشقا بولىدۇ. سىزنىڭ قولىڭىزدا بارلىق قوراللارنى ئىشلىتىپ, بۇ كىتابنى بىخەتەر تور بېكەت قۇرىمىز, سىز بىلەن ئىشلەيدىغان بىخەتەر تور بېكەت سىستېمىسى ئىشلىتىۋالىدۇ, خېرىدار چاقىرغۇچىڭىز ۋە تۇيۇلدى
نەدىن باشلاش: سىز بۇ كىتابنى ياكى بىر بۆلەكنى ياكى ھەر قانداق بۆلەكنى بېسىپ ئۆتۈپ, ئېھتىياجلىق بولغاندا كودنى كودلاشتىن بۇرۇن, شۇنىڭ بىلەن بىر بۆلەكتە كودلاش تەجرىبىسى بار, بولۇپمۇ يۇقىرىدا تىلغا ئېلىنغان قوراللارنىڭ ئىلگىرى ياكى بىرىڭىز بۇ كىتابتا تەپسىلىي مەن كودلاشتۇرىدىغانلىقىمنى ۋە ئۇنىڭ بەلگىسىنى ھۆججەتلەشتۈرىمەن. ئەگەر يېزىش كودىنى يېزىيدىغان كەچۈرمىش بولسا, بۇ كىتابنىڭ ھەممىسىنى ئوقۇغانلىقىڭىزنى, بولۇپمۇ ئالدىنقى بۆلەكلەرنى ئوقۇشنى تەۋسىيە قىلىمەن, بۇ كىتابنىڭ سىزگە توغرا كاپالەتلىك قىلىشىنى تەۋسىيە قىلىمەن. ئەگەر بۇ كىتاب سىزگە ماس كەلمىسە, ئۇنى ئۇنى تور ئېچىش توغرىسىدىكى ئۆگىنىشكە ماس كېلىدىغان دوستى ياكى تۇغقانلىرىغا ماسلاشتۇرۇپ, مەن سىزنى ئوقۇتقۇچىم ياكى باشقا ئوقۇتقۇچىلارنىڭكىچە ياكى باشقا ئوقۇتقۇچىلارنىڭكىچە ياكى باشقا ئوقۇتقۇچىلارنىڭ ياكى باشقا ئوقۇتقۇچىلىرىمغا ئورناتقان خەتلەرنى تولدۇرۇشنى ئويلاڭ. قەيەرگە باشلىغاندا, بۇ كىتابنىڭ ھەر بىر قىسمىلى بوسىڭىزگە پايدىلىق بولىدۇ, ئەڭ ياخشى ئەپلەر كالېلغا ئېھتىياجلىق تەپەككۇر بىلەن ياسالغان, خېرىدارنى بىلىشىڭ. ھازىر سىز مېنى تونۇيسىز, بۇ كىتابنى بىلىسىز, سىز قېرىشقا تەييار. باشلاش ئۈچۈن, كومپيۇتېرنى تۇتۇپ بېقىڭ (رامكا دۇكىنىدىن ئەڭ كۈلگۈچى, ئامازون ياكى كونا ئۈستەل يۈزىمۇ ئىشلەيدۇ, ئۇنى سىز ئۈچۈن ئىشلەيدىغان ئىشقا ئورۇنلىشىۋاتىدۇ.بۇ كىتابنى قانداق ئوقۇش: تېكىست گەۋدىلەندۈرۈلگەن, بۇ تېكىستنىڭ بۇيرۇق ئەسكەرتمىسىگە تەۋە, سىز ئىجرا قىلغان كودنى قەيەردە يازىسىز. بۇيرۇق ئەسكەرتمىسى كۆرۈنەرلىك كۇنۇپكا تاختىسىنى مەركەزلەشتۈرۈۋېتىدۇ ۋە ھېچقانداق چېكىش, خىزمەت ئېقىمىڭىزنى تېزلىتىڭ ۋە ئىشلارنى سىزگە ئاسانلاشتۇرىدۇ.
باشلاش: سۇغا شۇڭغۇيايلى. بىز يەرلىك ماشىنىدا كودىنى قۇرۇش ۋە تور بېكەت قۇرماي تۇرۇپ باشلايمىز. بۇ تېخىمۇ بىخەتەر, خىراجەت, خىراجەت, سىز ئۈچۈن ئاسان. مەشغۇلات سىستېمىسىغا ئاساسەن, باش قېپىغا كىرىڭ سەل ئوخشىمايدۇ. Mac OS ئۈچۈن, بۇ ۋاقىتتا مەۋھۇم ماشىنا ئورنىتىشنى تەۋسىيە قىلىمەن, چۈنكى مەۋھۇم ماشىنا بىلەن ئەڭ ماسلىشىشچانلىقىنى قولغا كەلتۈرگەندەك. مەۋھۇم سانائىتى قاتارلىق ھەر خىل تەمىنلىگۈچىلەر مەۋھۇم ماشىنا يۈرەلەيدۇ, گەرچە سىز يەنە Ubuntu بىۋاسىتە ئورنىتىش, غەلبە ھېس قىلىش ئۈچۈن تەۋسىيە قىلىنغان يەرلىك مۇھىتنى ئىشلىتىشكە ئالاھىدە ئىشلىتىشكە بولىدۇ. ئەگەر Linux ياكى Windows ئىشلەتكەن بولسىڭىز, بۇ مەن تەۋسىيە قىلىۋاتقان بولسىڭىز, ئۇنى بۇ تۈر قۇرۇشنى ئەڭ ئاسانلاشتۇرۇش كېرەك. تېرمىنالىڭىزنى ئېچىڭ, ماسقەدەملەنگەنگە ئوخشاش, ھەمدە 2-قەدەمدىن كېيىن باشلاڭ. ئەگەر Windows نى ئىشلىتىۋاتقان بولسىڭىز 1-قەدەمگە ئەگىشىڭ.1-قەدەم: - پەقەت Windows ئىشلەتكۈچىلىرى Windows دا, باشقۇرغۇچى سۈپىتىدە بۇيرۇق ۋە كىرگۈزۈڭ wsl -stall
2-قەدەم: - بۇ يەردە داۋاملاشتۇرۇڭ, ياكى Windows نى ئىشلەتمىسىڭىز 1-قەدەمدىن ئاتلاڭ ئوچۇق تېرمىنالدا (Socner غا ئاساسەن ئۇستاز تېلېفونغا ئاساسەن ياكى شۇنىڭغا ياكى ئوخشاش ئىسىمدا ئاخىرلاشتۇرۇشنى, يەنى بىر تۈرنى قۇرغاندىن بۇرۇن. بىز بۇنى MKDir بۇيرۇقى بىلەن بىز بىر مۇندەرىجە قۇرىمىز. ئەگەر بىر مۇندەرىجىڭىزنى قۇرماقچى بولسىڭىز, بۇ تەۋسىيە قىلىنغان مەزمۇنلارنى قۇرسىڭىز, CD بۇيرۇقىنى ئىشلىتىپ مۇندەرىجە ۋەCD / يول / مۇندەرىجە - يول سىزنىڭ مەنزىل مۇندەرىجىسى, سۈكۈتتىكى ھۆججەت (ھۆججەتلەر). سۈكۈتتىكى يول (ھۆججەت ئىشلەتكۈچى ئىسمىڭىز (ئىشلەتكۈچى ئىسمىڭىز). سۈكۈتتىكى مۇندەرىجىگە ئۆزگەرتىش, CD ياكى CD نى كىرگۈزۈڭ ~ MKDIR مىسال - مۇندەرىجەنىڭ ئىسمى بىلەن «مىسال» نى ئالماشتۇرۇڭ
ھازىر سىزنىڭ تۈرىڭىز ئۈچۈن خىزمەت مۇندەرىجىسى بار. ئوخشىمىغان ماشىنىغا ئالماشتۇرۇشىڭىز كېرەك بولغان ئەھۋال ئاستىدا, باشقا ماشىنىغا ئالماشتۇرۇشىڭىز كېرەكمۇ ياكى يازغان كودنى ئورۇنلاشتۇرۇشىڭىز كېرەك, شۇڭا ئۇ تورغا تەييار, شۇڭا ئۇ تورغا تەييار, كېيىنكى بىر نەچچە قەدەمنى بېسىپ چىقىرىش ئۈچۈن قوليازما بەرپا قىلىمىز. ئەمما قوليازما بەرپا قىلىش بىر ئاز كود بەرپا قىلىش, ھەمدە ئىمكانقەدەر ئىمكانقەدەر پايدىلىق بولۇشى كېرەك. ئۇنداقتا ئالدى بىلەن قوليازمىلارنى ياساپ چىقايلى. قوليازما قۇرۇپ ئىجرا قىلغىلى بولىدۇ. بىز sudo, CLDO, CHMUS ۋە SHOWNE غا تېگىپ, قوليازمىنى «رەسىم» دەپ ئاتايمىز.sudo touch / USR / BIN / خالتىسى sudo chmod a + x / USR / BIN / خورىك sudo nano / usr / bin / coupt
ھازىر بىز بۇ خەتنى ئىشلىتىپ, ئۇنى ئىجرا قىلىشقا تەييار ھالەتتە بىز ئۇنى تەھرىرلەش تەييار. نەنونت چەكمەيلا تېكىستنى تەھرىرلىسىز تېكىست تەھرىرلىگۈچ, بۇ گرافىكلىق ئىشلەتكۈچى كۆرۈنمە يۈزىنى ئىشلىتىشتىن ئاسان. NANO بىلەن ھۆججەتنى تەھرىرلەش ئۈچۈن نانودىن ئاندىن ھۆججەتنىڭ يولى. قوليازمىنى چىقىرىدىغان قوليازما ياساش ئۈچۈن, ئۇ سىزنى بىرىنچى ئورۇنغا تىزىشقا خېلى ئوخشايدۇ. بىز يۇقىرىدىكىدەك ئىشلىتىمىز, تۆۋەندىكى قوللانمانىڭ نامىنى «بايان قىلىش» پارامېتىرى, $ 1. بۇ بىزگە بىزنى ئاددىيلا sudo بەلگىسىنى يېزىپ, قوليازمىسىنى يېزىش ئارقىلىق «تونۇش» قۇرالايسىز »نى ئاساس قىلىپ ھېچقانداق يېڭى قوللاشنى يارىتالايسىز. نانودىكى كود قانداق بولۇشى كېرەك:sudo touch / usr / bin / $ 1 sudo chmod a + x / usr / bin / $ 1 sudo nano / us / bin / $ 1
«نەن» نى تاقاش ئۈچۈن, بىز كونترول كۇنۇپكىسىنى تۇتالايمىز ۋە X نى بېسىپ X كۇنۇپكىسىنى بېسىپ, بىز ھۆججەتنى ساقلاۋاتقانغا, قايتا-قايتا بىزنى ساقلىيالايمىز. ھازىر بۇ ئۈچ قېتىم يېزىشنىڭ ئورنىغا بۇ ئۈچ بۇيرۇقنى تەھرىرلەش ئارقىلىق بۇ توغرىلىق بۇ يازمىنى تەھرىرلەش ئۈچۈن sudo تەسۋىر خاتىرىسىنى چاپىم تەڭشىلەيمىز. بۇ ئەسەرلەر! ھەمدە ھەر قانداق يېڭى قوليازما ئۇنى ھەقسىز تېلېفون قىلىش ئارقىلىق ئاسان ئىجرا بولىدۇ. خىزمىتىمىزنى ساقلىايلى: يېڭى قوليايىمىزنى ساقلاش ئۈچۈن زاپاس قوليازما يېزىپ ئاندىن ئۇنى تۈر مۇندەرىجىمىز, يەنە زاپاسلاش قوليازمىڭىزنى ئەسلىگە كەلتۈردى.sudo تەسۋىرلىرىنى زاپاسلاش
ھازىر, نانودا:sudo cp / USR / BIN / LEAP / LIC / LIB / TDEA / suder cp / USR / BIN / خېتى / يول / يول /
سىز MKDir بىلەن يارىتىلغان تۈر / يول / مۇندەرىجە كېيىنچە بىز يەنە بىر ئايلانما ۋە ئارقا كۆرۈنۈش يولىغا قانداق كۆچۈرۈشنى ئۆگىنىشنى, بۇ كود كەم بولسا, ئەمما ھازىر ئۇنى ئاددىيلا ساقلايلى, چۈنكى ھازىر ئۇنى ئاددىيلا ساقلايسەن. بۇ قوليازمىنى ئىجرا قىلىش ئۈچۈن, ھۆججەتنى كونترول قىلىش + x, Y ۋە قايتىش ئارقىلىق ھۆججەتنى ئىشلىتىپ, تۆۋەندىكىنى قېيىڭىزغا كىرگۈزۈپ, تۆۋەندىكىنى قېيىڭىزگە كىرگۈزۈڭزاپاسلاش
ئەگەر بۇ كىتابنى ئوقۇغاندا ۋە قېپىدا مېڭىشنى بۇيرۇسىڭىز ئابونتلارنىڭ پارولىڭىزنى توغرا كىرگۈزۈپ, ئىشلەتكۈچى پارولىڭىزنى توغرا كىرگۈزۈڭ, سىز چوقۇم بۇيرۇقنى قايتا ئىجرا قىلىشتىن بۇرۇن ئۈچ تىرىك بولىدۇ. سىز ئۈستى ۋە تۆۋەن ئوقلارنى قايتا رەت قىلىپ, ئۇلارنى قايتا بۇيرۇق ۋە تەھرىرلىيەلەيسىز, ئىككى قېتىم ھەر قانداق نەرسىنى ئىجرا قىلىشىڭىز كېرەك. ئەمەلدىن قالدۇرۇش ئۈچۈن بۇيرۇقنى تاللاش ئۈچۈن, ئەمەلدىن قالدۇرۇشنى تاللاڭ, سول تەرەپ ئاستى بېپىنى تەھرىرلەشتىن ئىلگىرى, پ ئىختىيارىنى تەھرىرلەپ, كۇنۇپكا تاختىسى ۋە كۇنۇپكا تاختىسىنى ئۆچۈرۈپ, كۇنۇپكىنى چېكىپ ئۇنى قايتىدىن ئۆچۈرۈڭ.مۇبارەك بولسۇن! سىز خىزمەت مۇندەرىجىسىدىكى ئىككى مۇھىم SHOLL STLELL قوللانمىلىرىنى زاپاسلايدىغان قالتىس زاپاس قوليازما قۇرۇشقا ئۈلگۈردىڭىز. تۈر تېخىمۇ چوڭ بولغاندا ئەتراپىدىن ئىشلارنى كۆچۈرۈشىمىز, ئەمما بۇ ئەسەرلەر ھازىرچە ئىشلەيمىز. بۇلۇتنىڭ زاپاسلىشىنى باشلاشنى ھەرىكەتلەندۈرايلى, بىز بۇ (گەرچە باشقا نۇرغۇن ئويۇنچۇقلارمۇ ئىشلىتىمىز.) Git سىز مۇلازىمېتىرغا تىزىملىتىڭ سىز سىز مۇلازىمېتىرنىڭ پۈتكۈل نۇسخىسىنى پارول ياكى كۇنۇپكىلارنى چۈشۈرىمىز. ئۇ سىزنىڭ ھەر بىر قۇرنى ساقلاپ قېلىشتىكى خاتالىق, بولۇپمۇ «ئەگەر سىز ئاپتوماتىك ھالدا بىر قۇر كود بولمىسا, بۇ بىر قۇرنى ئاپتوماتىك زاپاسلىمىسىڭىز, ئەگەر سىز ئاپتوماتىك ھالدا ئۇنى ئاپتوماتىك زاپاسلىمايدىغانلىقىڭىز ئۈچۈن, سىز ئۇنى زاپاسلىيالمىسىڭىز, سىز ئۇنى زاپاسلىمايدۇ.
ئەگەر ئۇبۇنتۇ مەۋھۇم ماشىنا ئىشلىتىپلا قالماي, بۇ ۋاقىتتا ئۇبۇنتۇ مەۋھۇم ماشىنا ياساش ئۈچۈن خىزمەت تور بېتىنى ئىشلىتىش ۋە كومپيۇتېرىڭىزدىكى بارلىق ئورالمىلارنى قاچىلىغاندا زىيارەت قىلغىنىم, چۈنكى ئۇ سىزنىڭ بارلىق ئور قاچىلارنى قاچىلىغاندا لازىملىق. بىز يېقىن كەلگۈسىدە تور مۇلازىمېتىرىغا يۆتكەلمىز, ئەمما بىز ئىتتىرىشكە چىداملىق ساقلانمايدىغان تور مۇلازىملىرىمىزنىڭ ئارقىسىدا كەم دېگەندە بىر تۈركۈم ئامانەت بارلىقىنى ۋە Linux يۈرۈشلۈكلىرىنى قوللاندۇق. ئەگەر يەنىلا Mac OS نى ئىشلەتمەكچى بولسىڭىز, توردا زۆرۈر ئورالمىلارنى ئورنىتىشىڭىز ۋە ئورنىتىشىڭىز مۇمكىن, ئەمما بۇ كىتاب ياكى يۈرۈشلۈكلەرنى تاللىشى مۇمكىن.بۇيرۇق Sudo خورو دەپ تەسۋىرلەش ئارقىلىق خىزمىتىمىزگە ئەمەل قىلىش ئۈچۈن زاپاس قوليازمى ئارقىلىق زاپاس قوليازمى ئارقىلىق.
# ... git in -all git achings -m "amo on git ئىتتىرىش -u ئەسلى ئۇستا...
يەنە بىر قېتىم كونترول قىلىڭ x نى ساقلاش.sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
ھازىر بىز بۇ تۈرنىڭ بىرلا ۋاقىت سەپلىمىسىنى قىلىشىمىز كېرەك. چۈنكى ئۇزۇن ئۆتمەيلا لاي سالاھى بولىدۇ, بىز ئۈچىيى ئامبىرىدىن ئورۇنلاشتۇرساق, ھەر بىر ھەرىنى ھاسىل قىلىمىز, ئەمما ئورۇنداشلىرىمىزنى قۇرغاندا بۇنىڭ ئېسىۋتىمىز. باشلاش ئۈچۈن, توغرا مۇندەرىجىمىزدە مېڭىپ, گىت ئامبىرىنى قوزغىتىپ, SSH كۇنۇپكىسىنى ھاسىل قىلايلى.cd / with / by / colub git init git تارماق ئاپپارات Ssh-Covergen
بىز ssh-stengen نى يازغاندىن كېيىن, يېڭى ئاچقۇچ .sSh دېگەن ھۆججەت قىسقۇچتا Home ئۈسكۈنىسىدە ساقلاش كېرەك. ئۇ كىملىك دەپ ئاتىلىدۇ. بۇ ئاچقۇچنى تاپايلى ۋە كۆپەيتەيلى. ئۇنى كۆرۈش,sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
cd ~
مۈشۈك .ssh / id_rsa.pubئەڭ ئاخىرقى بۇيرۇق تەرىپىدىن قايتۇرۇلغان تېكىستنى كۆچۈرۈپ, GTIT تەمىنلىگۈچىڭىز (ئەڭ سۆيۈملۈك Github) بىلەن ھېساباتىڭىز بىلەن ھېسابات قۇرۇڭ. ھېساباتىڭىز بولغاندىن كېيىن, تىزىملىكنى چېكىپ, SSH كۇنۇپكىسىنى چېكىپ, SSH ۋە GPG كۇنۇپكىسىنى قوشۇشتىن بۇرۇن, SSH ۋە GPG كۇنۇپكىسىنى قوشۇشتىن بۇرۇن, SSH ۋە GPG كۇنۇپكىسىنى قوشۇشتىن بۇرۇن. SSH كۇنۇپكىسىنى قوش چېكىپ, ئۇنى چاپلاپ, ئۇنى ئۆيگە قايتىڭ ۋە گەرىيىگە قايتىشتىن بۇرۇن, بۇ ئاۋازىنى ساقلاش ۋە يېڭى ئامبار قۇردى. بۇ باشقا بىر ئۈسكۈنىلەرگە ئوخشايدۇ, سىز ئۇلارنىڭ ھۆججەتلىرىنى ئوقۇشىڭىز كېرەك. يېڭى ئامباردا سەپلىمىسىدە, ئى ھەققىڭىزنى چۈشەندۈرۈش ئىسمىڭىزنى بېرىڭ ھەمدە ئېلان قىلماقچى ياكى ئېلان قىلماقچى - ئۇنى تەڭشەش ئۈچۈن جەزملەشتۈرۈشى كېرەك. ئامباردا قىلىنغاندىن كېيىن, كلوننى SHRL ئادرېسى بىلەن كۆپەيتىپ, تۆۋەندىكى بۇيرۇققا چاپلاڭ.
GIT يىراقتىن Git: // ... (يىراقتىكى URL)sudo ascript backup
ھازىر سىز CD بىلەن ئامبىرىڭىزغا قايتسىڭىز بولىدۇ, سىز بۇنى پىششىق دەپ قارايسىز. زاپاس قوليازمىڭىزنى زاپاسلاڭئۇلۇغ! ھازىر بىز پەقەت كودقا ئېرىشەلەيمىز. ھازىر DJANANGO نى قاچىلىايلى, بىزدە باش ۋە گىتتەكنى ياخشى كۆرەيلى. DJANNO بىزنى ئاپتوماتىك ھالدا يۇمشاق دېتاللىرىمىزمۇ بولىدۇ, ئەمما دجاڭگو تېخىمۇ ئاددىي بىخەتەر بىخەتەر بىخەتەر بىخەتەر بىخەتەر بىخەتەر ھالدا تېخىمۇ ئاددىي بىخەتەر بولۇشى كېرەك (چەكلىگىلى بولىدۇ ».
ئۇبۇنتۇدا يۇمشاق دېتالنى ئورنىتىش ئۈچۈن, Sudo APT- غا ئېرىشىشنى ئىشلىتىمىز. ئالدى بىلەن, بىز ئاللىبۇرۇن بار يۇمشاق دېتالنى يېڭىلىايلى ۋە يېڭىلىايلى. بۇنى sudo apt-UP-GETNET ۋە SUDO APT-LING -Y بىلەن تاماملىنىدۇ. ئۇنىڭدىن كېيىن, Python ۋە مەۋھۇم مۇھىتقا قاچىلايلى, تۆۋەندىكى بۇيرۇقلىرىمىزنىڭ ئۆيىنى قاچىلىايلى: sudo ApT- ئېلىڭ Python3-WHETHVsudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
بۇ دوپپا مىسالىدا, ئۇبۇنتۇدىكى يۇمشاق دېتال جەھەتتە DJango بىلەن بىللە مېڭىشىڭىز كېرەك. Windows ۋە لىنۇكىس بۇنى بىر قەدەر بىۋاسىتە, ئەمما Mac كومپيۇتېرىڭىز ئۈچۈن مەۋھۇم ماشىنا ۋە ھەقلىق يادىكارلىقلارنى قاچىلىماقچى ياكى ئۈستىدىكى قەدەمدە ھەقسىز ياكى يۇرتىغا قايتۇرۇشنى خالامسىز? ئۇبۇنتۇ بۇ تەرەپتە تەنقىد بولۇپ, بۇ يۇمشاق دېتال بولۇپ, تورلار يۈگۈرۈشى. ئۇلارنى ئاخىرلاشتۇرۇش يۇمشاق دېتالى بىلەن تور بېكەتلەر كۈتۈۋالالايدۇ.Django غا كولاپ قويايلى.
مۇندەرىجىمىز بىلەن يەنە CD:backup
Python -m WVEV WVEV رېنۋ # كود ساقلانغان مەۋھۇم مۇھىتنى بارلىققا كەلتۈرىدۇ
مەنبە WVEV / BIN / ACTIVATE # مەۋھۇم مۇھىتنى قوزغىتىدۇ
Pip Sport django
DJANGO-باشقۇرغۇچى MySite نى قوزغىدى. # MySite بولسا مەن ھازىرقى مۇندەرىجىدىن باشلانغان تۈر.كود ساقلانغان مەۋھۇم مۇھىتنى بارلىققا كەلتۈرىدۇ
مەۋھۇم مۇھىتنى قوزغىتىدۇبۇ يەردە MySite بولسا مېنىڭ ھازىرقى مۇندەرىجىدىن باشلىنىمەن.
DJANNO ئامېرىكىنى باشلىدى, چۈنكى DJango تور مۇلازىمېتىرىنى ساھىبخانلىق قىلىۋاتىدۇ, بىز ئاساسىي يەرلىك تور بېكەتكە ئېرىشىش ئۈچۈن بارلىق نەرسىلەرنى ئىشلەۋاتىدۇ. ھازىر DJango قاچىلانغانلىقىمىزغا ئورنىدىن تۇرۇپ, تەڭشەكلەرنى ئازراق ئىشلىتەلەيدىغان تەڭشەكلەرنى تەھرىرلىيەلەيمىز. بىرىنچى, يېڭى ئەپ ھاسىل قىلايلىPython Mondica.py startappeapp feed
بىرىنچى ئەپنىڭ يەم-خەشەك دەپ ئاتىلىدىغانلىقىغا دىققەت قىلىسىز. بۇ ئەپنى خالىغانچە چاقىرىش كېرەك, ئەمما بىز ھەر قېتىم بۇ دېتالنىڭ ئىسمى چوقۇم كودقا ماس كەلگەنگە ماس كېلىشى كېرەك. يېڭى ئەپ قوشۇش بولسا, بىز تەڭشەكلەرنى دائىم تەھرىرلەپ, قوزغى ئېتىش دېتانىيلىقى. Nano نى ئىشلىتىش,نانو ئەپ دېتالى / تەڭشەكلەر .py
تەڭشەكلەر ئىچىدە ئورنىتىڭ, قاچىلاش_ap نى تېپىش ۋە [] 3 قۇرغا ئايرىڭ. قۇرۇق مەركەز لىنىيىدىكى تۆت بوشلۇقنى ئىشلىتىش, «يەم» ياكى ئەپنىڭ ئىسمى. تەڭشەكنىڭ بۇ بۆلىكى.# قاچىلانغان_AppS = [
'feed',
]
ئۇنتۇپ قېلىشتىن بۇرۇن, دانگاڭگونىڭ ئىشلەۋاتقانلىقىنى سىنايلى. بۇيرۇق Python باشقۇرۇپ: ئاندىن كودنى ئىجرا قىلىدىغان كومپيۇتېرنى ئىجرا قىلالايمىز, 8000-ئايلانما دېتال بىلەن توركۆرگۈگە ئوخشاش ئالاقىلىشىدۇ () قوشۇمچە بۇيرۇق بىلەن ئوخشاش.ھازىر, بىر قىسىم Python كودىنى يېزىپ قېزىۋېتەيلى. دجياڭدا ئۈچ ئاساسلىق زاپچاس بار, ئۇلارنىڭ ھەممىسى تەرتىپلىك ئىجرا قىلىدۇ. زاپچاسلار مودېل, كۆرۈش ۋە قېلىپنىڭ ئايرىم-ئايرىم ھالدا, ھەر بىرىنىڭ ئايرىم-ئايرىم ھالدا ھەر بىرى ئىشلەتكۈچىگە يەتكۈزۈلۈپ, ھەر بىرىنىڭ يۇقىرى ۋە تۆۋەن سەۋىيىدە.
بۇ مودېل سانلىق مەلۇماتقا ئېرىشىش, رەتلەش ۋە كۆرسىتىش ئۈچۈن خەتنى ساقلايدىغان كود.بۇ ھەرىكەت مودېلنىڭ قانچىلىك قويۇلغانلىقىنى, كونترول قىلىنغان ۋە ئۆزگەرتىلگەنلىكىنى قارار قىلدى, ھەر بىر كۆزنەكنى بىۋاسىتە ئىشلىتىشىگە ماس كېلىدۇ.
قېلىپ, قېلىپ تىللىق تىلى دەپ ئاتىلىدىغان قوشۇمچە مول ۋە پەۋستىللار بىلەن HTML كودى. كۆزنەك ۋە مەزمۇن ۋە ئۇچۇر (usuall strings ۋە پۈتۈن سان) بىلەن تولغان قېزىش.cd /path/to/directory
git init
git branch -m master
ssh-keygen
DJANGO نىڭ باشقا زاپچاسلىرى بار, ئەمما بۇنىڭ ئىچىدە, ئەمما چەكلەنمەيدۇ:تەڭشەكلەرنى مۇزاكىرە قىلغاندەك تەڭشەيدىغان تەڭشەكلەر.
URL لار, بۇ ئىشلەتكۈچىنىڭ تور پروگراممىنىڭ كونكرېت قىسىملىرىغا يەتكۈز بولىدىغانلىقىنى كۆرسىتىدۇ.cd ~
cat .ssh/id_rsa.pub
شەكىللەر, مۇلازىمېتىرغا ئەۋەتىلگەن ئۇچۇرلارنى بىر تەرەپ قىلىدىغان ۋە سانلىق مەلۇماتقا توغرىلانغانلىقىنى ئېنىقلايدۇ. بۇلار مۇلازىمېتىر تەرەپتىكى بىر تەرەپ قىلىش ئاساسى, كومپيۇتېر دۇكىنى, كۆپىنچە ئۇچۇرلارنى قوبۇل قىلالايدۇ, نۇرغۇن ئۇچۇرلارنى قوبۇل قىلالايدۇ (ئادەتتە تەكشۈرۈش رامكىسى) نى قوبۇل قىلالايدۇ.قېلىپلار, ئەينىزم ۋە HTML نى Python ئۈچۈن Python ئۈچۈن PAP, دەل ئىگىلىرى بىلەن تور بەتنى ئىگىلىيەلەيدىغان ۋە يىراق ئۈسكۈنىدە پايدىلىق ھالدا تورنى زىيارەت قىلالايدىغان ۋە ئۆزگەرتەلمەيدىغان ھەر قانداق مۇلازىمەتنى زىيارەت قىلالايدۇ ۋە خاتىرىلەشنىڭ ھاجىتى يوق.
ئادەتتە JavaScript, ئۇنىڭ مۇلازىمېتىرغا مۇلازىمەت قىلىدىغان كىتابلار بىلەن مۇناسىۋەتلىك ۋە مۇناسىۋەتلىك.git remote add git://… (your remote URL)
مۇلازىمېتىرغا مۇلازىمەت قىلىدىغان مېدىيا ھۆججىتى ياكى سىرتقى ساھىبجامال (بىر چېلەك) بىلەن يېزىلغان.ئوتتۇرا يۇمشاق دېتال, بۇ يەردە ئوخشاش ۋاقىتتا, ئوخشاش ۋاقىتتا ئىجرا بولىدىغان ۋە «ئۆز ئىچىگە ئالغان» دەپ قارالغان كود.
مەزمۇن بىر تەرەپ قىلغۇچ, قايسى كۆرۈنۈشنىڭ مەزمۇنسى ۋە قوشۇمچە مەزمۇن قوشۇشتا ئىشلىتىلىدۇ.ئىشلەتكۈچى ياكى تەلەپنى كۆرۈشتىن بۇرۇن مەلۇم تەلەپلەرنى دەلىللەيدۇ, بۇ قاراش.
ئىستېمالچىلارنىڭ ئالاقىلىشىشنىڭ قانداق بىر تەرەپ قىلىدىغانلىقىنى ۋە جاۋاب قايتۇرۇشنى قانداق بىر تەرەپ قىلدى.باشقۇرغۇچى قىلىپ بەلگىلەش, ئۇ DJANGO باشقۇرۇش بېتىدە تەپسىلىي كونترول قىلالايدۇ, ئۇ سانداندا سانداندا تور بېكەتتە بىزئەتكە خەتەرلىك كۆرۈنمە يۈزى باشقۇرۇلىدۇ.
كاتېرى, DJANGNOU نىڭ يۈرۈشلۈك ۋەزىپىلىرىنى ئېنىقلاپ, كېيىنكى ۋەزىپە ياكى كود لىنىيىسىگە قايتىشتىن بۇرۇن ئىجرا قىلىشنى باشلايدۇ.دجاڭدو باشقا نۇرغۇن زاپچاسلىرى كۆرەلەيدۇ, بۇ يەردە تەپسىلىي مۇلاھىزە قىلىمىز. DJANGO تېخىمۇ ئىقتىدار قىلىش ئۈچۈن نۇرغۇن ئۇسۇللار بار, پېتىر, كىرىش ئېغىزى قوشۇشقا تېگىشلىك, پاخانگونى ۋە نۇرغۇن يۇمشاق دېتاللارنى كېڭەيتىش, بولۇپمۇ نامايىشتا ئىقتىدارلار, بۇ دېتال ئىجرا قىلىنغان بولۇشىدىن كېيىن, بۇ كود ئىجرا قىلىنغان بولىدۇ. ئىقتىدارلىرىنى كۆرۈش ئاچقۇچ, چۈنكى ئۇلار ئادەتتە مەلۇم URL ئەندىزىسىگە ماس كېلىدىغان ھەر بىر كودنى ئېلان قىلىدۇ ياكى مۇلازىمېتىرنىڭ بىر بۆلىكى.
بىرىنچى, كۆرۈش ئىقتىدارى ئۈستىدە ئىزدىنىڭ. فۇنكسىيەنى كۆرۈش ئۇسۇلدا ئىشلىتىلىدىغان ئىمپورتى بىلەن باشلىنىدۇ, دائىملىق ئىقتىدار ئېنىقلىمىسى ياكى دەرسلەرنى ئىشلىتىڭ. ئەڭ ئاددىي كۆز قاراشلار ئىقتىدار ئېنىقلىمىسى تەرىپىدىن بەلگىلىنىدۇ, ھەمدە ئاساسىي ئۇسۇل بىلەن بىرنى ئاساسىي قېلىپقا قايتىڭ. ئاساسىي كۆرۈنۈشنى «ياخشىمۇسىز دۇنيا» نى قايتۇرۇۋېلىشتىن باشلايلى. ئېسىڭىزدە بولسۇنكى, ھەر قېتىم ئېلاندىن كېيىن باياندىن كېيىن كودنى قوشسىڭىز, ھەر قېتىم كودنى قوشسىڭىز, ھەر قېتىم سىز چوقۇم سىزنىڭ ئىقتىدارىڭىزغا ئىلتىماس قىلسىڭىز 4 بوشلۇق بىلەن 4 بوشلۇق بىلەن قوشىشىڭىز كېرەك. بۇلارنىڭ ھەر بىرىنىڭ نېمىدىن ئەنسىرەيمىز.تور بېكىتىمىز مۇندەرىجىسىدىن باشلاپ, نانو ئارقىلىق تۆۋەندىكى قۇرلارنى تەھرىرلەڭ ۋە ھۆججەتنىڭ ئاخىرىغىچە تۆۋەندىكى قۇرلارنى قوشۇڭ.
DJANNGO.HTP ئىمپورت http://rathttp Def ياخشىمۇسىز (تەلەپ): BREAW FORTPONSE ('ياخشىمۇسىز دۇنيا')DJANGO نىڭ httpressponse بولسا تېكىست تىزمىسى بىلەن جاۋاب قايتۇرۇۋالىدۇ, ئېچىۋېتىش ۋە يېپىلىش بىلەن ئىپادىلىنىدۇ. ھەر قېتىم ئۇچۇر ياكى دەرسكە ئوخشاش ئىقتىدار ياكى دەرسكە يەتكۈزگەندە, تىرناق (, ئېچىۋېتىش ۋە تاقاش) غا يەتكۈزسىڭىز بولىدۇ.
بۇ بىزنىڭ قارىشىمىزچە, بىز سىزنىڭ قارىشىمىزغا تېخى كۆرۈشىمىز كېرەك. ئەلۋەتتە, بىز بۇ مۇلازىمېتىرنىڭ ئوچۇق بولسا, بىز يەنىلا قاراشلارنىڭ چوقۇم كۆرسىتىلىشى كېرەك. ئەپ / urls.py.py.py نى ئېنىقلاشتىن باشلايلى, كېيىن يول گۇرۇپپىسىغا كىرىمىز.python -m venv venv # ئەپ / URL UPY دا.py نى باشتىن كەچۈرگەن قاراشنى باشتىن كەچۈرگەندىن كېيىن ئىمپورت بايانلىرى باردىن كېيىن بىر قۇر قوشۇڭ.
source venv/bin/activate # يەم ئىمپورت قىلغۇچىلىرىنى يەم-خۇرام كۆرۈنۈشتىن
django-admin startproject mysite . # ھازىر, كۆرۈنۈش ئەندىزىسىنى ئېنىقلاپ قويايلى. ئەندىزىدە كۆرۈنگەن رەسىم بار, ئۇ مۇلازىمېتىردا تاختا كومپيۇتېرغا (يول باشلاش ئاساسى بار بولۇپ, كۆرۈش ئەندىزىسىگە يۆتكەش بولسا, ئۇنداقتا ئۇنىڭ ئىسمى ئۆزگەرتىلىدۇ, شۇڭا ئۇنىڭ قېلىپلاشقان ياكى تېخىمۇ لوگىكىلىق ئىسىم ئېلىش ئاسان. بۇ ئىشلارنى بۇ خىل ئىشلارنى قىلىش ۋە جانلىق بولۇشنىڭ مەنىسى, چۈنكى كودلىمىڭىز قىممەتلىك ۋە خىزمەتكە ئېرىشىش ئۈچۈن جانلىق ۋە نامايان بولىدۇ. بۇ سىزنىڭ كۆز قارىشىڭىز ئوخشايدۇ, بۇنى TOLPATERTERS = [ئەپ / URL لارنى ئىشلەتسىڭىز بولىدۇ. ئېكران ئەندىزىسى يۇقىرىدا بايان قىلىنغان ئۈچ زاپچاس بەلگىلەش, ھەمدە يول دەپ ئاتىلىدىغان ئىقتىدار. URL ئەندىزەڭىز بىر تىزىملىك, ئۇنداقتا ھەر بىر نەرسىنى پەش بىلەن كىرگۈزۈشكە كاپالەتلىك قىلىڭ, چۈنكى ھەر بىر كىشىنىڭ ئايرىم-ئايرىم ھالدا ھەر بىرىنى ئايرىپ چىقىڭ. ھەر بىر تۈرنى يېڭى قۇرغا چىقىشى كېرەك, بۇ يەردىكى تۆت بوشلۇق بىلەن يەنە تۆت بوشلۇق بىلەن يەنە بىر قېتىم .py. بىز قۇرۇق تىزما ئىقتىدار بىلەن قاراشنى ئېنىقلاپ, تور مۇلازىمېتىرىدىكى پائالىيەت مۇندەرىجىسىدە يۈگۈرۈپ قاراشنى تەڭشەش ئۈچۈن. Urls.py ھازىر بۇنىڭغا ئوخشايدۇ:
يەم ئىمپورت قىلغۇچىلىرىنى يەم-خۇرام كۆرۈنۈشتىن
URLPATTERNS = [
يول ('', يەم سۈپىتى. Who, name = 'hella'),
]بۇ پۈتۈنلەي تۇراقلىق بولغان دانىخانگو بىلەن تور بېكەت قۇرۇشنىڭ ئاساسى. تېخىمۇ ھەرىكەتچان ئۇچۇرلارنى ئېلىپ بېرىش ئۈچۈن, رەسىم, سىن, ئاۋاز, ئاۋاز ۋە تېخىمۇ كۆپ بولغاچقا, ئۇنداقتا بىز بىر دىسكىنى ئىشلىتىش كېرەكلىكىنى بىز بۇنىڭدىن كېيىن ئىزدەيمىز. چۈنكى ھازىر, كودنى تەكشۈرەيلى ۋە مۇلازىمېتىرنى ئىجرا قىلايلى. خاتالىق ئۈچۈن كودنى تەكشۈرۈش ئۈچۈن, ئىجرا قىلىڭ:
Python Mondroy.py Custypython manage.py startapp feed
ئەگەر خاتالىق ئۇچۇرى بولسا, ئەپلىرىڭىزگە بەرگەن ئۆزگەرتىشلەرنى ئەستايىدىللىق بىلەن قايتا تەكشۈرۈپ تەكشۈرۈشىڭىز ئەستايىدىللىق بىلەن قايتا قاراپ چىقىسىڭىز, شۇنى كۆرۈپ, ئوڭۇشسىزلىق, باشقا نەرسە ئۆچۈرۈۋېتىدىغان ھەرپ ياكى باشقا نەرسە يوق. خاتالىق ئۇچۇرىنى ئوقۇش (ئەگەر بار بولسا ياكى بىر قۇر نومۇرى بىلەن بىللە قۇرغان ھۆججەتنىڭ يولىنى كۆرەلەيسىز, شۇڭا ئۇ ھۆججەت ۋە سىزىققا قاراڭ, شۇڭا ئۇ ھۆججەتكە قاراڭ, ئۇ يەردە بىر نەرسىنى ئوڭشىيالايسىز. ئەگەر بۇ مەسىلىنى ئوڭشاپ كەتكەن بولسىڭىز, يۇقارقى بۇيرۇقنى قايتا ئىجرا قىلىڭ. يۇمشاق دېتالىڭىز ئىجرا بولۇۋاتقان ۋە ئىشلەۋاتقاندا, چىقىرىش »سىستېما تەكشۈرۈشىنىڭ ھېچقانداق مەسىلە ئىكەنلىكىنى كۆرىسىز. ھازىر مېڭىشقا تەييار. مۇلازىمېتىرنى ئىجرا قىلىڭ:Python Monther.py Runserver 0.0.0.0.0.0:8000
ھازىر توركۆرگۈ ئېچىڭ ۋە http: // localhost: 8000. سىزنىڭ تىرناق ۋە تىرناقنىڭ تىرناقلىرى ۋە نەقىلكىدىكى تىرناق ۋە نەقىللەر. بۇ پەقەت ئاساسىي بىر مىسال, ئەمما ئۇنى يىراقلاشتۇرسىڭىز, ئەگەر سىز ئۇنى يىراقلاپ, لىنۇكىس ۋە پىشا ۋە داڭدو ۋە دانىخون ۋە دجاڭدونىڭ ۋەتەنپەرۋەرلىكىنى چۈشىنىسىز. بەزى ساندان مودېلىغا تېخىمۇ چوڭقۇر ساندۇقنى قېزىپ, ئۇچۇر ساقلاشتا PYLOT سىنىپىنىڭ كۈچىنى ئىزدىلىلەيلى. ئاندىن, بىز تور بېتىمىزنى تولۇق تولۇق, JavaScript ۋە ماشىنىنى ئۆگىنىشتىن ساقلاشتىن بۇرۇن HTML ۋە CSS دا قاتتىق تۇتۇشقا باشلايمىز.nano app/settings.py
سىنىپتىكى مودېللار. NANO نى ئىشلىتىش, ئەپ / مودېلنى تەھرىرلەش .pypy ۋە يېڭى سىنىپ قوشۇڭ. بىر سىنىپ سىنىپ ئېنىقلىمىسى بىلەن ئېنىقلىنىدۇ ۋە بۇ ئەھۋالدىن بولغان زىددىيەتلىك بىر دەرىجىدىن تاشقىرى كۆپۈكتىن ئۆتتى. سىنىپنىڭ ئىسمى سىنىپ ئېنىقلىمىسى ۋە سىنىپ ئېنىقلىمىسى) ئىشلىتىلىدۇ. سىنىپىمىز بىز ئۇنى ئەسلىگە كەلتۈرۈش ئۈچۈن ئىشلىتىدىغان ۋە ئۇنى خورىتىپ تۇرۇڭ, ئۇ يەنە بەزى ئۇچۇرلارنى ساقلايدىغان تېكىست مەيدانىغا ئېھتىياجلىق. كېيىن بىز ۋاقىت بەلپەتلىك, ھۆججەت, ھۆججەت, ئاۋاز مەھسۇلاتلىرى (كودىمىزدىكى قوللىنىشچانلىقى مودېلغا نېمە قىلىش كېلىپ ياساپ, ئۇنى رەتلەشكە ياردەم بېرەلەيدۇ ياكى ئۇنى مۇلازىمېتىرغا تەڭگە كەلتۈرەلەيدىغان مىسال, مودېلنى مۇلازىمېتىرغا تىكىپ تەكشۈرتەلەيدىغان بىر مىسال. تۆۋەندىكى كودنى يېشىپ بېرەيلى:DJANNANGO.DB ئىمپورت تىپىدىن 2-قوشۇمچە ماتېرىياللار سىنىپ يازمىسى (مودېللار. Models.Model): # بىزنىڭ سىنىپىمىزنىڭ ئېنىقلىمىسى ID = مودېل. Text = Modelse.Texfield (dowerf = '' ') # سىنىپىمىزدىكى ئۇلانمىلار, بۇ ئەھۋالدا, بەزى تېكىستلەر, بەزى تېكىستلەر, بىر قىسىم تېكىست, تۆھمەت چاپلاش.
سىنىپىمىزنى بەلگىلەشكە ئىشلىتىلىدىغان ئىمپورتINSTALLED_APPS = [
'feed',
]
بىزنىڭ سىنىپىمىزنىڭ ئېنىقلىمىسىبىزنىڭ مودېلىنىڭ كىملىكىمىزنىڭ ئۈلگىسى, بىز بىزنى بىر مودېلنى چىقىرىپ, ئۇنى ئۆزگىچە ساقلايدۇ, بىز ئۇ قۇرۇلغاندىن كېيىن مودېل بىلەن ئۆز-ئارا تەسىر قىلىشىمىز كېرەك.
سىنىپ دۇكىنىمىزنىڭ ئۇيۇشمىسى, بۇ ئەھۋالدا, بەزى تېكىستلەر, قۇرۇق قىستۇرمىغا تەۋرىنىش.تاماملاش ۋە تاماملاشتىن بۇرۇنلا ھۆججەتنى تاقاڭ.
باشقا نۇرغۇن ساھە ۋە تاللانمىلار بار, بۇ دەرسنى ئەپ كۈچىمىزدەك يېڭىلىغاندا بۇ سىنىپنى يېڭىلىغاندا ئىزدىنىمىز, ئەمما بۇ بىر ئەپ قۇرۇشنىڭ بىر قىسىم تېكىستنى يوللاشنىڭ ئاساسلىق ئېھتىياجى. قانداقلا بولمىسۇن, بۇ مودېل يالغۇز ئىشلىمەيدۇ. ئىلگىرى تەسۋىرلەنگەندەك, بۇ مودېلنى ئىشلەش ئۈچۈن ئاجۈزلۈك قاراش ۋە خاس ULIC ئارىلاشمىنى, بىز يەنە قېلىپى بار شەكىل لازىم ». ئالدى بىلەن جەدۋەلنى تەتقىق قىلايلى.بىر جەدۋەلنى ئېنىقلاش, ئەپ / جەدۋەلنى تەھرىرلەش ۋە تۆۋەندىكى قۇرلارنى قوشۇڭ. بىز ئىككى ئىمپورت, جەدۋەل سىنىپىمىز, شۇنداقلا شەكىلسىز مودېل بولۇشىمىز (cart.models.plase usىلىلىلانە), ھەمدە بىر تۈركۈم بىر بۆلەك مېتا قويۇلغان مېتا دەپ ئاتىلىدىغان مېتا دەپ ئاتىلىدىغان مېتا دەپ ئاتىلىدۇ. بۇ جەدۋەلدە تەلەپ, مودېل ياكى باشقىچە ئۇچۇرغا ئاساسلانغاندا ئۇنى دەسلەپكى قەدەمدە ئىقتىدارغا يولۇقلىيالايدۇ, ئۇنى تەكشۈرۈپ, بۇنىڭدىن كېيىن ئىزدىنىمىز.
مودېل شەكىللىرى بەك پايدىلىق بولۇپ, ئۇ مودېل قۇرالايدۇ, چۈنكى ئۇلار مودېل قۇرالايدۇ ياكى يەنە بىر مودېل قۇرالايدۇ, شۇڭا ئۇلارنى ھەر ئىككىسى تەھرىرلەيمىز. تۆۋەندىكى شەكىلدە ئېنىقلىما بېرەي.DJANNGO ئىمپورت شەكلىدىن يەم - خەشەكتىن سىنىپ يوللىنىشى (جەدۋەل. Minde.modelf): Text = جەدۋەل. بوشلۇق (كىچىك قورالى = شەكىللەر = جەدۋەللەر. CRAST META: Model = POST مەيدان = ('text',)
بۇ بىر خىل شەكىل ۋە مودېلنىڭ قانداق بولىدىغانلىقىنىڭ ئاساسى. بۇ مودېل شەكلى يازمىنى دەرھال يولغا قويۇپ ياكى تەھرىرلەشكە, ئۇنىڭدا بار بولغان تېكىستنى ئۆزگەرتىشكە ئىشلىتىلىدۇ. بىز بۇ جەدۋەلنى كېيىنكى كۆرۈنۈشكە بىر تەرەپ قىلىشقا قارايمىز. ئالدى بىلەن, كۆچمەنلەرنى ئالايلى ۋە كۆچۈرۈپ كۆچۈپ كېلەيلى, شۇڭا بىزنىڭ كودىمىز ئىجرا بولغاندا مودېل بىلەن ئۆز-ئارا تەسىر كۆرسىتەلەيدۇ. بۇنى قىلىش, تۆۋەندىكى بۇيرۇقلارنى ئىجرا قىلىڭ:python dive.py گىرىم بۇيۇملىرى Python Mondrot.py نى كۆچۈرۈڭ
بۇ بىر مىنۇت ۋاقىت سەرپ قىلىپ, بىر قېتىم شۇنداق قىلاتتى, ئۇ ھەر بىر قېتىم يۇمشاق دېتال ياكى ھەر قانداق جايدا باشقا يەردىكى بۇ مودېلنى زىيارەت قىلىشىڭىزغا يول قويىدۇ. بىزنىڭ مودېلىمىزنى كۆرەلەيدىغان يەرنى كۆرۈش ئارقىلىق داۋاملاشتۇرايلى. يەم-خەشەك / كۆرۈنۈشلەرنى تەھرىرلەش. باھاسى ۋە تۆۋەندىكى كودنى قوشۇڭ. # بەلگىدىن كېيىن بىرەر نەرسە قوشما, ئۇ كود بۇ كود ھەققىدىكى ئۇچۇرلارنى ئىپادىلەشكە ئىشلىتىلىدىغان باھا. بىز بىزنىڭ مودېلىمىزنى ئىمپورت قىلىش باشلايمىز, ھەمدە ئۇنى قېلىپەتتە كۆرسىتىلىدىغانلىقى ئۈستىدە بايان قىلالايدىغان> ئۇنى قوشۇش. كېيىنكى قەدەمدە, بىز ۋە مودېلنى ۋە مودېلنى كۇنۇپكىغا ئاساسەن يېڭى ھۆججەت تۈزۈپ, ئۇنى مۇلازىمېتىرغا يوللىيالايدىغان قېلىپ بەرپا قىلىمىز. بۇ ئاۋاز مۇرەككەپ, ئۇنداقتا ئۇنى قەدەم باسقۇچ بىلەنلا قويايلى. قاراشنى ئاخىرلاشتۇرۇشتىن بۇرۇن, مودېلنى ئايلاندۇرىدىغان قېلىپ ۋە ئۇنىڭ قېپىدا يېڭى يازمىلارنى ياساۋاڭ »دەپ قېلىپلاشتۇرۇشقا كاپالەتلىك قىلايلى. بۇ قاراشنىڭ قانداق قاراشتا:يەم - خەشەكتىن DJANGO.STORTT نىڭ ئەكسىچە, قايتا نىشانلاش DJANGO.URLS نىڭ ئەكىرىش Def Feed (تەلەپ): يازمىلار = outport.Ongs.Obs.all () # سانداندىكى بارلىق يازمىلارنى سوراش قايتىش 'Share': يازمىلار, })
سانداندىكى بارلىق يازمىلارنى سوراشبۇلارنىڭ ھەممىسى تۆۋەنگە يەتكۈچە ناھايىتى ئاددىي كۆرۈنىدۇ. Re Remener, Optive نىڭ ئورنىغا FIP جاۋاب قايتۇرۇلغان قىممەت ئالدىنقى ئورۇنغا قويۇلغان قىممىتىنى ھەمىشە ھەل قىلالايدۇ, بۇ ئارقىلىق سانداندىكى يازمىلاردا) قوبۇل قىلىدۇ, ھەمدە ئىقتىدار بەلگىلىگەن مالىملىقتىن پايدىلىنىدۇ. قېلىپ سىز PiTHJ2 دەپ ئىسىم قويغۇچى دەپ ئاتىلىدىغان جىنياغا ئىسىم قويغۇچى دەپ ئاتىلىدۇ دەپ ئىسىملىك بىر تىل بولىدۇ.
قېلىپلارنى قۇرماقچى بولۇش ئۈچۈن, يەم-خەشەككە ئىككى مۇندەرىجە قىلىڭ.mkdir feed / قېلىپ mkdir feed / قېلىپ / بېقىش
كېيىنكى, يۇقىرىدىكى مۇندەرىجىگە مياز, ھەقسىز / قېمش / يەم - خەشەك ۋە بۇ مىسالغا كود قوشۇش. بۇ مىسالدا قېلىپقا قاراپ باقايلى.Feed {% يازدىكى يولدا%} {{Shite.text}} {% endfores%}
بۇ ئىنتايىن ئاددىي قېلىپ. ئۇ ئېچىۋېتىش ۋە HTML بەلگىسىنى قاپلىدى, رىۋايەت نامىغا ئۈلگە بەلگە, ئېكران بەلگىسى قاتارلىق بوشلۇق بەلگىسى, ئېكراندا كىچىك قۇر مالغا قوشىدۇ, ئۇششاق خەتكۈچتە ھۆججەتلەرنى قېلىپ بەلگىلىك يازمىدا يازما بەلگىلەش تىزىملاتتى. يازمىلارنى كۆرسىتىش ئۈچۈن كېرەكلىكلەرنىڭ ھەممىسى, ئەمما سانداندا ھېچكىم يوق. قېپى بىلەن ئازراق قۇرايلى. بىز باشقۇرغۇچى بىلەن قوڭغۇراقنى ئىجرا قىلالايمىزPython Mondrot.py Shell
ھازىر, بىزنىڭ خىزمەت ھالىتىمىزنى ئەكىرىپ قويايلىيەم - خەشەكتىن
ئۇنىڭدىن كېيىن, بىز سىزىق ۋە قېپىدىن چېكىنىپ, ئاددىي يازما يارىتىمىز. بۇ تىزما بىر نەرسە, ئۇزۇنلۇقتىكى تېكىست سۈپىتىدە بىر نەرسە بولالايدۇ.Post.Ongs.crims.create (text = 'ياخشىمۇسىز دۇنيا') چىقىش ()
ئاخىرىدا, بىزنىڭ يەپ كېتىشىڭىزگە URL ئەندىزىسىنى قوشيالايمىز. چۈنكى يەم-خەشەك ئەپىمىز بىر نەچچە url نى ئىشلىتىدۇ, بىز ھۆججەتنىڭ چوڭ-كىچىكلىكىنى كىچىك قىلىپ, بۇ يەم-خەشەك ئەپىمىزدا يەرلىك URL لارنى قۇرايلى.django.urls ئىمپورت يولىدىن from. قاراشلارنى ئەكىرىش URLPATTERNS = [ يول (', sights.feed, name =' feed '), ]
بىز يەنە ARDL نى ئىشلىتىپ URL نى تەھرىرلىشىمىز كېرەك, بىز ئۇنىڭغا تېلېفون قىلىشنى قارار قىلىمىز, بۇ بىز قۇرغان تۇنجى مۇندەرىجە ئىدى. ئەپ / ئەپنى تەھرىرلەڭ ۋە URL ئەندىزىسىگە تۆۋەندىكىنى قوشۇڭDJANGO.URLS ئىمپورتلىرى # ئۈستىدىكى # نى ئۆز ئىچىگە ئالىدۇ URLPATTERNS = [ # ... ئالدىنقى كود بۇ يەردە يول («يەم-خەشەك /», (([) (('FEED.URL]), ئىسىم بوشلۇقى =' Feed ')). ]
ئۈستىدە... ئالدىنقى كود بۇ يەردە
ھازىر بىز Python باشقۇرىدىغان ۋاقىتتا مۇلازىمېتىرنى ئىجرا قىلغاندا, قۇرۇلىللىق قىلغان, چۈنكى بىز سانلىق مەلۇماتتىكى تۈرلەرنىڭ ئەندىزىسى ۋە URL ئەندىزىسىدە تۇرىدۇ »كۆرىمىز. كېيىنكىسى, بىز ئۆز ئالدىمىز قۇرۇش شەكلى قۇرۇش نىكىنى يولغا قويايلى. ئەمما بىز كۆپ كود يۆللىشىشتىن ئىلگىرى, بۇرۇنقى قوليازما ئارقىلىق زاپاسلاشقا بولىدۇ, زاپاسلاش. بۇ قوليازمىنى قېيىرادا ئىجرا قىلىڭ, بىر نەچچە پەيتنى ساقلاڭ, بىر نەچچە پەيتنى ساقلاش, بارلىق كودلار بىزنىڭ گىتو ئامبىرىمىزغا زاپاسلىنىدۇ.زاپاسلاش
جەدۋەلنى يولغا قويۇش بىر قەدەر ئاددىي. شەكلىمىزگە پايدىلىنىپ, يازما تەلەپ بەلگىنى كۆرۈشكە بەلگىلىك تەلەپ قىلىش بەلگىسىنى كۆزدە تۇتقاندا, ئوخشاش قاراشتىكى ئۇچۇرلارنى يۆتكەشتىن بۇرۇن سانداننى ساقلايمىز. بىز ئاللىبۇرۇن ئىمپورت قىلغان قايتا ئىقتىداردىن ئىشلىيەلەيمىز, ۋە كۆرۈنۈشى ئەندىشە ئۈچۈن URL ئېلىش ئۈچۈن تەتۈر ئىقتىدارلىق دەپ ئاتىلىدۇ. بىز بۇنى تىزما «يەم» قىلىپ تۇرۇش: چۈنكى ئۆز ئىچىگە ئالغان ئەندىزەنىڭ ئىسمى »بىلەن يەم بېرىمىز, بۇ كۆرۈنۈشتە يەم-خەشەكمۇ يەم.يەم-خەشەكتىن Def Feed (تەلەپ): يازمىلار = outport.Ongs.Obs.all () # سانداندىكى بارلىق يازمىلارنى سوراش ئەگەر تەلەپ قىلىڭ. Memethod == 'يازمىسا: # يازما تەلەپنى بىر تەرەپ قىلىڭ جەدۋەل = يوللانما ئەگەر شەكىلدە. بىيدىغىنى (): # جەدۋەلنى دەلىللەڭ form.save () # يېڭى ئوبيېكتنى ساقلاش قايتا قايتىش (تەتۈر ('يەم - خەشەك))) # قايتىش «شەكىل»: يازما (), # جەدۋەلنى مەزمۇنغا يەتكۈزۈشكە كاپالەتلىك قىلىڭ, بىز ئۇنى قىسىپ قويالايمىز. 'Share': يازمىلار, })
سانداندىكى بارلىق يازمىلارنى سوراشيازما تەلەپنى بىر تەرەپ قىلىڭ
جەدۋەلنىڭ مىسالى قۇرۇڭ ۋە سانلىق مەلۇماتنى ساقلاڭجەدۋەلنى دەلىللەڭ
يېڭى ئوبيېكتنى تېجەڭتەلەپكە ئېرىشىش بىلەن ئوخشاش URL غا قايتا نىشانلاڭ
جەدۋەلنى مەزمۇنغا يەتكۈزۈشكە كاپالەتلىك قىلىڭ, شۇنداق قىلالايمىز.خەتكۈچ ھەرپ كۇنۇپكىسى بىلەن جەدۋەل ۋە جەدۋەلنى كۆرسىتىش. بىز يەنە CSRF بەلگىسى لازىم, سىرتقى تور بېكەتلەرنى بىرىنچى يۈكلەنمەي تۇرۇپ جەدۋەلگە يوللايدىغان يول بار.
Feed {% CSRF_TOCKEN%} {{جەدۋەل} يېڭى يازما {% يازدىكى يولدا%} {{Shite.text}} {% endfores%}from django.http import HttpResponse
def hello(request):
return HttpResponse('hello world')
بۇنى چۈشۈرەيلى. بۇ يەردە يېڭى جەدۋەل سىنىپى بار, بەلگە ئۆزى, جەدۋەلنىڭ ئۆزى, يوللاش كۇنۇپكىسى. چىرايلىق ئاددىي, ئەمما بىز ئۇنىڭغا كۆرۈپ باقايلى, بىز ئۇنى تېخىمۇ ياخشى كۆرسىتىشنى ئويلايمىز. ئۇ ئىشلەيدۇ, يېڭى يازمىلارنى شەكىلگە يولۇقلىيالايمىز ۋە ئۇلار ھازىر سانداندا ساقلاندى. بۇ يەردە كېتىۋاتقان بىر قانچە ئىش بار. HTML بەلگىسىنى ئېلان قىلىش ئۈچۈن, ھۆججەتنىڭ HTML ھۆججىتى ئىكەنلىكى توغرىسىدىكى ئېلان قىلىپ, قېلىپ بەلگىسىنى شەكىللەندۈرۈش, قېلىپ بەلگىلەش رامكىسىغا ({% ... {{{{{{{{{{{{{{{{{}}) جەدۋەلنى كۆپەيتتى. خەتكۈچ خەتكۈچ ۋە قېلىپ بەلگىلەش ئارقىلىق تېكىستنى كۆرسىتىش ئۈچۈن, بىزدە بۇ تېكىستنى كۆرسىتىمىز. خەتكۈچلەرنىڭ ھەقىقىي قانچىلىك دەرىجىدە بولىدىغانلىقى ئۈچۈن, چۈنكى بىز قېلىپنىڭ ئۇلار بىلەن قانداق ئورۇنلاشتۇرۇدىغانلىقىنى بەلگىلىيەلمىگە ئېرىشەلەيمىز ۋە ماڭا سىناق بەلگىگاھلىق خەتكۈچلەر بىزنىڭ ئۆزگەرتكۈچنىڭ ئۆزگەرگۈچىسى قانداق بولىدىغانلىقىنى كودىغا قانداق كۆرسەتەلەيدىغان ئاساسى.ھازىر بىز ئەپلىرىمىزنى تېخىمۇ ياخشى كۆرسىتىپ تۇرۇشىمىز كېرەك, چۈنكى بۇ ھەقىقەتەن ئاساسىي كۆرۈنگەن. بىز بۇنى CSS, ياكى سىنىپتا ياكى سىنىپتا ھەر بىر جىسىمغا باغلانغان. CSS ھەقىقەتەن ياخشى, چۈنكى ئۇ بەتتىكى ھەممە نەرسىنى قانداق قاراشقا بولىدىغانلىقىنى سۆزلەپ بېرىدۇ, ئۇنى ھەقىقەتەن ياخشىدەك قىلالايمەن. بۇنى قىلالايدىغان بىر قانچە تازىلىق بار, ئەمما مېنىڭ شەخسىي ئىشىم bootstrap.
getbootstrap.com/Mkdir قېلىپى بىلەن بولغان قېلىپلىرى, ئاندىن قېلىپلارنى تەھرىرلەپ, ئاندىن «قېلىپتۇرۇش / ئاساسنى تەھرىرلەش.
ئۇ مۇنداق بولۇشى كېرەك:{% boot body%} {% ENGOBLY%}
SSS ۋە JavaScript نى كۆچۈرۈپ, كەلگۈسىدە تور بېتىمىزنى كەلگۈسىدە ئېلان قىلىش ئۈچۈن JavaScript بولۇشىمىز كېرەك.from feed import views as feed_views
ھازىر, باش قېپىغا قايتىپ كەلەيلى, تېز بۇيرۇق قىلىڭ. ئېسىڭىزدە تۇتۇڭ, ئەگەر سىز مەۋھۇم مۇھىتقا ئېرىشىش ئۈچۈن بولۇپ, مەنبە WNDV / Bir / MAVETE نى كىرگۈزۈڭ. بۇ سىزنى DJANNO نىڭ ئۇلارغا كىرىشىگە بارىدىغان PYNON بولاقلىرىنى قاچىلىماقچى بولغان يول قاچىلاش ماشىنىسىنى قاچىلايدۇ. DJJACO BOOFTSTRP سىنىپىنىڭ شەكىللەنگەن بولۇشىمىزنى, بىز چۈرۈك جەدۋىلىنى قىستىلغان بىر پىيادىلەر قاچىلىنى قىلىمىز. بىز بۇنى تۆۋەندىكى بۇيرۇق بىلەن چۈشۈرەلەيمىزPIP DJANGO-CRITP جەدۋىلىنى قاچىلاڭ
بۇ قاچىلانغاندىن كېيىن, ئۇنى تەڭشەككە قوشۇڭfrom feed import views as feed_views
urlpatterns = [
path('', feed_views.hello, name='hello'),
]
قاچىلانغان_AppS = [
# ... ئالدىنقى كود بۇ يەردە
«چۈرۈك_»,
]... ئالدىنقى كود بۇ يەردە
ھازىر, ياخۇ ئەندىزىسىگە قايتا كىرىمىز, بىز بەزى نەرسىلەرنى ئۆچۈرەلەيمىز. ھۆججەتنىڭ باشلىنىش ۋە ئاخىرلىشىشىنى ئۆچۈرەيلى ۋە ئۇنى بىزنىڭ ئاساسى قېلىپىمىز, كېڭەيتىش ئارقىلىق ئۆز ئاساسى قېلىپىمىزدىن كۆتۈرۈڭ. ئۇنىڭدىن باشقا, بىز تۆۋەندىكى ھۆججەت ۋە قېلىپقا سۈزگۈچنى شەكىللەندۈرۈش بىلەن قېمپانلىقنى ئىمپورت قىلىمىز. ئاخىرىدا, جەدۋەلگە Bootstrap سىنىپىغا قوشۇش ئۈچۈن جەدۋەلگە تېخىمۇ كۆپ كۇنۇپكىنى قوشايلى. بۇنىڭغا ئوخشايدۇ:python manage.py check
{% Base.html 'نى كېڭەيتىدۇ}
{% boot body%}
{% LUPY_TRES_TAGS%}
{% CSRF_TOCKEN%}
{{جەدۋەل | چۈرۈك}}
يېڭى يازما
{% يازدىكى يولدا%}
{{Shite.text}}
{% endfores%}
{% ENGOBLY%}چىرايلىق! بۇ بىر نەچچە خىل كود. ئۇنىڭدىن كېيىن, بىز ئۇنى سىنالايمىز ۋە ھەممە نەرسىنىڭ چىرايلىق ئىكەنلىكىنى كۆرىمىز, ھەممە ئىشنىڭ نورمال ئىشلەۋاتقانلىقىنى كۆرۈشىمىز كېرەك. مۇلازىمېتىرنى ئىلگىرىكى كۆرسەتمىسى بويىچە ئىجرا قىلىڭ ھەمدە تور بېكەتنىڭ كۆرۈنۈشى ۋە ياخشى ئىشلەيدىغانلىقىغا كاپالەتلىك قىلىڭ. ئېسىل خىزمەت! سىز كېيىنكى قەدەمگە كىرىشقا تەييارلاندىڭىز, شۇنىڭغا ئوخشاش url, كۆرۈنۈش ۋە قېلىپلارنى ئىشلىتىپ ئابونتلارنىڭ نەقتۇرۇنى ئىشلىتىمىز. ئاساسىي قېلىپلاشقاندا, ئېھتىياجغا ئاساسەن ئۇنى قايتا ھاسىل قىلىش ۋە ئۆزگەرتىشكە ئەھمىيەت بېرىمىز, ئەمما ھازىر توردا ئۆزگەرتىشلەرنى ئىسلاھ قىلسۇن, ئەمما بىز ئابونتلارنى ئىشلەتكۈچى ئىسمى ۋە مەخپىي نومۇرى بىلەن كىرىپ, ئەپنى بىخەتەر ۋە ئۆزىڭىزنىڭ ھېساباتىڭىزنى ساقلاشقا ياردەم بېرىمىز.
بۇنى قىلىش ئۈچۈن, ئىشلەتكۈچى مودېلىنى DJANNGO غا سېلىۋېلىشىمىز كېرەك. ئىشلەتكۈچى مودېلى ساندان مودېلى بولۇپ, يازمىغا ئوخشاش ئېلېكترونلۇق خەتكە ئوخشاش ئىشلىتىۋېلىنەلەيدۇ. كەلگۈسىدە بىز تور بېكەتنىڭ تورغا ئورۇنلاشتۇرۇلغان بولۇشتىن بۇرۇن, بۇ مودېلغاقىلىق ئۈسكۈنىلەر بىلەن ئوخشاش ماشىنا تىپى بىلەن ئورۇنلاش بۇرۇن, بىز ئۇنىڭغا مۇناسىۋەتلىك باشقا مودېللار بىلەن بولغان, ھەمدە ئالدامچىلىققا چىدىمايدىغان كىرىملىك يۆنىلىشلىك تەدبىر تۈزۈپ تۇرىمىز. بىز quango تەمىنلەيدىغان كىرىش جەدۋىلىدە قۇرغان بەزى ئۇچۇرلارنى ئىشلىتىپ باشلايمىز. ئالدى بىلەن, ئاساسىي كىرىش بېتىدىكى قېلىپلارنى ۋە كۆزلەرنى كۆرسىتىش ئۈچۈن ئىشلىتىمىزگە يول قويايلى. داۋاملىق ئەپسلەپ, داۋاملىق ئەپلەرنى ۋەكىللىك قىلىپ, داۋاملىق بىر ئەپلەرنى ئىشەنچ قىلىپ, داۋاملىق چىملىقلارنى ۋەكىللىك قىلىپ, داۋاملىق چىراغ, تاشقى كۆرۈنۈش, ئۇنىڭ سىرتقى ئۈسكۈنىلىرى, كۆپ ئامما تونۇش, كۆپەيتىش دەلىللەش, بارماق ئېنىقلىما.python manage.py runserver 0.0.0.0:8000
بىز بىر ئەپنى باشلاش توغرىسىدا پاراڭلاشتۇق. مەۋھۇم مۇھىت ئىچىدە, مەۋھۇم مۇھىت ئىچىدە, بۇ تالاش-تارتىشلەرنى ئۆتۈڭPython Mondice.py showtappuss ئىشلەتكۈچىلەر
ھازىر, بىز يېڭى ئەپ ئۈچۈن مۇندەرىجە بولۇشىمىز كېرەك بولۇشى كېرەك. ئىشلەتكۈچىنىڭ كىرىشكە ماس كېلىدىغان بۇ مۇندەرىجىدە كۆرۈشتىن باشلايلى. دجانگو ئىشلەتكۈچى ساندۇقى ئۈچۈن كۆزدە تۇتقان, ئەمما بۇلار بىزگە ماس كەلمەيدۇ, چۈنكى بىز ئەڭ ياخشىسى بار خاس ھالەتتەغا ئېھتىياجلىق بولغاچقا, بۇ ئەڭ ياخشىسى كېرەك.بۇ نۇقتىدا بىز بىر پوچتا تەلەپنى تەكشۈرۈش ئارقىلىق, بىز DJJANG دىن ئىمپورت قىلىش ئارقىلىق بارلىققا چىقىشنى, ئىشلەتكۈچى ھېساباتىنى ھەقىقىيكى قىلىپ, ئۇلارنى يەم-ماشىنىمىزغا كىرىشتىن بۇرۇن.
ئىشلەتكۈچىلەر / كۆرۈنۈشىدە .py, تۆۋەندىكى كودنى قوشۇڭfrom django.db import models # DJANGO.STORTT نىڭ ئەكسىچە, قايتا نىشانلاش
DJANGO.URLS نىڭ ئەكىرىش
django.canban.auth.ahut.futd. Expasswordwordform
Django.canctiban.ahutife دەلىللەش, چېكىنىش
DJANNGO.CORANTRBAN.AHT_LOMING
Django.Canctibribd ئەكىرىش
end inform (تەلەپ):
ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما:
ئىشلەتكۈچى ئىسمى = تەلەپ قىلىدۇ. Boort ['ئىشلەتكۈچى ئىسمى] # يازما تەلەپتىكى ئىشلەتكۈچى ئىسمى ۋە پارولىنى ئېلىڭ
پارول = تەلەپ. Lost ['پارول] # ئىشلەتكۈچىنى دەلىللەش
ئىشلەتكۈچى = دەلىللەش (ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى • پارول = پارول)
ئىشلەتكۈچى:
Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.canbut.conbange.corn.boutbend.)
ئۇچۇرلار. (تەلەپلىرىڭىز, 'پارولىڭىز قوبۇل قىلىندى. داۋاملاشتۇرۇڭ)
قايتا نىشانلاش (تەتۈر ('يەم-خەشەك: Feed'))
ELICE: MISS.WARNING.WARNING (تەلەپ, 'ئىشلەتكۈچى ئىسمى ياكى پارول خاتا. قايتا سىناڭ')
قايتىش
class Post(models.Model): # يازما تەلەپتىن ئىشلەتكۈچى ئىسمى ۋە پارولىنى ئېلىڭ
id = models.AutoField(primary_key=True) # ئىشلەتكۈچىنى دەلىللەڭ
text = models.TextField(default='') # بۇ سىزنىڭ ئاساسىي كىرىش نۇقتىسى ئۈچۈن لازىملىق. ھازىر, ئاساسىي قېلىپنى كېڭەيتىش ئارقىلىق كۆرۈنۈشنى شەكىللەندۈرەيلى. ئىشلەتكۈچى ھۆججەت قىسقۇچىدىكى قېلىگۈچ ئۈچۈن يېڭى مۇندەرىجە قۇردۇق.
mkdir ئىشلەتكۈچى / قېلىپ
mkdir ئىشلەتكۈچىلەر / قېلىپ / ئىشلەتكۈچىلەرھازىر, ئىشلەتكۈچى / touchTates / ئىشلەتكۈچى / »نى تەھرىرلىشىمىز كېرەك. بىز ئۇنىڭدا, بىز ئىشلەتكۈچىنىڭمۇ تىزىملىتىشىغا رۇخسەت قىلىدىغان قېلىپ تۈزدۇق.
Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچىلەر / كىرىش. Utmlھازىر, قېلىپتا,
{% Base.html 'نى كېڭەيتىدۇ} {% LUPY_TRES_TAGS%} {% توسۇش مەزمۇنى%} {% CSRF_TOCKEN%} كىرىڭ {{جەدۋەل | چۈرۈك}} كىرىش {% ENGOBLY%}بۇ كىرىش قېلىپىنىڭ ئاساسى. بۇ ھەقىقەتەن قۇرۇلمادىكى باشقا قېلىپقا ئوخشاش, ئەمما ئۇ ئوخشىمىغاندا پەرقلىق كۆرۈنىدۇ. بىز بۇ كودىنى كۆچۈرۈپ, Reskmude Right IFND Resest نى كۆرسىتىش ئۈچۈن قېلىپ بەرپا قىلالايمىز .html, بىز بۇ سۆزنى ئۆزگەرتەلەيمىز ۋە يېڭى شەكىلنى ئىشلىتىمىز. ئالدى بىلەن قېلىپنى قىلايلى. ئىشلەتكۈچى / قېلىپ / ئىشلەتكۈچى / تىزىملىتىڭ.html.html ۋە تۆۋەندىكى كود قوشۇڭ:
{% Base.html 'نى كېڭەيتىدۇ} {% LUPY_TRES_TAGS%} {% توسۇش مەزمۇنى%} {% CSRF_TOCKEN%} ھېسابات قۇر {{جەدۋەل | چۈرۈك}} تىزىملىتىڭ {% ENGOBLY%}ھازىر, ئىشلەتكۈچى كىرىش ئارقىلىق ئىشلەتكۈچى تىزىملىكىنى ئىشلەتكۈچىلەرنىڭ تىزىملاتقانلىقىمىز ۋە چەمبىرەك ئۈچۈن جەدۋەل قۇرايلى. بىز بۇ شەكىلنى ئاساسىي جەھەتتىن يازىمىز, ئەمما كەلگۈسىدە كېلىشىم ۋە CAPTCHA قاتارلىقلارنى ئۆز ئىچىگە ئالغان تېخىمۇ كۆپ تەپسىلاتلار ۋە بىخەتەرلىك ئىقتىدارلىرىنى بىرلەشتۈرىمىز. NoNo ئىشلەتكۈچىلىرى / جەدۋەللەر بىلەن جەدۋەللەرنى تەھرىرلەڭ .py, ۋە تۆۋەندىكى كودنى قوشۇڭ.
DJANNGO ئىمپورت شەكلىدىن django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى django.cancent.authut.aut.sers.scindectscrecrection نىڭ پايدىلىنىشى سىنىپ ئىشلەتكۈچىلىرى تەكشى (ئىشلەتكۈچى ئىشلىتىشچانلىقى): fail = devel.Emailfield () CRAST META: Model = ئىشلەتكۈچى ئېتىزلار = [«« ئېلخەت »,« Email1 '»,« پارول 5']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',)
شۇڭا بىزنىڭ بۇ يەردە باشقا بىر جەدۋەل بار, بۇلار بىر قەدەر ئىشلەيدۇ. ئۇ ئىشلەتكۈچى ئىسمى, ئېلېكترونلۇق خەت ۋە پارول ۋە پارول ۋە پارول نومۇرى بىلەن ئىشلەتكۈچى تىزىملىتىدۇ. شۇنىڭغا دىققەت قىلىڭكى, بۇ جەدۋەلنىڭ دائىملىق شەكىللىرىنى كېڭەيتمەيدۇ. ئەينەكتىن, ئۇ بىر مودېل شەكلى, بۇ ئۇنىڭ مېتا بارلىقىنى كۆرسىتىدۇ. بىر ساھە پەقەت ئوخشاش ئېنىقلىما بېرىلگەن بولۇپ, سىنىپ Meta شەكلىنى بەلگىلەيدۇ, جەدۋەلنى بەلگىلەيدۇ, جەدۋەلنىڭ قالغان ئۇچۇرلارغا ماس كېلىدۇ. بۇنىڭدىن باشقا بۇلارنىڭ كۆپىنچىسى Django دا ئىشلىتىلگەن Djangoدە ئاللىقاچان Django دا بار بولۇپ, بىز بۇنى بۇ سىنىپنىڭ ئاساسى قىلىپ ئىشلىتىمىز (تىرناق ئىچىدە ئۆتكەن).بۇنىڭدىن كېيىن, ئابونتلارنى ئىشلەتكۈچى سۈزۈش توۋايتىشنى تەكشۈرۈپ, ھازىر بىزنىڭ شەكلى ۋە قېلىپلىشىمىز بار. بۇ بىر خىل ئۆزگىرىش بولۇپ, يېڭى يازما قاراشتىكىگە ئوخشاش. ئىشلەتكۈچى / كۆرۈنۈشلەرنى تەھرىرلەڭ. توكنى تەھرىرلەڭ ۋە تۆۋەندىكى كود قوشۇڭ:
# ... ئىمپورت ئىمپورت قىلىنغان ئىمپورت ئىشلەتكۈچىلەر Ref تىزىملىتىڭ (تەلەپ): ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما: جەدۋەل = ئىشلەتكۈچى (تەلەپنى) ئەگەر شەكىلدە. ئىشلەتكۈچى = جەدۋەل. ئۇچۇرلار. قايتىشpython manage.py makemigrations
python manage.py migrate
... ئىمپورتبۇ ئىشلەتكۈچىنىڭ تىزىملاتقانلىقىمىز ئۈچۈن, ئەمما بىز تېخىمۇ كۆپ ئۇچۇر بولۇشى كېرەك. ئىشلەتكۈچىنىڭ تەكشۈرۈلگەن ۋاقتىنى بىلگۈمىزگە, ئۇلارنىڭ تور بېكەتكە قايسى ۋاقىتتىن ئاخىرقى قېتىم ئاخىرقى قېتىم ئەڭ ئاخىرقى بولغانلىقىنى بىلدۈرىمىز, Tenszze قاتارلىقلارغا ئوخشاش, CenterZORS قاتارلىقلارغا قانداق ئاخىرقى قېتىم, بىز سىزنىڭ GourIgon غا ئوخشاش, ئىشلەتكۈچى مودېنى يېڭىلىشىمىز كېرەك. شۇنداق قىلىش ئۈچۈن, بىز ھەر ئىككى ئەپنى يېڭىلايدۇ. يەم - خەشەك مودېلىنى تەھرىرلەپ باشلايلى. ئۇ مۇنداق بولۇشى كېرەك:
DJANNANO.DB ئىمپورت تىپى # ... ئىمپورت django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى دەرس ھۆججىتى (مودېللار.model): id = مودېللار .autifield (Twith_key = true) ئاپتور = مودېل. Noighykey (ئىشلەتكۈچى, come_Delete = Model = null = truan = tryber = 'start_NTET =' يازمىلار ') بۇ قۇرغا قوشۇڭ) # بۇ لىنىيىدە قوشۇڭ Text = distody.textfield (سۈكۈت = '') posts = Post.objects.all() # ... ئىمپورت
بۇ قۇرغا قوشۇڭھۆججەتكە قوشۇلىدىغان ئىككىنچى قۇرغا دىققەت قىلىڭ. بۇ ھەر بىر نۇمىنى ھەر بىر يازمىنى ھەر بىر يازمىنى ھەر بىر نۇمىنىغا ئۇلايدۇ, ئۇنداقتا بىز يازمىلارنى پېرېۋوتقا ئاساسىدا, يازمىلارنى ئىشلەتكۈچىگە ياراتقان ئىشلەتكۈچىگە ئىشلىتىشىمىزگە كاپالەتلىك قىلالايمىز. بىز بۇ تاشقى كۇنۇپكىسىنى بېسىپ بۇ ئورگانغا ئېھتىياجلىق بولسا, ئۆچۈرۈش, يول ئېچىشقا كاپالەتلىك قىلىش ھەمدە ھۆججەتنىڭ يازمىلىرىغا ئۆچۈرۈشىمىز, ئابونتلارنىڭ يازمىلىرىغا ئۆچۈرۈشىمىز كېرەك, ئىشلەتكۈچىنىڭ قۇرامىغا يەتمەيدىغان يازمىلارغا ئىشلىتىلىشىمىز, ئىشلەتكۈچى قۇرىدىغانلىقىنى ئىشلەتكۈچى يارىتىپ بېرەلەيمىز. بۇ مۇناسىۋەتلىك ئىسىم, PAUTUT.Author غا ئوخشىمايدۇ. ئەسكىرى بىزگە يازمىنى ئۆزى يول قىلىدىغان ئىشلەتكۈچىگە بېرىدۇ. بىز ھازىر ئىشلەتكۈچىنى ئىجرا قىلغان ئىشلەتكۈچىگە ئېرىشەلەيمىز.
ئەمدى, چېكىمىزنى تېخىمۇ قايىل قىلايلى. بىز ئاللىبۇرۇن تور بېتىمىزنى چەكلەپ, تېلېفونغا چىقالغان ۋاقىتقا رۇخسەت قىلمايمىز, بۇ بىر قەدەر ئاسان. ئەپىمىزنى تەرەققىي قىلدۇرايلى, ھەر بىر ئىشلەتكۈچى ھەققىدە بەزى ئىشلەتكۈچىلەرنى كۈتۈۋېلىش ئۈچۈن باشلايلى. ئىشلەتكۈچى / مودېللارنى تەھرىرلەش .P2, تۆۋەندىكى كود قوشۇڭ.DJANGO.DB ئىمپورت مودېللىرىدىن django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى DJANGO.IWLE نىڭ ئىمپورت ۋاقتى CLASS ئارخىپى (Models.Model): ئىشلەتكۈچى = مودېلى. ONDOTOONEFILD (ئىشلەتكۈچى, aboutlelete = مىسال, NULL = The Reman = trade = trade_name = 'ئارخىپ ") Emart_Creted = Models.datetorfield (سۈكۈتتىكى = Ameverzone.now) final_seen = Models.datertfield (سۈكۈتتىكى = ۋاقىت = ۋاقىت) can_Login = Models.datertfield (سۈكۈتتىكى = Ameverzone.now) lovered_name = models.charfield (Max_legth = "", ", NLLLE = NULLE, BREELT = BLECKET = Trin = try = try = try = try) Bio = Models.textfield (قۇرۇق = راست, سۈكۈتتىكى = '')
شۇنىڭغا دىققەت قىلىڭكى, بۇ مودېل يازما مودېلىغا ئادىل ئوخشايدۇ. قوشۇمچە ئىمپورتچان, ۋاقىت مۇزېرىيىمىز بار, بۇ بىزنىڭ ۋاقىتتىكى ئوڭ تەرەپكە بەلگىلىشىمىزگە يوللىشىشىمىز, يازمىغا ئوخشاش مەخپىي ۋە تېكىست مەيدان بار. بۇ ۋاقىتلارنىڭ ھەممىسىنى ئىشلىتىپ بۇ تور بېكەتنى بىخەتەر ئورۇنغا كاپالەتلىك قىلىشىمىزغا ياردەم بېرىدۇ ۋە ئىشلىتىلىشى ھەر بىر ئىشلەتكۈچى ياكى ئاپتورلۇق يەرلەر تور بەتنى تەمىنلەيمىز. OneToneefild بولۇشى كېرەك, ئۇ ئېنىقلا بىر قىممەت, ئەمما پەقەت بىرلا ئۈلگە بىلەن ئوخشاش ھەرىكەت قىلىدۇ. بۇنداق, ئىشلەتكۈچىنىڭ پەقەت بىرلا ئارخىپى بار, شۇنىڭ بىلەن بىر ۋاقىتتا سىزنىڭ نۇرغۇن يازمىلىرى بولۇشى مۇمكىن.mkdir feed/templates
mkdir feed/templates/feed
ھازىر, ئارخىپىمىزنى ياخشىلاپ, ئارخىپقا ھېساباتقا تىزىملاتايلى. بىرىنچى, ئىشلەتكۈچى / كۆرۈنۈشنى تەھرىرلەش. نەشر ھوقۇقىغا ئەھمىيەت بېرىش,# ... ئىمپورت ئىمپورت قىلىنغان ئىمپورت ئىشلەتكۈچىلەر Ref تىزىملىتىڭ (تەلەپ): ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما: جەدۋەل = ئىشلەتكۈچى (تەلەپنى) ئەگەر شەكىلدە. ئىشلەتكۈچى = جەدۋەل. Profile.obistion.CRANY (ئىشلەتكۈچى = ئىشلەتكۈچى) # بۇ قۇرنى قوشۇڭ, ئىشلەتكۈچى ئۈچۈن ئارخىپ تۇرغۇزۇش ئۇچۇرلار. قايتىش
... ئىمپورت
بۇ قۇرنى قوشۇشقا, ئىشلەتكۈچى ئۈچۈن ئارخىپ قۇرۇشبۇ پەقەت ئۇچۇرنى تولدۇرمايلا ئارخىپ تۇرغۇزۇپ ئارخىپنى بېرىدۇ. ھازىر, بىز ئىشلەتكۈچى ھېساباتىنى دائىم تىزىمغا ئالالمىدۇق, ياكى ھېچ بولمىغاندا پارولنى بەكلا سوتلىنالماقچى, شۇڭا كىرىش كۆرۈنۈشىنى يېڭىلايلى.
# ... ئىمپورت of .modeLes ئەكىرىڭ DJANGO.IWLE نىڭ ئىمپورت ۋاقتى ئىمپورت ۋاقتى end inform (تەلەپ): ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما: ئىشلەتكۈچى ئىسمى = requip.post ['ئىشلەتكۈچى ئىسمى] پارول = required.post ['پارول'] ئىشلەتكۈچى = دەلىللەش (ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى • پارول = پارول) ئەگەر ئىشلەتكۈچى ۋە ئىشلەتكۈچى. PROFIL.CAN_LORIN.RONGONE.NOMEN (): #: #: # ئەسكەرتىش بولسا بىز ھازىر تەكشۈرۈپ باقايلى Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.canbut.conbange.corn.boutbend.) ئۇچۇرلار. (تەلىپىڭىز, 'پارولىڭىز قوبۇل قىلىندى. داۋاملاشتۇرۇڭ.') قايتا نىشانلاش (تەتۈر ('يەم-خەشەك: Feed')) بولمىسا: ئەگەر كىرىش مۇۋەپپەقىيەتلىك بولمىسا, ئۇچۇرلار. (تەلەپ, 'ئىشلەتكۈچى ئىسمى ياكى پارول خاتا. قايتا سىناڭ.') ئىشلەتكۈچى = ئىشلەتكۈچى. Griffter.filter (ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى) .FIst () # بۇ ئىشلەتكۈچى ئارخىپىنى يېڭىلايدىغان قىسمى. ئىشلەتكۈچى: profile = ئىشلەتكۈچى: group.Profile Profile.Can_Login = Prendzone.now () + thatmentimatta (daterTime.1 15) # شۇڭا ئۇلار يەنە بىر نەچچە سېكۇنت كىرەلمەيدۇ Profile.Save () قايتىشpython manage.py shell
... ئىمپورتشۇنىڭغا دىققەت قىلىڭكى, ئىشلەتكۈچى كىرەلەيدىغان-ساتسا تەكشۈرۈپ باقايلى
ئەگەر كىرىش مۇۋەپپەقىيەتلىك بولمىسا,from feed.models import Post
بۇ بىز ئىشلەتكۈچى ئارخىپىنى يېڭىلايدىغان قىسمىدۇر.شۇڭا ئۇلار بىر نەچچە سېكۇنتلا كىرەلمەيدۇ
بۇ بىخەتەرلىك ئاساسى. بۇ تور بېكەتنىڭ بىر ۋاقىتتا ھەر بىر پارول بىرلەشتۈرۈش, ھەتتا بىر ۋاقىتتا ئۇلارنىڭ بىر قانچە پارولى ياكى بىر قانچە پارولىدۇر. بۇ ئۇلارنىڭ پاسپەتتى ۋە بىر قانچە ئۈسكۈنىلەرنى بىلىدىغان ئادەتتىكى ئىشلەتكۈچىنى كۆرۈنەرلىك دەرىجىدە بىلىدۇ, ئەمما بۇ بىر نەچچە ئۈسكۈنىنىڭ تىزىملىكىنى مەلۇم قىلىدۇ, ئەمما ئۇ بىر قانچە ئالدامچىلىق ماشىنا گەۋدىلىرىنى بۇ دېتالدىن ساقلايدۇ. شۇنىڭغا دىققەت قىلىڭكى, بىز ئۆزگەرگۈچى مىقدار, CAN_LOGIN, بۇ ئۆتمۈشتىكى ۋاقىت ۋە ھەر بىر ئىشلەتكۈچى نامىنى ئىشلىتىپ ئۇنى يېڭىلاڭ. بۇنداق بولغاندا, يامان غەرەزلىك ئىشلەتكۈچىنىڭ يېقىن جايدا پارولنى پەرەز قىلالمايدۇ. بۇ ۋاقىتتىكى بىر نەچچە سېكۇنت ئىچىدە ()مۇ يېڭىلىغىلى بولىدۇ ()مۇ يېڭىلىغىلى بولىدۇ, بۇ تور بېكەت تېخىمۇ كۆپ بىر نەچچە سېكۇنتتىن پايدىلىنالايدۇ. باشلاشنى تەۋسىيە قىلىمەن.Post.objects.create(text='hello world')
exit()
ئېسىڭىزدە تۇتۇڭ, خىزمىتىمىزنى ساقلاپ قالساق زاپاس قول ئىشلىتىپ يولغا چىقتۇق, شۇڭا ئالدىمىزغا بېرىپ, ھەممە نەرسىمىز ئۈچۈن ساقلانغانلارغا كاپالەتلىك قىلىمىز. بۇيرۇقنى ئىجرا قىلىڭ:sudo زاپاسلاش
يەنە بىر قېتىم, بۇ سىزنىڭ خىزمىتىڭىزنى ھازىرغىچە قۇتۇلدۇرىدۇ. مەن خىزمىتىڭىزنى قۇتقۇزۇش ئۈچۈن دائىم زاپاسلاشنى تەۋسىيە قىلىمەن, ھەتتا زاپاسلاش خىزمىتىنى ئاپتوماتىك ئىجرا قىلماقچى بولسىڭىز, ھەتتا زاپاسلاش خىزمىتىنى ئاپتوماتىك ئىجرا قىلسىڭىز بولىدۇ. سىز بۇ UNIX ئىشلىتىشچانلىقىدىن پايدىلىنىپ بۇ كۇرسانتلىق دەپ ئاتىلىدۇ. بۇ ئەسەرنى قوزغىتىش ئۈچۈن تۆۋەندىكى بۇيرۇقنى ئىجرا قىلىپ پارولىڭىزنى كىرگۈزۈڭ:from django.urls import path
from . import views
urlpatterns = [
path('', views.feed, name='feed'),
]
sudo crontab -eئەگەر NANO ئۈچۈن 1-تاللانمىسىڭىز, تېكىست تەھرىرى سىز ئاللىبۇرۇن پىششىق بىلىشىڭىز كېرەك, يا ئوق كۇنۇپكىسىنى ئىشلىتىپ ھۆججەتنىڭ ئاستىغا يۆتكىۋېتىڭ. تۆۋەندىكى قۇرنى قوشۇڭ:
0 * * * * sudo زاپاسلاشfrom django.urls import include # CON CRON فورماتونى, ئاي, ئاي, ئاي, ئاي, ئاي, ئاي, ئاي, بۇ يەرگە كۈندۈز قاچان ئىجرا بولىدۇ. مىنۇتلار ئۈچۈن 0 نى ئىشلىتىش ئۈچۈن 0 نى ئىشلىتىپ, بىر مىنۇتنىڭ بېشىدا ھەر سائەتتە بۇيرۇق قويىۋالالايمىز. بۇ بىزنى ئاپتوماتىك زاپاسلىتىدۇ. Sudo نىڭ يىلتىزى چەكلىك بولغاندا SUTO نىڭ خىزمىتى, شۇڭا ھەر سائەتتە پارول يېزىشىمىزنىڭ ھاجىتى يوق.
# مەخپىي نومۇر ئىشلەتمەي كودنى زاپاسلاش ئۈچۈن, زاپاسلىغۇچىمىزنىڭ مەخپىي نومۇرىنى چەكلەڭ. بىز بۇنى تۆۋەندىكى بۇيرۇقنى ئىجرا قىلىپ, پارول كىرگۈزۈپ بېرىمىز:
sudo visudoھازىر, ھۆججەتنىڭ ئاستىغا سىيرىپ باشقا قۇر قوشۇڭ:
ھەممىسى = noapssewd: / bin / زاپاسلاشbackup
بۇ پارول پارول سۈپىتىدە ئىشلەتكۈچى سۈپىتىدە «زاپاسلاش» نى ئىجرا قىلايلى. بۇنىڭ سىرتىدا, بۇنىڭ شەكلى ئاسان, «بارلىق ھۆججەتلىرى» بار لىنىيىلىك لىنىيىگە ئالدىڭ, مەسىلەن / بىن / «« بىن / », مەسىلەن / بۆلۈم ۋە زاپاسلاشتا بۇيرۇق بىلەن بۇيرۇق, مەسىلەن / br / Lead / UTR / Bir / untr / unr / in / un / un / un / un / un / un / un / un / un / un / un / un / unter.ھازىر, ئېلېكترونلۇق خەت بىلەن ئىشلەشكە باشلايلى. ئېلېكترونلۇق خەت توربېكەتنىڭ ھەقىقەتەن مۇھىم بولۇپ, چۈنكى ئۇ توربېكەتنى ساقلاش يولى ئۈچۈن, چۈنكى ئابونتلارنىڭ سانلىق مەلۇماتى, ھەتتا بازاردىكى مەھسۇلاتلىرى ياكى مۇلازىمەت) نى دەلىللەيدىغانلىقى ئۈچۈن مۇھىم. ئۇلار ياقتۇرىدىغان نۇرغۇن كىشىلەر ئۇلارنىڭ ئېلېكترونلۇق خەتلىرىنى تەكشۈرۈپ, مەھسۇلاتلىرى ۋە مۇلازىمىتىدىكى ھەر خىل ئېلېكترونلۇق خەت نۇسخىسىنى تاپشۇرۇۋالىدۇ. DJANGO تور بېكىتىدە ئېلان قىلماقچى بولغاندا بىر قانچە تاللاش بار, ئۇ نېمىدېگەن بىر قانچە تاللاش سىز ئۈچۈن ياخشى ئىشلەڭ.
بىرىنچى, تور نامىڭىزدىن ئېلېكترونلۇق خەت ئەۋەتىشىڭىز ۋە ئەڭ تۆۋەن كود تەلەپ قىلىدىغان ئېلېكترونلۇق خەت مۇلازىمىتىگە پۇل تۆلىسىڭىز بولىدۇ. بۇ سوۋغات, بۇ سوۋغات, كىرگەن, سىستېما كولىمى, خەت كىتابلىرى ۋە تېخىمۇ كۆپ بولۇشى. posts = Post.objects.all() # بولمىسا, مۇلازىمېتىرىڭىز سىزىلغان ئېلېكترونلۇق خەت مۇلازىمىتىدە ئۆزىڭىزنىڭ ئېلېكترونلۇق خەت مۇلازىمىتىدە. مەن تېخىمۇ كۆپ كود بولسىمۇ بۇ تاللاشنى تەۋسىيە قىلىمەن, بەلكىم ئالاھىدە ساھىبجامال تەلەپ قىلىشى مۇمكىن. ئائىلە كومپيۇتېرىڭىزدىكى ئېلېكترونلۇق ئۈسكۈنىلەرنى ئەڭ يۇقىرى ئورۇنغا ئاچقىلى بولمايسىز, شۇڭا بىز بۇلۇتنى باشلاشتىن بۇرۇن چوقۇم مۇلازىمېتىرنى باشلاشتىن بۇرۇن Windows ئەۋەتىشنى ۋە كومپيۇتېرىڭىزنى ئەۋەتىپ كىرىپ تىزىملىك مۇلازىمېتىرىنى تەكشۈردى.
if request.method == 'POST': # بىرىنچى, تەڭشەكلەرنى تەھرىرلەش. تۆۋەندىكى بۇيرۇق بىلەن:
form = PostForm(request.POST) # نانو ئەپ دېتالى / تەڭشەكلەر .py
if form.is_valid(): # بۇ يەردە سىز MOBPAPTAP بىلەن قۇرغان ئەپنىڭ ئىسمى بار.
form.save() # تۆۋەندىكى قۇرلارنى قوشۇڭ:
return redirect(reverse('feed:feed')) # Wither_name = 'django دېتالى'
Endok_backend = 'django.core.mail.mail.MAck.Amp.mtp.empancreckend'
Email_host = 'localhost'
Email_port = 587
Fail_use_tls = true
Inform_address = ئىشلەتكۈچى ئىسمى .server.com
Wert_host_user = 'ئىشلەتكۈچى ئىسمى'
Nail_Host_Password = stance * soct ['fail_Host_Passwold]]
.
'form': PostForm(), # ئەپلىرىڭىزنى ئورۇنلاشتۇرۇشقا تەييار بولغاندا بۇلارنىڭ ئۆزگىرىشىنى جەزملەشتۈرۈڭ, كېيىن بۇنى قايتا تىرىلدۈرىمىز. ئېلېكترونلۇق خەت_ADDRESSGE تەڭشىكى سىز ئەۋەتمەكچى بولسىڭىز, پارول (ئېلېكترونلۇق خەت_HOWST_PASSASWOW) مۇلازىمېتىر ئۈچۈن ھاسىل بولۇشى كېرەك. مەن پارول ھۆججىتىنى تەڭشەش ھۆججىتىنى تەڭشەش ھۆججىتىنى ئىشلىتىش ئۈچۈن تەڭشەش ھۆججىتىدىن يۈكلەڭ
ئىمپورت
JSON نى ئەكىرىش
ئوچۇق ('/ etc / config / cont_ nc_on')
COBULY = JSON.SH (CONFOOT_FILE)ئاندىن, مەن «ئەسكەرتىش» دىكى سەپلىمىسى /Etc/onfig.json نى تۆۋەندىكىدەك ئىشلىتىپ Json ھۆججىتى قۇردىم.
sudo nano /etc/config.json
تۆۋەندىكى قۇرلارنى قوشۇڭ:{ "Emoەن_St_Password": "" }
بىز سەپ كۇنۇپكىسىنى داۋاملىق تەھرىرلەپ, ئەپتە ئىشلىتىدىغان پارول ۋە كۇنۇپلىقلەرنىڭ ھەممىسىنى قوشۇڭ. ھازىردا ھازىر Python نى ئىشلىتىپ قانداق ئېلېكترونلۇق خەت ئەۋەتىشنى تېز تەكشۈرەيلى. بىرىنچى, تەكشۈرۈش ئېلېكترونلۇق خەتنى قېلىپپا قىلايلى, ئىشلەتكۈچىلىرىمىزگە ئەۋەەلەيدىغان ۋە ئىشلەتكۈچىنىڭ قېلىپ مۇنچىسىغا قويالايدىكەن. بۇ قېلىپ HTML دا يېزىلغان.Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچىلەر / دەلىللەش_ smail.html
Django دېتالى - ئېلېكترونلۇق خەتلىرىڭىزنى تەكشۈرۈپ بېقىڭ ھۆرمەتلىك {{ئىشلەتكۈچى. ئىشلەتكۈچى ئىسمى}}, ئېلېكترونلۇق خەتنى دەلىللەش ئۈچۈن بۇ يەرنى چېكىڭ. ئۇنىڭدىن باشقا, توركۆرگۈنىڭ ئادرېسنىڭ ئادرېسىڭىزدىكى تۆۋەندىكى ئۇلىنىشنى چاپلىيالايسىز: {part_url} {thin}}}} ئىشلەتكۈچى: 'UIDB64 = UID enket = serenge%} بۇ ئۇلىنىش 30 مىنۇتتا توشىدۇ. ئەگەر دەلىللەش ئېلخېتى تەلەپ قىلمىغان بولسىڭىز, بۇ ئېلېكترونلۇق خەتكە سەل قارىسىڭىز بولىدۇ. ئۇ يەردە كۆرۈڭ, جۇخارگۈلىبۇ ئېلېكترونلۇق خەت بىر قەدەر ئاددىي. ئۇ بېكەتنىڭ ئاساسىي URL نى ئىشلەتكۈچىگە, بۇ تور بېكەتنىڭ ئاساسىي URL نى ئالىدۇ, ئىشلەتكۈچىنىڭ ئېلېكترونلۇق خەتنى دەلىللەشتىكى ئىشلەتكۈچى كىملىكى ۋە ئېسىق. قېلىپلارنى كۆرسىتىش ئۈچۈن بەزى python كودىنى يېزىشتىن بۇرۇن, ئۇلىنىش. ئىگىلىگەن. ئالغا ئىلگىرىلەپ, app / تەڭشەكلەرگە تۆۋەندىكى قۇرلارنى قوشۇڭ..Wither_name = 'django دېتالى' Protocol = 'https' Notal = 'مىسال كەلتۈرۈڭ Base_url = كېلىشىم + '': // '+ alintئاخىرىدا, تور بېتىڭىز تورغا تەييارلانغاندىن كېيىن, ئۇنى ئورۇنلاشتۇرۇسىز, تور بېكەتكە ۋەكىللىك قىلىدىغان تور نامىنى تور نامىنى ئېلان قىلماقچى بولىسەن. بۇ سىزنىڭ تور بېتىڭىزنى زىيارەت قىلىش ئۈچۈن NAVBAR دا كىرگۈزگەن ئىسىم. ھازىرچە, سىز توردىن قۇرۇق ئايرىۋالالايسىز ياكى ئورۇندات يازىدۇ. سىز يەنە تور بېكەت_ ئىسىمنى تور بېتىڭىزگە بەرمەكچى بولغان ئىسىمنى ئۆزگەرتمەكچى.
ئېلېكترونلۇق خەت ئەۋەتىشتىن بۇرۇن, بەلگە گېنېراتور قۇرايلى, شۇڭا ھېساباتنى زىيارەت قىلىش بەلگىسى بار ھېسابات ئاكتىپلاش بەلگىسى بار. بىز بۇنى تۆۋەندىكىگە ئوخشايدىغان ھېسابات ئاكتىپلاش ئارقىلىق بۇنى قىلالايمىز. ھۆججەتنى تەھرىرلەڭ:Nano ئابونتلىرى / rikens.py
تۆۋەندىكى كودنى قوشۇڭ:django.cant.auth.turens نىڭ پارول پارولى يوق ئىمپورت TrainGentoreRate (PresterTreettoketTenter): def _make_hash_value (ئۆزىڭىزنى, ئىشلەتكۈچى, ئىشلەتكۈچى, ۋاقىت جەدۋىلى: قايتىش ( somen.etext_type (Userce.pk.pk) + ئالتە.Ex.Text_pype (ۋاقىت جەدۋىلى) ) lime_activative_token = TORKEGENETER () Unbbscriber_token = TORKEGENETER ()
بۇ ئاساسلىق بەلگە ساقلىغۇچى ئاپتوماتىك ھاسىل قىلالايمىز. ئىشلەتكۈچىنى URL دا ئەۋەتەلەيمىز, ئىشلەتكۈچى ئېلېكترونلۇق خەتنى دەلىللىيەلەيدۇ ۋە ھېساباتىنى قوزغىتالايمىز.
كېيىنكى, ئېلېكترونلۇق خەت ئەۋەتىشنى كۆرۈپ باقايلى. NANO نى ئىشلىتىش, ئىشلەتكۈچى / ئېلېكترونلۇق خەتنى تەھرىرلەش.Nano ئابونتلىرى / ئېلېكترونلۇق خەت .py
دەلىللەش HTML ئېلېكترونلۇق خەت ئەۋەتىشى مۇنداقچە:django.cancanct.autt_a_user_user_model DJANNGO.UTTH.HTP erglfe_blase_bels6_encode6_ېن_ېنسې DJANNGO.CANBRA.STS.STA.STS نىڭ ئەكىس ئەترىتى DJANNANGO.CORE.MADE.mail Express_mail_mail_mail DJANNGO.TAMPLE.LOWNER.LOWNER ENDER RETRE_TER_TERS_STRING DJANGO.ULTIONS.ENCOMING EXPLEPLEWAPENTOPE_EN DJANGO.CORE.MOME.mail Expramhortenta DJANGO.STORTCES نىڭ ئەكسىچە .turens نىڭ ھېسابات_ ھېسابات__active_token DJANNGO.TAMPLE.LOWNER.LOWNER ENDER RETRE_TER_TERS_STRING DJANGO.UTILS.HTML ئىمپورت قىلىش DJANGO.TETMPT MENT MARGELT MENT BYOT DJANGO.CONF مەنبە Expractack def led_vercibia_Email (ئىشلەتكۈچى): ئىشلەتكۈچى = get_user_model () temon_subjorjowbject = '[{}] ھېساباتىڭىزنى ئاكتىپلاڭ HTML_Message = Reter_stort "TO_StRing ('ئىشلەتكۈچى / دەلىللەش_ Memml', { 'ئىشلەتكۈچى': ئىشلەتكۈچى, 'Opena': تەڭشەكلەر. 'sectocol': «HTTPS ', «UID»: urlsafe_Base6_encode (PREET_BYTES (USIX_PK)), 'outken': ھېسابات_activative_token.make_taken (ئىشلەتكۈچى), }) sment_hml_enmail (ئىشلەتكۈچى, Mail_subjing, dif_message)
بۇ بىر قەدەر ئاددىي. بىز ئېلېكترونلۇق خەت ئەۋەتىش كېرەك بولغان ئىقتىدارلارنى قېلىپلاشتۇرۇپ, قېلىگۈچ بىلەن تەمىنلەيمىز, ئاندىن بىز ئېلېكترونلۇق خەتنى قېلىپ باھالايمىز, ئاندىن مەسىھنىڭ ئىسمى ۋە ئىقتىدارى ئارقىلىق ئىشلەتكۈچىگە ئېنىقلىماڭ. سىز خەتنى ئەۋەتىش ئۈچۈن فۇنكسىيە, ئەۋەتىڭ, Pry_hml_pemail, قانداقلا بولمىسۇن, شۇڭا ئۇنداقتا بۇنى سىز ئاللىبۇرۇن ئىشلەتكۈچى قىلىپ بولغان كودنى يازدۇق.pip install django-crispy-forms
def_hTlml_Email (ئىشلەتكۈچى, Mail_Subjing, dix_message):
to_email = ئىشلەتكۈچى .mail
ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى. ئىشلەتكۈچى ئىسمى
ئەگەر topmail == '' ':
قايتۇرۇڭ
Unbub_link = تەڭشەكلەر = stancide_ try.srol + user.rus.Crifile.Cunsmist_Link ()
HTML_Message = HTML_Message + "leubrisccabe"
MSG = ئېلېكترونلۇق خەت ۋاقتى (خەت ئۈنۈمى, SACHAP_TAGS), تەڭشەكلەر = expermage]: '<' + ungerkink + "> upersh_link +
MSG.ATTACH_ALTERTANATIONAL (HTML_Message, "تېكىست / HTML")
profile = ئىشلەتكۈچى: group.Profile
سىناپ بېقىڭ:
Msg.send (مەغلۇب بولۇش = يالغان = يالغان)
ئەگەر بولمىسا
Profile.enmail_valid = true
Profile.Save ()
بۇنىڭ سىرتىدا:
Profile.enmail_valid = يالغان
Profile.Save ()بۇ سەل مۇرەككەپ, بىز بۇ كودنىڭ ھەممىسىنى تېخى ئىجرا قىلىشقا تەييارلانمايمىز. بىز UNUB_Link نى بىلمىۋاتقانلىقىمىزغا دىققەت قىلىڭ, ئىشلەتكۈچى ئېلېكترونلۇق خەت ساندۇقىڭىزدىن مۇشتەرى بولالايدۇ. بۇ ئىنتايىن مۇھىم, ئىشلەتكۈچىلەر ئۇلارنى كۆرگۈسىلا قالغانلارنى كۆرمىسە, ئېلېكترونلۇق خەتلىرىنى تاللىسام كېرەك. بىز يەنە ئۇچۇرنى تاللاش قوشقان ئۇچۇرىمىزغا تېكىستنى باشقا تاللاش قوشۇپ قالىمىز, بۇ توغرا HTML algs نىڭ HTML بەلگىسى. ئاخىرىدا شۇنداقتتىن كېيىن, ئېلېكترونلۇق خەت ئەۋەتىلگەنلىكى ئەگەر ئۇنداق قىلمىغان بولسا, بىز ئېلېكترونلۇق خەتنىڭ ئارخىپىدا ئۇلارنىڭ ئېلېكترونلۇق خەت ئارخىپىدا ئەۋەتىمىز.
ئىشلەتكۈچى مودېلىغا قايتايلى, شۇڭا بىز بۇ بارلىق خىزمەتلەرنى قىلالايمىز. بىز مۇشتەرى بولۇش ئۈچۈن ئۇلىنىش ھاسىل قىلىش ئۈچۈن ئۇلىنىش ھاسىل قىلىش ئۈچۈن خەتەر ھاسىل قىلىش ئۈچۈن, Boolean ساھەگە ئېنىقلىما بېرىش ئۈچۈن ئىشلەتكۈچىنىڭ ئېلېكترونلۇق خەتنىڭ ئىناۋەتلىك ئەمەس بەلگىلىگەنلىكىگە ئېنىقلىما بېرىشىمىز كېرەك. # بىرىنچى, ئابونتلار / مودېللارنىڭ ئۈستىگە تۆۋەندىكى ئىمپورتلارنى قوشۇڭ. R.py
Nano ئابونتلىرى / مودېللار .py# ... DJANNANO.CORGING ئىچكى ۋاقىت جەدۋىلىنىڭ قىسقىچە مەزمۇنى, Bad Basugnature, ئىمزا DJANGO.URLS نىڭ ئەكىرىش
...
كېيىنكى قەدەمدە, ئىشلەتكۈچى مودسىغا ئىقتىدار قوشايلى, بەلگە قىلىش ئۈچۈن توكنى قوشۇپ بېرىپ, ئېلېكترونلۇق خەتنى ئىشلىتىپ, ئىشلەتكۈچىنىڭ خەتنى تاپشۇرۇۋالغان ياكى ئۇلارنىڭ خەتنى تاپشۇرۇۋالغان ياكى تاۋلىنىشىنى زىيارەت قىلىش ئۈچۈن ماشىنىنى ساقلاش ئۈچۈن «تاياقنى ساقلاش ئۈچۈن بۇلاڭچىنى ساقلاڭ. ئىشلەتكۈچىلەر / مودېللاردا.py غا يەنە تۆۋەندىكى كودنى مودېلنىڭ ئاخىرىغا قوشۇڭ (بايان قىلىنغان كود)# ... fail_valid = Models.booleanfield (سۈكۈت = True) Def گىرىم قىلىش (ئۆزى): قايتىش ۋاقتىنى قايتۇرۇش (). ئىمزا (self (self.user.user.username) def تەكشۈرۈش_token (ئۆزىنى, بەلگە): سىناپ بېقىڭ: ئاچقۇچ = '% s:% s'% (ئۆز-ئۆزىگە .ser.user.username, بەلگە) ۋاقىت بەلگىسى (). Endnivid (كۇنۇپكا, max_age = 60 * 30 * 30 * # 30 كۈن كۈچكە ئىگە بۇنىڭ سىرتىدا (ناچارلىشىش, ئىمزا): يالغان TRUE TRUE def are_unsubscribe_link (ئۆزى): ئىشلەتكۈچى ئىسمى, togen = eld.make_token (). بۆلۈنگەن (: ":", 1) تەتۈر قايتۇرۇڭ ('ئىشلەتكۈچىلەر: مۇشتەرى بولۇش: kwargs = {«ئىشلەتكۈچى ئىسمى»: ئىشلەتكۈچى ئىسمى, outken,})
...30 كۈن كۈچكە ئىگە
بۇ بىر قەدەر ئاددىي, بىز ۋاقىت جەدۋىلى ئىشلىتىمىز, بۇ ئاساسلىق ۋاقىتتىن كېيىن ۋاقىت سەرپ قىلىپ, بىر ئاز ۋاقىتتىن كېيىن تولغان بولغان بىر ئىقتىدار ئىشلىتىمىز, ئۇنىڭ ئىناۋەتلىك ئىكەنلىكىنى تەكشۈرۈپ تەكشۈرىمىز. بىز بۇ بەلگىلەرنى ئىككى قېتىم ئىشلىتىمىز, ئېلېكترونلۇق خەتنى دەلىللەش ئۈچۈن بىر قېتىم ۋە مۇشتەرىلىك ئۇلانمىسىغا بىر قېتىم.ھازىر بىزدە بۇلار بار, بىز قىلىشىمىز كېرەك بولغان ئىشلارنىڭ ئاخىرقىسى كۆز قاراشتا. ئىشلەتكۈچى / iigws.py. كۆرۈنۈشىمىز بىر قاراش قوشۇپ, ئېلېكترونلۇق خەت ئادرېسىنى دەلىللەپ, مۇشتەرى بولۇڭ.
Nano ئابونتلىرى / كۆرۈنۈشى .pypython manage.py startapp users
بىرىنچى, تۆۋەندىكى ئىمپكىنى قوشۇڭ. مەن بىر نەچچە ئېغىزغا تاشلىدىم, شۇڭا كېيىن يەنە كۆپ تۈرلەرنى قايتا ئەكىرىشكە بولمايدۇ.django.cancanctibrent.authord django.shortts نىڭ ئەكسىچە, قايتا نىشانلاش, قايتا نىشانلاش, A غا ئېرىشىش_ a got_or_ord4 django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى DJANGO.ULTIONS.ENCOUNCE ENDOWAPOPLEWAPTOPE_STER DJANNGO.UTTH.HTP erglfe_blase_bels6_encode6_ېن_ېنسې JSON نى ئەكىرىش تۆلەم تەلەپ قىلىش ئىمپورت ۋاقتى, ئىز قوغلاش Django.Canctibribd ئەكىرىش of .modeLes ئەكىرىڭ DJANGO.IWLE نىڭ ئىمپورت ۋاقتى django.Views.Dectorators.CACHACHE.CACHE RESETORD .Email Exmance_verce_ermium_mail # دەلىللەش ئېلېكترونلۇق خەت ئەۋەتىش ئىقتىدارىنى ئىمپورت قىلىڭ django.conbib.auth.decorators ondockent_requach djangou.auth.mix.mixists كىرىش كىرىش چەكلەنگەن, ئىشلەتكۈچى باھالانغان DJANGO.UTHITHYS.DECORANSY PODECEMETIONTIONTIONSY POLDEETION DJANNGO.HTP ئىمپورت http://hat http://rathttp DJANGO.CONF مەنبە DJANGO.IWLE نىڭ ئىمپورت ۋاقتى ئىمپورت ۋاقتى pify pytz django.Views.Decorators.csrf.csrf ئىمپورت قىلغۇچىلار CSRF_ExEmpt DJANNGO.HTP ئىمپورت http://rathttp django.cant.auth.towens defork wead_topken_generator DJANNGO.UTHITS.HTP erghtp ergerfe_basfe_Base6_decode .turens نىڭ ھېسابات_ ھېسابات__active_token
دەلىللەش ئېلېكترونلۇق خەت ئەۋەتىش ئىقتىدارىنى ئىمپورت قىلىڭسىزدە بۇ ئىمپورتتىن باشقا بەزىلىرىڭىز بار, ئەمما ئۇلارنى تەكرارلاشقا زىيان يەتكۈزمەيدۇ. سىز دەلىل ئېلخەت ئەۋەتىش ئىقتىدارىنى ئىمپورت قىلىشىڭىز كېرەك, شۇنداقلا ئابونتلار .tom.tomet.trokencلىرى بۇنىڭ ئىچىدە.
ھازىر ھۆججەتنىڭ ئاستىدا, تۆۋەندىكى كودنى قوشۇڭ:مۇشتەرى بولۇڭ (تەلەپ, ئىشلەتكۈچى ئىسمى, بەلگە): ئىشلەتكۈچى = gre_oodject_or_ord4 (ئىشلەتكۈچى, ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى) ئەگەر # مۇشتەرى بولۇڭ profile = ئىشلەتكۈچى: group.Profile Profile.subscribded = يالغان Profile.Save () RET RETNER (تەلەپ, 'userd / issbscriber.html') # باشقا كىرىش بېتىگە قايتا نىشانلاش ئۇچۇرلار.'Arning (تەلەپ) كېيىنكى_لار = تەتۈر ('ئىشلەتكۈچىلەر: مۇشتەرى بولۇڭ), KWARGS = {«خەت ئىشلەتكۈچىلەر»: بەلگە,}) قايتىپ كەلدىڭىز http://resson Def ئاكتىپلاش (تەلەپ, Uidb64, بەلگە): سىناپ بېقىڭ: UID = SATE_STR (URLSAFE_BAFORE64_DECODE (UTBB64)) ئىشلەتكۈچى = ئىشلەتكۈچى. تېمىلار .get (pk = uid) بۇنىڭ سىرتىدا (تىپىك ئىگىسى, قىممەتسىز, ئېشىپ كەتتى ئىشلەتكۈچى = none ip = get_client_ip (تەلەپ) ئەگەر ئىشلەتكۈچى يوق, ھېسابات_ تەنگىلىش_token.check_token.Checken (ئىشلەتكۈچى, بەلگە): User.Profile.Email_verdied = توغرا User.Profile.save () User.Save () # SEXELUBUBUREEMEMEMEMEME (تەلەپ, ئىشلەتكۈچى) ئۇچۇرلار. قايتا نىشانلاش (ئىشلەتكۈچى. profile.rofile.Crepeled_ بەلگىسى_) ELSE: ئۇچۇرلار. قايتا نىشاننى قايتۇرۇڭ ('دەلىللەش: دەلىللەش:' Def read Iefond_actiatimation (تەلەپ): ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما: flate = readixiviveivenibientifience (تەلەپ .post) file = require.post ['ئېلېكترونلۇق خەت]] سىناپ بېقىڭ: ئىشلەتكۈچى = ئىشلەتكۈچى. Twist.Get.get (ئېلېكترونلۇق خەت = ئېلېكترونلۇق خەت) SENT_VENICE_EMAME (ئىشلەتكۈچى) ئۇچۇرلار. قايتا نىشان (تەتۈر ('دەلىللەش: دەلىللەش: دەلىللەش)) بۇنىڭ سىرتىدا: ئۇچۇرلار. (تەلەپ) (تەلەپ, F'Your ئېلېكترونلۇق خەت توغرا ئەمەس. قايتا سىناڭ. ') ELSE: جەدۋەل = قايتا قوزغىتىش ماتېرىيالىنى قايتا بەلگىلەش () قايتىش
چۈشەندۈرۈش ئۇلارنى مۇشتەرى بولۇڭ username = request.POST['username'] # باشقىچە كىرىش بېتىگە قايتا نىشانلاش
password = request.POST['password'] # ئەۋەتىش خەتەرلىك (تەلەپ, ئىشلەتكۈچى)
بۇ نۇرغۇن كود. ئۇنى بۇزۇۋېتەيلى. بىرىنچى ئىقتىدار, پاكىز ۋە ئاددىي, ئىشلەتكۈچىنىڭ خەت ساندۇقىدىكى مۇشتەرى بولغان. ئىككىنچى ئىقتىدارلىق فاك مەخپىينامىسىنى ئاكتىپلايدۇ, ھەمدە باھا, سىز بىر بىخەتەرلىك ئەۋەتىلگەن كارانى ئەۋەتەمسىز. قارشى ئېلىنىش ئېلېكترونلۇق خەت ئەۋەتىش ئۈچۈن ئېلېكترونلۇق خەت ۋە ئىقتىدار ئېنىقلىمىسىنى جەزملەشتۈرۈشنى قارشى ئالىمىز, مەن تېخى يوق. مەن مىننەتدارلىق بىلدۈرىمەن, چۈنكى ئاكتىپلاش ئېلېكترونلۇق خەت ۋاقتى توشىدۇ. شۇڭلاشقا, بىز ئاكتىپلاش ئېلېكترونلۇق خەتنى بىر قىسىم ئېلېكترونلۇق خەتكە قايتا تاپشۇرۇۋېلىشىمىز كېرەك. بىز بۇنىڭ ئۈچۈن ئاساسىي جەدۋەلنى ئىشلىتەلەيمىز ۋە دەلىل-ئىسپات ئەۋەتىش ئۈچۈن ئىقتىدارنى چاقىرىمىز. بۇنى قىلىشتىن بۇرۇن, ئۇنى ئېلان قىلىش چاقىرىقىغا ئەۋەتىش ئارقىلىق ئۇنىڭ بىرىنچى ئورۇنغا قويۇپ بېرىلىشىگە كاپالەتلىك قىلسۇن. تىزىملىكتىن بۇرۇن بۇ قۇرنى تىزىملىك كۆرۈنۈشىدىن بۇرۇن, ئىشلەتكۈچى / كۆرۈنۈش.Nano ئابونتلىرى / كۆرۈنۈشى .py
# ... (كېيىن) رەت قىلىش (تەلەپ) (تەلەپ): SENT_VENICE_EMAME (ئىشلەتكۈچى) # ... (ئىلگىرى) قايتا نىشانلاش (mkdir users/templates
mkdir users/templates/users
... (ئۇنىڭدىن كېيىن) رەت قىلىش (تەلەپ):... (ئىلگىرى) قايتا نىشانلاش (
بۇ كود ئىسكىلاتىدا بىرىنچى ۋە ئاخىرقى قۇر قوشۇشىڭىزنىڭ ھاجىتى يوق, تىزىملاش ئېلېكترونلۇق خەتنى ئىشلەتكۈچىگە ئەۋەتىشىگە كاپالەتلىك قىلىش كېرەك. ئۇ مۇنداق بولۇشى كېرەك:nano users/templates/users/login.html
# ... ئىمپورت
ئىمپورت قىلىنغان ئىمپورت ئىشلەتكۈچىلەر
Ref تىزىملىتىڭ (تەلەپ):
ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما:
جەدۋەل = ئىشلەتكۈچى (تەلەپنى)
ئەگەر شەكىلدە.
ئىشلەتكۈچى = جەدۋەل.
SEND_VENICE_EMILE_EMARD (ئىشلەتكۈچى) # بۇ قۇرنى قوشۇڭ!
ئۇچۇرلار.
قايتىش... ئىمپورت
بۇ قۇرنى قوشۇشقا كاپالەتلىك قىلىڭ!
ھازىر, ئاكتىپلاش ئېلېكترونلۇق خەتنى ئەسلىگە كەلتۈرۈش ئۈچۈن جەدۋەل قوشۇشىمىز كېرەك. ئىشلەتكۈچىلەر / جەدۋەلدە .py, تۆۋەندىكى جەدۋەلنى قوشۇڭ:# ... (ئىمپورت) سىنىپقا ئېرىشكىلى بولىدىغانلىقى (جەدۋەل. شەكلى): infoet = DIMET.EMALFILD (تەلەپ قىلىنغان = راست)
... (ئىمپورت)
بىز يەنە ئېلېكترونلۇق خەت قوزغىتىش جەدۋىلىنى قايتا قاچىلاش شەكلىگە ماس كېلىدىغان قېلىپقا ئېھتىياجلىقمۇ? بۇ قېلىپنى قوشايلى. ھۆججەتنى تەھرىرلەڭ:Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچىلەر / realdle / readd_stive.html
ئۇنىڭدىن كېيىن, تۆۋەندىكى كودنى ھۆججەتتە قوشۇڭ.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']
{% Base.html 'نى كېڭەيتىدۇ}
{% توسۇش مەزمۇنى%}
{% LUPY_TRES_TAGS%}
{% CSRF_TOCKEN%}
ئاكتىپلاش ئېلېكترونلۇق خەتنى قايتا ئەۋەتىڭ
{{جەدۋەل | چۈرۈك}}
ئاكتىپلاش ئېلېكترونلۇق خەتنى قايتا ئەۋەتىڭ
{% ENGOBLY%}WHEW, بۇ بەك كۆپ! ھازىر بىز مۇلازىمېتىرغا كودقا ئورۇنلاشتۇرۇلغان مۆجىزە, بىز HTMLPA نى چەكلىيەلەيمىز ھەمدە ئابونتلارنىڭ ھېساباتىنى زىيارەت قىلىڭ. بىز يەنە ئاددىي قارشى ئالىدىغان ئېلېكترونلۇق خەت ئەۋەتىشنى خالايمىز, ئۇنداقتا شۇنداق قىلىشنى كۆرۈپ باقايلى. ئىشلەتكۈچى / ئېلېكترونلۇق خەت ساندۇقىغا قايتىش, تۆۋەندىكى كودنى قوشۇڭ:
def ئەۋەتىش ئىشلەتكۈچى = get_user_model () HTML = ئوچۇق ('{} / ئىشلەتكۈچى / قارشى ئېلىش_ {} / enmm.htmm'.htmm'.htmm'namet (تەڭشەكلەر. Addration_dir) تېما = «+ تەڭشەك] نى قارشى ئالىمىز. قېلىپ = قېلىپ (HTML) subjtompless = قېلىپ (تېما) مەزمۇن = مەزمۇن = مەزمۇن ({نىڭ «ئىشلەتكۈچى ئىسمى»: ئۇچۇر. sondentremplateplate = template.relander (مەزمۇن) subjcontext = مەزمۇن ({«ئىشلەتكۈچى ئىسمى»: ئىشلەتكۈچى. ئىشلەتكۈچى. ئىشلەتكۈچى ئىسمى}) subjredsedtemplatemplate = تارماقلارغا. Abjtemplate.remen (Subjcconteext) shalk_hml_Emal_Email (ئىشلەتكۈچى, تارماق پروگراممىچىلىق)شۇنداقلا, بۇ ئۇچۇرلارنىڭ ھەممىسىنى ئېيتىش ئۈچۈن قېلىپ ئېھتىياجلىق بولىمىز. مېنىڭ تور بېتىمدە, قېلىپ تۆۋەندىكىدەك, ئەمما سىز ئۇنى ياقتۇرىسىز.
{{{Addle_name}}} ياخشىمۇسىز {{ئىشلەتكۈچى ئىسمى}}}}, بىز سىزنى بۇ يەردە كۆرۈپ خۇشال بولدۇق! {{Server_name}}}}}}}}}}}}}}}}} بوشلۇق. باشلاش ئۈچۈن, بۇ يەردە كىملىكىڭىزنى دەلىللىگەندىن كېيىن قىلالايدىغان بىر قانچە ئىش. بۇ دېتالنى ئىشلىتىڭ. بۇ {{{Server_name}} نىڭ ئاساسلىق بېتى} شەخسىي {{{Seport_name}} light. بۇ مەن بىلەن تونۇشماقچى بولغان ھەر بىر بەت. تېخىمۇ كۆپ ئارخىپ تۇرىدۇ. بۇ كىشىلەرنى تور بېكەتتىن تاپالايسىز ۋە ئۇلارنىڭ مەزمۇنىنى كۆرۈڭ. بۇ يەردىكى بارلىق يازمىلارنى كۆرۈڭ. بۇ {{{Seam_name}. بۇ تور بېكەتتە تېخىمۇ كۆپ نەرسە بار, شۇڭا زىيارەت قىلسىڭىز بولىدۇ ۋە كۆرگەنلىرىڭىزنى كۆرۈڭ. ھەر بىر بەتتە ھەر قانداق كۇنۇپكىنىزىتىپ ھەمبەھىرلىسىڭىز بولىدۇ. ۋاقتىڭىزنى {{SILE_NAME} دىن ھۇزۇرلىنىشىڭىزنى ئۈمىد قىلىمەن}! بۇ يەردە بولغانلىقىڭىزغا رەھمەت. نۇرغۇن مۇھەببەت بىلەن, {{Model_name} {{Base_url}}# شۇنىڭغا دىققەت قىلىڭكى, بىز بەدەن ياكى HTML بەلگىلىرىنى يۇمۇلمايمىز كەمچىلىكىنى چۈشەنمەيمىز, چۈنكى بىز چوقۇم HTML مۇشتەرى بولاڭچى. بۇلار مۇھىم, ئەمما ئۇلارنى ئىككى قېتىم بەلگىلىمەيمىز.
ئۇنداقتا, قانداقراق? بىز ئۇزۇن يولدۇق. ھەقىقەتەن, تور بېكەتنى مۇلازىمېتىرغا ئورۇنلاشتۇرۇشىمىز كېرەك. بىز @login_ چەكلىمىلىك بېزەكچىمىزنى بۇزۇپ, كۆز قارىشىمىزنى بۇزۇپ چىقىمىز, ئىشلەتكۈچى تىزىمغا سازاۋەرگىچە ئەۋەتىپ, ئاپتوماتىك تىزىملاتتىڭ ۋە ساقلاڭ ئېلېكترونلۇق خەت ياكى ساقلاڭ تور توربېكەتگە مۇناسىۋەتلىك بولۇشنى توغرا ئورۇنغا كەلتۈرۈشنىڭ ئاساسى. بىز تېخىمۇ پايدىلىق بىر قانچە ئىقتىدار قوپالايمىز, ئاندىن كودىنى ئورۇنلاشتۇرۇشنىڭ ئاساسى يىراق قىلىپ يىراق مۇلازىمېتىرغا ئورۇنلاشتۇرۇش, ئېلېكترونلۇق خەتنى قۇر قۇرۇش, تور بېكىتى قۇرۇش ۋە مۇۋاپىق بولۇشىمىز ئۈچۈن تور بېتىمىزنى بىخەتەر قىلىش ۋە مۇۋاپىق قىلىش ئۈچۈن تور بېتىمىزنى بىخەتەر ۋە مۇۋاپىق قىلىش.بىزمۇ پارولنى ئەسلىگە كەلتۈرۈش نۇقتىسىغا ئېھتىياجلىق بولىمىز, شۇڭا بۇنى تېز قوشايلى. داڭگونىڭ مەخپىي نومۇرنى ئەسلىگە كەلتۈرۈش نۇقتىسى بىر قىسىم ئىقتىدارلار سۇنۇپ كېتىدۇ, ئەمما بىز ئۆز-ئارا كۆرۈش, ئېلېكترونلۇق خەت, جەدۋەل ۋە URL ئەندىزىسىنى قانداق يېزىشقا قارايمىز. بۇ قاراشنىڭ قانداق كۆرۈنۈشىگە ئوخشايدۇ, ئىشلەتكۈچىلەر / كۆرۈنۈشى
# ... ئىمپورت django.cant.auth.towens defork wead_topken_generator django.cancent.auth.autd. خامچوت سىستېمىسى DJANNGO.UTHITS.HTP erghtp ergerfe_basfe_Base6_decode DIME DIRET_RETST (تەلەپ, Uidb64, بەلگە): ئىشلەتكۈچى = gre_oj noad_or_or_404 (ئىشلەتكۈچى, id = urlsafe_base64_decode (UIDB64)) ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما: جەدۋەل = SETPASSSWORDWORD (ئىشلەتكۈچى, تەلەپ .post) ئەگەر جەدۋەل .IS_MALIDAID () ۋە Deple_Token_generation.checken_tocken (ئىشلەتكۈچى, بەلگە): form.save () ئۇچۇرلار. (تەلىپىڭىز, 'پارولىڭىز ئەسلىگە كەلتۈرۈلدى.') ELIF فورما ئەمەس ._ ئىناۋەتسىز (): ئۇچۇرلار. (تەلەپ: 'پارولىڭىز ماس كەلمەيدۇ, ياكى تەلەپكە ماس كەلمەيدۇ ياكى تەلەپكە ماس كەلمەيدۇ. قايتا سىناڭ.') قايتا نىشان (تەلەپ .path) ELSE: ئۇچۇرلار. (تەلەپنى ئەسلىگە كەلتۈرۈش (مەخپىي نومۇرنى ئەسلىگە كەلتۈرۈش ئۇلانمىسىڭىز ۋاقتى توشتى. يېڭىسىنى قۇرۇڭ. ') قايتا نىشان (تەتۈر) قايتۇرۇڭ («ئىشلەتكۈچىلەر: كىرىش»)) قايتۇرۇش «ماۋزۇ»: «پارولىڭىزنى ئەسلىگە كەلتۈرۈڭ», 'جەدۋەل': SEEPAPSSSWORDWOWN (ئىشلەتكۈچى)from django.db import models # ... ئىمپورت
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # بۇ جەدۋەل DJANGO غا سېلىۋېتىلىدۇ, ئەمما بىز پارولنى ئەسلىگە كەلتۈرۈش, ئىشلەتكۈچى / قېلىپ / ئىشلەتكۈچى / ئىشلەتكۈچى / پارولنى جەزملەشتۈرۈش ئۈچۈن قېلىپلاشتۇرۇلىدۇ, ئىشلەتكۈچى / قېلىپ_
{% Base.html 'نى كېڭەيتىدۇ}
{% LUPY_TRES_TAGS%}
{% توسۇش مەزمۇنى%}
{% CSRF_TOCKEN%}
پارولنى ئەسلىگە كەلتۈرۈڭ
{{جەدۋەل | چۈرۈك}}
پارولنى ئەسلىگە كەلتۈرۈڭ
{% checkblock مەزمۇنى%}بىزدە پارولنى ئەسلىگە كەلتۈرۈش ئۈچۈن مەخپىي نومۇر ئەۋەتىشنىمۇ بىر قېلىپ, ئاددىي شەكىلدە ئېلېكترونلۇق خەت, ئاددىي شەكىل, In ئاددىيلاشتۇرۇڭ, IN / قېلىپ / ئىشلەتكۈچى / nexty.html
{% Base.html 'نى كېڭەيتىدۇ} {% LUPY_TRES_TAGS%} {% توسۇش مەزمۇنى%} {% CSRF_TOCKEN%} پارولنى ئەسلىگە كەلتۈرۈڭ {{جەدۋەل | چۈرۈك}} پارولنى ئەسلىگە كەلتۈرۈش تەلەپ قىلىڭ {% checkblock مەزمۇنى%}ئېلېكترونلۇق خەتنىڭ ئۆزى ئەقىل-پاراسەت, ئۇ ئاساسىي ھۆججەتنى بەلگىلەش ئۈچۈن ئاساسىي HTML ھۆججىتى, ئىشلەتكۈچى / قېلىپ / ئىشلەتكۈچى / ئىشلەتكۈچى / ئىشلەتكۈچى / nameint_Eml.html.html.html.html.html. DJANNO بۇ ھۆججەتنى ئاپتوماتىك چۈشەندۈرۈپ بېرىدۇ.
Uglek - پارولىڭىزنى ئەسلىگە كەلتۈرۈڭ ياخشىمۇسىز, پارولىڭىزنى ئەسلىگە كەلتۈرۈش ئۈچۈن, بۇ يەرنى چېكىڭ. ئۇنىڭدىن باشقا, تۆۋەندىكى ئۇلىنىشنى توركۆرگۈڭىزگە چاپلىيالايسىز: HTPUCLEK.com {% URL 'URL' URLAME_RESSTING_RORT_CONDVENDFFR = UITB64 = UIL TOKE = ATECKET%} پارولنى ئەسلىگە كەلتۈرمىگەن بولسىڭىز, بۇ ئېلېكترونلۇق خەتكە سەل قارىسىڭىز بولىدۇ. بىزگە قوشۇلغانلىقىڭىزغا رەھمەت, جۇخارگۈلى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='')
يەنە ئىككى قېلىپقا ئېھتىياجلىق بولىمىز. بىرىنچىسى, ئېلېكترونلۇق خەتنىڭ ئەۋەتىلگەنلىكىنى جەزملەشتۈرۈش. بۇلار ئۈچۈن ئاللىبۇرۇن كۆرۈنۈشلەر ئاللىقاچان DJANNGO دا, شۇڭا بىز پەقەت URL لىرىدا ھەل قىلىشىمىز كېرەك. بۇ قېلىپ ئابونتلار / قېلىپ / ئىشلەتكۈچى / پارول_ nonepet_done.html غا جايلاشقان{% Base.html 'نى كېڭەيتىدۇ} {% توسۇش مەزمۇنى%} پارولىڭىزنى ئەسلىگە كەلتۈرۈش ئۈچۈن كۆرسەتمە بىلەن ئېلېكترونلۇق خەت ئەۋەتىلدى. {% checkblock مەزمۇنى%}
ئاخىرىدا, پارولنى ئەسلىگە كەلتۈرۈش تاماملانغان, ئىشلەتكۈچىلەرنى ئەسلىگە كەلتۈرۈشنىڭ تاماملانغانلىقىنى جەزملەشتۈرۈش ئۈچۈن, ئىشلەتكۈچى / ئىشلەتكۈچى / پارول_ nowtemplete.html{% Base.html 'نى كېڭەيتىدۇ} {% توسۇش مەزمۇنى%} پارولىڭىز بېكىتىلدى. بۇ يەرگە كىرىڭ {% checkblock مەزمۇنى%}
ھازىر, بىز بۇ قاراشلارنىڭ URL ئەندىزىسىگە موھتاج. ئىشلەتكۈچىلەر / URLS.PY, تۆۋەندىكى URL ئەندىزىسىنى قوشۇڭ:# URLPATTERNS = [
# ... ئالدىنقى URL لار
يول («پارولنى ئەسلىگە كەلتۈرۈش /»,
Auth_Views.passwordRefortfiew.s_View (
template_ image = 'ئىشلەتكۈچىلەر / tempet_Rether.htelt.html.html',
HTML_EMAMM_TOMW_TOMPTER_NAME_NAME = 'ئىشلەتكۈچىلەر / nexteml_hetml_enmal.html'
),
name = 'promple_reptset'),
يول («پارولنى ئەسلىگە كەلتۈرۈش / تاماملاش /»
Auth_Views.passwordRefoneVentView.As_View (
template_ image = 'ئىشلەتكۈچى / پارول_ thatset_done.html'
),
name = 'prompt_reset_done'),
يول («پارولنى ئەسلىگە كەلتۈرۈش) جەزملەشتۈرۈش /// ',
Auth_Views.passworlddondrewsfrewfival.as_View (
template_ image = 'ئىشلەتكۈچىلەر / پارول_ thatset_confirm.htmlf.htmlf.htmlf.html'
),
name = 'pradespt_reptset_conmedful'),
يول («پارولنى ئەسلىگە كەلتۈرۈش تاماملاندى / ',
Auth_Views.passworldreateTompleteview.A_View (
template_ image = 'ئىشلەتكۈچىلەر / tempoes_Reet_Complete.html'
),
name = 'prompt_Reet_Complete',
]
Profile.objects.create(user=user) # ... ئالدىنقى URL لار بۇ يەردە
تۆت قېلىپ, بۇ بەك كۆپ! ھازىر بىز ئېھتىياجلىق بولغاندا ئىشلەتكۈچىنىڭ پارولىنى قايتا قاچىلىيالايدىغانلىقىمىز ئۈچۈن, بىز توركۆرگۈدىن بارلىق توركۆرگۈدىن ۋاز كەچسەم بولالايمىز.بۇنى چۈشىنىمەنكى, بۇ نۇرغۇن كود. ئەگەر بېشىڭىزدىن سەل قالتىسكەنتەك كۆرۈنسە, بولىدۇ. سىز ياخشىايتۇرىسىز, چۈشىنىشىڭىز ياخشىلىنىدىغانلىقىنى, سىز بىر تېز كود بىلەن تېخىمۇ كۆپ ئىقتىدارلىق بولۇپ قالىسىز. ئەگەر سىز پۈتۈنلەي يۈتۈپ كەتكەن بولسىڭىز, بۇ يۇمشاق دېتالنى ئۆز ئىچىگە ئالغاندىن كېيىن بۇ يۇمشاق دېتالغا قايتىپ كېلىپ, توردا دەرسلىكتە ئوقۇشقا تىرىشىدىغانلىقىنى تەۋسىيە قىلىمەن. بۇلار ئادەتتە خۇشال بولىدۇ, سىز بۇ تۈرگە قايتىپ كېلىشىڭىز ئۈچۈن سىزنى مۇۋەپپەقىيەت قازىنىشىڭىز كېرەك. داۋاملاشتۇرۇشقا تەييار بولسىڭىز, ئوقۇڭ, ھەرىكىتىنىڭىزنى يىراق مۇلازىمېتىرغا ئورۇنلاشتۇرۇپ, خەت مۇلازىمېتىرىنى بەلگىلەيمىز, شۇنداقلا خەتنى تەڭشەشنى ئاپتوماتىك ئاپتوماتىك سېتىش ئورنى شۇنچە سىز ھەمىشە بىر نەچچە ئاددىي بۇيرۇق ئارقىلىق يېڭى تۈر قۇرالايسىز.
يىراقتىن مۇلازىمېتىرغا ئورۇنلاشتۇرۇشتىن بۇرۇن قىلىشقا تېگىشلىك ئەڭ ئاخىرقى ئىش تور بېتىمىزنى ئازراق بىخەتەر قىلىپ قىلىش. سىز كىرىش كۆرۈنۈشىنىڭ پەقەت ئىشلەتكۈچى ئىسمى ۋە پارولىنىلا ئالىدۇ, ھەمدە كۆپ ئامىل دەلىللەش ياكى بىر قېتىم كود يوق. بۇ ئاسان ئوڭشاش, ئوخشاش كود بىلەن تور بېتىمىزنى قىسقا ئۇچۇر ئەۋەتىمىز, ھەتتا مۇلازىمېتىرغا ئەۋەتىلگەن تېكىست ئۇچۇرلارغا چۈشىمىز. باشلاش ئۈچۈن, ئىشلەتكۈچى مودېلىغا قايتىمىز ۋە ھەر بىر كىرىشكە ۋەكىللىك قىلىدىغان ۋاقىت جەدۋىلى قوشۇڭ. بىز يەنە ئىشلەتكۈچى مودېلغا بولغان بىخەتەرلىكنى ئۆز ئىچىگە ئالغان بولۇپ قېلىشىمىز ئۈچۈن, كىرىشىمىز كېرەك. ئىشلەتكۈچى تىپى, ئىشلەتكۈچىلەر / مودېللارنى تەھرىرلەش, تۆۋەندىكى كودنى قوشۇڭ:# DJANGO.DB ئىمپورت مودېللىرىدىن
django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى
DJANGO.IWLE نىڭ ئىمپورت ۋاقتى
# UUID, ۋاقىت جەدۋىلى سىگنال ۋە URL گېنېراتورى (تەتۈر) ئىمپورت قىلىش
ئىمپورت Uuid
DJANNANO.CORGING ئىچكى ۋاقىت جەدۋىلىنىڭ قىسقىچە مەزمۇنى, Bad Basugnature, ئىمزا
DJANGO.URLS نىڭ ئەكىرىش
CLASS ئارخىپى (Models.Model):
ئىشلەتكۈچى = مودېلى. ONDOTOONEFILD (ئىشلەتكۈچى, aboutlelete = مىسال, NULL = The Reman = trade = trade_name = 'ئارخىپ ")
Emart_Creted = Models.datetorfield (سۈكۈتتىكى = Ameverzone.now)
final_seen = Models.datertfield (سۈكۈتتىكى = ۋاقىت = ۋاقىت)
can_Login = Models.datertfield (سۈكۈتتىكى = Ameverzone.now)
lovered_name = models.charfield (Max_legth = "", ", NLLLE = NULLE, BREELT = BLECKET = Trin = try = try = try = try)
Bio = Models.textfield (قۇرۇق = راست, سۈكۈتتىكى = '')
# بۇ كودنى بۇ يەرگە قوشۇڭ
UID = ModyraR.chanfield (Max_legth = 32, سۈكۈت = UUIID.UIID.UIID4, NULL4, NLLENT = BLEKET = Trin = try = trin = try)
mfa_enabled = مودېللار .booleanfield (سۈكۈت = يالغان)
Accle_mfa = Models.booleanfield (سۈكۈت = يالغان)
تېلېفون_number = Models.charfield (سۈكۈت = ', Null, null, bly, bly, bry, max_length = 15)
دەلىللەش_ مودېل = مودېللار. ئوتتۇراھال = '', NLLLE, NLLELE, BALLE, BALLE, MAX_LEGTY = 15)
دەلىللەش_code_length = Models.interefield (سۈكۈتتىكى = 6)
MFA_CODE_EXPITER = Models.Datertfield (سۈكۈتتىكى = ۋاقىت = ۋاقىت)
MFA_ATTEMPTS = Models.interefield (سۈكۈتتىكى = 0)
Def گىرىم قىلىش_auth_token (ئۆزى):
ۋاقىت جەدۋىلىنى قايتۇرۇڭ (). ئىمزا (self (self.uid)
# ۋە بۇ ئىقتىدارنى قوشۇڭ
def fore_auth_url (ئۆزى):
ئىشلەتكۈچى ئىسمى, terken = self.make_auh_ten_ten (). بۆلۈنگەن (: "": "
تەتۈر قايتۇرۇڭ («ئابونتلار: MFA», KWARGS = {«ئىشلەتكۈچى ئىسمى»: ئىشلەتكۈچى ئىسمى, outken,})
def تەكشۈرۈش_auth_token (ئۆزىنى, بەلگە):
سىناپ بېقىڭ:
ئاچقۇچ = '% s:% s'% (ئۆز-ئۆزىگە)
ۋاقىت بەلگىسى (). Endnivn (كۇنۇپكا, MAX_AGE = 60 * تەڭشەك.
بۇنىڭ سىرتىدا (ناچارلىشىش, ئىمزا):
يالغان
TRUE TRUE
if user and user.profile.can_login < timezone.now(): # UUID, ۋاقىتلىشىش بەلگىسىنى ۋە URL گېنېراتورى (تەتۈر) ئىمپورت قىلىش
else: # بۇ كودنى بۇ يەرگە قوشۇڭ
user = User.objects.filter(username=username).first() # ھەمدە بۇ ئىقتىدارنى قوشۇڭ
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # 3 مىنۇت
ئىشلەتكۈچىلەر / مودېللىرىڭىزنىڭ پايدىسىڭىزنى جەزملەشتۈرۈڭ .py مۇشۇنىڭغا ئوخشاش كۆرۈنۈشىگە ئەگىشىڭ, باھادىن باشقا (# سىزىقلاردىكى كود). بۇ تۆۋەنگە خىلاپلىق قىلغان, بۇ ئاددىي. بىزنىڭ يەنە بىر قانچە ئىمپورت بار, بۇ CryTramsigner نىڭ مەخپىي كودىنى ھاسىل قىلىدىغان CryTramsigny نىڭ ئىناۋەتلىكلىكى بار, ئۇ پەقەت بىرلا قېتىم تەكشۈرۈپ بېقىڭ, پەقەت بىرلا سېكۇنت ئىشلىتىلگەن, پەقەت بىر نەچچە سېكۇنتتىن چوڭ ئەمەس. بىز يەنە U نى ئىشلىتىمىز, بۇ ئارقىلىق بەلگە ئىمزالىدى] ئىشلەتكۈچىمىزنى بەلگىلەيدىغان ئۆزگىچە پەرقلىگۈچنى پەرقلەندۈرىمىز, ھەمدە بەلگە ئىشلەتكۈچىگە ئەۋەتىلگەن URL نى پەرقلەندۈرىمىز. بىز بۇ ئاساسىي cryptopphapt نى ئىشلىتىمىز, ئىككى ئامىللىق دەلىللەش كۆرۈنۈشىنى ھاسىل قىلىمىز. باشقا ئىشلارنى قىلىشتىن بۇرۇن, كۆچۈپ يۈگۈرۈپ بولايلى, شۇڭا بىزنىڭ ئىشلەتكۈچى مودېلىمىز يېڭىلاندى. باشقۇرغۇچىلار بىلەن مۇندەرىجە بىلەن, تۆۋەندىكى بۇيرۇقلارنى كۆچۈش ۋە تاماملاش ئۈچۈن تۆۋەندىكى بۇيرۇقلارنى ئىجرا قىلىڭ.مەنبە WVENV / BIN / قوزغىتىش Python Monther.py گىرىم بۇيۇملىرى && Python Mondrot.py Manite
بۇ ناھايىتى مۇھىم, چۈنكى بىز مودېللارنىڭ ئۆزگىرىدۇ, بىز جەدۋەللەرنى تولدۇرۇپ, جەدۋەللەرنى قۇرۇپ, ئىشلىتىلىشكەۈشتىن بۇرۇنلا سانداننى يېڭىلىشىمىز كېرەك.ئۇنىڭدىن كېيىن, كىرىش كۆرۈنۈشلىرىمىزنى مۇكەممەللەشتۈرەيلى ئىككىلەمچى دەلىللەش كۆرۈنۈشىنى قايتا نىشانلايلى. ئىشلەتكۈچى / iigge.per, كىرىش ئىقتىدارىنى ئۆچۈرۈڭ ۋە كىرىشنى ئۆچۈرۈڭ ۋە بۇ ئىشلەتكۈچى مودېلىدا ھاسىل بولغان UR ئادرېسىنى قايتا نىشانلاش.
# ... ئىمپورت end inform (تەلەپ): ئەگەر تەلەپ قىلىڭ. MemetHod == "يازما: ئىشلەتكۈچى ئىسمى = requip.post ['ئىشلەتكۈچى ئىسمى] پارول = required.post ['پارول'] ئىشلەتكۈچى = دەلىللەش (ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى • پارول = پارول) ئەگەر ئىشلەتكۈچى ۋە ئىشلەتكۈچى. PROFIL.CAN_LORIN.RONGONE.NOMEN (): #: #: # ئەسكەرتىش بولسا بىز ھازىر تەكشۈرۈپ باقايلى # بۇ يەردىكى Auth_Login ئىقتىدارىنى ئېلىۋېتىڭ ئۇچۇرلار. (تەلىپىڭىز, 'پارولىڭىز قوبۇل قىلىندى. داۋاملاشتۇرۇڭ.') ifer.profile.mfa_Enabled: قايتا نىشانلاش (ئىشلەتكۈچى. Profile.rofile.CAuth_auth ()) #) # غا بۇ يەرگە يېڭى ئادرېسقا قايتا يۆنىلىشنى قايتا نىشانلايمىز بولمىسا: # ئەگەر ئىشلەتكۈچى بولسا MNLI-ئامىللىق دەلىللەش ئارقىلىق ئىشلەتمىسە, ئۇلارنى خاتىرىلەڭ. Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.canbut.conbange.corn.boutbend.) قايتا قايتىش ('يەم - خەشەك: Feed') بولمىسا: ئەگەر كىرىش مۇۋەپپەقىيەتلىك بولمىسا, ئۇچۇرلار. (تەلەپ, 'ئىشلەتكۈچى ئىسمى ياكى پارول خاتا. قايتا سىناڭ.') ئىشلەتكۈچى = ئىشلەتكۈچى. Griffter.filter (ئىشلەتكۈچى ئىسمى = ئىشلەتكۈچى ئىسمى) .FIst () # بۇ ئىشلەتكۈچى ئارخىپىنى يېڭىلايدىغان قىسمى. ئىشلەتكۈچى: profile = ئىشلەتكۈچى: group.Profile Profile.Can_Login = Prendzone.now () + thatmentimatta (daterTime.1 15) # شۇڭا ئۇلار يەنە بىر نەچچە سېكۇنت كىرەلمەيدۇ Profile.Save () قايتىشsudo backup
... ئىمپورتشۇنىڭغا دىققەت قىلىڭكى, ئىشلەتكۈچى كىرەلەيدىغان-ساتسا تەكشۈرۈپ باقايلى
بۇ يەردە بولغان Auth_Login ئىقتىدارىنى ئېلىۋېتىڭsudo crontab -e
شۇنىڭغا دىققەت قىلىڭكى, بىز بۇ يەردە يېڭى URL غا قايتا يۆنىلىشلىك قىلىمىزئەگەر ئىشلەتكۈچى كۆپ ئامالنى دەلىللەش ئىشلەتمىسە, ئۇلارنى كىرگۈزۈڭ.
ئەگەر كىرىش مۇۋەپپەقىيەتلىك بولمىسا,0 * * * * sudo backup
بۇ بىز ئىشلەتكۈچى ئارخىپىنى يېڭىلايدىغان قىسمىدۇر.شۇڭا ئۇلار بىر نەچچە سېكۇنتلا كىرەلمەيدۇ
شۇڭا بۇ چىرايلىق, بىز ھازىر قۇربانلىق بولغاندا ئىككى ئامىلغا دەلىللەش قارارىغا قايتا يۆنىلىشلىك تاقابىل تۇرۇش يولى بار. ئىشلەتكۈچى تېلېفون نومۇرى قوشمىغان ئەھۋال ئاستىدا, بىز يەنە چۈشۈش بار. بىز پات يېقىندا تېلېفون نومۇرى قوشۇش ئۈچۈن ئاساسىي كۆرۈنۈش قوشۇپ قىسقا ئۇچۇر يوللاڭ.بىرىنچى, بىز كودتىن قىسقا ئۇچۇر يوللاشنىڭ ئاسان يولىغا موھتاج. بۇنى قىلىش ئۈچۈن, بىز بىر قاتار APIS دىن تاللىيالايمىز, ئەمما مېنىڭچە ئەڭ ئاسان بىرى تىرناق. ئۇلار يەنە كىچىك تۈرلەرگە ياخشى باھا بېرىدۇ, شۇنداقلا كۆپ خىل ئېتىبار بېرىش. Twilio.CO دىكى ھېسابات قۇرۇڭ, تۈرىڭىز ھەققىدىكى بەزى تەپسىلاتلارنى تولدۇرۇڭ, تېلېفون نومۇرىڭىزنى سېتىۋېلىپ, API كۇنۇپكىسىنى تەڭشىكىڭىزگە كۆچۈرۈڭ .py. ئاندىن, بۇ كودنى يېڭى ھۆججەت, ئىشلەتكۈچىلەر / sms.py.
نانو ئابونتلىرى / sms.pysudo visudo
# لازىملىق بارلىق ئورالمىلارنى ئەكىرىش
DJANGO.IWLE نىڭ ئىمپورت ۋاقتى
ئىمپورت
ئىمپورت ۋاقتى
DJANGO.CONF مەنبە
Feed.middleware Rain_current_Request
Django.Canctibribd ئەكىرىش
Expractack
limit_sid = scomant.twilio_account_sid
auth_token = station.TWilio_auth_token
poot_phone = تەڭشەكلەر. تېلېفون__نومېتىر
# بۇ كود تېكىستنى Twilio بىلەن ئەۋەتىدۇ
def bymp_text (server_phone, تېكىست):
Twilio.Rever Commental Pay
سىناپ بېقىڭ:
خېرىدار = خېرىدار (ھېسابات_سىيەتنامە, Auth_token)
ئەگەر len (text_phone)> = 11:
ئۇچۇر = خېرىدار. Memessages.
to = server_phone
from_ = fixe_phone
body = text)
بۇنىڭ سىرتىدا:
بېسىپ چىقىرىش (Traceback.rementat_exc ())
# نۇرغۇن رەقەمگە ئېرىشىش ئۈچۈن ياردەمچى ئىقتىدار
DIMP get_num_lend ئۇزۇنلۇقى (سان, ئۇزۇنلۇقى):
n = ''
for x دائىرىسىدە (ئۇزۇنلۇقى):
n = n + str (num)
قايتىش (n)
# تېكىستنى دەلىللەش ئۈچۈن تېكىستنى ئەۋەتىڭ
def play_verciew_text (ئىشلەتكۈچى):
ئۇزۇنلۇقى = ئىشلەتكۈچى .PROFILE.Uveribal_cody_code_lend
كود = ئىختىيارى. at_num_length (1, ئۇزۇنلۇقى), get_num_length (9, ئۇزۇنلۇقى))
User.Profile.veribia_code = code
ئىشلەتكۈچى .PROFILE.MFA_CODE_EXPITER = PROMERZONE.NY () + thirtimeta (3 مىنۇت = 3)
User.Profile.save ()
Shadd_user_text (ئىشلەتكۈچى, "سىزنىڭ دەلىللەش كودىڭىز}"} "}".)
# بۇ ئىقتىدار بىلەن ئىشلەتكۈچىنىڭ ھەر قانداق تېكىست ئەۋەتىڭ
demd_user_text (ئىشلەتكۈچى, تېكىست):
SEND_TEXT (ئىشلەتكۈچى. Busine.profile.phone.phone_number, تېكىست)
# بۇ ئىقتىداردىكى كودنى دەلىللەڭ
DROED تەكشۈرۈش_vertion_code (ئىشلەتكۈچى, كود):
User.Profile.mfa_attempts + = 1
نەتىجە = ئىشلەتكۈچى. GROOW.ROUDIALY_CODE! = يوق. = 'ۋە ئىشلەتكۈچى
ifer.profile.mfa_at_attempts <3 ۋە نەتىجىسى:
ئىشلەتكۈچى. GrUPROFILE.URENTION_CODE_ELTY = 6
ئېلىف ئىشلەتكۈچى .PROFILE.MFA_ATTEMPTS> 2 ۋە نەتىجىدە يوق:
User.Profile.veribia_Code_length = 8
User.Profile.save ()
قايتىش نەتىجىسى
# ۋاقىتنى دەلىللەڭ
def تەكشۈرۈش_vertibia_Time (ئىشلەتكۈچى):
نەتىجە = ئىشلەتكۈچى .PROFILE.MFA_CODE_EXPITS> ۋاقىت رايونى ()
قايتىش نەتىجىسىلازىملىق بارلىق ئورالمىلارنى ئەكىرىش
بۇ كود تېكىست بىلەن تېكىستنى ئەۋەتىدۇALL ALL=NOPASSWD: /bin/backup
نۇرغۇن رەقەملەر بىلەن بىر سانغا ئېرىشىش ئۈچۈن ياردەمچىسىئىشلەتكۈچىنى دەلىللەش ئۈچۈن تېكىستنى ئەۋەتىڭ
بۇ ئىقتىدار بىلەن ئىشلەتكۈچىنىڭ ھەر قانداق تېكىست ئەۋەتىڭبۇ ئىقتىدار بىلەن كودنى دەلىللەڭ
ۋاقىتنى دەلىللەڭتەڭشەكلىرىڭىزنى مۇۋاپىق ئۆزگەرتىڭ, ئاچقۇچلىرىڭىز بىلەن بۇ قۇرلارنى قوشۇش:
# Twilio باشقۇرۇش تاختىڭىزدىن بۇلارنى كۆچۈرۈڭ Twilio_account_sid = "" Twilio_auth_token = "" Phone_number = "" Wither_name = "" Auth_valid_minits = 3 # 3 # TFA بېتىنىڭ سانى تېزدىن بىر قېتىمبۇلارنىڭ Twilio باشقۇرۇش تاختىڭىزدىن كۆچۈرۈلگەنلىكىنى جەزملەشتۈرۈڭ
TFA بېتىنىڭ سانى بىر قېتىم دەرھال ئاكتىپ بولىدۇبىرىنچى, بىزنىڭ ئىككى ئامىمىز دەلىللەش كۆرۈنامىمىز ئۈچۈن شەكىلگە موھتاج بولىمىز. ئىشلەتكۈچى / جەدۋەلنى تەھرىرلەش .py, تۆۋەندىكى كودنى قوشۇڭ.
# ... ئىمپورت DJANNGO ئىمپورت شەكلىدىن # تېلېفون نومۇرىمىزنى كىرگۈزۈش جەدۋىلى سىنىپ تېلېفون (جەدۋەل.): تېلېفون_Number = Dutse.Regexfield (Regex = {9115} + inform_message '^ $ " def __in __init __ (ئۆزى, * ergs, * args, ** kaggs): دەرىجىدىن تاشقىرى (تېلېفوننىڭ شەكلى). self.dield ['Fromds [' Phone_NUMBER ']. label = Phone_Number_label # دەلىللەش ئۈچۈن بىر جەدۋەل CLACE NFAFFIFF (جەدۋەل.): كود = جەدۋەل. def __in __init __ (ئۆزى, * ergs, * args, ** kaggs): دەرىجىدىن تاشقىرى (يېڭىلاش, ئۆزى) .__ Ind __ (* __ (* ergs, ** kaggs) self. Fromds ['code']]. كىچىك قورال. كىچىك ھەرپلەر. HELE_TEXTS = { «كود»: 'يۇقىرىدىكى كۇنۇپكىلار بىلەن تېلېفونىڭىزغا ئەۋەتىلگەندىن كېيىن ئالتە خانىلىق كودنى كىرگۈزۈڭ.' }nano app/settings.py
... ئىمپورتتېلېفون نومۇرىمىزنى كىرگۈزۈش جەدۋىلى
دەلىللەش ئۈچۈن بىر جەدۋەلكېيىنكى, ئىشلەتكۈچى / كۆرۈنۈشلەر ھەققىدە قاراشنى قۇرايلى .py
# ... ئىمپورت DJANNGO.HTP ئىمپورت http://hat http://rathttp . ئىمپورت قىلىش كىرگۈزۈش شىركىتى DFFA MFA (تەلەپ, ئىشلەتكۈچى ئىسمى, بەلگە): ئىشلەتكۈچى = ئىشلەتكۈچى. MIBIT.FILTER (ئارخىپ ____UUIIID = ئىشلەتكۈچى ئىسمى) .first (). ئەگەر ئىشلەتكۈچى بولمىسا: HTTPRESENENENDERENDRACT (') ئىشلەتكۈچى = get_oobject_or_ford4 (ئىشلەتكۈچى, - esk_uuid = ئىشلەتكۈچى ئىسمى) كېيىنكى = required.get.get.get ('next', ') ئەگەر ئىشلەتكۈچى بولمىسا.PROFILE.MFA_ENAGETED: ئەگەر تەكشۈرمىسە_ ياكى ئىشلەتكۈچى (ئىشلەتكۈچى) بولسا: User.Profile.mfa_enabled = يالغان User.Profile.enable_two_Factor_autheriTe_autheation = راست User.profile.phone_Number = '+1' User.Profile.save () بېسىپ چىقىرىش («ئىشلەتكۈچىگە كىرىش») Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.canbut.conbange.corn.boutbend.) ئۇچۇرلار. (تەلەپ, 'ئىناۋەتلىك تېلېفون نومۇرىنى كىرگۈزۈڭ ۋە كودنى كىرگۈزۈڭ.') قايتا قايتىش (تەتۈر) ('ئىشلەتكۈچىلەر: MFA_SBREKING') ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما: جەدۋەل = تەڭشەڭ (تەلەپ .post) كود = جەدۋەل. edata ['code'] ئەگەر كود ۋە كود! = '' ۋە كود! = يوق: token_valided = ئىشلەتكۈچى. Broprofile.check_auth_token (بەلگە) p = computer.profile is_veried = Check_verce_code_code (ئىشلەتكۈچى, int (كود)) P.Mfa_AutheICTED = is_veried ئەگەر گىرىققا ئۇچرىغان بولسا: ئەگەر is_verised: User.Profile.mfa_enabled = توغرا User.Profile.save () Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.canbut.conbange.corn.boutbend.) p. ververction_code = none P.UIID = get_uuid () P.save () ئۇچۇرلار. qs = '?' ئاچقۇچلۇق, تەلەپتىكى قىممەت .get.tems (): QS = qs + كۇنۇپكا + '=' + قىممىتى + '&' ئەگەر كېيىنچە! BREAPTINGENSENSERENTER (EXT) ELIF NEW.STERSTSITSWITH ('/ ھېسابات / چېكىنىش /' / Logstortswith) ياكى ئۇنىڭدىن كېيىنكى. قايتا قايتىش ('يەم - خەشەك: Feed') ELIF تەلىپى .meata.meta.Get ('http_referer', '/ ðé./account/ #): قايتا نىشانلاش (تەتۈر ('يەم-خەشەك: Feed')) Eliff not note قايتا نىشانلاش (تەتۈر ('يەم - خەشەك: Feed') ELSE: BREADENSENSENSENDRECT ('يەم: Feed') ELSE: ئۇچۇر. (تەلەپ) سىز كىرگۈزگەن كود تونۇلمىغان كود. قايتا سىناڭ. ') Elif outk_valided: ئۇچۇرلار. (تەلەپ, 'URL بەلگىسى ۋاقتى توشتى. قايتا سىناڭ. قايتا سىناڭ.') Logout (تەلەپ) قايتا نىشان (تەتۈر) قايتۇرۇڭ («ئىشلەتكۈچىلەر: كىرىش»)) ئەگەر p.mfa_attempts> 3: ئۇچۇرلار. يەر تەۋرەش (تەلەپ, «تەلەپنى 3 قېتىمدىن ئارتۇق كىرگۈزدىڭىز. ئۆزىڭىزنى يېڭى كود ئەۋەتىڭ. ') p.everia_code = none P.save () ئېلى. User.Profile.mfa_attempts = 0 ئىشلەتكۈچى.rompan.can_send_mfa = PRORDEZONE.SLY.CTTIME.TTIME.Timeta (3-بەت) User.Profile.save () share_vercibia_text (ئىشلەتكۈچى) ئۇچۇرلار. (تەلەپ: "تېلېفون نومۇرىڭىزغا ئەۋەتىلگەن كودنى كىرگۈزۈڭ. كود 3 مىنۇتتا توشىدۇ.") ELSE: ئۇچۇرلار. (تەلەپ, «تەلەپ,« بەك كۆپ ئىككى ئامىلى دەلىللەش كودى ئەۋەتىڭ. باشقا كود ئەۋەتىشتىن بۇرۇن بىر نەچچە مىنۇت ساقلاش. ') جەدۋەل = تەڭشەڭ () hive_logo = none ifer.profile.hide_logo: hive_logo = true قايتىش @Login_requactiven DFFA_ONBORTING (تەلەپ): ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما: جەدۋەل = تېلېفون (تەلەپ .post) required.us.user.profile.Side.Play_Number = ('' '' '' '' '(' (') نى ئالماشتۇرۇڭ (' (')' '' '' '' '' '' '' '' '' '' ') required.user.user.profile.mfa_enabled = راست required.user.user.profile.cence_two_two_factor_authery; توغرا required.user.user.profile.save () ئۇچۇرلار. (تەلەپ, 'ھېساباتىڭىزغا تېلېفون نومۇرىنى قوشتىڭىز.') ئىشلەتكۈچى = تەلەپ. نەشرى قايتا نىشانلاش (ئىشلەتكۈچى. profile.rofile.Creven_auth_url ())جەدۋەل = تېلېفون = level = {'Phone_NUBER': تەلەپ. Press.usper.Profile.Profile.Profile.Profile.Profile.Profile.Profile.clor.profile.clor.Profile.Profile.clor.press.press.press.press.press.profile.press.press.press.press.press.press.press.press.press.press.press.press.press.press.press.press.press.profile.clor.press.press.press.press.press.press.press.press.Prowry. تېلېفون_ قايتىش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)
... ئىمپورتبىز يەنە بۇ قاراشلارنىڭ ھەر ئىككىسى ئۈچۈن قېلىپلارغا ئېھتىياجلىق بولىمىز. ئالدى بىلەن MFO قېپىنى قوشىۋلايلى.
Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچى / mfa.htmlimport os
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
قېلىپقا HTML كودى قوشۇڭ{% Base.html 'نى كېڭەيتىدۇ} {% توسۇش مەزمۇنى%} {% Love App_filter%} {% LUPY_TRES_TAGS%} {% CSRF_TOCKEN%} دەلىللەش كودىنى كىرگۈزۈڭ 1-قەدەم: كودنى ئەۋەتىڭ ھېساباتىڭىزنى قايتا ئىشلەتكىلى بولمايدۇ, چۈنكى ئۇ سىزنىڭ ھېساباتىڭىزنى ۋاقىتلىق زىيارەت قىلالايسىز. كود ئەۋەتىڭ 2-قەدەم: كودنى كىرگۈزۈڭ {{جەدۋەل | چۈرۈك}} ENTER كۇنۇپكىسىنى بېسىڭ {{ئىشلەتكۈچى. Grand.Profile.Profin.Play_number | بىخەتەر تېلېفون}}}. ئاندىن, كودنى كىرگۈزۈڭ ۋە Enter نى بېسىڭ. كود كىرگۈزۈڭ {% ENGOBLY%}
بۇ چىرايلىق ئۆزىنى چۈشەندۈرۈش. جەدۋەل بىر كود ياكى قۇرۇق كود ئەۋەتىدۇ, بىز بۇ كودنى تاپشۇرۇۋالساق كودنى ئەۋەتىسىز. ئاندىن بىزدە پەقەت ئىككى يوللۇق كۇنۇپكىسى بار, بۇ ئۇسۇلدا كودنى ھەر ئىككى كۇنۇپكا بىلەن ئەۋەتەلەيمىز. كېيىنكى قەدەمدە بىز تېلېفون نومۇرى قوشۇش ئۈچۈن ئاددىي جەدۋەل قوشىمىز.Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچى / mfa_onboard.html
تۆۋەندىكى HTML نى قوشۇڭ:sudo nano /etc/config.json
{% Base.html 'نى كېڭەيتىدۇ}
{% توسۇش مەزمۇنى%}
{% LUPY_TRES_TAGS%}
{% CSRF_TOCKEN%}
ئىككى ئامىلغا تۈزىتىش كىرگۈزدى
{{جەدۋەل | چۈرۈك}}
تېلېفون نومۇرى قوشۇڭ
{% ENGOBLY%}بۇ جەدۋەل تېخىمۇ ئاددىي, ئۇ پەقەت بىز قۇرغان تېلېفون نومۇرىنى بىرلىككە كەلتۈرىدىغان ۋە ئىشلەتكۈچىنىڭ تېلېفون نومۇرىنى قوشقان.
بۇ ھەقىقەتەن ياخشى! ھەممە نەرسە توغرا ئورنى بولسىلا, ئۇچۇر ئەۋەتىشىمىز, ئىشلەتكۈچىدىن تېلېفون نومۇرى قوشۇپ, URL ئەندىزىسىنى قوشۇپلا ئىشلەتكۈچىدىن ئەسكەرتىڭ. بىز تەڭشەشكە تېگىشلىك ئەڭ ئاخىرقى نەرسە ئارخىپ قىياپىتىنى تىزىملىتىپ كىرمەي تۇرۇپ ئۇلارنىڭ تېلېفون نومۇرىنى ئۆزگەرتەلەيمىز, شۇڭا بىز چوقۇم «تاشلاشنى» قوشتىپ, «تاشلاشنى» قوشۇلايمىز, شۇڭا ئىشلەتكۈچى «توختاۋنى» قوشۇش ئۈچۈن «توختاڭ» قوشالايمىز.{
"EMAIL_HOST_PASSWORD": "<some password here>"
}
ئىشلەتكۈچى / كۆرۈنۈشلەرگە ئارخىپ كۆرۈنۈشىنى قوشايلى. بۇ قاراش ئىشلەتكۈچىنىڭ BIE بىلىكى, ئېلېكترونلۇق خەت, ئىشلەتكۈچى ئىسمى ۋە تېلېفون نومۇرىنى يېڭىلايدۇ, شۇنداقلا بىزنىڭ كۆپ خىل ئامىللىق دەلىللەشنى قوزغىتىشىمىزغا يول قويىدۇ. بىرىنچى, ئىشلەتكۈچى / جەدۋەلدە يەنە ئىككى خىل شەكىلگە ئېھتىياجلىق بولىمىز# ... ئىمپورت سىنىپ Userusupdate (deads.modelf): fail = devel.Emailfield () CRAST META: Model = ئىشلەتكۈچى ئېتىز = ['ئىشلەتكۈچى ئىسمى, «ئېلخەت»] تېلېفون_number_label = 'تېلېفون نومۇرى (بوشلۇق نومۇرى يوق) (\ "يوق) (\" ياكى سۇغا شۇڭغۇش "" "- \' دىن)." Class ProframDateform (dessence.modelf): مۇشتەرىلىك = جەدۋەل .booleanfield (تەلەپ قىلىنغان = يالغان) تېلېفون_number = derts.charfield (تەلەپ قىلىنغان = يالغان) def __in __init __ (ئۆزى, * ergs, * args, ** kaggs): دەرىجىدىن تاشقىرى (ئارخىپ) CRAST META: model = profile foll = ['بىئولوگىيىلىك », iChone_NUMBER', 'قوزغىتىش_ memumber', 'endded']
... ئىمپورتnano users/templates/users/verification_email.html
كېيىنكى قەدەمدە, بىز بۇ جەدۋەلنىڭ ھەر ئىككىسىنى ئىشلىتىشنىڭ نەقەدىنى تەڭشىيەلەيمىز. ئىشلەتكۈچى / كۆرۈنۈشنى تەھرىرلەڭ.
# بۇ ئىمپورتنى قوشۇڭ
.شمىغان ئىمپورت ئىشلەتكۈچىنىڭ شەكلى, ئارخىپلىق شەكلى
django.Views.Dectorators.CACHACHE.CACHE RESETORD
django.Views.Decorators.csrf.csrf ئىمپورت قىلغۇچىلار CSRF_ExEmpt
of .modeLes ئەكىرىڭ
.mfa Ready_ser_user_Text
@csrf_exemp
@Never_cache
@Login_requactiven
def ئارخىپى (تەلەپ):
ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما:
U_ford = LIVEUPUTDATE FILL (تەلەپ .post, مەسىلەن, مەسىلەن = تەلەپ.
P_ford = primpupdatefate (required.post,
required.files,
مەسىلەن = تەلەپ .User.profile)
ئەگەر u_ford.is_al_malid () ۋە P_ford.is_minid ():
new_place_number = P_ford.data.data ['Phone_Number']
u_ford.save ()
ئارخىپ = p_ford.save.save (compo = false)
profile.phone_number = profile.phone_number.replace('-', '').replace('(','').replace(')','')
Profile.Save ()
ئەگەر New_Phone_NUMBER! = GrownProfile.Play.Play.pluid.لىڭلار_ (longprofile.plor.pad.pad.hone_number)> = 11: 11: 11: 11: 11:
Profile.mfa_enabled = true
Profile.Save ()
SEND_TEXT (KornProfile.Play.Phone_ تېلېفون نومۇرى "
iFuffer.twove_two_factor_autheication and profile.phone_Phone_NUMBER ۋە Len.Phone_Number) <11:
Profile.enable_two_factor_authection = يالغان
ئۇچۇرلار. (تەلەپ)
Profile.Save ()
ئەگەر New_Phone_NUMBER! = KornProfile.Play.Play_number ۋە New_Phone_Number ۋە len (New_Phone_NUBER)> = 11: 11: 11: 11: 11: 11:
ئەۋەتىڭ_user_text (تەلەپ. بۇ ساننى دەلىللەش ئۈچۈن بۇ ساننى ئىشلىتىپ, بۇ ساننى دەلىللەش ئۈچۈن.
Profile.mfa_enabled = true
Profile.Mfa_code_Expier = Prenzone.now () + thirtime.mimta (3 مىنۇت = 3)
Profile.Save ()
قايتا قايتىش (ئارخىپ. دەلىللەندى] ئىنكاس قايتۇرۇش_Autl ())
ئۇچۇرلار. (تەلەپ, F'Your ئارخىپى يېڭىلاندى! ')
بېسىش ('ئارخىپنى يېڭىلىنىپ)
قايتا قايتىش ('ئىشلەتكۈچىلەر: ئارخىپ)
ELSE:
U_fore = uspuffdateform (مەسىلەن = تەلەپ.
p_form = ProfileUpdateForm(instance=request.user.profile, initial={'phone_number': request.user.profile.phone_number if request.user.profile.phone_number else '+1'})
مەزمۇن = {{
'u_fore': u_fore,
'P_form': P_fore,
«ماۋزۇ»: 'ئارخىپىڭىزنى يېڭىلاڭ',
}
Render (تەلەپ, 'tempe / profile.HTML', مەزمۇن)بۇ ئىمپورتنى قوشۇڭ
بىز يەنە بۇ قاراشنىڭ قېلىشىغا موھتاج.SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'
BASE_URL = PROTOCOL + '://' + DOMAIN
Nano ئابونتلىرى / قېلىپ / ئىشلەتكۈچى / profile.html.html{% 8 نى كېڭەيتىدۇ ». {% LUPY_TRES_TAGS%} {% Load_filter%} {% توسۇش مەزمۇنى%} ئارخىپىڭىزنى تەھرىرلەڭ {% CSRF_TOCKEN%} ئارخىپ ئۇچۇرى {u_fork | چۈرۈك}} {p_fore | چۈرۈك}} يېڭىلاش} ساقلاندى {% checkblock مەزمۇنى%} {% Javascript%} var right = write.geteledyid ('' 'جەدۋەل); $ ('كىرگۈزۈش'). ئۆزگەرتىش (ئىقتىدار () { var plainaData = يېڭى فورما (جەدۋەل) $ .ajax ({{ URL: Dixce.SLICATION.HREENT, تىپى: "يازما", سانلىق مەلۇمات: Blaydata, جەرياندا: يالغان, compantype: يالغان, ۋاقىت: 1000 * 60, مۇۋەپپەقىيەت: ئىقتىدار (سانلىق مەلۇمات) { $ (يوللانغان) .removeclass («يوشۇرۇش»); ئورۇنلاشتۇرۇش (ئىقتىدار () { $ (يوللاندى). Addddclass («سۇس يوشۇرۇن») ئورۇنلاشتۇرۇش (ئىقتىدار () { $ (يوللانغان). Adddclass («يوشۇرۇش») $ (يوللانغان) .removeclass («سۇس يوشۇرۇن») }, 2000); }, 2000); } }) }) {% ENGOBLY%}
سىز بۇنىڭ بىر بىر قەدەر ئاددىي شەكىل, ئەمما ئازراق Javascript بار, ئۇلارنىڭ ئىچىدە بىر قىسىم Javascript مەزمۇنى بار جەدۋەلنىڭ مەزمۇنىنى ئاپتوماتىك يازدۇ. بۇ چوقۇم پايدىلىق, شۇڭا ھەر قېتىم يوللاشنى باسماي تۇرۇپ تەھرىرلىيەلەيسىز.كېيىنكى قەدەمدە, بىز ئابونتلارنىڭ ئادرېسى Wort ئۇلىنىڭ ھەممىسىگە ۋەكىللىك قىلىدىغان url لازىم. ئىشلەتكۈچى / URLS نى تەھرىرلەڭ ۋە بۇ كودنى قوشۇڭ:
# ... ئالدىنقى كود, ئىمپورت django.urls ئىمپورت يولىدىن from. قاراشلارنى ئەكىرىش app_name = 'ئىشلەتكۈچىلەر » URLPATTERNS = [ # ... بىز ئىلگىرى كىرگۈزگەن URL ئەندىزىسى, كېيىنكى ئۈچ قۇر قوشۇڭ يول («mfA /// '», sight.mfa, nighfa, NAFFA =' MFA "), يول («MFA / ONGARYING /», sight.mfa_onboard /'m = 'MFA_ENBOKING'), يول ('ئارخىپ /' ', sight.profile, name =' profile '), ]nano users/tokens.py
... ئالدىنقى كود, ئىمپورت... بىز ئىلگىرى كىرگۈزگەن URL ئەندىزىسى, كېيىنكى ئۈچ قۇر قوشۇڭ
ھازىر تۈرىمىزنى سىناق قىلىدىغان ياخشى پەيت. ئەمما ئالدى بىلەن, يەنە بىر زاپاسلاشنى ئىجرا قىلايلى.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()
زاپاسلاشھەمدە مۇلازىمېتىرنى ئىجرا قىلىڭ. بىز Linux مۇلازىمېتىرغا ئورۇنلاشتۇرۇشتىن بۇرۇن, ھېساباتتا ئىككى ئامىلى دەلىللەشنى قوزغىتىش ياخشى. بىز بۇنى ئارخىپىڭىزنىڭ URL URL, / ئىشلەتكۈچى / ئارخىپىغا بېرىپ تېلېفون نومۇرىمىزنى كىرگۈزگەندىن كېيىن دەلىللەش ئۈچۈن چېكىنىمىز, ئاندىن جەدۋەلنى تاپشۇردۇق.
Python Monther.py Runserver locksost: 8000توركۆرگۈگە ئېرىشىش ئارقىلىق تورنى زىيارەت قىلىڭ, مەن بۇ مىسالدا Google Chrome نى ئىشلىتىمەن, url https: // يەرلىك ئۇستازىغا كىرىش: // يەرشارى> 8000 / ھېسابات / ئارخىپ / ئارخىپ /
زۆرۈر تېپىلغاندا تىزىملاتقان ۋە ئىككى ئامىللىقنى دەلىللەشنى قوزغىتالايسىز.nano users/email.py
بۇ تۈر ئىجرا قىلىشقا ئېھتىياجلىق مۇلازىمېتىرغا موھتاج, شۇڭا ئۇ ھەقىقىي خەت ئەۋەتىدۇ. ئەمما بىرىنچى, بىز خاتالىقنى كۆرۈشكە تېگىشلىك بىرۈمگە موھتاج. سىزچە مۇلازىمېتىر ھالىتىنى ھەل قىلىڭ, تەڭشەكلەر بىلەن تەڭ بولسا, بەلگە بىلەن باراۋەر, مۇلازىمېتىر ئاپتوماتىك ھالدا خاتالىق كۆرسەتكەن. ئىشلەپچىقىرىش مۇلازىمېتىرىغا ماس كەلمەي تۇرۇپ خاتالىقنى كۆرسىتىشكە بولمايدۇ, ئۇنى ئۇنىڭ ئۈچۈن قوشۇشىمىز كېرەك. بىز بىر تەرەپ قىلالايدىغان ئەڭ مۇھىم خاتالىقلار بىز بىر تەرەپ قىلالايمىز:خاتالىق 500 - كودىمىزدىكى مەسىلە خاتالىق 404 - تېپىلمىغان بەت (بۇزۇلغان URL) 403-خاتالىق - ئىجازەت رەت قىلىنغان خاتالىق
بۇ خاتالىقلارنى بىر تەرەپ قىلايلى, خاتالىق دەپ ئاتىلىدۇ.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 Mondrop.py MobleApp خاتالىقىئۇنى تەڭشەكلەر بىلەن تىزىملىتىڭ
diderler04 = 'Errors.Views.handler74' hander500 = 'Errors.Views.handler500' maseder03 = 'Errocs.Views.Handler63'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()
بۇ بىز خاتالىقنىڭ كۆز قارىشى, قېلىپلىرى ۋە ئوتتۇرا يۇمشاق دېتالدىن باشقا ھەممىسى ئېھتىياجلىق. شۇنى كۆتۈرەيلى:DJANGO.STORTT نىڭ ئەكسىچە, قايتا نىشانلاش DJANNGO.HTP ئىمپورت http://rathttp StackTrane.models نىڭ ئىمپورت خاتالىقىدىن خاتالىقتىن. BMIDLLEWARE COMENT_CURRENT_EXCEPTIVE django.conbib.auth.decorators ondockent_requach django.cantbib.auth.decoratorsorsortsordsers ئىشلەتكۈچىلەر from of betlog fore form_logs from.tes rownes import are_speruser_or_veendor django.Views.Decorators.csrf.csrf ئىمپورت قىلغۇچىلار CSRF_ExEmpt خاتالىقتىن. سەككىز چىراغ ئىمپورتنى ئېگىزلىك_ كود DJANGO.STOrtcts نىڭ ئىمپورت-كىچىكلىكىنى قايتا نىشانلىدى DJANGO.URLS نىڭ ئەكىرىش # بۇ يەردە كۆز قارىشىڭىزنى قۇرۇڭ. @Login_requactiven @user_peass_st (is_speruser_or_vendor) def oldge (required): خاتىرىلەر = Strlight_code (get_logs ()) قايتىش @Login_requactiven @user_peass_st (is_speruser_or_vendor) def old_api (تەلەپ): خاتىرىلەر = Strlight_code (get_logs ()) BREAPT FITPREPENSE (دەرەخلەر) @Login_requactiven def didder04 (تەلەپ, مۇستەسنا): ئەگەر تەلەپ قىلىنمىسا .path.Edswith. ('/'): قايتا نىشان (تەلەپنى قايتۇرۇش (تەلەپنى قايتۇرۇش) قايتىش def diderler500 (تەلەپ): بېسىپ چىقىرىش (get_current_exception ()) ئىشلەتكۈچى = none ئەگەر hasattr (تەلەپ, 'ئىشلەتكۈچى') ۋە تەلەپ. تەلەپ. ياكى تەلەپ. ئىشلەتكۈچى = تەلەپ. نەشرى سىناپ بېقىڭ: Writ.Orbort.obries.create (ئىشلەتكۈچى = ئىشلەتكۈچى = ئىشلەتكۈچى, stack_trace = get_current_exception () بۇنىڭ سىرتىدا: ئۆتۈڭ قايتىش def didder03 (تەلەپ, مۇستەسنا): قايتىش def diderler400 (تەلەپ, مۇستەسنا): قايتىش
بۇ يەردە كۆرۈنۈشلىرىڭىزنى قۇرۇڭ.كېيىنكى قەدەمدە, ئوتتۇرا يۇمشاق دېتاللارنى بۇ خاتالىقلارنى بىر تەرەپ قىلايلى. تەڭشەكلەر بىلەن ئوتتۇرا يۇمشاق دېتال_can.py دىكى ئالدىنقى قېتىملىق تاختىسىنى قوشۇپ, ئوتتۇرا يۇمشاق دېتالنىڭ ئىسمى بىلەن.
ئوتتۇرا يۇمشاق دېتال_ alshess = [ # ... ئالدىنقى ئوتتۇرا يۇمشاق دېتال 'wrrors.middleware.excepleverboverbldwordworkdware, ]... ئالدىنقى ئوتتۇرا يۇمشاق دېتال
كېيىنكى قەدەمدە, ئوتتۇرا يۇمشاق دېتالنى قوشايلى.nano users/models.py
يەرلىك ئىمپورت
Expractack
django.utils.pencelfinginational نىڭ ئەكىرىش
_ قارشى تۇرغۇچى = يەرلىك ()
سىنىپ بۇنىڭ سىرتىدا
Def Discent_Exception (ئۆزىنى, تەلەپ, تەلەپ, مۇستەسنا):
_ error.value = traceback.rementat_exc ()
DIMP get_current_exception ():
سىناپ بېقىڭ:
Rever _ error.value
خاسلىقتىن باشقا:
قايتۇرۇڭ
Dep Set_current_Exception (مۇستەسنا):
سىناپ بېقىڭ:
_ error.value = بۇنىڭ سىرتىدا
خاسلىقتىن باشقا:
بېسىپ چىقىرىڭ ('ئىجازەتنامە كەمچىل.'# بىز تېمىغا ئېرىشىش ئارقىلىق ھازىرقى ھالەتكە ئېرىشىش ئۈچۈن بىر ئىقتىدارنى قوشىمىز, بۇ بىزنىڭ كودىمىزدىكى خاتالىقلارنى ئىز قوغلاشقا ياردەم قىلىمىز. قېلىپلاشقاندا بىز پەقەت بىرلا ئېھتىياجلىق, چۈنكى بىز بۇ قاراشنى ھەرىكەتچان ئېنىق ئۆزگەرتتۇق. قېلىپ پەقەت ماۋزۇ ۋە «ئىز قوغلاش» نى بايان قىلىشى كېرەك, بۇ مەزمۇندىن خاتالىق سادىر قىلىشىمىز كېرەك.
نانو خاتالىق / قېلىپ / خاتالىق / خاتالىق / خاتالىق{% Base.html 'نى كېڭەيتىدۇ} {% توسۇش مەزمۇنى%} {{PageTitle}}} {{true}}}} {% ENGOBLY%}
بۇ بىزنىڭ ئاددىي ئەندىشىمىز بىزنىڭ ئاددىي ئەندىشىمىز, ئەمما تۈرىدىكى خاتالىقلارنى قانچىلىك ئاسان كۆرىدۇ. كېيىنكى قەدەمدە, تەڭشەكتە ھەل قىلماي قوزغىايلى.# نانو ئەپ دېتالى / تەڭشەكلەر .py
TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # بۇ قۇرنى ھەقىقىي قىلىپ ئېيتقاندا, ئۇنى يالغانغا ئۆزگەرتىڭ
Debug = يالغانھازىر ئالغا ئىلگىرىلەپ بۇ دېتالنى زاپاسلاڭ. بىز يىراقتىن لىنۇكىس مۇلازىمېتىرىغا ئورۇنلاشتۇرۇشقا تەييارلىنىمىز ھەمدە ئۇ يەردىن ئىقتىدار قوشۇشقا تەييارمىز.
sudo زاپاسلاشبۇ كودنى مۇلازىمېتىرغا يوللاشتىن بۇرۇن, كودلۇق بەزى مەسىلىلەر بولۇشى مۇمكىنلىكىنى ئويلىشىشى كېرەك. دېلوغا ئاساسەن, ئۇلارغا يوللانغان ئۇچۇرلارنى قوبۇل قىلىدىغان تور بېكەتلەر ئەخلەت خەت بىلەن مەسىلە بار بولىدۇ. بۇ دەرھال يۈز بەرمەسلىكى كېرەك, ئەمما يۈز بېرىمىز بولسا, داۋاملىق تورغا ئېرىشىشنى قانداق ئاپتوماتىك ئاپتوماتىك باشقۇرۇشنى كاراي قىلىمىز.
بىز تەكشۈرگەن, ئىشلەپچىقىرىشتا ئىشلار ئوخشىمايدۇ. كىرىش نىسبىتىگە قانداق باھا بېرىدىغانلىقىمىز ۋە ۋاقتى توڭلىتىش. ئەگەر ماشىنا ئادەم تور بېكەتكە چىقسا, چۈنكى ئۇلار بىرلا ۋاقىتتا كودچىغا كىرىشى تېخىمۇ تەس بولىدۇ. بۇ جەڭ قىلىش ئۈچۈن, ئىشلەتكۈچى تىپىدىكى مودېلنى ئىشلەتۋالايلى, تېلېفون نومۇرى بار تور بېكەت بىلەن قانداق ئالاقە قىلىۋاتقاندا قانداق ئالاقە قىلىۋاتقانلىقىنى جاكارلاش. بىز يەنە ئېلېكترونلۇق خەت ئارقىلىق دەلىللەش تاللانمىسىنى قوشالايمىز. NANO بىلەن ئىشلەتكۈچى مودېلىنى تەھرىرلەش ئارقىلىق باشلاڭ.nano users/views.py
Nano ئابونتلىرى / مودېللار .pyبۇ بىز قوشقان مودېل بولۇشىمىز كېرەك. بىز ھەر قانداق ئۇسۇلقا ئېھتىياجلىق ئەمەس, كىمنى ساقلاشقا ئۆزگەرتىلمەيدۇ, ئىشلەتكۈچى, ۋاقىت جەدۋىلى, ۋاقتى ئۆتكەن ئىككى ئامىل دەلىللەش (123456 تېلېفوندا ئەۋەتىلگەن 123456) ئەۋەتىدۇ).
# تور بېكەتكە كىرىش ئۈچۈن ئىشلىتىلىدىغان ئاساسىي بەلگە Matt MFATOKENENENENT (مودېللار .Model): ئىشلەتكۈچى = مودېللار. ۋاقىت بەلگىسى = مودېللار. Edattimefield (سۈكۈتتىكى = ۋاقىت ۋاقتى) ۋاقتى توشمايدۇ. مودېللار. Directimentfield (سۈكۈت = ۋاقىت = ۋاقىت) token = model = models.charfield (سۈكۈتتىكى = '', max_length = 100) limitle = dixplay.interefield (سۈكۈت = 6) سىناق = مودېللار. Worketerfield (سۈكۈت = 0) UID = Modys.Charfield (سۈكۈت = uuid.uid.uid4, max_length = 100)from .email import send_verification_email # تور بېكەتكە كىرىش ئۈچۈن ئىشلىتىلىدىغان ئاساسىي بەلگە
ئىشلەتكۈچىمىزگە ئامالسىز بولايلى, ئاخىرىدا كۆچۈشتىن بۇرۇن, ئىمتىيازلىق ئىشلەتكۈچىلەرنى ئاپتوماتىك قىلىشنى بەلگىلەسلىككە تىرىشىمىز. ئىشلەتكۈچى تىپىدىكى, ئارخىپتا بۇ قۇرنى قوشۇڭ:vendor = Models.booleanfield (سۈكۈت = يالغان)
ساندانى ساقلايدىغانلارغا كەلسەك, بىز كۆچۈپ كېتىشى ۋە چەكلەنگەن مودېللارنى تەھرىرلىدىغان ۋاقىتتىن ئىب ياتاقنى تەھرىرلەيمىز. ئېسىڭىزدە تۇتۇش ئۈچۈن, بۇنى بىرىنچى ئورۇندا ئىشلىتىشنى تەييارلىسىڭىز (تېرمىنال ئوچۇق بولغاچقا, ئاندىن Python Mane.Py كۆچۈش ۋە كۆچۈش بىلەن شۇغۇللىنىدىغان.cd تۈر- سىز ئىسمى-سىز ئىسمى # (ئەگەر لازىم بولسا) مەنبە WVENV / BIN / قوزغىتىش Python Monther.py گىرىم بۇيۇملىرى && Python Mondrot.py Manite
(ئەگەر لازىم بولسا) # ھازىرچە, قېپىنى ئىشلىتىش ئارقىلىق ساتقۇچىلار قىلىپ بولغان ھېساباتنى تىزىملاتسىڭىز بولىدۇ.
# Python Mondrot.py Shell
ئابونتلاردىن.ModeLs ئەكىرىپ ئارخىپى
p = Profile.Ongs.Ongs.Get (ئىشلەتكۈچى__username = 'charlotte')
p.vendor = true
P.save ()
چىقىش ()
# ھازىر, بۇ بەلگىنى ئىشلىتىش ئۈچۈن كۆپ ئىقتىدارلىق ئامىلەت دەلىللەش قارارىنى تەرەققىي قىل باقايلى. بىرىنچى, مېنىڭ MAFA HEAPER UWER نى ئۆزگەرتىشكە موھتاج. Nano نى ئىشلىتىش,
Nano ئىشلەتكۈچىلىرى / MFA.pyDJANGO.IWLE نىڭ ئىمپورت ۋاقتى ئىمپورت ئىمپورت ۋاقتى DJANGO.CONF مەنبە Feed.middleware Rain_current_Request Django.Canctibribd ئەكىرىش .Email Exply_html_Email Expractack .Models نىڭ MFAtoken نى ئىمپورت قىلدى limit_sid = scomant.twilio_account_sid auth_token = station.TWilio_auth_token poot_phone = تەڭشەكلەر. تېلېفون__نومېتىر def bymp_text (server_phone, تېكىست): Twilio.Rever Commental Pay سىناپ بېقىڭ: خېرىدار = خېرىدار (ھېسابات_سىيەتنامە, Auth_token) ئەگەر len (text_phone)> = 11: ئۇچۇر = خېرىدار. Memessages. to = server_phone from_ = fixe_phone body = تېكىست + 'تېكىستنى ئەمەلدىن قالدۇرىدۇ.') بۇنىڭ سىرتىدا: ئۇچۇرلار. يەر تەۋرەش (GET_CURRENT_REQUEST (), «ئۇچۇر ئەۋەتىشتە خاتالىق كۆرۈلدى». بېسىپ چىقىرىش (Traceback.rementat_exc ()) DIMP get_num_lend ئۇزۇنلۇقى (سان, ئۇزۇنلۇقى): n = '' for x دائىرىسىدە (ئۇزۇنلۇقى): n = n + str (num) قايتىش (n) def led_verciew_text (ئىشلەتكۈچى, بەلگىسى): ئۇزۇنلۇقى = ئىشلەتكۈچى .PROFILE.Uveribal_cody_code_lend كود = ئىختىيارى. at_num_length (1, ئۇزۇنلۇقى), get_num_length (9, ئۇزۇنلۇقى)) token.token = code token.expers = creamzone.now.mimttima.TimedErta (مىنۇت = بەلگىلەش_ ئىناۋەتسىز_مىلار) tenken.save () Shadd_user_text (ئىشلەتكۈچى, "سىزنىڭ دەلىللەش كودىڭىز}"} "}".) def shadia_verment_email (ئىشلەتكۈچى, بەلگە): ئۇزۇنلۇقى = ئىشلەتكۈچى .PROFILE.Uveribal_cody_code_lend كود = ئىختىيارى. at_num_length (1, ئۇزۇنلۇقى), get_num_length (9, ئۇزۇنلۇقى)) token.token = code token.expers = creamzone.now.mimttima.TimedErta (مىنۇت = بەلگىلەش_ ئىناۋەتسىز_مىلار) tenken.save () Shady_hml_Emal_Email (ئىشلەتكۈچى) {}} ". تەڭشەكلەر ;.Site_name)) demd_user_text (ئىشلەتكۈچى, تېكىست): SEND_TEXT (ئىشلەتكۈچى. Busine.profile.phone.phone_number, تېكىست) DEX تەكشۈرۈش_vertion_code (ئىشلەتكۈچى, بەلگىسى, كود): token.attempts = togen.attempts + 1 profile = ئىشلەتكۈچى: group.Profile نەتىجە = (بەلگىسى! ئەگەر Token.attempts <3 ۋە نەتىجىدە: Profile.veribia_code_length = 6 Elif togenpet.attempts> 1 ۋە نەتىجىدە يوق: Profile.verque_cody_length = BustiveyMy_cody_code_cody + helvy +sh + 2 ئارخىپ. ئاپتورنىڭ_ tenken.save () Profile.Save () قايتىش نەتىجىسى
# ئىشلەتكۈچىنىڭ ئېلېكترونلۇق خەت ياكى تېلېفون نومۇرىنى ئىشلىتىپ دەلىللەڭ DFFA MFA (تەلەپ, ئىشلەتكۈچى ئىسمى, ئىشلىتىش): token = mfaterken.wilter.filter (Utm =) eld = time_med.mber.mentmpy.mbortma (PROMEMEMEMEMEMENTMEMENTM) ئەگەر جاۋاب بەرمىسە: togen = MFAtenct.brist.mirt.filter (PROTHRENT () + ئىشلەتكۈچى ئىسمى). THARDAGENTRAUT.MONTRAITT.MONTRAITT.MONTRAITTRAIME.STRMENTER.STERNTER (THENTHEDETTERNAME.STRMENTER.STRMENTER. THARDENTRADENT.30) # ئەگەر بۇ يىغىن قۇرۇلمىسا ئىشلەتكۈچى = ئىشلەتكۈچى. .filter (id = orken.us.d).. ئەگەر ئىشلەتكۈچى ۋە تەلەپ بولمىسا .USER.ISTENTINTINATED: قايتا نىشانلاش («تەتۈر) ئەگەر ئىشلەتكۈچى بولمىسا: ئىشلەتكۈچىنىڭ () # # # # نى رەت قىلمىدى كېيىنكى = required.get.get.get ('next', ') ئەگەر ئىشلەتكۈچى بولمىسا.PROW.SENDOW.TWOWO_ACHA_ACHACHACTION & USERFILE.ICECHALE.CHOUT.ICHECHORTE_ACHECHECHORK Auth_Login (تەلەپ, ئىشلەتكۈچى, Buskend = 'django.conban.) #MDURBENDND') # ئىشلەتكۈچىگە كىرمىگەن بولسا ئىشلەتكۈچىگە كىرىڭ ئىشلەتكۈچى. BRIN.PROFILE.MFA_EXPITS = Marmezone.mintima.Minta.minta.lint.lin_minid_minity) # ئۇلارنىڭ كۆپ قىسمىنى دەلىللەشتە ئاخىرلىشىدۇ User.Profile.save () BudefresseNENENDRACE (ئەگەر كېيىنكى بولسا! = 'ئەگەر كېيىنچە!' '' '' '' oncefer ('قونۇش: قونۇش') (ئىشلەتكۈچىگە قونۇش) ئەگەر ئىشلەتكۈچى بولمىسا.profile.mfa_Enabled: # MFA قوزغىتىلغان بولسا تەكشۈرۈڭ ئەگەر تەكشۈرمىسە_ (ئىشلەتكۈچى, بەلگە): # ۋاقىتنى تەكشۈرۈڭ User.Profile.mfa_senabled = يالغان # تېلېفون نومۇرىنى تازىلاڭ ئىشلەتكۈچى .PROFILE.ENDE_TWOWWO_FA_FACTITE_ACTHEIME_ACHACTITITE_ACHACTIONE = MING # MFA نى قوزغىتىڭ User.profile.phone_Number = '+1' # تېلېفون نومۇرىنى چەكلەڭ User.Profile.save.save () # ئارخىپنى تېجەڭ Auth_LOin (teain, ئىشلەتكۈچى, Buskend = 'django.conbange.) #) # ئىشلەتكۈچىنىڭ قوزغىتىلمىغانلىقىنى خاتىرىلەڭ ئۇچۇرلار. (تەلەپ, 'ئىناۋەتلىك تېلېفون نومۇرىنى كىرگۈزۈڭ ۋە كودنى كىرگۈزۈڭ.') قايتا قايتىش (تەتۈر) ('ئىشلەتكۈچىلەر: MFA_SBREKING') ئەگەر تەلەپ قىلىڭ. Memethod == 'يازسا, ئالدامچىلىق_ ئىجرا قىلىش (تەلەپ, TRUE): # تەلەپنى يازما تەلەپ قىلسا جەدۋەل = TFAFF (تەلەپ .post) # جەدۋەلنى تېزلىتىڭ كود = str = str (beat.data.Get.get ('كود', يوق)) # كودقا ئېرىشىش ئەگەر كود ۋە كود! = '' ۋە كود! = ھېچ بولمىغاندا: # يوق token_valided = ئىشلەتكۈچى. Browrafile.Check_auth_token (NoveToken) # Auth بەلگىسىنى تەكشۈرۈڭ p = computer.profile is_veried = تەكشۈرۈش_ce_veriation_code_code (ئىشلەتكۈچى, بەلگە, كود) # كودنى تەكشۈرۈڭ P.Mfa_AutheICTED = is_veried ئەگەر بەلگە_valided: # ھەممە نەرسە بولسا # ئەگەر is_veristed: # تەرتىپ بويىچە User.profile.mfa_s_enabled = ھەقىقىي # MFA نى قوزغىتىش (ئەگەر قوزغىتىلمىسا) User.Profile.save () auth_LOin (dis, ئىشلەتكۈچى, Buskend = 'django.canb ).cord.bord.modband.modjeck.) # ئىشلەتكۈچىگە كىرىڭ چىراي = ئىشلەتكۈچى.'Flaces.filter (sess_key = none) .last () p.mfa_Expies = credzone.now.limteta.Timelta (بىر نەچچە مىنۇت) P.save () ئۇچۇرلار. qs = '?' كۇنۇپكا ئۈچۈن, تەلەپتىكى قىممەت .get.tet.items (): # كېيىنكى پارامېتىر (ئەگەر) QS = qs + كۇنۇپكا + '=' + قىممىتى + '&' ئەگەر كېيىنچە! HttpRessonSERENIRECT (كېيىنكى) # # قايتا نىشانلاڭ ELIF NEW.STERSTSITSWITH ('/ ھېسابات / چېكىنىش /' / Logstortswith) ياكى ئۇنىڭدىن كېيىنكى. قايتا نىشان (تەتۈر ('/')) ELIF تەلىپى .meata.meta.Get ('http_referer', '/ ðé./account/ #): قايتا نىشان (تەتۈر ('/')) Eliff not note قايتا نىشان (تەتۈر ('/')) ELSE: قايتىش httpressonredirect (تەتۈر (') ELSE: ئۇچۇر. (تەلەپ) سىز كىرگۈزگەن كود تونۇلمىغان كود. قايتا سىناڭ. ') Elif outk_valdited: # بەلگە ئىناۋەتسىز بولسا ئۇچۇرلار. (تەلەپ, 'URL بەلگىسى ۋاقتى توشتى. قايتا سىناڭ. قايتا سىناڭ.') Logout (تەلەپ) قايتا نىشان (تەتۈر) قايتۇرۇڭ («ئىشلەتكۈچىلەر: كىرىش»)) ئەگەر p.Mfa_attempts> 3: # ئەگەر بەك كۆپ سىناق بولسا ئۇچۇرلار. (تەلەپ, 'سىزخاتا كودنى 3 قېتىمدىن ئارتۇق كىرگۈزدى. ئۆزىڭىزنى يېڭى كود ئەۋەتىپ بېرىڭ. ') p.everia_code = none P.save () ئېلى. User.Profile.mfa_attempts = 0 ئىشلەتكۈچى.rompan.can_send_mfa = PRORDEZONE.SLY.CTTIME.TTIME.Timeta (3-بەت) User.Profile.save () ئەگەر جەدۋەل. should_mfa_verment_email_Email (ئىشلەتكۈچى, بەلگە) ELSE: SENT_VENY_ETY (ئىشلەتكۈچى, بەلگە) ئۇچۇرلار. ئېلى. ئۇچۇرلار. (تەلەپ, «تەلەپ,« بەك كۆپ ئىككى ئامىلى دەلىللەش كودى ئەۋەتىڭ. باشقا كود ئەۋەتىشتىن بۇرۇن بىر نەچچە مىنۇت ساقلاش. ') جەدۋەل = تەڭشەڭ () hive_logo = none ifer.profile.hide_logo: hive_logo = true ئەگەر تەلەپ .User.is_authenceed: قايتا نىشانلاش (تەتۈر ('/')) # جەدۋەلنى كۆپەيتىڭ (تەلەپكە ئېرىشىش ئۈچۈن) قايتىشnano users/views.py
ئىشلەتكۈچىنى ئېلېكترونلۇق خەت ياكى تېلېفون نومۇرى ئارقىلىق دەلىللەڭ# URL غا ئۆتكەن قىممەت بىلەن سۈزگۈچنى سۈزۈڭ (UDID)
# ئەگەر بۇ يىغىن قۇرۇلمىسا, ئۇنى ياراتمىسا
ئىشلەتكۈچىنى بەلگەدىن ئېلىڭئەگەر ئۇلار ئاللىبۇرۇن دەلىللەنگەن بولسا, ئۇلارنى خاتىرىلىسە
ئىشلەتكۈچى تېپىلمىدى# Auth بەلگىسىنى تەكشۈرۈڭ
send_verification_email(user) # ئىشلەتكۈچىگە كىرمىگەن بولسا ئىشلەتكۈچىگە كىرىڭ
ئۇلارنىڭ كۆپ قىسمىنى دەلىللەشتە ئاخىرلاشتۇرۇڭئىشلەتكۈچىنى كېيىنكى بەتكە يۆتكەڭ
MFA نىڭ قوزغىتىلغانلىقىنى تەكشۈرۈڭ# ۋاقىتنى تەكشۈرۈڭ
تېلېفون نومۇرىنى تازىلاڭMFA نى قوزغىتىڭ
تېلېفون نومۇرىنى چەكلەڭnano users/templates/users/resend_activation.html
ئارخىپنى تېجەڭئىشلەتكۈچىگە گىرىپتار بولغان ئىشلەتكۈچىگە كىرىڭ
ئەگەر تەلەپ يازما تەلىپى بولسا
جەدۋەلنى دەرھال يولغا قويۇڭكودقا ئېرىشىڭ
ئۇنىڭ قۇرۇق ئەمەسلىكىنى جەزملەشتۈرۈڭ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)
Auth بەلگىسىنى تەكشۈرۈڭكودنى تەكشۈرۈڭ
ئەگەر ھەممە نەرسە بولسا
تەرتىپ بويىچەMFA نى قوزغىتىڭ (ئەگەر قوزغىتىلمىسا)
ئىشلەتكۈچىگە كىرىڭكېيىنكى پارامېتىر (ئەگەر)
قايتا نىشانلاشئەگەر بەلگە ئىناۋەتسىز بولسا
ئەگەر بەك كۆپ سىناق بولسا# ئېلېكترونلۇق خەت (ياكى تېكىست) ئەۋەتىڭ
جەدۋەلنى كىرگۈزۈڭ (تەلەپكە ئېرىشىش ئۈچۈن)بۇ كودقا قاچان ئەينى ۋاقىتتا قوشساق, ئېلېكترونلۇق خەت ئەۋەتىش ئىقتىدارىنى ئەكىرىڭ. ھۆججەتنىڭ ئۈستىدە, ئىشلەتكۈچىنىڭ كۆز قارىشى (باشقا ئىمپورتى بىلەن) قوشۇڭ
.Mfa Endled_eAdmibify_eMa_Email_mma_vercation_eMail_Email
ھازىر, بىز بۇ ئىقتىدارنى بۇ خىزمەتتىن بۇرۇن يېزىشىمىز كېرەك. ئۇ سىزنىڭ ئەۋەتىشىمىزنى كېڭەيتىشى كېرەك, ھەمدە دەلىللەش كودى ئارقىلىق ئىشلەتكۈچىگە ئېلېكترونلۇق خەت ئەۋەتىشى كېرەك.Nano ئىشلەتكۈچىلىرى / MFA.py
def shadia_verment_email (ئىشلەتكۈچى, بەلگە): ئۇزۇنلۇقى = ئىشلەتكۈچى .PROFILE.Uveribal_cody_code_lend كود = ئىختىيارى. at_num_length (1, ئۇزۇنلۇقى), get_num_length (9, ئۇزۇنلۇقى)) token.token = code token.expers = creamzone.now.mimttima.TimedErta (مىنۇت = بەلگىلەش_ ئىناۋەتسىز_مىلار) tenken.save () Shady_hml_Emal_Email (ئىشلەتكۈچى) {}} ". تەڭشەكلەر ;.Site_name))
شۇنداق بولغىنى بىلەن ھازىر بىزدە ئىشلەيدۇ, بىزدە تېلېفون نومۇرى ياكى ئېلېكترونلۇق خەتكە باغلىق, كىرىشكە باغلىق, بىز يەنە بىزنىڭ ئاتالىرىمىز بىلەن ھەمكارلىشمايدىغان ئابونتلارنى چىقىرىدىغان, ياكى ھېچ بولمىغاندا ئىشلەتكۈچىلەرنى يوشۇرۇش. بۇلار ئەخلەت ساندۇقى, ماشىنا ئادەم ياكى خىزمىتىمىز ئۈچۈن ياخشى دېمەكچى بولغانلار بولۇشى مۇمكىن. تور بېتىمدىكى ئىشلەتكۈچىلەرنى نازارەت قىلىشقا توغرا كەلدىم:# ئىمپورت django.conbib.auth.decorators ondockent_requach django.cantbib.auth.decoratorsorsortsordsers ئىشلەتكۈچىلەر .tests empties inforts esport_superuser_or_vedor # بىز بۇ سىناقنى قۇرۇشىمىز كېرەك @Login_requactiven @user_peass_st (is_speruser_or_vendor) ئىشلەتكۈچى (تەلەپ): # ئىشلەتكۈچىلەرنىڭ تىزىملىكىنى ئېلىڭ New_TODY = ئىشلەتكۈچى... New_this_month = ئىشلەتكۈچى .filter.filter (is_active = time_joint.mondain.mime_monet.mimta.30 * 30)). (سائەت = 24 * 30)) مۇشتەرىلەر = ئىشلەتكۈچى. يېڭى .filter (is_active = True, Truebscribd = trust infrensctuded = trust). قايتىش «ماۋزۇ»: «بارلىق ھېساباتلار», 'ئىشلەتكۈچىلەر': ئىشلەتكۈچى. Thats.all (), 'New_Toady': New_Toady, 'Win_this_month': New_T_Ss_month, '' onders's ': مۇشتەرىلەر })
ئىمپورت
بىز بۇ سىناقنى قۇرۇشىمىز كېرەكئىشلەتكۈچىلەرنىڭ تىزىملىكىنى ئېلىڭ
ئىشلەتكۈچىلەرنى قېلىپقا قايتۇرۇش
دىققەت قىلىڭكى, بۇ كود سىناق ئىشلىگەنلىكىگە دىققەت, بىز بۇ سىنىپ ھۆججىتىنى سىناق قىلىپ, ئۇنى ئەكىمىز بولۇشى كېرەك. ئىشلەتكۈچى / سىناقنى تەھرىرلەڭ. ENTY, سىناق قۇرايلى.Def is_superuser_or_veendor (ئىشلەتكۈچى): USDRODA.PROFILE.VENDOR.IST ياكى ئىشلەتكۈچى .is_superuser
بۇ ئىشلەتكۈچىلەر / ئىشلەتكۈچىلەر بىلەن بىرلىشىپ تۇرىدۇ. ئۇ مۇنداق بىر نەرسە ئوخشايدۇ:
{% Base.html 'نى كېڭەيتىدۇ}
{% Love App_filter%}
{% توسۇش مەزمۇنى%}
بارلىق رويخەتكە ئېلىنغان زىيارەتچىلەر
{NewW_tooday | NTS | NTS | NTS INF}}}} new مونكىس مۇشۇ ئاي, NTS {adders.scount | NTS {addercount | NTS}}} جەمئىي.
{ئىشلەتكۈچىدىكى ئىشلەتكۈچى ئۈچۈن%}
{% 'ئىشلەتكۈچى / _user.html'%}
{% endfores%}
{% ENGOBLY%}User.html. بويسۇنغۇچى ۋە كېڭەيتىلمىگەن قېلىپنى ئىشلەتكەندە, كېڭەيتىلمىسى, ئۇنىڭ تەپسىلاتىنى قوشۇش ياخشى پىكىر (
شۇنىڭغا دىققەت قىلىڭكى, بۇ نۇرغۇن جىنجا, بۇ ئۆزگەرگۈچى مىقدارلارنىڭ ھەممىسى بولماسلىقى مۇمكىن. ئەمما بۇ مېنىڭ كودلىرىم ئوخشايدۇ. # {% Love App_filter%}
@ {{ئىشلەتكۈچى. سېتىۋالغۇچى {{{Mustress.ner.rade.NAME.NAME.RENT.RENA.RES.PROFY_PREED_NTER})
ئۆتكەن بىر سىنئالغۇ {{code.profile.last.seen | چېسلا: "F D, Y) {ئىشلەتكۈچى.Rose.lasen | {ئىشلەتكۈچى:" h: "h:" h: "h.sp}}}}
قوشۇلدى {ads.profile.Date_jeed | چېسلا: "F d, y"}} {"}}}
{{ئىشلەتكۈچى. خەت}}
ئەگەر ئىشلەتكۈچى بولسا. ئىشلەتكۈچى. Grable.Bosid.phone_NUMBER% {{{ئىشلەتكۈچى.profile.phone.phone.por.5}%}
{% بولسا %. ئەگەر ئىشلەتكۈچى.
'{{ئىشلەتكۈچى..
{{ئىشلەتكۈچى.. .last.docure_number}
{{ئىشلەتكۈچى.. .last.mrthdate}}
Id from
Id back
{% endfif%}
# {{ئىشلەتكۈچى}}}}}
{% ئەگەر ئىشلەتكۈچى. ئەگەر ئىشلەتكۈچى.profile.sbudesbord%} مۇشتەرى بولۇڭ%}
{% ئەگەر ئىشلەتكۈچى بولمىسا.is_superuser%}
{% نى «ئىشلەتكۈچى / unggle_aCtive.html '%}
{% endfif%}
{%}
{{ئىشلەتكۈچى.bio}}
{% endautowacupe%}
ئىشلەتكۈچىگە نىسبەتەن. ئەگەر ئىشلەتكۈچىگە قارىسىڭىز. Redity Buseedys_derdity ئىشلەتكۈچى. {% ENDE%}%}%}
{{ئىشلەتكۈچى. ئىككىنچى}}} </ small>بىز يەنە يەنە بىر تارماق بوشلۇق, Toggle_ACIST.HTML. بۇ قېلىپ, ئىشلەتكۈچىنىڭ ئاكتىپ ئىكەنلىكىنى قوزغىتىشقا ياردەم بېرىدۇ.
{% بولسا. ئەگەر ئىشلەتكۈچى_سىس_ئىشلەتكۈچى پائالىيىتىنى يۆتكەش ئۈچۈنمۇ كۆرۈنۈشىمىز ۋە مۇۋاپىق URL ئەندىزىسىنى كۆرۈش كېرەك. بىز ئۇ ۋاقىتتا, بىز ئېھتىياجلىق بولغان ئەھۋال ئاستىدا ئىشلەتكۈچىنى ئۆچۈرۈۋېتىمىز.
django.Views.Decorators.csrf.csrf ئىمپورت قىلغۇچىلار CSRF_ExEmpt @csrf_exemp @Login_requactiven @user_peass_st (is_speruser_or_vendor) Ref unggle_user_active (تەلەپ, pk): ئىشلەتكۈچى = ئىشلەتكۈچى. Twist.Get.get (id = pk) ئەگەر تەلەپ قىلىڭ. Memethod == 'يازما: ئىشلەتكۈچى .IS_ACENT = ئىشلەتكۈچى ئەمەس. Mess_active User.Save () قايتىش httpReponse ('' ئەگەر ئىشلەتكۈچىگە) قايتۇرۇڭ. # ئىمپورت djangou.auth.mix.mixists كىرىش كىرىش چەكلەنگەن, ئىشلەتكۈچى باھالانغان DJANNGO.VIEWS.Generic ئىچكى كۆرۈنۈشى Classordeleteview (كىرىش ماس قەدگىنەلەمتىن, ئابونتلار ئەڭ Opdorstemix, DisressView): Model = ئىشلەتكۈچى مۇۋەپپەقىيەت DIFT_Context_data (ئۆزى, ** kaggs): مەزمۇن = دەرىجىدىن تاشقىرى (). get_conteext_data (** kwargs) قايتىش مەزمۇنى Ref Tres_funct_func (The Sten): ئەگەر ئىشلەتكۈچى دەرىجىدىن تاشقىرى ۋە ئۆچۈرۈش رۇخسىتى بولسا سىناق ئىشلەتكۈچى = self.get_object () ئەگەر Self.Request.Ser.user! = ئىشلەتكۈچى ۋە Self.Sent.user.iser.is_superuser: TRUE TRUE يالغانئىمپورت
مۇۋەپپەقىيەت ئادرېسنى قايتا نىشانلاش# ئەگەر ئىشلەتكۈچى دەرىجىدىن تاشقىرى ۋە ئۆچۈرۈشكە ئىجازەت بېرىلگەن بولسا سىناق
# زۆرۈر تېپىلغاندا ئەمەلىي بولسا, ئىشلەتكۈچىنى ئۆچۈرمەكچى بولغاندا, بىز ئۇلارنى رەت قىلىشقا تېگىشلىك كىشىلەر »نىڭ كۆرۈنۈشىنى پەقەت بۇ ئورۇنغا بېسىپ چىقارساق.
# بىز قوشۇلغان URL ئەندىزىسى بۇنىڭغا ئوخشايمىز. Nano, ئىشلەتكۈچى / URL نى تەھرىرلەڭ ۋە بۇ قۇرلارنى قوشۇڭ:
TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Nano ئىشلەتكۈچىلىرى / URLS.PY
بۇ قۇرلار ئىشلەتكۈچى كۆرۈنۈشىدىكى يوللار تىزىملىكىگە كىرىشى كېرەك »]" ئەمما باشلىنىشتىن كېيىن "[".# ... يول ('ئىشلەتكۈچى // ئۆچۈرۈش /' يول ('ئىشلەتكۈچى // ئاكتىپ /', sight.toggle_user_acer- ئىشلەتكۈچى = 'toggle-usic), # ...
...source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
...ھازىر, ئىزدەڭ, ئۇنى بىز داۋاملىق تور مۇلازىمېتىرىغا چۈشۈرەلەيسىز. بۇيرۇق قۇرىدىن,
sudo زاپاسلاشھازىر تور بېتىمىز زاپاسلاندى.
ھازىر بىزدە بىر ئاز پايدىلىق ئىقتىدارلىرىمىز بار. ئەمما بۇ يەردىكى چوڭ رەسىمچۇ? بۇ كود يەنىلا توردىن زىيارەت قىلغىلى ئەمەس, بىزنى ئېلېكترونلۇق خەت مۇلازىمېتىرى بولغاچقا, بىزنىڭ ئەپىمىزنى قىسقا ۋاقىت ئىچىدە ئۆز ئىچىگە ئالىدىغان شۇنداقلا ئوڭۇشلۇق ئورۇنلاشتۇرۇشنى ئۆز ئىچىگە ئالىدۇ.# بىز بۇلارنىڭ ھەممىسىگە ئېرىشىمىز. ھازىر ئۇبۇنتۇ مۇلازىمېتىردا بۇ كودقا ئېرىشىش ئۈچۈن پەقەت بۇ كودقا ئېرىشىش ئۈچۈن, بۇ بىز پەقەت ئۇبۇنتۇ مۇلازىمېتىردىكى بىر نەچچە قۇر بار. سىز بۇ يۇمشاق دېتالنى ئىجارە بېرىش ئۈچۈن لازىم بولسىڭىز, بۇ يەردە مۇلازىمېتىر بولمىسا, پورتلارنى ئېچىڭ, پورتنى ئاچالايدىغانلىقىڭىزنى قوزغىدى. مەن مېنىڭ ئۆيۈمگە قاچىلانغان HP Z440 نى ئىجرا قىلىمەن, ئەمما ئۇ ئادەتتە مەۋھۇم شەخسىي مۇلازىمېتىرنى ئىجارىگە بېرىش (VPS) ئىجارە بېرىدۇ.
if user and user.profile.can_login < timezone.now(): # ئېسىڭىزدە بولسۇنكى, بىز ھازىر يۈگۈرۈۋاتقان كود بىر قەدەر ئەخمەق, بىز مەھسۇلات ياساپ, مەھسۇلات بەرپا قىلىشىمىزنى تەييارلاشتىن بۇرۇن ياخشىلىنىشقا تەييارلىق قىلىش كېرەك. ئىنتېرنېت بىلەن نېمىلەرنى قىلىدىغانلىقىڭىزنى ئېھتىيات قىلىڭلار, بۇ تور بەتنى لىنۇكىس مۇلازىمېتىرىدا ئاشكارا تور قىلىپ ئورۇنلاشتۇرۇڭ, ئەگەر تور بېتىڭىز بىلەن كېرەكسىز نىيەتنى چەكلەش پىلانىڭىز بار. بۇ بەلكىم دەسلەپتە مەسىلە يوق, ئەمما بۇ ئارقىلىق بۇك كادىر, سۈنئىي ئىدراك ۋە كومپيۇتېرنىڭ تەسەۋۋۇرى. بىر مەسىلىگە ئايلانغاندا, بۇ تېكىستنى ھەل قىلىش ئۈچۈن بۇ تېكىستنى تېخىمۇ كۆرۈڭ.
# VPS ئىجارىگە بېرىش جەھەتتە, سىز بارالايدىغان نۇرغۇن جايلار بار. Google بۇلۇتى بار بولغان Venos, كامبېتاا, ئامازون ئەسىرىلىرى بىزنىڭ ئېھتىياجىڭىزغا كادىرلىرىمىزغا ماس كېلىدىغان بۇلۇت مۇلازىمېتىر تەرەپلىرىنى تەمىنلەيدۇ.
return redirect(user.profile.create_auth_url()) # ئۇلارنىڭ جەدۋىلىنى چېكىش ۋە باشلاش ئۈچۈن پىلاننى تاللاڭ. ھەر قانداق تەمىنلىگۈچى بىلەن ئاساسىي پىلان بىلەن ماڭالايسىز, ئەمما تەمىنلىگۈچىنىڭ ئېلېكترونلۇق خەت پورتلىرىنى ئېچىڭ (بۇ تەمىنلىگۈچىلەر چوقۇم 587-پورت بولىقى بولۇشى كېرەك), بەزى پورتلار بۇ ئېغىزلارنى كۆچۈرۈشى كېرەك. ھازىرغىچە مەن ionos ۋە KamoteRa بىلەن ئەڭ ياخشى تەجرىبە بار, ئۇلارنىڭ ھەر ئىككىسى چەكسىز ئېلېكترونلۇق خەت ئەۋەتىشىمنى ۋە ئۇلارنىڭ باھاسى تېخىمۇ ئەرزان بولىدۇ.
else: # سىز SSh ياكى بىخەتەر قېپى دەپ ئاتىلىدىغان كېلىشىم نومۇرى توغرىسىدىكى يېڭى مۇلازىمېتىرىڭىزغا ئۇلسىڭىز شەخسىي كومپيۇتېرىڭىزدىن شەخسىي كومپيۇتېرىڭىزغا ئوخشاش يىراقتىكى كۆرۈنمە يۈزىڭىزگە يۆتكىلىشىڭىزگە يوللايدىغان يېڭى مۇلازىمېتىرىڭىزغا ئۇلىنىدىكەن. مۇلازىمېتىرنى قۇرغاندىن كېيىن, ساھىبخانلىق بىلەن تەمىنلەش سىزدىن SSH كۇنۇپكىسىنى قوشۇشىڭىزنى تەلەپ قىلىشى مۇمكىن, ياكى سىزگە ئىشلەتكۈچى ئىسمى ۋە پارولىنى بېرىدۇ. SSh كۇنۇپكىسى قانداق قىلىپ باشقۇرغۇچى قۇرىدىن كودنى تەھرىرلەش ئۈچۈن بۇيرۇق قۇرىدىن مۇلازىمېتىرغا كىرىسىز. SSH كۇنۇپكىسىنى ھاسىل قىلىش ئۈچۈن تۆۋەندىكى SSH-ئاچقۇچلۇق تاللاشلىرىنى ئىشلىتىڭ.
else: # Ssh-Covergen
user = User.objects.filter(username=username).first() # ئەگەر لازىم بولسا ھۆججەتنى ساقلاڭ ۋە ئۇنى قاپلىۋېلىڭ, ئەگەر سىز ئەزەلدىن بولۇپ باقمىغان بولسىڭىز, SSH كۇنۇپكىلىرىڭىزنى ئايلىنىش ياخشى. ھازىر, تۆۋەندىكى بۇيرۇقنى ئىشلىتىپ SSH كۇنۇپكىسىنى كۆرۈڭ. ئۇنى يىراقتىن مۇلازىمېتىرغا كۆچۈرمەكچى, شۇڭا ئۇنى دەلىللەش ئۈچۈن ئىشلەتسىڭىز بولىدۇ.
profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # مۈشۈك ~ / .ssh / id_rsa.pub
ئەگەر بۇ بۇيرۇق يېزىشتا SSH كۇنۇپكىسىنى كۆرەلمىسىڭىز (ئۇزۇن جۈملە ۋە ھەرپلەر RSA كۇنۇپكىسىنى ھاسىل قىلىڭ (ئۇلار rsa كۇنۇپكىسى ھاسىل قىلىدۇ () تۆۋەندىكى كود ئۇلارنى ئىشلىتىشنى تەۋسىيە قىلىمەن.) تۆۋەندىكى كود 4096 بىتلىق خەلق پۇلى ھاسىل قىلىدۇ.ssh-chengen-tts rsa -b 4096
Ubuntu نى ئىجرا قىلسىڭىز, ئۇبۇنتۇنى ئىجرا قىلىڭ, ئەمما بۇنداق قىلىشنى پىلانلىدىڭىز. تەمىنلىگۈچىلەر تور بېكىتى (Kametera.com, iosnos.com ياكى شۇنىڭغا يولۇقسىڭىز, كىرمەكچى بولسىڭىز) كىرىڭ. شۇنداق قىلىش ئۈچۈن ssh.x.xx.xx.xx غا ئوخشايدىغان ئادرېسى). سىزمۇ قۇرغان مۇلازىمېتىرغا سۈكۈتتىكى ئىشلەتكۈچى ئىسمىڭىزغا سەزگۈر بولۇشىڭىز لازىممۇكى بولىدۇ.ssh ubuntu@xx.xx.xx.xx.xx.xx.xx.
ئەگەر سىز مەخپىي نومۇرنى تەلەپ قىلىشقا توغرا كەلسە, ئۇنى كىرگۈزۈڭ, كىرگۈزۈڭ, سۈكۈتتىكى ئىشلەتكۈچى نامىنى ئىشلىتىمىز, شۇڭا يېڭى ئىشلەتكۈچى قۇرۇش ۋە ئۇنىڭ ھېساباتىغا SSH كۇنۇپكىسىنى بېسىپ باشلايلى.nano users/sms.py
مۇلازىمېتىرنى SSH نى SSH نى ئىشلىتىشنى ئېيتىپ بېرەي.# nano ssh_config
# # بۇ SShd مۇلازىمېتىر سىستېمىسىنىڭ كەڭ سەپلىمە ھۆججىتى. قاراڭ
# shshd_config (5).
# بۇ sshd يول = / USR / SBIR: / USR / SBIN: / usr / bin: / usm / bin: / sbin / bin: / لىن: / سان: / لىن: / سان /
# سۈكۈتتىكى SSHD_CONFIG بىلەن ئەۋەتىلگەن ئىستراتېگىيىلىك
# Openshs نىڭ سۈكۈتتىكى قىممىتى بىلەن تاللاشلارنى بەلگىلەش
# مۇمكىن, ئەمما ئۇلارنى خاتىرىلىدى. نازارەت قىلىنمىغان تاللاشلار قاپلايدۇ
# سۈكۈتتىكى قىممىتى.
# Inform2
# قولۋاقتا
#Idendddress 0.0.0.0.0
# پىكىر ::
#Hostkey / ets / ssh / ssh / ssh_host_rsa_key
#Hostkey / ets / ssh / ssh_host_ecdsa_key
#Hostkey / ets / ssh / ssh_host_ed25519_
# CIPRands and Shipationing
#RekeyLimit سۈكۈتتىكىسى يوق
# كىرىش
#Syslogfactional sug
#LogLevel ئۇچۇرى
# دەلىللەش:
#Logningraceime 2m
#Permitrootlogin پارولنى چەكلەيدۇ
# ئۇۋىم
#Maxauthtrats 6
#MaxseSions 10
PUBEYAUTITITIONE YES
# كەلگۈسىگە سەل قاراش.
ھوقۇق بېرىلگەن .ssh / ھوقۇق بېرىلگەن_ باھانە .ssh / ھوقۇق بېرىلگەن_ باھانە بولۇش
#Authointedpincipsfile يوق
#Authoinnedkeyketymerman none
#AuthoinnedikeSyScomanduser ھېچكىم يوق
# بۇ خىزمەتكە ئېھتىياجلىق بولسىڭىز, سىزمۇ ساھىبجامال ئاچقۇچقا ئېھتىياجلىق بولىسىز
#HostbaseweneIction
# ئەگەر ئىشەنمىسىڭىز ھەئە, ھەئە / .ssh / تونۇلغان_ سۈرەتكە چۈشمەكچى بولسىڭىز
# HostBasedWashe
# Noignersusersynoundsons no
# ئىشلەتكۈچىنىڭ ~ /. ياكى ~ /..
# ئۇششاق-چۈششەك ئىشلار ھەئە
# تونېلنى تازىلاش ئۈچۈن ئېنىق تېكىست مەخپىي نومۇرى, بۇ يەردە ياق!
پارول يوق
#Permitemptypasswist ياق
# خىرىس ئىنكاسىنى قوزغىتىش ئۈچۈن ھەئە ئۆزگەرتىش ئۈچۈن
# بەزى PAM مودۇلى ۋە تېمىلىرى)
KbdintectionaicateIceIce No
# Kerberos تاللانمىلىرى
# چېركاۋلار ياق
#Kerberorocalcoalpashpswd ھەئە
# ئاچچىق سېزىمچانلىقى ھەئە
#Kerberosgetfestfoken no
# Gssapi تاللانمىلىرى
#GssapitiTeNeation ياق
#Gssricleuctucturedics yes
#Gssastrictaccepcork yes
#Gssapikeyexcef
# بۇنى «ھەئە» قىلىپ, PAM دەلىللەش, ھېسابات بىر تەرەپ قىلىش ئۈچۈن.
# ۋە يىغىن بىر تەرەپ قىلىش. ئەگەر بۇ قوزغىتىلغان بولسا, PAM دەلىللەش بولىدۇ
# KBDINTECTICEICENTIONEY ۋە
# پارول. PAM سەپلىمىسىگە ئاساسەن,
# PAM دەلىللەش KBDINTECHECHEITIENTIENTIONTIONTIONTION AXTEPTIONE PROPSSPASS
# «ئىجازەتسىز» ئىجازەتنامىسى.
# ئەگەر سىز پەقەت PAM ھېساباتى ۋە يىغىن چەكلىمىسىنى ئويلاپ كۆرسىڭىز
# PAM دەلىللەش, ئاندىن بۇنى قوزغىتىڭ, ئەمما پارول بەلگىلەڭ
# ۋە kbdintereAction بولسا «ياق».
Lispam ple
# تاماشىبىنلار ھەئە
#AllowTCpforward; ھەئە
#GateWorkports no
X11.fardwarding yes
# X11displayoffosffs 10
# X11Ulocalhoost ھەئە
#Permitttime yes
Prademoted no
#Pinminlastlog ھەئە
#Tcpkeepalive yes
#Permitusenvornomentment
#Cemptalet كېچىكتۈرۈلدى
# ئۇلىنىش 0
#ClientsCountmax 3
# نامسىز
#Pidfile /run/sshd.pid
#Maxstartups 10: 30: 100
#Permittunnel no
#Chrootdirctory none
#SlionIndendum يوق
# سۈكۈتتىكى بايراق يولى يوق
بايراق / ots / بايرىقى
# خېرىدارنىڭ باشقا مۇھىت ئۆزگەرگۈچى مىقداردىن ئۆتۈشىگە يول قويۇڭ
Lang lang lc_ *
# ھېچقانداق تارماق سىستېما يوق.
AutureTeemsm SFTP / USR / LIB / OPENSH / OPENSH / SFTP- مۇلازىمېتىر
ھەر بىر ئىشلەتكۈچىنىڭ تەڭشىكىنى بېسىپ چۈشىدۇ
#Batch ئىشلەتكۈچى Ancvs
# X11fardsward no
# يوللانما قوزغىتىش ياق
# ئىجازەتنامە
# SATECCOMAND CVS مۇلازىمېتىرى
ئىجازەتنامە يوق
# بۇ SSHD مۇلازىمېتىر سىستېمىسىنىڭ كەڭ سەپلىمە ھۆججىتى. قاراڭ
# shsh_config (5).
# بۇ sshd يول = / USR / SBINT / SBIN: / USR / SBIN: / usr / bin: / usm / bin: / sbin: / sbin: / لىن: / لىن / SBIN: / usm / brin
# سۈكۈتتىكى SSHD_CONFIG بىلەن ئىشلىتىلگەن ئىستراتېگىيىدە ئىشلىتىلگەن ئىستراتېگىيى
# OlenshsH نىڭ سۈكۈتتىكى قىممىتى بار تاللاشلارنى بەلگىلەش
مۇمكىن, ئەمما ئۇلارنى خاتىرىلىدى. نازارەت قىلىنمىغان تاللاشلار قاپلايدۇسۈكۈتتىكى قىممىتى.
22-ئېغىز# ئادرېس
AUTH_VALID_MINUTES = 3 # Meeboaddress 0.0.0.0.0.0
Meeaddress ::Torkey Port / ots / ssh / ssh_host_rsa_key
Torkeys / ots / Ssh / Ssh_host_ECDSA_Key# Tourtukey / ots / ssh / ssh_host_ed2519_Y
# سىفىرلار ۋە ئاچقۇچلۇق
# Rekeylimit سۈكۈتتىكىسى يوق
كىرىشSyslovality auth
Loglevel ئۇچۇرى# دەلىللەش:
LogingraCerment 2mئىجازەتسىز پارولنى چەكلەش
قاتتىق دېتال ھەئەnano users/templates/users/mfa.html
MaxAuthtrs 6Maxsessions 10
ئۈمىدۋار .ssh / ھوقۇق بېرىلگەن_ پېشالىيەچە.
بېرىلگەن قولدىن كەتكەنھوقۇق بېرىلگەن
ھوقۇق بېرىلگەن ئوغرىلىقچە ھېچكىم يوقnano users/templates/users/mfa_onboarding.html
بۇنىڭ ئۈچۈن خىزمەت قىلىش ئۈچۈن سىز يەنە ساھىبخانلىق ئاچقۇچلارغا ئېھتىياجلىق بولىسىز / ets / ssh_khon_hostsHostasdauthenice not
ئەگەر سىز ئىشەنمىسىڭىز ھەئە, ھەئە / .ssh / تونۇلغان_ho
ساھىبجامالنارازىلىقى يوق
ئىشلەتكۈچىنىڭ ~ /. .ିରି ۋە ~ /.نادانلىق قىلغۇچى ھەئە
تونېۋېتىلگەن تېكىستنى ئېنىق يېزىش ئۈچۈن, بۇ يەردە ياق.Permitemptypassword no
خىرىس ئىنكاسىنى قوزغىتىش ئۈچۈن ھەئە# بەزى PAM مودۇلى ۋە تېمىلىرى)
Kerberos تاللانمىلىرىKerberrosauthection no
KerberoSorcalpalpasswd ھەئە# Kerborotpectleuckup yes
Kerberosgetafsfotoken noGssapi تاللانمىلىرى
Gssapioutneation nonano users/templates/users/profile.html
Gsssapicleuctuctirs yes
Gssapistrictacceptock fleGssapiyexclection no
PAM دەلىللەش, ھېسابات بىر تەرەپ قىلىش ئۈچۈن ئۇنى «ھەئە» قىلىپ قويۇڭ.ۋە يىغىن بىر تەرەپ قىلىش. ئەگەر بۇ قوزغىتىلغان بولسا, PAM دەلىللەش بولىدۇ
KBDINTECTIONEITIONITIONEY ۋە# پارول. PAM سەپلىمىسىگە ئاساسەن,
# KBDINTECTIONEICEITIONETIONTIONETIONTIMETICEMENTIMITIMITIONE ئارقىلىق
«ئىجازەتسىز« ئىجازەتسىز ناخشا يوق ».ئەگەر سىز پەقەت PAM ھېساباتىغا ۋە يىغىن چەكلىمىسىنى خالامسىز?
PAM دەلىللەش, ئاندىن بۇنى قوزغىتىڭ, ئەمما پارول بەلگىلەڭbackup
ۋە kbdintereActicationa غا «ياق».ياردەم پۇلى
THETTTCPFFIFTING YEWpython manage.py runserver localhost:8000
Gatewayports noX11displayoFFest 10
X11 Beoplehost ھەئەئىجازەتنامە
Prinlastlog ھەئەTcpkeepalive yes
Nexusenvenvoronmentmentپىرىسلاش كېچىكتۈرۈلدى
خېرىدارلار 0خېرىدارلار
Notseds notpython manage.py startapp errors
Pidfile /run/sshd.pidMaxSartups 10: 30: 100
ئىجازەتنامە يوقhandler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
Chmootdirctory noneExchalDendum يوق
سۈكۈتتىكى بايراق يولى يوق# خېرىدارنىڭ باشقا مۇھىت ئۆزگەرگۈچى مىقداردىن ئۆتۈشىگە يول قويۇڭ
ھېچقانداق تارماق سىستېما يوقھەر بىر ئىشلەتكۈچى ئاساسىدىكى تەڭشەكلەرنى بېسىپ چۈشىدۇ
ئىشلەتكۈچى Anoncvs نى ماسلاشتۇرۇڭ # X11frying no
رۇخسەت قىلىش يوقئىجازەتنامە
Friedcomand cvs مۇلازىمېتىر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.')
ئېسىڭىزدە تۇتۇڭ, CTRL + X ۋە Y ھۆججەتنى ساقلايدۇ. كېيىنكى قەدەمدە, سىز باشلاڭ (ئىشلەتكۈچىدىكى سۈكۈتتىكى ئۆي مۇنچىسىغا قويۇلغان) نى ئاساسىي shiped نى يازايلى.نانو باشلىنىدۇ
مۈشۈك ئارقىلىق تاپقان SSH كۇنۇپكىسى بىلەن. (.ssh / id_rsa.pub)nano errors/templates/errors/error.html
#! / bin / bash
sudo apt action-oy nano git Opensh-Sygers
sudo cp sssd_config / لىرى / ssh / sshd_config
sudo مۇلازىمىتى SSH قايتا قوزغىتىلدى
sudo مۇلازىمىتى SSHD قايتا قوزغىتىلدى
echo "pogroot/.ssh/id_rsa" | sudo sou toot -c «SSH-Keygenghs RSA -N ''»
echo "يىلتىز SSH كۇنۇپكىسى:"
sudo sou toot -c "ca / tortaut/.ssh/sh/sid_rsa.pub".
sudo Vimuser - Boogle-getos "" كوماندى
sudo passwd -d ئەترىتى
sudo Usermod -AG Sudo گۇرۇپپىسى
echo "/home/team/.ssh/id_rsa" | su team -c "SSH-Keygen -t RSA -N ''"
مۈشۈك /خې / تەلەي /.ssH/sh/sh/sh/rub_rub.pub!
echo '' ">> /home/Team/.ssh/Authained_Keys
echo "Tech Shiet Shiet:"
مۈشۈك /home/Team/.SSH/AD_RSRA.PUB
! / bin / bashسىز بۇ ھۆججەت ئارقىلىق مېڭىش ئۈچۈن, قۇر ئارقىلىق قۇرنى باشلايلى. بىرىنچى قۇر تۈز ئۈچنى سۆزلەيدۇ, بۇ بىر باش قوليازما. ئاندىن سەپلەشكۈملەشتۈرۈپ, Sshd_config نى تۈزىتىپ, «گۇرۇپپىسىنى قايتا ئورنىتىپ, SSH كۇنۇپكىسىنى نى توپلاش» (سىز بۇنىڭغا ئوخشاش ئىسىمنى تاللىسىڭىز, بۇ ئارقىلىق IM ئىسىمنى ئۆز نامى ۋە پارولنى ئۆز ئىچىگە ئالىدۇ). بىز يەنە Sudo گۇرۇپپىسىغا گۇرۇپپىنى قوشۇپ قالدۇق, Ssp كۇنۇپكىسىنى ئىگىلەپ قالدۇق, ھوقۇق بېرىلگەن ئاچقۇچ ۋە ئۇلارنىڭ كۇنۇپكىلىرىڭىزنىمۇ قوشۇڭ, ئۇلارنىڭ كۇنۇپكىنى بېسىڭ. بۇ يېڭى ئىشلەتكۈچى سىزنىڭ تور بېكەتكە كىرىمىز.
يېڭى تېرمىنالدا, ئالغا ئىلگىرىلەپ مۇلازىمېتىرنى قايتا ئېچىڭ.nano app/settings.py
ssh compart@xx.xx.xx.xx.xx.بۇ قېتىم SSH كۇنۇپكىسى بولغاچقا, پارول لازىم بولماسلىقىڭىز كېرەك. تور بېكەتنى تېخىمۇ بىخەتەر ساقلاش ئۈچۈن پارول بىلەن كىرىشنى يەنە چەكلىمەمىز.
ھازىر بۇ مۇلازىمېتىر پۈتۈنلەي ھېچقانداق ئۇچۇر يوق. ئۈسكۈنىمىزنى GIT دىن كۈزگە باشلايلى, شۇڭا ئۇنى يىراقتىن ماشىنىغا چۈشۈرۈپ ئىجرا قىلالايمىز. SSH دىن ئۇلانغان يىراقتىن مۇلازىمېتىردا, ئالدى بىلەن SSH كۇنۇپكىسىنى بېسىڭ:DEBUG = False
مۈشۈك ~ / .ssh / id_rsa.pubكېيىنكى قەدەمدە بۇ كۇنۇپكىنى GIT ئامبىرىمىزنى تەڭشەشتىن بۇرۇن ئۆزىمىز چاپلىغاندەك چاقچاق قىلىپ چاپلاڭ. بىز ھازىر تور بېتىمىزنى بىۋاسىتە مۇلازىمېتىرغا چاپلاشمايمىز. يەرلىك بىرىنچى ئورۇندا يەرلىكنىڭ زاپاسلانغانلىقىڭىزنى جەزملەشتۈرۈڭ, شۇڭا ئۇ چۈشۈرۈش ئۈچۈن GIT مۇلازىمېتىرىدا.
GIT Clone Git: //github.com/Your.gitsudo backup
مۇكەممەل. ھازىر بارلىق ھۆججەتلەرنىڭ ھەممىسى بۇ يەردە. بىز ئۇلارنى ls بىلەن كۆرەلەيمىزls
ھازىر, مۇلازىمېتىرنى قۇرۇشقا باشلايلى. ئالدى بىلەن, تۈر مۇندەرىجىڭىزنى تۈرگە ئىشلىتىدىغان ئاددىي, ئۇنسىز ئىسىمغا كۆچۈرىمىز.cp- ئۇ سىزنىڭ قاراۋۇلخانىسى
بۇ يەردە «نېمە بارلىقى» بۇ سىزنىڭ تۈرىڭىزنىڭ يېڭى ئىسمى. كېيىنكى, مۇلازىمېتىر قۇرۇش ئۈچۈن ئاساسىي ئىشلىتىش ئورنىتىشىمىز كېرەك. بىز بۇ ئەسۋابلارنى قۇتۇلدۇرۇپ, كەلگۈسىدە ئىشلىتىڭ. بۇ پايدىنى يارىتىش ئۈچۈن, قوليازنى قانداق چاڭ قىلىپ تەھرىرلەيمەن. BaseH, تەھرىرلەش / USR / BIN / خاسلىقىنى ئىشلىتىشnano users/models.py
sudo nano / usr / bin / couptئۇ يەردە سۆرە ئىشلىتىشنى جەزملەشتۈرۈڭ, شۇڭا بۇ ھۆججەتنى تەھرىرلەش ئۈچۈن ھۆججەتلىرىڭىز بار. ھۆججەتتە بۇ قۇرلارنى قوشۇڭ:
#! / bin / bash if [! -f / usr / bin / $ 1] ئاندىن sudo touch / usr / bin / $ 1 echo "#! / bin / bash" >> / usr / bin / $ 1 sudo chmod a + x / usr / bin / $ 1 sudo nano / us / bin / $ 1 Echo $ 1 | sudo tee -a / etc / sercripts else sudo chmod a + x / usr / bin / $ 1 sudo nano / us / bin / $ 1 fi# ! / bin / bash
! / bin / bashh ">> / usr / bin / $ 1ئېسىڭىزدە بولسۇنكى, بۇ قوليازما بۇنىڭ تالاش-تارتىشلىرىنى ئوتتۇرىغا قويسىڭىز, قوليازما ئىسمى 1 دوللار. ئالدى بىلەن ھۆججەت مەۋجۇت بولسا ياكى تالاش-تارتىش قىلىپ ئېلان قىلىش ئۈچۈن بىرىنچى قۇر قوشىدۇ, بۇ رۇخسەت قىلىنىدۇ, بىز تەمىنلەيمىز, سىز ھەممىمىز ساقلاۋاتقان ئورگىنالنىڭ ئىسىملىرىنى ئۆزگەرتىدۇ. ئەگەر ھۆججەت مەۋجۇت بولسا, ھوقۇقنى ئۆزگەرتىپ, ئۇنى تەھرىرلەڭ. ھۆججەتنى ساقلاڭ, كېيىن بىز ئۇنىڭ ئىجازەتلىرىنى ئۆزگەرتىمىز. بىز بۇ قوليازمىنى ئىشلەتسىڭىزلا, بىز قايتا بۇنداق قىلىشىمىز كېرەك.
sudo chmod a + x / USR / BIN / خورىك vendor = models.BooleanField(default=False)
مۇكەممەل. ئەمدى تەڭشەش دەپ ئاتىلىدىغان بىراۋنى قۇرايلى. بىرىنچى, سىزنى قاپلىماسلىق, ئەمما تەڭشەش قوليازمىمنىڭ قانداق بولۇشىغا قاراپ بېقىڭ. بىز بۇ قوليازمىڭىزغا قانداق قارايدىغانلىقى ئۈچۈن ماڭىمىز, قوليازمىمدا باشلىقتىكى ھەممە ئىش لازىم ئەمەس.#! / bin / bash سېكۇنت = 0 Python_version = 3.12 echo "femmebagebobe قاچىلىغۇچنى قوزغىتىڭ». # sudo chmod a + x قوليازما / ئىشلەتكۈچىنىڭ # ./criptts/seperScep # ssh-covergen # تۈر مۇندەرىجىسى Dir = "/ home / beable / smmeBabe" ئىشلەتكۈچى = "گۇرۇپپا" # خاتىرە بۇيرۇق Echo "Logging بۇيرۇقلىرى" sudo cp خاتىرى / بۇيرۇقلىرى .log / Lift /var/clams/commands.log sudo chodmod -r a + w / var / log sudo thown -r: syslog / var / log Echo $ 'Alias Wenv = "مەنبە / ئۆي / / / cenmme / cenv / ben / bin / bin / bactate"' "'| sudo tee -a /home/team/.profile Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a / etc / basehrc Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a -a "/ /home/TEam/.bashrc" Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a / toroot/.bashrc echo "مەنبە / ets / basehrc" | sudo tee -a /home/team/.profile echo "/var/log/ommamands.log" | sudo tee -a /etc/colstate.d/sysyLog echo "logo" local6. * / lapar/log/commands.log "|" sudo tee -a -a "/etc/rsrsylowlog.d/bash.conf" sudo مۇلازىمەت RSYSLOLORE # NoNo سەپلەش echo "scabize 4" >>. .Nanorc echo "tabstospaces نى بەلگىلەڭ" >> .Nanorc # GIT CORG echo "git سەپلىمىسى" sudo git conable imagelog condrom.emer "Jasper.Comber.HOMMACT.GLAY® / JASPER HOUTTON" git conable congal user.emper "hamper" Jasper.Camber.HOTTOM.HOT@GMail.com " GIT CONGOBILE MOBILE MODIONITION.NAM: "Jasper Holston" git conable imaglobal - '' $ dir " sudo ssh-kyyscan -t RSA Gitlab.com | sudo tee -a / toroot/.ssh/fhin_hosts sudo ssh-kyscan -t RSa GitTHub.com | sudo tee -a / toroot/.ssh/fhin_hosts echo "ئورنىتىش ئورنىتىش" sudo touth -o نى ئېلىۋېتىش, چوڭلۇقى = 16G, EXEC / TMP # يېڭىلاش ۋە قاچىلاش echo "يېڭىلاش ۋە قاچىلاش ئورنى" sudo apt يېڭىلاش && sudo Medersetart_mode = a Apt يېڭىلاش -Y sudo APT PastGresql-clayer-claygresql-commentsQl-CommentsQl-Commungresql- ئورتاق پاسخانىسى echo "postfix postfix / mailname string smmen fembebebe.com" | sudoebconf-set-spections Echo "Pscho" Plogo "stofix Fromfix / Deval_mailr_Type سلاندۇرۇش 'تور بېكىتى" "| sudoebconf-set-spections sudo cortestartrt_mode = debian_fronet1 = يانتۇلۇق sudo CormesTarTrt_mode = Apt leptuch rimav-daempach22. dev fieth a a av bohon3 a aglejdk-8- JDK Redople3 Pytholpen3 Pythoten3 Python3-Credbot-Apache echo "-a چېكىنىش, ھەمىشە ARDR = B64 -F -F Euid = 0-s EvecleVe" | sudo tee -a /etc/audit/audit.rules Echo "-a چېكىنىش, ھەمىشە ABROR = B32 -F Euid = 0 -s Evatecve" | sudo tee -a /etc/audit/audit.rules # Clamav alpivus نى قوزغىتىش Echo "نى باشلاش. sudo sityctll clav-daemon نى قوزغىتىدۇ sudo softwanctl tlav-daemon # ساھىبجامالنى بەلگىلەڭ echo "127.0.0.1.0.0.1 fembebabe" | sudo tee -a / etc / hots sudo holdamentl sites lockname listorthost # تەڭشەش echo "postagres setup" sudo -u postgres publ -u postgres -c "ساندان ساندانى;" sudo -u postagres publ -u postagres -c "ساندان ساندانى قۇرۇش". sudo -u postagres psql -u postgre -c "ئىشلەتكۈچىنى« پارول 'پارول »بىلەن ئىشلەتكۈچى Django قۇر." Sudo -u PostGres PSQL -U PostGres -C «UTF8 'غا تەڭشەلگەن ئۈلگىلىك خېرىدار_ېننى» Sudo -u Post -U PSQL -U PostGRES -C «ئۈلگە» »دېلونى DJango سۈكۈتتىكى ھالەتتە« قىلغان ئوقۇش »دېگەندەك". Sudo -u PostGres PSQL -U PostGres -C «SIMP» DJAango نىڭ «UTC» نى «UTC» نى تەڭتۇش. sudo -u postagres psql -u postgres -c «ساندان ساندانىنىڭ بارلىق ئىمتىيازىنى DJangO غا توغرىلاڭ». # ساندان زاپاسلاشنى زاپاسلاڭ Echo "زاپاسلاشتىن كېيىنكى ساندان, بۇ بىر ئاز ۋاقىت كېتىشى مۇمكىن. مۈشۈك db.json. ?? > db.json Echo "Firewall نى تەڭشەش" sudo ufw سۈكۈتتىكىسى چىقمايدۇ sudo ufw سۈكۈتنى رەت قىلىڭ sudo ufw بۇنىڭغا يول قويۇڭ 22 sudo ufw http غا يول قويۇڭ sudo ufw htTPS غا يول قويۇڭ sudo ufw نىڭ «يازما» sudo ufw «يازما» sudo ufw «Postfix يوللاش» sudo ufw 'Dovecot Pop3' sudo ufw «دوۋوك بىخەتەر POP3» sudo ufw 110 / tcp غا يول قويۇڭ sudo ufw ئۇلارغا 25 / tcp غا يول قويۇڭ Echo "Y" | sudo ufw قوزغىتىشنى قوزغىتىڭ # Ipcables نى چەكلەڭ Echo "Firewall نى تەڭشەش" sudo ipbleps-p كىرگۈزۈش sudo ipbleps -p چىقىرىش مىقدارى قوبۇل قىلىدۇ sudo ipcables -p und sudo ipceds -f sudo ipblets-stock # Bitdefander نى قاچىلاڭ cd $ dir echo "Riddender Itvender Itvips Intervicus قاچىلاش پروگراممىسى" Wet https://cludit.graud.gravyzone.bitdelder.com/packders/0/0/7/0/7Acksy/seltup_tars.tar mkdir bitdefender tar -xf ditup_jectleder.tar -c bitdefends sudo rm setup_ نىڭ چۈشۈرۈش-tar sed -i-s / {كىرىشتىن كىرىش / z & A; * 3bpd_qbgums / g 'bitdeferder / قاچىلاش sudo chmod a + x bitdefender / قاچىلاش ماشىنىسى sudo ./bitdelders/installa # Shopporfixixixixix cd $ dir echo "Mail مۇلازىمىتى سەپلىمىسى" sudo cp/etc/postfixic/Main.cf /etc/postfix/Main.CF.CF.CK.CK.CHANICUPUM sudo cp سەپلىمىسى / ind_postfix_main.cf /cf /etc/postfix/Main.Cf sudo cp سەپلىمىسى / ots_postfix_master.cf /etc/postfix/master.cfix/master.cf sudo cp سەپلەش / ot ots_default_openkim / ets / ets / verject / verject / verynkim sudo cp confry_code_conf.d_10-auth.d_10-apph.conf /etc/dovecot/conf.d/10-Asut.clf sudo cp conf / indve_dovecot_conf.D_10-masc.conf /etc/10.d/10-19-conf sudo cp conform / indve_dovecot_dovecot.conf /etc/dovecot/codocot.Conf sudo cp سەپلەش / ots_dovecot_passwd / ets / covecot / case_d sudo cp سەپلەش / ind_ofenkim.conf /etc/oponkim.conf sudo cp سەپلەش / ot ots_default_openkim / ets / ets / verject / verject / verynkim sudo iducers postfix operenkim sudo mkdir / etc / Opendkim sudo mkdir / etc / Opendkim / كۇنۇپكىلار sudo mkdir /etc/openkim/kys/feys/fembeBabe.com sudo mkdir / var / spool / postfix / Opendkim sudo echo "*@fameBagebe.com ئەۋەتىلدى ._dameMainkey.fmamebake.com" | sudo tee -a /etc/otenkim/signt. sudo echo "sendonly._domainkey.femmebabe.com femmebabe.com:sendonly:/etc/opendkim/keys/femmebabe.com/sendonly.private" | sudo tee -a /etc/opendkim/KY.STE sudo echo "127.0.0.0" "| sudo tee -a /etc/otenkim/trix. sudo echo "localthost" | sudo tee -a /etc/otenkim/trix. sudo echo "" | sudo tee -a /etc/otenkim/trix. sudo echo "* .femmebababe.com" | sudo tee -a /etc/otenkim/trix. sudo بوغما يىلپىك ئوپېركوم: Opendkim / Ints / etc / etc / ets / Opendkim sudo OpyNyNKimi-gemerey -B 2048 -b cemmme.com -D /etc/оndkim/sys/fmerebakebe.com - WEENSBALLE -V sudo chupp bo-rw / etc / Openkim / كۇنۇپكىلار sudo toodkimm: Opendkim /etc/op/Opendkim/feydkim/feys/femonta.com/sennond.rivate.right sudo toodkimim: Postfix / Var / Sport / Storefix / Postfix / Opendkim cd $ dir sudo cp خەت ساندۇقى / * / var / mail / sudo thold: ئىشلەتكۈچىلەر / ver / mail / quest / * sudo chodmoder a + rwx / var / mail / * sudo Sityctll نى قايتا قوزغىتىش OpendKim Postfix Dovecot # Dirs قۇر cd $ dir mkdir Media / Audio mkdir media / ئاۋاز / بارماق ئىزى mkdir Media / بىخەتەرلىك mkdir Media / Stage mkdir media / بىخەتەر / مېدىيا mkdir media / بىخەتەر / سىن mkdir media / بىخەتەر / ئارخىپ mkdir media / بىخەتەر / يۈز mkdir Media / رەسىملىرى mkdir Media / Live mkdir Media / Live / ھۆججەتلەر mkdir Media / Live / Beys mkdir Media / Live mkdir temp mkdir temp / dist mkdir temp / gfpgan mkdir خەت / خەت ساندۇقى mkdir خەت ساندۇقى # Mineup Virupalenv cd $ dir echo "مەۋھۇم مۇھىت يارىتىش" python -m wenv wenv مەنبە WVENV / BIN / قوزغىتىش # ئېرىشىش ۋە بېقىش كۈچىگە ئېرىشىش Echo «تايىنىش ۋە بىنا قىلىش, بۇ بەلكىم بۇ بەلكىم چايقىشى مۇمكىن» cd $ dir git clorene htws ggps.com/sukhitashvili/viount.git; CP سەپلىمىسى / VD- تەلەپلەر .txt زورلاش / تەلەپ / تەلەپلەر .txt CP CCANGE / VD-Model.py زوراۋانلىق - بايقاش / مودېل CD زوراۋانلىق - بايقاش pip3 قاچىلاش -r informents.txt cd $ dir Wet https gghube.com/gentarc/gfpgan/v1.3.3/GFPANCANV1.3/gfpanvanv1.3.pth -P; / PretTression / Pretrand_Models git clongene hygps.com/getntarc/gfpgan.git git clorene hygps.com Gryvisking/dlib.git cd dlib mkdir قۇرۇش cd قۇرۇش cmake ..; cmake --build. cd .. مەنبە WVENV / BIN / قوزغىتىش python setup.py قاچىلاش cd $ dir مەنبە WVENV / BIN / قوزغىتىش cd $ dir / gfpgan / echo "pohnon tstwencies نى قاچىلاش" pip قاچىلاش ئاساسى pip use senxlib pip leption -r informents.txt python setup.py تەرەققىي قىلىدۇ PIP REALSRAGRANGT cd $ dir sudo cashwr -r گۇرۇپپىسى: ئىشلەتكۈچى gfpgan echo "ta-lib نى قاچىلاڭ" Wet httpdownloads://pdownloads.sourcefortages.net/ta-lib/ta-lib-4.0-src..tar.gz تار XVZF TA-Lib-Lib-Lib-lib-lib-lib-lrc..0-src.tar.gz sudo rm ta-lib- * cd ta-lib sudo ./configure sudo make sudo گىرىم قىلىش # Firewall قائىدىسىنى بەلگىلەڭ cd $ dir # PYPIC غا COTPICENCIES نى قاچىلاڭ echo "قالغان Python غا باغلىق باغلاش (بۇنىڭغا بىر ئاز ۋاقىت كېتىشى مۇمكىن)" sudo Sityctl Mask TMP.MON cd $ dir مەنبە WVENV / BIN / قوزغىتىش Pip3 قاچىلاش -u نى قاچىلاش - كەرەپشە [قىزىل] PIP3 قاچىلاش -r ھۆججىتىنى كىرگۈزۈڭ-txse- ئىشلىتىش - تەسۋىرلەنگەن = مىراس-ھۈۋەپ ھەل قىلىش - PEP 517 Pip3 قاچىلاش - سۈپۈرۈش ئوچۇق OphonCv-Python # == 4.5.40.60 Pip3 قاچىلاش - ئېچىش ئوچۇق-ئاشكارە تۆھپىسى-Python # == 4.5.4.60 #pip legencv-python == 4.5.64 #pip نى ئېچىش Opencv-RETHON == 4.5.5.64 pip3 قاچىلاش - ئېچىش ئوچۇق OpenCv-Python-Beads pipp3 قاناللارنى ئۆچۈرۈڭ pip3 infne نى ئۆچۈرۈڭ Pip3 يول قاچىلاش قاناللىرىنى ئورنىتىڭ [«دافنى»] pip3 Pillow == 9.5.0.0 pip3 Lippors نى قاچىلاڭ Pip3 قاچىلاش -u نىڭ بۇرنى [TLS, HTTP2] ' Pip3 ئورنىتىش - سۈپەتلىك دەلىللەش ماتېرىيالى URLLiB3 نىڭ ھېچقانداق تەلىپى pip3 Tensorflow نى قاچىلاڭ == 2.15.1 # SETRORD AIMBER echo "engo orkaset" sudo snap price core; sudo snap forwork inform sudo snap pick ئورنىتىڭ --CLASSICER ORDOL AIMOT sudo ln -s / snap / by pr / clect / usr / usr / by br / cle / ver sudo snapp قاچىلاش sudo Sityctl Apache2 نى قوزغىتىڭ sudo siteCtll Apache2 نى قوزغىتىڭ # ئىجرا قىلىش Sudo Cercerbot - پەردە - ئۆز-ئارا تەسىر كۆرسىتىدىغان - ئۆز-ئارا تەسىر - سۆزلەر - # قايتا يۈكلەش خەت مۇلازىمېتىرى sudo Sityctll نى قايتا قوزغىتىش OpendKim Postfix Dovecot # كۆچۈرۈش گۇۋاھنامىسى #sudo cp /etc /etc/ceShcrypt/LIVE/five/fembeBage.com/prigy.peem Pripty.peem #sudo cp /etc/ceShcrypryp/live/femeraBage.com/pert.petmh avv cp قوليازمىلىرى / مەزمۇن ». CP SulletPTS / Pwa_WebPUTH_WEBPUT_ / A $ / POLTHON_POBIONE / A LYTOMEMETIONE / PEETHONGETIONE / PETHTOMACKACE / PIPTOMEPTACEMACKE.PACKACES/PCACKES.PEBPUTIM.PY.py ». cp atchpts / webous_views.py $ " cp قوليمىسى / JSON.ET.CON.TY $ "WenV / Lython_son $ {Python_sconsion/ A. Paython_package/sernango/serializer/json.py.py.sy.cor.pla.pla. # ئىشلەتكۈچى تەڭشىكىنى تەڭشەڭ sudo gpasswd -a www-info # ئىجازەتنامە echo "ئىجازەت بەلگىلەش" sudo cholv -r -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ساقلىغۇچ / sudo chmod a + rwx -r cache / #sudo thown -r -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / run / #sudo thown root: يىلتىز / يۈگۈرۈش / SUDO / TS-TS sudo cholv -r redis: قىزىل / var / lib / lib / redis sudo cholv -r redis: redis / ver / log / redis sudo chodmor -r-r u + rwx, g + rwx, u + rx / vx / var / log / ret sudo chmods + r /etc/redis/redis.conf sudo thown -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / log / log / sudo cashw -r: ئىشلەتكۈچىلەر .././ sudo chodmod -r g + rwx ./ sudo chodmod -r g + rx .././ sudo chush-r g-rwx ../.sssh sudo chmod 774 ./ #sudo chmod 664 db.sqlite3 #sudo thow www-infoat: ئىشلەتكۈچىلەر DB.SQLite3 sudo thitw -r-milw-info: WWW-INSINA Media / sudo thitw fil www-informents: ئىشلەتكۈچىلەر ./ sudo cholv -r گۇرۇپپىسى: ئىشلەتكۈچىلەر Media / sudo tholw -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ./ sudo thown -r -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ./gfpgan/ sudo thown -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ./temp/ sudo chmod a + r كوماندىسى / var / mail / $ ئىشلەتكۈچى # كودنى كۆچۈرۈپ ئىجازەت بەلگىلەڭ echo 'used service company " sudo cp سەپلىمىسى / apis.json /etc/apis.json sudo cp سەپلەش / سەپلەڭ .json /etc/config.json sudmen cp سەپلەش / fammenbabe-le-ssel.conf /etc/Acache2/sfits-avame- sudo cp سەپلەش / ots_dovecot_passwd / ets / covecot / case_d sudo cp سەپلەش / ots_init.d_colenter /etc/init.d/coletry sudo cp سەپلەش / ers_init.d_celerybeat /etc/int.d/colemybat sudo cp سەپلەش / ot ots_default_celeryber / ets / ets_s / erme / okerybat sudo cp سەپلەش / ot ots_default_celeny / ets / ets / versher / okser / okser / oker sudo cp سەپلىمىسى / inditymd_system_symew_dsaphen.etvice /etsteryddend_tc/senc/setillendend_stryctemdene. sudo cp سەپلىمىسى / inditymd_system_systerm_selery.service /et /etc/senc/senc/send_stermeymedd_stersiteMed_sterstemicry. sudo cp سەپلىمىسى / inditymd_sysem_syryberybeat.service /etstac/stersiteMerybeat.servetyberyberybeat.service sudo chmod a + x /etc/init.d/colenter sudo chmod a + x /etc/init.d/colemybat # ساندان ساندان echo "Diagiats, بۇ تېز بولۇشى كېرەك". python dive.py گىرىم بۇيۇملىرى Python Mondrop.py نى كۆچۈپ كېتىڭ - ماسلاشمايدۇ echo "يۈكلەش سانلىق مەلۇماتلىرى, بۇنىڭغا بىر ئاز ۋاقىت كېتىشى مۇمكىن. Python Mondrot.py Listdata db.json echo "Stapp / sudatab / sudobers سەپلىمىسى" sudo crontab -l -u يىلتىز | مۈشۈك - سەپ / crontab | sudo crontab -u يىلتىز - sudo sh -c "مۈشۈك سەپلىمىسى / سۇسكېما >> / / et ots / suders" # PAM نى كودلاش ۋە خاتا SSH تەڭشىكىنى ئېلىۋېتىڭ #sudo sed -i '' '$ D' /ETC/PAM.D /SHD #sudo sed -i '' '$ d' / et et / ips Echo "SEM_EXEC.SO SATECIEC.SO PETEESMET / YOMOME/FOAM/FamEBABE/PAM.SH" | sudo tee -a /etc/pam.d/sshd Echo "يىغىن تەلەپ قىلىنىدۇ sudo tee -a /etc/pam.d/sshd sudo chmod a + x pam.sh sudo rm /etc/ssh/ssh.shd_config.d/50- linfloud-init.conf # كۆچۈرۈش پونكىتى ۋە ئىجازەت بېجىرىش Echo "نى كۆچۈرۈش ئورگىناللىرى sudo cp قوليازمىلىرى / قايتا يۈكلەش / USR / BIN / sudo cp قوليازمىلىرى / تەكشۈرۈش / USR / BIN / sudo cp قوليازمىلىرى / enagpu / usr / bin / sudo cp قوليازمىلىرى / Disgpu / USR / BIN / sudo cp قوليازمىلىرى / ئاكتىپلاش / USR / BIN / sudo cp قوليازمىلىرى / زاپاسلاش / USR / BIN / sudo cp قوليازمىلىرى / خېتى / usr / bin / sudo cp قوليازمىلىرى / تەڭشەش / USR / BIN / sudo cp قولايسىزلىق / قوشقان / usr / bin / sudo cp قوليازمىلىرى / كۆزىتىش / usr / bin / sudo cp قوليازمىلىرى / خاتىرە / USR / BIN / sudo cp قوليازمىلىرى / cmds / usr / bin / sudo cp قوليازمىلىرى / تەڭشەش / USR / BIN / sudo cp قوليازمىلىرى / ئىتتىرىش / USR / BIN / sudo cp قوليازمىلىرى / purgecache / usr / bin / sudo cp سەپلىمىسى / بايراق / its / بايرىقى / بايراق CD / USR / BIN / sudo chmod a + x ئاكتىپلاش sudo chmod a + x زاپاسلاش sudo chmod a + x خاككېر # قايتا يۈكلەڭ ۋە مۇلازىمەتنى قوزغىتىش echo "aching schooling ocking" sudo Sityctl Daemon-Remok sudo sityctl thaphne.service نى قوزغىتىدۇ sudo Sityctl Carry.service نى قوزغىتىدۇ sudo sityctl saillybata.service sudo sityctll clav-daemon نى قوزغىتىدۇ sudo siteCtll tafne.cservice نى باشلايدۇ sudo siteCtll نى باشلىغان كەرەپشە. sudo sityctl tlearybat.service sudo softwanctl tlav-daemon # Apache Modules نى قوزغىتىڭ echo "Apache2 نى قوزغىتىش" sudo a2enuct rewrite sudo a2enmod wsgi sudo a2ens mounders sudo a2enmod ssl sudo a2enmod ۋاكالەتچى sudo a2enmodaut pxy_balancer sudo a2enut_http_http sudo a2enut_west_wstunnel #sudo a2dism mpm_event #sudo a2dism mpm_worder #sudo a2enmus mpm_presfork # سۈكۈتتىكى بېكەتنى چەكلەش sudo a2disite 000 سۈكۈتتىكى سۈكۈتتىكى سۈكۈتتىكى sudo a2disite 000 سۈكۈتتىكى سۈكۈتتىكى-lsl # تور بېتىمىزنى قوزغىتىڭ sudo a2enshate fammebabe-le-ssl # DAMOMON نى قايتا يۈكلەپ Apache, Postfix ۋە Opendkim sudo Sityctl Daemon-Remok sudo Sityctll Apache2 نى قايتا قوزغىتىدۇ sudo SityctlL نى قايتا قوزغىتىپ Syndkim Postfix sudo Sityctll تافنى باشلايدۇ # ئىجازەتنامە sudo thown -r: Www-سانلىق مەلۇمات / var / www / www / www / www sudo thown -r: www-info /var/www/.deepref # ئالماشتۇرۇش سەپلىمىسى echo "ئالماشتۇرۇشنى تەقسىملەش, بۇ بىر ئاز ۋاقىت كېتىشى مۇمكىن. sudo swapoff / swapfile sudo rm / swapfile sudo dalocks -l 8g / swapfile sudo ddf = / dev / نۆل = / swapfile bs = 1024 سان = 8388608 sudo chmod 600 / swapfile sudo mkswap / swapfile sudo swaon / swapfile echo "/ swapfile ئالماشتۇرۇش ئالماشتۇرۇش سۈيى 0 0" | sudo tee -a / etc / fstab sudo swaon --show # Action Castion ماتورى ECHO «دائىملىق ساقلاشنى باشلاش» / ئۆي / مەكتەپ / گۇرۇپپا / femmebage / venv / bin / python / python / python/femoam/femoBabia/Eutine.py.py / ئۆي / مەكتەپ / گۇرۇپپا / femmebage / venv / by / python / python / phemthon/sfmene/spema # تەڭشەش echo "round up up cd $ dir sudo rm .Git git init --initial- شاخ = ئاساسلىق echo "ئىشلەتكۈچىنىڭ مەخپىي نومۇرى» sudo uplodim25password $ (echo ئەترىتى | OlenSsl Passwd -1nin) گۇرۇپپىسى # IPV6 ۋە دائىرە سەپلىمىسى ئۈچۈن OpenKim نى كۆرسىتىڭ Echo »تۆۋەندىكى ئۇچۇرلارنى تور سەپلىمىسىگە كۆچۈرۈڭ». hostname-i IP A | grep inet Ip -6 admar | Grep "دائىرە ئۇلىنىشى" sudo pin /etc/opendkim/ceys/famemerBage.com/sendly.txt | tr-l '\ n' sed 's / \ s // g' | sed 's / "" // G' | awk -f '' [) ('' '' '' {2 دوللار # تەڭشەش تاماملاندى Echo "تەڭشەش تاماملاندى" wc -l قوليازمىلىرى / تەڭشەش echo "كود لىنىيىسى. echo "ئومۇمىي ۋاقتى:" denaction = $ سېكۇنت echo "$ ((داۋاملىشىش / 60))) مىنۇت ۋە $ ((% 60) سېكۇنت ئۆتۈپ كەتتى." echo "todo:" Echo "- دائىرە DNS سەپلىمىسىدە IPV6 ئادرېسىنىڭ ئۈستىدە كۆپەيتىلگەن نۇسخىسى" Echo »- دائىرە DNS سەپلىمىسىنىڭ دائىرە ئاچقۇچىنى قىستۇرۇڭ" echo "- GitT's forwange بىلەن بارلىق يېڭى git ئامبىرىنى قوشۇڭ." echo "- (25 ئېغىز). echo "- ھېسابلاش سۈپىتىدە ۋىرۇسخورنى قاچىلاڭ" echo "- test" ئەگەر ECHO "بولسا. echo "- Manug" Echo "- تەڭشەش ۋە زاپاس قوليازمىلارنى ئوڭشاڭ. echo "- مۇلازىمېتىرنى ئوڭشاش" echo " echo "PHOWMEBABEEBOET PORRORTER نى ئىشلەتكەنلىكىڭىزگە رەھمەت. ياخشى كۈنگە ئېرىشىڭ!" echo
! / bin / bashcd project-directory-you-named # sudo chmod a + x قوليازما / ئىشلەتكۈچىنىڭ
./criptts/seperScepSsh-Covergen
تۈر مۇندەرىجىسىpython manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
خاتىرە بۇيرۇقلىرىنانو سەپلەش
Git سەپلىمىسىnano users/mfa.py
يېڭىلاش ۋە قاچىلاش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
Clamav intivirus نى قوزغىتىڭ# ساھىبجامالنى بەلگىلەڭ
token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Post نى تەڭشەش
if not token: token = MFAToken.objects.create(user=User.objects.filter(profile__uuid=username).first(), uid=username, expires=timezone.now() + datetime.timedelta(seconds=115)) # تۈرگە ئايرىش ساندان زاپاسلاشنى
user = User.objects.filter(id=token.user.id).first() # Ipcables نى چەكلەڭ
if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Biddeferder نى قاچىلاڭ
if not user: raise PermissionDenied() # Postfix نى تەڭشەش
if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # DIRS قۇر
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Hypeup virpalenv
user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # بېقىش ۋە بېقىش
return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # مۇداپىئە تامنى بەلگىلەڭ
if not user.profile.mfa_enabled: # Pypi Credencies ئورنىتىڭ
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 OpenCV-Python == 4.5.64
user.profile.phone_number = '+1' # PIP OptCV Regn-RETHON == 4.5.5.64
user.profile.save() # Che Chemerbard
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Rundot
if request.method == 'POST' and not fraud_detect(request, True): # خەت مۇلازىمېتىرىنى قايتا يۈكلەڭ
form = TfaForm(request.POST) # كۆپەيتىلگەن نۇسخىسى
code = str(form.data.get('code', None)) # sudo cp /etc /etc/cyc/let.com/five/five/fembeBabe.com/prigy.peem Pripty.peem
if code and code != '' and code != None: # sudo cp /etc /etc/clesshcrypt/live/fereBage.com/pert.perm Chem.pem
token_validated = user.profile.check_auth_token(usertoken) # Watch wenv
is_verified = check_verification_code(user, token, code) # ئىشلەتكۈچى تەڭشىكىنى تەڭشەڭ
if token_validated: # ئىجازەت بېجىرىش
if is_verified: # sudo thown -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / mun /
user.profile.mfa_enabled = True # sudo cashwon root: يىلتىز / يۈگۈرۈش / SUDO / TS-TS
auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # sudo chmod 664 db.sqlite3
for key, value in request.GET.items(): # sudo thitw www-informents: ئىشلەتكۈچىلەر DB.SQLite3
return HttpResponseRedirect(next) # كودنى كۆچۈرۈپ ئىجازەت بەلگىلەڭ
elif not token_validated: # Setup ساندان
if p.mfa_attempts > 3: # PAM نى كودلاش ۋە خاتا SSH سەپلىمىسىنى ئۆچۈرۈڭ
if form.data.get('send_email', False): # sudo sed -i '' '$ D' /ETC/PAM.D /SHD
# sudo sed -i '' '$ D' / et et / Prope
كۆپەيتىلگەن ئورگىناللىرىنى كۆچۈرۈڭ ۋە ئىجازەتنامەمۇلازىمەتنى قايتا يۈكلەڭ ۋە قوزغىتىش
Apache Modules نى قوزغىتىڭfrom .mfa import send_verification_email as send_mfa_verification_email
sudo a2dism mpm_eventsudo a2dismod mpm_worder
sudo a2enmus mpm_pesforknano users/mfa.py
سۈكۈتتىكى بېكەتنى چەكلەش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))
تور بېتىمىزنى قوزغىتىڭDAMOMON نى قايتا يۈكلەپ Apache, Postfix ۋە Opendkim
ئىجازەت بېجىرىش# ئالماشتۇرۇش سەپلىمىسى
from .tests import is_superuser_or_vendor # قوزغىتىش ماتورى
# Setup Git
return render(request, 'users/users.html', { # IPv6 ۋە OpenKim Ferele نى كۆرسەت
تەڭشەش تاماملاندىبۇ نۇرغۇن تەڭشەش! قىسقىسىلا, بۇ كود خاتىرە سارىيى, ھۆججەتلەرنى سەپلەڭ, phone uploseql نى يۆتكىدى, چۈشۈرۈش ئىقتىدارىنى تەڭشەش, چەكلەش, چەكلەش, مۇراجىئەت قىلىدۇ, مۇراجىئەتنامە, مۇراجىئەت قىلىدۇ, كېسىمچىلەر ۋە بەلگىلىنىدۇ مۇلازىمېتىر, سەپلىمىسىنى ئورنىتىڭ, ساقىرا يۆتكەش, كىيىم-كېچەك بەلگىلەيدۇ, ئىجازەت تەقسىم قىلىپ, IP, IPv6 ئادرېسى ۋە OpenKiN كۇنۇپكىسى بېسىپ چىقىرىدۇ. خېلى ئاددىي, ئەمما قارىماققا نۇرغۇن كودقا ئوخشايدۇ. بىز ئۇلارنىڭ نۇرغۇن ئېھتىياجىغا موھتاج ئەمەس, چۈنكى بىز كەركىدان, سارايبات ياكى دافنى ئىشلىتىمىز. بۇ كودنىڭ بىر قانچە قېتىم ئېلان قىلىنغان دائىرە بارلىقىغا دىققەت قىلىڭ.
بىز يەنە تور نامىنى سېتىۋېلىشىمىز كېرەك (بۇ بىر كىچىك يىللىق ھەق). دائىرە سېتىۋېلىش ئۈچۈن كاسالچىلىق بوشلۇقىنى تەۋسىيە قىلىمەن, ئۇلارنىڭ ئورۇنلاشتۇرۇلۇشى بىۋاسىتە ۋە ئىشلىتىش ئاسان. سىز تاللىغان دائىرەڭىزنى سېتىۋالالايسىز, ئەمما مەن بۇ مىشلاق جەھەتتە توريە فامىلىلىكنى ئىشلىتىۋاتىمەن. دائىرە قىلىپ بولغاندىن كېيىن, كۋادرات DNS سەپلىمە گۇرۇپپىسىغا قاراپ, IP ئادرېسى بويىچە مۇلازىمېتىرغا مۇلازىمېتىرىڭىزنى كۆرسەتكەن خاتىرى قوشۇڭ. ئۇ مۇنداق بولۇشى كېرەك:def is_superuser_or_vendor(user):
return user.profile.vendor or user.is_superuser
@ Xx.xx.xx.xx.@ تىجارەتچىسى بىلەن بۇ دائىرىدە, بۇ دائىرە ئاستىدىكى بارلىق تارماق ئىلمىي دائىرىلەر بۇ دائىرە ئىچىدە بارلىق تارماق ئىيا بىلەن بارلىق تارماق ساھەدە ھەممىسى مۇلازىمېتىرغا قايتا نىشانلىنىدۇ. ئېلان قىلىشقا تېخىمۇ كۆپ خاتىرىلەر بار, ئەمما بىز خەت ئەۋەتىشكە تەييارمىز. ئەستە تۇتۇڭ, سىز چوقۇم مۇلازىمېتىردىن خەت ئەۋەتىدىغانلىقىڭىزدىن بىر قانچە كۈن ۋاقىت كېتىشى مۇمكىن. DNS EMP WORDE بىز زامانغا ۋاقىت كېتىدۇ.
قانداقلا بولمىسۇن, بىز باشلاشقا تېگىشلىك بولغان بىردىنبىر خاتىرى بىر خاتىرە. شۇڭا ھازىر بىز تۆۋەندىكى قوليازمىلارنى تۈرىگە ئاساسەن تولدۇرالايمىز ۋە ئىجرا قىلالايمىز.
كىچىكرەك تەڭشەش ئارقىلىق باشلايلى, مەن ئاساسىي ئىلگىرىلەشكە ئېھتىياجلىق بولدۇق. بىز بەك كۆپ ئىشەنچلىك ياكى پالۋاننى تېخى ئىشلەتمەيمىز, بىز پەقەت ئاساسىي HTTP مۇلازىمېتىرىنى باشلايمىز ھەمدە بۇ ئىش تاماملانغاندىن كېيىن ئۇنى ئىسپاتلاشتىن ئەنسىرەيمىز. ئېسىڭىزدە تۇتۇڭ, https گۇۋاھنامىسى ۋە مۇلازىمېتىرنى بىخەتەر باشقۇرۇڭ, بىز RetIffter بىلەن بىللە توردا سېتىۋېلىش كېرەك. ھازىرچە, بۇ ھۆججەتنى «گۇرۇپپا» نى ئىشلەتكۈچى ئىسمىڭىز ئۈچۈن ئىشلەتكۈچى نامى بىلەن «DI نىڭ ئىسمى بىلەن تەمىنلەڭ, ئېلېكترونلۇق خەت ۋە ئېلېكترونلۇق خەتلىرىڭىزنى <> خەتكۈچكە <> خەتكۈچكە سېلىشتۇرۇش كېرەك.بۇنىڭدىن باشقا, بۇ كودنى يۈرگۈزۈشتىن ئىلگىرى, تەڭشەكلەرنى مۇداپىئە تامنىڭ ساھىبخان بىلەن تەمىنلەيدۇ, ئەگەر ئىشلىتىدىغان تەمىنلىگۈچى قوللاشنى ئۆزگەرتىشىمىز كېرەك. ئادەتتە بۇ سىزنىڭ ساھىبجامال تەمىنلىگۈچىنىڭ «تورلىرى» بەتكۈچىدە ياكى ئۆزىڭىزنى ساھىبجامال بولسىڭىز, ئۇ سىزنىڭ يېتەكلىگۈچنىڭ «ئېغىزى» بۆلۈمىدە. ئەگەر سىز ئۆزىڭىزنىڭ ئارزۇيىڭىزنىڭ ئادرېسى بىلەن يېتەكلىگۈچ ئارقىلىق يېتەكچىڭىزنىڭ ئادرېسى بىلەن تۇراقلىق IP نى تەڭشىمەكچى. ئوقۇش / يېزىش ئۈچۈن تۆۋەندىكى ئېغىزلارنى ئېچىشىڭىز كېرەك.22 (SSH) 25 (خەت) 587 (خەت) 110 (خەت خېرىدار) 80 (http) 443 (HTTPS)#! / bin / bash سېكۇنت = 0 Python_version = 3.12 echo "femmebagebobe قاچىلىغۇچنى قوزغىتىڭ». Dir = "/ home / tange /" ئىشلەتكۈچى = "گۇرۇپپا" # خاتىرە بۇيرۇق Echo "Logging بۇيرۇقلىرى" sudo cp خاتىرى / بۇيرۇقلىرى .log / Lift /var/clams/commands.log sudo chodmod -r a + w / var / log sudo thown -r: syslog / var / log Echo $ 'Alias Wenv = "مەنبە / ئۆي / / / cenmme / cenv / ben / bin / bin / bactate"' "'| sudo tee -a /home/team/.profile Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a / etc / basehrc Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a -a "/ /home/TEam/.bashrc" Echo $ 'Logo_Comman = \' retrn_val_val (PORKER) [$ 1] [$ 1 [0-/ // // ")" | sudo tee -a / toroot/.bashrc echo "مەنبە / ets / basehrc" | sudo tee -a /home/team/.profile echo "/var/log/ommamands.log" | sudo tee -a /etc/colstate.d/sysyLog echo "logo" local6. * / lapar/log/commands.log "|" sudo tee -a -a "/etc/rsrsylowlog.d/bash.conf" sudo مۇلازىمەت RSYSLOLORE # NoNo سەپلەش echo "scabize 4" >>. .Nanorc echo "tabstospaces نى بەلگىلەڭ" >> .Nanorc # GIT CORG echo "git سەپلىمىسى" sudo git confign conable.global ئىشلەتكۈچى. خەت "@ gmail.com" && sudo git corts. " git conable imaglobal - '' $ dir " sudo ssh-kyyscan -t RSA Gitlab.com | sudo tee -a / toroot/.ssh/fhin_hosts sudo ssh-kyscan -t RSa GitTHub.com | sudo tee -a / toroot/.ssh/fhin_hosts # يېڭىلاش ۋە قاچىلاش echo "يېڭىلاش ۋە قاچىلاش ئورنى" sudo apt يېڭىلاش && sudo Medersetart_mode = a Apt يېڭىلاش -Y sudo APT PastGresql-clayer-claygresql-commentsQl-CommentsQl-Commungresql- ئورتاق پاسخانىسى echo "postfix postfix / mailname string smmen fembebebe.com" | sudoebconf-set-spections Echo "Pscho" Plogo "stofix Fromfix / Deval_mailr_Type سلاندۇرۇش 'تور بېكىتى" "| sudoebconf-set-spections sudo cortestartrt_mode = debian_fronet1 = يانتۇلۇق sudo CormesTarTrt_mode = Apt leptuch rimav-daempach22. dev fieth a a av bohon3 a aglejdk-8- JDK Redople3 Pytholpen3 Pythoten3 Python3-Credbot-Apache # Clamav alpivus نى قوزغىتىش Echo "نى باشلاش. sudo sityctll clav-daemon نى قوزغىتىدۇ sudo softwanctl tlav-daemon # ساھىبجامالنى بەلگىلەڭ echo "127.0.0.1.0.0.1 fembebabe" | sudo tee -a / etc / hots sudo holdamentl sport-his predmans famebabe # ساندان زاپاسلاشنى زاپاسلاڭ Echo "زاپاسلاشتىن كېيىنكى ساندان, بۇ بىر ئاز ۋاقىت كېتىشى مۇمكىن. مۈشۈك db.json. ?? > db.json Echo "Firewall نى تەڭشەش" sudo ufw سۈكۈتتىكىسى چىقمايدۇ sudo ufw سۈكۈتنى رەت قىلىڭ sudo ufw بۇنىڭغا يول قويۇڭ 22 sudo ufw http غا يول قويۇڭ sudo ufw htTPS غا يول قويۇڭ sudo ufw نىڭ «يازما» sudo ufw «يازما» sudo ufw «Postfix يوللاش» sudo ufw 'Dovecot Pop3' sudo ufw «دوۋوك بىخەتەر POP3» sudo ufw 110 / tcp غا يول قويۇڭ sudo ufw ئۇلارغا 25 / tcp غا يول قويۇڭ Echo "Y" | sudo ufw قوزغىتىشنى قوزغىتىڭ # Ipcables نى چەكلەڭ Echo "Firewall نى تەڭشەش" sudo ipbleps-p كىرگۈزۈش sudo ipbleps -p چىقىرىش مىقدارى قوبۇل قىلىدۇ sudo ipcables -p und sudo ipceds -f sudo ipblets-stock # Mineup Virupalenv cd $ dir echo "مەۋھۇم مۇھىت يارىتىش" python -m wenv wenv مەنبە WVENV / BIN / قوزغىتىش pip3 قاچىلاش -r informents.txt # SETRORD AIMBER echo "engo orkaset" sudo snap price core; sudo snap forwork inform sudo snap pick ئورنىتىڭ --CLASSICER ORDOL AIMOT sudo ln -s / snap / by pr / clect / usr / usr / by br / cle / ver sudo snapp قاچىلاش sudo Sityctl Apache2 نى قوزغىتىڭ sudo siteCtll Apache2 نى قوزغىتىڭ # ئىجرا قىلىش Sudo CerctOrt Alpache - ئۆز-ئارا تەسىر كۆرسىتىدىغان - ئۆز-ئارا باغلىنىش - # ئىشلەتكۈچى تەڭشىكىنى تەڭشەڭ sudo gpasswd -a www-info # ئىجازەتنامە echo "ئىجازەت بەلگىلەش" sudo cholv -r -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ساقلىغۇچ / sudo chmod a + rwx -r cache / #sudo thown -r -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / run / #sudo thown root: يىلتىز / يۈگۈرۈش / SUDO / TS-TS sudo cholv -r redis: قىزىل / var / lib / lib / redis sudo cholv -r redis: redis / ver / log / redis sudo chodmor -r-r u + rwx, g + rwx, u + rx / vx / var / log / ret sudo chmods + r /etc/redis/redis.conf sudo thown -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / log / log / sudo cashw -r: ئىشلەتكۈچىلەر .././ sudo chodmod -r g + rwx ./ sudo chodmod -r g + rx .././ sudo chush-r g-rwx ../.sssh sudo chmod 774 ./ sudo thitw -r-milw-info: WWW-INSINA Media / sudo thitw fil www-informents: ئىشلەتكۈچىلەر ./ sudo cholv -r گۇرۇپپىسى: ئىشلەتكۈچىلەر Media / sudo tholw -r گۇرۇپپىسى: ئىشلەتكۈچىلەر ./ # قايتا يۈكلەڭ ۋە مۇلازىمەتنى قوزغىتىش echo "aching schooling ocking" sudo Sityctl Daemon-Remok sudo sityctll clav-daemon نى قوزغىتىدۇ sudo softwanctl tlav-daemon # Apache Modules نى قوزغىتىڭ echo "Apache2 نى قوزغىتىش" sudo a2enuct rewrite sudo a2enmod wsgi sudo a2ens mounders sudo a2enmod ssl sudo a2enmod ۋاكالەتچى sudo a2enmodaut pxy_balancer sudo a2enut_http_http sudo a2enmodۋاكالەتچى_WSTUNLE # DAMOMON نى قايتا يۈكلەپ Apache, Postfix ۋە Opendkim sudo Sityctl Daemon-Remok sudo Sityctll Apache2 نى قايتا قوزغىتىدۇ sudo SityctlL نى قايتا قوزغىتىپ Syndkim Postfix # IPV6 ۋە دائىرە سەپلىمىسى ئۈچۈن OpenKim نى كۆرسىتىڭ Echo »تۆۋەندىكى ئۇچۇرلارنى تور سەپلىمىسىگە كۆچۈرۈڭ». hostname-i IP A | grep inet Ip -6 admar | grep "دائىرىسى
! / bin / bashخاتىرە بۇيرۇقلىرى
نانو سەپلەش <small># Git سەپلىمىسى
يېڭىلاش ۋە قاچىلاشClamav intivirus نى قوزغىتىڭ
ساھىبجامالنى بەلگىلەڭ
تۈرگە ئايرىش ساندان زاپاسلاشنىIpcables نى چەكلەڭ
Hypeup virpalenv# Che Chemerbard
success_url = '/' # Rundot
def test_func(self): # ئىشلەتكۈچى تەڭشىكىنى تەڭشەڭ
ئىجازەت بېجىرىشsudo thown -r گۇرۇپپىسى: ئىشلەتكۈچىلەر / ver / mun /
sudo cashwon root: يىلتىز / يۈگۈرۈش / SUDO / TS-TSمۇلازىمەتنى قايتا يۈكلەڭ ۋە قوزغىتىش
Apache Modules نى قوزغىتىڭnano users/urls.py
DAMOMON نى قايتا يۈكلەپ Apache, Postfix ۋە OpendkimIPv6 ۋە OpenKim Ferele نى كۆرسەت
بۇ كودنى ئىجرا قىلىشتىن ئىلگىرى, سېتىۋالغان دائىرىڭىزنى مۇلازىمېتىرغا ئۇلانغانلىقىغا كاپالەتلىك قىلىڭ. بۇنى قىلىش ئۈچۈن, يەرلىك كومپيۇتېرىڭىزغا تېرمىنال ئېچىڭ, بۇ بۇيرۇقنى تور نامىڭىز بىلەن ئىجرا قىلىڭ:# ping fammenbagebe.com # تور نامىنى بۇ يەرگە بۆلۈڭ
# بۇ يەردە بۇ يەرگە بۆلۈڭ
ئەگەر ھەممە نەرسە ئوڭۇشلۇق بولغان بولسا, مۇلازىمېتىر جاۋاب ئەۋەتىۋاتىدۇ, بىز قوليازما ۋە ئورالمىنى ئورنىتىش ئۈچۈن تەييارلاش ۋە ئورنىتىش ۋە ئىشلەشكە تەييار قىلىمىز.بۇ بارلىق SETUP نى تەڭشەش ئۈچۈن كېرەكلىك بارلىق SETUP ئەمەس, ئۇ تەڭشەشكە تېخىمۇ كۆپ قارايمىز. ھازىر ھازىر بۇ STOUP كودىنى ئىجرا قىلىڭ, ئۇ بىر نەچچە مىنۇت ۋاقىت چىقىرىپ, مۇلازىمېتىرىڭىزغا زاكاز قىلىڭ. يەنە بىر قېتىم, قوليازما بويىچە قوليازمىدىكى ئىسىم, ئېلېكترونلۇق خەتنىڭ نامىغا يەتكۈزۈپ بېرىڭ.
ھازىر مۇلازىمېتىر تەمىناتى ھازىر تەمىنلىنىدۇ, ھەر قانداق توركۆرگۈچتىكى URL غا كىرىپ, مۇلازىمېتىرنىڭ مەشغۇلات قىلىۋاتقانلىقىنى جەزملەشتۈرەلەيسىز. ئەگەر ئۇنداق بولمىسا, DNS نىڭ تۇتۇشى ئۈچۈن ئازراق ساقلاشنى سىناپ بېقىڭ, ئاندىن تۆۋەندىكى بۇيرۇقنى قايتا سىناپ بېقىڭ.sudo backup
sudo erertBot Alpache - ئۆز-ئارا تەسىر كۆرسىتىدىغان - ئۆز-ئارا)ھەممە نەرسىنى توغرا تەڭشىدىڭىز ئۈچۈن, كودلىرىڭىزنى بىلىدىغانلىقىڭىز ئۈچۈن APACAChe نىڭ سۈكۈتتىكى بېتىنى زىيارەت قىلالايسىز ۋە نەق مەيدان تور بېتىنى نامايان قىلىدىغانلىقىڭىز ئۈچۈن بولۇشىڭىز كېرەك. كېيىنكى قەدەمدە, تەڭشەكلەرنى تەھرىرلەپ سۈيىنى تەھرىرلەپ سۈكۈت قىلىش ئۈچۈن سۈكۈتتىكى ھەل قىلىش ھالىمىزنى ئۆزگەرتىڭ. بىز يەنە تور نامىنى تەڭشەك, شۇنداقلا ئىچكى IPS غا ماسلىشالايمىز.
nano yoursport / session.pyتەڭشەكلەردە, ئۆزگەرتىش / بۇ قۇرلارنى ئۆزگەرتىش.
Debug = يالغان # بېكەت سەپلەڭ Logo_NAME = 'HEMME BABE' Protocol = 'https' دائىرە = 'senmebage.com' Togo_ID = 1 Base_url = كېلىشىم + '': // '+ alint رۇخسەت قىلىنغان_ سۈرەت = [دائىرە] ئىچكى_لار = [ 'Xx.xx.xx.xx.xx' ', ]بېكەت سەپلىمىسى
ھازىر, ApaChe2 نى تەڭشىشىمىز كېرەك. تەڭشەش ھۆججىتىنى تەھرىرلەيمىز, بىز بۇ قۇر بىلەن ئورۇنلاشتۇرىمىز:sudo nano /etc/aachc /apache2/sits-aVame-aVame-famema-le-ssl.conf
بۇ سەپلىمىسى بىزنىڭ تور نامىمىز بولۇشى كېرەك, ھەمدە ئىشلەتكۈچى ۋە تۈرنىڭ ئىسمى بولۇشى كېرەك. مەن تور نامىغا ئىسىم قويۇش نومۇرى, ئىشلەتكۈچى ئىسمى گۇرۇپپىسى, تۈر ئىسمى فامىلىباھنى ئىشلىتىۋاتىمەن.Serversignature off CervertoKens PRED مەڭگۈلۈك / https://ftersaBabe.com/ نى قايتا نىشانلاڭ. Servername Hencebabe.com Cerverymmin Comport@famembeebabe.com LaftRoot / var / www / www. Wordlog $ {Apache_LOL_DIR_DIR} / error.loglog خاسلاشتۇرۇش $ {apache_log_dir} /access.log بىرلەشتۈرۈلگەن Alias / StatiC / StatiC / Home / Comment / PermmeBabe / StatiCK ماقۇل تەلەپ قىلىنىدۇ ئالياس / مېدىتسال / سىنبەلگىلەر / ئائىلە / گۇرۇپپا / گۇرۇپپا / فامىلىسى / ماقۇل تەلەپ قىلىنىدۇ ماقۇل تەلەپ قىلىنىدۇ WsGiscriptIds / / / / / / يەم ئورنىتىڭ WSGDAEMEMEMONMEBEMBEBME PMMEBBABABABBAE PRETHON-HOME / HELTME / PETMEBABABE / PENV HOMEBUBE / ANDV HOMEBRABE / RENV HOMENT BUTHRE / BENV HOWNER WSGiprocesGroup FambeBabe Wsgiaplyplioungroup% {Forth} تاللاش كۆرسەتمىلىرى ئەگىشىدۇ ياردەم قىلىڭ قايتا يېزىڭ ReWriteCold% show {reanime_uri} | CPIF | PNP3 | JPG | SVG | WELP) $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] $ [nc] قايتا يېزىش%} Repriterer ^ (. +?) / $ / Medica / Medica / $ 1 [F, L] /Etc/lessushcrypryprtp/options-ssl-apache.conf SSLCERTICATEFILE FILETC/NESHCRYPRYPLY/LIVE/FORMABABALE PROREBABALE PAVENT.PEM SSLCERTURTATEKEYWEYFILE FILESUNTPRYPRYPRYPRYPRYPRY/five/fembeBabe.com/prige.peem ماۋزۇ X رامكا-تاللانمىلىرىنى بەلگىلەيدۇ: "SETORIGIGINE" Header نى زىيارەت قىلىش-قويۇپ بېرىش-قويۇپ بېرىش-تەڭپۇڭلۇقى «HTTPS GFEPSBABABEE.com» ۋاقىت ۋاقتى 60000 Simpledreport 0 باش تېما ساقلىغۇچنى كونترول قىلىش «ئەڭ چوڭ = 30, ئاممىۋى» Servername Hencebabe.com Cerverymmin Comport@famembeebabe.com LaftRoot / var / www / www. Wordlog $ {Apache_LOL_DIR_DIR} / error.loglog خاسلاشتۇرۇش $ {apache_log_dir} /access.log بىرلەشتۈرۈلگەن قايتا يېزىڭ قايتا يېزىش% {Server_name} = fememebabe.com ReWriterEutule ^ https: //% {% {Server_Rame}% {read_uri} [ئاخىرلاشتى / ne, n = مەڭگۈلۈك]
مۇلازىمېتىرنىڭ نامىنىڭ نامىنى ئالماشتۇرۇشقا كاپالەتلىك قىلىڭ, مۇلازىمېتىرىڭىزنى تەڭشىگەندە بۇ مىسال كودلاشتۇرۇلغان كودنى جەزملەشتۈرۈڭ. ھازىر, سۈكۈتتىكى تور بېكەتنى چەكلىشىمىز كېرەك. بۇنى باش ئارقىلىق ئېلىپ بېرىشقا بولىدۇ.sudo a2disite 000 سۈكۈتتىكى سۈكۈتتىكى-lsl sudo a2disite 000 سۈكۈتتىكى سۈكۈتتىكى سۈكۈتتىكى sudo A2Disite سۈكۈتتىكى سۈكۈتتىكى SSL
كېيىنكى قەدەمدە, WACACHe2 نى قايتا يۈكلەيمىز, Apache2 نى قايتا يۈكلەيمىز, ئۇمۇ يىرتى. / Indem / veache2 / تور بېكەتلىرى بىلەن ئېلان قىلىنغان ھۆججەتنىڭ ئىسمى بىلەن فامىلىبالنىڭ ئىسمىنى ئالماشتۇرۇشنى ئۇنتۇپ قالماڭ.sudo a2enshate fammebabe-le-ssl sudo Sityctl نى قايتا يۈكلەڭ Apache2
NAWBAR دىكى تور نامىڭىزغا قايتىڭ. توركۆرگۈڭىزدە تەڭشىگەن تور بېكەتنى كۆرۈشىڭىز كېرەك. مۇبارەك بولسۇن! ئەگەر ئۇنى كۆرمىسىڭىز, بەلكىم بەزى ئۆزگەرتىشلەرنى قىلىشىڭىز كېرەك. تۈرىڭىزدىكى تەڭشەكلەرنى ئەستايىدىللىق قىلىپ, APacH Courcerion نىڭ پايدىسى بولمىسا ھەمدە خاتالىقسىز بولۇشىڭىزنى جەزملەشتۈردى ۋە تۆۋەندىكى بۇيرۇقلارنى دەلىل-ئىسپاتلارنى تەكشۈرۈش ئۈچۈن بۇ تۈرنىڭ خاتالىقلارنى تەكشۈرۈش ئېلىپ بارىدۇ.ssh-keygen
cd ptionfore
مەنبە WVENV / BIN / قوزغىتىش
Python Mondroy.py Custyئەگەر Python تۈرىڭىزدە خاتالىق بولسا, ئۇلارنى قەيەرگە ئېلىپ بارىدۇ ۋە تۈزىتىدۇ. سىز قەيەرگە بارمىغان بارلىق خاتالىقلىرىڭىز بولسا, «ئەگەر توپلىغۇچى ئۈنۈملۈك ئەمەس», مەۋھۇم پائالىيەت ئەمەس, تۆۋەندىكى ھۆججەتنى تەھرىرلەڭ, تىزىملاتقۇچى.
نانو ۋېدۋ / Lib / Python3.12 / تور بېكەت ئورالمىسى / DJango / ADJENGO / ADS / APPRESS.PYcat ~/.ssh/id_rsa.pub
83-لىنىگغا قاراڭ, بۇ ئىجرا ۋاقتى خاتالىق كۆتۈرۈلۈپ («توپلاش (») قايتۇرۇۋېلىش ("توپلاش () ھەقسىز چەكلەش (" "توپلاش (")) شەكلى قۇرىلچە قوشۇڭ. بۇ قارىماققا مۇشۇنىڭغا ئوخشايدۇ:ئەگەر ئۆزىنى ساقلاپ قېلىش: # Appconfig دىن ساقلىنىش ئۈچۈن ئىجابىي تېلېفوننىڭ ئالدىنى ئېلىش ئۈچۈن. # ئىككى قېتىم. # RuntimeRor نى كۆتۈرۈڭ («توپلاش () ئىجارە ئالغۇچى ئەمەس») self.App_configs = {} self.loading = true
AppConfig دىن ساقلىنىش ئۈچۈن ئىجابىي تېلېفوننىڭ ئالدىنى ئېلىش.ssh-keygen -t rsa -b 4096
ئىككى قېتىم ئۇسۇل.RuntimeError نى كۆتۈرۈڭ («يۇقىرىلاش () ئىجارە ئالغۇچى ئەمەس»)
ئاندىن بۇ تۈرنى قايتا تەكشۈرۈپ, خاتالىقنى ئاشكارىلايدۇ.ssh ubuntu@XX.XX.XX.XX
Python Mondroy.py Custyئاندىن خاتالىقنى كۆرەلەيسىز ۋە تۈزىتىڭ. ئۇنى ئوڭشاڭ ۋە خاتالىق بىلەن تۈزدى, ھۆججەتنى قايتۇرۇڭ, ھۆججەتنى قايتۇرۇپ كېلىڭ, شۇڭا ئۇ ئوخشايدۇ:
ئەگەر ئۆزىنى ساقلاپ قېلىش: # Appconfig دىن ساقلىنىش ئۈچۈن ئىجابىي تېلېفوننىڭ ئالدىنى ئېلىش ئۈچۈن. # ئىككى قېتىم. RuntimeError نى كۆتۈرۈڭ («يۇقىرىلاش () ئىجارە ئالغۇچى ئەمەس») # self.App_configs = {} self.loading = trueAppConfig دىن ساقلىنىش ئۈچۈن ئىجابىي تېلېفوننىڭ ئالدىنى ئېلىش.
ئىككى قېتىم ئۇسۇل.nano sshd_config
self.App_configs = {}# مۇلازىمېتىرنى توردا تەمىنلىگەن, ئۇنىڭغا باشقا ئۆزگەرتىش كىرگۈزسىڭىز, تۆۋەندىكى بۇيرۇقنى ئىشلىتىپ مۇلازىمېتىرنى قايتا يۈكلەش ئۈچۈن تۆۋەندىكى بۇيرۇقنى قوللىنىشىمىز كېرەك:
# sudo Sityctl نى قايتا يۈكلەڭ Apache2
# قالتىس! ئەمما خەت ئەۋەتىشچۇ? ئېلېكترونلۇق خەت ئەۋەتىشنى باشلاش ئۈچۈن, ئالدى بىلەن تور سەپلىمىسىنى يېڭىلىشىڭىز كېرەك. بۇ سىزنىڭ DNS تاختىسىدىكى DNS تاختىسىدا بولۇشى كېرەك, ياكى سىز تاللىغان تور نامىنى تىزىملاتقۇچىڭىز بار. بىز يەنە سەپلاش ۋە قوشۇشىمىز كېرەك, ھەمدە بىر نەچچە بۇيرۇق ئورنىتىشىمىز كېرەك.
# ئالدى بىلەن مۇلازىمېتىرنىڭ IPV6 ئادرېسىنى ئالايلى. ئاندىن DNS نى ئېچىپ, خاتىرىلەرنى قوشۇڭ.
# مۇلازىمېتىرنىڭ IPV6 ئادرېسىنى ئېلىش ئۈچۈن, بۇ بۇيرۇقنى ئىشلىتىڭ:
# IP -6 Addr
# ھازىر, DNS تەڭشىكىگە تۆۋەندىكى خاتىرىلەرنى قوشساق بولىدۇ. مېنىڭ خاتىرىلىرىم مۇشۇنىڭغا ئوخشايدۇ. قانداقلا بولمىسۇن, خاتىرىلىرىڭىز ئۈچۈن IP ئادرېسىڭىز بىلەن IP ئادرېسىڭىز ئالماشتۇرۇشىڭىز كېرەك (71.147.182 ئەمەس .214 ئەمەس. يەنە تور بېتىڭىزنى كېيىنكى بۇيرۇق بىلەن تېپىلغان بولۇپ, شۇنداقلا مېنىڭ IPv6 ئادرېسىنى ئالدىغا يۈكلەڭ (مىنپ-ماركى: FFF: F49: 3E02). ھازىرقى رايون ھەققىدە ئەنسىرىمەڭ, بۇ چوقۇم قۇرۇيدىغان بولغاندا, بۇ بۇ مەۋجۇت بولۇپ, خەت مۇلازىملىك ئوبور, ۋە كۇنۇپكىنى بېسىپ كۇنۇپكىنى بېسىڭ. بۇنى ئاخىرقى قېتىم تەڭشىيەلەيمىز.
# @
A
N / a
75.147.182 2414
# @
Mx
10
Femmebabe.com
# @
Ptr
N / a
Femmebabe.com
# @
Txt
N / a
Txt @ v = v = spf1 mx IPF IP75.182 ::80 :: 729: FFF: F49: 3E02 ~ ھەممىسى
# arighed._bimi
Txt
N / a
v = bimi1; l = https: //fmemaBage.com/famemate/fetatic/fetation/fetata.SVG
# _dMarc
Txt
N / a
v = dmarc1; p = none
# ھازىر, SAFFIXIX Mac كومپيۇتېرىنىڭ تىزىملاتقان سەپلىمىسىنى قوشۇشىمىز كېرەك. بىزنىڭ قىلىشقا تېگىشلىك ئىشىمىز سىز ئىشلىتىۋاتقان دائىرە نامىنى ئالماشتۇرىمىز. بارلىق سەپلىمىنى بىر قىلىپ بىر قىلىپ كۆرۈپ باقايلى, ئۇلارنى تۈرىگە سەپلەنگەن تىزىملىكتە تۇرايلى, OS غا قاچىلاڭ.
# نانو سەپلەش / ot ots_postfix_main.cf
# بۇ تېكىستنى ھۆججەتكە قوشۇڭ
# # / /Usr/share/pashifififififial.CAIN.CF.CF.DIst.IST ئۈچۈن تېخىمۇ كۆپ نەشرى بار
# دېببىنىڭ كونكرېت: ھۆججەت نامىنى بەلگىلەش بىرىنچى ئورۇندا تۇرىدۇ
# ئۇ ھۆججەتنىڭ قۇر ئىسمى سۈپىتىدە ئىشلىتىلىدۇ. Debian Dealth
# ot / etc / mailname.
#Myorigin = / ets / خەت ساندۇقى
SMTPD_BANNS = $ MyHothname usmp $ time_name (Ubuntu)
biff = no
# تولغان. ئىرادىدىن. ئىماننىڭ خىزمىتى.
autres_dot_mydomain = ياق
# نىيەت «كېچىكتۈرۈلگەن خەت» ئاگاھلاندۇرۇشى
#delay_warning_ime = 4h
hiveme_dirctory = ياق
#
# يېڭى قاچىلاش.
ماسلىشىش_لېۋېل = 3.6
# Tls پارامېتىرلىرى
smtpd_tls_cert_file = / itssenct = / IT ETUST / LEARMY / LETME / FEMBEBBEE.com
smtpd_tls_key_file = / itsencts / itsencry / LEASET / LETME / FEMMEBBEE.com
smpd_tls_security_level = مۇمكىن
smtp_tls_capath = / ets / ssl / ssl / csl / crets
sMTP_TLES_SASION_CacHE_DATABOADABAWASE = $ sad_dirction} / SMTP_CACCHE
smpd_relay_riniction = text_sasl_autheated, Defer_unauth_destion
myHostname = femmebabe.com
Alias_Maps = hash: / ets / aliates
Alias_databasage = Hash: / ets / aliates
myorigin = / et et et / bymber
MyDestation = predmebabe.com, localhost, $ myhostname
smtp_helo_name = penmembe.com
MyNetworks = 127.0.0.0/8 [:FFFF:0707.0.0.0 $.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
temartbox_size_limit = 0 0
تاپشۇرۇۋالغۇچى_DELITITER = +
inet_interfaves = ھەممىسى
inet_protocols = ھەممىسى
# MANTER SIRECTION
milter_default_eaction = قوبۇل قىلىڭ
milter_protocol = 6
smpd_milters = local: /> /openkim/openkim.sock
nort_smpd_milters = $ smtpd_milters
smtp_tls_security_level = encrypt
smp_tls_loglevel = 1
virttual_tressport = lmtp: unix: unix: شەخسىي / دوۋساق-lmp
smpd_sasl_path = شەخسىي / ئاپتور
# /Usr/share/postfial/main.CAIN.CF.CF.DIST ئۈچۈن تېخىمۇ كۆپ نەشرى بار
# دېببى كونكرېت: ھۆججەت نامىنى بەلگىلەش بىرىنچى ئورۇندا تۇرىدۇ
# بۇ ھۆججەتنىڭ قۇر ئىسمى سۈپىتىدە ئىشلىتىلىدۇ. Debian Dealth
# is / etc / mailname.
# myorigin = / et et et / bymber
# .
# كېيىنكى قۇر «كېچىكتۈرۈلگەن خەت» ئاگاھلاندۇرۇشنى ھاسىل قىلىش
# DIZE_WARNNING_TET = 4H
# كۆرۈڭ http://www.postfix/compantime_readme.HTLL - سۈكۈتتىكىسى
# يېڭى قاچىلاش.
# Tls پارامېتىرلىرى
# Milter سەپلىمىسى
# كېيىنكى سەپلىتىڭ!
# نانو سەپلەش / ot ots_postfix_master.cf
# بۇ قۇرلارنى قوشۇڭ:
# #
# Postfix ئاساسلىق جەريان سەپلىمىسى سەپلىمە ھۆججىتى. جەدۋەلدىكى تەپسىلاتلار ئۈچۈن
# ھۆججەتنىڭ ئىسمى, خوجايىن (5) قولدا (بۇيرۇق: «ئەر 5 خوجايىنى» ياكى
# توردا: http://www.postfix.org/Master.5.html).
#
# بۇ ھۆججەتنى تەھرىرلىگەندىن كېيىن «Sailfix Rush» نى ئىجرا قىلىشنى ئۇنتۇپ قالماڭ.
#
# ========================================================================================
# مۇلازىمەت تىپىدىكى شەخسىي فورما ئويغىنىش
# (ھەئە) (ھەئە) (ياق) (ھەرگىز) (100)
# ========================================================================================
smtp inet n - y - - smtpd
#smp inet n - y - 1 يازما ئېكران
#smptd pass - - - y - - smtpd
#dnslog orix - - y - 0 dnsloglog
#Tlsproxy Unix - - - y - 0 TlsProxy
# بىرنى تاللاڭ: بوش خېرىدارلار ئۈچۈنلا يوللاشنى ياكى ھەر قانداق خېرىدار ئۈچۈن يوللاڭ.
# 127.0.0.1: يوللاش Inet n - y - smtpd
that inet n - y - - smtpd
-o smtpd_relay_riniction = next_sasl_authenceed, رەت قىلىش
-o smpd_recientivetivications = text_sasl_authenceed, رەت قىلىندى
-o syswolog_name = PostFix / يوللاش
-o smtpd_tls_security_level = encrypt
-o smtpd_tls_wrappermode = ياق
-o smpd_sasl_auth_ever = ھەئە
-o smpd_sasl_type = Dovecot
-o smpd_sasl_path = شەخسىي / ئاپتور
# -o syslog_name = postfix / يوللاش
# -o smtpd_tls_security_level = encrypt
#--o smpd_sasl_auth_ever = ھەئە
# -o smpd_tls_auth_only = ھەئە
#--o smpd_rejectd_unladed_criper = ياق
# -o smpd_client_clients = $ mua_client_Climits
# -o SMTPD_HELO_TORSICTS = $ mua_holo_Manicts
# -o smpd_serner_ristricts = $ mua_sender_menicts
# -o smpd_recient_mestications =
# -o SMTPD_RELAMELY_REDICTS = next_sasl_authenceed, رەت قىلىندى
# -o MATTER_MACRO_DAMEMON_NAME =
# بىرنى تاللاڭ: پەقەت ئايلانما خېرىدارلار ئۈچۈنلا SMTPS نى قوزغىتىڭ, ياكى ھەر قانداق خېرىدار ئۈچۈن.
# 127.0.0.1: smtps inet n - y - - smtpd
#smtps inet n - y - - smtpd
# -o syslog_name = postfix / smtps
# -o smpd_tls_wrappermode = ھەئە
#--o smpd_sasl_auth_ever = ھەئە
#--o smpd_rejectd_unladed_criper = ياق
# -o smpd_client_clients = $ mua_client_Climits
# -o SMTPD_HELO_TORSICTS = $ mua_holo_Manicts
# -o smpd_serner_ristricts = $ mua_sender_menicts
# -o smpd_recient_mestications =
# -o SMTPD_RELAMELY_REDICTS = next_sasl_authenceed, رەت قىلىندى
# -o MATTER_MACRO_DAMEMON_NAME =
# 628 inet n - y - qmqpd
pictup unix n - y 60 1 پىكاپ
تازىلاش unix n - Y - 0 Sung
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 OQMGR
Tlsmgr Unix - - Y 1000? 1 tlsmgr
Unix نى قايتا يېزىڭ - - - - - - ئۇششاق-چۈششەك ئىشلار
قاڭقىش UNIX - - Y - 0 قاڭقىش
Defer Unix - - Y - 0 قاڭقىش
uncace unix - - y - 0 قاڭقىش
UNIX - - - y - 1 دەلىللەش
flush unix n - y 1000? 0 plush
ProxyMap Unix - - n - - ProxyMap
ProxyWrite unix - - n - 1 Proxymap
smtp unix - - y - - SMTP
Netix - - - y - - SMTP
-o syscholog_name = postfix / $ servy_name_name_name_name
# -o SMTP_HELO_TEOM_TOUT = 5 -o SMTP_ConNECT_METET = 5
showch unix n - y - showq
خاتالىق Unix - - - - - خاتالىق
Retry unix - - - y - - خاتالىق
unix - - - Y - - تاشلاش - تاشلاش
يەرلىك UNIXIX - N N - LOGELY
مەۋھۇم UNIXIX - N N NE - مەۋھۇم
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
Scache unix - - Y - 1 SCACHE
postlog unix-dagram n - n - 1 قالدۇرۇلغان
#
# =========================================================================
# FORPFIX يۇمشاق دېتالىنىڭ يېنىغا ئارىلىق. قوللانمىنى تەكشۈرۈپ بېقىڭ
# كارتىدىن باشقا بولمىغان يۇمشاق دېتاللارنىڭ بەتلىرىنىڭ بەتلىرىنى بىلىش.
#
# تۆۋەندىكى نۇرغۇن مۇلازىمەتلەر PostFix تۇرۇبىسى (8) يەتكۈزۈش
# ۋاكالەتچى. $ {تاپشۇرۇۋالغۇچى ھەققىدە ئۇچۇر ئۈچۈن تۇرۇبا (8) ئادەم بېتىنى كۆرۈڭ}
# ۋە باشقا ئۇچۇر كونۋېرت تاللانمىلىرى.
# =========================================================================
#
# mailedrop. تەپسىلاتلار ئۈچۈن Postfix Maildrop_Reademe ھۆججىتىنى كۆرۈڭ.
# يەنە MAILE.CF نى بەلگىلەڭ .CF
#
maildrop unix - nn - - تۇرۇبا
بايراق = drxhu ئىشلەتكۈچى = vmail argv = / USR / BIN / MAWER / MAWER / MADROP-A $}
#
# =========================================================================
#
# يېقىنقى چېگراسى نەشرى بار بولغان «LMTP» نى ئىشلەتەلەيدۇ.
#
# CYRUS.CONF نى بەلگىلەڭ:
# lmp cmd = "lmtpd -a" ئاڭلاڭ "ئاڭلاش = lmtp" pcto = lmtp "pcto = tcp4
#
# تۆۋەندىكى بىر ياكى بىر نەچچە ياكى بىر قانچەسى
# MailBox_tressPort = lmtp: Inet: localhost
# virtual_tressport = lmtp: Inet: localhost
#
# =========================================================================
#
# Cyrus 2.1.5 (Ams Gouaux)
# يەنە Main.CF نى بەلگىلەڭ
#
#cyrus unix - n n - - تۇرۇبا
# FLAGS = DRX ئىشلەتكۈچى = Cyrus Argv = / cyrus / chr / sin} -}} $}
#
# =========================================================================
# كونا ئارقىلىق Cyrus ئارقىلىق يەتكۈزۈشنىڭ كونا مىسالى.
#
# كونا inrus unix - n n n n - tipe
# Flags = r ئىشلەتكۈچى = cyrus argv = / cyrus / chr / bin {LINE -M} $}
#
# =========================================================================
#
# سەپلىمە تەپسىلاتلار ئۈچۈن PostFix Uucp_Reademe ھۆججىتىنى كۆرۈڭ.
#
UUCP unix - n n - tipe
flags = FQخۇا ئىشلەتكۈچى = uucp argv = Uux-N-MA $ ئەۋەتكۈچى
#
# باشقا تاشقى يەتكۈزۈش ئۇسۇللىرى.
#
IFMA UNIX - N n - - تۇرۇبا
flags = f ئىشلەتكۈچى = ftn argv = / USR / LIM / LIM / IFMA / IFMAP / IFAMET / IFMAME / IFAMET / IFMAMET
bsmp unix - n n - - تۇرۇبا
flags = fq. ئىشلەتكۈچى = bsmp} b / USR / LSMP / BSMTP / BSMTP -ET $ EXETHOPW $ ئەۋەتكۈچى
Sunlommail-Babkucken unix - n n n n n n - 2 تۇرۇبا
flags = r ئىشلەتكۈچى = Surformail Argv = / USR / LIM / SPA / SPA / SPA / SUX} $}
Mailman Unix - N N - - تۇرۇبا
frags = frx ئىشلەتكۈچى = تىزىملىك ARGV = / USR / LIMICRA / MABIXICRACTA / BACTFIXICRAME.CRORMA.MASTA.MASTA.CRAPTA.CRACTA.CRACTA.CRACTA.CRACTA.CRACTA.CRACTA.MASTA.EM $}
#
# SOFTFIX ماس مۇھىت سەپلىمە سەپلىمىسى. جەدۋەلدىكى تەپسىلاتلار ئۈچۈن
# ھۆججەتنىڭ خوجايىنى (5) قولدا (5) قوللانما بېتىنى كۆرۈڭ (بۇيرۇق: «ئادەم 5 ئۇستىيان» ياكى
# قۇر: http://www.postfix.org/Master.5ml).
#
# بۇ ھۆججەتنى تەھرىرلىگەندىن كېيىن «كېيىنكى بايقاش» نى ئىجرا قىلىشنى ئۇنتۇپ قالماڭ.
#
# ============================================================================================
# مۇلازىمەت تىپى شەخسىي فورما ئويغىنىش ئويغىنىش maxprocp بۇيرۇق + لاگېرى
# (ھەئە) (ھەئە) (ياق) (ھەرگىز) (ھەرگىز) (100)
# ============================================================================================
# smtp inet n - y - 1 يازما ئېكران
# SMTPD Pass - - - y - - smtpd
# dnslog orix - - y - 0 dnsloglog
# Tlsproxy Unix - - y - 0 TLSProxy
# بىرنى تاللاڭ: پەقەت ئايلانما خېرىدارلار ياكى ھەر قانداق خېرىدار ئۈچۈن يوللاشنى قوزغىتىڭ.
# 127.0.0.1.subune inet n - y - - smtpd
# -o syswolog_name = PostFix / يوللاش
# -o smtpd_tls_security_level = encrypt
# -o smpd_sasl_auth_ever = ھەئە
# -o smtpd_tls_auth_only = ھەئە
# -o smtpd_rejected_unladed_ecriper = ياق
# -o smpd_client_clients = $ mua_client_Climits
# -o smpd_helo_rinictions = $ mua_holo_ristricts
# -o smpd_serner_ristricts = $ mua_sender_menicts
# -o smtpd_ceripient_CONTIONS =
# -o smtpd_relay_riniction = next_sasl_authenceed, رەت قىلىش
# -o matter_macro_daemon_name_name = بارلىققا كەلگەن
# بىرنى تاللاڭ: بوش خېرىدارلار ئۈچۈن SmTps نى قوزغىتىڭ, ياكى ھەر قانداق خېرىدار ئۈچۈن.
# 127.0.0.1:smtps inet n - y - - smtpd
# smtps inet n - y - - smtpd
# -o syslog_name = postfix / smtps
# -o smtpd_tls_wrappermode = ھەئە
# -o smpd_sasl_auth_ever = ھەئە
# -o smtpd_rejected_unladed_ecriper = ياق
# -o smpd_client_clients = $ mua_client_Climits
# -o smpd_helo_rinictions = $ mua_holo_ristricts
# -o smpd_serner_ristricts = $ mua_sender_menicts
# -o smtpd_ceripient_CONTIONS =
# -o smtpd_relay_riniction = next_sasl_authenceed, رەت قىلىش
# -o matter_macro_daemon_name_name = بارلىققا كەلگەن
# 628 inet n - y - qmqpd
# qmgr unix n - n 300 1 OQMGR
# -o smtp_helo_meout = 5 -o SMTP_ConNECT_Connect_mentsout = 5
#
# =====================================================================================
# PostFix يۇمشاق دېتالىغا قارىغاندا. قوللانمىنى تەكشۈرۈپ بېقىڭ
# PostFix يۇمشاق دېتاللىرىنىڭ بەتلىرىنىڭ بەتلىرىنىڭ قايسى تاللاشلىرىنى بىلىش.
#
# تۆۋەندىكى نۇرغۇن مۇلازىمەتلەر postfix تۇرۇبىسى (8) يەتكۈزۈش
# ۋاكالەتچى. $ {تاپشۇرۇۋالغۇچى ھەققىدە ئۇچۇر ئۈچۈن تۇرۇبا (8) ئادەم بېتىنى كۆرۈڭ}
# ۋە باشقا ئۇچۇر كونۋېرت تاللانمىلىرى.
# =====================================================================================
mawildrop. تەپسىلاتلار ئۈچۈن Postfix Maildrop_Reademe ھۆججىتىنى كۆرۈڭ.
شۇنداقلا Maild.cf: Mawildrop_destation_rectivient_MiTIT_MITT = 1nano initialize
# يېقىنقى مىكرو نەشرى بار بولغان «LMTP» نى ئىشلەتەلەيدۇ.
Cyrus.Conf نى بەلگىلەڭ:
lmtp cmd = "lmtpd -a" ئاڭلاش = "somethost: lmtp" pcto = tcp4Main.cf دىن ئايرىلسىڭىز, تۆۋەندىكىلەردىن بىر ياكى بىر نەچچىسى
ssh team@XX.XX.XX.XX
temartbox_tressport = lmtp: Inet: localhostvirtt_tressport = lmtp: Inet: localhost
=====================================================================================
cat ~/.ssh/id_rsa.pub
Cyrus 2.1.5 (Ams Gouaux)شۇنداقلا Main.cf نى بەلگىلەڭ
git clone git://github.com/you/yourproject.git
cyrus unix - n n - - تۇرۇباfrags = drx ئىشلەتكۈچى = cyrus argv = / cyrus / chr / by} -}} $}
ls
=====================================================================================كونا مىسال ئارقىلىق Cyrus ئارقىلىق.
cp -r yourproject whatyoucalledit
كونا سىلىق unix - n n - tipeflags = r ئىشلەتكۈچى = cyrus argv = / cyrus / chr / bin {LINE -M} $}
sudo nano /usr/bin/ascript
=====================================================================================سەپلىمە تەپسىلاتلىرى ئۈچۈن PostFix Uucp_Reademe ھۆججىتىنى كۆرۈڭ.
#
echo "#
باشقا تاشقى يەتكۈزۈش ئۇسۇللىرى.OpenDkim Cross. OpenENKIM ئېلېكترونلۇق خەت مۇلازىمېتىرلىرىنى دائىرە كۇنۇپكىسىنىئىتى بىلەن پەرقلەندۈرىدۇ. ئۇنىڭسىز, خەت ئىمزا قويمايدۇ ۋە ئۇنى خەت ساندۇقىغا ئايلانماسلىقى مۇمكىن.
sudo chmod a+x /usr/bin/ascript
نانو سەپلەش / et etc_default_opendkimبۇ قۇرلارنى قوشۇڭ:
# ئەسكەرتىش: بۇ بىر مىراس سەپلىمىسى ھۆججىتى. ئۇ OpenDKim تەرىپىدىن ئىشلىتىلمەيدۇ # سىستېما مۇلازىمىتى. مۇناسىپ سەپلىمە پارامېتىرلىرىنى ئىشلىتىڭ # /etc/openkim.conf. # # ئىلگىرى, ئۇ بۇ يەردىكى سۈكۈتتىكى تەڭشەكلەرنى تەھرىرلەيدۇ, ئاندىن ئىجرا قىلىڭ # / lolib/opendkim/openkim.service. نىڭ سىستېمىنى قاپلىغانلىقىنى ھاسىل قىلىش # / ئەسكەرتىش/ssstemdd/spendk.Opendkim.service.d/condrive.conff.conf ۋە # /etc/tmpfiles.D/OpenKim.conf. بۇ يەنىلا مۇمكىن بولسا, ھازىر # تەڭشەك /etc/openkimkim.conf نى بىۋاسىتە تەڭشەش تەۋسىيە قىلىنغان. # # دامون_OPTS = "" # / Var / sport / postfix / comportfix / ricix / Orig / Opendkim بىلەن Unix Squick نى ئىشلىتىش ئۈچۈن # Postfix chroot: # Rundir = / var / sport / postfix / runfix / clear / opendkim Rundir = / run / Opendkim # # گەۋدىلەندۈرۈش ئالمىشىش ئېغىزىنى بەلگىلەش # دىققەت قىلىشقا تېگىشلىكى شۇكى, بۇ تەڭشەك OpenKKim.conf دا ھەر قانداق پايپاق قىممىتىنى قاپلايدۇ # سۈكۈت: Socket = "يەرلىك: / / /var/spool/postfix/opestfix/openkim/spenkim. # 54321 ئېغىزدىكى بارلىق كۆرۈنۈشنى ئاڭلاڭ: # Socket = inet: 54321 # 12345-بەتتىكى يوچۇقنى ئاڭلاڭ: # Socket = inet: 12345 @ localhost # 192.0.2.2.2.1-بەتنى 12345-ئېغىزدا ئاڭلاڭ: # Socket = inet: 12345@192.2.2.2.2.2.2.2 ئىشلەتكۈچى = opendkim گۇرۇپپا = OpenDKim PIDFILE = $ Rundir / $ name.pid LOADAFTER =# ئەسكەرتىش: بۇ بىر مىراس سەپلىمە ھۆججىتى. ئۇ OpenDKim تەرىپىدىن ئىشلىتىلمەيدۇ
# سىستېما مۇلازىمىتى. مۇناسىپ سەپلىمە پارامېتىرلىرىنى ئىشلىتىڭ
# /etc/openkim.conf.
#
# ئىلگىرى, ئۇ بۇ يەردىكى سۈكۈتتىكى تەڭشەكلەرنى تەھرىرلەيدۇ, ئاندىن ئىجرا قىلىڭ
# /lib/opendkim/opendkim.service. نىڭ سىستېمىنى قاپلىغانلىقىنى ھاسىل قىلىش
# /etc/ssstemdyd/spendkim.opendkim.ervice.d/conrive.Conf ۋە
# /etc/tmpfiles.d/opendkim.conf. بۇ يەنىلا مۇمكىن بولسا, ھازىر
# تەڭشەك /etc/openkimkimim.conf نى بىۋاسىتە تەڭشەش تەۋسىيە قىلىنىدۇ.
#
# Daemon_opts = ""
# / Var / sport / postfix / postfix / ricix / ئىجرا
# Postfix croot دا:
# Rundir = / var / sport / postfix / runfix / clear / opendkim
#
# ئالمىشىش ئېغىزىنى بەلگىلىگىلى بولمايدۇ
# دىققەت قىلىشقا تېگىشلىكى شۇكى, بۇ تەڭشەك Openkkim.conf دىكى ھەر قانداق پايپاق قىممىتىنى قاپلايدۇ
# سۈكۈتتىكى:
# 54321 ئېغىزدىكى بارلىق كۆرۈنۈشنى ئاڭلاڭ:
# Socket = inet: 54321
# 12345-ئېغىزنى سىندا ئاڭلاڭ:
pip3 install --upgrade opencv-python # Socket = inet: 12345 @ localhost
pip3 install --upgrade opencv-contrib-python # 192.0.2.1 42.1-بەتنى 12345:
# Socket = inet: 12345@192.2.2.2.2.2.2.2.2.2
# نانو سەپلەش / ot ots_dovecot_conf.d_10 -10-mast.conf
# بۇ قۇرلارنى قوشۇڭ:
# 0-masson.conf
#default_process_limit = 100
#default_client_limit = 1000
# SETEPTENT VSZ (مەۋھۇم ئىچكى ساقلىغۇچ). بۇ ئاساسلىقى
# تاماق يېيىشتىن بۇرۇن ئىچكى ساقلىغۇچنى تۇتۇش ۋە ئۆلتۈرمەكچى بولغان
# ھەممە نەرسە.
#default_vsz_limit = 256m
# كىرىش ئىشلەتكۈچىلەر توردا كىرىش ئۇسۇللىرى تەرىپىدىن ئىشلىتىلىدۇ. بۇ ئەڭ ئىشەنچسىز
# ئىشلەتكۈچى KOVECOT سىستېمىسىدىكى ئىشلەتكۈچى. ئۇ ھېچنىمىگە ئېرىشەلمەسلىكى كېرەك.
#default_Login_user = Bevenughull
# ئىچكى ئىشلەتكۈچى شەرتسىز جەريانلار تەرىپىدىن ئىشلىتىلىدۇ. ئۇ ئايرىم بولۇشى كېرەك
# كىرىش ئىشلەتكۈچى, شۇڭا ئۇ كىرىش جەريانى باشقا جەريانلارنى ئاۋارە قىلالمايدۇ.
#default_In_user_user = دوۋساق
مۇلازىمەت IMAP-ONEGIN {
inet_listerener imap {
#port = 143
}
inet_listerener imps {
#port = 993
#sel = ھەئە
}
# يېڭى جەرياننى باشلاشتىن بۇرۇن بىر تەرەپ قىلىدىغان ئۇلىنىش سانى. ئادەتتە
# بىردىنبىر پايدىلىق قىممەتلەر 0 (چەكسىز) ياكى 1. 1 تېخىمۇ بىخەتەر, ئەمما 0
# تېخىمۇ تېز.
#service_count = 1
# تېخىمۇ كۆپ ئۇلىنىشلارنى ساقلاشقا ھەمىشە داۋاملاشتۇرۇش جەريانى.
#crocemcem_min_avail = 0
# Service_count = 0 نى تەڭشىسىڭىز, بەلكىم بۇ ئۆسۈشىڭىز كېرەك.
#vsz_limit = $ Dright_vsz_limit
}
مۇلازىمەت POP3-LOGIN {
inet_listener Pop3 {
#port = 110
}
inet_listener Pop3s {
#port = 995
#sel = ھەئە
}
}
مۇلازىمەت تاپشۇرۇش - كىرىش {
Inet_listerener تاپشۇرۇش {
#port = 587
}
}
service lmtp {
Unix_listerer / var / spool / Postfix / Persofix / PersoCoct / Lodcot-lmtp {
گۇرۇپپا = postfix
ھالەت = 0666
ئىشلەتكۈچى = Postfix
}
# يۇقارقى UNIX SUCKE نى ئىشلەتمىسىڭىز
#inet_listener lmtp {
# بارلىق ئىنتېرنېت ئۈچۈن lmtp غا كۆرۈنۈشىدىن ساقلىنىڭ
#ddress =
#port =
#}
}
مۇلازىمەت IMAP {
# كۆپىنچە ئىچكى ساقلىغۇچ MMAP () ھۆججەتلەرگە كېلىدۇ. بۇنى كۆپەيتىشىڭىز مۇمكىن
# ئەگەر سىزدە چوڭ خەت ساندۇقىڭىز بولسا چەك.
#vsz_limit = $ Dright_vsz_limit
# Max. imap جەريانلىرىنىڭ سانى (ئۇلىنىش)
#crocemcess_limit = 1024
}
service pop3 {
# Max. POP3 جەريانلىرىنىڭ سانى (ئۇلىنىش)
#crocemcess_limit = 1024
}
مۇلازىمەت تاپشۇرۇشى {
# Max. SMTP يوللىغان جەريانلارنىڭ سانى (ئۇلىنىش)
#crocemcess_limit = 1024
}
spor sph {
# auth_ssocket_path نۇقتىسى سۈكۈتتىكى ھالەتتە. ئۇ ئادەتتە
# دوۋساق-levect-lda, doveadm, بەلكىم تېخىمۇ كۆپ بولغان ئىشلەتكۈچىلەر قاتارلىقلار
# بۇ پايپاقنىڭ تولۇق ئىجازەتلىرى بارلىق ئىشلەتكۈچى ئىسمى ۋە
# كۆپچىلىكنىڭ پايدىسىز ئىزدىشى نەتىجىسىنى ئېلىڭ.
#
# سۈكۈتتىكى 0666 ھالەت ھېچكىمنىڭ يۆتكىلىشىگە يول قويىدۇ, ئەمما
# ئىشلىتىش قوللانغان ئىزدەشلەر پەقەت ئىشلىتىپ «UID» ئېتىزلىرىنى قايتقاندىلا مۇۋەپپەقىيەت قازىنىدۇ
# تېلېفون ئۇرغۇچىنىڭ UID نىڭ UID نى ماسلاشتۇرۇڭ. ئەگەر تېلېفون ئۇرغۇچىنىڭ UID ياكى GID MINE
# Socket نىڭ uid ياكى gid ئىزدەۋاتىدۇ. باشقا ئىشلار مەغلۇبىيەتنى كەلتۈرۈپ چىقىرىدۇ.
#
# بارلىق ئىشلەتكۈچىلەرنى ئىزدەش ئۈچۈن چاقىرغۇچىنىڭ تولۇق ئىجازەتلىرىنى بېرىش ئۈچۈن, مودېلنى بەلگىلەڭ
# 0666 دىن باشقا نەرسە ۋە دوزاخ مېغىزنى ئىجرا قىلىشنى داۋاملاشتۇرىدۇ
# ئىجازەتنامە (E.G. 0777 ھەممە ئادەم تولۇق ئىجازەتنامە بېرىدۇ).
Unix_listerer / ver / spool / Postfix / Persfix / Price / Sport / Auth out
ھالەت = 0660
ئىشلەتكۈچى = Postfix
گۇرۇپپا = postfix
}
}
sport siff-cural {
# ئاپتور ئىشچى-خىزمەتچىلەرنىڭ مەسىلىسى سۈكۈتتىكى يىلتىزى بىلەن يۈگۈرۈش
# / ets / سايە. ئەگەر بۇ زۆرۈر بولمىسا, ئىشلەتكۈچىگە ئۆزگەرتىش كېرەك
# $ DIZEFORT_In_user_user.
#User = يىلتىز
}
service dict {
# ئەگەر DICT ۋاكالەتچىسى ئىشلىتىلگەن بولسا, پوچتا جەريانلىرى پايپاقنى زىيارەت قىلىشى كېرەك.
# مىسال: ھالەت = 0660, گۇرۇپپا = VMAM ۋە يەرشارى خەت_access_rups = Vmail
Unix_listener dict {
#mode = 0600
#User =
#group =
}
}
# World_process_limit = 100
# World_client_limit = 1000
# SERVISH (PROUNDS) مۇلازىمەت جەريانىدىكى. بۇ ئاساسلىقى
# ئۇلار تاماق يېيىشتىن بۇرۇن ئىچكى ساقلاشنى تۇتۇش ۋە ئۆلتۈرۈشنى مەقسەت قىلىدۇ
# ھەممە نەرسە.
# World_vsz_limit = 256m
# كىرىش ئىشلەتكۈچىلەر توردا تەكشۈرۈش ئارقىلىق ئىشلىتىلىدۇ. بۇ ئەڭ ئىشەنچسىز
# COVECOT سىستېمىسىدىكى ئىشلەتكۈچى. ئۇ ھېچنىمىگە ئېرىشەلمەسلىكى كېرەك.
# World_login_user = Bevenughull
# ئىچكى ئىشلەتكۈچىنىڭ شەرتسىز جەريانلار تەرىپىدىن ئىشلىتىلىدۇ. ئۇ ئايرىم بولۇشى كېرەك
# كىرىش ئىشلەتكۈچى, شۇڭا بۇ كىرىش جەريانى باشقا جەريانلارنى ئاۋارە قىلالمايدۇ.
# World_min_user = Dovecot
# port = 143
# port = 993
# SSL = ھەئە
# يېڭى جەرياننى باشلاشتىن بۇرۇن بىر تەرەپ قىلىش ھەققىدىكى ئۇلىنىش سانى. ئادەتتە
# بىردىنبىر پايدىلىق قىممەتلەر 0 (چەكلىمىسىز) ياكى 1. 1 تېخىمۇ بىخەتەر, ئەمما 0
# تېخىمۇ تېز. <doc / Wiki / كىرىش قوراللىرى.TXT>
# service_count = 1
# تېخىمۇ كۆپ ئۇلىنىشلارنى ساقلاش جەريانىدا جەريانلارنىڭ سانى.
# stand_min_avail = 0
# ئەگەر سىز مۇلازىمەت_count = 0 نى تەڭشىسىڭىز, بەلكىم بۇ يېتىشىڭىز كېرەك.
# vsz_limit = $ Dright_vsz_limit
# port = 110
# port = 995
# SSL = ھەئە
# port = 587
# يۇقارقى UNIX SUCKE نى ئىشلەتمىسىڭىز, ئىنتىلا ئاڭلاڭ
# inet_listerener lmtp {
# پۈتۈن تور ئۈچۈن lmtp نى كۆرگىلى بولىدۇ
# ئادرېس =
port =}
ئەستە تۇتۇش قابىلىيىتى MMAP () ing ھۆججىتىگە كېلىدۇ. بۇنى كۆپەيتىشىڭىز مۇمكىنئەگەر سىزدە ئەڭ كۆپ خەت ساندۇقىڭىز بولسا چەك.
vsz_limit = $ Dright_vsz_limitMax. imap جەريانلىرىنىڭ سانى (ئۇلىنىش)
standed_limit = 1024Max. POP3 جەريانلىرىنىڭ سانى (ئۇلىنىش)
standed_limit = 1024Max. SMTP يوللىغان جەريانلارنىڭ سانى (ئۇلىنىش)
standed_limit = 1024auth_socket_pstket_path نۇقتىسىنى سۈكۈتتىكى ھالەتتە. ئۇ ئادەتتە
دوۋسومو-لىزا, Doveadm ئارقىلىق ئىشلىتىلگەن, بەلكىم IMAP جەريان قاتارلىقلاربۇ پايپاقنىڭ تولۇق ئىجازەتلىرى بارلىق ئىشلەتكۈچى ئىسمى ۋە
كۆپچىلىكنىڭ پايدىسىز ئىزدەش نەتىجىسىگە ئېرىشىڭ.سۈكۈتتىكى 0666 ھالەت ھېچكىمنىڭ يۆتكىلىشىگە يول قويىدۇ, ئەمما
# USEDB ئىزدەش پەقەت ئىشلىتىپلا مۇۋەپپەقىيەت قازىنىدىغاندىلا مۇۋەپپەقىيەت قازىنىدۇ
# چاقىرغۇچىنىڭ بىر تەرەپ قىلىشىغا ماس كېلىدۇ. ئەگەر تېلېفون ئۇرغۇچىنىڭ UID ياكى GID MINE
# Socket نىڭ UID ياكى GID ئىزدىشى مۇۋەپپەقىيەت قازاندى. باشقا ئىشلار مەغلۇبىيەتنى كەلتۈرۈپ چىقىرىدۇ.
#
# بارلىق ئىشلەتكۈچىلەرنى ئىزدەش ئۈچۈن نەق پۇل بېرىش ئىجازەتنامىسىگە ئېرىشىش ئارقىلىق ھالەتكە تەڭشەڭ
# 0666 دىن باشقا نەرسە, دوۋسوت مېغىزىنى ئىجرا قىلايلى
# ئىجازەتنامە (E.G. 0777 ھەممەيلەن تولۇق ئىجازەتنامە بېرىدۇ).
# Auth ئىشچى-خىزمەتچىلەرنىڭ جەريانى سۈكۈتتىكى ھالەتتە ئىجرا بولىدۇ, شۇڭا زىيارەت قىلالايدۇ
# / etc / سايە. ئەگەر بۇ زۆرۈر بولمىسا, ئىشلەتكۈچىگە ئۆزگەرتىش كېرەك
# $ World_innfuser_user.
# ئىشلەتكۈچى = يىلتىز
# ئەگەر DICT ۋاكالەتچىسى ئىشلىتىلگەن بولسا, پوچتا جەريانىنىڭ ئېغىزىغا ئېرىشىشى كېرەك.
# مەسىلەن: مودېل = 0660, گۇرۇپپا = VMail = VMail ۋە يەرشارى mail_Access_Groups = Vmail
# ھالەت = 0600
# User =
# گۇرۇپپا =
# يەنە بىر قېتىم, بۇ ھۆججەتلەرنىڭ ھەممىسى دائىرەنىڭ ھەممىسىنى ئالماشتۇرۇڭ, سىز تاللىغان دائىرە. كېيىنكى ھۆججەتنى تەھرىرلەڭ, دوۋسوتنىڭ سەپلىمىسى,
# نانو سەپلەش / ots_dovecot_dovecot
# ھەمدە بۇ قۇرلارنى قوشۇڭ
# ## دوۋساق سەپلىمىسى ھۆججىتى
# ئەگەر ئالدىراش بولسىڭىز
# «كۋادراتف» بۇيرۇق ئۆزگەرتىلگەن تەڭشەكلەرنىڭ پاكىز چىقىرىشى بېرىدۇ. ئۇنى ئىشلىتىڭ
# كۆچۈرۈش ۋە بېقىشنىڭ ئورنىغا دوۋساق خەت ساندۇقىغا يوللاشچە ھۆججەتلەر.
# '# خاراكتېر ۋە ئۇنىڭدىن كېيىنكى ھەممە نەرسە باھا سۈپىتىدە مۇئامىلە قىلىنغاندىن كېيىن. قوشۇمچە بوشلۇق
# ۋە بەتكۈچلەرگە پەرۋا قىلىنمايدۇ. ئەگەر بۇ توغرىلىقنىڭ ھېچقايسىسىنى ئىشلەتمەكچى بولسىڭىز, قويۇڭ
# ئىچكى پەرقى ئىچكى پەرقى, مەسىلەن .: ئاچقۇچ = "# crim ۋە ئىز قوغلاش بوشلۇقى"
# ئەڭ كۆپ (ئەمما ئۇلارنىڭ ھەممىسىنى) تەڭشەكلەر ئوخشىمىغان كېلىشىم ۋە / ياكى
مەسىلەن, تەڭشەكلەرنىڭ تەڭشەكلىرىنى قويۇش ئارقىلىق مەنبە / مەنزىل ips: مەسىلەن:
# كېلىشىم imap {}, يەرلىك 127.0.0.0.0, يىراقتىن 10.0.0.0.0.0.0.0.}
# سۈكۈتتىكى قىممەتلەر ھەر بىر تەڭشەكتە كۆرسىتىلىدۇ, ئادەتتىن تاشقىرى تەلەپ قىلىنمايدۇ
# ئۇ. بۇلار بۇنىڭ سىرتىدا: ھېچقانداق بۆلەك (E.. "ئىسىم بوشلۇقى {})
# ياكى قىستۇرما تەڭشەكلىرى سۈكۈت بويىچە قوشۇلىدۇ, ئۇلار پەقەت مىسال بولىدۇ.
# يوللارمۇ «سەپلىمىسى» نىڭ تەڭشىلىشىگە ئاساسەن مىسال بار
# تاللاش. بۇ يەردە كۆرسىتىلگەن يوللار - TAVEFIX = / USR
# --ssonySconfdir = / ets ets - ACSLASTSTASTASTIR = / er
# قاچىلانغان كېلىشىم
! CONCK_TRY /usry /usrsr/share/dovecot/procot/protocols.d/*.protocol
# پەش بىلەن ئايرىلغان IPS ئايرىلغان تىزىملىك تىزىملىكى ياكى ئۇلىنىشى ئۈچۈن ئاڭلاش ئۈچۈن.
# «*» بارلىق IPV4 كۆرۈندى,:: «بارلىق IPv6 كۆرۈنمىگە ئاڭلايدۇ.
# سۈكۈتتىكى ئېغىزلارنى ياكى باشقا مۇرەككەپنى بەلگىلىمەكچى بولسىڭىز,
# قايتا تەھرىرلەڭ .d / Master.Conf.
#lyten = *, ::
# قوماندانلىق مۇندەرىجىسى ئىجرا قىلىش سانلىق مەلۇماتلىرىنى ساقلايدۇ.
#base_dir = / var / run / run / dovecot /
# بۇ مىسالنىڭ ئىسمى. كۆپ مىسال ئورۇنلاشتۇرۇش دوزاخ ۋە باشقا بۇيرۇقلاردا
# ئىشلىتىش -i قايسى مىسال ئىشلىتىلگەنلىكىنى تاللىيالايدۇ (باشقا تاللاش)
# to -c). مىسال ئىسمىمۇ دوۋساق جەريانىغا قوشۇلدى
# PS چىقىرىشتا.
#instance_name = Dovecot
# خېرىدارلارغا سالام.
#Login_Greeting = Dovecot تەييار.
# بوشلۇق ئايرىلغان تور دائىرىسىدىكى بوشلۇق ئايرىلغان تىزىملىك. بۇ ئۇلىنىشلار
# IPS ئۇلارنىڭ IP ئادرېس ۋە پورتلىرىنى قاپلاشقا رۇخسەت قىلىنىدۇ
دەلىللەش تەكشۈرۈش ئۈچۈن #. mist_plaintext_auth مۇقەررەر
# بۇ تورلار. ئادەتتە سىز بۇ يەردە iMAP ۋاكالەتچى مۇلازىمېتىرىڭىزنى بەلگىلەيسىز.
#Login_triver_Networks =
# بوشلۇقنى زىيارەت قىلىش تىزىملىكى (E..g. tcpwrap)
#Login_access_socket =
# Proxy_maybe ئارقىلىق = ئەگەر ۋاكالەتچى مەنزىل بۇ IPS نىڭ بىرى بولسا, ئۇنداق قىلماڭ
# Proxying. بۇ نورمال ئەمەس, ئەمما مەنزىل بولسا پايدىلىق بولۇشى مۇمكىن
# IP بولسا e.g. يۈك قالدۇرغۇچىنىڭ IP.
#auth_Proxy_ ئۆزى =
# تېخىمۇ كۆپ Verbose جەرياننى كۆرسىتىش (PS). ھازىر ئىشلەتكۈچى ئىسمى ۋە
# IP ئادرېس. كىمنىڭ Imap جەريانلىرىنى ئىشلىتىۋاتقانلىقىنى كۆرۈش ئۈچۈن پايدىلىق
# (مەسىلەن. ئورتاق خەت ساندۇقى ياكى ئەگەر يالغان ھېساباتقا ئىشلىتىلگەن بولسا).
#verbose_proctitle = ياق
# بارلىق جەريانلار دوۋساق ئۇسسۇلى بىر تەرەپ قىلغاندا بارلىق جەريانلار ئۆلتۈرۈلىدۇ.
# بۇنى «ياق» قىلىپ بەلگىلەڭ
# مەۋجۇت خېرىدارلار ئۇلىنىشى تاقابىل تۇرۇش (گەرچە بۇمۇ شۇنداق بولسا
ئەگەر يېڭىلاش بولسا E.G. بىخەتەرلىك ئوڭشاش سەۋەبىدىن).
#shutowndown_clients = ھەئە
# ئەگەر نۆلگە ئىشەنمىسە, ئەگەر بۇ ئۇلاشتۇرۇش مۇلازىمېتىرى ئارقىلىق,
# ئۇلارنى بىۋاسىتە ئوخشاش جەرياندا ئىجرا قىلىشنىڭ ئورنىغا.
#doDmm_Aditker_count = 0
# Orix پايپاق ياكى ساھىبجامال: دوۋساق مۇلازىمېتىرىغا ئۇلاشقا ئىشلىتىلىدىغان پورت
#doadm_suscket_path = DoveAdm-Server
# بوشلۇقنى ساقلاشتا ساقلانغان مۇھىت ئۆزگەرگۈچى مىقدارنىڭ تىزىملىكى
# ئىگىلىك تىكلەش ۋە ئۇنىڭ بالىلىرىنىڭ ھەممىسىگە ئۆتتى. بېرەلەيسىز
# ئاچقۇچ = قىممەت جۈپلىرى ھەمىشە كونكرېت تەڭشەكلەرنى بەلگىلەيدۇ.
# import_enizeronment = tz
##
## لۇغەت مۇلازىمېتىر تەڭشىكى
##
# لۇغەت كۇنۇپكىسىنى ئىشلىتىپ ئاچقۇچ = قىممەت تىزىملىكى. بۇ بىر قانچە ئىشلىتىلىدۇ
# قىستۇرما. لۇغەت بىۋاسىتە ياكى گەرچە a نى زىيارەت قىلغىلى بولىدۇ
# لۇغەت مۇلازىمېتىرى. تۆۋەندىكى Dict BAPT MAPS DIP DIP NIP NIP NUMIT
# مۇلازىمېتىر ئىشلىتىلگەندە. بۇلار فورماتنى فورمات ئارقىلىق پايدىلىنالايدۇ
# «ۋاكالەتچى:».
dict {
#QOTA = MySQL: /etc/dovecot/doveCot-sQL.Conf.Ext
}
# ئەمەلىي سەپلىمىنىڭ كۆپىنچىسى تۆۋەندە ئۆز ئىچىگە ئالىدۇ. ھۆججەت ئىسمى
# ئۇلارنىڭ ASCII قىممىتى بىلەن رەتلەپ, بۇ تەرتىپ بويىچە تەھلىل قىلىنغان. 00-Prefixs
# ھۆججەت نامىدا زاكازنى چۈشىنىشنى مەقسەت قىلىدۇ.
! نى ئۆز ئىچىگە ئالىدۇ. A / *.
# كود ھۆججىتىنى خاتا كىرگۈزمەي تۇرۇپ ئۆز ئىچىگە ئالمايدۇ
# ئۇ تېپىلمىدى:
! Connect_try littersilt.conf
passdb {
قوزغاتقۇچ = Passwd-form
args = / etc / covecot / passwd
}
useddb {
قوزغاتقۇچ = Passwd
}
ProTocoLs = IMAP POP3
# بارلىق كىرگۈزۈش ئالاقىلىرىنى ئاڭلاش ئۈچۈن rovcocot (ipv4 / ipv6)
ئاڭلاڭ = *, ::
دوۋساق سەپلىمىسى ھۆججىتىئەگەر ئالدىراش بولسىڭىز
«دوۋونF -n» بۇيرۇق ئۆزگەرتىلگەن تەڭشەكلەرنىڭ پاكىز چىقىرىشى بېرىدۇ. ئۇنى ئىشلىتىڭping femmebabe.com # دوۋساق پوچتا يوللانمىسىغا يوللىغاندا كۆپەيتىلگەن ھۆججەتلەر ۋە چاپلاش ھۆججەتلىرى.
'خاراكتېر ۋە ئۇنىڭدىن كېيىنكى ھەممە نەرسە باھا سۈپىتىدە مۇئامىلە قىلىنغاندىن كېيىن. قوشۇمچە بوشلۇقۋە بەتكۈچلەرگە پەرۋا قىلىنمايدۇ. ئەگەر بۇ توغرىلىقنىڭ ھېچقايسىسىنى ئىشلەتمەكچى بولسىڭىز, قويۇڭ
char and lock whiteplace "كۆپىنچىسى (ئەمما بارلىق) تەڭشەكلەرنى ئوخشىمىغان كېلىشىم ۋە / ياكى
مەسىلەن, تەڭشەكلەرنىڭ تەڭشەكلىرىنى ئورۇنلاشتۇرۇش ئارقىلىق مەنبە / مەنزىل ips: مەسىلەن:Protocel imap {}, يەرلىك 127.0.0.0.0, يىراقتىن 10.0.0.0.0.0.0.0.}
سۈكۈتتىكى قىممەتلەر ھەر بىر تەڭشەكتە كۆرسىتىلىدۇ, ئادەتتىن تاشقىرى تەلەپ قىلىنمايدۇsudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
ئۇ. بۇلار بۇنىڭ سىرتىدا: ھېچقانداق بۆلەك (E.. "ئىسىم بوشلۇقى {})ياكى قىستۇرما تەڭشەكلىرى سۈكۈت بويىچە قولۇپالدى, ئۇلار پەقەت بىر مىسال.
يوللارمۇ «دەرىجىسىنى تەڭشەش» نى ئاساس قىلغان ھەقىقىي سۈكۈتتىكى مىساللارnano yourproject/settings.py
تاللانما. بۇ يەردە كۆرسىتىلگەن يوللار - TAVEFIX = / USR--ssonsconfdir = / ets ets - ACCOLETSTASTEDIR = / var
قاچىلانغان كېلىشىملەرنى قوزغىتىش# پەش بىلەن ئايرىلغان IP نىڭ تىزىملىكى ياكى ئۇلىنىشى ئۈچۈن ئاڭلاش ئۈچۈن.
"*" بارلىق IPV4 كۆرۈندى, :: supp "نىڭ بارلىق IPv6 كۆرۈنۈشىنى ئاڭلايدۇ.سۈكۈتتىكى ئېغىزلارنى ياكى باشقا مۇرەككەپ نەرسىنى بەلگىلىمەكچى بولسىڭىز,
CONFOR.D / MABILE.CONF.sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
ئاڭلاڭ = *, ::كۆرسەتمە ئادرېسى ئىجرا بولۇۋاتقان كۆرسەتكۈچ مۇندەرىجىسى.
Base_dir = / ver / cle / cleas / 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>
بۇ مىسالنىڭ ئىسمى. كۆپ مىسال ئورۇنلاشتۇرۇش دوزاخ ۋە باشقا بۇيرۇقلاردائىشلەتكىلى بولىدىغان <mode_name> نى ئىشلىتىپ قايسى مىسال ئىشلىتىلگەن (باشقا تاللاش) نى تاللاڭ
to -c <config_path>). مىسال ئىسمىمۇ دوۋساق جەريانىغا قوشۇلدىsudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
PS چىقىرىشتا.modelse_name = Dovecot
خېرىدارلارغا سالام.sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
كىرىش_greeting = Dovecot تەييار.Space بىلەن ئايرىلغان تور دائىرىسىدىكى تىزىملىك تىزىملىكى. بۇ ئۇلىنىشلار
IPS ئۇلارنىڭ ip ئادرېس ۋە پورتلىرىنى قاپلىشىغا رۇخسەت قىلىنىدۇcd projectname
source venv/bin/activate
python manage.py check
دەلىللەش تەكشۈرۈشى ئۈچۈن). mist_plaintext_auth مۇقەررەربۇ تورلار. ئادەتتە سىز بۇ يەردە iMAP ۋاكالەتچى مۇلازىمېتىرىڭىزنى بەلگىلەيسىز.
locuth_triver_networks =nano venv/lib/python3.12/site-packages/django/apps/registry.py
بوشلۇقنى ئايرىش تىزىملىكى (E..g. tcpwrap)locuth_access_1ockence =
ۋاكالەتچى_maybe = ھەئە ئەگەر ۋاكالەتچى مەنزىلى بۇ IPS نىڭ بىرىگە ماس كەلسە, ئۇنداق قىلماڭ # ۋاكالەتچى. بۇ نورمال ئەمەس, ئەمما مەنزىل بولسا پايدىلىق بولۇشى مۇمكىن
# IP بولسا E.g. يۈك قالدۇرغۇچىنىڭ IP.
# Auth_Proxy_ ئۆزى =
تېخىمۇ كۆپ Verbose جەريانلارنى كۆرسىتىش (PS). ھازىر ئىشلەتكۈچى ئىسمى ۋەIP ئادرېس. كىمنىڭ Imap جەريانلىرىنى ئىشلىتىۋاتقانلىقىنى كۆرۈش ئۈچۈن پايدىلىق
(مەسىلەن, ئورتاق خەت ساندۇقى ياكى ئەگەر بىرەرسى كۆپ ھېساباتقا ئىشلىتىلسە).python manage.py check
Verbosse_proctitle = ياقكەپتەر ئىگىسى تاسادىپىي ۋەقەلەرنى تاقىغاندا بارلىق جەريانلار تەرىپىدىن ئۆلتۈرۈشى كېرەك.
بۇنى «ياق» قىلىپ تەڭشەشنى بىلدۈرىدىغانلىقىدىن دېرەك بېرىدۇ # ھازىرقى خېرىدار باغلىنىشىنى تاقاش (گەرچە بۇمۇ شۇنداق بولسىمۇ
# يېڭىلاش بولسا E.G. بىخەتەرلىك ئوڭشاش سەۋەبىدىن).
# تاقاش_clients = ھەئە
نۆل بولمىغان بولسا, Doveadm مۇلازىمېتىرىغا ئاساسەن بۇ نۇرغۇن ئۇلىنىش ئارقىلىق خەت بۇيرۇقى,ئۇلارنى بىۋاسىتە ئوخشاش جەرياندا ئىجرا قىلىشنىڭ ئورنىغا.
doveadm_ worderker_count = 0sudo systemctl reload apache2
UNIX Stromit ياكى ساھىبجامال: دوۋساق مۇلازىمېتىرىغا ئۇلاشقا ئىشلىتىلىدىغان پورتdoveadm_uscket_path = Doveadm-Server
بوشلۇق تاشلىۋېتىلگەن مۇھىت ئۆزگەرگۈچى مىقدارنىڭ تىزىملىكىئىگىلىك تىكلەش ۋە ئۇنىڭ بالىلىرىنىڭ ھەممىسىگە چۈشتى. بېرەلەيسىز
ئاچقۇچ = قىممەت جۈپلەر ھەمىشە كونكرېت تەڭشەكلەرنى بەلگىلەيدۇ.inford_envoronment = tz
ip -6 addr
لۇغەت مۇلازىمېتىر تەڭشىكىلۇغەت كۇنۇپكىسىنى ئېچىش = قىممەت تىزىملىكى. بۇ بىر قانچە ئىشلىتىلىدۇ
قىستۇرما. لۇغەت بىۋاسىتە ياكى گەرچە a نى زىيارەت قىلغىلى بولىدۇ
لۇغەت مۇلازىمېتىرى. تۆۋەندىكى Dict BAPT MAPS DIP DIP NIP NIP NUMITمۇلازىمېتىر ئىشلىتىلگەندە. بۇلار فورماتنى فورمات ئارقىلىق پايدىلىنالايدۇ
«ۋاكالەتچى :: <ئىسمى>».نورما = MySQL: /etc/dovecot/dovecot-sql.conf.Ext
ئەمەلىي سەپلىمىنىڭ كۆپىنچىسى تۆۋەندە ئۆز ئىچىگە ئالىدۇ. ھۆججەت ئىسمىئالدى بىلەن ئۇلارنىڭ ASCII قىممىتى بىلەن رەتلەپ, بۇ تەرتىپ بويىچە تەھلىل قىلىنغان. 00-Prefixs
ھۆججەت نامىدا زاكازنى چۈشىنىشنى مەقسەت قىلىدۇ.سەپلىمە ھۆججەتنى ئۆز ئىچىگە ئالمايدۇ
تېپىلمىدى:AVEVECOT نىڭ بارلىق كىرگۈزۈش ئۇلىنىشىنى ئاڭلاشقا يول قويىدۇ (IPV4 / IPV6)
دوۋساق ئىشلەتكۈچىگە پارول قوشۇڭ:نانو سەپلەش / ots_dovecot_passwd
كوماندا: {plain} youpassword
كېيىنكىسى, OpyNykIm سەپلەڭnano config/etc_postfix_main.cf
نانو سەپلەش / ind_oopenkim.confھەمدە بۇ قۇرلارنى قوشۇڭ:
# بۇ ئىمزا قويۇش ۋە دەلىللەشنىڭ ئاساسلىق سەپلىمىسى. ئۇ ئاسانلا بولىدۇ # ئاساسىي ئورنىتىشقا ماسلاشتۇرۇلغان. OpenKim.Conf نى كۆرۈڭ # / ياكى # ئىشلەتكىلى بولىدىغان سەپلىمە پارامېتىرلىرى. Syslog yes Syslogsuccess you # Windows no # ئورتاق ئىمزا قويۇش ۋە دەلىللەش پارامېتىرلىرى. دېباندا, «« »ماۋزۇ # ئۆستۈرۈلگەن, چۈنكى ئۇ ھەمىشە ئىناۋىتى سىستېمىسى ئارقىلىق ئىشلىتىدىغان كىملىك ئاچقۇچى # شۇنداق قىلىپ يەنە مەلۇم دەرىجىدە بىخەتەرلىك سەزگۈر. Canonication ئارام ئېلىش / ئاددىي Mode s تارماق سوئال-يوق ھەددىدىن زىيادە چارچايدۇ # دائىرە, تاللىغۇچ ۋە ئاچقۇچ (تەلەپ). مەسىلەن, ئىمزا قويۇش # تورغا «مىسال» ئارقىلىق «2020» (2020._domainkey.example.com), # شەخسىي ئاچقۇچ /etc/dkimkeys/Example غا ساقلانغان شەخسىي ئاچقۇچنى ئىشلىتىش. تېخىمۇ دانىخورەك # تەڭشەش تاللانمىلىرى / تەڭشەش تاللانمىلىرى / تەڭشەش تاللانمىلىرى تاپقىلى بولىدۇ. #Domain مىسالى #Sletor 2020 #Kyfile /etc/dkimkeys/ExAmple.rivate # ئابيياندا, Opendkim ئىشلەتكۈچى «OpenDKim» قىلىپ ئىجرا قىلىدۇ. 007 نىڭ USMAK 007 # مەتبۇئاتقا ئەزا بولمىغان MTAS بىلەن يەرلىك پايپاقنى ئىشلىتىش # ئىشلەتكۈچى (مەسىلەن, Postfix). گۇرۇپپا ئۈچۈن ئىشلەتكۈچى «PostFixix» نى قوشۇش كېرەك # «OpendKim». UserTid OpenDKim Umask 007 # MTA ئۇلىنىشى ئۈچۈن Socket (تەلەپ قىلىنىدۇ). ئەگەر MTA خروت تۈرمىدە بولسا, # بۇ بوشلۇقنىڭ زىيارەت قىلغىلى بولىدىغانلىقىنى جەزملەشتۈرۈش كېرەك. Debian, Postfix دا ئىجرا بولىدۇ # crot / ver / smoin / storefix, شۇڭلاشقا roiX Squipet بولۇشى كېرەك # تۆۋەندىكى ئاخىرقى قۇردا كۆرسىتىلگەندەك تەڭشەلدى. # كۆچەتكۈچ يەرلىك: /run/openkim/openkim.sock # سومكا Inet: 8891 @ localhost # سومكا Inet: 8891 Socket local: / favar/spool/postfixiM/opestfix/openkim/spenkim.sock Pidfile /run/Opendkim/openkim.pid # دەلىللەشتىن كۆرە بەلگە قويۇش, سۈكۈتتىكى 127.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. قاراڭ تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن # مەشغۇلات بۆلىكى. # 182.168.0.0.0.0.0/16, 10.0.0.0/8, 172.16.0.0.0.0.0.0/12 # ئىشەنچ لەڭگەر DNSSEC نى قوزغىتىدۇ. دېببىدا, ئىشەنچ Anchor ھۆججىتى تەمىنلەنگەن # ئورالمىلار DNS-ROOT-DATA. TRUSTANCHORFILE /us /us/share/dnare/dns/root.key.key # 127.0.0.0.0.0.0.1 # خەرىتە تور بېتىدىكى كۇنۇپكىلارنىڭ ئۇچۇرلىرى ئۇچۇرغا ئىمزا قويدى ئاچقۇچلۇق مۇستەقىل تېما: /etc/opendkim/KY.ST ئىمزا قويغىلى بولىدىغان ئۈچبۇلۇڭ: /etc/opendkim/signt.cable # خەتنىڭ ئىمزا قويۇشى كېرەك ئىچكى توپچىلار /etc/opendkim/trix.hosts# بۇ ئىمزا قويۇش ۋە دەلىللەشنىڭ ئاساسلىق سەپلىمىسى. ئۇ ئاسانلا بولىدۇ
# ئاساسىي ئورنىتىشقا ماسلاشتۇرۇلغان. OpenKim.Conf نى كۆرۈڭ
# /usr/share/doc/opendkim/exkples/OPEMPL..SMPLE نى تولۇق
# ئىشلەتكىلى بولىدىغان سەپلىمە پارامېتىرلىرى.
# Logwhy no
# ئورتاق ئىمزا قويۇش ۋە دەلىللەش پارامېتىرلىرى. دېباندا, «« »ماۋزۇ
# لاياقەتلىك, چۈنكى ئۇ ھەمىشە ئىناۋىتى سىستېمىسى ئارقىلىق ئىشلىتىلگەن كىملىك ئاچقۇچى
# شۇنداق قىلىپ يەنە بىر ئاز بىخەتەرلىك سەزگۈر.
# دائىرە, تاللىغۇچ ۋە ئاچقۇچ (تەلەپ). مەسىلەن, ئىمزا قويۇش
# «مىسال» ئارقىلىق «2020» دائىرە ئۈچۈن (2020-يىلى »(2020._Domainkey.example.com),
# /etc/dkimkeys/Example غا ساقلانغان شەخسىي ئاچقۇچنى ئىشلىتىش. تېخىمۇ دانىخورەك
# تەڭشەش تاللانمىلىرىنى /usr/share/doc/op/openkim/sadmim/sadmim/sadmim/sirm'er.openkim.
Orlain مىسالى2020
KeyFile /etc/dkimkeys/example.Example.rivatenano config/etc_postfix_master.cf
دېبىيە, OpendKim ئىشلەتكۈچى «OpenDKim» قىلىپ ئىجرا قىلىدۇ. 007 نىڭ USMAK 007لاتا بىلەن يەرلىك بولمىغان ماكان بىلەن يەرلىك پايپاقنى ئىشلىتىش
ئىشلەتكۈچى (مەسىلەن, PostFixix). گۇرۇپپا ئۈچۈن ئىشلەتكۈچى «PostFixix» نى قوشۇش كېرەك# بۇ ئەھۋالدا «Opendkim».
# MTA ئۇلىنىشى ئۈچۈن Socket (تەلەپ قىلىنىدۇ). ئەگەر MTA خروت تۈرمىدە بولسا,
# بۇ چوقۇم پايپاقنىڭ زىيارەت قىلغىلى بولىدىغانلىقىنى جەزملەشتۈرۈشى كېرەك. Debian, Postfix دا ئىجرا بولىدۇ
# cy / var / spool / postfix, شۇڭلاشقا unix Squipet بولۇشى كېرەك
# تۆۋەندىكى ئاخىرقى قۇردا كۆرسىتىلگەندەك سەپلەنگەن.
# Socket local: /run/openkim/openkim.sock
# Socket Inet: 8891 @ localhost
# Socket Inet: 8891
# دەلىللەشتىن كۆرە ئىمزا قويۇش, سۈكۈتتىكى 127.0.0.0.0.0.0.0.0.0.0.0.0.0. قاراڭ
# تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىش ئۈچۈن مەشغۇلات بۆلىكى.
# 192.168.0/1.0.0/16, 10.0.0.0/8, 172.16.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
# ئىشەنچ لەڭگەر DNSSEC نى قوزغىتىدۇ. دېببىدا, ئىشەنچ Anchor ھۆججىتى تەمىنلەنگەن
# ئورالمىلار DNS-ROOT-DATE.
# Nightseriders 127.0.0.0.0.0.0.0.0.
# ئۇچۇر يوللاش ئۈچۈن ئادرېسلار تور بېتىدىكى كۇنۇپكىلار ئۇچۇرلارغا ئىمزا قويدى
# خەتنى ئىمزالىشى كېرەك
# نانو سەپلەش / et etc_default_opendkim
# ھەمدە بۇ قۇرلارنى قوشۇڭ
# # ئەسكەرتىش: بۇ بىر مىراس سەپلىمىسى ھۆججىتى. ئۇ OpenDKim تەرىپىدىن ئىشلىتىلمەيدۇ
# سىستېما مۇلازىمىتى. مۇناسىپ سەپلىمە پارامېتىرلىرىنى ئىشلىتىڭ
# /etc/openkim.conf.
#
# ئىلگىرى, ئۇ بۇ يەردىكى سۈكۈتتىكى تەڭشەكلەرنى تەھرىرلەيدۇ, ئاندىن ئىجرا قىلىڭ
# / lolib/opendkim/openkim.service. نىڭ سىستېمىنى قاپلىغانلىقىنى ھاسىل قىلىش
# / ئەسكەرتىش/ssstemdd/spendk.Opendkim.service.d/condrive.conff.conf ۋە
# /etc/tmpfiles.D/OpenKim.conf. بۇ يەنىلا مۇمكىن بولسا, ھازىر
# تەڭشەك /etc/openkimkim.conf نى بىۋاسىتە تەڭشەش تەۋسىيە قىلىنغان.
#
# دامون_OPTS = ""
# / Var / sport / postfix / comportfix / ricix / Orig / Opendkim بىلەن Unix Squick نى ئىشلىتىش ئۈچۈن
# Postfix chroot:
# Rundir = / var / sport / postfix / runfix / clear / opendkim
Rundir = / run / Opendkim
#
# گەۋدىلەندۈرۈش ئالمىشىش ئېغىزىنى بەلگىلەش
# دىققەت قىلىشقا تېگىشلىكى شۇكى, بۇ تەڭشەك OpenKKim.conf دا ھەر قانداق پايپاق قىممىتىنى قاپلايدۇ
# سۈكۈت:
Socket = "يەرلىك: / / /var/spool/postfix/opestfix/openkim/spenkim.
# 54321 ئېغىزدىكى بارلىق كۆرۈنۈشنى ئاڭلاڭ:
# Socket = inet: 54321
# 12345-بەتتىكى يوچۇقنى ئاڭلاڭ:
# Socket = inet: 12345 @ localhost
# 192.0.2.2.2.1-بەتنى 12345-ئېغىزدا ئاڭلاڭ:
# Socket = inet: 12345@192.2.2.2.2.2.2.2
ئىشلەتكۈچى = opendkim
گۇرۇپپا = OpenDKim
PIDFILE = $ Rundir / $ name.pid
LOADAFTER =
# ئەسكەرتىش: بۇ بىر مىراس سەپلىمە ھۆججىتى. ئۇ OpenDKim تەرىپىدىن ئىشلىتىلمەيدۇ
# سىستېما مۇلازىمىتى. مۇناسىپ سەپلىمە پارامېتىرلىرىنى ئىشلىتىڭ
# /etc/openkim.conf.
#
# ئىلگىرى, ئۇ بۇ يەردىكى سۈكۈتتىكى تەڭشەكلەرنى تەھرىرلەيدۇ, ئاندىن ئىجرا قىلىڭ
# /lib/opendkim/opendkim.service. نىڭ سىستېمىنى قاپلىغانلىقىنى ھاسىل قىلىش
# /etc/ssstemdyd/spendkim.opendkim.ervice.d/conrive.Conf ۋە
# /etc/tmpfiles.d/opendkim.conf. بۇ يەنىلا مۇمكىن بولسا, ھازىر
# تەڭشەك /etc/openkimkimim.conf نى بىۋاسىتە تەڭشەش تەۋسىيە قىلىنىدۇ.
#
# Daemon_opts = ""
# / Var / sport / postfix / postfix / ricix / ئىجرا
# Postfix croot دا:
# Rundir = / var / sport / postfix / runfix / clear / opendkim
#
# ئالمىشىش ئېغىزىنى بەلگىلىگىلى بولمايدۇ
# دىققەت قىلىشقا تېگىشلىكى شۇكى, بۇ تەڭشەك Openkkim.conf دىكى ھەر قانداق پايپاق قىممىتىنى قاپلايدۇ
# سۈكۈتتىكى:
# 54321 ئېغىزدىكى بارلىق كۆرۈنۈشنى ئاڭلاڭ:
# Socket = inet: 54321
# 12345-ئېغىزنى سىندا ئاڭلاڭ:
# Socket = inet: 12345 @ localhost
# 192.0.2.1 42.1-بەتنى 12345:
# Socket = inet: 12345@192.2.2.2.2.2.2.2.2.2
# كېيىنكى كېيىنكى مۇلازىمېتىرمىزنى تەڭشىگىلى تەييارلىق قىلىۋاتقاندا, تۆۋەندىكى تور نامىنى قىستۇرۇلغان كودنى ئىجرا قىلىمىز. قوليازما قۇرۇشتىن باشلاڭ
# touchCatpts / PostFixuyups
sudo chmod a + x مەھەللە / postfixixssetup
نانو قوليازمىلىرى / PostFixixssep
# ھازىر, دە, تېكىست تەھرىرلىگۈچ, بۇ ھۆججەتنى تەھرىرلەڭ سىز ئۇ تور نامىنى SMEMEBABE.com نىڭ ئورنىغا تور نامىنى ئۆز ئىچىگە ئالىدۇ.
# #! / bin / bash
# Shopporfixixixixix
cd $ dir
echo "Mail مۇلازىمىتى سەپلىمىسى"
sudo cp /etc/postfix/Main.CAIN.CF /etc/masinfix/main.cf.cf.cf.cfback.cfback
sudo cp سەپلىمىسى / ind_postfix_main.cf /cf /etc/postfix/Main.Cf
sudo cp سەپلىمىسى / ots_postfix_master.cf /etc/postfix/master.cfix/master.cf
sudo cp سەپلەش / ot ots_default_openkim / ets / ets / verject / verject / verynkim
sudo cp confry_code_conf.d_10-auth.d_10-apph.conf /etc/dovecot/conf.d/10-Asut.clf
sudo cp conf / indve_dovecot_conf.D_10-masc.conf /etc/10.d/10-19-conf
sudo cp conform / indve_dovecot_dovecot.conf /etc/dovecot/codocot.Conf
sudo cp سەپلەش / ots_dovecot_passwd / ets / covecot / case_d
sudo cp سەپلەش / ind_ofenkim.conf /etc/oponkim.conf
sudo cp سەپلەش / ot ots_default_openkim / ets / ets / verject / verject / verynkim
sudo iducers postfix operenkim
sudo mkdir / etc / Opendkim
sudo mkdir / etc / Opendkim / كۇنۇپكىلار
sudo mkdir /etc/openkim/kys/feys/fembeBabe.com
sudo mkdir / var / spool / postfix / Opendkim
sudo echo "*@fameBagebe.com ئەۋەتىلدى ._dameMainkey.fmamebake.com" | sudo tee -a /etc/otenkim/signt.
sudo echo "sendonly._domainkey.femmebabe.com femmebabe.com:sendonly:/etc/opendkim/keys/femmebabe.com/sendonly.private" | sudo tee -a /etc/opendkim/KY.STE
sudo echo "127.0.0.0" "| sudo tee -a /etc/otenkim/trix.
sudo echo "localthost" | sudo tee -a /etc/otenkim/trix.
sudo echo "" | sudo tee -a /etc/otenkim/trix.
sudo echo "* .femmebababe.com" | sudo tee -a /etc/otenkim/trix.
sudo بوغما يىلپىك ئوپېركوم: Opendkim / Ints / etc / etc / ets / Opendkim
sudo OpyNyNKimi-gemerey -B 2048 -b cemmme.com -D /etc/оndkim/sys/fmerebakebe.com - WEENSBALLE -V
sudo chupp bo-rw / etc / Openkim / كۇنۇپكىلار
sudo toodkimm: Opendkim /etc/op/Opendkim/feydkim/feys/femonta.com/sennond.rivate.right
sudo toodkimim: Postfix / Var / Sport / Storefix / Postfix / Opendkim
cd $ dir
sudo cp خەت ساندۇقى / * / var / mail /
sudo thold: ئىشلەتكۈچىلەر / ver / mail / quest / *
sudo chodmoder a + rwx / var / mail / *
sudo Sityctll نى قايتا قوزغىتىش OpendKim Postfix Dovecot
sudo pin /etc/opendkim/ceys/famemerBage.com/sendly.txt | tr-l '\ n' sed 's / \ s // g' | sed 's / "" // G' | awk -f '' [) ('' '' '' {2 دوللار
# ! / bin / bash
# Postfix نى تەڭشەش
# ھازىر, تاماملانغان قوللىنىتىشنى يولغا قويۇپ SOTROTFIX, OpenK ۋە Dovecot.
# ./criptws/postfixuyup
# بۇ قوليازما ئىجرا قىلىنغاندىن كېيىن, ئاخىرقى قۇرنى كۆپەيتىلگەندىن كېيىن, ئۇنى بېسىپ ئۇنى DNS سەپلىمىسىنى ئەۋەتىش. بۇ ئورمانلىقتا بىخەتەر خەت ئەۋەتكەندە ئىشلىتىلىدىغان OpenDKIm كۇنۇپكىسى.
# قالتىس! بىر نەچچە كۈندىن كېيىن, سىز تەمىنلەنگەن مۇلازىمېتىردىن خەت ئەۋەتىسىز.
# ئەگەر سىز پەقەت DNS نى ئەۋەتىپ, خەت مۇلازىمېتىرىڭىزنى تەڭشىگەن بولسىڭىز, يېڭىلاشقا 72 سائەت ۋاقىت كېتىدۇ. ئادەتتە تېخىمۇ تېز بولىدۇ. مۇلازىمېتىرىڭىزنىڭ بۇ بۇيرۇقنى ئىشلىتىپ ئېلېكترونلۇق خەت ئارقىلىق تەمىنلىگەنلىكىنى تەكشۈرەلەيسىز:
# Echo «test» | خەت - «سىناق ئېلېكترونلۇق خەت» @gmail@gmail.com
# ئەگەر ھەممە ئىش توغرا ئىشلەۋاتقاندەك قىلالايدىغان بولسا, مۇلازىمېتىرىڭىز بىلەن ئېلېكترونلۇق خەت ئەۋەتىشىڭىز كېرەك. ئەگەر ئۇ ئىشلىمىسە, خاتىرىلەرنى ئىزدەڭ.
# قۇيرۇق لىنىيىسى 150 /var/LOW/MAM.LOW.LOW
# بۇ مۇلازىمېتىر ئارقىلىق ئەۋەتىلگەن خەت بىلەن تەمىنلەنگەن خەتلەر ھەققىدە Verbose ئۇچۇر بىلەن تەمىنلەيدۇ. خەت ساندۇقىڭىزدىكى ئېلېكترونلۇق خەتنى كۆرەلەيسىز, ئەگەر ئۇ يەردە بولمىسا, ئەخلەت ھۆججەت قىسقۇچنى تەكشۈرۈپ بېقىڭ.
# تەڭشەكلىرىڭىزدىكى تەڭشەكلىرىڭىزنى تەڭشىشىڭىز كېرەك. ئەگەر ئېلېكترونلۇق خەت مۇلازىمېتىرىڭىز Django دېتالى بىلەن پاراڭلىشالايسىز, بۇ تۈر. تەڭشەكلىرىڭىزدە بۇ قۇرلارنى قوشۇش ياكى ئالماشتۇرۇڭ
# Fail_host = دائىرە
Email_port = 587
Fail_use_tls = true
Inform_address = 'comport@famenebabe.com'
Laile_host_user = 'temo' # "@love@Masheen.com '
Nail_Host_Password = stance * soct ['fail_Host_Passwold]]
.
# 'Love@mamasheen.com'
# پارولنى ئېلىش ئۈچۈن تەڭشەش ھۆججىتىنى ئىشلىتىۋاتقانلىقىغا دىققەت قىلىڭ. بۇ ھۆججەتنى چېكىپ, بۇ ھۆججەتنى ھازىرغىچە يۈكلەپ قويايلى: ھۆججەتنىڭ بېشىدا .:
# ئىمپورت
JSON نى ئەكىرىش
# نى ئېچىڭ ۋە يۈكلەڭ
ئوچۇق ('/ etc / config / cont_ nc_on')
COBULY = JSON.SH (CONFOOT_FILE)
# Study and love country
# بۇ ھۆججەتنى قۇرايلى ھەمدە ئۇنىڭغا مەخپىي ئاچقۇچ قوشۇڭ, شۇنداقلا خەت ساندۇقى »نى مەخپىي ئاچقۇچ قوشىدۇ. مەخپىي ئاچقۇچ ھاسىل قىلىش ئۈچۈن, بۇ بۇيرۇقنى ئىشلىتىپ ئاخىرىدا خالىغانچە ئىشلىتىڭ:
# Olensl Rand-Sightbase644
# ھازىر, OpnSSSL بېرىلگەن ۋە تەھرىرلىگەن / / eatpin/config.json ھەققىدە
# sudo nano /etc/config.json
# ھۆججىتىڭىزغا تۆۋەندىكى قۇرنى قوشۇڭ, مەخپىي ئاچقۇچ سۈپىتىدە ئۇچرايدىغان ئاچكۆز بولىدۇ.
# {
"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
"ئېلخەت_:"
}
# JSon فورماتى قارىماققا ئاددىي, بىز تۈرىدە تۈرىدىكى باشقا يېتىزنى ئېلان قىلالايمىز, شۇڭا باشقا ئىشلەتكۈچىلەر ئۇلارغا خەت ئېلىپ بارا بولمايدۇ, باشقا ئىشلەتكۈچىلەر ئۇلارنى خەت قىلىپ بولمايدۇ, شۇڭا تۈر مۇندەرىجىمىزدىن يالغۇز ئوقۇمايدۇ. بۇ API ئاچقۇچىغا تەۋسىيە قىلىنغان, ئۇلارنىڭ ئىچىدىكى بىر قانچە كىشىدىن ئارتۇق ئىشلىتىمىز.
# سىزمۇ سىزنىڭ بارلىق سالامەتلىكىڭىزنى ساقلاپ قېلىسىڭىز, ئەگەر سىز ئەمدى مۇلازىمېتىر ئىجارە ئالماقچى بولسىڭىز, كېيىن خىزمىتىڭىزنى ئەسلىگە كەلتۈرەلەيسىز.
# sudo زاپاسلاش
# ھازىر, بۇيرۇق قۇرىدىن بىرنى ئەۋەتىش كېرەك, تەمىنلەنگەن بۇيرۇق ئەۋەتىش تەمىنلىگەن, تەمىنلەنگەن. ئىشلەتكۈچىڭىز بىلەن ئىشلەتكۈچى مىساللىقىڭىزنى سوراڭ ۋە DJJO ئارقىلىق diDo غا HTML ئېلېكترونلۇق خەت ئەۋەتىڭ. ئىسمىمنى كود, شارلوتونغا, ئىشلەتكۈچى ئىسمىڭىزغا).
# Python Mondrot.py Shell
django.cant.auth.models ئىمپورت قىلغۇچى ئىشلەتكۈچى
U = ئىشلەتكۈچى. Twist.Get.get (ئىشلەتكۈچى ئىسمى = 'chartotte')
ئىشلەتكۈچىلەردىن. خەت ئادرېسىدىن Exply_welco_Email
send_welcanco_email (U)
چىقىش ()
# ئەگەر بىرىنچى بۇيرۇق ئىشلىمىسە, ئىشلىتىشكە كاپالەتلىك قىلىڭ
# مەنبە WVENV / BIN / قوزغىتىش
# تەمىنلەنگەن ھەممە نەرسە توغرا ئورنىتىلدى, ھازىر تور دېتالىڭىز ئەۋەتكەن خەت ساندۇقىڭىزدا قارشى ئېلخەتكە ئېرىشىسىز. ياخشى خىزمەت! سىز ئۇزۇن يول.
# مەن قوشماقچى بولدۇم, ئەگەر مۇشۇنداق بىر خاتالىق بىلەن شۇغۇللانماقچى بولسىڭىز, ئىككىلەنمەستىن ھەر قانداق خاتالىق بىلەن كۈرەش قىلىۋاتقان بولسىڭىز, ئىككىلەنمەي جاۋاب ئىزدەڭ, ئىككىمىز ياردەم سوراڭ. باشقا ئىزدەش ماتورلىرى بىلەن, پروگرامما تۈزۈش ياردىمىگە ئىززەيدىغان چوڭ بايلىق. سىز ئالغان خاتالىقنى ئىزدەڭ, ھەمدە ئېرىشىسىز, سىز باشقىلارنىڭ مەسىلىنى قانداق ھەل قىلىدىغانلىقىنى كۆرەلەيدىغانلىقىڭىزنى كۆرەلەيسىز. مۇ بۇنىڭ سىز مەن بىلەن ئالاقىلىشىپ, پروگرامما بەرگۈچىلەر (ئوقۇتقۇچىلار, قۇربانلىق قىلىشقا ياردىمى ئۈچۈن توردىكى ياردەمچى ياكى بۇ كىتابنى قايتا ياكى باشقا مەنبەلەرنى كۆرسىتىش ئۈچۈن يەنە بىر بىلوگ ياكى باشقا مەنبەلەرنى مەسلىھەتلەشمەكچى. مەن بۇنى چۈشىنىمەنلىكنىڭ ئاسان ئەمەس, ئەمما سىز بۇ يىراقتا ئوقۇغان تەقدىردىمۇ, ھېچقانداق كود يازمىسىمۇ, سىز تور دېتالىنى سىزىشتىن كۆپ ئۆگىنىسىز. ئۆزىڭىزنى داتلاشتۇردى, سىز ياخشى خىزمەت قىلىۋاتىسىز.
# بۇ ئۈچىنچى نەشلىك تور تەرەققىيات قوللانمىسىنى ئوقۇماقچى بولغانلىقىڭىزغا رەھمەت. كەلگۈسىدىكى نەشرىدە ھۆججەتنىڭ بېشىدا مۇتەخەسسىسلەردىن تېخىمۇ كۆپ مۇھىم مىساللارنى ئۆز ئىچىگە ئالىمەن ھەمدە بىز يۇمشاق دېتال ۋە قاتتىق دېتال تەرەققىياتىغا نۇرغۇن كىشىلەرنى چوڭقۇر دانە قىلىپ بولىمىز. كېلىدىغانلىقى ئۈچۈن چىڭ تۇرۇڭ, مەن سىزنىڭ ئىشەنگۈسىز يۇمشاق دېتال سېلىشنى ئۆگىنىڭ. كېيىنكى نەشرىگە قاراڭ!
# بۇ ئۇلىنىشنى زىيارەت قىلىڭ (ئۇ سىزنى Lotte Harper نىڭ سىرتىدا ئالىدۇ)
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
https://glamgirlx.com/ug/practical-web-based-deep-learning-and
https://glamgirlx.com/ug/practical-web-based-deep-learning-and -
بۇ ئادرېسنى ئىشلىتىپ بىت تەڭگىسىنى قويۇڭ: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE