示例#1
0
    def add_slackconf(self):
        """
        Add slack details into YAML.

        - **parameters**, **types**, **return** and **return types**::

          :return: Returns slack dictionary
          :rtype: dictionary

        """
        slacknotifications = (
            "\nDo you want notifications to "
            "Slack Channel [" +
            self.prevdata('SlackNotifications', self.globalprevdata) +
            "]:(Yes/No)")
        slacknotifications = self.get_input(slacknotifications,
                                            choices=["yes", "no"])
        usrname = self.prevdata('Slack.username', self.userprevdata)
        channelname = self.prevdata('Slack.channelname', self.globalprevdata)
        token = self.prevdata('Slack.token', self.userprevdata)
        prevtoken = token
        if token:
            token = AESCipher().decrypt(token)
            prevtoken = token
        if slacknotifications.lower() == 'yes':
            if token:
                token = AESCipher().decrypt(token)
                prevtoken = token
            usrname = "Enter username[" + usrname + "]:"
            usrname = self.get_input(usrname)
            channelname = "Enter slack channelname [" + channelname + "]: "
            channelname = self.get_input(channelname)
            while True:
                token = "enter Slack token[" + prevtoken + "]: "
                token = self.get_input(token)
                if token:
                    token = AESCipher().encrypt(token)
                    break
                else:
                    logger.warn("token cannot be empty. Please re-enter.")
        else:
            token = token
        slack_dict = {'Slack': {'username': usrname, 'token': token}}
        globalslack_dict = {
            'SlackNotifications': slacknotifications,
            'Slack': {
                'channelname': channelname
            }
        }
        return slack_dict, globalslack_dict
示例#2
0
 def __init__(self):
     self.db = db()
     filepath = os.path.join(os.path.expanduser('~'), "user_info.yaml")
     globalfilepath = os.path.join(os.path.expanduser('~'),
                                   "global_conf.yaml")
     userdata = get_data_from_yaml(filepath)
     glob_data = get_data_from_yaml(globalfilepath)
     self.dbserver = glob_data['Database']['serverip']
     self.username = userdata['Database']['serverusername']
     self.password = AESCipher().decrypt(
         userdata['Database']['serverpassword'])
     self.servertype = glob_data['Database']['serverOStype']
示例#3
0
 def get_password(self, strng, prevpass):
     while True:
         pwd = getpass.getpass(strng)
         if pwd:
             password = AESCipher().encrypt(pwd)
             break
         else:
             if prevpass:
                 password = prevpass
                 break
             else:
                 logger.warn("No password in global conf to use."
                             "Please enter password.")
     return password
示例#4
0
def sys_decode():
    '''{ "Description": "AES Decrypt ", "Methods":"GET, POST", "Content-Type":"application/json",
         "Parameters":[
             {"Description":"data", "Name":"data", "Required":true}
         ]
    }'''
    try:
        req_params = {'data': ['required']}
        _params = get_parameter(**req_params)

        decrypt = AESCipher(Config.SYS_AES_KEY).decrypt(_params['data'])
        result = {'result': decrypt}
        rs = {'status': 200, 'message': 'OK', 'data': result}
        return api_response(**rs)
    except Exception as e:
        rs = {'status': 400, 'message': str(e), 'data': []}
        return api_response(**rs)
示例#5
0
def encode():
    '''{ "Description": "AES Encrypt", "Methods":"GET, POST", "Content-Type":"application/json",
         "Parameters":[
             {"Description":"key", "Name":"key", "Required":true},
             {"Description":"data", "Name":"data", "Required":true}
         ]
    }'''
    try:
        req_params = {}
        req_params['key'] = ['required']
        req_params['data'] = ['required']

        _params = get_parameter(**req_params)

        encrypt = AESCipher(_params['key']).encrypt(_params['data'])
        result = {'result': encrypt}
        rs = {'status': 200, 'message': 'OK', 'data': result}
        return api_response(**rs)

    except Exception as e:
        rs = {'status': 400, 'message': str(e), 'data': []}
        return api_response(**rs)
