Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanli
evm-store
Commits
6a858248
Commit
6a858248
authored
Mar 24, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
51fbe51a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
118 additions
and
27 deletions
+118
-27
backend/app/signal_manager.py
backend/app/signal_manager.py
+7
-0
backend/controller/__init__.py
backend/controller/__init__.py
+8
-0
backend/controller/download_manager.py
backend/controller/download_manager.py
+56
-22
backend/controller/login_manager.py
backend/controller/login_manager.py
+37
-1
backend/model/download.py
backend/model/download.py
+1
-0
backend/model/user.py
backend/model/user.py
+1
-0
backend/view/download.py
backend/view/download.py
+8
-4
No files found.
backend/app/signal_manager.py
View file @
6a858248
...
...
@@ -74,6 +74,13 @@ class SignalManager(object):
actionGetAppLogsList
=
PySignal
()
actionUpdateAppLogs
=
PySignal
()
# 用户登录日志
actionAddLoginLogs
=
PySignal
()
actionDeleteLoginLogs
=
PySignal
()
actionGetLoginLogs
=
PySignal
()
actionGetLoginLogsList
=
PySignal
()
actionUpdateLoginLogs
=
PySignal
()
# 系统菜单
actionAddMenu
=
PySignal
()
actionDeleteMenu
=
PySignal
()
...
...
backend/controller/__init__.py
View file @
6a858248
...
...
@@ -13,6 +13,7 @@ from .apps_manager import appsManager
from
.menu_manager
import
menuManager
from
.device_manager
import
deviceManager
from
.download_manager
import
downloadManager
from
.login_logs_manager
import
loginLogsManager
from
.app_logs_manager
import
appLogsManager
from
.build_logs_manager
import
buildLogsManager
...
...
@@ -49,6 +50,13 @@ def initConnect():
signalManager
.
actionGetBuildLogList
.
connect
(
buildLogsManager
.
getList
)
signalManager
.
actionUpdateBuildLog
.
connect
(
buildLogsManager
.
update
)
# 用户登录记录
signalManager
.
actionAddLoginLogs
.
connect
(
loginLogsManager
.
add
)
signalManager
.
actionDeleteLoginLogs
.
connect
(
loginLogsManager
.
delete
)
signalManager
.
actionGetLoginLogs
.
connect
(
loginLogsManager
.
get
)
signalManager
.
actionGetLoginLogsList
.
connect
(
loginLogsManager
.
getList
)
signalManager
.
actionUpdateLoginLogs
.
connect
(
loginLogsManager
.
update
)
# 用户模块
signalManager
.
actionAddUser
.
connect
(
userManager
.
add
)
signalManager
.
actionDeleteUser
.
connect
(
userManager
.
delete
)
...
...
backend/controller/download_manager.py
View file @
6a858248
...
...
@@ -11,21 +11,50 @@ import logging
import
traceback
import
shutil
from
collections
import
OrderedDict
from
urllib.parse
import
urlparse
,
urljoin
import
urllib
from
urllib
import
parse
,
request
from
urllib.parse
import
urlparse
,
urljoin
,
urlencode
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
from
flask
import
request
as
flask_request
from
app.setting
import
config
,
conf
from
model
import
fullStackDB
from
model.download
import
AppDownload
from
model.device
import
Device
from
model.apps
import
Apps
from
model.user
import
User
from
utils
import
sql_filter
from
utils
import
sql_filter
,
ThreadMaker
from
utils.tools_epk
import
EpkApp
logger
=
logging
.
getLogger
(
"DownloadManager"
)
@
ThreadMaker
def
update_download_information
(
ip
,
id
):
params
=
{
'ak'
:
'aZEAgYG8wKuLd6DS9BmCloGtfnGGkRMn'
,
'coor'
:
'bd09ll'
}
parameters
=
urllib
.
parse
.
urlencode
(
params
)
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
}
if
ip
!=
'127.0.0.1'
:
params
.
update
({
'ip'
:
ip
})
parameters
=
urllib
.
parse
.
urlencode
(
params
)
url
=
'http://api.map.baidu.com/location/ip'
req
=
request
.
Request
(
url
=
'
%
s
%
s
%
s'
%
(
url
,
'?'
,
parameters
),
headers
=
headers
)
ret
=
request
.
urlopen
(
req
)
.
read
()
jsonData
=
json
.
loads
(
ret
)
logger
.
info
(
jsonData
)
if
(
0
!=
jsonData
[
'status'
]):
return
None
with
db_session
:
down
=
AppDownload
.
get
(
id
=
id
)
if
down
:
down
.
set
(
address
=
jsonData
[
'address'
],
remarks
=
json
.
dumps
(
jsonData
[
'content'
],
ensure_ascii
=
False
))
commit
()
def
convert_url_to_local_path
(
url
):
parsed_result
=
urlparse
(
url
)
...
...
@@ -38,13 +67,13 @@ class DownloadManager(object):
def
__init__
(
self
):
super
(
DownloadManager
,
self
)
.
__init__
()
def
add
(
self
,
data
):
def
add
(
self
,
user
,
data
):
with
db_session
:
app
=
Apps
.
get
(
id
=
data
.
get
(
"app"
),
is_delete
=
False
)
if
not
app
:
return
False
,
"app does not found"
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
id
=
user
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
@@ -59,9 +88,9 @@ class DownloadManager(object):
commit
()
return
result
,
"add dictionary {}."
.
format
(
"success"
if
result
else
"fail"
)
def
delete
(
self
,
uuid
):
def
delete
(
self
,
u
ser
,
u
uid
):
with
db_session
:
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
id
=
user
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
@@ -96,31 +125,36 @@ class DownloadManager(object):
app
=
None
with
db_session
:
# 根据IMEI查找设备
device
=
Device
.
select
()
.
where
(
imei
=
data
.
get
(
"imei"
))
.
first
()
logger
.
info
(
data
)
if
not
device
:
return
False
,
"device not found"
# device = Device.select().where(imei=data.get("imei")).first()
# logger.info(data)
# if not device:
# return False, "device not found"
# if not device.create_by:
# return False, "create user is null"
if
not
device
.
create_by
:
return
False
,
"create user is null"
app
=
Apps
.
select
(
app_name
=
data
.
get
(
"id"
))
.
order_by
(
desc
(
Apps
.
create_at
))
if
len
(
app
)
>
1
:
app
=
Apps
.
select
(
lambda
p
:
p
.
app_name
==
data
.
get
(
"id"
)
and
p
.
create_by
.
account
==
'evm'
)
.
order_by
(
desc
(
Apps
.
create_at
))
app
=
Apps
.
select
(
app_name
=
data
.
get
(
"id"
),
create_by
=
device
.
create_by
)
.
order_by
(
desc
(
Apps
.
create_at
))
.
first
()
if
not
app
:
return
False
,
"app not found"
app
=
app
[:]
epk_path
=
""
if
app
.
app_build_log
:
epk_path
=
os
.
sep
.
join
([
os
.
getcwd
(),
app
.
app_build_log
.
app_path
])
if
app
[
0
]
.
app_build_log
:
epk_path
=
os
.
sep
.
join
([
os
.
getcwd
(),
app
[
0
]
.
app_build_log
.
app_path
])
if
not
os
.
path
.
exists
(
epk_path
):
return
False
,
"epk file not found"
if
app
:
AppDownload
(
app
=
app
,
imei
=
data
.
get
(
"imei"
))
commit
()
down
=
AppDownload
(
app
=
app
[
0
],
imei
=
data
.
get
(
"imei"
))
commit
()
if
down
:
ip
=
flask_request
.
remote_addr
update_download_information
(
ip
,
down
.
id
)
return
epk_path
,
"get dictionary {}."
.
format
(
"success"
if
epk_path
else
"no data"
)
def
getList
(
self
,
data
):
def
getList
(
self
,
user
,
data
):
if
not
data
or
len
(
data
)
<=
0
:
return
False
,
0
,
"parameters can not be null."
...
...
@@ -157,14 +191,14 @@ class DownloadManager(object):
return
result
,
count
,
"get dictionary {}."
.
format
(
"success"
if
result
else
"fail"
)
def
update
(
self
,
uuid
,
data
):
def
update
(
self
,
u
ser
,
u
uid
,
data
):
# 当参数为空时,直接返回错误
if
len
(
data
)
<=
0
or
(
len
(
data
.
keys
())
==
1
and
"id"
in
data
):
return
False
,
"parameters can not be null."
with
db_session
:
# 查询请求者是否存在
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
id
=
user
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
backend/controller/login_manager.py
View file @
6a858248
...
...
@@ -7,18 +7,51 @@ import types
import
json
import
logging
import
traceback
import
urllib
from
urllib
import
parse
,
request
from
urllib.parse
import
urlparse
,
urljoin
,
urlencode
from
datetime
import
datetime
from
threading
import
Thread
from
werkzeug.security
import
check_password_hash
from
flask
import
request
as
flask_request
from
pony.orm
import
*
from
model
import
fullStackDB
from
model.user
import
User
from
model.login_logs
import
LoginLogs
from
fullstack.login
import
Auth
from
fullstack.response
import
ResponseCode
from
utils
import
md5_salt
from
utils
import
md5_salt
,
ThreadMaker
logger
=
logging
.
getLogger
(
"LoginManager"
)
@
ThreadMaker
def
update_login_information
(
ip
,
user_id
):
params
=
{
'ak'
:
'aZEAgYG8wKuLd6DS9BmCloGtfnGGkRMn'
,
'coor'
:
'bd09ll'
}
parameters
=
urllib
.
parse
.
urlencode
(
params
)
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
}
if
ip
!=
'127.0.0.1'
:
params
.
update
({
'ip'
:
ip
})
parameters
=
urllib
.
parse
.
urlencode
(
params
)
url
=
'http://api.map.baidu.com/location/ip'
req
=
request
.
Request
(
url
=
'
%
s
%
s
%
s'
%
(
url
,
'?'
,
parameters
),
headers
=
headers
)
ret
=
request
.
urlopen
(
req
)
.
read
()
jsonData
=
json
.
loads
(
ret
)
logger
.
info
(
jsonData
)
if
(
0
!=
jsonData
[
'status'
]):
return
None
with
db_session
:
user
=
User
.
get
(
id
=
user_id
)
if
not
user
:
return
LoginLogs
(
username
=
user
.
username
,
address
=
jsonData
[
'address'
],
create_by
=
user
,
remarks
=
json
.
dumps
(
jsonData
[
'content'
],
ensure_ascii
=
False
))
commit
()
class
LoginManager
(
object
):
'''
...
...
@@ -51,6 +84,9 @@ class LoginManager(object):
if
result
.
is_delete
:
return
False
,
ResponseCode
.
ACCOUNT_DISABLED
update_login_information
(
flask_request
.
remote_addr
,
result
.
id
)
# 返回token
token
=
Auth
.
encode_auth_token
(
result
.
id
,
result
.
username
)
# 生成 token
# setattr(result, 'token', token)
...
...
backend/model/download.py
View file @
6a858248
...
...
@@ -15,6 +15,7 @@ class AppDownload(db.Entity):
uuid
=
Required
(
uuid
.
UUID
,
unique
=
True
,
default
=
uuid
.
uuid1
,
index
=
True
)
app
=
Optional
(
"Apps"
,
reverse
=
"app_download"
)
imei
=
Required
(
str
)
address
=
Optional
(
str
)
download_at
=
Required
(
datetime
,
default
=
datetime
.
now
)
is_delete
=
Required
(
bool
,
default
=
False
)
sort
=
Optional
(
int
,
size
=
32
,
default
=
0
)
...
...
backend/model/user.py
View file @
6a858248
...
...
@@ -31,6 +31,7 @@ class User(db.Entity):
sort
=
Optional
(
int
,
size
=
32
,
default
=
0
)
remarks
=
Optional
(
str
,
max_len
=
255
,
default
=
""
,
nullable
=
True
)
app_logs_creater
=
Set
(
'AppLogs'
,
reverse
=
'create_by'
)
login_logs_creater
=
Set
(
'LoginLogs'
,
reverse
=
'create_by'
)
annex_creator
=
Set
(
'Annex'
,
reverse
=
'create_by'
)
annex_updater
=
Set
(
'Annex'
,
reverse
=
'update_by'
)
annex_deleter
=
Set
(
'Annex'
,
reverse
=
'delete_by'
)
...
...
backend/view/download.py
View file @
6a858248
...
...
@@ -21,7 +21,8 @@ download_api = Blueprint("download_api", __name__, url_prefix="/api/v1/%s/downlo
@
Auth
.
auth_required
def
add
():
try
:
isSuccess
,
message
=
signalManager
.
actionAddDownload
.
emit
(
request
.
schema_data
)
user
=
request
.
current_user
.
get
(
"id"
)
isSuccess
,
message
=
signalManager
.
actionAddDownload
.
emit
(
user
,
request
.
schema_data
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
...
...
@@ -37,7 +38,8 @@ def add():
@
Auth
.
auth_required
def
delete
(
id
):
try
:
isSuccess
,
message
=
signalManager
.
actionDeleteDownload
.
emit
(
id
)
user
=
request
.
current_user
.
get
(
"id"
)
isSuccess
,
message
=
signalManager
.
actionDeleteDownload
.
emit
(
user
,
id
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
...
...
@@ -72,7 +74,8 @@ def get():
@
Auth
.
auth_required
def
get_list
():
try
:
result
,
count
,
message
=
signalManager
.
actionGetDownloadList
.
emit
(
request
.
schema_data
)
user
=
request
.
current_user
.
get
(
"id"
)
result
,
count
,
message
=
signalManager
.
actionGetDownloadList
.
emit
(
user
,
request
.
schema_data
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
,
count
=
count
)
else
:
...
...
@@ -88,7 +91,8 @@ def get_list():
@
Auth
.
auth_required
def
update
(
id
):
try
:
isSuccess
,
message
=
signalManager
.
actionUpdateDownload
.
emit
(
id
,
request
.
schema_data
)
user
=
request
.
current_user
.
get
(
"id"
)
isSuccess
,
message
=
signalManager
.
actionUpdateDownload
.
emit
(
user
,
id
,
request
.
schema_data
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment