Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for launcher.config XML changes and version bump to 0.2.2 #4

Open
wants to merge 29 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ebc3ab7
Fixes for WorldQueue.config XML Changes and version bump to 0.2.1
nwestfal Nov 25, 2014
8011cd2
Fixes for Update 15.1 changes to launcher.config.
nwestfal Dec 15, 2014
d0111c1
Fixes for update 15.1 (updated Changelog)
nwestfal Dec 15, 2014
514ff90
Update certificate chain.
clinew Jan 15, 2016
49511b9
Fix localization support.
hcjiv1 Jan 24, 2016
88d2f37
Fix whitespace issues caused by previous commit.
Arek75 Feb 5, 2016
1bb3eb3
Change default news language back from "" to "en".
Arek75 Feb 5, 2016
7c52180
Merge pull request #2 from Arek75/localization-changes
nwestfal Feb 5, 2016
493c829
Fixes for unicode errors on Python 3.x for Windows.
Arek75 Feb 5, 2016
07cbccd
Fix previous fix for Python 2.x
Arek75 Feb 6, 2016
e5c4167
Version bump and ChangeLog update.
nwestfal Feb 6, 2016
5735524
sync repo-nwestfal with github/nwestfal
Arek75 Feb 6, 2016
b83e4d3
Fixed uopen definition.
Arek75 Feb 6, 2016
54ae99d
Fixed whitespace errors, again.
Arek75 Feb 6, 2016
5178e90
Fix language list displaying non-languages in list.
Arek75 Feb 7, 2016
5fb0cae
Merge pull request #3 from Arek75/repo-nwestfal
nwestfal Feb 7, 2016
f5d1b61
Merge pull request #4 from Arek75/repo-clinew
nwestfal Feb 7, 2016
e91608f
Fix language list displaying non-languages in list.
Arek75 Feb 7, 2016
bc34bbc
Merge branch 'localization-changes' of https://github.com/Arek75/pylo…
Arek75 Feb 7, 2016
7f1c66c
Fixed a problem with the merge.
Arek75 Feb 7, 2016
e8f6c52
Removed some debugging code.
Arek75 Feb 7, 2016
666090f
Merge pull request #5 from Arek75/localization-changes
nwestfal Feb 7, 2016
1587627
typo
nwestfal Feb 9, 2016
00821cd
News feed fixes and widget palette adjustments. Verson bump to 0.2.4.
nwestfal Mar 25, 2016
20254cc
Fix news feed again, white space cleanup
nwestfal Mar 31, 2016
3eba1b8
Added code to handle local game client override in TurbineLauncher.ex…
nwestfal Jun 2, 2017
a9c9640
Update to new SSL certificate chain used by SSG
nwestfal Mar 17, 2018
77ae254
Added option to Game Settings to select game client. Version bump to
nwestfal Feb 12, 2020
19c0609
Update certificate chain after game update 29.5
nwestfal Apr 19, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,40 @@ Changes
Fix problems when path settings have trailing (back-)slashes.
Support for Python 3.x, PyQt 4.6+ and OpenSSL 1.x
Enable server authentication for better security (Python 3.2+ only currently)

0.2.1 Fixes for launcher.config XML Changes and version bump to 0.2.1
Fix for 20-Nov-2014 slight changes to WorldQueue.config by Turbine which
broke pylotro.

0.2.2 Fixes for Update 15.1 changes to launcher.config argument template. Turbine is now
using crashserverurl and DefaultUploadThrottleMbps in the argument template.
Version bump to 0.2.2.

0.2.3 Localization changes from hcjiv1 and Arek75. Turbine has removed the client local
files for each language. Now each language has a separate subdirectory. If
the client local file is not found then I (hcjiv1) pick languages based on those
subdirectories. Thanks to hcjiv1 and Arek75. Version bump to 0.2.3

0.2.4 News feed fixed - Apparently Turbine changed the content encoding of the news feed to
gzip and retrieving the news feed was failing. We now accept gzip content
encoding for the news feed by default and check the Content-Encoding header and
uncompress if content is gzip.
Also some palette adjustments to the widgets (darker theme)

0.2.5 Added code to check for local game client override in TurbineLauncher.exe.config in game
directory. This is to handle workaround from SSG for game client crashes on
Windows XP/Vista platforms that also affects Linux users running the game under
wine. For more information see link below.

https://www.lotro.com/forums/showthread.php?654273-Windows-XP-and-Vista-Launcher-Issues-Solution

0.2.6 Updated certificate chain to new SSL certificates after recent update (22.0.1 or possibly 22) update
by SSG broke authentication using the old certs.

0.2.7 Added option in Game Settings to select which game client to use.
The choices are 32-bit, 32-bit Legacy ("Awesomium"), and 64-bit. The 32-bit
Legacy Awesomium client is recommended for Linux users. Game client override
code that checked TurbineLauncher.exe.config has been removed since it is no
longer needed with this option.

