コード例 #1
0
    def webCustomPath(raw_path):
        if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
        mimetype = request.args.get('mimetype')

        path = Path('extensions') / raw_path

        if path.is_file() == False:
            return 'No file at selected path'
        
        filenameLower = path.name.lower()

        if mimetype == None:
            if filenameLower[-5:].lower() == '.html':
                with open(path, 'r') as f:
                    try: return render_template_string(f.read())
                    except Exception: pass
            mimetype = getMimetype(filenameLower)

        if mimetype != None:
            return send_file(path, mimetype=mimetype)
        else:
            with open (path, 'r') as f:
                try: return f.read()
                except Exception: pass
        return 'Unknown file :( Try using http://url/path/file?mimetype=file_mimetype (preferably, use %2F instead of /, as an example, image/png (png) becomes image%2Fpng)'
コード例 #2
0
 def sioSendMessage(data=''):
     if not localIP(request.environ, currentIP): return False
     success, msg = chat.addMessage(data)
     if success:
         sio.emit('SendMessage', {'type':'success', 'success': True}, room=request.sid)
     else:
         sio.emit('SendMessage', {'type':'error', 'success': False, 'message': msg}, room=request.sid)
コード例 #3
0
    def sioCrossTalk(data=''):
        if not localIP(request.environ, currentIP): return False

        success, msg = extensions.crossTalk(data)
        if success:
            sio.emit('CrossTalk', {'type':'success', 'success': True}, room=request.sid)
        else:
            sio.emit('CrossTalk', {'type':'error', 'success': False, 'message': msg}, room=request.sid)
コード例 #4
0
    def sioStreamElementsAPI(data=''):
        if not localIP(request.environ, currentIP): return False
        
        success, msg = SE.APIRequest(data)

        if success:
            sio.emit('StreamElementsAPI', {'type':'success', 'success': True, 'response': msg}, room=request.sid)
        else:
            sio.emit('StreamElementsAPI', {'type':'error', 'success': False, 'message': msg}, room=request.sid)
コード例 #5
0
 def webAddRegular():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     try:
         message = json.loads(request.data.decode('UTF-8'))
     except Exception:
         return json.dumps({'type':'error', 'success': False, 'message':'Please forward json... requests.post(url, json={"user":"******"})'})
     if users.addRegular(message):
         return json.dumps({'type':'error', 'success': False, 'message':'Please forward json... requests.post(url, json={"user":"******"})'})
     else:
         return json.dumps({'type':'success', 'success': True})
コード例 #6
0
 def webStreamElementsAPI():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     try:
         message = json.loads(request.data.decode('UTF-8'))
     except Exception:
         return json.dumps({'type':'error', 'message':'Please forward json... requests.post(url, json=JSON_DATA)'})
     success, msg = SE.APIRequest(message)
     if success:
         return json.dumps({'type':'success', 'success': True, 'response': msg})
     else:
         return json.dumps({'type':'error', 'success': False, 'message': msg})
コード例 #7
0
 def webCrossTalk():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     try:
         message = json.loads(request.data.decode('UTF-8'))
     except Exception:
         return json.dumps({'type':'error', 'success': False, 'message':'Please forward json... requests.post(url, json={\"event\":\"p-example\", \"data\": [\"example\", \"of\", \"data\"]})'})
     success, msg = extensions.crossTalk(message)
     if success:
         return json.dumps({'type':'success', 'success': True})
     else:
         return json.dumps({'type':'error', 'success': False, 'message': msg})
コード例 #8
0
 def webSendMessage():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     try:
         message = json.loads(request.data.decode('UTF-8'))
     except Exception:
         return json.dumps({'type':'error', 'success': False, 'message':'Please forward json... requests.post(url, json={\"message\":\"this is my message\", \"bot\": \"local\"})'})
     success, msg = chat.addMessage(message)
     if success:
         return json.dumps({'type':'success', 'success': True})
     else:
         return json.dumps({'type':'error', 'success': False, 'message': msg})
コード例 #9
0
 def sioSaveSettings(data=''):
     if not localIP(request.environ, currentIP): return False
     if not isinstance(data, dict):
         sio.emit('SaveSettings', json.dumps({'success': False}), room=request.sid)
         return
     if not 'name' in data or not isinstance(data['name'], str) or not 'index' in data or not isinstance(data['index'], int) or not 'settings' in data or not isinstance(data['settings'], dict):
         data['success'] = False
         sio.emit('SaveSettings', json.dumps(data), room=request.sid)
         return
     extensions.updateSettings(data['index'], data['name'], data['settings'])
     data['success'] = True
     sio.emit('SaveSettings', json.dumps(data), room=request.sid)
コード例 #10
0
 def sioToggleExtension(data=''):
     if not localIP(request.environ, currentIP): return False
     if not isinstance(data, dict):
         sio.emit('ToggleExtension', json.dumps({'success': False}), room=request.sid)
         return
     if not 'module' in data or not isinstance(data['module'], str) or not 'active' in data or not isinstance(data['active'], bool):
         data['success'] = False
         sio.emit('ToggleExtension', json.dumps(data), room=request.sid)
         return
     extensions.toggle(data['module'], data['active'])
     data['success'] = True
     sio.emit('ToggleExtension', json.dumps(data), room=request.sid)
コード例 #11
0
    def sioUpdateSettings(data=''):
        if not localIP(request.environ, currentIP): return False
        if not isinstance(data, dict): return

        setTwitchData = False
        setSEData = False

        for key in data:
            if validateSetting(key, data[key]):
                settings[key] = data[key]
                if key in ['tmi', 'twitch_channel', 'tmi_twitch_username']: setTwitchData = True
                if key in ['jwt_token', 'user_id', 'SEListener']: setSEData = True
        
        if setTwitchData: chat.setTwitchData(tmi=settings['tmi'], tmi_username=settings['tmi_twitch_username'], twitch_channel=settings['twitch_channel'])
        
        if setSEData: SE.setData(jwt=settings['jwt_token'], method=settings['SEListener'])
        
        saveSettings(settings)
        sio.emit('UpdateSettings', data, room=request.sid)
コード例 #12
0
 def sioResetExtensions(data=''):
     if not localIP(request.environ, currentIP): return False
     extensions.resetExtensions()
     sio.emit('ResetExtensions', room=request.sid)
コード例 #13
0
 def sioRestartSE(data=''):
     if not localIP(request.environ, currentIP): return False
     state, cooldown = SE.start()
     sio.emit('RestartSE', {'state': state, 'cooldown': cooldown}, room=request.sid)
コード例 #14
0
 def sioAddRegular(data=''):
     if not localIP(request.environ, currentIP): return False
     if not isinstance(data, str) or len(data) == 0:
         return
     users.removeRegular(data)
     sio.emit('DeleteRegular', data, room=request.sid)
コード例 #15
0
 def sioClearLogs(data=''):
     if not localIP(request.environ, currentIP): return False
     extensions.log.clear()
コード例 #16
0
 def sioClearEvents(data=''):
     if not localIP(request.environ, currentIP): return False
     chat.twitchMessagesHistory.clear()
コード例 #17
0
 def webUrlJs():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     path = Path('dependencies/data/url.js')
     if not path.is_file:
         return ''
     return send_file(path, 'text/javascript')
コード例 #18
0
 def sioOnConnect(data=''):
     if not localIP(request.environ, currentIP): return False
     print(data)
コード例 #19
0
 def sioClearEvents(data=''):
     if not localIP(request.environ, currentIP): return False
     SE.eventHistory.clear()
コード例 #20
0
 def webRoot():
     if not localIP(request.environ, currentIP): return NO_ACCESS_STRING
     return render_template('index.html', extensions=extensions.dump(), ExtensionsSettings=extensions.settings, events=SE.eventHistory, messages=chat.twitchMessagesHistory, ExtensionLogs=extensions.log, regulars=users.regulars, settings=settings)