Beispiel #1
0
 def remote_access_enabled(self):
     pms_connect = pmsconnect.PmsConnect()
     pref = pms_connect.get_server_pref(pref='PublishServerOnPlexOnlineKey')
     return helpers.bool_true(pref)
Beispiel #2
0
    def _api_validate(self, *args, **kwargs):
        """ Sets class vars and remove unneeded parameters. """

        if not plexpy.CONFIG.API_ENABLED:
            self._api_msg = 'API not enabled'
            self._api_response_code = 404

        elif not plexpy.CONFIG.API_KEY:
            self._api_msg = 'API key not generated'
            self._api_response_code = 401

        elif len(plexpy.CONFIG.API_KEY) != 32:
            self._api_msg = 'API key not generated correctly'
            self._api_response_code = 401

        elif 'apikey' not in kwargs:
            self._api_msg = 'Parameter apikey is required'
            self._api_response_code = 401

        elif 'cmd' not in kwargs:
            self._api_msg = 'Parameter cmd is required. Possible commands are: %s' % ', '.join(
                self._api_valid_methods)
            self._api_response_code = 400

        elif 'cmd' in kwargs and kwargs.get(
                'cmd') not in self._api_valid_methods:
            self._api_msg = 'Unknown command: %s. Possible commands are: %s' % (
                kwargs.get('cmd', ''), ', '.join(
                    sorted(self._api_valid_methods)))
            self._api_response_code = 400

        self._api_callback = kwargs.pop('callback', None)
        self._api_apikey = kwargs.pop('apikey', None)
        self._api_cmd = kwargs.pop('cmd', None)
        self._api_debug = kwargs.pop('debug', False)
        self._api_profileme = kwargs.pop('profileme', None)
        # Allow override for the api.
        self._api_out_type = kwargs.pop('out_type', 'json')

        if 'app' in kwargs and helpers.bool_true(kwargs.pop('app')):
            self._api_app = True

        if plexpy.CONFIG.API_ENABLED and not self._api_msg or self._api_cmd in (
                'get_apikey', 'docs', 'docs_md'):
            if not self._api_app and self._api_apikey == plexpy.CONFIG.API_KEY:
                self._api_authenticated = True

            elif self._api_app and self._api_apikey == mobile_app.get_temp_device_token() and \
                    self._api_cmd == 'register_device':
                self._api_authenticated = True

            elif self._api_app and mobile_app.get_mobile_device_by_token(
                    self._api_apikey):
                mobile_app.set_last_seen(self._api_apikey)
                self._api_authenticated = True

            else:
                self._api_msg = 'Invalid apikey'
                self._api_response_code = 401

            if self._api_authenticated and self._api_cmd in self._api_valid_methods:
                self._api_msg = None
                self._api_kwargs = kwargs

            elif not self._api_authenticated and self._api_cmd in (
                    'get_apikey', 'docs', 'docs_md'):
                self._api_authenticated = True
                # Remove the old error msg
                self._api_msg = None
                self._api_kwargs = kwargs

        if self._api_msg:
            logger.api_debug('Tautulli APIv2 :: %s.' % self._api_msg)

        logger.api_debug('Tautulli APIv2 :: Cleaned kwargs: %s' %
                         self._api_kwargs)

        return self._api_kwargs