示例#6
0
    def __init__(self, logfilepath):
        """
            Gets username,password and ipaddress of webserver

            - **parameters**, **types**, **return** and **return types**::

                param logfilepath: file path to be pushed to web server
                type logfilepath: String
        """
        #filepath is user_info.yaml file path
        #globalfilepath is global_conf.yaml file path
        filepath = os.path.join(os.path.expanduser('~'), "user_info.yaml")
        globalfilepath = os.path.join(os.path.expanduser('~'),
                                      "global_conf.yaml")
        userdata = get_data_from_yaml(filepath)
        self.glob_data = get_data_from_yaml(globalfilepath)
        self.path = '/var/www/html/sutas-logs/'
        #Eg:logfilepath "C:\Users\admin\Sutas_Logs\test_suite_980_2017Sep18_162033\log.html"
        self.source = logfilepath
        self.serverip = self.glob_data['TestArtifact']['serverip']
        self.username = userdata['TestArtifact']['username']
        if self.glob_data['EnableTestArtifacts'].lower() == "yes":
            self.password = AESCipher().decrypt(
                userdata['TestArtifact']['password'])
示例#7
0
#3.[l]list all the files on ftp site
#4.[f]search a file on ftp site,return True or Flase
#5.[h]show help info

#add upload and download operations  20111210 version0.1
#add md5sum after ops 20120308 version0.2

import sys, os, ftplib, socket
from lib.utils import logger
from lib.AESCipher import AESCipher
from settings import Config
import io

NIS_TEMP_PATH = Config.NAS0_TEMP_PATH
__const_host = Config.NAS0_IP
__const_username = AESCipher(Config.SYS_AES_KEY).decrypt(Config.NAS0_USER_ID)
__const_pwd = AESCipher(Config.SYS_AES_KEY).decrypt(Config.NAS0_PASSWOED)
__const_buffer_size = 8192


def connect():
    try:
        ftp = ftplib.FTP(__const_host)
        ftp.login(__const_username, __const_pwd)
        return ftp
    except Exception as e:
        logger.error(str(e))
        raise Exception(
            "FTP is unavailable,please check the host,username and password!")

