Add a skip ssl validation button.

This commit is contained in:
UnknownShadow200 2016-01-01 08:46:19 +11:00
parent 28b076a798
commit cf6d029805
5 changed files with 54 additions and 9 deletions

View File

@ -46,7 +46,7 @@ namespace Launcher2 {
125, 50, (x, y) => game.SetScreen( new MainScreen( game ) ) );
MakeLabelAt( "", titleFont, Anchor.Centre, Anchor.Centre, 0, 100 );
MakeLabelAt( "Use classicube.net for skins", inputFont, Anchor.Centre, Anchor.Centre, 30, 130 );
MakeBooleanAt( Anchor.Centre, Anchor.Centre, booleanFont,
MakeBooleanAt( Anchor.Centre, Anchor.Centre, booleanFont, true,
30, 30, -110, 130, UseClassicubeSkinsClick );
}

View File

@ -165,8 +165,8 @@ namespace Launcher2 {
protected void MakeLabelAt( string text, Font font, Anchor horAnchor, Anchor verAnchor, int x, int y ) {
if( widgets[widgetIndex] != null ) {
LauncherLabelWidget input = (LauncherLabelWidget)widgets[widgetIndex];
input.DrawAt( drawer, text, font, horAnchor, verAnchor, x, y );
LauncherLabelWidget label = (LauncherLabelWidget)widgets[widgetIndex];
label.DrawAt( drawer, text, font, horAnchor, verAnchor, x, y );
} else {
LauncherLabelWidget widget = new LauncherLabelWidget( game, text );
widget.DrawAt( drawer, text, font, horAnchor, verAnchor, x, y );
@ -175,13 +175,14 @@ namespace Launcher2 {
widgetIndex++;
}
protected void MakeBooleanAt( Anchor horAnchor, Anchor verAnchor, Font font,
protected void MakeBooleanAt( Anchor horAnchor, Anchor verAnchor, Font font, bool initValue,
int width, int height, int x, int y, Action<int, int> onClick ) {
if( widgets[widgetIndex] != null ) {
LauncherBooleanWidget input = (LauncherBooleanWidget)widgets[widgetIndex];
input.DrawAt( drawer, horAnchor, verAnchor, x, y );
LauncherBooleanWidget widget = (LauncherBooleanWidget)widgets[widgetIndex];
widget.DrawAt( drawer, horAnchor, verAnchor, x, y );
} else {
LauncherBooleanWidget widget = new LauncherBooleanWidget( game, font, width, height );
widget.Value = initValue;
widget.DrawAt( drawer, horAnchor, verAnchor, x, y );
widget.OnClick = onClick;
widgets[widgetIndex] = widget;

View File

@ -9,6 +9,7 @@ namespace Launcher2 {
public sealed partial class MainScreen : LauncherInputScreen {
const int skipSSLIndex = 9;
public override void Init() {
base.Init();
Resize();
@ -83,6 +84,13 @@ namespace Launcher2 {
if( signingIn ) return;
UpdateSignInInfo( Get( 0 ), Get( 1 ) );
LauncherBooleanWidget booleanWidget = widgets[skipSSLIndex] as LauncherBooleanWidget;
if( booleanWidget != null && booleanWidget.Value ) {
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
} else {
ServicePointManager.ServerCertificateValidationCallback = null;
}
game.Session.LoginAsync( Get( 0 ), Get( 1 ) );
game.MakeBackground();
Resize();
@ -108,6 +116,15 @@ namespace Launcher2 {
Environment.NewLine + "Unable to resolve classicube.net" +
Environment.NewLine + "you may not be connected to the internet.";
SetStatus( text );
} else if( ex.Status == WebExceptionStatus.TrustFailure ) {
string text = "&eFailed to validate SSL certificate";
SetStatus( text );
using( drawer ) {
drawer.SetBitmap( game.Framebuffer );
widgetIndex = 9;
MakeSSLSkipValidationBoolean();
MakeSSLSkipValidationLabel();
}
} else {
string text = "&eFailed to " + action + ":" +
Environment.NewLine + ex.Status;
@ -115,6 +132,29 @@ namespace Launcher2 {
}
}
void MakeSSLSkipValidationBoolean() {
MakeBooleanAt( Anchor.Centre, Anchor.Centre, inputFont, true, 30, 30, 160, -40, SSLSkipValidationClick );
}
void MakeSSLSkipValidationLabel() {
MakeLabelAt( "Skip SSL check", inputFont, Anchor.Centre, Anchor.Centre, 250, -40 );
}
void SSLSkipValidationClick( int mouseX, int mouseY ) {
using( drawer ) {
drawer.SetBitmap( game.Framebuffer );
LauncherBooleanWidget widget = (LauncherBooleanWidget)widgets[skipSSLIndex];
SetBool( !widget.Value );
}
}
void SetBool( bool value ) {
LauncherBooleanWidget widget = (LauncherBooleanWidget)widgets[skipSSLIndex];
widget.Value = value;
widget.Redraw( game.Drawer );
Dirty = true;
}
void StoreFields() {
Dictionary<string, object> metadata;
if( !game.ScreenMetadata.TryGetValue( "screen-CC", out metadata ) ) {

View File

@ -10,7 +10,7 @@ namespace Launcher2 {
public MainScreen( LauncherWindow game ) : base( game, true ) {
buttonFont = new Font( "Arial", 16, FontStyle.Bold );
enterIndex = 2;
widgets = new LauncherWidget[11];
widgets = new LauncherWidget[13];
LoadResumeInfo();
}
@ -44,6 +44,10 @@ namespace Launcher2 {
MakeButtonAt( "Update check", 160, buttonHeight, buttonFont,
Anchor.BottomOrRight, Anchor.BottomOrRight, -10, -10,
(x, y) => game.SetScreen( new UpdatesScreen( game ) ) );
if( widgets[widgetIndex] != null ) {
MakeSSLSkipValidationBoolean();
MakeSSLSkipValidationLabel();
}
}
const int buttonWidth = 220, buttonHeight = 35, sideButtonWidth = 150;

View File

@ -28,7 +28,7 @@ namespace Launcher2 {
DrawTextArgs args = new DrawTextArgs( "X", font, false );
Size size = drawer.MeasureSize( ref args );
args.SkipPartsCheck = true;
drawer.DrawText( ref args, X + (Width - size.Width) / 2,
drawer.DrawText( ref args, X + (Width + 2 - size.Width) / 2, // account for border
Y + (Height - size.Height) / 2 );
}
drawer.DrawRectBounds( FastColour.White, 2, X, Y, Width, Height );