def setIpv6Black(): args = getArgs() data = checkArgs(args, ['addr']) if not data[0]: return data[1] addr = args['addr'].replace('_', ':') path = getRuleJsonPath('ipv6_black') content = mw.readFile(path) content = json.loads(content) content.append(addr) cjson = mw.getJson(content) mw.writeFile(path, cjson) return mw.returnJson(True, '设置成功!')
def setRetry(): args = getArgs() data = checkArgs(args, ['retry', 'retry_time', 'retry_cycle', 'is_open_global']) if not data[0]: return data[1] conf = getJsonPath('config') content = mw.readFile(conf) cobj = json.loads(content) cobj['retry'] = args cjson = mw.getJson(cobj) mw.writeFile(conf, cjson) return mw.returnJson(True, '设置成功!', [])
def getSiteRule(): args = getArgs() data = checkArgs(args, ['siteName', 'ruleName']) if not data[0]: return data[1] siteName = args['siteName'] siteRule = args['ruleName'] path = getJsonPath('site') content = mw.readFile(path) content = json.loads(content) r = content[siteName][siteRule] cjson = mw.getJson(r) return mw.returnJson(True, 'ok!', cjson)
def setObjStatus(): args = getArgs() data = checkArgs(args, ['obj', 'statusCode']) if not data[0]: return data[1] conf = getJsonPath('config') content = mw.readFile(conf) cobj = json.loads(content) o = args['obj'] status = args['statusCode'] cobj[o]['status'] = status cjson = mw.getJson(cobj) mw.writeFile(conf, cjson) return mw.returnJson(True, '设置成功!')
def getAllUser(search=''): svn_auth_file = getServerDir() + '/data/conf/svn_auth_file' if not os.path.exists(svn_auth_file): return mw.getJson([]) auth = mw.readFile(svn_auth_file) auth = auth.strip() auth_list = auth.split("\n") ulist = [] for x in range(len(auth_list)): tmp = auth_list[x].split(':') if search != '': if tmp[0].find(search) != -1: ulist.append(tmp[0]) else: ulist.append(tmp[0]) return ulist
def removeSiteCdnHeader(): args = getArgs() data = checkArgs(args, ['siteName', 'cdn_header']) if not data[0]: return data[1] path = getJsonPath('site') content = mw.readFile(path) content = json.loads(content) siteName = args['siteName'] retData = {} if siteName in content: content[siteName]['cdn_header'].remove(args['cdn_header']) cjson = mw.getJson(content) mw.writeFile(path, cjson) return mw.returnJson(True, '删除成功!')
def getList(self, page, limit): start = (page - 1) * limit _list = mw.M('firewall').field('id,port,ps,addtime').limit( str(start) + ',' + str(limit)).order('id desc').select() data = {} data['data'] = _list count = mw.M('firewall').count() _page = {} _page['count'] = count _page['tojs'] = 'showAccept' _page['p'] = page data['page'] = mw.getPage(_page) return mw.getJson(data)
def removeIpBlack(): args = getArgs() data = checkArgs(args, ['index']) if not data[0]: return data[1] index = args['index'] path = getRuleJsonPath('ip_black') content = mw.readFile(path) content = json.loads(content) k = content[int(index)] content.remove(k) cjson = mw.getJson(content) mw.writeFile(path, cjson) return mw.returnJson(True, '设置成功!')
def addSiteRule(): args = getArgs() data = checkArgs(args, ['siteName', 'ruleName', 'ruleValue']) if not data[0]: return data[1] siteName = args['siteName'] siteRule = args['ruleName'] ruleValue = args['ruleValue'] path = getJsonPath('site') content = mw.readFile(path) content = json.loads(content) content[siteName][siteRule].append(ruleValue) cjson = mw.getJson(content) mw.writeFile(path, cjson) return mw.returnJson(True, '设置成功!')
def setObjOpen(): args = getArgs() data = checkArgs(args, ['obj']) if not data[0]: return data[1] conf = getJsonPath('config') content = mw.readFile(conf) cobj = json.loads(content) o = args['obj'] if cobj[o]["open"]: cobj[o]["open"] = False else: cobj[o]["open"] = True cjson = mw.getJson(cobj) mw.writeFile(conf, cjson) return mw.returnJson(True, '设置成功!')
def myDbStatus(): result = {} db = pMysqlDb() data = db.query('show variables') isError = isSqlError(data) if isError != None: return isError gets = ['table_open_cache', 'thread_cache_size', 'query_cache_type', 'key_buffer_size', 'query_cache_size', 'tmp_table_size', 'max_heap_table_size', 'innodb_buffer_pool_size', 'innodb_additional_mem_pool_size', 'innodb_log_buffer_size', 'max_connections', 'sort_buffer_size', 'read_buffer_size', 'read_rnd_buffer_size', 'join_buffer_size', 'thread_stack', 'binlog_cache_size'] result['mem'] = {} for d in data: for g in gets: if d[0] == g: result['mem'][g] = d[1] if result['mem']['query_cache_type'] != 'ON': result[ 'mem']['query_cache_size'] = '0' return mw.getJson(result)
def removeSiteRule(): args = getArgs() data = checkArgs(args, ['siteName', 'ruleName', 'index']) if not data[0]: return data[1] siteName = args['siteName'] siteRule = args['ruleName'] index = args['index'] path = getJsonPath('site') content = mw.readFile(path) content = json.loads(content) ruleValue = content[siteName][siteRule][int(index)] content[siteName][siteRule].remove(ruleValue) cjson = mw.getJson(content) mw.writeFile(path, cjson) return mw.returnJson(True, '设置成功!')
def removeRule(): args = getArgs() data = checkArgs(args, ['ruleName', 'index']) if not data[0]: return data[1] index = int(args['index']) ruleName = args['ruleName'] fpath = getRuleJsonPath(ruleName) content = mw.readFile(fpath) content = json.loads(content) k = content[index] content.remove(k) cjson = mw.getJson(content) mw.writeFile(fpath, cjson) return mw.returnJson(True, '设置成功!', content)
def projectScriptDebug(): args = getArgs() if not 'user' in args: return mw.returnJson(True, 'username missing') if not 'name' in args: return mw.returnJson(True, 'project name missing') user = args['user'] name = args['name'] + '.git' commit_log = getRootPath() + '/' + user + '/' + name + \ '/custom_hooks/sh.log' data = {} if os.path.exists(commit_log): data['status'] = True data['path'] = commit_log else: data['status'] = False data['msg'] = '没有日志文件' return mw.getJson(data)
def getLogList(self, page, limit, search=''): find_search = '' if search != '': find_search = "type like '%" + search + "%' or log like '%" + \ search + "%' or addtime like '%" + search + "%'" start = (page - 1) * limit _list = mw.M('logs').where(find_search, ()).field( 'id,type,log,addtime').limit(str(start) + ',' + str(limit)).order('id desc').select() data = {} data['data'] = _list count = mw.M('logs').where(find_search, ()).count() _page = {} _page['count'] = count _page['tojs'] = 'getLogs' _page['p'] = page data['page'] = mw.getPage(_page) return mw.getJson(data)
def getFtpList(): args = getArgs() page = 1 page_size = 10 search = '' if 'page' in args: page = int(args['page']) if 'page_size' in args: page_size = int(args['page_size']) if 'search' in args: search = args['search'] data = {} conn = pftpDB() limit = str((page - 1) * page_size) + ',' + str(page_size) # print limit, search condition = '' if not search == '': condition = "name like '%" + search + "%'" field = 'id,pid,name,password,path,status,ps,addtime' clist = conn.where(condition, ()).field(field).limit(limit).order('id desc').select() count = conn.where(condition, ()).count() _page = {} _page['count'] = count _page['p'] = page _page['row'] = page_size _page['tojs'] = 'ftpList' data['page'] = mw.getPage(_page) info = {} info['ip'] = mw.getLocalIp() info['port'] = getFtpPort() data['info'] = info data['data'] = clist return mw.getJson(data)
def listApi(self): p = request.form.get('p', '1') limit = request.form.get('limit', '10').strip() search = request.form.get('search', '').strip() start = (int(p) - 1) * int(limit) limit_str = str(start) + ',' + str(limit) _list = mw.M('tasks').where('', ()).field( 'id,name,type,status,addtime,start,end').limit(limit_str).order('id desc').select() _ret = {} _ret['data'] = _list count = mw.M('tasks').where('', ()).count() _page = {} _page['count'] = count _page['tojs'] = 'remind' _page['p'] = p _ret['page'] = mw.getPage(_page) return mw.getJson(_ret)
def getDbList(): args = getArgs() page = 1 page_size = 10 search = '' data = {} if 'page' in args: page = int(args['page']) if 'page_size' in args: page_size = int(args['page_size']) if 'search' in args: search = args['search'] conn = pSqliteDb('databases') limit = str((page - 1) * page_size) + ',' + str(page_size) condition = '' if not search == '': condition = "name like '%" + search + "%'" field = 'id,pid,name,username,password,accept,ps,addtime' clist = conn.where(condition, ()).field( field).limit(limit).order('id desc').select() count = conn.where(condition, ()).count() _page = {} _page['count'] = count _page['p'] = page _page['row'] = page_size _page['tojs'] = 'dbList' data['page'] = mw.getPage(_page) data['data'] = clist info = {} info['root_pwd'] = pSqliteDb('config').where( 'id=?', (1,)).getField('mysql_root') data['info'] = info return mw.getJson(data)
def initDomainInfo(): data = [] path_domains = getJsonPath('domains') _list = mw.M('sites').field('id,name,path').where( 'status=?', ('1', )).order('id desc').select() for i in range(len(_list)): tmp = {} tmp['name'] = _list[i]['name'] tmp['path'] = _list[i]['path'] _list_domain = mw.M('domain').field('name').where( 'pid=?', (_list[i]['id'], )).order('id desc').select() tmp_j = [] for j in range(len(_list_domain)): tmp_j.append(_list_domain[j]['name']) tmp['domains'] = tmp_j data.append(tmp) cjson = mw.getJson(data) mw.writeFile(path_domains, cjson)
def setCcConf(): args = getArgs() data = checkArgs(args, ['siteName', 'cycle', 'limit', 'endtime', 'is_open_global', 'increase']) if not data[0]: return data[1] conf = getJsonPath('config') content = mw.readFile(conf) cobj = json.loads(content) tmp = cobj['cc'] tmp['cycle'] = int(args['cycle']) tmp['limit'] = int(args['limit']) tmp['endtime'] = int(args['endtime']) tmp['is_open_global'] = args['is_open_global'] tmp['increase'] = args['increase'] cobj['cc'] = tmp cjson = mw.getJson(cobj) mw.writeFile(conf, cjson) return mw.returnJson(True, '设置成功!', [])
def setRuleState(): args = getArgs() data = checkArgs(args, ['ruleName', 'index']) if not data[0]: return data[1] index = int(args['index']) ruleName = args['ruleName'] fpath = getRuleJsonPath(ruleName) content = mw.readFile(fpath) content = json.loads(content) b = content[index][0] if b == 1: content[index][0] = 0 else: content[index][0] = 1 cjson = mw.getJson(content) mw.writeFile(fpath, cjson) return mw.returnJson(True, '设置成功!', content)
def setControl(self, stype, day): filename = 'data/control.conf' if stype == '0': mw.execShell("rm -f " + filename) elif stype == '1': _day = int(day) if _day < 1: return mw.returnJson(False, "设置失败!") mw.writeFile(filename, day) elif stype == 'del': if not mw.isRestart(): return mw.returnJson(False, '请等待所有安装任务完成再执行') os.remove("data/system.db") sql = db.Sql().dbfile('system') csql = mw.readFile('data/sql/system.sql') csql_list = csql.split(';') for index in range(len(csql_list)): sql.execute(csql_list[index], ()) return mw.returnJson(True, "监控服务已关闭") else: data = {} if os.path.exists(filename): try: data['day'] = int(mw.readFile(filename)) except: data['day'] = 30 data['status'] = True else: data['day'] = 30 data['status'] = False return mw.getJson(data) return mw.returnJson(True, "设置成功!")
def projectList(): import math args = getArgs() page = 1 page_size = 10 search = '' if 'page' in args: page = int(args['page']) if 'page_size' in args: page_size = int(args['page_size']) if 'search' in args: search = args['search'] dlist = getALlProjectList(search) dlist_sum = len(dlist) start = (page - 1) * page_size ret_data = dlist[start:start + page_size] ret_data = checkProjectListIsHasScript(ret_data) data = {} data['data'] = ret_data data['list'] = mw.getPage({ 'count': dlist_sum, 'p': page, 'row': 10, 'tojs': 'csvnProjectList' }) data['ip'] = mw.getLocalIp() data['port'] = getHttpPort() data['csvn_port'] = getCsvnPort() return mw.getJson(data)
def getTaskSpeedApi(self): tempFile = os.getcwd() + '/tmp/panelExec.log' freshFile = os.getcwd() + '/tmp/panelFresh' find = mw.M('tasks').where( 'status=? OR status=?', ('-1', '0')).field('id,type,name,execstr').find() if not len(find): return mw.returnJson(False, '当前没有任务队列在执行-2!') isTask = os.getcwd() + '/tmp/panelTask.pl' mw.writeFile(isTask, 'True') echoMsg = {} echoMsg['name'] = find['name'] echoMsg['execstr'] = find['execstr'] if find['type'] == 'download': import json try: tmp = mw.readFile(tempFile) if len(tmp) < 10: return mw.returnJson(False, '当前没有任务队列在执行-3!') echoMsg['msg'] = json.loads(tmp) echoMsg['isDownload'] = True except: mw.M('tasks').where("id=?", (find['id'], )).save('status', ('0', )) return mw.returnJson(False, '当前没有任务队列在执行-4!') else: echoMsg['msg'] = mw.getLastLine(tempFile, 10) echoMsg['isDownload'] = False echoMsg['task'] = mw.M('tasks').where( "status!=?", ('1', )).field('id,status,name,type').order("id asc").select() return mw.getJson(echoMsg)
def gogsEdit(): data = {} data['post_receive'] = getPluginDir() + '/hook/post-receive.tpl' data['commit'] = getPluginDir() + '/hook/commit.tpl' return mw.getJson(data)
def getLoadAverageApi(self): start = request.args.get('start', '') end = request.args.get('end', '') data = self.getLoadAverageData(start, end) return mw.getJson(data)
def getNetworkIoApi(self): start = request.args.get('start', '') end = request.args.get('end', '') data = self.getNetWorkIoData(start, end) return mw.getJson(data)
def rememoryApi(self): os.system('sync') scriptFile = mw.getRunDir() + '/script/rememory.sh' mw.execShell("/bin/bash " + scriptFile) data = self.getMemInfo() return mw.getJson(data)
def csvnEdit(): data = {} data['svn_access_file'] = getServerDir() + '/data/conf/svn_access_file' data['commit_tpl'] = getPluginDir() + '/hook/commit.tpl' data['post_commit_tpl'] = getPluginDir() + '/hook/post-commit.tpl' return mw.getJson(data)
def getGogsConf(): gets = [ { 'name': 'DOMAIN', 'type': -1, 'ps': '服务器域名' }, { 'name': 'ROOT_URL', 'type': -1, 'ps': '公开的完整URL路径' }, { 'name': 'HTTP_ADDR', 'type': -1, 'ps': '应用HTTP监听地址' }, { 'name': 'HTTP_PORT', 'type': -1, 'ps': '应用 HTTP 监听端口号' }, { 'name': 'START_SSH_SERVER', 'type': 2, 'ps': '启动内置SSH服务器' }, { 'name': 'SSH_PORT', 'type': -1, 'ps': 'SSH 端口号' }, { 'name': 'REQUIRE_SIGNIN_VIEW', 'type': 2, 'ps': '强制登录浏览' }, { 'name': 'ENABLE_CAPTCHA', 'type': 2, 'ps': '启用验证码服务' }, { 'name': 'DISABLE_REGISTRATION', 'type': 2, 'ps': '禁止注册,只能由管理员创建帐号' }, { 'name': 'ENABLE_NOTIFY_MAIL', 'type': 2, 'ps': '是否开启邮件通知' }, { 'name': 'FORCE_PRIVATE', 'type': 2, 'ps': '强制要求所有新建的仓库都是私有' }, { 'name': 'SHOW_FOOTER_BRANDING', 'type': 2, 'ps': 'Gogs推广信息' }, { 'name': 'SHOW_FOOTER_VERSION', 'type': 2, 'ps': 'Gogs版本信息' }, { 'name': 'SHOW_FOOTER_TEMPLATE_LOAD_TIME', 'type': 2, 'ps': 'Gogs模板加载时间' }, ] conf = mw.readFile(getConf()) result = [] for g in gets: rep = g['name'] + '\s*=\s*(.*)' tmp = re.search(rep, conf) if not tmp: continue g['value'] = tmp.groups()[0] result.append(g) return mw.getJson(result)