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
This commit is contained in:
Jack
2024-07-19 11:25:10 +08:00
parent ed34994f45
commit ed55fa708d
1949 changed files with 329210 additions and 26644 deletions
View File
+4
View File
@@ -0,0 +1,4 @@
import time
while True:
print("Hello, World!")
time.sleep(1)
+105
View File
@@ -0,0 +1,105 @@
import unittest
import sys
if "/www/server/panel" not in sys.path:
sys.path.insert(0, "/www/server/panel")
from mod.base import RealProcess
if "/www/server/panel/class" not in sys.path:
sys.path.insert(0, "/www/server/panel/class")
import public
real_process = RealProcess()
class TestRealProcess(unittest.TestCase):
def test_get_process_list(self):
res = real_process.get_process_list()
self.assertEqual(res['code'], 1)
def test_get_process_info_by_pid(self):
res = real_process.get_process_info_by_pid(1)
self.assertEqual(res['code'], 1)
def test_get_process_info_by_name(self):
res = real_process.get_process_info_by_name('system')
self.assertEqual(res['code'], 1)
def test_get_process_info_by_exec(self):
res = real_process.get_process_info_by_exec('/usr/sbin/sshd')
self.assertEqual(res['code'], 1)
def test_get_process_info_by_port(self):
res = real_process.get_process_info_by_port(22)
self.assertEqual(res['code'], 1)
def test_get_process_info_by_ip(self):
res = real_process.get_process_info_by_ip('192.168.168.66')
self.assertEqual(res['code'], 1)
def test_get_process_info_by_openfile(self):
res = real_process.get_process_info_by_openfile('/etc/passwd')
self.assertEqual(res['code'], 1)
def test_get_process_ps(self):
res = real_process.get_process_ps('grep')
self.assertEqual(res['code'], 1)
def test_get_process_tree(self):
res = real_process.get_process_tree(1)
self.assertEqual(res['code'], 1)
# def test_kill_pid(self):
# try:
# pid = real_process.get_process_info_by_exec('/www/server/panel/mod/test/process/test.py')['data'][0]['pid']
# res = real_process.kill_pid(pid)
# self.assertEqual(res['code'], 1)
# except:
# pass
# def test_kill_name(self):
# try:
# name = real_process.get_process_info_by_exec('/www/server/panel/mod/test/process/test.py')['data'][0]['name']
# res = real_process.kill_name(name)
# self.assertEqual(res['code'], 1)
# except:
# pass
#
# def test_kill_tree(self):
# try:
# pid = real_process.get_process_info_by_exec('/www/server/panel/mod/test/process/test.py')['data'][0]['pid']
# res = real_process.kill_tree(pid)
# self.assertEqual(res['code'], 1)
# except:
# pass
#
# def test_kill_proc_all(self):
# pid = real_process.get_process_info_by_exec('/www/server/panel/mod/test/process/test.py')['data'][0]['pid']
# res = real_process.kill_proc_all(pid)
# self.assertEqual(res['code'], 1)
#
# def test_kill_port(self):
# res = real_process.kill_port(22)
# self.assertEqual(res['code'], 1)
def test_add_black_ip(self):
res = real_process.add_black_ip(['1.2.3.4'])
self.assertEqual(res['code'], 1)
def test_del_black_ip(self):
res = real_process.del_black_ip(['1.2.3.4'])
self.assertEqual(res['code'], 1)
def test_firewall_reload(self):
res = real_process.firewall_reload()
self.assertEqual(res['code'], 1)
def test_get_run_list(self):
res = real_process.get_run_list()
self.assertEqual(res['code'], 1)
if __name__ == '__main__':
unittest.main()
+69
View File
@@ -0,0 +1,69 @@
import unittest
import sys
import time
if "/www/server/panel" not in sys.path:
sys.path.insert(0, "/www/server/panel")
if "/www/server/panel/class" not in sys.path:
sys.path.insert(0, "/www/server/panel/class")
from mod.base import RealServer
realserver = RealServer()
class TestRealServer(unittest.TestCase):
def test_server_admin(self):
res = realserver.server_admin('httpd', 'stop')
self.assertEqual(res['code'], 1)
res = realserver.server_admin('httpd', 'start')
self.assertEqual(res['code'], 1)
def test_server_status(self):
res = realserver.server_status('httpd')
self.assertEqual(res['code'], 1)
def test_add_boot(self):
server_name = 'swwnb'
pidfile = '/tmp/test.pl'
start_exec = 'btpython /root/1.py'
stop_exec = 'kill <cat /tmp/test.pl'
res = realserver.add_boot(server_name, pidfile, start_exec, stop_exec)
self.assertEqual(res['code'], 1)
def test_universal_server_admin(self):
res = realserver.universal_server_admin('swwnb', 'stop')
self.assertEqual(res['code'], 1)
res = realserver.universal_server_admin('swwnb', 'start')
self.assertEqual(res['code'], 1)
def test_universal_server_status(self):
res = realserver.universal_server_status('swwnb')
self.assertEqual(res['code'], 1)
def test_create_daemon(self):
server_name = 'swwnb'
pidfile = '/tmp/test.pl'
start_exec = 'btpython /root/1.py'
workingdirectory = '/tmp'
res = realserver.create_daemon(server_name, pidfile, start_exec, workingdirectory)
self.assertEqual(res['code'], 1)
def test_daemon_status(self):
res = realserver.daemon_status('swwnb')
self.assertEqual(res['code'], 1)
def test_del_daemon(self):
res = realserver.del_daemon('swwnb')
self.assertEqual(res['code'], 1)
# def test_del_boot(self):
# res = realserver.del_boot('swwnb')
# self.assertEqual(res['code'], 1)
def test_add_task(self):
res = realserver.add_task('echo 1 > /time/111.log', int(time.time()) + 3000)
self.assertEqual(res['code'], 1)
if __name__ == '__main__':
unittest.main()
+149
View File
@@ -0,0 +1,149 @@
import unittest
import sys
if "/www/server/panel" not in sys.path:
sys.path.insert(0, "/www/server/panel")
if "/www/server/panel/class" not in sys.path:
sys.path.insert(0, "/www/server/panel/class")
from mod.base import RealUser
realuser = RealUser()
class TestRealUser(unittest.TestCase):
def setUp(self):
realuser.add_user('test1', 'test1', 'test1')
realuser.add_group('test')
def tearDown(self):
realuser.remove_user('test1')
realuser.remove_user('test')
realuser.remove_group('test1')
realuser.remove_group('test')
def test_get_user_list(self):
print('get_user_list:')
res = realuser.get_user_list()
print(res)
self.assertEqual(res['code'], 1)
def test_get_group_list(self):
print('get_group_list:')
res = realuser.get_group_list()
print(res)
self.assertEqual(res['code'], 1)
def test_add_user(self):
print('add_user:')
res = realuser.add_user('test', 'test', 'test')
print(res)
self.assertEqual(res['code'], 1)
def test_remove_user(self):
print('remove_user:')
res = realuser.remove_user('test1')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_pwd(self):
print('edit_user_pwd:')
res = realuser.edit_user_pwd('test1', 'test111')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_group(self):
print('edit_user_group:')
res = realuser.edit_user_group('test1', 'test')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_ps(self):
print('edit_user_ps:')
res = realuser.edit_user_ps('test1', 'test')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_status(self):
print('edit_user_status:')
res = realuser.edit_user_status('test1', '0')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_login_shell(self):
print('edit_user_login_shell:')
res = realuser.edit_user_login_shell('test1', '/bin/bash')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_home(self):
print('edit_user_home:')
res = realuser.edit_user_home('test1', '/home/test1')
print(res)
self.assertEqual(res['code'], 1)
def test_get_user_info(self):
print('get_user_info:')
res = realuser.get_user_info('test1')
print(res)
self.assertEqual(res['code'], 1)
def test_add_group(self):
print('add_group:')
res = realuser.add_group('test2')
print(res)
realuser.remove_group('test2')
self.assertEqual(res['code'], 1)
def test_remove_group(self):
realuser.add_group('test')
print('remove_group:')
res = realuser.remove_group('test')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_group_name(self):
print('edit_group_name:')
res = realuser.edit_group_name('test', 'test5')
print(res)
print(realuser.remove_group('test5'))
self.assertEqual(res['code'], 1)
def test_get_group_info(self):
print('get_group_info:')
res = realuser.get_group_info('test1')
print(res)
self.assertEqual(res['code'], 1)
def test_get_group_user(self):
print('get_group_user:')
res = realuser.get_group_user('test1')
print(res)
self.assertEqual(res['code'], 1)
def test_get_user_group(self):
print('get_user_group:')
res = realuser.get_user_group('test1')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_permission(self):
print('edit_user_permission:')
res = realuser.edit_user_permission('test1', '777')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_group_permission(self):
print('edit_group_permission:')
res = realuser.edit_group_permission('test1', '777')
print(res)
self.assertEqual(res['code'], 1)
def test_edit_user_name(self):
print('edit_user_name:')
res = realuser.edit_user_name('test1', 'test')
print(res)
self.assertEqual(res['code'], 1)
if __name__ == '__main__':
unittest.main()