Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.137.142.253
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
panel /
class_v2 /
panelModelV2 /
[ HOME SHELL ]
Name
Size
Permission
Action
__pycache__
[ DIR ]
drwxr-xr-x
backupModel.py
2.58
KB
-rw-r--r--
base.py
598
B
-rw-r--r--
publicModel.py
12.92
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : publicModel.py
# coding: utf-8 # ------------------------------------------------------------------- # aaPanel # ------------------------------------------------------------------- # Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # ------------------------------------------------------------------- # Author: cjxin <cjxin@aapanel.com> # ------------------------------------------------------------------- # 备份 # ------------------------------ import os, sys, re, json, shutil, psutil, time from panelModelV2.base import panelBase import public, panelTask import config_v2 as config try: from BTPanel import cache,session except:pass class main(panelBase): __table = 'task_list' # public.check_database_field("ssl_data.db","ssl_info") task_obj = panelTask.bt_task() def __init__(self): pass """ @name 获取面板日志 """ def get_update_logs(self,get): try: skey = 'panel_update_logs' res = cache.get(skey) if res: return public.return_message(0, 0, res) # res = public.httpPost('https://wafapi2.aapanel.com/api/getUpdateLogs?type=Linux',{}) res = public.httpPost('https://wafapi2.aapanel.com/Api/getUpdateLogs?type=Linux',{}) start_index = res.find('(') + 1 end_index = res.rfind(')') json_data = res[start_index:end_index] res = json.loads(json_data) cache.set(skey,res,60) except: res = [] return public.return_message(0, 0, res) def get_public_config(self, args): """ @name 获取公共配置 """ _config_obj = config.config() data = _config_obj.get_config(args) data['task_list'] = self.task_obj.get_task_lists(args) data['task_count'] = public.M('tasks').where("status!=?", ('1',)).count() data['get_pd'] = self.get_pd(args) data['ipv6'] = '' if _config_obj.get_ipv6_listen(None): data['ipv6'] = 'checked' data['is_local'] = '' if public.is_local(): data['is_local'] = 'checked' if data['get_pd'] and data['get_pd'][2] != -1: time_diff = (data['get_pd'][2]-int(time.time())) % (365*86400) data['active_pro_time'] = int(time.time()) - (365*86400 - time_diff) else: data['active_pro_time'] = 0 data['status_code'] = _config_obj.get_not_auth_status() if os.path.exists('/www/server/panel/config/api.json'): try: res = json.loads(public.readFile('/www/server/panel/config/api.json')) data['api'] = 'checked' if res['open'] else '' except: public.ExecShell('rm -f /www/server/panel/config/api.json') data['api'] = '' else: data['api'] = '' data['total'] = os.path.exists('/www/server/panel/plugin/total') or os.path.exists('/www/server/panel/plugin/monitor') data['disk_usage'] = public.get_disk_usage(public.get_panel_path()) data['uid'] = '' if os.path.exists('/www/server/panel/data/userInfo.json'): res = public.readFile('/www/server/panel/data/userInfo.json') if res: try: res = json.loads(res) data['uid'] = res['uid'] except: pass data['panel']['backup_info'] = self.get_panel_backup_info() return public.return_message(0, 0, data) # 获取公共配置(精简版) def get_public_config_simple(self, args): """ @name 获取公共配置(精简版) @param args<dict_obj> 请求参数 @return dict """ data = {} data['task_count'] = public.M('tasks').where("status!=?", ('1',)).count() data['get_pd'] = self.get_pd(args) import panelSSL data['user_info'] = panelSSL.panelSSL().GetUserInfo(None) import system_v2 as system data['panel'] = system.system().GetPanelInfo() data["webname"] = public.GetConfigValue("title") data['menu_list'] = config.config().get_menu_list()['message'] data['install_finished'] = os.path.exists('{}/data/install_finished.mark'.format(public.get_panel_path())) import breaking_through as breaking_through _breaking_through_obj = breaking_through.main() data['limit_login'] = _breaking_through_obj.get_login_limit() # 增加语言设置数据 lang = config.config().get_language() data['language'] = lang['default'] data['language_list'] = lang['languages'] data['isPro'] = True if os.path.exists("/www/server/panel/data/panel_pro.pl") else False return public.return_message(0, 0, data) #统计面板备份占用空间 def get_panel_backup_info(self): auto_backup=0 if os.path.exists('{}/data/not_auto_backup.pl'.format(public.get_panel_path())) else 1 backup_number=30 result={"total_size":0,"auto_backup":auto_backup,"backup_number":backup_number} backup_number_file='{}/data/panel_backup_number.pl'.format(public.get_panel_path()) if os.path.exists(backup_number_file): try: result["backup_number"]=int(open(backup_number_file, 'r').read()) except:pass b_path = '{}/panel'.format(public.get_backup_path()) if not os.path.exists(b_path): return result for f in os.listdir(b_path): f_path=b_path + '/' +f try: zip_string="" if f.endswith('.zip'):zip_string=".zip" mktime=time.mktime(time.strptime(f,"%Y-%m-%d"+zip_string)) day_date=public.format_date("%Y-%m-%d",times=mktime) backup_path = b_path + '/' + day_date backup_file = backup_path + '.zip' if f_path==backup_file or (f_path==backup_path and os.path.isdir(f_path)): result["total_size"] += public.get_path_size(f_path) except: pass return result # 获取常用软件安装状态 def get_public_config_setup(self, args): from BTPanel import session if 'config' not in session: session['config'] = public.M('config').where("id=?", ('1',)).field( 'webserver,sites_path,backup_path,status,mysql_root').find() data = session['config'] import system_v2 as system data.update(system.system().GetConcifInfo()) if 'ftpPort' not in data: # 获取FTP端口 if 'port' not in session: import re try: file = public.GetConfigValue('setup_path') + '/pure-ftpd/etc/pure-ftpd.conf' conf = public.readFile(file) rep = r"\n#?\s*Bind\s+[0-9]+\.[0-9]+\.[0-9]+\.+[0-9]+,([0-9]+)" port = re.search(rep, conf).groups()[0] except: port = '21' session['port'] = port data['ftpPort'] = session['port'] return public.return_message(0, 0, data) # 获取授权信息 def get_pd(self, get): return public.get_pd(get) @staticmethod def set_backup_path(get): try: backup_path = get.backup_path.strip().rstrip("/") except AttributeError: return public.return_message(-1, 0, public.lang("The parameter is incorrect")) if not os.path.exists(backup_path): return public.return_message(-1, 0, public.lang("The specified directory does not exist")) if backup_path[-1] == "/": backup_path = backup_path[:-1] import files try: from BTPanel import session except: session = None fs = files.files() if not fs.CheckDir(get.backup_path): return public.return_message(-1, 0, public.lang("You cannot use the system critical directory as the default backup directory")) if session is not None: session['config']['backup_path'] = os.path.join('/', backup_path) db_backup = backup_path + '/database' site_backup = backup_path + '/site' if not os.path.exists(db_backup): try: os.makedirs(db_backup, 384) except: public.ExecShell('mkdir -p ' + db_backup) if not os.path.exists(site_backup): try: os.makedirs(site_backup, 384) except: public.ExecShell('mkdir -p ' + site_backup) public.M('config').where("id=?", ('1',)).save('backup_path', (get.backup_path,)) public.WriteLog('TYPE_PANEL', 'PANEL_SET_SUCCESS', (get.backup_path,)) public.restart_panel() return public.return_message(0, 0, public.lang("The setup was successful")) def get_soft_status(self, get): if not hasattr(get, 'name'): return public.return_message(-1, 0, public.lang("Parameter error")) s_status = False status = False setup = False name = get.name.strip() if name == 'web': name = public.get_webserver() version = '' if name == 'sqlite': status = True if name in ['mysql', 'pgsql', 'sqlserver', 'mongodb', 'redis']: count = public.M('database_servers').where("LOWER(db_type)=LOWER(?)", (name,)).count() if count > 0: status = True if os.path.exists('/www/server/{}'.format(name)) and len(os.listdir('/www/server/{}'.format(name))) > 2: if not public.M('tasks').where("name like ? and status == -1", ('安装%{}%'.format(name.replace('-', '')),)).count() > 0: status = True setup = True if name == 'openlitespeed': status = os.path.exists('/usr/local/lsws/bin/lswsctrl') setup = status if status: path_data = { "nginx": "/www/server/nginx/logs/nginx.pid", "mysql": "/www/server/data/localhost.localdomain.pid", "apache": "/www/server/apache/logs/httpd.pid", "pure-ftpd": "/var/run/pure-ftpd.pid", "redis": "/www/server/redis/redis.pid", "pgsql": "/www/server/pgsql/data_directory/postmaster.pid", "openlitespeed": "/tmp/lshttpd/lshttpd.pid", "mongodb": "/www/server/mongodb/log/configsvr.pid", } if name == 'mysql': datadir = public.get_datadir() if datadir: path_data["mysql"] = "{}/{}.pid".format(datadir, public.get_hostname()) if name in path_data.keys(): if os.path.exists(path_data[name]): pid = public.readFile(path_data[name]) if pid: try: psutil.Process(int(pid)) s_status = True except: pass else: # 可能会存在用户修改主机名后 找不到pid文件的情况 if name == 'mysql' and not s_status: for proc in psutil.process_iter(): if proc.name() == 'mysqld': s_status = True public.writeFile(path_data['mysql'], str(proc.pid)) break version_data = { "nginx": '/www/server/nginx/version.pl', "mysql": "/www/server/mysql/version.pl", "pgsql": "/www/server/pgsql/data/PG_VERSION", "apache": "/www/server/apache/version.pl", "pure-ftpd": "/www/server/pure-ftpd/version.pl", "openlitespeed": "/usr/local/lsws/VERSION", "redis": "/www/server/redis/version.pl", "mongodb": "/www/server/mongodb/version.pl", "memcached": "/usr/local/memcached/version_check.pl", } if name in version_data.keys(): if os.path.exists(version_data[name]): version = public.readFile(version_data[name]).strip() title_data = { "nginx": "Nginx", "mysql": "MySQL", "pgsql": "PostgreSQL", "mongodb": "MongoDB", "redis": "Redis", "apache": "Apache", "openlitespeed": "OpenLiteSpeed", "pure-ftpd": "Pure-FTPd", "memcached": "Memcached", } s_version_data = { 'mysql': 'mysqld', 'apache': 'httpd', } data = { "status": status, "s_status": s_status, "msg": '', "version": version, "name": name.replace('-', ''), "title": title_data.get(name, name), "admin": os.path.exists('/www/server/panel/plugin/' + name), "s_version": s_version_data.get(name, name), "setup": setup } return public.return_message(0, 0,data)
Close