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
109
110
111
112
113
114
115
116
117
118
119
120
121
|
using System;
using System.Collections;
using System.ComponentModel;
using System.Net;
using System.Net.Sockets;
using System.Xml;
using System.Threading;
using System.Text;
using System.IO;
using Microsoft.Win32;
using System.Diagnostics;
namespace Network.Helper
{
/// <summary>
/// Ermittelt die Proxy Einstellungen von Mozilla Firefox
/// </summary>
public class MozillaFirefoxProxySettings
{
/// <summary>
/// Adresse des eingestellten Proxyservers.
/// </summary>
public static string IP
{
get
{
try
{
string data = read_key("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData");
string[] files = System.IO.Directory.GetDirectories(data + "\\Mozilla\\Firefox\\Profiles");
foreach (string profile in files)
{
StreamReader reader = File.OpenText(profile + "\\prefs.js"); // open file
for (int i = 0; -1 != reader.Peek(); i++) // read file
{
string line = reader.ReadLine();
// search XXX in user_pref("network.proxy.http", "XXX");
if (line.StartsWith("user_pref(\"network.proxy.http\", \""))
{
line = line.Remove(0, "user_pref(\"network.proxy.http\", \"".Length);
line = line.Substring(0, line.Length - 3);
return line;
}
}
reader.Close();
}
throw new Exception("CouldNotFindSettings");
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString() + " StackTrace: " + ex.StackTrace);
throw ex;
}
}
}
/// <summary>
/// Port des eingestellten Proxyservers.
/// </summary>
public static int Port
{
get
{
try
{
string data = read_key("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData");
string[] files = System.IO.Directory.GetDirectories(data + "\\Mozilla\\Firefox\\Profiles");
foreach (string profile in files)
{
StreamReader reader = File.OpenText(profile + "\\prefs.js"); // open file
for (int i = 0; -1 != reader.Peek(); i++) // read file
{
string line = reader.ReadLine();
// search YYY in user_pref("network.proxy.http_port", YYY);
if (line.StartsWith("user_pref(\"network.proxy.http_port\", "))
{
line = line.Remove(0, "user_pref(\"network.proxy.http_port\", ".Length);
return int.Parse(line.Substring(0, line.Length - 2));
}
}
reader.Close();
}
throw new Exception("CouldNotFindSettings");
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString() + " StackTrace: " + ex.StackTrace);
throw ex;
}
}
}
/// <summary>
/// Zum Auslesen von Werten aus der Registrierung.
/// </summary>
/// <param name="subKey">Sub Key.</param>
/// <param name="keyName">Key Name.</param>
/// <returns>Schluesselwert als String oder wenn nicht gefunden "fault".</returns>
static private string read_key(string subKey, string keyName)
{
try
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(subKey, true);
string asdasd = ((string)key.GetValue(keyName, keyName));
return asdasd;
}
catch
{
return "fault";
}
}
}
}
|