Initialisation

This commit is contained in:
Marin190 2024-11-24 22:14:51 +01:00
commit 58525ee3c1
5 changed files with 233 additions and 0 deletions

21
ssl/cert.pem Normal file
View File

@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDgTCCAmmgAwIBAgIUVyGdBuDwaKQLcWW2XwCKZqhhhfMwDQYJKoZIhvcNAQEL
BQAwUDELMAkGA1UEBhMCRlIxDjAMBgNVBAgMBVBhcmlzMQ4wDAYDVQQHDAVQYXJp
czEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTI0MTEyMzE3
MjU0M1oXDTI1MTEyMzE3MjU0M1owUDELMAkGA1UEBhMCRlIxDjAMBgNVBAgMBVBh
cmlzMQ4wDAYDVQQHDAVQYXJpczEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ
dHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtfNa1MqyIM2
6LozipkFa8m/kNb09V44uRnlnMxuD5+uzv0IW0DOHyYNmcmU9ceARlhwp01BOwQc
AygMDlhJ19R2DA2VsqS1HdbO15l6X0pMtbu1ftwVFsIOIz2x3bIbh715Cb49Zdj+
H7TZcIi+ENVJlZdWqmvtCGzerzdOzCU1sI7kZQlH3awGY7jeMdv/YwwkSlBQ8KuO
3snXHcJl4UdzuWI8An6Mq7Z1mcL+RUDCAOUREZaoSbzbH1s/8HBrzENWfbvTxgu+
Tf4y4tk0qs0ZJWPtC/w+V2wfXxCSzHJbqcL93z/bAY00XY+dpQyJdaXRETYYimpE
T+sPeHr+wQIDAQABo1MwUTAdBgNVHQ4EFgQUp7zxpRlQ3xKOuQywYuVpKaMg7HMw
HwYDVR0jBBgwFoAUp7zxpRlQ3xKOuQywYuVpKaMg7HMwDwYDVR0TAQH/BAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEAecDaMLcLbbdKWfkMYscA9Dv8EoMQJxyFtzmx
NmMCW4uj907crCnD0DUXDisQZftApEUd1XxghG/si2lS3pE5108zHH0CGY9oWvup
XZL78JoTiFOjekuoHW7U4Y9Wc/0lQGFYQlPKPVtY2aLS2gHRmL/3ZPi/ovkdf27r
aG2sbUULAKwnEk1/ZedFiKQC2BAgluxuWJY2dJa2SsBfKjntVuozHpKqGFkvEGxS
SN0Ry1/bQOkjaxPooeImCABsOSXSbwKjbEDN6d3WAhACMENm8E9ZdbY5EF3Dbtl3
1MvVs9HZ7jGeYh/SJs4blr1nX3lsu0aoF+3n3JiozgnlAxiAiA==
-----END CERTIFICATE-----

28
ssl/key.pem Normal file
View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDC181rUyrIgzbo
ujOKmQVryb+Q1vT1Xji5GeWczG4Pn67O/QhbQM4fJg2ZyZT1x4BGWHCnTUE7BBwD
KAwOWEnX1HYMDZWypLUd1s7XmXpfSky1u7V+3BUWwg4jPbHdshuHvXkJvj1l2P4f
tNlwiL4Q1UmVl1aqa+0IbN6vN07MJTWwjuRlCUfdrAZjuN4x2/9jDCRKUFDwq47e
ydcdwmXhR3O5YjwCfoyrtnWZwv5FQMIA5RERlqhJvNsfWz/wcGvMQ1Z9u9PGC75N
/jLi2TSqzRklY+0L/D5XbB9fEJLMclupwv3fP9sBjTRdj52lDIl1pdERNhiKakRP
6w94ev7BAgMBAAECggEAHq3quTG+/JQWnwYErBfkn+CEQqrqJsGHhnPSsQIKeXjQ
BmUWvgGiAwsTnKm+RAX+B3WRBXLXaNLAk2monlCeDfc1ADhaYCbpotFqP835lAwH
sJzmGtvOEUeMgNWLzmfnSFQX/SYAlmsYtobcLwlE/jMLU1vhSFPWnps/5BB+Howd
6p+nC2mAjl6Xk7bvFg9Mi5WBSiLQ2KY5A5fkf/sj3jMFtT/ADykVi+wovRdnFEA9
xrbgx33Ox32YHu9gitmv5C2UxxWk0+KBtb/QpW0ROqAlY6Y08m9ttIzwv1GbBEOS
uS8jf5lq6I/ZvZh0gvUAp7OxvdWbVQIi5aAgIPT8HQKBgQDsPdd3iuaLxNY2kYoZ
VciEKtKeDPOxjk9D7H+VUROXFQmGM/nF0tleylymd4RbkSkRAudg49NTAl3Alhm6
H0bsskKcflk8MlkQBh3sp/R6/Ou51q/N78f1Lz5CP4y19fIu6XlYC3082zyc9xj6
XeXitrdqfUTxEbHB5ywUaDVOrQKBgQDTI5PHM4SMG+66AEA58olRFgzpCk9+T0/9
ecGpbpH45RCmOO6ljyigII53YBzBiTj6EklKbpWMp79eTGoUAsjptgu+DkjGfPjE
amIlltIHVGanJnmcBWo7xgdkPVtH5NTOwN/E1M95bZmzBOOBTKIZcl8Mjh2rA14E
s1SqeQPW5QKBgQC796SmICW6Ff7fYkPATsoBp1T3npSTtQiKofUNqHnu3zU5y8cz
yMVdr6OybCwq8z/6ohXZuMxfIuXXo1aLCfHTyS5I+BsmU2Ub49IRh7110iH5NsGh
GOU/x7xA1/Gsoil1fB0pmdKnBkWfGtiL9QRBtGIR3+Rn701BXB9tiVDI7QKBgFZJ
QNh0zmNv+uTau2SzILkZmNcYFpqZESiWvLVgcZlVC7PSqnzQf5rJE0/n4HibesR/
+qHHhaiA2W1RLzzUUoVol23paoZrhkLG8ytHcrf6HyWKTMKdV+frqxOlG4vLEckY
+5n2GoAWcWy+v7cUuV5K5ls8LRW5f4/ONfihEhedAoGAKgHDuzjayfnCsMqtzcS/
1tQH/KQrYEev/szDW7nnGPWRK06Sv4+N8n3nP3Kplc6WPtxmmMAJ12gOtGQ49tG4
Xa7WNpflF+dROw0psbaN0COh5BY90PnNIP7QNyQCxkVo+OAVOBfCFUzVMlc++iZ0
N6kfPnZhohhMIqeI7XIB20o=
-----END PRIVATE KEY-----

