Как заставить Python автоматически разрешать порт через брандмауэр Windows - PullRequest
1 голос
/ 31 марта 2019

У меня есть FTP-сервер, который я хотел бы отправить на мои персональные компьютеры с Windows 10, расположенные вокруг моего района (разные IP-адреса), для доступа к файлам, и для доступа к ним мне нужно разрешить порты черезмежсетевые экраны.Вместо этого, есть ли способ заставить мою программу на Python использовать какой-либо другой порт, которому не нужно обходить брандмауэр ИЛИ вообще обходить брандмауэр?

Server.py

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import urllib.request

import mysql.connector
sqlpass = ""
version = "1.3"

def ftp_main():
    mydb = mysql.connector.connect(
        host="",
        port="3306",
        user="",
        passwd=sqlpass,
        database=""
    )
    mycursor = mydb.cursor()

    mycursor.execute("SELECT Username, Password FROM FtpInfo")
    myresult = mycursor.fetchall()
    Username, Password = myresult[0]
    print(Username + " " + Password)

    external_ip = urllib.request.urlopen('https://ident.me').read().decode('utf8')

    print(external_ip)
    authorizer = DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    authorizer.add_user(Username, Password, '.', perm='elradfmwMT')
    authorizer.add_anonymous('.')

    # Instantiate FTP handler class
    handler = FTPHandler
    handler.authorizer = authorizer
    handler.masquerade_address = external_ip
    handler.passive_ports = range(60000, 60999)

    # Define a customized banner (string returned when client connects)
    handler.banner = "FTP Server v" + version

    address = ('', 1000)
    server = FTPServer(address, handler)

    # start ftp server
    server.serve_forever()

ftp_main()

1 Ответ

1 голос
/ 01 апреля 2019

Я не знаю ни одного собственного Python-способа настройки брандмауэра Windows.

Хотя вы можете просто выполнить Windows netsh команду из Python, используя os.system.

См. Как открыть порты на брандмауэре Windows через командный файл .

...