import socketio
import eventlet
import sqlite3
-import re
+from re import match as re_match
from datetime import date
-import os
+from os import getenv
+from sys import path as sys_path
# Create a Socket.IO server (CORS arg required on server, not locally)
-sio = socketio.Server()
-#sio = socketio.Server(cors_allowed_origins='URL or *')
+MODE = getenv('RPSLS_MODE')
+allowed_origin = 'https://rpsls.auder.net' if MODE=='production' else '*'
+sio = socketio.Server(cors_allowed_origins=allowed_origin)
-RPSLS_PATH = './' #edit if launched from elsewhere
-DB_PATH = RPSLS_PATH + 'db/rpsls.sqlite'
+RPSLS_PATH = sys_path[0]
+DB_PATH = RPSLS_PATH + '/db/rpsls.sqlite'
searching = {} #someone seeks a game? (uid + sid)
connected = {} #map uid --> sid (seek stage)
@sio.event
def login(sid, data):
""" When user sends name from /login page """
- if not re.match(r"^[a-zA-Z]{3,}$", data):
+ if not re_match(r"^[a-zA-Z]{3,}$", data):
sio.emit("login", {"err": "Name: letters only"}, room=sid)
return
con = sqlite3.connect(DB_PATH)
con.commit()
con.close()
+@sio.event
+def inc_pts(sid, data):
+ """ Add a point to the player (who won last round) """
+ con = sqlite3.connect(DB_PATH)
+ cur = con.cursor()
+ cur.execute("update Players set points=points+1 where uid=? and gid=?",
+ (data["uid"],data["gid"]))
+ con.commit()
+ con.close()
+
static_files = {
- '/': RPSLS_PATH + 'index.html',
- '/rpsls.js': RPSLS_PATH + 'rpsls.js',
- '/favicon.ico': RPSLS_PATH + 'favicon.ico',
- '/assets': RPSLS_PATH + 'assets'
+ '/': RPSLS_PATH + '/index.html',
+ '/rpsls.js': RPSLS_PATH + '/rpsls.js',
+ '/favicon.ico': RPSLS_PATH + '/favicon.ico',
+ '/assets': RPSLS_PATH + '/assets'
}
-PORT = os.getenv('RPSLS_PORT')
+PORT = getenv('RPSLS_PORT')
if PORT is None:
PORT = "8000"
PORT = int(PORT)