0.2.8 Updated certificate chain after game update 29.5 invalidated old certs.
2 changes: 1 addition & 1 deletion PyLotRO.iss
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{EB42F98E-B61B-4EE7-AF06-CAAF8D1825A3}
AppName=PyLotRO
AppVerName=PyLotRO 0.2.0
AppVerName=PyLotRO 0.2.8
AppPublisher=AJackson
AppPublisherURL=http://www.lotrolinux.com
AppSupportURL=http://www.lotrolinux.com
Expand Down
1 change: 1 addition & 0 deletions PyLotROLauncher/CheckConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def __init__(self, parent, settings, homeDir, osType, rootDir):
self.osType = osType

self.winCheckConfig = QtGui.QDialog(parent)
self.winCheckConfig.setPalette(parent.palette())

uifile = None

Expand Down
2 changes: 1 addition & 1 deletion PyLotROLauncher/Information.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# coding=utf-8
Version = "0.2.0"
Version = "0.2.8"
Description = "LOTRO/DDO Launcher"
Author = "Alan Jackson"
Email = "[email protected]"
Expand Down
75 changes: 68 additions & 7 deletions PyLotROLauncher/MainWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import os
import sys
import xml.dom.minidom
import zlib
from PyQt4 import QtCore, QtGui, uic
from .SettingsWindow import SettingsWindow
from .SettingsWizard import SettingsWizard
Expand Down Expand Up @@ -83,6 +84,30 @@ def __init__(self):
self.uiMain = Ui_winMain()
self.uiMain.setupUi(self.winMain)

# Set window palette
self.palette = QtGui.QPalette()
self.palette.setColor(QtGui.QPalette.Base, QtCore.Qt.black)
self.palette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(22,21,21))
self.palette.setColor(QtGui.QPalette.ToolTipBase, QtGui.QColor(255,255,220))
self.palette.setColor(QtGui.QPalette.ToolTipText, QtCore.Qt.black)
self.palette.setColor(QtGui.QPalette.Window, QtGui.QColor(44,43,42))
self.palette.setColor(QtGui.QPalette.WindowText, QtCore.Qt.white)
self.palette.setColor(QtGui.QPalette.Text, QtCore.Qt.white)
self.palette.setColor(QtGui.QPalette.BrightText, QtCore.Qt.white)
self.palette.setColor(QtGui.QPalette.ButtonText, QtCore.Qt.white)
self.palette.setColor(QtGui.QPalette.Button, QtGui.QColor(44,43,42))
self.winMain.setPalette(self.palette)

# find menubar object and save it so we can find the menus
for child in self.winMain.children():
if isinstance(child, QtGui.QMenuBar):
self.menubar = child

# find menu objects and set the palette on them
for child in self.menubar.children():
if isinstance(child, QtGui.QMenu):
child.setPalette(self.palette)

self.webMainExists = True
try:
self.webMain = QtWebKit.QWebView(self.uiMain.centralwidget)
Expand Down Expand Up @@ -162,6 +187,7 @@ def actionCheckSelected(self):

def actionAboutSelected(self):
dlgAbout = QtGui.QDialog(self.winMain)
dlgAbout.setPalette(self.winMain.palette())

uifile = None

Expand Down Expand Up @@ -198,11 +224,13 @@ def actionPatchSelected(self):
def actionOptionsSelected(self):
winSettings = SettingsWindow(self.winMain, self.settings.hiResEnabled, self.settings.app,
self.settings.wineProg, self.settings.wineDebug, self.settings.patchClient,
self.settings.winePrefix, self.settings.gameDir, self.valHomeDir, self.osType, self.rootDir)
self.settings.winePrefix, self.settings.gameDir, self.valHomeDir, self.osType, self.rootDir,
self.settings.gameClientIdx)

self.hideWinMain()
if winSettings.Run() == QtGui.QDialog.Accepted:
self.settings.hiResEnabled = winSettings.getHiRes()
self.settings.gameClientIdx = winSettings.getGameClientIdx()
self.settings.app = winSettings.getApp()
self.settings.patchClient = winSettings.getPatchClient()
self.settings.gameDir = winSettings.getGameDir()
Expand All @@ -226,6 +254,7 @@ def actionWizardSelected(self):
self.settings.usingDND = winWizard.getUsingDND()
self.settings.usingTest = winWizard.getUsingTest()
self.settings.hiResEnabled = winWizard.getHiRes()
self.settings.gameClientIdx = winSettings.getGameClientIdx()
self.settings.app = winWizard.getApp()
self.settings.wineProg = winWizard.getProg()
self.settings.wineDebug = winWizard.getDebug()
Expand All @@ -240,6 +269,7 @@ def actionWizardSelected(self):

def actionSwitchSelected(self):
dlgChooseAccount = QtGui.QDialog(self.winMain)
dlgChooseAccount.setPalette(self.winMain.palette())

uifile = None

Expand Down Expand Up @@ -360,13 +390,28 @@ def AuthAccount(self):
self.AddLog(self.account.messError)

