Fixed sending motd and http reply

This commit is contained in:
Uriziel 2013-01-20 01:40:13 +01:00
parent c2f493951f
commit a938dabd7f
4 changed files with 8 additions and 6 deletions

View File

@ -58,3 +58,4 @@ UI_COMMAND_REGEX = r"^(?P<command>[^\ ]+)(?:\ (?P<parameter>.+))?"
UI_OFFSET_REGEX = r"^(?:o|offset)\ ?(?P<sign>[/+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$" UI_OFFSET_REGEX = r"^(?:o|offset)\ ?(?P<sign>[/+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$"
UI_SEEK_REGEX = r"^(?:s|seek)?\ ?(?P<sign>[+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$" UI_SEEK_REGEX = r"^(?:s|seek)?\ ?(?P<sign>[+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$"
PARSE_TIME_REGEX = r'(:?(?:(?P<hours>\d+?)[^\d\.])?(?:(?P<minutes>\d+?))?[^\d\.])?(?P<seconds>\d+?)(?:\.(?P<miliseconds>\d+?))?$' PARSE_TIME_REGEX = r'(:?(?:(?P<hours>\d+?)[^\d\.])?(?:(?P<minutes>\d+?))?[^\d\.])?(?P<seconds>\d+?)(?:\.(?P<miliseconds>\d+?))?$'
SERVER_MAX_TEMPLATE_LENGTH = 10000

View File

@ -106,7 +106,8 @@ en = {
"server-password-argument" : 'server password', "server-password-argument" : 'server password',
"server-isolate-room-argument" : 'should rooms be isolated?', "server-isolate-room-argument" : 'should rooms be isolated?',
"server-motd-argument": "path to file from which motd will be fetched", "server-motd-argument": "path to file from which motd will be fetched",
"server-messed-up-motd": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).",
"server-messed-up-motd-too-long": "Message of the Day is too long - maximum of {} chars, {} given.",
"server-http-reply-argument": "path to file from which http reply will be fetched", "server-http-reply-argument": "path to file from which http reply will be fetched",
"server-default-http-reply": "This server should not be requested with your browser, but with Syncplay software available from http://syncplay.pl", "server-default-http-reply": "This server should not be requested with your browser, but with Syncplay software available from http://syncplay.pl",

View File

@ -93,17 +93,17 @@ class SyncFactory(Factory):
tmpl = codecs.open(self._motdFilePath, "r", "utf-8-sig").read() tmpl = codecs.open(self._motdFilePath, "r", "utf-8-sig").read()
args = dict(version=syncplay.version, userIp=userIp, username=username, room=room) args = dict(version=syncplay.version, userIp=userIp, username=username, room=room)
try: try:
return Template(tmpl).substitute(args) motd = Template(tmpl).substitute(args)
return motd if len(motd) < constants.SERVER_MAX_TEMPLATE_LENGTH else getMessage("en", "server-messed-up-motd-too-long").format(constants.SERVER_MAX_TEMPLATE_LENGTH, len(motd))
except ValueError: except ValueError:
print getMessage("en", "server-messed-up-motd") return getMessage("en", "server-messed-up-motd-unescaped-placeholders")
return ""
else: else:
return "" return ""
def gethttpRequestReply(self): def gethttpRequestReply(self):
if(self._httpReplyFilePath and os.path.isfile(self._httpReplyFilePath)): if(self._httpReplyFilePath and os.path.isfile(self._httpReplyFilePath)):
tmpl = codecs.open(self._httpReplyFilePath, "r", "utf-8-sig").read() tmpl = codecs.open(self._httpReplyFilePath, "r", "utf-8-sig").read()
return tmpl return tmpl.encode('utf-8')
else: else:
return getMessage("en", "server-default-http-reply") return getMessage("en", "server-default-http-reply")

View File

@ -9,7 +9,7 @@ from syncplay.ui.ConfigurationGetter import ServerConfigurationGetter
argsGetter = ServerConfigurationGetter() argsGetter = ServerConfigurationGetter()
args = argsGetter.getConfiguration() args = argsGetter.getConfiguration()
if(not args.isolate_rooms): if(not args.isolate_rooms):
reactor.listenTCP(int(args.port), SyncFactory(args.password, args.motd_file)) reactor.listenTCP(int(args.port), SyncFactory(args.password, args.motd_file, args.http_reply_file))
else: else:
reactor.listenTCP(int(args.port), SyncIsolatedFactory(args.password, args.motd_file, args.http_reply_file)) reactor.listenTCP(int(args.port), SyncIsolatedFactory(args.password, args.motd_file, args.http_reply_file))
reactor.run() reactor.run()