private void JoinGameButton_Click(object sender, EventArgs e) { try { if (ServerListView.Items.Count > 0 && ServerListView.Items[selectedServer] != null && serverList[selectedServer] != null) { VarStorage.GameServer curServer = serverList[selectedServer]; if (ServerListView.Items[selectedServer].Text == curServer.ServerName) { string oldIP = GlobalVars.IP; int oldPort = GlobalVars.JoinPort; GlobalVars.IP = curServer.ServerIP; GlobalVars.JoinPort = curServer.ServerPort; #if LAUNCHER GlobalFuncs.LaunchRBXClient(curServer.ServerClient, ScriptType.Client, false, false, null, null); #else GlobalFuncs.LaunchRBXClient(curServer.ServerClient, ScriptType.Client, false, false, null); #endif GlobalVars.IP = oldIP; GlobalVars.JoinPort = oldPort; } } else { MessageBox.Show("Select a server before joining it."); } } catch (Exception) { } }
async Task LoadServerInfoFromFile(string url) { //https://stackoverflow.com/questions/2471209/how-to-read-a-file-from-internet#2471245 //https://stackoverflow.com/questions/10826260/is-there-a-way-to-read-from-a-website-one-line-at-a-time //https://stackoverflow.com/questions/856885/httpwebrequest-to-url-with-dot-at-the-end MethodInfo getSyntax = typeof(UriParser).GetMethod("GetSyntax", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); FieldInfo flagsField = typeof(UriParser).GetField("m_Flags", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (getSyntax != null && flagsField != null) { foreach (string scheme in new[] { "http", "https" }) { UriParser parser = (UriParser)getSyntax.Invoke(null, new object[] { scheme }); if (parser != null) { int flagsValue = (int)flagsField.GetValue(parser); // Clear the CanonicalizeAsFilePath attribute if ((flagsValue & 0x1000000) != 0) { flagsField.SetValue(parser, flagsValue & ~0x1000000); } } } } WebClient client = new WebClient(); Uri uri = new Uri(url); using (Stream stream = await client.OpenReadTaskAsync(uri)) { using (StreamReader reader = new StreamReader(stream)) { string line; while ((line = await reader.ReadLineAsync()) != null) { string DecodedLine = SecurityFuncs.Base64DecodeOld(line); string[] serverInfo = DecodedLine.Split('|'); VarStorage.GameServer gameServer = new VarStorage.GameServer(serverInfo[0], serverInfo[1], serverInfo[2], serverInfo[3]); serverList.Add(gameServer); } } } }