Files
Jack ed55fa708d Update to 7.7.0
Since version 7.7.0, we recommend yours update python to 3.12.

[+] Using nginx technology to load static files improves access speed
[+] Refactor homepage, website, FTP, and database using vue3
[+] Table loading changed to skeleton screen
[+] Add Website statistics-v2 professional plug-in
[+] Add Home page - top 5 resource occupancy
[+] Add protection for Files management (requires Tamper-proof for Enterprise 3.7)
[+] Website, FTP, Databases page add program status
[+] Add FTP log analysis (only supports Centos)
[+] Add password-free login to phpMyAdmin
[+] Add Proxy Project in Website (Supported when web service uses Nginx)
[+] Add WP Toolkit (Pro version only)
[+] Redesigned Docker module
[+] Add WP Toolkit Protection
[+] Add WP Toolkit Backup and Restore
[+] Add WP Toolkit Migrated
[+] Add WP Toolkit Clone site (supports new domain and subdomain)
[+] Add WP Toolkit Create site from backup of other panel
[+] Add WP Toolkit support for Cron automatic backup (only save Local disk)
[+] Add WP Toolkit operation log
[+] Add Integrity check for WP Toolkit
[+] Add WP Toolkit plug-in management and themes management

[*] Optimize phpMyAdmin formula access method
[*] Optimize Home page PHP display problem
[*] Optimize jump to the login interface after the login expires
[*] Optimize automatic renewal of SSL at some times
[*] Optimize Let's Encrypt to increase application success rate

[-] Fix Logs Audit cannot be opened
[-] Fix apache URL rewrite issue
[-] Fix phpmyadmin installation problem
[-] Fix the problem that some servers cannot install software
[-] Fix upload file error
[-] Fix left menu hiding problem
[-] Fix aaPanel Mobile QR code display problem
[-] Fix problem that third-party plug-ins are not displayed in the App Store
[-] Fix issue where the menu bar is blank when opening new tabs
[-] Fixed panel not being accessible in some cases
[-] Fix the issue where Curl warning caused the inability to apply for SSL
[-] Fix Quota issues for Website, FTP, Databases
[-] Fix file interface display problem on mobile terminal
2024-07-19 11:25:10 +08:00

74 lines
4.7 KiB
Python

