Improve version checking

This commit is contained in:
Et0h 2014-11-29 17:30:29 +00:00
parent e3255d1b92
commit c8e3426547
4 changed files with 13 additions and 5 deletions

View File

@ -436,14 +436,14 @@ class SyncplayClient(object):
def requireMinVersionDecorator(f): def requireMinVersionDecorator(f):
@wraps(f) @wraps(f)
def wrapper(self, *args, **kwds): def wrapper(self, *args, **kwds):
if int(self.serverVersion.replace(".", "")) < int(minVersion.replace(".", "")): if not utils.meetsMinVersion(self.serverVersion,minVersion):
self.ui.showErrorMessage(u"This feature is not supported by the server. The feature requires a server running Syncplay {}+, but the server is running Syncplay {}.".format(minVersion, self.serverVersion)) self.ui.showErrorMessage(u"This feature is not supported by the server. The feature requires a server running Syncplay {}+, but the server is running Syncplay {}.".format(minVersion, self.serverVersion))
return return
return f(self, *args, **kwds) return f(self, *args, **kwds)
return wrapper return wrapper
return requireMinVersionDecorator return requireMinVersionDecorator
@requireMinServerVersion("1.3.0") @requireMinServerVersion(constants.CONTROLLED_ROOMS_MIN_VERSION)
def createControlledRoom(self, roomName): def createControlledRoom(self, roomName):
controlPassword = utils.RandomStringGenerator.generate_room_password() controlPassword = utils.RandomStringGenerator.generate_room_password()
self.ui.showMessage(u"Attempting to create controlled room '{}' with password '{}'...".format(roomName, controlPassword)) self.ui.showMessage(u"Attempting to create controlled room '{}' with password '{}'...".format(roomName, controlPassword))
@ -463,7 +463,7 @@ class SyncplayClient(object):
else: else:
return "" return ""
@requireMinServerVersion("1.3.0") @requireMinServerVersion(constants.CONTROLLED_ROOMS_MIN_VERSION)
def identifyAsController(self, controlPassword): def identifyAsController(self, controlPassword):
controlPassword = self.stripControlPassword(controlPassword) controlPassword = self.stripControlPassword(controlPassword)
self.ui.showMessage(getMessage("identifying-as-controller-notification").format(controlPassword)) self.ui.showMessage(getMessage("identifying-as-controller-notification").format(controlPassword))

View File

@ -52,6 +52,7 @@ COMMANDS_AUTH = ['a','auth']
MPC_MIN_VER = "1.6.4" MPC_MIN_VER = "1.6.4"
VLC_MIN_VERSION = "2.0.0" VLC_MIN_VERSION = "2.0.0"
VLC_INTERFACE_MIN_VERSION = "0.2.1" VLC_INTERFACE_MIN_VERSION = "0.2.1"
CONTROLLED_ROOMS_MIN_VERSION = "1.3.0"
MPC_PATHS = [ MPC_PATHS = [
r"C:\Program Files (x86)\MPC-HC\mpc-hc.exe", r"C:\Program Files (x86)\MPC-HC\mpc-hc.exe",
r"C:\Program Files\MPC-HC\mpc-hc.exe", r"C:\Program Files\MPC-HC\mpc-hc.exe",

View File

@ -11,7 +11,7 @@ import codecs
import os import os
from string import Template from string import Template
import argparse import argparse
from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion
class SyncFactory(Factory): class SyncFactory(Factory):
def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None): def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None):
@ -42,7 +42,7 @@ class SyncFactory(Factory):
def getMotd(self, userIp, username, room, clientVersion): def getMotd(self, userIp, username, room, clientVersion):
oldClient = False oldClient = False
if constants.WARN_OLD_CLIENTS: if constants.WARN_OLD_CLIENTS:
if int(clientVersion.replace(".", "")) < int(constants.RECENT_CLIENT_THRESHOLD.replace(".", "")): if not meetsMinVersion(clientVersion, constants.RECENT_CLIENT_THRESHOLD):
oldClient = True oldClient = True
if self._motdFilePath and os.path.isfile(self._motdFilePath): if self._motdFilePath and os.path.isfile(self._motdFilePath):
tmpl = codecs.open(self._motdFilePath, "r", "utf-8-sig").read() tmpl = codecs.open(self._motdFilePath, "r", "utf-8-sig").read()

View File

@ -210,6 +210,13 @@ def sameFileduration (duration1, duration2):
else: else:
return False return False
def meetsMinVersion(version, minVersion):
def versiontotuple(ver):
return tuple(map(int, ver.split(".")))
versionTuple = versiontotuple(version)
minVersionTuple = versiontotuple(minVersion)
return versionTuple >= minVersionTuple
class RoomPasswordProvider(object): class RoomPasswordProvider(object):
CONTROLLED_ROOM_REGEX = re.compile("^\+(.*):(\w{12})$") CONTROLLED_ROOM_REGEX = re.compile("^\+(.*):(\w{12})$")
PASSWORD_REGEX = re.compile("[A-Z]{2}-\d{3}-\d{3}") PASSWORD_REGEX = re.compile("[A-Z]{2}-\d{3}-\d{3}")