121
templates/index.html Normal file
View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Phone Mouse Controller</title>
<style>
* {
margin: 0;
box-sizing: border-box;
}
body {
height: 100dvh;
}
#mouse {
position: fixed;
bottom: 20px;
width: 95%;
margin-left: 2.5%;
border: 5px solid black;
height: 300px;
border-radius: 25px;
display: grid;
place-items: center;
}
#leftClick {
position: fixed;
bottom: 330px;
width: 45%;
height: 50px;
margin-left: 2.5%;
border: 2px solid black;
border-radius: 15px;
font-weight: bold;
display: grid;
place-items: center;
}
#mouse svg {
width: 50px
}
#textForm {
padding: 30px 2.5% 0 2.5%;
display: flex;
flex-direction: column;
gap: 10px
}
#textForm textarea {
padding: 8px;
height: 200px;
border: 2px solid black;
border-radius: 15px;
width: 100%;
max-width: 100%;
min-width: 100%;
}
#textForm input {
width: 45%;
height: 50px;
border-radius: 15px;
border: 2px solid black;
background: white;
align-self: end;
font-weight: bold;
}
</style>
<script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>
</head>
<body>
<form id="textForm">
<textarea id="text" type="text" id="sendtext"></textarea>
<input type="submit" value="Send"/>
</form>
<div id="leftClick">
Left Click
</div>
<div id="mouse">
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path d="M12 9V7M12 21C8.68629 21 6 18.3137 6 15V9C6 5.68629 8.68629 3 12 3C15.3137 3 18 5.68629 18 9V15C18 18.3137 15.3137 21 12 21Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </g></svg>
</div>
<script>
const socket = io();
if (window.DeviceOrientationEvent) {
window.addEventListener('deviceorientation', (event) => {
const data = {
alpha: event.alpha,
beta: event.beta,
gamma: event.gamma
};
socket.emit('orientation_data', data);
});
document.getElementById("leftClick").addEventListener('click', (event) => {
socket.emit('left');
})
document.getElementById("mouse").addEventListener('touchstart', (event) => {
socket.emit('touchstart');
})
document.getElementById("mouse").addEventListener('touchend', (event) => {
socket.emit('touchend');
})
document.getElementById("textForm").addEventListener('submit', (event) => {
event.preventDefault();
socket.emit('text', document.getElementById("text").value);
})
} else {
alert('Device Orientation not supported on your device/browser.');
}
</script>
</body>
</html>

19
templates/style.css Normal file
View File

@ -0,0 +1,19 @@
* {
margin: 0;
box-sizing: border-box;
}
body {
height: 100dvh;
}
#mouse {
position: fixed;
bottom: 0;
width: 95%;
margin-left: 2.5%;
border: 2px solid black;
border-bottom: 0px;
height: 450px;
border-radius: 150px 150px 0 0;
}

44
webserver.py Normal file
View File

@ -0,0 +1,44 @@
from flask import Flask, render_template
from flask_socketio import SocketIO
import pyautogui
pyautogui.FAILSAFE = False
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('text')
def handle_typewrite(text):
pyautogui.typewrite(text)
@socketio.on('touchstart')
def handle_mouseDown():
pyautogui.mouseDown()
@socketio.on('touchend')
def handle_mouseUp():
pyautogui.mouseUp()
@socketio.on('left')
def handle_leftClick():
pyautogui.click(button='right')
@socketio.on('orientation_data')
def handle_orientation_data(data):
alpha = data.get('alpha', 0)
beta = data.get('beta', 0)
gamma = data.get('gamma', 0)
sensitivity = 0.4
move_x = int(gamma * sensitivity)
move_y = -int(beta * sensitivity)
pyautogui.move(move_x, move_y)
if __name__ == '__main__':
socketio.run(app, host='0.0.0.0', port=5000, ssl_context=('ssl/cert.pem', 'ssl/key.pem'))