#coding: utf-8
#-------------------------------------------------------------------
# aaPanel
#-------------------------------------------------------------------
# Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved.
#-------------------------------------------------------------------
# Author: zouhw <zhw@aapanel.com>
#-------------------------------------------------------------------
#------------------------------
# Docker模型
#------------------------------
import public
import projectModel.bt_docker.dk_public as dp
import docker.errors
class main :#line:1
__O0O0O00O00OOO00O0 =None #line:3
def docker_client (OO0000OOOO0O00000 ,O00000O0O00OO0O0O ):#line:5
import projectModel .bt_docker .dk_public as dp #line:6
return dp .docker_client (O00000O0O00OO0O0O )#line:7
def get_volume_container_name (O0O000O0OOO00O0O0 ,O0O00OOOOO0O0O00O ):#line:10
OO000OO00OOOOOOO0 =O0O000O0OOO00O0O0 .docker_client (O0O000O0OOO00O0O0 .__O0O0O00O00OOO00O0 ).containers #line:11
O0O0OOOO00000OO0O =OO000OO00OOOOOOO0 .list (all =True )#line:12
O0000O00OOOO00O00 =[O000OO00OOOO00O0O .attrs for O000OO00OOOO00O0O in O0O0OOOO00000OO0O ]#line:14
for O00OOO00000OO0OOO in O0000O00OOOO00O00 :#line:15
if not O00OOO00000OO0OOO ['Mounts']:#line:16
continue #line:17
for O0O00O0O0OOO000OO in O00OOO00000OO0OOO ['Mounts']:#line:18
if "Name"not in O0O00O0O0OOO000OO :#line:19
continue #line:20
if O0O00OOOOO0O0O00O ['Name']==O0O00O0O0OOO000OO ['Name']:#line:21
O0O00OOOOO0O0O00O ['container']=O00OOO00000OO0OOO ['Name'].replace ("/","")#line:22
if 'container'not in O0O00OOOOO0O0O00O :#line:23
O0O00OOOOO0O0O00O ['container']=''#line:24
return O0O00OOOOO0O0O00O #line:25
def get_volume_list (O0O0OOO0OO000000O ,OO0OO0O0OOOO0OO0O ):#line:27
""#line:31
import projectModel .bt_docker .dk_setup as ds #line:32
O0O0OOO0OO000000O .__O0O0O00O00OOO00O0 =OO0OO0O0OOOO0OO0O .url #line:33
O0O0O0OOO0OOO0O00 =O0O0OOO0OO000000O .docker_client (OO0OO0O0OOOO0OO0O .url )#line:34
O0O000O0OOOOOO00O =ds .main ()#line:35
OO0OO00000OOOOOO0 =O0O000O0OOOOOO00O .check_docker_program ()#line:36
OOOOO0OOOO000OOOO =O0O000O0OOOOOO00O .get_service_status ()#line:37
if not O0O0O0OOO0OOO0O00 :#line:38
O000O0000OOO000OO ={"volume":[],"installed":OO0OO00000OOOOOO0 ,"service_status":OOOOO0OOOO000OOOO }#line:43
return public .returnMsg (True ,O000O0000OOO000OO )#line:44
OO00O00OOO0O000O0 =O0O0O0OOO0OOO0O00 .volumes #line:45
O000O0000OOO000OO ={"volume":O0O0OOO0OO000000O .get_volume_attr (OO00O00OOO0O000O0 ),"installed":OO0OO00000OOOOOO0 ,"service_status":OOOOO0OOOO000OOOO }#line:51
return public .returnMsg (True ,O000O0000OOO000OO )#line:52
def get_volume_attr (O00O000OO00000O00 ,O0O0OO0OO0OO0O0OO ):#line:54
OOO00O0O0000O0O0O =O0O0OO0OO0OO0O0OO .list ()#line:55
O00O00OOOOO00O000 =list ()#line:56
for OO0OOOOOOOOO0OO00 in OOO00O0O0000O0O0O :#line:57
OO0OOOOOOOOO0OO00 =O00O000OO00000O00 .get_volume_container_name (OO0OOOOOOOOO0OO00 .attrs )#line:58
O00O00OOOOO00O000 .append (OO0OOOOOOOOO0OO00 )#line:59
return O00O00OOOOO00O000 #line:60
def add (O000O0OOOO0O0OOOO ,O0OO00O0O0OO0O0OO ):#line:62
""#line:70
O000O0OOOO0O0OOOO .docker_client (O0OO00O0O0OO0O0OO .url ).volumes .create (name =O0OO00O0O0OO0O0OO .name ,driver =O0OO00O0O0OO0O0OO .driver ,driver_opts =O0OO00O0O0OO0O0OO .driver_opts if O0OO00O0O0OO0O0OO .driver_opts else None ,labels =dp .set_kv (O0OO00O0O0OO0O0OO .labels ))#line:76
dp .write_log ("Adding storage volume [[]] succeeded!".format (O0OO00O0O0OO0O0OO .name ))#line:77
return public .returnMsg (True ,"Added successfully!")#line:78
def remove (O0OOO000000OO0OOO ,O0OO00OO0OOO00000 ):#line:80
""#line:86
try :#line:87
O0000O0OO000O0O0O =O0OOO000000OO0OOO .docker_client (O0OO00OO0OOO00000 .url ).volumes .get (O0OO00OO0OOO00000 .name )#line:88
O0000O0OO000O0O0O .remove ()#line:89
dp .write_log ("Delete storage volume [[]] successful!".format (O0OO00OO0OOO00000 .name ))#line:90
return public .returnMsg (True ,"Successfully deleted")#line:91
except docker .errors .APIError as OO00OO0O000O0O0O0 :#line:92
if "volume is in use"in str (OO00OO0O000O0O0O0 ):#line:93
return public .returnMsg (False ,"Storage volume is in use and cannot be deleted!")#line:94
return public .returnMsg (False ,"Failed to delete! {}".format (OO00OO0O000O0O0O0 ))#line:95