Пример #1
0
    def __init__(self, ctx, site, force=False):
        """
        Initialize a new Installer instance
        @type   ctx:    ips_vagrant.cli.Context
        @param  site:   The IPS Site we are installing
        @type   site:   ips_vagrant.models.sites.Site
        @param  force:  Overwrite existing files / databases
        @type   force:  bool
        """
        self.log = logging.getLogger('ipsv.installer')
        self.ctx = ctx
        self.force = force
        self._previous_title = None
        self.url = '{scheme}://{host}/admin/install'.format(
            scheme='https' if site.ssl else 'http', host=site.domain.name)
        self.site = site
        self.mysql = create_engine('mysql://*****:*****@localhost')

        self._sessions = {}

        self.cookiejar = cookiejar()
        self.cookies = {cookie.name: cookie.value for cookie in self.cookiejar}

        self.browser = Browser()
        self.browser.set_cookiejar(self.cookiejar)
Пример #2
0
    def _request(self, url, method='get', params=None, raise_request=True):
        """
        Perform a standard HTTP request
        @type   url:            str
        @type   method:         str
        @type   params:         dict or None
        @param  raise_request:  Raise exceptions for HTTP status errors
        @type   raise_request:  bool
        @rtype: requests.Response
        """
        if 'http' in self._sessions:
            http = self._sessions['http']
        else:
            self.log.debug('Instantiating a new HTTP session')
            http = requests.Session()
            http.cookies.update(cookiejar())
            http.verify = False
            self._sessions['http'] = http

        response = http.request(method, url, params)
        self.log.debug('HTTP response code: %s', response.status_code)
        if raise_request:
            response.raise_for_status()

        return response
Пример #3
0
    def _ajax(self,
              url,
              method='get',
              params=None,
              load_json=True,
              raise_request=True):
        """
        Perform an Ajax request
        @type   url:        str
        @type   method:     str
        @type   params:     dict or None
        @type   load_json:  bool
        @return:    Tuple with the decoded JSON response and actual response, or just the response if load_json is False
        @rtype:     requests.Response or tuple of (dict or list, requests.Response)
        """
        if 'ajax' in self._sessions:
            ajax = self._sessions['ajax']
        else:
            self.log.debug('Instantiating a new Ajax session')
            ajax = requests.Session()
            ajax.headers.update({'X-Requested-With': 'XMLHttpRequest'})
            ajax.cookies.update(cookiejar())
            ajax.verify = False
            self._sessions['ajax'] = ajax

        response = ajax.request(method, url, params)
        self.log.debug('Ajax response: %s', response.text)
        if raise_request:
            response.raise_for_status()

        if load_json:
            return byteify(json.loads(response.text)), response

        return response
Пример #4
0
    def __init__(self, ctx, site, force=False):
        """
        Initialize a new Installer instance
        @type   ctx:    ips_vagrant.cli.Context
        @param  site:   The IPS Site we are installing
        @type   site:   ips_vagrant.models.sites.Site
        @param  force:  Overwrite existing files / databases
        @type   force:  bool
        """
        self.log = logging.getLogger('ipsv.installer')
        self.ctx = ctx
        self.force = force
        self._previous_title = None
        self.url = '{scheme}://{host}/admin/install'.format(
            scheme='https' if site.ssl else 'http', host=site.domain.name
        )
        self.site = site
        self.mysql = create_engine('mysql://*****:*****@localhost')

        self._sessions = {}

        self.cookiejar = cookiejar()
        self.cookies = {cookie.name: cookie.value for cookie in self.cookiejar}

        self.browser = Browser()
        self.browser.set_cookiejar(self.cookiejar)
Пример #5
0
    def _request(self, url, method='get', params=None, raise_request=True):
        """
        Perform a standard HTTP request
        @type   url:            str
        @type   method:         str
        @type   params:         dict or None
        @param  raise_request:  Raise exceptions for HTTP status errors
        @type   raise_request:  bool
        @rtype: requests.Response
        """
        if 'http' in self._sessions:
            http = self._sessions['http']
        else:
            self.log.debug('Instantiating a new HTTP session')
            http = requests.Session()
            http.cookies.update(cookiejar())
            http.verify = False
            self._sessions['http'] = http

        response = http.request(method, url, params)
        self.log.debug('HTTP response code: %s', response.status_code)
        if raise_request:
            response.raise_for_status()

        return response
Пример #6
0
    def _ajax(self, url, method='get', params=None, load_json=True, raise_request=True):
        """
        Perform an Ajax request
        @type   url:        str
        @type   method:     str
        @type   params:     dict or None
        @type   load_json:  bool
        @return:    Tuple with the decoded JSON response and actual response, or just the response if load_json is False
        @rtype:     requests.Response or tuple of (dict or list, requests.Response)
        """
        if 'ajax' in self._sessions:
            ajax = self._sessions['ajax']
        else:
            self.log.debug('Instantiating a new Ajax session')
            ajax = requests.Session()
            ajax.headers.update({'X-Requested-With': 'XMLHttpRequest'})
            ajax.cookies.update(cookiejar())
            ajax.verify = False
            self._sessions['ajax'] = ajax

        response = ajax.request(method, url, params)
        self.log.debug('Ajax response: %s', response.text)
        if raise_request:
            response.raise_for_status()

        if load_json:
            return byteify(json.loads(response.text)), response

        return response
Пример #7
0
    def __init__(self, ctx):
        """
        Initialize a new Login Handler instance
        @type   ctx:    ips_vagrant.cli.Context
        """
        # Debug log
        self.log = logging.getLogger('ipsv.login')

        self.cookiejar = cookiejar()
        self.cookies = {cookie.name: cookie.value for cookie in self.cookiejar}

        self.browser = Browser()
        self.browser.set_cookiejar(self.cookiejar)