示例#8
0
    def dump_data(self):
        """
        This will dump the data taken from commandline arguments
        in to config files and validates the data.
        """
        slacktoken = ''
        jirapwd = ''
        dbpassword = ''
        dbserverpwd = ''
        if self.prevdata('Slack.token', self.userprevdata):
            slacktoken = AESCipher().decrypt(
                self.prevdata('Slack.token', self.userprevdata))
        if self.prevdata('Jira.password', self.userprevdata):
            jirapwd = AESCipher().decrypt(
                self.prevdata('Jira.password', self.userprevdata))
        if self.prevdata('Database.pwd', self.userprevdata):
            dbpassword = AESCipher().decrypt(
                self.prevdata('Database.pwd', self.userprevdata))
        if self.prevdata('Database.serverpassword', self.userprevdata):
            dbserverpwd = AESCipher().decrypt(
                self.prevdata('Database.serverpassword', self.userprevdata))
        if self.prevdata('TestArtifact.password', self.userprevdata):
            testartifactspwd = AESCipher().decrypt(
                self.prevdata('TestArtifact.password', self.userprevdata))
        else:
            testartifactspwd = ''

        userargs = {
            'symmetrickey':
            self.prevdata('symmetric_key', self.globalprevdata),
            'raisebugs':
            self.prevdata('Raise_Bugs', self.globalprevdata),
            'jiraurl':
            self.prevdata('Jira.url', self.globalprevdata),
            'jirausr':
            self.prevdata('Jira.username', self.userprevdata),
            'jirapwd':
            jirapwd,
            'jira_affect_version':
            self.prevdata('Jira.affects_version', self.globalprevdata),
            'jira_watcher':
            self.prevdata('Jira.watcher', self.globalprevdata),
            'jiraenv':
            self.prevdata('environment', self.globalprevdata),
            'jiraproj':
            self.prevdata('Jira.project', self.globalprevdata),
            'jirabugpriority':
            self.prevdata('Jira.bugpriority', self.globalprevdata),
            'jirabugseverity':
            self.prevdata('Jira.bugseverity', self.globalprevdata),
            'slack':
            self.prevdata('SlackNotifications', self.globalprevdata),
            'slacktoken':
            slacktoken,
            'slackusr':
            self.prevdata('Slack.username', self.userprevdata),
            'slackchannel':
            self.prevdata('Slack.channelname', self.globalprevdata),
            'loglevel':
            self.prevdata('LogLevel', self.globalprevdata),
            'emailnotifications':
            self.prevdata('EmailNotifications', self.globalprevdata),
            'emails':
            self.prevdata('Email.recipients', self.globalprevdata),
            'validateemails':
            self.prevdata('Email.ValidateEmails', self.globalprevdata),
            'smtpip':
            self.prevdata('Email.smtpip', self.globalprevdata),
            'smtpport':
            self.prevdata('Email.smtpport', self.globalprevdata),
            'consolidatedmail':
            self.prevdata('Consolidatedmail', self.globalprevdata),
            'send_mail_only_if_failed':
            self.prevdata('send_mail_only_if_failed', self.globalprevdata),
            'teamsnotifications':
            self.prevdata('TeamsNotifications', self.globalprevdata),
            'teamsurl':
            self.prevdata('Teams.url', self.globalprevdata),
            'enabledatabase':
            self.prevdata('EnableDatabase', self.globalprevdata),
            'dbusername':
            self.prevdata('Database.username', self.userprevdata),
            'dbpassword':
            dbpassword,
            'databasename':
            self.prevdata('Database.database_name', self.globalprevdata),
            'dbserverip':
            self.prevdata('Database.serverip', self.globalprevdata),
            'dbserveruser':
            self.prevdata('Database.serverusername', self.userprevdata),
            'dbserverpwd':
            dbserverpwd,
            'serverostype':
            self.prevdata('Database.serverOStype', self.globalprevdata),
            'dbprune':
            self.prevdata('Database.prune', self.userprevdata),
            'enabletestmanagement':
            self.prevdata('EnableTestManagement', self.globalprevdata),
            'sprintnumber':
            self.prevdata('sprint_number', self.globalprevdata),
            'fixversion':
            self.prevdata('fix_version', self.globalprevdata),
            'tm_project':
            self.prevdata('TM_Project', self.globalprevdata),
            'enablepushtestartifacts':
            self.prevdata('EnableTestArtifacts', self.globalprevdata),
            'testaritfactsserverip':
            self.prevdata('TestArtifact.serverip', self.globalprevdata),
            'testaritfactsserveruser':
            self.prevdata('TestArtifact.susername', self.userprevdata),
            'testaritfactsserverpwd':
            testartifactspwd
        }
        for key, value in list(vars(self.args).items()):
            if value:
                value = value.replace('"', '')
                value = value.replace("'", '')
            userargs[key] = value
        for key, value in list(userargs.items()):
            if str(userargs[key]).lower().strip() == 'none':
                userargs[key] = None
        passwordlist = [
            'jirapwd', 'dbserverpwd', 'dbpassword', 'testaritfactsserverpwd'
        ]
        flag = False
        for key in userargs:
            if key in passwordlist:
                flag = True
                break
        if flag:
            if not userargs['symmetrickey']:
                raise Exception("--symmetrickey is mandatory when --jirapwd "
                                "or --dbserverpwd or --dbpassword or"
                                "--testaritfactsserverpwd is used")

        glob_details = {
            "symmetric_key": userargs['symmetrickey'],
            'sprint_number': userargs['sprintnumber'],
            'fix_version': userargs['fixversion'],
            'TM_Project': userargs['tm_project'],
            'environment': userargs['jiraenv']
        }
        self._update_dict(self.globalfilepath, glob_details)
        password = AESCipher().encrypt(userargs['jirapwd'])
        try:
            project = eval(userargs['jiraproj'])
        except SyntaxError as TypeError:
            project = userargs['jiraproj']
        global_dict = {
            'Raise_Bugs': userargs['raisebugs'],
            'EnableTestManagement': userargs['enabletestmanagement'],
            'Jira': {
                'url': userargs['jiraurl'],
                'project': project,
                'bugseverity': userargs['jirabugseverity'],
                'bugpriority': userargs['jirabugpriority'],
                'affects_version': userargs['jira_affect_version'],
                'watcher': userargs['jira_watcher']
            }
        }
        logger.warn(global_dict)
        jira_dict = {
            'Jira': {
                'username': userargs['jirausr'],
                'password': password
            }
        }
        self._update_dict(self.filepath, jira_dict)
        self._update_dict(self.globalfilepath, global_dict)
        token = AESCipher().encrypt(userargs['slacktoken'])
        slack_dict = {
            'Slack': {
                'username': userargs['slackusr'],
                'token': token
            }
        }
        globalslack_dict = {
            'SlackNotifications': userargs['slack'],
            'Slack': {
                'channelname': userargs['slackchannel']
            }
        }
        globalteams_dict = {
            'TeamsNotifications': userargs['teamsnotifications'],
            'Teams': {
                'url': userargs['teamsurl']
            }
        }
        email_dict = {
            'EmailNotifications': userargs['emailnotifications'],
            'Email': {
                'recipients': userargs['emails'],
                'ValidateEmails': userargs['validateemails'],
                'smtpip': userargs['smtpip'],
                'smtpport': userargs['smtpport']
            },
            'Consolidatedmail': userargs['consolidatedmail'],
            'send_mail_only_if_failed': userargs['send_mail_only_if_failed']
        }
        dbpassword = AESCipher().encrypt(userargs['dbpassword'])
        dbserverpwd = AESCipher().encrypt(userargs['dbserverpwd'])
        db_dict = {
            'Database': {
                'username': userargs['dbusername'],
                'pwd': dbpassword,
                'serverusername': userargs['dbserveruser'],
                'serverpassword': dbserverpwd
            }
        }
        globdb_dict = {
            'EnableDatabase': userargs['enabledatabase'],
            'Database': {
                'database_name': userargs['databasename'],
                'serverip': userargs['dbserverip'],
                'prune': userargs['dbprune'],
                'serverOStype': userargs['serverostype']
            }
        }

        globtestartifacts_dict = {
            'EnableTestArtifacts': userargs['enablepushtestartifacts'],
            'TestArtifact': {
                'serverip': userargs['testaritfactsserverip']
            },
        }
        testartifactspwd = AESCipher().encrypt(
            userargs['testaritfactsserverpwd'])
        testartifacts_dict = {
            'TestArtifact': {
                'username': userargs['testaritfactsserveruser'],
                'password': testartifactspwd
            }
        }
        '''
        create and update dict for test environment variable
        '''
        self._update_dict(self.filepath, slack_dict)
        self._update_dict(self.globalfilepath, globalslack_dict)
        self._update_dict(self.globalfilepath, globalteams_dict)
        self._update_dict(self.globalfilepath, email_dict)
        self._update_dict(self.filepath, db_dict)
        self._update_dict(self.globalfilepath, globdb_dict)
        self._update_dict(self.globalfilepath, globtestartifacts_dict)
        self._update_dict(self.filepath, testartifacts_dict)
        if not vars(self.args)['loglevel']:
            userargs['loglevel'] = 'warn'
        log_dict = {"LogLevel": userargs['loglevel']}
        self._update_dict(self.globalfilepath, log_dict)
        val_obj = ValidateUserConfig()
        val_obj.validate_jira()
        val_obj.validate_database()
        val_obj.ckeck_cronjob_in_appache_server()
        val_obj.validate_email()
        val_obj.validate_communication_channels()