-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetUrl.cs
108 lines (102 loc) · 4.3 KB
/
getUrl.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using ProtoBuf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
namespace libShareCodeToURL
{
public class GetUrl
{
public static void Main()
{
Console.WriteLine(Urlstring("52um8FaZvFAjutmhCoKH2JedJ"));
Thread.Sleep(10000);
}
public static int Urlstring(string sharecode)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve2;
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve3;
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve4;
Sharecodetransform.ShareCodeStruct s = Sharecodetransform.Decode(sharecode);
int back = Downloadserver.StartBoiler($"{s.MatchId} {s.OutcomeId} {s.TokenId}");
if (back != 0) return back;
Dictionary<string, string> demoDownloadList = Url();
String realurl = demoDownloadList.ElementAt(0).Value;
if (realurl == null) return 100;
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"URL.txt", false))
{
file.WriteLine(realurl);
}
return back;
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return LoadFromResource("protobuf-net.dll");
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve2(object sender, ResolveEventArgs args)
{
return LoadFromResource("boiler.exe");
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve3(object sender, ResolveEventArgs args)
{
return LoadFromResource("steam_api.dll");
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve4(object sender, ResolveEventArgs args)
{
return LoadFromResource("steam_appid.txt");
}
private static Assembly LoadFromResource(string resName)
{
Assembly ass = Assembly.GetExecutingAssembly();
using (Stream stream = ass.GetManifestResourceStream("libShareCodeToURL.Resources." + resName))
{
byte[] bt = new byte[stream.Length];
stream.Read(bt, 0, bt.Length);
Assembly asm = Assembly.Load(bt);
return asm;
}
}
public static Dictionary<string, string> Url()
{
FileStream file;
try
{
file = File.OpenRead("matches.dat");
}
catch
{
return null;
}
Dictionary<string, string> demoUrlList = new Dictionary<string, string>();
CMsgGCCStrike15_v2_MatchList matchList = Serializer.Deserialize<CMsgGCCStrike15_v2_MatchList>(file);
file.Close();
foreach (CDataGCCStrike15_v2_MatchInfo matchInfo in matchList.matches)
{
List<CMsgGCCStrike15_v2_MatchmakingServerRoundStats> roundStatsList = matchInfo.roundstatsall;
foreach (CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundStats in roundStatsList)
{
ProcessRoundStats(matchInfo, roundStats, demoUrlList);
}
}
return demoUrlList;
}
private static void ProcessRoundStats(CDataGCCStrike15_v2_MatchInfo matchInfo, CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundStats, Dictionary<string, string> demoUrlList)
{
string demoName = GetDemoName(matchInfo, roundStats);
if (roundStats.reservationid != 0 && roundStats.map != null)
{
demoUrlList.Add(demoName, roundStats.map);
}
}
private static string GetDemoName(CDataGCCStrike15_v2_MatchInfo matchInfo,
CMsgGCCStrike15_v2_MatchmakingServerRoundStats roundStats)
{
return "match730_" + string.Format("{0,21:D21}", roundStats.reservationid) + "_"
+ string.Format("{0,10:D10}", matchInfo.watchablematchinfo.tv_port) + "_"
+ matchInfo.watchablematchinfo.server_ip;
}
}
}