Albaab yar oo ku yaal Flask ama sida loo xakameeyo kombayutarka shabakada deegaanka

Haye Habr!

Waxaan dhawaan daawaday nooca la soo dejiyay ee qulqulka barnaamijka "Sida loo abuuro arjigaaga shabakadda ee Flask." Oo waxaan go'aansaday in aan ku xoojiyo aqoontayda mashruuca qaar. Muddo dheer ma aan garanayn waxaan qoro, fikradda ayaa ii timid: "Maxaad u samayn weyday albaab-badh-yar oo Flask ah?"

Fursadaha ugu horreeya ee hirgelinta iyo kartida albaabka dambe ayaa isla markiiba ka muuqday madaxayga. Laakiin waxaan go'aansaday inaan isla markiiba sameeyo liis awoodaha dambeedka ah:

  1. Ogow sida loo furo mareegaha
  2. Hel khadka taliska
  3. Awood u yeelo inaad furto barnaamijyo, sawiro, muuqaalo

Markaa, qodobka ugu horreeya aad buu u fudud yahay in la hirgeliyo iyadoo la adeegsanayo moduleka browserka. Waxaan go'aansaday inaan hirgeliyo qodobka labaad anigoo isticmaalaya moduleka os. Midka saddexaadna sidoo kale waa iyada oo loo marayo moduleka os, laakiin waxaan isticmaali doonaa "links" (wax badan oo ku saabsan taas ka dib).

Qorista server

Markaa, * drumroll * dhammaan koodka serverka:

from flask import Flask, request
import webbrowser
import os
import re

app = Flask(__name__)
@app.route('/mycomp', methods=['POST'])
def hell():
    json_string = request.json
    if json_string['command'] == 'test':
        return 'The server is running and waiting for commands...'
    if json_string['command'] == 'openweb':
        webbrowser.open(url='https://www.'+json_string['data'], new=0)
        return 'Site opening ' + json_string['data'] + '...'
    if json_string['command'] == 'shell':
        os.system(json_string['data'])
        return 'Command execution ' + json_string['data'] + '...'
    if json_string['command'] == 'link':
        links = open('links.txt', 'r')
        for i in range(int(json_string['data'])):
            link = links.readline()
        os.system(link.split('>')[0])
        return 'Launch ' + link.split('>')[1]
if __name__ == '__main__':
    app.run(host='0.0.0.0')

Waxaan mar hore tuuray dhammaan koodka, waa waqtigii aan sharaxi lahaa nuxurka.

Dhammaan koodka wuxuu ku shaqeeyaa kombuyuutarka maxalliga ah ee dekedda 5000. Si aan ula macaamilno serverka, waa in aan dirno codsi JSON POST ah.

Qaab dhismeedka codsiga JSON:

{β€˜command’:  β€˜comecommand’, β€˜data’: β€˜somedata’}

Hagaag, waxay macno samaynaysaa in 'amar' uu yahay amarka aan rabno inaan fulino. Oo 'xogta' waa doodaha amarka.

Waad qori kartaa oo diri kartaa codsiyada JSON si aad ula falgasho serverka gacanta (codsiyada ayaa ku caawin doona). Ama waxaad qori kartaa macmiilka console.

Qorista macmiilka

Code:

import requests

logo = ['nn',
        '******      ********',
        '*******     *********',
        '**    **    **     **',
        '**    **    **     **      Written on Python',
        '*******     **     **',
        '********    **     **',
        '**     **   **     **      Author: ROBOTD4',
        '**     **   **     **',
        '**     **   **     **',
        '********    *********',
        '*******     ********',
        'nn']

p = ''
iport = '192.168.1.2:5000'
host = 'http://' + iport + '/mycomp'

def test():
    dict = {'command': 'test', 'data': 0}
    r = requests.post(host, json=dict)
    if r.status_code == 200:
        print (r.content.decode('utf-8'))

def start():
    for i in logo:
        print(i)

start()
test()

while True:
    command = input('>')
    if command == '':
        continue
    a = command.split()
    if command == 'test':
        dict = {'command': 'test', 'data': 0}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
    if a[0] == 'shell':
        for i in range(1, len(a)):
            p = p + a[i] + ' '
        dict = {'command': 'shell', 'data': p}
        r = requests.post(host, json=dict)
        if r.status_code == 200:
            print (r.content.decode('utf-8'))
        p = ''
    if a[0] == 'link':
        if len(a) > 1:
            dict = {'command': 'link', 'data': int(a[1])}
            r = requests.post(host, json=dict)
            if r.status_code == 200:
                print (r.content.decode('utf-8'))
        else:
            print('Комманда Π½Π΅ содСрТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²!')
    if a[0] == 'openweb':
            if len(a) > 1:
                dict = {'command': 'openweb', 'data': a[1]}
                r = requests.post(host, json=dict)
                if r.status_code == 200:
                    print (r.content.decode('utf-8'))
            else:
                print('Комманда Π½Π΅ содСрТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²!')
    if a[0] == 'set':
        if a[1] == 'host':
            ip = a[2] + ':5000'
    if command == 'quit':
        break

Sharaxaad:

Marka ugu horeysa, moduleka codsiyada waa la soo dejiyaa (si loola macaamilo serverka). Hoos waxaa ku yaal sharraxaadaha bilowga iyo imtixaannada. Ka dibna meertada uu sixirku ku dhaco. Ma akhriday koodka? Markaa waxaad fahantay macnaha sixirka ku dhaca meertada. Geli amarka - waa la fuliyay. Shell - amarrada khadka taliska (macquulku waa ka baxsan yahay miisaanka).

Tijaabi - hubi haddii seerfarku shaqaynayo (Albaabka dambe)
Xiriirinta - isticmaalka "goob gaaban"
Openweb - furitaanka shabakad
Jooji - ka bax macmiilka
Deji - dejinta ip-ka kombiyuutarkaaga shabakada deegaanka

Oo hadda wax badan oo ku saabsan isku xirka.

Waxaa jira faylka link.txt ee ku xiga serverka. Waxay ka kooban tahay xiriiriyeyaasha (jidka buuxa) ee faylasha (fiidyowyo, sawirro, barnaamijyo).

Qaab dhismeedku waa sidan:

ΠΏΠΎΠ»Π½Ρ‹ΠΉ_ΠΏΡƒΡ‚ΡŒ>описаниС
ΠΏΠΎΠ»Π½Ρ‹ΠΉ_ΠΏΡƒΡ‚ΡŒ>описаниС

Natiijada

Waxaan leenahay server-ka dhabarka ee lagu xakameynayo kumbuyuutarka shabakada maxalliga ah (gudaha shabakadda wi-fi). Farsamo ahaan, waxaan macmiilka ka maamuli karnaa qalab kasta oo leh turjumaan Python.

PS Waxaan ku daray amarka go'an si haddii kombiyuutarka ku jira shabakadda maxalliga ah loo qoondeeyo IP kale, si toos ah loogu beddeli karo macmiilka.

Source: www.habr.com

Add a comment