Skip to content

Commit

Permalink
v2ray json config add mtproto and domainSocket support
Browse files Browse the repository at this point in the history
  • Loading branch information
v2ray-shell authored and v2ray-shell committed Jul 22, 2018
1 parent bf737f8 commit df72d9c
Show file tree
Hide file tree
Showing 12 changed files with 652 additions and 104 deletions.
117 changes: 117 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
.static_storage/
.media/
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
venv_linux/
.venv_linux/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/

# kde
.directory

# simplegitserver
os
.project
.pydevproject
.settings/
simplegitweb.conf
1 change: 1 addition & 0 deletions src/bridgehouse/bridge.py
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,7 @@ def onproxyserverTimeLagTest(self):
break
if (currentActiveRow and currentActiveRow.isChecked()):
proxy = self.getProxyAddressFromTableWidget(currentRow)
if not proxy: return
protocol = proxy[0]
hostName = proxy[1]
hostPort = int(proxy[2])
Expand Down
181 changes: 181 additions & 0 deletions src/bridgehouse/editMap/inbound/mtPanel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
#!/usr/bin/env python3

from PyQt5.QtWidgets import (QWidget, QLabel, QTableView,
QHBoxLayout, QGroupBox, QPushButton,
QTableWidget, QAbstractItemView, QButtonGroup,
QVBoxLayout, QTableWidgetItem)

from PyQt5.QtCore import QFileInfo, QCoreApplication
from PyQt5.Qt import QStandardItemModel, QModelIndex

import sys, copy

v2rayshellDebug = False

if __name__ == "__main__":
v2rayshellDebug = True
# this for debug test
path = QFileInfo(sys.argv[0])
srcPath = path.absoluteFilePath().split("/")
sys.path.append("/".join(srcPath[:-4]))

from bridgehouse.editMap.toolbox import toolbox

class InboundMtPanel(QWidget):
def __init__(self):
super().__init__()
self.mtJSONFile = {
"users": [{
"email": "[email protected]",
"level": 0,
"secret": "b0cbcef5a486d9636472ac27f8e11a9d"
}]
}
self.translate = QCoreApplication.translate

self.labelUsermtPanel = (self.translate("InboundMtPanel", "Email"),
self.translate("InboundMtPanel", "Level"),
self.translate("InboundMtPanel", "Password"))

def createmtSettingPanel(self):
UUIDdelegate = toolbox.UUIDLineEditDelegate(
self.translate("InboundMtPanel", "Gerate UUID"))

self.model = QStandardItemModel(0, 3)
self.tableViewInMtUser = tableViewUser = QTableView(self)
tableViewUser.setModel(self.model)
self.model.setHorizontalHeaderLabels(self.labelUsermtPanel)
tableViewUser.setSelectionMode(QAbstractItemView.SingleSelection)
tableViewUser.setSelectionBehavior(QAbstractItemView.SelectRows)

tableViewUser.setItemDelegateForColumn(2, UUIDdelegate)

self.btnInMtNew = QPushButton(
self.translate("InboundMtPanel", "New"), self)
self.btnInMtDelete = QPushButton(
self.translate("InboundMtPanel", "Delete"), self)

self.btnGroup = QButtonGroup()
self.btnGroup.addButton(self.btnInMtNew)
self.btnGroup.addButton(self.btnInMtDelete)

vboxBtn = QVBoxLayout()
vboxBtn.addWidget(QLabel())
vboxBtn.addWidget(QLabel())
vboxBtn.addWidget(QLabel())
vboxBtn.addWidget(self.btnInMtNew)
vboxBtn.addWidget(self.btnInMtDelete)

hbox = QHBoxLayout()
hbox.addWidget(tableViewUser)
hbox.addLayout(vboxBtn)

self.groupInboudnMtPanel = QGroupBox(
self.translate("InboundMtPanel", "MTProto"), self)
self.groupInboudnMtPanel.setLayout(hbox)

self.createInboundMtPanelSignals()

if (v2rayshellDebug):
self.__debugBtn = QPushButton("__debugTest", self)
vboxBtn.addWidget(self.__debugBtn)
self.__debugBtn.clicked.connect(self.__debugTest)
self.settingInboundMtPanelFromJSONFile(self.mtJSONFile, True)

