日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

測試系統:
外網:linux
內網:windows
Python/ target=_blank class=infotextkey>Python:python3.6(需要安裝flask、psutil)
功能介紹:使用flask,實現可一鍵添加端口映射,可以刪除單端口,可刪除全部端口映射

需要準備的東西:
1:如上的內網穿透工具:git clone https://gitee.com/stlswm/transponder.git
2:外網服務器 (需要安裝 Nginx),開放端口 9000-9999
3:域名,需要泛域名,基本上是添加一個@.domain.com(沒有的話可以使用ip+端口來訪問)

外網服務器:
把 outer_server 中的二進制linux可執行文件main移動到隨意文件夾,文件地址替換python中mainPath變量,

python文件

from flask import Flask
from flask import request
import os
import time
import random
import sys
import string
import psutil
import re
App = Flask(__name__)

# 文件存放地址
mainPath="/root/go/src/transponder/outer_server/"
# ng配置文件存放地址
ngConfigPath="/www/server/panel/vhost/nginx/"
# 你的域名
domain="domain.com"


#添加端口映射
@app.route('/add')
def add():
    # 設置端口信息
    if os.path.exists("./port.txt") == False:
        pf=open("./port.txt",'w')
        pf.write("9000")
        pf.close
        port=9000
    else:
        portFile = open("./port.txt",'r')
        port=portFile.read()
        portFile.close()
        
    serverPort=int(port)+1
    
    # 端口信息存會文件中
    portFile = open("./port.txt",'w')
    portFile.write(str(serverPort))
    portFile.close()
    
    fileName="main" + str(serverPort)
    
    # 操作服務端 打包添加配置文件
    os.mkdir(mainPath+fileName+"s")
    os.system('cd '+mainPath+';cp -r main ./'+fileName+"s;cd "+fileName+"s;mv main "+fileName)
    fp = open(mainPath+fileName+"s/outer.config.json",'w')
    psd=random.randint(10000000000,90000000000)
    fp.write('{"InnerServerAddress": "tcp://0.0.0.0:'+str(serverPort)+'","OuterServerAddress": "unix:///var/run/'+fileName+'.sock","AuthKey": "'+str(psd)+'"}')
    fp.close()
    #操作ng  添加ng配置文件
    f=open(ngConfigPath+fileName+".conf","w")
    head=generate_random_str(6)
    f.write("server {listen 80;server_name  "+head+"."+domain+";access_log  /var/log/www.abc.com.access.log;error_log  /var/log/www.abc.com.error.log;location / {proxy_pass http://unix:/var/run/"+fileName+".sock:/;proxy_redirect     off;proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_max_temp_file_size 0;proxy_connect_timeout      90;proxy_send_timeout         90;proxy_read_timeout         90;proxy_buffer_size          4k;proxy_buffers              4 32k;proxy_busy_buffers_size    64k;proxy_temp_file_write_size 64k;}}")
    f.close()
    os.system("nginx -s reload")
    os.system("cd "+mainPath+fileName+"s;nohup ./"+fileName+" &")
    
    f=open("./portAll.txt","a")
    f.write(","+fileName)
    f.close()
    
    return "<h1 style='margin-bottom:30px;'>啟動成功</h1><br>服務器:119.45.136.232:"+str(serverPort)+"<br>客戶端域名:http://"+head+"."+domain+"<br>秘鑰:"+str(psd)

#刪除對應的外網端口
@app.route('/kill')
def kill():
    port = request.args.get("port")
    fileName="main"+str(port)
    pid=processinfo(fileName)
    if pid==False:
        return "沒有找改進程"
    os.system("kill -9 "+str(pid))
    os.system("cd "+mainPath+";rm -rf "+fileName+"s")
    os.system("cd /run;rm  "+fileName+".sock")
    os.system("cd "+ngConfigPath+";rm "+fileName+".conf;nginx -s reload")
    return "操作成功!"
    
#刪除全部端口映射
@app.route('/killAll')
def killAll():
    if os.path.exists("./portAll.txt") == False:
        return "無端口映射"
    portFile = open("./portAll.txt",'r')
    portAllStr=portFile.read()
    portAllArr=portAllStr.split(",")
    myStr="<h1 style='margin-bottom:30px;'>操作成功</h1>"
    for v in portAllArr:
        if len(v) > 0:
            fileName=v
            pid=processinfo(fileName)
            if pid==False:
                myStr=myStr+"未找到進程:"+fileName+"<br>"
            else :
                myStr=myStr+"成功停止進程:"+fileName+"<br>"
                os.system("kill -9 "+str(pid))
            os.system("cd "+mainPath+";rm -rf "+fileName+"s")
            os.system("cd /run;rm "+fileName+".sock")
            os.system("cd "+ngConfigPath+";rm "+fileName+".conf;nginx -s reload")
    f=open("./portAll.txt","w")
    f.write("")
    f.close()
    f=open("./port.txt","w")
    f.write("9000")
    f.close()
    return myStr
    

# 獲取進程ID
def processinfo(processName):
    pids = psutil.pids()
    for pid in pids:
        # print(pid)
        p = psutil.Process(pid)
        # print(p.name)
        if p.name() == processName:
            # print(pid)
            return pid  # 如果找到該進程則打印它的PID,返回true
    return False  # 沒有找到該進程,返回false



# 隨機生成字符串
def generate_random_str(randomlength):    
    '''    
    string.digits = 0123456789    
    string.ascii_letters = 26個小寫,26個大寫    
    '''    
    str_list = random.sample(string.digits + string.ascii_letters,randomlength)    				
    random_str = ''.join(str_list)    
    return random_str

if __name__ == '__main__':
    app.run(host="0.0.0.0",port="8001")

內網:

對應git文件中的inner_server
請求:http://外網ip:8001/add
1:獲取到服務器端口和客戶端請求域名和秘鑰,
2:對應的替換到config里的內容,配置好ProxyAddress的內網端口,
4:windows雙擊打開inner_server中的main.exe linux: ./main
3:使用域名就能訪問到內網

如有遇到不會的問題,歡迎一起交流

后臺私信小編01

使用python做內網穿透小工具實現花生殼功能!太強大了8

 

既可以進入交流基地!

分享到:
標簽:穿透 內網
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定