def LaunchGame(self):
game = StartGame(self.winMain, self.worldQueueConfig.gameClientFilename,
gameClientIdx = int(self.settings.gameClientIdx)

if gameClientIdx == 0:
gameClientFilename = self.worldQueueConfig.gameClientFilename32
elif gameClientIdx == 1:
gameClientFilename = self.worldQueueConfig.gameClientFilenameLegacy
elif gameClientIdx == 2:
gameClientFilename = "x64/" + self.worldQueueConfig.gameClientFilename64

game = StartGame(self.winMain, gameClientFilename,
self.worldQueueConfig.gameClientArgTemplate, self.accNumber, self.urlLoginServer,
self.account.ticket, self.urlChatServer,
self.langConfig.langList[self.uiMain.cboLanguage.currentIndex()].code,
self.settings.gameDir, self.settings.wineProg, self.settings.wineDebug,
self.settings.winePrefix, self.settings.hiResEnabled, self.settings.app,
self.osType, self.valHomeDir, self.gameType.icoFile, self.rootDir)
self.osType, self.valHomeDir, self.gameType.icoFile, self.rootDir,
self.worldQueueConfig.crashreceiver, self.worldQueueConfig.DefaultUploadThrottleMbps,
self.worldQueueConfig.bugurl, self.worldQueueConfig.authserverurl,
self.worldQueueConfig.supporturl, self.worldQueueConfig.supportserviceurl,
self.worldQueueConfig.glsticketlifetime,
self.uiMain.cboRealm.currentText(),
self.uiMain.txtAccount.text())

self.winMain.hide()
game.Run()
Expand Down Expand Up @@ -618,7 +663,7 @@ def AccessGLSDataCentre(self, urlGLS, gameName):
QtCore.QObject.emit(self.winMain, QtCore.SIGNAL("AddLog(QString)"), "[E04] Error accessing GLS data centre.")

def GetWorldQueueConfig(self, urlWorldQueueServer):
self.worldQueueConfig = WorldQueueConfig(urlWorldQueueServer, self.settings.usingDND, self.baseDir, self.osType)
self.worldQueueConfig = WorldQueueConfig(urlWorldQueueServer, self.settings.usingDND, self.baseDir, self.osType, self.settings.gameDir)

if self.worldQueueConfig.loadSuccess:
QtCore.QObject.emit(self.winMain, QtCore.SIGNAL("AddLog(QString)"), "World queue configuration read")
Expand All @@ -636,11 +681,15 @@ def GetNews(self):
webservice, post = WebConnection(self.worldQueueConfig.newsStyleSheetURL)

webservice.putrequest("GET", post)
webservice.putheader("Accept-Encoding", "gzip")
webservice.endheaders()

webresp = webservice.getresponse()

tempxml = webresp.read()
if webresp.getheader('Content-Encoding', '') == 'gzip':
tempxml = zlib.decompress(webresp.read(), 16+zlib.MAX_WBITS)
else:
tempxml = webresp.read()

doc = xml.dom.minidom.parseString(tempxml)

Expand All @@ -659,6 +708,9 @@ def GetNews(self):
if link.nodeType == link.ELEMENT_NODE:
href = link.attributes["href"]

# Ignore broken href (as of 3/30/16) in the style sheet and use Launcher.NewsFeedCSSUrl defined in launcher.config
href.value = self.worldQueueConfig.newsFeedCSSURL

HTMLTEMPLATE = '<html><head><link rel="stylesheet" type="text/css" href="'
HTMLTEMPLATE += href.value
HTMLTEMPLATE += '"/><base target="_blank"/></head><body><div class="launcherNewsItemsContainer" style="width:auto">'
Expand All @@ -669,18 +721,27 @@ def GetNews(self):
webservice, post = WebConnection(urlNewsFeed)

webservice.putrequest("GET", post)
webservice.putheader("Accept-Encoding", "gzip")
webservice.endheaders()

webresp = webservice.getresponse()

tempxml = webresp.read()
if webresp.getheader('Content-Encoding', '') == 'gzip':
tempxml = zlib.decompress(webresp.read(), 16+zlib.MAX_WBITS)
else:
tempxml = webresp.read()

if len(tempxml) == 0:
webservice, post = WebConnection(webresp.getheader("location"))
webservice.putrequest("GET", post)
webservice.putheader("Accept-Encoding", "gzip")
webservice.endheaders()
webresp = webservice.getresponse()
tempxml = webresp.read()

if webresp.getheader('Content-Encoding', '') == 'gzip':
tempxml = zlib.decompress(webresp.read(), 16+zlib.MAX_WBITS)
else:
tempxml = webresp.read()

result = HTMLTEMPLATE

Expand Down
1 change: 1 addition & 0 deletions PyLotROLauncher/PatchWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def __init__(self, parent, urlPatchServer, prodCode, language, runDir, patchClie
self.winMain = parent
self.homeDir = homeDir
self.winLog = QtGui.QDialog(parent)
self.winLog.setPalette(parent.palette())
self.osType = osType

uifile = None
Expand Down
Loading