return self.groupInboudnMtPanel

def createInboundMtPanelSignals(self):
self.btnGroup.buttonClicked.connect(self.onInboundMtbtnGroup)

def onInboundMtbtnGroup(self, e):
if e.text() == self.translate("InboundMtPanel", "New"):
self.onbtnInboundMtNew()
if e.text() == self.translate("InboundMtPanel", "Delete"):
self.onbtnInboundMtDelete()

def onbtnInboundMtNew(self):
row = self.model.rowCount()
if not row:
self.model.setRowCount(row+1)
self.setRowData(row)
else:
if (self.model.index(row-1, 2, QModelIndex()).data()):
self.model.setRowCount(row+1)
self.setRowData(row)

def setRowData(self, row, email=None, level=None, secret=None):
indexEmail = self.model.index(row, 0, QModelIndex())
indexLevel = self.model.index(row, 1, QModelIndex())
indexSecret = self.model.index(row, 2, QModelIndex())

self.model.setData(indexEmail, "" if not email else email)
self.model.setData(indexLevel, 0 if not level else level)
self.model.setData(indexSecret, 0 if not secret else secret)

try:
if level: self.treasureChest.addLevel(int(level))
if email: self.treasureChest.addEmail(str(email))
except Exception: pass

def onbtnInboundMtDelete(self):
row = self.tableViewInMtUser.selectedIndexes()
if row:
self.model.removeRow(row[0].row())

def settingInboundMtPanelFromJSONFile(self, inboundMtJSONFile=None, openFromJSONFile=False):
if not inboundMtJSONFile:
inboundMtJSONFile = {}

try:
inboundMtJSONFile['users']
except KeyError:
inboundMtJSONFile['users'] = list()

if inboundMtJSONFile['users']:
for row, user in enumerate(inboundMtJSONFile['users']):
email = level = secret = None
try:
email = user['email']
except KeyError:
pass
try:
level = user['level']
except KeyError:
pass
try:
secret = user['secret']
except KeyError:
pass
self.model.setRowCount(row+1)
self.setRowData(row, email, level, secret)

def createInboundMtJSONFile(self):
inboundMtJSONFile = {}
inboundMtJSONFile['users'] = list()

usersNumber = self.model.rowCount()
for row in range(usersNumber):
userData = {}
userData['email'] = self.model.index(row, 0, QModelIndex()).data()
userData['level'] = self.model.index(row, 1, QModelIndex()).data()
userData['secret'] = ''.join(str(self.model.index(row, 2, QModelIndex()).data()).split('-'))
inboundMtJSONFile['users'].append(copy.deepcopy(userData))

return inboundMtJSONFile

def clearinboundMtPanel(self):
self.model.setRowCount(0)

def __debugTest(self):
import json
print(json.dumps(self.createInboundMtJSONFile(), indent=4, sort_keys=False))


if __name__ == "__main__":
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
ex = InboundMtPanel()
ex.createmtSettingPanel()
ex.setGeometry(300, 300, 600, 420)
ex.show()
sys.exit(app.exec_())
4 changes: 2 additions & 2 deletions src/bridgehouse/editMap/inbound/vmessPanel.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def createVmessSettingPanel(self):
vboxVmessPanel.addWidget(self.createVmessDefaultSettingPanel())
vboxVmessPanel.addWidget(groupBoxClientsSetting)

self.createVmessPanelSignals()
self.createInboundVmessPanelSignals()

if (v2rayshellDebug):
self.__debugBtn = QPushButton("__debugTest", self)
Expand Down Expand Up @@ -155,7 +155,7 @@ def createVmessDefaultSettingPanel(self):

return groupBoxDefault

def createVmessPanelSignals(self):
def createInboundVmessPanelSignals(self):
self.btnInVmessDelete.clicked.connect(self.onbtnInVmessDelete)
self.btnInVmessNew.clicked.connect(self.onbtnInVmessNew)

Expand Down
Loading

0 comments on commit df72d9c

Please sign in to comment.