def sync(environ, start_response): """ Handle Sync requests """ local_params = None try: # Validate caller address logger.debug('Received request from %(REMOTE_ADDR)s', environ) if environ['REMOTE_ADDR'] not in settings['SYNC_POOL']: logger.info('Operation not permitted from IP %(REMOTE_ADDR)s', environ) logger.debug('Remote IP %s is not in allowed sync pool: %s', environ['REMOTE_ADDR'], settings['SYNC_POOL']) raise YKSyncError('ERROR Authorization failed for %(REMOTE_ADDR)s)' % environ) sync_params = parse_querystring(environ['QUERY_STRING']) logger.info('Received: %s', sync_params) synclib = Sync() local_params = synclib.sync_local(sync_params) output = 'OK' except YKSyncError as err: output = str(err) except Exception as err: logger.exception('ERROR: %s', err) output = 'BACKEND_ERROR' finally: return wsgi_response(output, start_response, apikey=''.encode(), extra=local_params)
def resync(environ, start_response): """ Handle Re-sync requests """ try: # Validate caller address if environ['REMOTE_ADDR'] not in settings['SYNC_POOL']: logger.info('Operation not permitted from IP %(REMOTE_ADDR)s', environ) raise YKSyncError('ERROR Authorization failed for %(REMOTE_ADDR)s)' % environ) # Parse query and check values resync_params = parse_querystring(environ['QUERY_STRING']) synclib = Sync() output = synclib.resync_local(resync_params) except YKSyncError as err: output = str(err) except Exception as err: logger.exception('ERROR: %s', err) output = '' finally: start_response('200 OK', [('Content-Type', 'text/plain')]) return [output.encode()]