def changePassword(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'listFTPAccounts') == 0: return ACLManager.loadErrorJson('changePasswordStatus', 0) data = json.loads(self.request.body) userName = data['ftpUserName'] password = data['passwordByPass'] admin = Administrator.objects.get(pk=userID) ftp = Users.objects.get(user=userName) if currentACL['admin'] == 1: pass elif ftp.domain.admin != admin: return ACLManager.loadErrorJson() FTPUtilities.changeFTPPassword(userName, password) data_ret = {'status': 1, 'changePasswordStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'changePasswordStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitFTPDelete(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'deleteFTPAccount') == 0: return ACLManager.loadErrorJson('deleteStatus', 0) data = json.loads(self.request.body) ftpUserName = data['ftpUsername'] admin = Administrator.objects.get(pk=userID) ftp = Users.objects.get(user=ftpUserName) if ftp.domain.admin != admin: return ACLManager.loadErrorJson() FTPUtilities.submitFTPDeletion(ftpUserName) final_json = json.dumps({'status': 1, 'deleteStatus': 1, 'error_message': "None"}) return HttpResponse(final_json) except BaseException, msg: data_ret = {'status': 0, 'deleteStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def listFTPJson(self, virtualHostName): try: records = FTPUtilities.getFTPRecords(virtualHostName) json_data = "[" checker = 0 for items in records: dic = { 'id': items.id, 'username': items.user, 'path': items.dir } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps(json_data) print final_json except BaseException, msg: logger.writeforCLI(str(msg), "Error", stack()[0][3]) print 0
def changeFTPPassword(self, userName, password): try: result = FTPUtilities.changeFTPPassword(userName, password) if result[0] == 1: self.printStatus(1, 'None') else: self.printStatus(1, result[1]) except BaseException, msg: logger.writeforCLI(str(msg), "Error", stack()[0][3]) self.printStatus(0, str(msg))
def deleteFTPAccount(self, userName): try: result = FTPUtilities.submitFTPDeletion(userName) if result[0] == 1: self.printStatus(1, 'None') else: self.printStatus(1, result[1]) except BaseException, msg: logger.writeforCLI(str(msg), "Error", stack()[0][3]) self.printStatus(0, str(msg))
def createFTPAccount(self, domain, userName, password, owner): try: result = FTPUtilities.submitFTPCreation(domain, userName, password, 'None', owner) if result[0] == 1: self.printStatus(1, 'None') else: self.printStatus(1, result[1]) except BaseException, msg: logger.writeforCLI(str(msg), "Error", stack()[0][3]) self.printStatus(0, str(msg))
def submitFTPCreation(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'createFTPAccount') == 0: return ACLManager.loadErrorJson('creatFTPStatus', 0) data = json.loads(self.request.body) userName = data['ftpUserName'] password = data['passwordByPass'] domainName = data['ftpDomain'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadError() try: api = data['api'] except: api = '0' admin = Administrator.objects.get(id=userID) try: path = data['path'] if len(path) > 0: pass else: path = 'None' except: path = 'None' result = FTPUtilities.submitFTPCreation(domainName, userName, password, path, admin.userName, api) if result[0] == 1: data_ret = {'status': 1, 'creatFTPStatus': 1, 'error_message': 'None'} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = {'status': 0, 'creatFTPStatus': 0, 'error_message': result[1]} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'creatFTPStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def changePassword(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'listFTPAccounts') == 0: return ACLManager.loadErrorJson('changePasswordStatus', 0) data = json.loads(self.request.body) userName = data['ftpUserName'] password = data['ftpPassword'] FTPUtilities.changeFTPPassword(userName, password) data_ret = {'status': 1, 'changePasswordStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'changePasswordStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitFTPDelete(request): try: val = request.session['userID'] admin = Administrator.objects.get(id=val) try: if request.method == 'POST': data = json.loads(request.body) ftpUserName = data['ftpUsername'] ftp = Users.objects.get(user=ftpUserName) if admin.type != 1: if ftp.domain.admin != admin: data_ret = { 'deleteStatus': 0, 'error_message': 'Not enough privileges.' } json_data = json.dumps(data_ret) return HttpResponse(json_data) FTPUtilities.submitFTPDeletion(ftpUserName) final_json = json.dumps({ 'deleteStatus': 1, 'error_message': "None" }) return HttpResponse(final_json) except BaseException, msg: data_ret = {'deleteStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError, msg: data_ret = {'deleteStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def listFTPPretty(self, virtualHostName): try: from prettytable import PrettyTable records = FTPUtilities.getFTPRecords(virtualHostName) table = PrettyTable(['ID', 'User', 'Path']) for items in records: table.add_row([items.id, items.user, items.dir]) print table except BaseException, msg: logger.writeforCLI(str(msg), "Error", stack()[0][3]) print 0
def changePassword(request): try: val = request.session['userID'] admin = Administrator.objects.get(id=val) try: if request.method == 'POST': data = json.loads(request.body) userName = data['ftpUserName'] password = data['ftpPassword'] ftp = Users.objects.get(user=userName) if admin.type != 1: if ftp.domain.admin != admin: data_ret = { 'changePasswordStatus': 0, 'error_message': 'Not enough privileges.' } json_data = json.dumps(data_ret) return HttpResponse(json_data) FTPUtilities.changeFTPPassword(userName, password) data_ret = {'changePasswordStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'changePasswordStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError, msg: data_ret = {'changePasswordStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitFTPCreation(request): try: val = request.session['userID'] try: if request.method == 'POST': data = json.loads(request.body) userName = data['ftpUserName'] password = data['ftpPassword'] path = data['path'] path = path.lstrip("/") if len(path) > 0: path = "/home/" + data['ftpDomain'] + "/public_html/" + path if not os.path.exists(path): os.makedirs(path) if FTPUtilities.changePermissions("/home/" + data['ftpDomain']) == 0: data_ret = { 'creatFTPStatus': 0, 'error_message': "Can not change directory permissions." } json_data = json.dumps(data_ret) return HttpResponse(json_data) else: path = "/home/" + data['ftpDomain'] if FTPUtilities.changePermissions(path) == 0: data_ret = { 'creatFTPStatus': 0, 'error_message': "Can not change directory permissions." } json_data = json.dumps(data_ret) return HttpResponse(json_data) website = Websites.objects.get(domain=data['ftpDomain']) hash = hashlib.md5() hash.update(password) admin = Administrator.objects.get(pk=request.session['userID']) userName = admin.userName + "_" + userName if website.package.ftpAccounts == 0: user = Users(domain=website, user=userName, password=hash.hexdigest(), uid=2001, gid=2001, dir=path, quotasize=website.package.diskSpace, status="1", ulbandwidth=500000, dlbandwidth=500000, date=datetime.now()) user.save() data_ret = {'creatFTPStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) elif website.users_set.all().count( ) < website.package.ftpAccounts: user = Users(domain=website, user=userName, password=hash.hexdigest(), uid=2001, gid=2001, dir=path, quotasize=website.package.diskSpace, status="1", ulbandwidth=500000, dlbandwidth=500000, date=datetime.now()) user.save() data_ret = {'creatFTPStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = { 'creatFTPStatus': 0, 'error_message': "Exceeded maximum amount of FTP accounts allowed for the package." } json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'creatFTPStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError, msg: data_ret = {'creatFTPStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)